mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-06 17:16:12 +00:00
1791 lines
73 KiB
C++
1791 lines
73 KiB
C++
// -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
|
//
|
|
// The contents of this file are subject to the Netscape Public
|
|
// License Version 1.1 (the "License"); you may not use this file
|
|
// except in compliance with the License. You may obtain a copy of
|
|
// the License at http://www.mozilla.org/NPL/
|
|
//
|
|
// Software distributed under the License is distributed on an "AS
|
|
// IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr
|
|
// implied. See the License for the specific language governing
|
|
// rights and limitations under the License.
|
|
//
|
|
// The Original Code is the JavaScript 2 Prototype.
|
|
//
|
|
// The Initial Developer of the Original Code is Netscape
|
|
// Communications Corporation. Portions created by Netscape are
|
|
// Copyright (C) 1998 Netscape Communications Corporation. All
|
|
// Rights Reserved.
|
|
|
|
#include <cstdlib>
|
|
#include <cstring>
|
|
#include <iomanip>
|
|
#include <algorithm>
|
|
#include "utilities.h"
|
|
|
|
#ifdef WIN32
|
|
#include <windows.h>
|
|
#endif
|
|
|
|
#ifdef XP_MAC
|
|
#include <cstdarg>
|
|
#include <Types.h>
|
|
#endif
|
|
|
|
#ifdef XP_UNIX
|
|
#include <cstdio>
|
|
#endif
|
|
|
|
namespace JS = JavaScript;
|
|
|
|
|
|
//
|
|
// Assertions
|
|
//
|
|
|
|
|
|
#ifdef DEBUG
|
|
#ifdef XP_MAC
|
|
// PStrFromCStr converts the source C string to a destination
|
|
// pascal string as it copies. The dest string will
|
|
// be truncated to fit into an Str255 if necessary.
|
|
// If the C String pointer is NULL, the pascal string's length is
|
|
// set to zero.
|
|
static void PStrFromCStr(const char* src, Str255 &dst)
|
|
{
|
|
int length = 0;
|
|
|
|
if (src)
|
|
{
|
|
char *p = reinterpret_cast<char *>(&dst[1]);
|
|
int spaceLeft = 255;
|
|
char ch;
|
|
while ((ch = *src++) != 0) {
|
|
*p++ = ch;
|
|
if (--spaceLeft == 0)
|
|
break;
|
|
}
|
|
length = 255 - spaceLeft;
|
|
}
|
|
dst[0] = (uchar)length;
|
|
}
|
|
|
|
static void jsdebugstr(const char *debuggerMsg)
|
|
{
|
|
Str255 pStr;
|
|
|
|
PStrFromCStr(debuggerMsg, pStr);
|
|
DebugStr(pStr);
|
|
}
|
|
|
|
static void dprintf(const char *format, ...)
|
|
{
|
|
std::va_list ap;
|
|
char buffer[4096];
|
|
|
|
va_start(ap, format);
|
|
std::vsprintf(buffer, format, ap);
|
|
va_end(ap);
|
|
|
|
jsdebugstr(buffer);
|
|
}
|
|
#endif /* XP_MAC */
|
|
|
|
|
|
void JS::Assert(const char *s, const char *file, int line)
|
|
{
|
|
#if defined(XP_UNIX) || defined(XP_OS2)
|
|
std::fprintf(std::stderr, "Assertion failure: %s, at %s:%d\n", s, file, line);
|
|
#endif
|
|
#ifdef XP_MAC
|
|
dprintf("Assertion failure: %s, at %s:%d\n", s, file, line);
|
|
#endif
|
|
#ifdef WIN32
|
|
DebugBreak();
|
|
#endif
|
|
#ifndef XP_MAC
|
|
abort();
|
|
#endif
|
|
}
|
|
#endif /* DEBUG */
|
|
|
|
|
|
|
|
//
|
|
// Bit manipulation
|
|
//
|
|
|
|
|
|
// Return lg2 of the least power of 2 greater than or equal to n.
|
|
// Return 0 if n is 0 or 1.
|
|
uint JS::ceilingLog2(uint32 n)
|
|
{
|
|
uint log2 = 0;
|
|
|
|
if (n & (n-1))
|
|
log2++;
|
|
if (n >> 16)
|
|
log2 += 16, n >>= 16;
|
|
if (n >> 8)
|
|
log2 += 8, n >>= 8;
|
|
if (n >> 4)
|
|
log2 += 4, n >>= 4;
|
|
if (n >> 2)
|
|
log2 += 2, n >>= 2;
|
|
if (n >> 1)
|
|
log2++;
|
|
return log2;
|
|
}
|
|
|
|
|
|
// Return lg2 of the greatest power of 2 less than or equal to n.
|
|
// This really just finds the highest set bit in the word.
|
|
// Return 0 if n is 0 or 1.
|
|
uint JS::floorLog2(uint32 n)
|
|
{
|
|
uint log2 = 0;
|
|
|
|
if (n >> 16)
|
|
log2 += 16, n >>= 16;
|
|
if (n >> 8)
|
|
log2 += 8, n >>= 8;
|
|
if (n >> 4)
|
|
log2 += 4, n >>= 4;
|
|
if (n >> 2)
|
|
log2 += 2, n >>= 2;
|
|
if (n >> 1)
|
|
log2++;
|
|
return log2;
|
|
}
|
|
|
|
|
|
|
|
//
|
|
// Unicode UTF-16 characters and strings
|
|
//
|
|
|
|
|
|
#ifdef _WIN32 // Microsoft VC6 bug: String constructor and append limited to char16 iterators
|
|
// Return a String containing the characters of the null-terminated C string cstr
|
|
// (without the trailing null).
|
|
JS::String JS::widenCString(const char *cstr)
|
|
{
|
|
size_t len = strlen(cstr);
|
|
String s(len, uni::null);
|
|
std::transform(cstr, cstr+len, s.begin(), widen);
|
|
return s;
|
|
}
|
|
|
|
|
|
// Widen and append length characters starting at chars to the end of str.
|
|
void JS::appendChars(String &str, const char *chars, size_t length)
|
|
{
|
|
String::size_type strLen = str.size();
|
|
str.append(length, uni::null);
|
|
std::transform(chars, chars+length, str.begin()+strLen, widen);
|
|
}
|
|
#endif
|
|
|
|
|
|
// Widen and append the null-terminated string cstr to the end of str.
|
|
// Return str.
|
|
JS::String &JS::operator+=(String &str, const char *cstr)
|
|
{
|
|
appendChars(str, cstr, strlen(cstr));
|
|
return str;
|
|
}
|
|
|
|
|
|
// Return the concatenation of str and the null-terminated string cstr.
|
|
JS::String JS::operator+(const String &str, const char *cstr)
|
|
{
|
|
return str + widenCString(cstr);
|
|
}
|
|
|
|
|
|
// Return the concatenation of the null-terminated string cstr and str.
|
|
JS::String JS::operator+(const char *cstr, const String &str)
|
|
{
|
|
String s = widenCString(cstr);
|
|
s += str;
|
|
return s;
|
|
}
|
|
|
|
|
|
// From java.lang.Character:
|
|
//
|
|
// The character properties are currently encoded into 32 bits in the
|
|
// following manner:
|
|
//
|
|
// 10 bits signed offset used for converting case
|
|
// 1 bit if 1, adding the signed offset converts the character to
|
|
// lowercase
|
|
// 1 bit if 1, subtracting the signed offset converts the character to
|
|
// uppercase
|
|
// 1 bit if 1, character has a titlecase equivalent (possibly itself)
|
|
// 3 bits 0 May not be part of an identifier
|
|
// 1 Format control
|
|
// 2 May start or continue a JS identifier (includes $ and _)
|
|
// 3 May continue a JS identifier
|
|
// 4 Behaves like a white space character (but not line break)
|
|
// 5 Behaves like a line break character
|
|
// 2 bits 0 this character has no numeric property
|
|
// 1 adding the digit offset to the character code and then
|
|
// masking with 0x1F will produce the desired numeric value
|
|
// 2 this character has a "strange" numeric value
|
|
// 3 a JS supradecimal digit: adding the digit offset to the
|
|
// character code, then masking with 0x1F, then adding 10
|
|
// will produce the desired numeric value
|
|
// 5 bits digit offset
|
|
// 4 bits reserved for future use
|
|
// 5 bits character type
|
|
|
|
|
|
// The X table has 1024 entries for a total of 1024 bytes.
|
|
const uint8 JS::CharInfo::x[] = {
|
|
0, 1, 2, 3, 4, 5, 6, 7, // 0x0000
|
|
8, 9, 10, 11, 12, 13, 14, 15, // 0x0200
|
|
16, 17, 18, 19, 20, 21, 22, 23, // 0x0400
|
|
24, 25, 26, 27, 28, 28, 28, 28, // 0x0600
|
|
28, 28, 28, 28, 29, 30, 31, 32, // 0x0800
|
|
33, 34, 35, 36, 37, 38, 39, 40, // 0x0A00
|
|
41, 42, 43, 44, 45, 46, 28, 28, // 0x0C00
|
|
47, 48, 49, 50, 51, 52, 53, 28, // 0x0E00
|
|
28, 28, 54, 55, 56, 57, 58, 59, // 0x1000
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0x1200
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0x1400
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0x1600
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0x1800
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0x1A00
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0x1C00
|
|
60, 60, 61, 62, 63, 64, 65, 66, // 0x1E00
|
|
67, 68, 69, 70, 71, 72, 73, 74, // 0x2000
|
|
75, 75, 75, 76, 77, 78, 28, 28, // 0x2200
|
|
79, 80, 81, 82, 83, 83, 84, 85, // 0x2400
|
|
86, 85, 28, 28, 87, 88, 89, 28, // 0x2600
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0x2800
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0x2A00
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0x2C00
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0x2E00
|
|
90, 91, 92, 93, 94, 56, 95, 28, // 0x3000
|
|
96, 97, 98, 99, 83, 100, 83, 101, // 0x3200
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0x3400
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0x3600
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0x3800
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0x3A00
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0x3C00
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0x3E00
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0x4000
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0x4200
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0x4400
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0x4600
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0x4800
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0x4A00
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0x4C00
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x4E00
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x5000
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x5200
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x5400
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x5600
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x5800
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x5A00
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x5C00
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x5E00
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x6000
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x6200
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x6400
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x6600
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x6800
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x6A00
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x6C00
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x6E00
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x7000
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x7200
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x7400
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x7600
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x7800
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x7A00
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x7C00
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x7E00
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x8000
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x8200
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x8400
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x8600
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x8800
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x8A00
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x8C00
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x8E00
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x9000
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x9200
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x9400
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x9600
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x9800
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x9A00
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0x9C00
|
|
56, 56, 56, 56, 56, 56, 102, 28, // 0x9E00
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0xA000
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0xA200
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0xA400
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0xA600
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0xA800
|
|
28, 28, 28, 28, 28, 28, 28, 28, // 0xAA00
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0xAC00
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0xAE00
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0xB000
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0xB200
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0xB400
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0xB600
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0xB800
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0xBA00
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0xBC00
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0xBE00
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0xC000
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0xC200
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0xC400
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0xC600
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0xC800
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0xCA00
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0xCC00
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0xCE00
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0xD000
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0xD200
|
|
56, 56, 56, 56, 56, 56, 56, 56, // 0xD400
|
|
56, 56, 56, 56, 56, 56, 103, 28, // 0xD600
|
|
104, 104, 104, 104, 104, 104, 104, 104, // 0xD800
|
|
104, 104, 104, 104, 104, 104, 104, 104, // 0xDA00
|
|
104, 104, 104, 104, 104, 104, 104, 104, // 0xDC00
|
|
104, 104, 104, 104, 104, 104, 104, 104, // 0xDE00
|
|
105, 105, 105, 105, 105, 105, 105, 105, // 0xE000
|
|
105, 105, 105, 105, 105, 105, 105, 105, // 0xE200
|
|
105, 105, 105, 105, 105, 105, 105, 105, // 0xE400
|
|
105, 105, 105, 105, 105, 105, 105, 105, // 0xE600
|
|
105, 105, 105, 105, 105, 105, 105, 105, // 0xE800
|
|
105, 105, 105, 105, 105, 105, 105, 105, // 0xEA00
|
|
105, 105, 105, 105, 105, 105, 105, 105, // 0xEC00
|
|
105, 105, 105, 105, 105, 105, 105, 105, // 0xEE00
|
|
105, 105, 105, 105, 105, 105, 105, 105, // 0xF000
|
|
105, 105, 105, 105, 105, 105, 105, 105, // 0xF200
|
|
105, 105, 105, 105, 105, 105, 105, 105, // 0xF400
|
|
105, 105, 105, 105, 105, 105, 105, 105, // 0xF600
|
|
105, 105, 105, 105, 56, 56, 56, 56, // 0xF800
|
|
106, 28, 28, 28, 107, 108, 109, 110, // 0xFA00
|
|
56, 56, 56, 56, 111, 112, 113, 114, // 0xFC00
|
|
115, 116, 56, 117, 118, 119, 120, 121 // 0xFE00
|
|
};
|
|
|
|
|
|
// The Y table has 7808 entries for a total of 7808 bytes.
|
|
const uint8 JS::CharInfo::y[] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0, // 0
|
|
0, 1, 14, 1, 1, 14, 0, 0, // 0
|
|
0, 0, 0, 0, 0, 0, 0, 0, // 0
|
|
0, 0, 0, 0, 0, 0, 0, 0, // 0
|
|
2, 3, 3, 3, 4, 3, 3, 3, // 0
|
|
5, 6, 3, 7, 3, 8, 3, 3, // 0
|
|
9, 9, 9, 9, 9, 9, 9, 9, // 0
|
|
9, 9, 3, 3, 7, 7, 7, 3, // 0
|
|
3, 10, 10, 10, 10, 10, 10, 10, // 1
|
|
10, 10, 10, 10, 10, 10, 10, 10, // 1
|
|
10, 10, 10, 10, 10, 10, 10, 10, // 1
|
|
10, 10, 10, 5, 3, 6, 11, 12, // 1
|
|
11, 13, 13, 13, 13, 13, 13, 13, // 1
|
|
13, 13, 13, 13, 13, 13, 13, 13, // 1
|
|
13, 13, 13, 13, 13, 13, 13, 13, // 1
|
|
13, 13, 13, 5, 7, 6, 7, 0, // 1
|
|
0, 0, 0, 0, 0, 0, 0, 0, // 2
|
|
0, 0, 0, 0, 0, 0, 0, 0, // 2
|
|
0, 0, 0, 0, 0, 0, 0, 0, // 2
|
|
0, 0, 0, 0, 0, 0, 0, 0, // 2
|
|
2, 3, 4, 4, 4, 4, 15, 15, // 2
|
|
11, 15, 16, 5, 7, 8, 15, 11, // 2
|
|
15, 7, 17, 17, 11, 16, 15, 3, // 2
|
|
11, 18, 16, 6, 19, 19, 19, 3, // 2
|
|
20, 20, 20, 20, 20, 20, 20, 20, // 3
|
|
20, 20, 20, 20, 20, 20, 20, 20, // 3
|
|
20, 20, 20, 20, 20, 20, 20, 7, // 3
|
|
20, 20, 20, 20, 20, 20, 20, 16, // 3
|
|
21, 21, 21, 21, 21, 21, 21, 21, // 3
|
|
21, 21, 21, 21, 21, 21, 21, 21, // 3
|
|
21, 21, 21, 21, 21, 21, 21, 7, // 3
|
|
21, 21, 21, 21, 21, 21, 21, 22, // 3
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 4
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 4
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 4
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 4
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 4
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 4
|
|
25, 26, 23, 24, 23, 24, 23, 24, // 4
|
|
16, 23, 24, 23, 24, 23, 24, 23, // 4
|
|
24, 23, 24, 23, 24, 23, 24, 23, // 5
|
|
24, 16, 23, 24, 23, 24, 23, 24, // 5
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 5
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 5
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 5
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 5
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 5
|
|
27, 23, 24, 23, 24, 23, 24, 28, // 5
|
|
16, 29, 23, 24, 23, 24, 30, 23, // 6
|
|
24, 31, 31, 23, 24, 16, 32, 32, // 6
|
|
33, 23, 24, 31, 34, 16, 35, 36, // 6
|
|
23, 24, 16, 16, 35, 37, 16, 38, // 6
|
|
23, 24, 23, 24, 23, 24, 38, 23, // 6
|
|
24, 39, 40, 16, 23, 24, 39, 23, // 6
|
|
24, 41, 41, 23, 24, 23, 24, 42, // 6
|
|
23, 24, 16, 40, 23, 24, 40, 40, // 6
|
|
40, 40, 40, 40, 43, 44, 45, 43, // 7
|
|
44, 45, 43, 44, 45, 23, 24, 23, // 7
|
|
24, 23, 24, 23, 24, 23, 24, 23, // 7
|
|
24, 23, 24, 23, 24, 16, 23, 24, // 7
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 7
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 7
|
|
16, 43, 44, 45, 23, 24, 46, 46, // 7
|
|
46, 46, 23, 24, 23, 24, 23, 24, // 7
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 8
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 8
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 8
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 8
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 8
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 8
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 8
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 8
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 9
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 9
|
|
16, 16, 16, 47, 48, 16, 49, 49, // 9
|
|
50, 50, 16, 51, 16, 16, 16, 16, // 9
|
|
49, 16, 16, 52, 16, 16, 16, 16, // 9
|
|
53, 54, 16, 16, 16, 16, 16, 54, // 9
|
|
16, 16, 55, 16, 16, 16, 16, 16, // 9
|
|
16, 16, 16, 16, 16, 16, 16, 16, // 9
|
|
16, 16, 16, 56, 16, 16, 16, 16, // 10
|
|
56, 16, 57, 57, 16, 16, 16, 16, // 10
|
|
16, 16, 58, 16, 16, 16, 16, 16, // 10
|
|
16, 16, 16, 16, 16, 16, 16, 16, // 10
|
|
16, 16, 16, 16, 16, 16, 16, 16, // 10
|
|
16, 46, 46, 46, 46, 46, 46, 46, // 10
|
|
59, 59, 59, 59, 59, 59, 59, 59, // 10
|
|
59, 11, 11, 59, 59, 59, 59, 59, // 10
|
|
59, 59, 11, 11, 11, 11, 11, 11, // 11
|
|
11, 11, 11, 11, 11, 11, 11, 11, // 11
|
|
59, 59, 11, 11, 11, 11, 11, 11, // 11
|
|
11, 11, 11, 11, 11, 11, 11, 46, // 11
|
|
59, 59, 59, 59, 59, 11, 11, 11, // 11
|
|
11, 11, 46, 46, 46, 46, 46, 46, // 11
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 11
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 11
|
|
60, 60, 60, 60, 60, 60, 60, 60, // 12
|
|
60, 60, 60, 60, 60, 60, 60, 60, // 12
|
|
60, 60, 60, 60, 60, 60, 60, 60, // 12
|
|
60, 60, 60, 60, 60, 60, 60, 60, // 12
|
|
60, 60, 60, 60, 60, 60, 60, 60, // 12
|
|
60, 60, 60, 60, 60, 60, 60, 60, // 12
|
|
60, 60, 60, 60, 60, 60, 60, 60, // 12
|
|
60, 60, 60, 60, 60, 60, 60, 60, // 12
|
|
60, 60, 60, 60, 60, 60, 46, 46, // 13
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 13
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 13
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 13
|
|
60, 60, 46, 46, 46, 46, 46, 46, // 13
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 13
|
|
46, 46, 46, 46, 3, 3, 46, 46, // 13
|
|
46, 46, 59, 46, 46, 46, 3, 46, // 13
|
|
46, 46, 46, 46, 11, 11, 61, 3, // 14
|
|
62, 62, 62, 46, 63, 46, 64, 64, // 14
|
|
16, 20, 20, 20, 20, 20, 20, 20, // 14
|
|
20, 20, 20, 20, 20, 20, 20, 20, // 14
|
|
20, 20, 46, 20, 20, 20, 20, 20, // 14
|
|
20, 20, 20, 20, 65, 66, 66, 66, // 14
|
|
16, 21, 21, 21, 21, 21, 21, 21, // 14
|
|
21, 21, 21, 21, 21, 21, 21, 21, // 14
|
|
21, 21, 16, 21, 21, 21, 21, 21, // 15
|
|
21, 21, 21, 21, 67, 68, 68, 46, // 15
|
|
69, 70, 38, 38, 38, 71, 72, 46, // 15
|
|
46, 46, 38, 46, 38, 46, 38, 46, // 15
|
|
38, 46, 23, 24, 23, 24, 23, 24, // 15
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 15
|
|
73, 74, 16, 40, 46, 46, 46, 46, // 15
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 15
|
|
46, 75, 75, 75, 75, 75, 75, 75, // 16
|
|
75, 75, 75, 75, 75, 46, 75, 75, // 16
|
|
20, 20, 20, 20, 20, 20, 20, 20, // 16
|
|
20, 20, 20, 20, 20, 20, 20, 20, // 16
|
|
20, 20, 20, 20, 20, 20, 20, 20, // 16
|
|
20, 20, 20, 20, 20, 20, 20, 20, // 16
|
|
21, 21, 21, 21, 21, 21, 21, 21, // 16
|
|
21, 21, 21, 21, 21, 21, 21, 21, // 16
|
|
21, 21, 21, 21, 21, 21, 21, 21, // 17
|
|
21, 21, 21, 21, 21, 21, 21, 21, // 17
|
|
46, 74, 74, 74, 74, 74, 74, 74, // 17
|
|
74, 74, 74, 74, 74, 46, 74, 74, // 17
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 17
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 17
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 17
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 17
|
|
23, 24, 15, 60, 60, 60, 60, 46, // 18
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 18
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 18
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 18
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 18
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 18
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 18
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 18
|
|
40, 23, 24, 23, 24, 46, 46, 23, // 19
|
|
24, 46, 46, 23, 24, 46, 46, 46, // 19
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 19
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 19
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 19
|
|
23, 24, 23, 24, 46, 46, 23, 24, // 19
|
|
23, 24, 23, 24, 23, 24, 46, 46, // 19
|
|
23, 24, 46, 46, 46, 46, 46, 46, // 19
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 20
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 20
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 20
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 20
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 20
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 20
|
|
46, 76, 76, 76, 76, 76, 76, 76, // 20
|
|
76, 76, 76, 76, 76, 76, 76, 76, // 20
|
|
76, 76, 76, 76, 76, 76, 76, 76, // 21
|
|
76, 76, 76, 76, 76, 76, 76, 76, // 21
|
|
76, 76, 76, 76, 76, 76, 76, 46, // 21
|
|
46, 59, 3, 3, 3, 3, 3, 3, // 21
|
|
46, 77, 77, 77, 77, 77, 77, 77, // 21
|
|
77, 77, 77, 77, 77, 77, 77, 77, // 21
|
|
77, 77, 77, 77, 77, 77, 77, 77, // 21
|
|
77, 77, 77, 77, 77, 77, 77, 77, // 21
|
|
77, 77, 77, 77, 77, 77, 77, 16, // 22
|
|
46, 3, 46, 46, 46, 46, 46, 46, // 22
|
|
46, 60, 60, 60, 60, 60, 60, 60, // 22
|
|
60, 60, 60, 60, 60, 60, 60, 60, // 22
|
|
60, 60, 46, 60, 60, 60, 60, 60, // 22
|
|
60, 60, 60, 60, 60, 60, 60, 60, // 22
|
|
60, 60, 60, 60, 60, 60, 60, 60, // 22
|
|
60, 60, 46, 60, 60, 60, 3, 60, // 22
|
|
3, 60, 60, 3, 60, 46, 46, 46, // 23
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 23
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 23
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 23
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 23
|
|
40, 40, 40, 46, 46, 46, 46, 46, // 23
|
|
40, 40, 40, 3, 3, 46, 46, 46, // 23
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 23
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 24
|
|
46, 46, 46, 46, 3, 46, 46, 46, // 24
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 24
|
|
46, 46, 46, 3, 46, 46, 46, 3, // 24
|
|
46, 40, 40, 40, 40, 40, 40, 40, // 24
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 24
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 24
|
|
40, 40, 40, 46, 46, 46, 46, 46, // 24
|
|
59, 40, 40, 40, 40, 40, 40, 40, // 25
|
|
40, 40, 40, 60, 60, 60, 60, 60, // 25
|
|
60, 60, 60, 46, 46, 46, 46, 46, // 25
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 25
|
|
78, 78, 78, 78, 78, 78, 78, 78, // 25
|
|
78, 78, 3, 3, 3, 3, 46, 46, // 25
|
|
60, 40, 40, 40, 40, 40, 40, 40, // 25
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 25
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 26
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 26
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 26
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 26
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 26
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 26
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 26
|
|
46, 46, 40, 40, 40, 40, 40, 46, // 26
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 27
|
|
40, 40, 40, 40, 40, 40, 40, 46, // 27
|
|
40, 40, 40, 40, 3, 40, 60, 60, // 27
|
|
60, 60, 60, 60, 60, 79, 79, 60, // 27
|
|
60, 60, 60, 60, 60, 59, 59, 60, // 27
|
|
60, 15, 60, 60, 60, 60, 46, 46, // 27
|
|
9, 9, 9, 9, 9, 9, 9, 9, // 27
|
|
9, 9, 46, 46, 46, 46, 46, 46, // 27
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 28
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 28
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 28
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 28
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 28
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 28
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 28
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 28
|
|
46, 60, 60, 80, 46, 40, 40, 40, // 29
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 29
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 29
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 29
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 29
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 29
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 29
|
|
40, 40, 46, 46, 60, 40, 80, 80, // 29
|
|
80, 60, 60, 60, 60, 60, 60, 60, // 30
|
|
60, 80, 80, 80, 80, 60, 46, 46, // 30
|
|
15, 60, 60, 60, 60, 46, 46, 46, // 30
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 30
|
|
40, 40, 60, 60, 3, 3, 81, 81, // 30
|
|
81, 81, 81, 81, 81, 81, 81, 81, // 30
|
|
3, 46, 46, 46, 46, 46, 46, 46, // 30
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 30
|
|
46, 60, 80, 80, 46, 40, 40, 40, // 31
|
|
40, 40, 40, 40, 40, 46, 46, 40, // 31
|
|
40, 46, 46, 40, 40, 40, 40, 40, // 31
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 31
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 31
|
|
40, 46, 40, 40, 40, 40, 40, 40, // 31
|
|
40, 46, 40, 46, 46, 46, 40, 40, // 31
|
|
40, 40, 46, 46, 60, 46, 80, 80, // 31
|
|
80, 60, 60, 60, 60, 46, 46, 80, // 32
|
|
80, 46, 46, 80, 80, 60, 46, 46, // 32
|
|
46, 46, 46, 46, 46, 46, 46, 80, // 32
|
|
46, 46, 46, 46, 40, 40, 46, 40, // 32
|
|
40, 40, 60, 60, 46, 46, 81, 81, // 32
|
|
81, 81, 81, 81, 81, 81, 81, 81, // 32
|
|
40, 40, 4, 4, 82, 82, 82, 82, // 32
|
|
19, 83, 15, 46, 46, 46, 46, 46, // 32
|
|
46, 46, 60, 46, 46, 40, 40, 40, // 33
|
|
40, 40, 40, 46, 46, 46, 46, 40, // 33
|
|
40, 46, 46, 40, 40, 40, 40, 40, // 33
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 33
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 33
|
|
40, 46, 40, 40, 40, 40, 40, 40, // 33
|
|
40, 46, 40, 40, 46, 40, 40, 46, // 33
|
|
40, 40, 46, 46, 60, 46, 80, 80, // 33
|
|
80, 60, 60, 46, 46, 46, 46, 60, // 34
|
|
60, 46, 46, 60, 60, 60, 46, 46, // 34
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 34
|
|
46, 40, 40, 40, 40, 46, 40, 46, // 34
|
|
46, 46, 46, 46, 46, 46, 81, 81, // 34
|
|
81, 81, 81, 81, 81, 81, 81, 81, // 34
|
|
60, 60, 40, 40, 40, 46, 46, 46, // 34
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 34
|
|
46, 60, 60, 80, 46, 40, 40, 40, // 35
|
|
40, 40, 40, 40, 46, 40, 46, 40, // 35
|
|
40, 40, 46, 40, 40, 40, 40, 40, // 35
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 35
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 35
|
|
40, 46, 40, 40, 40, 40, 40, 40, // 35
|
|
40, 46, 40, 40, 46, 40, 40, 40, // 35
|
|
40, 40, 46, 46, 60, 40, 80, 80, // 35
|
|
80, 60, 60, 60, 60, 60, 46, 60, // 36
|
|
60, 80, 46, 80, 80, 60, 46, 46, // 36
|
|
15, 46, 46, 46, 46, 46, 46, 46, // 36
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 36
|
|
40, 46, 46, 46, 46, 46, 81, 81, // 36
|
|
81, 81, 81, 81, 81, 81, 81, 81, // 36
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 36
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 36
|
|
46, 60, 80, 80, 46, 40, 40, 40, // 37
|
|
40, 40, 40, 40, 40, 46, 46, 40, // 37
|
|
40, 46, 46, 40, 40, 40, 40, 40, // 37
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 37
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 37
|
|
40, 46, 40, 40, 40, 40, 40, 40, // 37
|
|
40, 46, 40, 40, 46, 46, 40, 40, // 37
|
|
40, 40, 46, 46, 60, 40, 80, 60, // 37
|
|
80, 60, 60, 60, 46, 46, 46, 80, // 38
|
|
80, 46, 46, 80, 80, 60, 46, 46, // 38
|
|
46, 46, 46, 46, 46, 46, 60, 80, // 38
|
|
46, 46, 46, 46, 40, 40, 46, 40, // 38
|
|
40, 40, 46, 46, 46, 46, 81, 81, // 38
|
|
81, 81, 81, 81, 81, 81, 81, 81, // 38
|
|
15, 46, 46, 46, 46, 46, 46, 46, // 38
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 38
|
|
46, 46, 60, 80, 46, 40, 40, 40, // 39
|
|
40, 40, 40, 46, 46, 46, 40, 40, // 39
|
|
40, 46, 40, 40, 40, 40, 46, 46, // 39
|
|
46, 40, 40, 46, 40, 46, 40, 40, // 39
|
|
46, 46, 46, 40, 40, 46, 46, 46, // 39
|
|
40, 40, 40, 46, 46, 46, 40, 40, // 39
|
|
40, 40, 40, 40, 40, 40, 46, 40, // 39
|
|
40, 40, 46, 46, 46, 46, 80, 80, // 39
|
|
60, 80, 80, 46, 46, 46, 80, 80, // 40
|
|
80, 46, 80, 80, 80, 60, 46, 46, // 40
|
|
46, 46, 46, 46, 46, 46, 46, 80, // 40
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 40
|
|
46, 46, 46, 46, 46, 46, 46, 81, // 40
|
|
81, 81, 81, 81, 81, 81, 81, 81, // 40
|
|
84, 19, 19, 46, 46, 46, 46, 46, // 40
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 40
|
|
46, 80, 80, 80, 46, 40, 40, 40, // 41
|
|
40, 40, 40, 40, 40, 46, 40, 40, // 41
|
|
40, 46, 40, 40, 40, 40, 40, 40, // 41
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 41
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 41
|
|
40, 46, 40, 40, 40, 40, 40, 40, // 41
|
|
40, 40, 40, 40, 46, 40, 40, 40, // 41
|
|
40, 40, 46, 46, 46, 46, 60, 60, // 41
|
|
60, 80, 80, 80, 80, 46, 60, 60, // 42
|
|
60, 46, 60, 60, 60, 60, 46, 46, // 42
|
|
46, 46, 46, 46, 46, 60, 60, 46, // 42
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 42
|
|
40, 40, 46, 46, 46, 46, 81, 81, // 42
|
|
81, 81, 81, 81, 81, 81, 81, 81, // 42
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 42
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 42
|
|
46, 46, 80, 80, 46, 40, 40, 40, // 43
|
|
40, 40, 40, 40, 40, 46, 40, 40, // 43
|
|
40, 46, 40, 40, 40, 40, 40, 40, // 43
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 43
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 43
|
|
40, 46, 40, 40, 40, 40, 40, 40, // 43
|
|
40, 40, 40, 40, 46, 40, 40, 40, // 43
|
|
40, 40, 46, 46, 46, 46, 80, 60, // 43
|
|
80, 80, 80, 80, 80, 46, 60, 80, // 44
|
|
80, 46, 80, 80, 60, 60, 46, 46, // 44
|
|
46, 46, 46, 46, 46, 80, 80, 46, // 44
|
|
46, 46, 46, 46, 46, 46, 40, 46, // 44
|
|
40, 40, 46, 46, 46, 46, 81, 81, // 44
|
|
81, 81, 81, 81, 81, 81, 81, 81, // 44
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 44
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 44
|
|
46, 46, 80, 80, 46, 40, 40, 40, // 45
|
|
40, 40, 40, 40, 40, 46, 40, 40, // 45
|
|
40, 46, 40, 40, 40, 40, 40, 40, // 45
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 45
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 45
|
|
40, 46, 40, 40, 40, 40, 40, 40, // 45
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 45
|
|
40, 40, 46, 46, 46, 46, 80, 80, // 45
|
|
80, 60, 60, 60, 46, 46, 80, 80, // 46
|
|
80, 46, 80, 80, 80, 60, 46, 46, // 46
|
|
46, 46, 46, 46, 46, 46, 46, 80, // 46
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 46
|
|
40, 40, 46, 46, 46, 46, 81, 81, // 46
|
|
81, 81, 81, 81, 81, 81, 81, 81, // 46
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 46
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 46
|
|
46, 40, 40, 40, 40, 40, 40, 40, // 47
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 47
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 47
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 47
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 47
|
|
40, 40, 40, 40, 40, 40, 40, 3, // 47
|
|
40, 60, 40, 40, 60, 60, 60, 60, // 47
|
|
60, 60, 60, 46, 46, 46, 46, 4, // 47
|
|
40, 40, 40, 40, 40, 40, 59, 60, // 48
|
|
60, 60, 60, 60, 60, 60, 60, 15, // 48
|
|
9, 9, 9, 9, 9, 9, 9, 9, // 48
|
|
9, 9, 3, 3, 46, 46, 46, 46, // 48
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 48
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 48
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 48
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 48
|
|
46, 40, 40, 46, 40, 46, 46, 40, // 49
|
|
40, 46, 40, 46, 46, 40, 46, 46, // 49
|
|
46, 46, 46, 46, 40, 40, 40, 40, // 49
|
|
46, 40, 40, 40, 40, 40, 40, 40, // 49
|
|
46, 40, 40, 40, 46, 40, 46, 40, // 49
|
|
46, 46, 40, 40, 46, 40, 40, 3, // 49
|
|
40, 60, 40, 40, 60, 60, 60, 60, // 49
|
|
60, 60, 46, 60, 60, 40, 46, 46, // 49
|
|
40, 40, 40, 40, 40, 46, 59, 46, // 50
|
|
60, 60, 60, 60, 60, 60, 46, 46, // 50
|
|
9, 9, 9, 9, 9, 9, 9, 9, // 50
|
|
9, 9, 46, 46, 40, 40, 46, 46, // 50
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 50
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 50
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 50
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 50
|
|
15, 15, 15, 15, 3, 3, 3, 3, // 51
|
|
3, 3, 3, 3, 3, 3, 3, 3, // 51
|
|
3, 3, 3, 15, 15, 15, 15, 15, // 51
|
|
60, 60, 15, 15, 15, 15, 15, 15, // 51
|
|
78, 78, 78, 78, 78, 78, 78, 78, // 51
|
|
78, 78, 85, 85, 85, 85, 85, 85, // 51
|
|
85, 85, 85, 85, 15, 60, 15, 60, // 51
|
|
15, 60, 5, 6, 5, 6, 80, 80, // 51
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 52
|
|
46, 40, 40, 40, 40, 40, 40, 40, // 52
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 52
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 52
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 52
|
|
40, 40, 46, 46, 46, 46, 46, 46, // 52
|
|
46, 60, 60, 60, 60, 60, 60, 60, // 52
|
|
60, 60, 60, 60, 60, 60, 60, 80, // 52
|
|
60, 60, 60, 60, 60, 3, 60, 60, // 53
|
|
60, 60, 60, 60, 46, 46, 46, 46, // 53
|
|
60, 60, 60, 60, 60, 60, 46, 60, // 53
|
|
46, 60, 60, 60, 60, 60, 60, 60, // 53
|
|
60, 60, 60, 60, 60, 60, 60, 60, // 53
|
|
60, 60, 60, 60, 60, 60, 46, 46, // 53
|
|
46, 60, 60, 60, 60, 60, 60, 60, // 53
|
|
46, 60, 46, 46, 46, 46, 46, 46, // 53
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 54
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 54
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 54
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 54
|
|
76, 76, 76, 76, 76, 76, 76, 76, // 54
|
|
76, 76, 76, 76, 76, 76, 76, 76, // 54
|
|
76, 76, 76, 76, 76, 76, 76, 76, // 54
|
|
76, 76, 76, 76, 76, 76, 76, 76, // 54
|
|
76, 76, 76, 76, 76, 76, 46, 46, // 55
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 55
|
|
16, 16, 16, 16, 16, 16, 16, 16, // 55
|
|
16, 16, 16, 16, 16, 16, 16, 16, // 55
|
|
16, 16, 16, 16, 16, 16, 16, 16, // 55
|
|
16, 16, 16, 16, 16, 16, 16, 16, // 55
|
|
16, 16, 16, 16, 16, 16, 16, 46, // 55
|
|
46, 46, 46, 3, 46, 46, 46, 46, // 55
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 56
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 56
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 56
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 56
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 56
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 56
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 56
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 56
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 57
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 57
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 57
|
|
40, 40, 46, 46, 46, 46, 46, 40, // 57
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 57
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 57
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 57
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 57
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 58
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 58
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 58
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 58
|
|
40, 40, 40, 46, 46, 46, 46, 46, // 58
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 58
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 58
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 58
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 59
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 59
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 59
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 59
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 59
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 59
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 59
|
|
40, 40, 46, 46, 46, 46, 46, 46, // 59
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 60
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 60
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 60
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 60
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 60
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 60
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 60
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 60
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 61
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 61
|
|
23, 24, 23, 24, 23, 24, 16, 16, // 61
|
|
16, 16, 16, 16, 46, 46, 46, 46, // 61
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 61
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 61
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 61
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 61
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 62
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 62
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 62
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 62
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 62
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 62
|
|
23, 24, 23, 24, 23, 24, 23, 24, // 62
|
|
23, 24, 46, 46, 46, 46, 46, 46, // 62
|
|
86, 86, 86, 86, 86, 86, 86, 86, // 63
|
|
87, 87, 87, 87, 87, 87, 87, 87, // 63
|
|
86, 86, 86, 86, 86, 86, 46, 46, // 63
|
|
87, 87, 87, 87, 87, 87, 46, 46, // 63
|
|
86, 86, 86, 86, 86, 86, 86, 86, // 63
|
|
87, 87, 87, 87, 87, 87, 87, 87, // 63
|
|
86, 86, 86, 86, 86, 86, 86, 86, // 63
|
|
87, 87, 87, 87, 87, 87, 87, 87, // 63
|
|
86, 86, 86, 86, 86, 86, 46, 46, // 64
|
|
87, 87, 87, 87, 87, 87, 46, 46, // 64
|
|
16, 86, 16, 86, 16, 86, 16, 86, // 64
|
|
46, 87, 46, 87, 46, 87, 46, 87, // 64
|
|
86, 86, 86, 86, 86, 86, 86, 86, // 64
|
|
87, 87, 87, 87, 87, 87, 87, 87, // 64
|
|
88, 88, 89, 89, 89, 89, 90, 90, // 64
|
|
91, 91, 92, 92, 93, 93, 46, 46, // 64
|
|
86, 86, 86, 86, 86, 86, 86, 86, // 65
|
|
87, 87, 87, 87, 87, 87, 87, 87, // 65
|
|
86, 86, 86, 86, 86, 86, 86, 86, // 65
|
|
87, 87, 87, 87, 87, 87, 87, 87, // 65
|
|
86, 86, 86, 86, 86, 86, 86, 86, // 65
|
|
87, 87, 87, 87, 87, 87, 87, 87, // 65
|
|
86, 86, 16, 94, 16, 46, 16, 16, // 65
|
|
87, 87, 95, 95, 96, 11, 38, 11, // 65
|
|
11, 11, 16, 94, 16, 46, 16, 16, // 66
|
|
97, 97, 97, 97, 96, 11, 11, 11, // 66
|
|
86, 86, 16, 16, 46, 46, 16, 16, // 66
|
|
87, 87, 98, 98, 46, 11, 11, 11, // 66
|
|
86, 86, 16, 16, 16, 99, 16, 16, // 66
|
|
87, 87, 100, 100, 101, 11, 11, 11, // 66
|
|
46, 46, 16, 94, 16, 46, 16, 16, // 66
|
|
102, 102, 103, 103, 96, 11, 11, 46, // 66
|
|
2, 2, 2, 2, 2, 2, 2, 2, // 67
|
|
2, 2, 2, 2, 104, 104, 104, 104, // 67
|
|
8, 8, 8, 8, 8, 8, 3, 3, // 67
|
|
5, 6, 5, 5, 5, 6, 5, 5, // 67
|
|
3, 3, 3, 3, 3, 3, 3, 3, // 67
|
|
105, 106, 104, 104, 104, 104, 104, 46, // 67
|
|
3, 3, 3, 3, 3, 3, 3, 3, // 67
|
|
3, 5, 6, 3, 3, 3, 3, 12, // 67
|
|
12, 3, 3, 3, 7, 5, 6, 46, // 68
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 68
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 68
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 68
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 68
|
|
46, 46, 104, 104, 104, 104, 104, 104, // 68
|
|
17, 46, 46, 46, 17, 17, 17, 17, // 68
|
|
17, 17, 7, 7, 7, 5, 6, 16, // 68
|
|
107, 107, 107, 107, 107, 107, 107, 107, // 69
|
|
107, 107, 7, 7, 7, 5, 6, 46, // 69
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 69
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 69
|
|
4, 4, 4, 4, 4, 4, 4, 4, // 69
|
|
4, 4, 4, 4, 46, 46, 46, 46, // 69
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 69
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 69
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 70
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 70
|
|
60, 60, 60, 60, 60, 60, 60, 60, // 70
|
|
60, 60, 60, 60, 60, 79, 79, 79, // 70
|
|
79, 60, 46, 46, 46, 46, 46, 46, // 70
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 70
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 70
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 70
|
|
15, 15, 38, 15, 15, 15, 15, 38, // 71
|
|
15, 15, 16, 38, 38, 38, 16, 16, // 71
|
|
38, 38, 38, 16, 15, 38, 15, 15, // 71
|
|
38, 38, 38, 38, 38, 38, 15, 15, // 71
|
|
15, 15, 15, 15, 38, 15, 38, 15, // 71
|
|
38, 15, 38, 38, 38, 38, 16, 16, // 71
|
|
38, 38, 15, 38, 16, 40, 40, 40, // 71
|
|
40, 46, 46, 46, 46, 46, 46, 46, // 71
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 72
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 72
|
|
46, 46, 46, 19, 19, 19, 19, 19, // 72
|
|
19, 19, 19, 19, 19, 19, 19, 108, // 72
|
|
109, 109, 109, 109, 109, 109, 109, 109, // 72
|
|
109, 109, 109, 109, 110, 110, 110, 110, // 72
|
|
111, 111, 111, 111, 111, 111, 111, 111, // 72
|
|
111, 111, 111, 111, 112, 112, 112, 112, // 72
|
|
113, 113, 113, 46, 46, 46, 46, 46, // 73
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 73
|
|
7, 7, 7, 7, 7, 15, 15, 15, // 73
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 73
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 73
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 73
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 73
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 73
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 74
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 74
|
|
15, 15, 7, 15, 7, 15, 15, 15, // 74
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 74
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 74
|
|
15, 15, 15, 46, 46, 46, 46, 46, // 74
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 74
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 74
|
|
7, 7, 7, 7, 7, 7, 7, 7, // 75
|
|
7, 7, 7, 7, 7, 7, 7, 7, // 75
|
|
7, 7, 7, 7, 7, 7, 7, 7, // 75
|
|
7, 7, 7, 7, 7, 7, 7, 7, // 75
|
|
7, 7, 7, 7, 7, 7, 7, 7, // 75
|
|
7, 7, 7, 7, 7, 7, 7, 7, // 75
|
|
7, 7, 7, 7, 7, 7, 7, 7, // 75
|
|
7, 7, 7, 7, 7, 7, 7, 7, // 75
|
|
7, 7, 7, 7, 7, 7, 7, 7, // 76
|
|
7, 7, 7, 7, 7, 7, 7, 7, // 76
|
|
7, 7, 7, 7, 7, 7, 7, 7, // 76
|
|
7, 7, 7, 7, 7, 7, 7, 7, // 76
|
|
7, 7, 7, 7, 7, 7, 7, 7, // 76
|
|
7, 7, 7, 7, 7, 7, 7, 7, // 76
|
|
7, 7, 46, 46, 46, 46, 46, 46, // 76
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 76
|
|
15, 46, 15, 15, 15, 15, 15, 15, // 77
|
|
7, 7, 7, 7, 15, 15, 15, 15, // 77
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 77
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 77
|
|
7, 7, 15, 15, 15, 15, 15, 15, // 77
|
|
15, 5, 6, 15, 15, 15, 15, 15, // 77
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 77
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 77
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 78
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 78
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 78
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 78
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 78
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 78
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 78
|
|
15, 15, 15, 46, 46, 46, 46, 46, // 78
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 79
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 79
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 79
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 79
|
|
15, 15, 15, 15, 15, 46, 46, 46, // 79
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 79
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 79
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 79
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 80
|
|
15, 15, 15, 46, 46, 46, 46, 46, // 80
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 80
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 80
|
|
114, 114, 114, 114, 114, 114, 114, 114, // 80
|
|
114, 114, 114, 114, 114, 114, 114, 114, // 80
|
|
114, 114, 114, 114, 82, 82, 82, 82, // 80
|
|
82, 82, 82, 82, 82, 82, 82, 82, // 80
|
|
82, 82, 82, 82, 82, 82, 82, 82, // 81
|
|
115, 115, 115, 115, 115, 115, 115, 115, // 81
|
|
115, 115, 115, 115, 115, 115, 115, 115, // 81
|
|
115, 115, 115, 115, 15, 15, 15, 15, // 81
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 81
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 81
|
|
15, 15, 15, 15, 15, 15, 116, 116, // 81
|
|
116, 116, 116, 116, 116, 116, 116, 116, // 81
|
|
116, 116, 116, 116, 116, 116, 116, 116, // 82
|
|
116, 116, 116, 116, 116, 116, 116, 116, // 82
|
|
117, 117, 117, 117, 117, 117, 117, 117, // 82
|
|
117, 117, 117, 117, 117, 117, 117, 117, // 82
|
|
117, 117, 117, 117, 117, 117, 117, 117, // 82
|
|
117, 117, 118, 46, 46, 46, 46, 46, // 82
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 82
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 82
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 83
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 83
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 83
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 83
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 83
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 83
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 83
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 83
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 84
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 84
|
|
15, 15, 15, 15, 15, 15, 46, 46, // 84
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 84
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 84
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 84
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 84
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 84
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 85
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 85
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 85
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 85
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 85
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 85
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 85
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 85
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 86
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 86
|
|
15, 15, 15, 15, 46, 46, 46, 46, // 86
|
|
46, 46, 15, 15, 15, 15, 15, 15, // 86
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 86
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 86
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 86
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 86
|
|
46, 15, 15, 15, 15, 46, 15, 15, // 87
|
|
15, 15, 46, 46, 15, 15, 15, 15, // 87
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 87
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 87
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 87
|
|
46, 15, 15, 15, 15, 15, 15, 15, // 87
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 87
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 87
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 88
|
|
15, 15, 15, 15, 46, 15, 46, 15, // 88
|
|
15, 15, 15, 46, 46, 46, 15, 46, // 88
|
|
15, 15, 15, 15, 15, 15, 15, 46, // 88
|
|
46, 15, 15, 15, 15, 15, 15, 15, // 88
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 88
|
|
46, 46, 46, 46, 46, 46, 119, 119, // 88
|
|
119, 119, 119, 119, 119, 119, 119, 119, // 88
|
|
114, 114, 114, 114, 114, 114, 114, 114, // 89
|
|
114, 114, 83, 83, 83, 83, 83, 83, // 89
|
|
83, 83, 83, 83, 15, 46, 46, 46, // 89
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 89
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 89
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 89
|
|
46, 15, 15, 15, 15, 15, 15, 15, // 89
|
|
15, 15, 15, 15, 15, 15, 15, 46, // 89
|
|
2, 3, 3, 3, 15, 59, 3, 120, // 90
|
|
5, 6, 5, 6, 5, 6, 5, 6, // 90
|
|
5, 6, 15, 15, 5, 6, 5, 6, // 90
|
|
5, 6, 5, 6, 8, 5, 6, 5, // 90
|
|
15, 121, 121, 121, 121, 121, 121, 121, // 90
|
|
121, 121, 60, 60, 60, 60, 60, 60, // 90
|
|
8, 59, 59, 59, 59, 59, 15, 15, // 90
|
|
46, 46, 46, 46, 46, 46, 46, 15, // 90
|
|
46, 40, 40, 40, 40, 40, 40, 40, // 91
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 91
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 91
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 91
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 91
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 91
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 91
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 91
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 92
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 92
|
|
40, 40, 40, 40, 40, 46, 46, 46, // 92
|
|
46, 60, 60, 59, 59, 59, 59, 46, // 92
|
|
46, 40, 40, 40, 40, 40, 40, 40, // 92
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 92
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 92
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 92
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 93
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 93
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 93
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 93
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 93
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 93
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 93
|
|
40, 40, 40, 3, 59, 59, 59, 46, // 93
|
|
46, 46, 46, 46, 46, 40, 40, 40, // 94
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 94
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 94
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 94
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 94
|
|
40, 40, 40, 40, 40, 46, 46, 46, // 94
|
|
46, 40, 40, 40, 40, 40, 40, 40, // 94
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 94
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 95
|
|
40, 40, 40, 40, 40, 40, 40, 46, // 95
|
|
15, 15, 85, 85, 85, 85, 15, 15, // 95
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 95
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 95
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 95
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 95
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 95
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 96
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 96
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 96
|
|
15, 15, 15, 15, 15, 46, 46, 46, // 96
|
|
85, 85, 85, 85, 85, 85, 85, 85, // 96
|
|
85, 85, 15, 15, 15, 15, 15, 15, // 96
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 96
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 96
|
|
15, 15, 15, 15, 46, 46, 46, 46, // 97
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 97
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 97
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 97
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 97
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 97
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 97
|
|
15, 15, 15, 15, 46, 46, 46, 15, // 97
|
|
114, 114, 114, 114, 114, 114, 114, 114, // 98
|
|
114, 114, 15, 15, 15, 15, 15, 15, // 98
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 98
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 98
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 98
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 98
|
|
15, 46, 46, 46, 46, 46, 46, 46, // 98
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 98
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 99
|
|
15, 15, 15, 15, 46, 46, 46, 46, // 99
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 99
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 99
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 99
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 99
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 99
|
|
15, 15, 15, 15, 15, 15, 15, 46, // 99
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 100
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 100
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 100
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 100
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 100
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 100
|
|
15, 15, 15, 15, 15, 15, 15, 46, // 100
|
|
46, 46, 46, 15, 15, 15, 15, 15, // 100
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 101
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 101
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 101
|
|
15, 15, 15, 15, 15, 15, 46, 46, // 101
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 101
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 101
|
|
15, 15, 15, 15, 15, 15, 15, 15, // 101
|
|
15, 15, 15, 15, 15, 15, 15, 46, // 101
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 102
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 102
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 102
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 102
|
|
40, 40, 40, 40, 40, 40, 46, 46, // 102
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 102
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 102
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 102
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 103
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 103
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 103
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 103
|
|
40, 40, 40, 40, 46, 46, 46, 46, // 103
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 103
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 103
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 103
|
|
122, 122, 122, 122, 122, 122, 122, 122, // 104
|
|
122, 122, 122, 122, 122, 122, 122, 122, // 104
|
|
122, 122, 122, 122, 122, 122, 122, 122, // 104
|
|
122, 122, 122, 122, 122, 122, 122, 122, // 104
|
|
122, 122, 122, 122, 122, 122, 122, 122, // 104
|
|
122, 122, 122, 122, 122, 122, 122, 122, // 104
|
|
122, 122, 122, 122, 122, 122, 122, 122, // 104
|
|
122, 122, 122, 122, 122, 122, 122, 122, // 104
|
|
123, 123, 123, 123, 123, 123, 123, 123, // 105
|
|
123, 123, 123, 123, 123, 123, 123, 123, // 105
|
|
123, 123, 123, 123, 123, 123, 123, 123, // 105
|
|
123, 123, 123, 123, 123, 123, 123, 123, // 105
|
|
123, 123, 123, 123, 123, 123, 123, 123, // 105
|
|
123, 123, 123, 123, 123, 123, 123, 123, // 105
|
|
123, 123, 123, 123, 123, 123, 123, 123, // 105
|
|
123, 123, 123, 123, 123, 123, 123, 123, // 105
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 106
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 106
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 106
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 106
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 106
|
|
40, 40, 40, 40, 40, 40, 46, 46, // 106
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 106
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 106
|
|
16, 16, 16, 16, 16, 16, 16, 46, // 107
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 107
|
|
46, 46, 46, 16, 16, 16, 16, 16, // 107
|
|
46, 46, 46, 46, 46, 46, 60, 40, // 107
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 107
|
|
40, 7, 40, 40, 40, 40, 40, 40, // 107
|
|
40, 40, 40, 40, 40, 40, 40, 46, // 107
|
|
40, 40, 40, 40, 40, 46, 40, 46, // 107
|
|
40, 40, 46, 40, 40, 46, 40, 40, // 108
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 108
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 108
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 108
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 108
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 108
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 108
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 108
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 109
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 109
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 109
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 109
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 109
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 109
|
|
40, 40, 46, 46, 46, 46, 46, 46, // 109
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 109
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 110
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 110
|
|
46, 46, 46, 40, 40, 40, 40, 40, // 110
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 110
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 110
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 110
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 110
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 110
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 111
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 111
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 111
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 111
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 111
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 111
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 111
|
|
40, 40, 40, 40, 40, 40, 5, 6, // 111
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 112
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 112
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 112
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 112
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 112
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 112
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 112
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 112
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 113
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 113
|
|
46, 46, 40, 40, 40, 40, 40, 40, // 113
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 113
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 113
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 113
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 113
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 113
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 114
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 114
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 114
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 114
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 114
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 114
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 114
|
|
40, 40, 40, 40, 46, 46, 46, 46, // 114
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 115
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 115
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 115
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 115
|
|
60, 60, 60, 60, 46, 46, 46, 46, // 115
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 115
|
|
3, 8, 8, 12, 12, 5, 6, 5, // 115
|
|
6, 5, 6, 5, 6, 5, 6, 5, // 115
|
|
6, 5, 6, 5, 6, 46, 46, 46, // 116
|
|
46, 3, 3, 3, 3, 12, 12, 12, // 116
|
|
3, 3, 3, 46, 3, 3, 3, 3, // 116
|
|
8, 5, 6, 5, 6, 5, 6, 3, // 116
|
|
3, 3, 7, 8, 7, 7, 7, 46, // 116
|
|
3, 4, 3, 3, 46, 46, 46, 46, // 116
|
|
40, 40, 40, 46, 40, 46, 40, 40, // 116
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 116
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 117
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 117
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 117
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 117
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 117
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 117
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 117
|
|
40, 40, 40, 40, 40, 46, 46, 104, // 117
|
|
46, 3, 3, 3, 4, 3, 3, 3, // 118
|
|
5, 6, 3, 7, 3, 8, 3, 3, // 118
|
|
9, 9, 9, 9, 9, 9, 9, 9, // 118
|
|
9, 9, 3, 3, 7, 7, 7, 3, // 118
|
|
3, 10, 10, 10, 10, 10, 10, 10, // 118
|
|
10, 10, 10, 10, 10, 10, 10, 10, // 118
|
|
10, 10, 10, 10, 10, 10, 10, 10, // 118
|
|
10, 10, 10, 5, 3, 6, 11, 12, // 118
|
|
11, 13, 13, 13, 13, 13, 13, 13, // 119
|
|
13, 13, 13, 13, 13, 13, 13, 13, // 119
|
|
13, 13, 13, 13, 13, 13, 13, 13, // 119
|
|
13, 13, 13, 5, 7, 6, 7, 46, // 119
|
|
46, 3, 5, 6, 3, 3, 40, 40, // 119
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 119
|
|
59, 40, 40, 40, 40, 40, 40, 40, // 119
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 119
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 120
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 120
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 120
|
|
40, 40, 40, 40, 40, 40, 59, 59, // 120
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 120
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 120
|
|
40, 40, 40, 40, 40, 40, 40, 40, // 120
|
|
40, 40, 40, 40, 40, 40, 40, 46, // 120
|
|
46, 46, 40, 40, 40, 40, 40, 40, // 121
|
|
46, 46, 40, 40, 40, 40, 40, 40, // 121
|
|
46, 46, 40, 40, 40, 40, 40, 40, // 121
|
|
46, 46, 40, 40, 40, 46, 46, 46, // 121
|
|
4, 4, 7, 11, 15, 4, 4, 46, // 121
|
|
7, 7, 7, 7, 7, 15, 15, 46, // 121
|
|
46, 46, 46, 46, 46, 46, 46, 46, // 121
|
|
46, 46, 46, 46, 46, 15, 46, 46 // 121
|
|
};
|
|
|
|
|
|
// The A table has 124 entries for a total of 496 bytes.
|
|
const uint32 JS::CharInfo::a[] = {
|
|
0x0000000F, // 0 Cc
|
|
0x0004000F, // 1 Cc, whitespace
|
|
0x0004000C, // 2 Zs, whitespace
|
|
0x00000018, // 3 Po
|
|
0x0002001A, // 4 Sc, currency
|
|
0x00000015, // 5 Ps
|
|
0x00000016, // 6 Pe
|
|
0x00000019, // 7 Sm
|
|
0x00000014, // 8 Pd
|
|
0x00036009, // 9 Nd, identifier part, decimal 16
|
|
0x0822FE01, // 10 Lu, hasLower (add 32), identifier start, supradecimal 31
|
|
0x0000001B, // 11 Sk
|
|
0x00020017, // 12 Pc, underscore
|
|
0x0812FE02, // 13 Ll, hasUpper (subtract 32), identifier start, supradecimal 31
|
|
0x0005000F, // 14 Cc, break
|
|
0x0000001C, // 15 So
|
|
0x00020002, // 16 Ll, identifier start
|
|
0x0000600B, // 17 No, decimal 16
|
|
0x0000500B, // 18 No, decimal 8
|
|
0x0000800B, // 19 No, strange
|
|
0x08220001, // 20 Lu, hasLower (add 32), identifier start
|
|
0x08120002, // 21 Ll, hasUpper (subtract 32), identifier start
|
|
0xE1D20002, // 22 Ll, hasUpper (subtract -121), identifier start
|
|
0x00620001, // 23 Lu, hasLower (add 1), identifier start
|
|
0x00520002, // 24 Ll, hasUpper (subtract 1), identifier start
|
|
0xCE620001, // 25 Lu, hasLower (add -199), identifier start
|
|
0x3A120002, // 26 Ll, hasUpper (subtract 232), identifier start
|
|
0xE1E20001, // 27 Lu, hasLower (add -121), identifier start
|
|
0x4B120002, // 28 Ll, hasUpper (subtract 300), identifier start
|
|
0x34A20001, // 29 Lu, hasLower (add 210), identifier start
|
|
0x33A20001, // 30 Lu, hasLower (add 206), identifier start
|
|
0x33620001, // 31 Lu, hasLower (add 205), identifier start
|
|
0x32A20001, // 32 Lu, hasLower (add 202), identifier start
|
|
0x32E20001, // 33 Lu, hasLower (add 203), identifier start
|
|
0x33E20001, // 34 Lu, hasLower (add 207), identifier start
|
|
0x34E20001, // 35 Lu, hasLower (add 211), identifier start
|
|
0x34620001, // 36 Lu, hasLower (add 209), identifier start
|
|
0x35620001, // 37 Lu, hasLower (add 213), identifier start
|
|
0x00020001, // 38 Lu, identifier start
|
|
0x36A20001, // 39 Lu, hasLower (add 218), identifier start
|
|
0x00020005, // 40 Lo, identifier start
|
|
0x36620001, // 41 Lu, hasLower (add 217), identifier start
|
|
0x36E20001, // 42 Lu, hasLower (add 219), identifier start
|
|
0x00AA0001, // 43 Lu, hasLower (add 2), hasTitle, identifier start
|
|
0x007A0003, // 44 Lt, hasUpper (subtract 1), hasLower (add 1), hasTitle, identifier start
|
|
0x009A0002, // 45 Ll, hasUpper (subtract 2), hasTitle, identifier start
|
|
0x00000000, // 46 unassigned
|
|
0x34920002, // 47 Ll, hasUpper (subtract 210), identifier start
|
|
0x33920002, // 48 Ll, hasUpper (subtract 206), identifier start
|
|
0x33520002, // 49 Ll, hasUpper (subtract 205), identifier start
|
|
0x32920002, // 50 Ll, hasUpper (subtract 202), identifier start
|
|
0x32D20002, // 51 Ll, hasUpper (subtract 203), identifier start
|
|
0x33D20002, // 52 Ll, hasUpper (subtract 207), identifier start
|
|
0x34520002, // 53 Ll, hasUpper (subtract 209), identifier start
|
|
0x34D20002, // 54 Ll, hasUpper (subtract 211), identifier start
|
|
0x35520002, // 55 Ll, hasUpper (subtract 213), identifier start
|
|
0x36920002, // 56 Ll, hasUpper (subtract 218), identifier start
|
|
0x36520002, // 57 Ll, hasUpper (subtract 217), identifier start
|
|
0x36D20002, // 58 Ll, hasUpper (subtract 219), identifier start
|
|
0x00020004, // 59 Lm, identifier start
|
|
0x00030006, // 60 Mn, identifier part
|
|
0x09A20001, // 61 Lu, hasLower (add 38), identifier start
|
|
0x09620001, // 62 Lu, hasLower (add 37), identifier start
|
|
0x10220001, // 63 Lu, hasLower (add 64), identifier start
|
|
0x0FE20001, // 64 Lu, hasLower (add 63), identifier start
|
|
0x09920002, // 65 Ll, hasUpper (subtract 38), identifier start
|
|
0x09520002, // 66 Ll, hasUpper (subtract 37), identifier start
|
|
0x10120002, // 67 Ll, hasUpper (subtract 64), identifier start
|
|
0x0FD20002, // 68 Ll, hasUpper (subtract 63), identifier start
|
|
0x0F920002, // 69 Ll, hasUpper (subtract 62), identifier start
|
|
0x0E520002, // 70 Ll, hasUpper (subtract 57), identifier start
|
|
0x0BD20002, // 71 Ll, hasUpper (subtract 47), identifier start
|
|
0x0D920002, // 72 Ll, hasUpper (subtract 54), identifier start
|
|
0x15920002, // 73 Ll, hasUpper (subtract 86), identifier start
|
|
0x14120002, // 74 Ll, hasUpper (subtract 80), identifier start
|
|
0x14220001, // 75 Lu, hasLower (add 80), identifier start
|
|
0x0C220001, // 76 Lu, hasLower (add 48), identifier start
|
|
0x0C120002, // 77 Ll, hasUpper (subtract 48), identifier start
|
|
0x00034009, // 78 Nd, identifier part, decimal 0
|
|
0x00000007, // 79 Me
|
|
0x00030008, // 80 Mc, identifier part
|
|
0x00037409, // 81 Nd, identifier part, decimal 26
|
|
0x00005A0B, // 82 No, decimal 13
|
|
0x00006E0B, // 83 No, decimal 23
|
|
0x0000740B, // 84 No, decimal 26
|
|
0x0000000B, // 85 No
|
|
0xFE120002, // 86 Ll, hasUpper (subtract -8), identifier start
|
|
0xFE220001, // 87 Lu, hasLower (add -8), identifier start
|
|
0xED920002, // 88 Ll, hasUpper (subtract -74), identifier start
|
|
0xEA920002, // 89 Ll, hasUpper (subtract -86), identifier start
|
|
0xE7120002, // 90 Ll, hasUpper (subtract -100), identifier start
|
|
0xE0120002, // 91 Ll, hasUpper (subtract -128), identifier start
|
|
0xE4120002, // 92 Ll, hasUpper (subtract -112), identifier start
|
|
0xE0920002, // 93 Ll, hasUpper (subtract -126), identifier start
|
|
0xFDD20002, // 94 Ll, hasUpper (subtract -9), identifier start
|
|
0xEDA20001, // 95 Lu, hasLower (add -74), identifier start
|
|
0xFDE20001, // 96 Lu, hasLower (add -9), identifier start
|
|
0xEAA20001, // 97 Lu, hasLower (add -86), identifier start
|
|
0xE7220001, // 98 Lu, hasLower (add -100), identifier start
|
|
0xFE520002, // 99 Ll, hasUpper (subtract -7), identifier start
|
|
0xE4220001, // 100 Lu, hasLower (add -112), identifier start
|
|
0xFE620001, // 101 Lu, hasLower (add -7), identifier start
|
|
0xE0220001, // 102 Lu, hasLower (add -128), identifier start
|
|
0xE0A20001, // 103 Lu, hasLower (add -126), identifier start
|
|
0x00010010, // 104 Cf, ignorable
|
|
0x0005000D, // 105 Zl, break
|
|
0x0005000E, // 106 Zp, break
|
|
0x0000400B, // 107 No, decimal 0
|
|
0x0000440B, // 108 No, decimal 2
|
|
0x0422420A, // 109 Nl, hasLower (add 16), identifier start, decimal 1
|
|
0x0422800A, // 110 Nl, hasLower (add 16), identifier start, strange
|
|
0x0412620A, // 111 Nl, hasUpper (subtract 16), identifier start, decimal 17
|
|
0x0412800A, // 112 Nl, hasUpper (subtract 16), identifier start, strange
|
|
0x0002800A, // 113 Nl, identifier start, strange
|
|
0x0000420B, // 114 No, decimal 1
|
|
0x0000720B, // 115 No, decimal 25
|
|
0x06A0001C, // 116 So, hasLower (add 26)
|
|
0x0690001C, // 117 So, hasUpper (subtract 26)
|
|
0x00006C0B, // 118 No, decimal 22
|
|
0x0000560B, // 119 No, decimal 11
|
|
0x0002720A, // 120 Nl, identifier start, decimal 25
|
|
0x0002400A, // 121 Nl, identifier start, decimal 0
|
|
0x00000013, // 122 Cs
|
|
0x00000012 // 123 Co
|
|
};
|
|
|
|
|
|
// Return c converted to upper case. If c cannot be converted to upper case,
|
|
// return c unchanged.
|
|
char16 JS::toUpper(char16 c)
|
|
{
|
|
CharInfo ci(c);
|
|
if (ci.info & 0x00100000)
|
|
c = static_cast<char16>(static_cast<int32>(c) - (static_cast<int32>(ci.info) >> 22));
|
|
return c;
|
|
}
|
|
|
|
|
|
// Return c converted to lower case. If c cannot be converted to lower case,
|
|
// return c unchanged.
|
|
char16 JS::toLower(char16 c)
|
|
{
|
|
CharInfo ci(c);
|
|
if (ci.info & 0x00200000)
|
|
c = static_cast<char16>(static_cast<int32>(c) + (static_cast<int32>(ci.info) >> 22));
|
|
return c;
|
|
}
|
|
|
|
|
|
// Return true if c is an ASCII hexadecimal digit, in which case store the digit's numeric value in d.
|
|
bool JS::isASCIIHexDigit(char16 c, uint &digit)
|
|
{
|
|
uint cv = c;
|
|
|
|
if (cv < '0')
|
|
return false;
|
|
if (cv <= '9') {
|
|
digit = cv - '0';
|
|
return true;
|
|
}
|
|
cv |= 0x20;
|
|
if (cv >= 'a' && cv <= 'f') {
|
|
digit = cv - 'a' + 10;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
|
|
// Return str advanced past white space characters, but no further than strEnd.
|
|
const char16 *JS::skipWhiteSpace(const char16 *str, const char16 *strEnd)
|
|
{
|
|
while (str != strEnd && isSpace(*str))
|
|
str++;
|
|
return str;
|
|
}
|
|
|
|
|
|
//
|
|
// Arenas
|
|
//
|
|
|
|
// #define DEBUG_ARENA to allocate each object in its own malloc block.
|
|
// This allows tools such as Purify to do bounds checking on all blocks.
|
|
|
|
struct JS::Arena::DestructorEntry: JS::ArenaObject {
|
|
DestructorEntry *next; // Next destructor registration in linked list
|
|
void (*destructor)(void *); // Destructor function
|
|
void *object; // Object on which to call the destructor
|
|
|
|
DestructorEntry(void (*destructor)(void *), void *object): destructor(destructor), object(object) {}
|
|
};
|
|
|
|
|
|
// Construct an Arena that allocates memory in chunks of the given size.
|
|
JS::Arena::Arena(size_t blockSize): blockSize(blockSize), freeBegin(0), freeEnd(0)
|
|
{
|
|
ASSERT(blockSize && !(blockSize & basicAlignment-1));
|
|
rootDirectory.next = 0;
|
|
currentDirectory = &rootDirectory;
|
|
}
|
|
|
|
|
|
// Deallocate the Directory's blocks but do not follow the next link.
|
|
void JS::Arena::Directory::clear()
|
|
{
|
|
void **b = blocks + nBlocks;
|
|
while (b != blocks)
|
|
STD::free(*--b);
|
|
}
|
|
|
|
|
|
// Call the Arena's registered destructors and then deallocate the Arena's blocks and
|
|
// directories.
|
|
void JS::Arena::clear()
|
|
{
|
|
DestructorEntry *e = destructorEntries;
|
|
while (e) {
|
|
e->destructor(e->object);
|
|
e = e->next;
|
|
}
|
|
destructorEntries = 0;
|
|
|
|
Directory *d = rootDirectory.next;
|
|
while (d) {
|
|
Directory *next = d->next;
|
|
d->clear();
|
|
delete d;
|
|
d = next;
|
|
}
|
|
rootDirectory.clear();
|
|
rootDirectory.next = 0;
|
|
currentDirectory = &rootDirectory;
|
|
}
|
|
|
|
|
|
// Allocate an internal block of the given size and link it into a Directory.
|
|
// Throw bad_alloc if out of memory, without corrupting any of the Arena data structures.
|
|
void *JS::Arena::newBlock(size_t size)
|
|
{
|
|
Directory *d = currentDirectory;
|
|
uint nBlocks = d->nBlocks;
|
|
|
|
// Allocate a new Directory if the current one is full. Link it just past the
|
|
// rootDirectory so that the links are in reverse order. This allows clear() to
|
|
// deallocate memory in the reverse order from that in which it was allocated.
|
|
if (nBlocks == Directory::maxNBlocks) {
|
|
d = new Directory;
|
|
d->next = rootDirectory.next;
|
|
rootDirectory.next = d;
|
|
currentDirectory = d;
|
|
nBlocks = 0;
|
|
}
|
|
|
|
void *p = STD::malloc(size);
|
|
d->blocks[nBlocks] = p;
|
|
d->nBlocks = nBlocks + 1;
|
|
return p;
|
|
}
|
|
|
|
|
|
// Allocate a naturally-aligned object of the given size (in bytes). Throw
|
|
// bad_alloc if out of memory, without corrupting any of the Arena data structures.
|
|
void *JS::Arena::allocate(size_t size)
|
|
{
|
|
ASSERT(size); // Can't allocate zero-size blocks.
|
|
#ifdef DEBUG_ARENA
|
|
return newBlock(size);
|
|
#else
|
|
size = size + (basicAlignment-1) & -basicAlignment; // Round up to natural alignment if necessary
|
|
char *p = freeBegin;
|
|
size_t freeBytes = static_cast<size_t>(freeEnd - p);
|
|
|
|
if (size > freeBytes) {
|
|
// If freeBytes is at least a quarter of blockSize, allocate a separate block.
|
|
if (freeBytes<<2 >= blockSize || size >= blockSize)
|
|
return newBlock(size);
|
|
|
|
p = static_cast<char *>(newBlock(blockSize));
|
|
freeEnd = p + blockSize;
|
|
}
|
|
freeBegin = p + size;
|
|
return p;
|
|
#endif
|
|
}
|
|
|
|
|
|
// Ensure that object's destructor is called at the time the arena is deallocated or cleared.
|
|
// The destructors will be called in reverse order of being registered.
|
|
// registerDestructor might itself runs out of memory, in which case it immediately
|
|
// calls object's destructor before throwing bad_alloc.
|
|
void JS::Arena::newDestructorEntry(void (*destructor)(void *), void *object)
|
|
{
|
|
try {
|
|
DestructorEntry *e = new(*this) DestructorEntry(destructor, object);
|
|
e->next = destructorEntries;
|
|
destructorEntries = e;
|
|
} catch (...) {
|
|
destructor(object);
|
|
throw;
|
|
}
|
|
}
|
|
|
|
|
|
// Allocate a String in the Arena and register that String so that it is deallocated at
|
|
// the same time as the Arena.
|
|
// DO NOT CALL DELETE ON THE RESULT!
|
|
JS::String *JS::newArenaString(Arena &arena)
|
|
{
|
|
String *s = new(arena) String();
|
|
arena.registerDestructor(s);
|
|
return s;
|
|
}
|
|
|
|
JS::String *JS::newArenaString(Arena &arena, const String &str)
|
|
{
|
|
String *s = new(arena) String(str);
|
|
arena.registerDestructor(s);
|
|
return s;
|
|
}
|
|
|
|
|
|
//
|
|
// C++ I/O
|
|
//
|
|
|
|
#ifdef __GNUC__
|
|
JS::SaveFormat::SaveFormat(ostream &) {}
|
|
|
|
JS::SaveFormat::~SaveFormat() {}
|
|
#else
|
|
JS::SaveFormat::SaveFormat(ostream &out): o(out), flags(out.flags()), fill(out.fill()) {}
|
|
|
|
JS::SaveFormat::~SaveFormat()
|
|
{
|
|
o.flags(flags);
|
|
o.fill(fill);
|
|
}
|
|
#endif
|
|
|
|
|
|
// Quotes for printing non-ASCII characters on an ASCII stream
|
|
#ifdef XP_MAC
|
|
const char beginUnprintable = char(0xC7);
|
|
const char endUnprintable = char(0xC8);
|
|
#else
|
|
const char beginUnprintable = '{';
|
|
const char endUnprintable = '}';
|
|
#endif
|
|
|
|
void JS::showChar(ostream &out, char16 ch)
|
|
{
|
|
#ifdef XP_MAC_MPW
|
|
if (ch == '\n')
|
|
out << '\r';
|
|
else
|
|
#endif
|
|
if (uchar16(ch) <= 0x7E && (uchar16(ch) >= ' ' || ch == '\n' || ch == '\t'))
|
|
out << static_cast<char>(ch);
|
|
else {
|
|
SaveFormat sf(out);
|
|
#ifdef __GNUC__
|
|
out << beginUnprintable << std::hex << std::setw(4) << std::setfill('0') << (uint16)ch << endUnprintable;
|
|
#else
|
|
out << beginUnprintable << std::hex << std::uppercase << std::setw(4) << std::setfill('0') << (uint16)ch << endUnprintable;
|
|
#endif
|
|
}
|
|
}
|
|
|
|
|
|
void JS::showString(ostream &out, const String &str)
|
|
{
|
|
showString(out, str.begin(), str.end());
|
|
}
|
|
|
|
|
|
//
|
|
// Exceptions
|
|
//
|
|
|
|
|
|
static const char *const kindStrings[] = {
|
|
"Syntax error" // SyntaxError
|
|
};
|
|
|
|
// Return a null-terminated string describing the exception's kind.
|
|
const char *JS::Exception::kindString() const
|
|
{
|
|
return kindStrings[kind];
|
|
}
|
|
|
|
|
|
// Return the full error message.
|
|
JS::String JS::Exception::fullMessage() const
|
|
{
|
|
return kindString() + (": " + message);
|
|
}
|
|
|
|
|
|
//
|
|
// Static Initializers
|
|
//
|
|
|
|
|
|
#ifndef _WIN32
|
|
static void jsNewHandler()
|
|
{
|
|
std::bad_alloc outOfMemory;
|
|
throw outOfMemory;
|
|
}
|
|
|
|
|
|
struct InitUtilities
|
|
{
|
|
InitUtilities() {std::set_new_handler(&jsNewHandler);}
|
|
};
|
|
#else
|
|
#include <new.h>
|
|
static int jsNewHandler(size_t)
|
|
{
|
|
std::bad_alloc outOfMemory;
|
|
throw outOfMemory;
|
|
}
|
|
|
|
|
|
struct InitUtilities
|
|
{
|
|
InitUtilities() {_set_new_handler(&jsNewHandler);}
|
|
};
|
|
#endif
|
|
InitUtilities initUtilities;
|