summaryrefslogtreecommitdiffstats
path: root/src/corelib/text
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/text')
-rw-r--r--src/corelib/text/UNICODE_LICENSE.txt46
-rw-r--r--src/corelib/text/qanystringview.cpp (renamed from src/corelib/text/qanystringview.qdoc)349
-rw-r--r--src/corelib/text/qanystringview.h294
-rw-r--r--src/corelib/text/qbytearray.cpp1580
-rw-r--r--src/corelib/text/qbytearray.h396
-rw-r--r--src/corelib/text/qbytearray_p.h65
-rw-r--r--src/corelib/text/qbytearrayalgorithms.h95
-rw-r--r--src/corelib/text/qbytearraylist.cpp42
-rw-r--r--src/corelib/text/qbytearraylist.h52
-rw-r--r--src/corelib/text/qbytearraymatcher.cpp42
-rw-r--r--src/corelib/text/qbytearraymatcher.h73
-rw-r--r--src/corelib/text/qbytearrayview.h224
-rw-r--r--src/corelib/text/qbytearrayview.qdoc139
-rw-r--r--src/corelib/text/qbytedata_p.h64
-rw-r--r--src/corelib/text/qchar.cpp278
-rw-r--r--src/corelib/text/qchar.h202
-rw-r--r--src/corelib/text/qcollator.cpp116
-rw-r--r--src/corelib/text/qcollator.h50
-rw-r--r--src/corelib/text/qcollator_icu.cpp55
-rw-r--r--src/corelib/text/qcollator_macx.cpp52
-rw-r--r--src/corelib/text/qcollator_p.h48
-rw-r--r--src/corelib/text/qcollator_posix.cpp70
-rw-r--r--src/corelib/text/qcollator_win.cpp48
-rw-r--r--src/corelib/text/qdoublescanprint_p.h42
-rw-r--r--src/corelib/text/qlatin1stringmatcher.cpp201
-rw-r--r--src/corelib/text/qlatin1stringmatcher.h172
-rw-r--r--src/corelib/text/qlatin1stringview.h375
-rw-r--r--src/corelib/text/qlatin1stringview.qdoc1295
-rw-r--r--src/corelib/text/qlocale.cpp2001
-rw-r--r--src/corelib/text/qlocale.h135
-rw-r--r--src/corelib/text/qlocale.qdoc453
-rw-r--r--src/corelib/text/qlocale_data_p.h10542
-rw-r--r--src/corelib/text/qlocale_icu.cpp40
-rw-r--r--src/corelib/text/qlocale_mac.mm340
-rw-r--r--src/corelib/text/qlocale_p.h359
-rw-r--r--src/corelib/text/qlocale_tools.cpp318
-rw-r--r--src/corelib/text/qlocale_tools_p.h57
-rw-r--r--src/corelib/text/qlocale_unix.cpp77
-rw-r--r--src/corelib/text/qlocale_wasm.cpp54
-rw-r--r--src/corelib/text/qlocale_win.cpp382
-rw-r--r--src/corelib/text/qregularexpression.cpp336
-rw-r--r--src/corelib/text/qregularexpression.h81
-rw-r--r--src/corelib/text/qstaticlatin1stringmatcher.h140
-rw-r--r--src/corelib/text/qstaticlatin1stringmatcher.qdoc86
-rw-r--r--src/corelib/text/qstring.cpp5410
-rw-r--r--src/corelib/text/qstring.h1409
-rw-r--r--src/corelib/text/qstring_mips_dsp_asm.S40
-rw-r--r--src/corelib/text/qstringalgorithms.h229
-rw-r--r--src/corelib/text/qstringalgorithms_p.h64
-rw-r--r--src/corelib/text/qstringbuilder.cpp91
-rw-r--r--src/corelib/text/qstringbuilder.h207
-rw-r--r--src/corelib/text/qstringconverter.cpp1179
-rw-r--r--src/corelib/text/qstringconverter.h318
-rw-r--r--src/corelib/text/qstringconverter_base.h176
-rw-r--r--src/corelib/text/qstringconverter_p.h149
-rw-r--r--src/corelib/text/qstringfwd.h56
-rw-r--r--src/corelib/text/qstringiterator.qdoc28
-rw-r--r--src/corelib/text/qstringiterator_p.h73
-rw-r--r--src/corelib/text/qstringlist.cpp313
-rw-r--r--src/corelib/text/qstringlist.h99
-rw-r--r--src/corelib/text/qstringliteral.h42
-rw-r--r--src/corelib/text/qstringmatcher.cpp94
-rw-r--r--src/corelib/text/qstringmatcher.h45
-rw-r--r--src/corelib/text/qstringtokenizer.cpp44
-rw-r--r--src/corelib/text/qstringtokenizer.h47
-rw-r--r--src/corelib/text/qstringview.cpp317
-rw-r--r--src/corelib/text/qstringview.h245
-rw-r--r--src/corelib/text/qt_attribution.json34
-rw-r--r--src/corelib/text/qtextboundaryfinder.cpp54
-rw-r--r--src/corelib/text/qtextboundaryfinder.h42
-rw-r--r--src/corelib/text/qtliterals.qdoc63
-rw-r--r--src/corelib/text/qunicodetables.cpp20786
-rw-r--r--src/corelib/text/qunicodetables_p.h72
-rw-r--r--src/corelib/text/qunicodetools.cpp466
-rw-r--r--src/corelib/text/qunicodetools_p.h40
-rw-r--r--src/corelib/text/qutf8stringview.h234
-rw-r--r--src/corelib/text/qutf8stringview.qdoc91
-rw-r--r--src/corelib/text/qvsnprintf.cpp42
78 files changed, 30194 insertions, 24271 deletions
diff --git a/src/corelib/text/UNICODE_LICENSE.txt b/src/corelib/text/UNICODE_LICENSE.txt
deleted file mode 100644
index 500dbd5463..0000000000
--- a/src/corelib/text/UNICODE_LICENSE.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
-
-See Terms of Use for definitions of Unicode Inc.'s
-Data Files and Software.
-
-NOTICE TO USER: Carefully read the following legal agreement.
-BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
-DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
-YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
-TERMS AND CONDITIONS OF THIS AGREEMENT.
-IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
-THE DATA FILES OR SOFTWARE.
-
-COPYRIGHT AND PERMISSION NOTICE
-
-Copyright © 1991-2020 Unicode, Inc. All rights reserved.
-Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Unicode data files and any associated documentation
-(the "Data Files") or Unicode software and any associated documentation
-(the "Software") to deal in the Data Files or Software
-without restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, and/or sell copies of
-the Data Files or Software, and to permit persons to whom the Data Files
-or Software are furnished to do so, provided that either
-(a) this copyright and permission notice appear with all copies
-of the Data Files or Software, or
-(b) this copyright and permission notice appear in associated
-Documentation.
-
-THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
-NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
-DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THE DATA FILES OR SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder
-shall not be used in advertising or otherwise to promote the sale,
-use or other dealings in these Data Files or Software without prior
-written authorization of the copyright holder.
diff --git a/src/corelib/text/qanystringview.qdoc b/src/corelib/text/qanystringview.cpp
index 743e389a8f..4129257c02 100644
--- a/src/corelib/text/qanystringview.qdoc
+++ b/src/corelib/text/qanystringview.cpp
@@ -1,29 +1,11 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#include "qanystringview.h"
+#include "qdebug.h"
+#include "qttypetraits.h"
+
+QT_BEGIN_NAMESPACE
/*!
\class QAnyStringView
@@ -35,15 +17,23 @@
\ingroup tools
\ingroup string-processing
+ \compares strong
+ \compareswith strong char16_t QChar {const char16_t *} {const char *} \
+ QByteArray QByteArrayView QString QStringView QUtf8StringView \
+ QLatin1StringView
+ \endcompareswith
+
A QAnyStringView references a contiguous portion of a string it does
not own. It acts as an interface type to all kinds of strings,
without the need to construct a QString first.
Unlike QStringView and QUtf8StringView, QAnyStringView can hold
strings of any of the following encodings: UTF-8, UTF-16, and
- Latin-1. The latter is supported to keep old source working
- efficiently. It is expected that by Qt 7, the Latin-1 support will
- be removed.
+ Latin-1. The latter is supported because Latin-1, unlike UTF-8,
+ can be efficiently compared to UTF-16 data: a length mismatch
+ already means the strings cannot be equal. This is not true for
+ UTF-8/UTF-16 comparisons, because UTF-8 is a variable-length
+ encoding.
The string may be represented as an array (or an array-compatible
data-structure such as QString, std::basic_string, etc.) of \c
@@ -60,14 +50,19 @@
When used as an interface type, QAnyStringView allows a single
function to accept a wide variety of string data sources. One
function accepting QAnyStringView thus replaces five function
- overloads (taking QString, \c{(const QChar*, int)},
- QUtf8StringView, QLatin1String (but see above), and QChar), while
+ overloads (taking QString, \c{(const QChar*, qsizetype)},
+ QUtf8StringView, QLatin1StringView (but see above), and QChar), while
at the same time enabling even more string data sources to be
passed to the function, such as \c{u8"Hello World"}, a \c char8_t
string literal.
Like elsewhere in Qt, QAnyStringView assumes \c char data is encoded
- in UTF-8, unless it is presented as a QLatin1String.
+ in UTF-8, unless it is presented as a QLatin1StringView.
+
+ Since Qt 6.4, however, UTF-8 string literals that are pure US-ASCII are
+ automatically stored as Latin-1. This is a compile-time check with no
+ runtime overhead. The feature requires compiling in C++20, or with a recent
+ GCC.
QAnyStringViews should be passed by value, not by reference-to-const:
\snippet code/src_corelib_text_qanystringview.cpp 0
@@ -97,7 +92,7 @@
\endlist
The 8-bit character types are interpreted as UTF-8 data (except when
- presented as a QLatin1String) while the 16-bit character types are
+ presented as a QLatin1StringView) while the 16-bit character types are
interpreted as UTF-16 data in host byte order (the same as QString).
\section2 Sizes and Sub-Strings
@@ -140,7 +135,7 @@
*/
/*!
- \fn template <typename Char> QAnyStringView::QAnyStringView(const Char *str, qsizetype len)
+ \fn template <typename Char, QAnyStringView::if_compatible_char<Char> = true> QAnyStringView::QAnyStringView(const Char *str, qsizetype len)
Constructs a string view on \a str with length \a len.
@@ -157,7 +152,7 @@
*/
/*!
- \fn template <typename Char> QAnyStringView::QAnyStringView(const Char *first, const Char *last)
+ \fn template <typename Char, QAnyStringView::if_compatible_char<Char> = true> QAnyStringView::QAnyStringView(const Char *first, const Char *last)
Constructs a string view on \a first with length (\a last - \a first).
@@ -232,6 +227,23 @@
*/
/*!
+ \fn template <typename Container, QAnyStringView::if_compatible_container<Container>> QAnyStringView::QAnyStringView(const Container &str)
+
+ Constructs a string view on \a str. The length is taken from \c{std::size(str)}.
+
+ \c{std::data(str)} must remain valid for the lifetime of this string view object.
+
+ This constructor only participates in overload resolution if \c Container is a
+ container with a compatible character type as \c{value_type}.
+
+ The string view will be empty if and only if \c{std::size(str) == 0}. It is unspecified
+ whether this constructor can result in a null string view (\c{std::data(str)} would
+ have to return \nullptr for this).
+
+ \sa isNull(), isEmpty()
+*/
+
+/*!
\fn template <typename Char, size_t Size> static QAnyStringView fromArray(const Char (&string)[Size]) noexcept
Constructs a string view on the full character string literal \a string,
@@ -321,7 +333,7 @@
*/
/*!
- \fn int QAnyStringView::length() const
+ \fn QAnyStringView::length() const
Same as size().
@@ -357,9 +369,217 @@
*/
/*!
+ \fn QAnyStringView::mid(qsizetype pos, qsizetype n) const
+ \since 6.5
+
+ Returns the substring of length \a n starting at position
+ \a pos in this object.
+
+ \deprecated Use sliced() instead in new code.
+
+ Returns an empty string view if \a n exceeds the
+ length of the string view. If there are less than \a n code points
+ available in the string view starting at \a pos, or if
+ \a n is negative (default), the function returns all code points that
+ are available from \a pos.
+
+ \sa first(), last(), sliced(), chopped(), chop(), truncate(), {Sizes and Sub-Strings}
+*/
+
+/*!
+ \fn QAnyStringView::left(qsizetype n) const
+ \since 6.5
+
+ \deprecated Use first() instead in new code.
+
+ Returns the substring of length \a n starting at position
+ 0 in this object.
+
+ The entire string view is returned if \a n is greater than or equal
+ to size(), or less than zero.
+
+ \sa first(), last(), sliced(), chopped(), chop(), truncate(), {Sizes and Sub-Strings}
+*/
+
+/*!
+ \fn QAnyStringView::right(qsizetype n) const
+ \since 6.5
+
+ \deprecated Use last() instead in new code.
+
+ Returns the substring of length \a n starting at position
+ size() - \a n in this object.
+
+ The entire string view is returned if \a n is greater than or equal
+ to size(), or less than zero.
+
+ \sa first(), last(), sliced(), chopped(), chop(), truncate(), {Sizes and Sub-Strings}
+*/
+
+/*!
+ \fn QAnyStringView::first(qsizetype n) const
+ \since 6.5
+
+ Returns a string view that contains the first \a n code points
+ of this string view.
+
+ \note The behavior is undefined when \a n < 0 or \a n > size().
+
+ \sa last(), sliced(), chopped(), chop(), truncate(), {Sizes and Sub-Strings}
+*/
+
+/*!
+ \fn QAnyStringView::last(qsizetype n) const
+ \since 6.5
+
+ Returns a string view that contains the last \a n code points of this string view.
+
+ \note The behavior is undefined when \a n < 0 or \a n > size().
+
+ \sa first(), sliced(), chopped(), chop(), truncate(), {Sizes and Sub-Strings}
+*/
+
+/*!
+ \fn QAnyStringView::sliced(qsizetype pos, qsizetype n) const
+ \since 6.5
+
+ Returns a string view containing \a n code points of this string view,
+ starting at position \a pos.
+
+//! [UB-sliced-index-length]
+ \note The behavior is undefined when \a pos < 0, \a n < 0,
+ or \a pos + \a n > size().
+//! [UB-sliced-index-length]
+
+ \sa first(), last(), chopped(), chop(), truncate(), {Sizes and Sub-Strings}
+*/
+
+/*!
+ \fn QAnyStringView::sliced(qsizetype pos) const
+ \since 6.5
+
+ Returns a string view starting at position \a pos in this object,
+ and extending to its end.
+
+//! [UB-sliced-index-only]
+ \note The behavior is undefined when \a pos < 0 or \a pos > size().
+//! [UB-sliced-index-only]
+
+ \sa first(), last(), chopped(), chop(), truncate(), {Sizes and Sub-Strings}
+*/
+
+/*!
+ \fn QAnyStringView::chopped(qsizetype n) const
+ \since 6.5
+
+ Returns the substring of length size() - \a n starting at the
+ beginning of this object.
+
+ Same as \c{first(size() - n)}.
+
+ \note The behavior is undefined when \a n < 0 or \a n > size().
+
+ \sa sliced(), first(), last(), chop(), truncate(), {Sizes and Sub-Strings}
+*/
+
+/*!
+ \fn QAnyStringView::truncate(qsizetype n)
+ \since 6.5
+
+ Truncates this string view to \a n code points.
+
+ Same as \c{*this = first(n)}.
+
+ \note The behavior is undefined when \a n < 0 or \a n > size().
+
+ \sa sliced(), first(), last(), chopped(), chop(), {Sizes and Sub-Strings}
+*/
+
+/*!
+ \fn QAnyStringView::chop(qsizetype n)
+ \since 6.5
+
+ Truncates this string view by \a n code points.
+
+ Same as \c{*this = first(size() - n)}.
+
+ \note The behavior is undefined when \a n < 0 or \a n > size().
+
+ \sa sliced(), first(), last(), chopped(), truncate(), {Sizes and Sub-Strings}
+*/
+
+/*! \fn template <typename Visitor> decltype(auto) QAnyStringView::visit(Visitor &&v) const
+
+ Calls \a v with either a QUtf8StringView, QLatin1String, or QStringView, depending
+ on the encoding of the string data this string-view references.
+
+ This is how most functions taking QAnyStringView fork off into per-encoding
+ functions:
+
+ \code
+ void processImpl(QLatin1String s) { ~~~ }
+ void processImpl(QUtf8StringView s) { ~~~ }
+ void processImpl(QStringView s) { ~~~ }
+
+ void process(QAnyStringView s)
+ {
+ s.visit([](auto s) { processImpl(s); });
+ }
+ \endcode
+
+ Here, we're reusing the same name, \c s, for both the QAnyStringView
+ object, as well as the lambda's parameter. This is idiomatic code and helps
+ track the identity of the objects through visit() calls, for example in more
+ complex situations such as
+
+ \code
+ bool equal(QAnyStringView lhs, QAnyStringView rhs)
+ {
+ // assuming operator==(QAnyStringView, QAnyStringView) didn't, yet, exist:
+ return lhs.visit([rhs](auto lhs) {
+ rhs.visit([lhs](auto rhs) {
+ return lhs == rhs;
+ });
+ });
+ }
+ \endcode
+
+ visit() requires that all lambda instantiations have the same return type.
+ If they differ, you get a compile error, even if there is a common type. To
+ fix, you can use explicit return types on the lambda, or cast in the return
+ statements:
+
+ \code
+ // wrong:
+ QAnyStringView firstHalf(QAnyStringView input)
+ {
+ return input.visit([](auto input) { // ERROR: lambdas return different types
+ return input.sliced(0, input.size() / 2);
+ });
+ }
+ // correct:
+ QAnyStringView firstHalf(QAnyStringView input)
+ {
+ return input.visit([](auto input) -> QAnyStringView { // OK, explicit return type
+ return input.sliced(0, input.size() / 2);
+ });
+ }
+ // also correct:
+ QAnyStringView firstHalf(QAnyStringView input)
+ {
+ return input.visit([](auto input) {
+ return QAnyStringView(input.sliced(0, input.size() / 2)); // OK, cast to common type
+ });
+ }
+ \endcode
+*/
+
+/*!
\fn QAnyStringView::compare(QAnyStringView lhs, QAnyStringView rhs, Qt::CaseSensitivity cs)
- Returns an integer that compares to zero as \a lhs compares to \a rhs.
+ Compares the string view \a lhs with the string view \a rhs and returns a
+ negative integer if \a lhs is less than \a rhs, a positive integer if it is
+ greater than \a rhs, and zero if they are equal.
If \a cs is Qt::CaseSensitive (the default), the comparison is case sensitive;
otherwise the comparison is case-insensitive.
@@ -368,12 +588,12 @@
*/
/*!
- \fn bool QAnyStringView::operator==(QAnyStringView lhs, QAnyStringView rhs)
- \fn bool QAnyStringView::operator!=(QAnyStringView lhs, QAnyStringView rhs)
- \fn bool QAnyStringView::operator<=(QAnyStringView lhs, QAnyStringView rhs)
- \fn bool QAnyStringView::operator>=(QAnyStringView lhs, QAnyStringView rhs)
- \fn bool QAnyStringView::operator<(QAnyStringView lhs, QAnyStringView rhs)
- \fn bool QAnyStringView::operator>(QAnyStringView lhs, QAnyStringView rhs)
+ \fn bool QAnyStringView::operator==(const QAnyStringView &lhs, const QAnyStringView & rhs)
+ \fn bool QAnyStringView::operator!=(const QAnyStringView & lhs, const QAnyStringView & rhs)
+ \fn bool QAnyStringView::operator<=(const QAnyStringView & lhs, const QAnyStringView & rhs)
+ \fn bool QAnyStringView::operator>=(const QAnyStringView & lhs, const QAnyStringView & rhs)
+ \fn bool QAnyStringView::operator<(const QAnyStringView & lhs, const QAnyStringView & rhs)
+ \fn bool QAnyStringView::operator>(const QAnyStringView & lhs, const QAnyStringView & rhs)
Operators that compare \a lhs to \a rhs.
@@ -395,3 +615,46 @@
\sa QString::isNull(), QAnyStringView
*/
+/*!
+ \fn QAnyStringView::operator<<(QDebug d, QAnyStringView s)
+ \since 6.7
+ \relates QDebug
+
+ Outputs \a s to debug stream \a d.
+
+ If \c{d.quotedString()} is \c true, indicates which encoding the string is
+ in. If you just want the string data, use visit() like this:
+
+ \code
+ s.visit([&d) (auto s) { d << s; });
+ \endcode
+
+ \sa QAnyStringView::visit()
+*/
+QDebug operator<<(QDebug d, QAnyStringView s)
+{
+ struct S { const char *prefix, *suffix; };
+ const auto affixes = s.visit([](auto s) {
+ using View = decltype(s);
+ if constexpr (std::is_same_v<View, QLatin1StringView>) {
+ return S{"", "_L1"};
+ } else if constexpr (std::is_same_v<View, QUtf8StringView>) {
+ return S{"u8", ""};
+ } else if constexpr (std::is_same_v<View, QStringView>) {
+ return S{"u", ""};
+ } else {
+ static_assert(QtPrivate::type_dependent_false<View>());
+ }
+ });
+ const QDebugStateSaver saver(d);
+ d.nospace();
+ if (d.quoteStrings())
+ d << affixes.prefix;
+ s.visit([&d](auto s) { d << s; });
+ if (d.quoteStrings())
+ d << affixes.suffix;
+ return d;
+}
+
+
+QT_END_NAMESPACE
diff --git a/src/corelib/text/qanystringview.h b/src/corelib/text/qanystringview.h
index 774651cb6a..01efd83743 100644
--- a/src/corelib/text/qanystringview.h
+++ b/src/corelib/text/qanystringview.h
@@ -1,56 +1,33 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2022 The Qt Company Ltd.
+// Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QANYSTRINGVIEW_H
#define QANYSTRINGVIEW_H
+#include <QtCore/qcompare.h>
+#include <QtCore/qlatin1stringview.h>
#include <QtCore/qstringview.h>
#include <QtCore/qutf8stringview.h>
#ifdef __cpp_impl_three_way_comparison
#include <compare>
#endif
+#include <QtCore/q20type_traits.h>
#include <limits>
+class tst_QAnyStringView;
+
QT_BEGIN_NAMESPACE
-template <typename, typename> class QStringBuilder;
-template <typename> struct QConcatenable;
+namespace QtPrivate {
+
+template <typename Tag, typename Result>
+struct wrapped { using type = Result; };
+
+template <typename Tag, typename Result>
+using wrapped_t = typename wrapped<Tag, Result>::type;
+
+} // namespace QtPrivate
class QAnyStringView
{
@@ -58,6 +35,32 @@ public:
typedef qptrdiff difference_type;
typedef qsizetype size_type;
private:
+ static constexpr size_t SizeMask = (std::numeric_limits<size_t>::max)() / 4;
+#if QT_VERSION >= QT_VERSION_CHECK(7, 0, 0) || defined(QT_BOOTSTRAPPED)
+ static constexpr int SizeShift = 2;
+ static constexpr size_t Latin1Flag = 1;
+#else
+ static constexpr int SizeShift = 0;
+ static constexpr size_t Latin1Flag = SizeMask + 1;
+#endif
+ static constexpr size_t TwoByteCodePointFlag = Latin1Flag << 1;
+ static constexpr size_t TypeMask = ~(SizeMask << SizeShift);
+ static_assert(TypeMask == (Latin1Flag|TwoByteCodePointFlag));
+
+ // Tag bits
+ // 0 0 Utf8
+ // 0 1 Latin1
+ // 1 0 Utf16
+ // 1 1 Unused
+ // ^ ^ latin1
+ // | sizeof code-point == 2
+ enum Tag : size_t {
+ Utf8 = 0,
+ Latin1 = Latin1Flag,
+ Utf16 = TwoByteCodePointFlag,
+ Unused = TypeMask,
+ };
+
template <typename Char>
using if_compatible_char = std::enable_if_t<std::disjunction_v<
QtPrivate::IsCompatibleCharType<Char>,
@@ -77,51 +80,66 @@ private:
QtPrivate::IsContainerCompatibleWithQUtf8StringView<T>
>, bool>;
+ template <typename QStringOrQByteArray, typename T>
+ using if_convertible_to = std::enable_if_t<std::conjunction_v<
+ // need to exclude a bunch of stuff, because we take by universal reference:
+ std::negation<std::disjunction<
+ std::is_same<q20::remove_cvref_t<T>, QAnyStringView::Tag>,
+ std::is_same<q20::remove_cvref_t<T>, QAnyStringView>, // don't make a copy/move ctor
+ std::is_pointer<std::decay_t<T>>, // const char*, etc
+ std::is_same<q20::remove_cvref_t<T>, QByteArray>,
+ std::is_same<q20::remove_cvref_t<T>, QString>
+ >>,
+ // this is what we're really after:
+ std::is_convertible<T, QStringOrQByteArray>
+ >, bool>;
+
// confirm we don't make an accidental copy constructor:
static_assert(QtPrivate::IsContainerCompatibleWithQStringView<QAnyStringView>::value == false);
static_assert(QtPrivate::IsContainerCompatibleWithQUtf8StringView<QAnyStringView>::value == false);
- template <typename Char>
- static constexpr std::size_t encodeType(qsizetype sz) noexcept
+ template<typename Char>
+ static constexpr bool isAsciiOnlyCharsAtCompileTime(Char *str, qsizetype sz) noexcept
+ {
+ // do not perform check if not at compile time
+ if (!q20::is_constant_evaluated())
+ return false;
+ if constexpr (sizeof(Char) != sizeof(char)) {
+ Q_UNUSED(str);
+ Q_UNUSED(sz);
+ return false;
+ } else {
+ for (qsizetype i = 0; i < sz; ++i) {
+ if (uchar(str[i]) > 0x7f)
+ return false;
+ }
+ return true;
+ }
+ }
+
+ template<typename Char>
+ static constexpr std::size_t encodeType(const Char *str, qsizetype sz) noexcept
{
- // only deals with Utf8 and Utf16 - there's only one way to create
- // a Latin1 string, and that ctor deals with the tag itself
+ // Utf16 if 16 bit, Latin1 if ASCII, else Utf8
Q_ASSERT(sz >= 0);
Q_ASSERT(sz <= qsizetype(SizeMask));
- return std::size_t(sz) | uint(sizeof(Char) == sizeof(char16_t)) * Tag::Utf16;
+ Q_ASSERT(str || !sz);
+ return (std::size_t(sz) << SizeShift)
+ | uint(sizeof(Char) == sizeof(char16_t)) * Tag::Utf16
+ | uint(isAsciiOnlyCharsAtCompileTime(str, sz)) * Tag::Latin1;
}
template <typename Char>
- static qsizetype lengthHelperPointer(const Char *str) noexcept
+ static constexpr qsizetype lengthHelperPointer(const Char *str) noexcept
{
-#if defined(Q_CC_GNU) && !defined(Q_CC_CLANG) && !defined(Q_CC_INTEL)
- if (__builtin_constant_p(*str)) {
- qsizetype result = 0;
- while (*str++ != u'\0')
- ++result;
- return result;
- }
-#endif
+ if (q20::is_constant_evaluated())
+ return qsizetype(std::char_traits<Char>::length(str));
if constexpr (sizeof(Char) == sizeof(char16_t))
return QtPrivate::qustrlen(reinterpret_cast<const char16_t*>(str));
else
return qsizetype(strlen(reinterpret_cast<const char*>(str)));
}
- template <typename Container>
- static constexpr qsizetype lengthHelperContainer(const Container &c) noexcept
- {
- return qsizetype(std::size(c));
- }
-
- template <typename Char, size_t N>
- static constexpr qsizetype lengthHelperContainer(const Char (&str)[N]) noexcept
- {
- const auto it = std::char_traits<Char>::find(str, N, Char(0));
- const auto end = it ? it : std::next(str, N);
- return qsizetype(std::distance(str, end));
- }
-
static QChar toQChar(char ch) noexcept { return toQChar(QLatin1Char{ch}); } // we don't handle UTF-8 multibytes
static QChar toQChar(QChar ch) noexcept { return ch; }
static QChar toQChar(QLatin1Char ch) noexcept { return ch; }
@@ -136,14 +154,15 @@ public:
template <typename Char, if_compatible_char<Char> = true>
constexpr QAnyStringView(const Char *str, qsizetype len)
- : m_data{str},
- m_size{encodeType<Char>((Q_ASSERT(len >= 0), Q_ASSERT(str || !len), len))} {}
+ : m_data{str}, m_size{encodeType<Char>(str, len)}
+ {
+ }
template <typename Char, if_compatible_char<Char> = true>
constexpr QAnyStringView(const Char *f, const Char *l)
: QAnyStringView(f, l - f) {}
-#ifdef Q_CLANG_QDOC
+#ifdef Q_QDOC
template <typename Char, size_t N>
constexpr QAnyStringView(const Char (&array)[N]) noexcept;
@@ -159,16 +178,21 @@ public:
// defined in qstring.h
inline QAnyStringView(const QByteArray &str) noexcept; // TODO: Should we have this at all? Remove?
inline QAnyStringView(const QString &str) noexcept;
- inline constexpr QAnyStringView(QLatin1String str) noexcept;
-
- // defined in qstringbuilder.h
- template <typename A, typename B>
- inline QAnyStringView(const QStringBuilder<A, B> &expr,
- typename QConcatenable<QStringBuilder<A, B>>::ConvertTo &&capacity = {});
+ inline constexpr QAnyStringView(QLatin1StringView str) noexcept;
template <typename Container, if_compatible_container<Container> = true>
- constexpr QAnyStringView(const Container &c) noexcept
- : QAnyStringView(std::data(c), lengthHelperContainer(c)) {}
+ constexpr Q_ALWAYS_INLINE QAnyStringView(const Container &c) noexcept
+ : QAnyStringView(std::data(c), QtPrivate::lengthHelperContainer(c)) {}
+
+ template <typename Container, if_convertible_to<QString, Container> = true>
+ constexpr QAnyStringView(Container &&c, QtPrivate::wrapped_t<Container, QString> &&capacity = {})
+ //noexcept(std::is_nothrow_constructible_v<QString, Container>)
+ : QAnyStringView(capacity = std::forward<Container>(c)) {}
+
+ template <typename Container, if_convertible_to<QByteArray, Container> = true>
+ constexpr QAnyStringView(Container &&c, QtPrivate::wrapped_t<Container, QByteArray> &&capacity = {})
+ //noexcept(std::is_nothrow_constructible_v<QByteArray, Container>)
+ : QAnyStringView(capacity = std::forward<Container>(c)) {}
template <typename Char, if_compatible_char<Char> = true>
constexpr QAnyStringView(const Char &c) noexcept
@@ -182,11 +206,11 @@ public:
: QAnyStringView(capacity = QChar::fromUcs4(c)) {}
constexpr QAnyStringView(QStringView v) noexcept
- : QAnyStringView(std::data(v), lengthHelperContainer(v)) {}
+ : QAnyStringView(std::data(v), QtPrivate::lengthHelperContainer(v)) {}
template <bool UseChar8T>
constexpr QAnyStringView(QBasicUtf8StringView<UseChar8T> v) noexcept
- : QAnyStringView(std::data(v), lengthHelperContainer(v)) {}
+ : QAnyStringView(std::data(v), QtPrivate::lengthHelperContainer(v)) {}
template <typename Char, size_t Size, if_compatible_char<Char> = true>
[[nodiscard]] constexpr static QAnyStringView fromArray(const Char (&string)[Size]) noexcept
@@ -196,14 +220,62 @@ public:
template <typename Visitor>
inline constexpr decltype(auto) visit(Visitor &&v) const;
+ [[nodiscard]]
+ constexpr QAnyStringView mid(qsizetype pos, qsizetype n = -1) const
+ {
+ using namespace QtPrivate;
+ auto result = QContainerImplHelper::mid(size(), &pos, &n);
+ return result == QContainerImplHelper::Null ? QAnyStringView() : sliced(pos, n);
+ }
+ [[nodiscard]]
+ constexpr QAnyStringView left(qsizetype n) const
+ {
+ if (size_t(n) >= size_t(size()))
+ n = size();
+ return sliced(0, n);
+ }
+ [[nodiscard]]
+ constexpr QAnyStringView right(qsizetype n) const
+ {
+ if (size_t(n) >= size_t(size()))
+ n = size();
+ return sliced(size() - n, n);
+ }
+
+ [[nodiscard]] constexpr QAnyStringView sliced(qsizetype pos) const
+ { verify(pos, 0); auto r = *this; r.advanceData(pos); r.setSize(size() - pos); return r; }
+ [[nodiscard]] constexpr QAnyStringView sliced(qsizetype pos, qsizetype n) const
+ { verify(pos, n); auto r = *this; r.advanceData(pos); r.setSize(n); return r; }
+ [[nodiscard]] constexpr QAnyStringView first(qsizetype n) const
+ { verify(0, n); return sliced(0, n); }
+ [[nodiscard]] constexpr QAnyStringView last(qsizetype n) const
+ { verify(0, n); return sliced(size() - n, n); }
+ [[nodiscard]] constexpr QAnyStringView chopped(qsizetype n) const
+ { verify(0, n); return sliced(0, size() - n); }
+
+ constexpr void truncate(qsizetype n)
+ { verify(0, n); setSize(n); }
+ constexpr void chop(qsizetype n)
+ { verify(0, n); setSize(size() - n); }
+
+
[[nodiscard]] inline QString toString() const; // defined in qstring.h
- [[nodiscard]] constexpr qsizetype size() const noexcept { return qsizetype(m_size & SizeMask); }
+ [[nodiscard]] constexpr qsizetype size() const noexcept
+ { return qsizetype((m_size >> SizeShift) & SizeMask); }
[[nodiscard]] constexpr const void *data() const noexcept { return m_data; }
[[nodiscard]] Q_CORE_EXPORT static int compare(QAnyStringView lhs, QAnyStringView rhs, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
[[nodiscard]] Q_CORE_EXPORT static bool equal(QAnyStringView lhs, QAnyStringView rhs) noexcept;
+ static constexpr inline bool detects_US_ASCII_at_compile_time =
+#ifdef QT_SUPPORTS_IS_CONSTANT_EVALUATED
+ true
+#else
+ false
+#endif
+ ;
+
//
// STL compatibility API:
//
@@ -222,47 +294,20 @@ public:
{ return size(); }
private:
- [[nodiscard]] friend inline bool operator==(QAnyStringView lhs, QAnyStringView rhs) noexcept
+ friend bool comparesEqual(const QAnyStringView &lhs, const QAnyStringView &rhs) noexcept
{ return QAnyStringView::equal(lhs, rhs); }
- [[nodiscard]] friend inline bool operator!=(QAnyStringView lhs, QAnyStringView rhs) noexcept
- { return !QAnyStringView::equal(lhs, rhs); }
+ friend Qt::strong_ordering
+ compareThreeWay(const QAnyStringView &lhs, const QAnyStringView &rhs) noexcept
+ {
+ const int res = QAnyStringView::compare(lhs, rhs);
+ return Qt::compareThreeWay(res, 0);
+ }
+ Q_DECLARE_STRONGLY_ORDERED(QAnyStringView)
-#if defined(__cpp_impl_three_way_comparison) && !defined(Q_QDOC)
- [[nodiscard]] friend inline auto operator<=>(QAnyStringView lhs, QAnyStringView rhs) noexcept
- { return QAnyStringView::compare(lhs, rhs) <=> 0; }
-#else
- [[nodiscard]] friend inline bool operator<=(QAnyStringView lhs, QAnyStringView rhs) noexcept
- { return QAnyStringView::compare(lhs, rhs) <= 0; }
- [[nodiscard]] friend inline bool operator>=(QAnyStringView lhs, QAnyStringView rhs) noexcept
- { return QAnyStringView::compare(lhs, rhs) >= 0; }
- [[nodiscard]] friend inline bool operator<(QAnyStringView lhs, QAnyStringView rhs) noexcept
- { return QAnyStringView::compare(lhs, rhs) < 0; }
- [[nodiscard]] friend inline bool operator>(QAnyStringView lhs, QAnyStringView rhs) noexcept
- { return QAnyStringView::compare(lhs, rhs) > 0; }
+#ifndef QT_NO_DEBUG_STREAM
+ Q_CORE_EXPORT friend QDebug operator<<(QDebug d, QAnyStringView s);
#endif
- // TODO: Optimize by inverting and storing the flags in the low bits and
- // the size in the high.
- static_assert(std::is_same_v<std::size_t, size_t>);
- static_assert(sizeof(size_t) == sizeof(qsizetype));
- static constexpr size_t SizeMask = (std::numeric_limits<size_t>::max)() / 4;
- static constexpr size_t Latin1Flag = SizeMask + 1;
- static constexpr size_t TwoByteCodePointFlag = Latin1Flag << 1;
- static constexpr size_t TypeMask = (std::numeric_limits<size_t>::max)() & ~SizeMask;
- static_assert(TypeMask == (Latin1Flag|TwoByteCodePointFlag));
- // HI HI LO LO ...
- // 0 0 SZ SZ Utf8
- // 0 1 SZ SZ Latin1
- // 1 0 SZ SZ Utf16
- // 1 1 SZ SZ Unused
- // ^ ^ latin1
- // | sizeof code-point == 2
- enum Tag : size_t {
- Utf8 = 0,
- Latin1 = Latin1Flag,
- Utf16 = TwoByteCodePointFlag,
- Unused = TypeMask,
- };
[[nodiscard]] constexpr Tag tag() const noexcept { return Tag{m_size & TypeMask}; }
[[nodiscard]] constexpr bool isUtf16() const noexcept { return tag() == Tag::Utf16; }
[[nodiscard]] constexpr bool isUtf8() const noexcept { return tag() == Tag::Utf8; }
@@ -271,9 +316,13 @@ private:
{ return Q_ASSERT(isUtf16()), QStringView{m_data_utf16, size()}; }
[[nodiscard]] constexpr q_no_char8_t::QUtf8StringView asUtf8StringView() const
{ return Q_ASSERT(isUtf8()), q_no_char8_t::QUtf8StringView{m_data_utf8, size()}; }
- [[nodiscard]] inline constexpr QLatin1String asLatin1StringView() const;
+ [[nodiscard]] inline constexpr QLatin1StringView asLatin1StringView() const;
[[nodiscard]] constexpr size_t charSize() const noexcept { return isUtf16() ? 2 : 1; }
- Q_ALWAYS_INLINE constexpr void verify(qsizetype pos, qsizetype n = 0) const
+ constexpr void setSize(qsizetype sz) noexcept { m_size = size_t(sz) | tag(); }
+ constexpr void advanceData(qsizetype delta) noexcept
+ { m_data_utf8 += delta * charSize(); }
+ Q_ALWAYS_INLINE constexpr void verify([[maybe_unused]] qsizetype pos = 0,
+ [[maybe_unused]] qsizetype n = 1) const
{
Q_ASSERT(pos >= 0);
Q_ASSERT(pos <= size());
@@ -286,6 +335,7 @@ private:
const char16_t *m_data_utf16;
};
size_t m_size;
+ friend class ::tst_QAnyStringView;
};
Q_DECLARE_TYPEINFO(QAnyStringView, Q_PRIMITIVE_TYPE);
@@ -294,7 +344,7 @@ template <typename QStringLike, std::enable_if_t<std::disjunction_v<
std::is_same<QStringLike, QByteArray>
>, bool> = true>
[[nodiscard]] inline QAnyStringView qToAnyStringViewIgnoringNull(const QStringLike &s) noexcept
-{ return QAnyStringView(s.data(), s.size()); }
+{ return QAnyStringView(s.begin(), s.size()); }
QT_END_NAMESPACE
diff --git a/src/corelib/text/qbytearray.cpp b/src/corelib/text/qbytearray.cpp
index 0329a26db8..e6387e4bed 100644
--- a/src/corelib/text/qbytearray.cpp
+++ b/src/corelib/text/qbytearray.cpp
@@ -1,43 +1,7 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Copyright (C) 2016 Intel Corporation.
-** Copyright (C) 2019 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2022 The Qt Company Ltd.
+// Copyright (C) 2016 Intel Corporation.
+// Copyright (C) 2019 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qbytearray.h"
#include "qbytearraymatcher.h"
@@ -50,25 +14,36 @@
#include "private/qsimd_p.h"
#include "qstringalgorithms_p.h"
#include "qscopedpointer.h"
-#include "qbytearray_p.h"
#include "qstringconverter_p.h"
#include <qdatastream.h>
#include <qmath.h>
+#if defined(Q_OS_WASM)
+#include "private/qstdweb_p.h"
+#endif
#ifndef QT_NO_COMPRESS
#include <zconf.h>
#include <zlib.h>
+#include <qxpfunctional.h>
#endif
#include <ctype.h>
#include <limits.h>
#include <string.h>
#include <stdlib.h>
-#define IS_RAW_DATA(d) ((d)->flags() & QArrayData::RawDataType)
+#include <algorithm>
+
+#ifdef Q_OS_WIN
+# if !defined(QT_BOOTSTRAPPED) && (defined(QT_NO_CAST_FROM_ASCII) || defined(QT_NO_CAST_FROM_BYTEARRAY))
+// MSVC requires this, but let's apply it to MinGW compilers too, just in case
+# error "This file cannot be compiled with QT_NO_CAST_{TO,FROM}_ASCII, " \
+ "otherwise some QByteArray functions will not get exported."
+# endif
+#endif
QT_BEGIN_NAMESPACE
-const char QByteArray::_empty = '\0';
+Q_CONSTINIT const char QByteArray::_empty = '\0';
// ASCII case system, used by QByteArray::to{Upper,Lower}() and qstr(n)icmp():
static constexpr inline uchar asciiUpper(uchar c)
@@ -144,31 +119,30 @@ char *qstrcpy(char *dst, const char *src)
A safe \c strncpy() function.
Copies at most \a len bytes from \a src (stopping at \a len or the
- terminating '\\0' whichever comes first) into \a dst and returns a
- pointer to \a dst. Guarantees that \a dst is '\\0'-terminated. If
- \a src or \a dst is \nullptr, returns \nullptr immediately.
+ terminating '\\0' whichever comes first) into \a dst. Guarantees that \a
+ dst is '\\0'-terminated, except when \a dst is \nullptr or \a len is 0. If
+ \a src is \nullptr, returns \nullptr, otherwise returns \a dst.
This function assumes that \a dst is at least \a len characters
long.
\note If \a dst and \a src overlap, the behavior is undefined.
+ \note Unlike strncpy(), this function does \e not write '\\0' to all \a
+ len bytes of \a dst, but stops after the terminating '\\0'. In this sense,
+ it's similar to C11's strncpy_s().
+
\sa qstrcpy()
*/
char *qstrncpy(char *dst, const char *src, size_t len)
{
- if (!src || !dst)
- return nullptr;
- if (len > 0) {
-#ifdef Q_CC_MSVC
- strncpy_s(dst, len, src, len - 1);
-#else
- strncpy(dst, src, len);
-#endif
- dst[len-1] = '\0';
+ if (dst && len > 0) {
+ *dst = '\0';
+ if (src)
+ std::strncat(dst, src, len - 1);
}
- return dst;
+ return src ? dst : nullptr;
}
/*! \fn size_t qstrlen(const char *str)
@@ -270,7 +244,7 @@ int qstricmp(const char *str1, const char *str2)
max += offset;
do {
uchar c = s1[offset];
- if (int res = asciiLower(c) - asciiLower(s2[offset]))
+ if (int res = QtMiscUtils::caseCompareAscii(c, s2[offset]))
return res;
if (!c)
return 0;
@@ -309,7 +283,7 @@ int qstricmp(const char *str1, const char *str2)
// yes, find out where
uint start = qCountTrailingZeroBits(mask);
uint end = sizeof(mask) * 8 - qCountLeadingZeroBits(mask);
- Q_ASSUME(end >= start);
+ Q_ASSERT(end >= start);
offset += start;
n = end - start;
break;
@@ -353,7 +327,7 @@ int qstrnicmp(const char *str1, const char *str2, size_t len)
return s1 ? 1 : (s2 ? -1 : 0);
for (; len--; ++s1, ++s2) {
const uchar c = *s1;
- if (int res = asciiLower(c) - asciiLower(*s2))
+ if (int res = QtMiscUtils::caseCompareAscii(c, *s2))
return res;
if (!c) // strings are equal
break;
@@ -394,7 +368,7 @@ int qstrnicmp(const char *str1, qsizetype len1, const char *str2, qsizetype len2
if (!c)
return 1;
- if (int res = asciiLower(s1[i]) - asciiLower(c))
+ if (int res = QtMiscUtils::caseCompareAscii(s1[i], c))
return res;
}
return s2[i] ? -1 : 0;
@@ -402,7 +376,7 @@ int qstrnicmp(const char *str1, qsizetype len1, const char *str2, qsizetype len2
// not null-terminated
const qsizetype len = qMin(len1, len2);
for (qsizetype i = 0; i < len; ++i) {
- if (int res = asciiLower(s1[i]) - asciiLower(s2[i]))
+ if (int res = QtMiscUtils::caseCompareAscii(s1[i], s2[i]))
return res;
}
if (len1 == len2)
@@ -542,7 +516,9 @@ quint16 qChecksum(QByteArrayView data, Qt::ChecksumType standard)
\sa qUncompress(const QByteArray &data)
*/
-/*! \relates QByteArray
+/*!
+ \fn QByteArray qCompress(const uchar* data, qsizetype nbytes, int compressionLevel)
+ \relates QByteArray
\overload
@@ -551,44 +527,196 @@ quint16 qChecksum(QByteArrayView data, Qt::ChecksumType standard)
*/
#ifndef QT_NO_COMPRESS
+using CompressSizeHint_t = quint32; // 32-bit BE, historically
+
+enum class ZLibOp : bool { Compression, Decompression };
+
+Q_DECL_COLD_FUNCTION
+static const char *zlibOpAsString(ZLibOp op)
+{
+ switch (op) {
+ case ZLibOp::Compression: return "qCompress";
+ case ZLibOp::Decompression: return "qUncompress";
+ }
+ Q_UNREACHABLE_RETURN(nullptr);
+}
+
+Q_DECL_COLD_FUNCTION
+static QByteArray zlibError(ZLibOp op, const char *what)
+{
+ qWarning("%s: %s", zlibOpAsString(op), what);
+ return QByteArray();
+}
+
+Q_DECL_COLD_FUNCTION
+static QByteArray dataIsNull(ZLibOp op)
+{
+ return zlibError(op, "Data is null");
+}
+
+Q_DECL_COLD_FUNCTION
+static QByteArray lengthIsNegative(ZLibOp op)
+{
+ return zlibError(op, "Input length is negative");
+}
+
+Q_DECL_COLD_FUNCTION
+static QByteArray tooMuchData(ZLibOp op)
+{
+ return zlibError(op, "Not enough memory");
+}
+
+Q_DECL_COLD_FUNCTION
+static QByteArray invalidCompressedData()
+{
+ return zlibError(ZLibOp::Decompression, "Input data is corrupted");
+}
+
+Q_DECL_COLD_FUNCTION
+static QByteArray unexpectedZlibError(ZLibOp op, int err, const char *msg)
+{
+ qWarning("%s unexpected zlib error: %s (%d)",
+ zlibOpAsString(op),
+ msg ? msg : "",
+ err);
+ return QByteArray();
+}
+
+static QByteArray xxflate(ZLibOp op, QArrayDataPointer<char> out, QByteArrayView input,
+ qxp::function_ref<int(z_stream *) const> init,
+ qxp::function_ref<int(z_stream *, size_t) const> processChunk,
+ qxp::function_ref<void(z_stream *) const> deinit)
+{
+ if (out.data() == nullptr) // allocation failed
+ return tooMuchData(op);
+ qsizetype capacity = out.allocatedCapacity();
+
+ const auto initalSize = out.size;
+
+ z_stream zs = {};
+ zs.next_in = reinterpret_cast<uchar *>(const_cast<char *>(input.data())); // 1980s C API...
+ if (const int err = init(&zs); err != Z_OK)
+ return unexpectedZlibError(op, err, zs.msg);
+ const auto sg = qScopeGuard([&] { deinit(&zs); });
+
+ using ZlibChunkSize_t = decltype(zs.avail_in);
+ static_assert(!std::is_signed_v<ZlibChunkSize_t>);
+ static_assert(std::is_same_v<ZlibChunkSize_t, decltype(zs.avail_out)>);
+ constexpr auto MaxChunkSize = std::numeric_limits<ZlibChunkSize_t>::max();
+ [[maybe_unused]]
+ constexpr auto MaxStatisticsSize = std::numeric_limits<decltype(zs.total_out)>::max();
+
+ size_t inputLeft = size_t(input.size());
+
+ int res;
+ do {
+ Q_ASSERT(out.freeSpaceAtBegin() == 0); // ensure prepend optimization stays out of the way
+ Q_ASSERT(capacity == out.allocatedCapacity());
+
+ if (zs.avail_out == 0) {
+ Q_ASSERT(size_t(out.size) - initalSize > MaxStatisticsSize || // total_out overflow
+ size_t(out.size) - initalSize == zs.total_out);
+ Q_ASSERT(out.size <= capacity);
+
+ qsizetype avail_out = capacity - out.size;
+ if (avail_out == 0) {
+ out->reallocateAndGrow(QArrayData::GrowsAtEnd, 1); // grow to next natural capacity
+ if (out.data() == nullptr) // reallocation failed
+ return tooMuchData(op);
+ capacity = out.allocatedCapacity();
+ avail_out = capacity - out.size;
+ }
+ zs.next_out = reinterpret_cast<uchar *>(out.data()) + out.size;
+ zs.avail_out = size_t(avail_out) > size_t(MaxChunkSize) ? MaxChunkSize
+ : ZlibChunkSize_t(avail_out);
+ out.size += zs.avail_out;
+
+ Q_ASSERT(zs.avail_out > 0);
+ }
+
+ if (zs.avail_in == 0) {
+ // zs.next_in is kept up-to-date by processChunk(), so nothing to do
+ zs.avail_in = inputLeft > MaxChunkSize ? MaxChunkSize : ZlibChunkSize_t(inputLeft);
+ inputLeft -= zs.avail_in;
+ }
+
+ res = processChunk(&zs, inputLeft);
+ } while (res == Z_OK);
+
+ switch (res) {
+ case Z_STREAM_END:
+ out.size -= zs.avail_out;
+ Q_ASSERT(size_t(out.size) - initalSize > MaxStatisticsSize || // total_out overflow
+ size_t(out.size) - initalSize == zs.total_out);
+ Q_ASSERT(out.size <= out.allocatedCapacity());
+ out.data()[out.size] = '\0';
+ return QByteArray(std::move(out));
+
+ case Z_MEM_ERROR:
+ return tooMuchData(op);
+
+ case Z_BUF_ERROR:
+ Q_UNREACHABLE(); // cannot happen - we supply a buffer that can hold the result,
+ // or else error out early
+
+ case Z_DATA_ERROR: // can only happen on decompression
+ Q_ASSERT(op == ZLibOp::Decompression);
+ return invalidCompressedData();
+
+ default:
+ return unexpectedZlibError(op, res, zs.msg);
+ }
+}
+
QByteArray qCompress(const uchar* data, qsizetype nbytes, int compressionLevel)
{
+ constexpr qsizetype HeaderSize = sizeof(CompressSizeHint_t);
if (nbytes == 0) {
- return QByteArray(4, '\0');
- }
- if (!data) {
- qWarning("qCompress: Data is null");
- return QByteArray();
+ return QByteArray(HeaderSize, '\0');
}
+ if (!data)
+ return dataIsNull(ZLibOp::Compression);
+
+ if (nbytes < 0)
+ return lengthIsNegative(ZLibOp::Compression);
+
if (compressionLevel < -1 || compressionLevel > 9)
compressionLevel = -1;
- ulong len = nbytes + nbytes / 100 + 13;
- QByteArray bazip;
- int res;
- do {
- bazip.resize(len + 4);
- res = ::compress2((uchar*)bazip.data()+4, &len, data, nbytes, compressionLevel);
-
- switch (res) {
- case Z_OK:
- bazip.resize(len + 4);
- bazip[0] = (nbytes & 0xff000000) >> 24;
- bazip[1] = (nbytes & 0x00ff0000) >> 16;
- bazip[2] = (nbytes & 0x0000ff00) >> 8;
- bazip[3] = (nbytes & 0x000000ff);
- break;
- case Z_MEM_ERROR:
- qWarning("qCompress: Z_MEM_ERROR: Not enough memory");
- bazip.resize(0);
- break;
- case Z_BUF_ERROR:
- len *= 2;
- break;
+ QArrayDataPointer out = [&] {
+ constexpr qsizetype SingleAllocLimit = 256 * 1024; // the maximum size for which we use
+ // zlib's compressBound() to guarantee
+ // the output buffer size is sufficient
+ // to hold result
+ qsizetype capacity = HeaderSize;
+ if (nbytes < SingleAllocLimit) {
+ // use maximum size
+ capacity += compressBound(uLong(nbytes)); // cannot overflow (both times)!
+ return QArrayDataPointer<char>(capacity);
}
- } while (res == Z_BUF_ERROR);
- return bazip;
+ // for larger buffers, assume it compresses optimally, and
+ // grow geometrically from there:
+ constexpr qsizetype MaxCompressionFactor = 1024; // max theoretical factor is 1032
+ // cf. http://www.zlib.org/zlib_tech.html,
+ // but use a nearby power-of-two (faster)
+ capacity += std::max(qsizetype(compressBound(uLong(SingleAllocLimit))),
+ nbytes / MaxCompressionFactor);
+ return QArrayDataPointer<char>(capacity, 0, QArrayData::Grow);
+ }();
+
+ if (out.data() == nullptr) // allocation failed
+ return tooMuchData(ZLibOp::Compression);
+
+ qToBigEndian(qt_saturate<CompressSizeHint_t>(nbytes), out.data());
+ out.size = HeaderSize;
+
+ return xxflate(ZLibOp::Compression, std::move(out), {data, nbytes},
+ [=] (z_stream *zs) { return deflateInit(zs, compressionLevel); },
+ [] (z_stream *zs, size_t inputLeft) {
+ return deflate(zs, inputLeft ? Z_NO_FLUSH : Z_FINISH);
+ },
+ [] (z_stream *zs) { deflateEnd(zs); });
}
#endif
@@ -610,18 +738,21 @@ QByteArray qCompress(const uchar* data, qsizetype nbytes, int compressionLevel)
data that was compressed using zlib, you first need to prepend a four
byte header to the byte array containing the data. The header must
contain the expected length (in bytes) of the uncompressed data,
- expressed as an unsigned, big-endian, 32-bit integer.
+ expressed as an unsigned, big-endian, 32-bit integer. This number is
+ just a hint for the initial size of the output buffer size,
+ though. If the indicated size is too small to hold the result, the
+ output buffer size will still be increased until either the output
+ fits or the system runs out of memory. So, despite the 32-bit
+ header, this function, on 64-bit platforms, can produce more than
+ 4GiB of output.
+
+ \note In Qt versions prior to Qt 6.5, more than 2GiB of data
+ worked unreliably; in Qt versions prior to Qt 6.0, not at all.
\sa qCompress()
*/
#ifndef QT_NO_COMPRESS
-static QByteArray invalidCompressedData()
-{
- qWarning("qUncompress: Input data is corrupted");
- return QByteArray();
-}
-
/*! \relates QByteArray
\overload
@@ -631,64 +762,39 @@ static QByteArray invalidCompressedData()
*/
QByteArray qUncompress(const uchar* data, qsizetype nbytes)
{
- if (!data) {
- qWarning("qUncompress: Data is null");
- return QByteArray();
- }
- if (nbytes <= 4) {
- if (nbytes < 4 || (data[0]!=0 || data[1]!=0 || data[2]!=0 || data[3]!=0))
- qWarning("qUncompress: Input data is corrupted");
- return QByteArray();
- }
- size_t expectedSize = size_t((data[0] << 24) | (data[1] << 16) |
- (data[2] << 8) | (data[3] ));
- size_t len = qMax(expectedSize, 1ul);
- const size_t maxPossibleSize = MaxAllocSize - sizeof(QByteArray::Data);
- if (Q_UNLIKELY(len >= maxPossibleSize)) {
- // QByteArray does not support that huge size anyway.
- return invalidCompressedData();
- }
+ if (!data)
+ return dataIsNull(ZLibOp::Decompression);
+
+ if (nbytes < 0)
+ return lengthIsNegative(ZLibOp::Decompression);
- QByteArray::DataPointer d(QByteArray::Data::allocate(len));
- if (Q_UNLIKELY(d.data() == nullptr))
+ constexpr qsizetype HeaderSize = sizeof(CompressSizeHint_t);
+ if (nbytes < HeaderSize)
return invalidCompressedData();
- forever {
- const auto alloc = len;
- int res = ::uncompress((uchar*)d.data(), reinterpret_cast<uLongf*>(&len),
- data+4, nbytes-4);
-
- switch (res) {
- case Z_OK: {
- Q_ASSERT(len <= alloc);
- Q_UNUSED(alloc);
- d.data()[len] = '\0';
- d.size = len;
- return QByteArray(d);
- }
+ const auto expectedSize = qFromBigEndian<CompressSizeHint_t>(data);
+ if (nbytes == HeaderSize) {
+ if (expectedSize != 0)
+ return invalidCompressedData();
+ return QByteArray();
+ }
- case Z_MEM_ERROR:
- qWarning("qUncompress: Z_MEM_ERROR: Not enough memory");
- return QByteArray();
+ constexpr auto MaxDecompressedSize = size_t(QByteArray::max_size());
+ if constexpr (MaxDecompressedSize < std::numeric_limits<CompressSizeHint_t>::max()) {
+ if (expectedSize > MaxDecompressedSize)
+ return tooMuchData(ZLibOp::Decompression);
+ }
- case Z_BUF_ERROR:
- len *= 2;
- if (Q_UNLIKELY(len >= maxPossibleSize)) {
- // QByteArray does not support that huge size anyway.
- return invalidCompressedData();
- } else {
- // grow the block
- d->reallocate(d->allocatedCapacity()*2, QArrayData::Grow);
- if (Q_UNLIKELY(d.data() == nullptr))
- return invalidCompressedData();
- }
- continue;
+ // expectedSize may be truncated, so always use at least nbytes
+ // (larger by at most 1%, according to zlib docs)
+ qsizetype capacity = std::max(qsizetype(expectedSize), // cannot overflow!
+ nbytes);
- case Z_DATA_ERROR:
- qWarning("qUncompress: Z_DATA_ERROR: Input data is corrupted");
- return QByteArray();
- }
- }
+ QArrayDataPointer<char> d(capacity);
+ return xxflate(ZLibOp::Decompression, std::move(d), {data + HeaderSize, nbytes - HeaderSize},
+ [] (z_stream *zs) { return inflateInit(zs); },
+ [] (z_stream *zs, size_t) { return inflate(zs, Z_NO_FLUSH); },
+ [] (z_stream *zs) { inflateEnd(zs); });
}
#endif
@@ -703,6 +809,14 @@ QByteArray qUncompress(const uchar* data, qsizetype nbytes)
\reentrant
+ \compares strong
+ \compareswith strong {const char *} QByteArrayView
+ \endcompareswith
+ \compareswith strong QChar char16_t QString QStringView QLatin1StringView \
+ QUtf8StringView
+ When comparing with string types, the content is interpreted as utf-8.
+ \endcompareswith
+
QByteArray can be used to store both raw bytes (including '\\0's)
and traditional 8-bit '\\0'-terminated strings. Using QByteArray
is much more convenient than using \c{const char *}. Behind the
@@ -927,8 +1041,8 @@ QByteArray qUncompress(const uchar* data, qsizetype nbytes)
comparison is limited to ASCII. Non-ASCII characters are treated as
caseless, since their case depends on encoding. This affects functions that
support a case insensitive option or that change the case of their
- arguments. Functions that this affects include contains(), indexOf(),
- lastIndexOf(), isLower(), isUpper(), toLower() and toUpper().
+ arguments. Functions that this affects include compare(), isLower(),
+ isUpper(), toLower() and toUpper().
This issue does not apply to \l{QString}s since they represent characters
using Unicode.
@@ -1172,6 +1286,22 @@ QByteArray::iterator QByteArray::erase(QByteArray::const_iterator first, QByteAr
return begin() + start;
}
+/*!
+ \fn QByteArray::iterator QByteArray::erase(QByteArray::const_iterator it)
+
+ \overload
+ \since 6.5
+
+ Removes the character denoted by \c it from the byte array.
+ Returns an iterator to the character immediately after the
+ erased character.
+
+ \code
+ QByteArray ba = "abcdefg";
+ auto it = ba.erase(ba.cbegin()); // ba is now "bcdefg" and it points to "b"
+ \endcode
+*/
+
/*! \fn QByteArray::QByteArray(const QByteArray &other)
Constructs a copy of \a other.
@@ -1219,6 +1349,9 @@ QByteArray &QByteArray::operator=(const QByteArray & other) noexcept
\overload
Assigns \a str to this byte array.
+
+ \a str is assumed to point to a null-terminated string, and its length is
+ determined dynamically.
*/
QByteArray &QByteArray::operator=(const char *str)
@@ -1228,14 +1361,7 @@ QByteArray &QByteArray::operator=(const char *str)
} else if (!*str) {
d = DataPointer::fromRawData(&_empty, 0);
} else {
- const qsizetype len = qsizetype(strlen(str));
- const auto capacityAtEnd = d->allocatedCapacity() - d.freeSpaceAtBegin();
- if (d->needsDetach() || len > capacityAtEnd
- || (len < size() && len < (capacityAtEnd >> 1)))
- // ### inefficient! reallocData() does copy the old data and we then overwrite it in the next line
- reallocData(len, QArrayData::KeepSize);
- memcpy(d.data(), str, len + 1); // include null terminator
- d.size = len;
+ assign(str);
}
return *this;
}
@@ -1273,6 +1399,15 @@ QByteArray &QByteArray::operator=(const char *str)
\sa isEmpty(), resize()
*/
+/*! \fn qsizetype QByteArray::max_size()
+ \since 6.8
+
+ This function is provided for STL compatibility.
+ It returns the maximum number of elements that the byte array can
+ theoretically hold. In practice, the number can be much smaller,
+ limited by the amount of memory available to the system.
+*/
+
/*! \fn bool QByteArray::isEmpty() const
Returns \c true if the byte array has size 0; otherwise returns \c false.
@@ -1686,7 +1821,7 @@ QByteArray::QByteArray(const char *data, qsizetype size)
if (!size) {
d = DataPointer::fromRawData(&_empty, 0);
} else {
- d = DataPointer(Data::allocate(size), size);
+ d = DataPointer(size, size);
Q_CHECK_PTR(d.data());
memcpy(d.data(), data, size);
d.data()[size] = '\0';
@@ -1705,7 +1840,7 @@ QByteArray::QByteArray(qsizetype size, char ch)
if (size <= 0) {
d = DataPointer::fromRawData(&_empty, 0);
} else {
- d = DataPointer(Data::allocate(size), size);
+ d = DataPointer(size, size);
Q_CHECK_PTR(d.data());
memset(d.data(), ch, size);
d.data()[size] = '\0';
@@ -1713,8 +1848,6 @@ QByteArray::QByteArray(qsizetype size, char ch)
}
/*!
- \internal
-
Constructs a byte array of size \a size with uninitialized contents.
*/
@@ -1723,7 +1856,7 @@ QByteArray::QByteArray(qsizetype size, Qt::Initialization)
if (size <= 0) {
d = DataPointer::fromRawData(&_empty, 0);
} else {
- d = DataPointer(Data::allocate(size), size);
+ d = DataPointer(size, size);
Q_CHECK_PTR(d.data());
d.data()[size] = '\0';
}
@@ -1758,6 +1891,46 @@ void QByteArray::resize(qsizetype size)
}
/*!
+ \since 6.4
+
+ Sets the size of the byte array to \a newSize bytes.
+
+ If \a newSize is greater than the current size, the byte array is
+ extended to make it \a newSize bytes with the extra bytes added to
+ the end. The new bytes are initialized to \a c.
+
+ If \a newSize is less than the current size, bytes beyond position
+ \a newSize are excluded from the byte array.
+
+ \note While resize() will grow the capacity if needed, it never shrinks
+ capacity. To shed excess capacity, use squeeze().
+
+ \sa size(), truncate(), squeeze()
+*/
+void QByteArray::resize(qsizetype newSize, char c)
+{
+ const auto old = d.size;
+ resize(newSize);
+ if (old < d.size)
+ memset(d.data() + old, c, d.size - old);
+}
+
+/*!
+ \since 6.8
+
+ Resizes the byte array to \a size bytes. If the size of the
+ byte array grows, the new bytes are uninitialized.
+
+ The behavior is identical to \c{resize(size)}.
+
+ \sa resize()
+*/
+void QByteArray::resizeForOverwrite(qsizetype size)
+{
+ resize(size);
+}
+
+/*!
Sets every byte in the byte array to \a ch. If \a size is different from -1
(the default), the byte array is resized to size \a size beforehand.
@@ -1787,7 +1960,7 @@ void QByteArray::reallocData(qsizetype alloc, QArrayData::AllocationOption optio
const bool cannotUseReallocate = d.freeSpaceAtBegin() > 0;
if (d->needsDetach() || cannotUseReallocate) {
- DataPointer dd(Data::allocate(alloc, option), qMin(alloc, d.size));
+ DataPointer dd(alloc, qMin(alloc, d.size), option);
Q_CHECK_PTR(dd.data());
if (dd.size > 0)
::memcpy(dd.data(), d.data(), dd.size);
@@ -1820,26 +1993,6 @@ void QByteArray::expand(qsizetype i)
}
/*!
- \internal
- Return a QByteArray that is sure to be '\\0'-terminated.
-
- By default, all QByteArray have an extra NUL at the end,
- guaranteeing that assumption. However, if QByteArray::fromRawData
- is used, then the NUL is there only if the user put it there. We
- can't be sure.
-*/
-QByteArray QByteArray::nulTerminated() const
-{
- // is this fromRawData?
- if (d.isMutable())
- return *this; // no, then we're sure we're zero terminated
-
- QByteArray copy(*this);
- copy.detach();
- return copy;
-}
-
-/*!
\fn QByteArray &QByteArray::prepend(QByteArrayView ba)
Prepends the byte array view \a ba to this byte array and returns a
@@ -1927,9 +2080,17 @@ QByteArray &QByteArray::prepend(const QByteArray &ba)
QByteArray &QByteArray::append(const QByteArray &ba)
{
- if (size() == 0 && ba.size() > d->freeSpaceAtEnd() && ba.d.isMutable())
- return (*this = ba);
- return append(QByteArrayView(ba));
+ if (!ba.isNull()) {
+ if (isNull()) {
+ if (Q_UNLIKELY(!ba.d.isMutable()))
+ assign(ba); // fromRawData, so we do a deep copy
+ else
+ operator=(ba);
+ } else if (ba.size()) {
+ append(QByteArrayView(ba));
+ }
+ }
+ return *this;
}
/*!
@@ -1988,6 +2149,73 @@ QByteArray& QByteArray::append(char ch)
}
/*!
+ \fn QByteArray &QByteArray::assign(QByteArrayView v)
+ \since 6.6
+
+ Replaces the contents of this byte array with a copy of \a v and returns a
+ reference to this byte array.
+
+ The size of this byte array will be equal to the size of \a v.
+
+ This function only allocates memory if the size of \a v exceeds the capacity
+ of this byte array or this byte array is shared.
+*/
+
+/*!
+ \fn QByteArray &QByteArray::assign(qsizetype n, char c)
+ \since 6.6
+
+ Replaces the contents of this byte array with \a n copies of \a c and
+ returns a reference to this byte array.
+
+ The size of this byte array will be equal to \a n, which has to be non-negative.
+
+ This function will only allocate memory if \a n exceeds the capacity of this
+ byte array or this byte array is shared.
+
+ \sa fill()
+*/
+
+/*!
+ \fn template <typename InputIterator, QByteArray::if_input_iterator<InputIterator>> QByteArray &QByteArray::assign(InputIterator first, InputIterator last)
+ \since 6.6
+
+ Replaces the contents of this byte array with a copy of the elements in the
+ iterator range [\a first, \a last) and returns a reference to this
+ byte array.
+
+ The size of this byte array will be equal to the number of elements in the
+ range [\a first, \a last).
+
+ This function will only allocate memory if the number of elements in the
+ range exceeds the capacity of this byte array or this byte array is shared.
+
+ \note This function overload only participates in overload resolution if
+ \c InputIterator meets the requirements of a
+ \l {https://en.cppreference.com/w/cpp/named_req/InputIterator} {LegacyInputIterator}.
+
+ \note The behavior is undefined if either argument is an iterator into *this or
+ [\a first, \a last) is not a valid range.
+*/
+
+QByteArray &QByteArray::assign(QByteArrayView v)
+{
+ const auto len = v.size();
+
+ if (len <= capacity() && isDetached()) {
+ const auto offset = d.freeSpaceAtBegin();
+ if (offset)
+ d.setBegin(d.begin() - offset);
+ std::memcpy(d.begin(), v.data(), len);
+ d.size = len;
+ d.data()[d.size] = '\0';
+ } else {
+ *this = v.toByteArray();
+ }
+ return *this;
+}
+
+/*!
Inserts \a data at index position \a i and returns a
reference to this byte array.
@@ -2029,7 +2257,7 @@ QByteArray &QByteArray::insert(qsizetype i, QByteArrayView data)
return *this;
}
- if (!d->needsDetach() && QtPrivate::q_points_into_range(str, d.data(), d.data() + d.size)) {
+ if (!d->needsDetach() && QtPrivate::q_points_into_range(str, d)) {
QVarLengthArray a(str, str + size);
return insert(i, a);
}
@@ -2134,15 +2362,56 @@ QByteArray &QByteArray::remove(qsizetype pos, qsizetype len)
{
if (len <= 0 || pos < 0 || size_t(pos) >= size_t(size()))
return *this;
- detach();
if (pos + len > d->size)
len = d->size - pos;
- d->erase(d.begin() + pos, len);
- d.data()[d.size] = '\0';
+
+ auto begin = d.begin();
+ if (!d->isShared()) {
+ d->erase(begin + pos, len);
+ d.data()[d.size] = '\0';
+ } else {
+ QByteArray copy{size() - len, Qt::Uninitialized};
+ const auto toRemove_start = d.begin() + pos;
+ copy.d->copyRanges({{d.begin(), toRemove_start},
+ {toRemove_start + len, d.end()}});
+ swap(copy);
+ }
return *this;
}
/*!
+ \fn QByteArray &QByteArray::removeAt(qsizetype pos)
+
+ \since 6.5
+
+ Removes the character at index \a pos. If \a pos is out of bounds
+ (i.e. \a pos >= size()) this function does nothing.
+
+ \sa remove()
+*/
+
+/*!
+ \fn QByteArray &QByteArray::removeFirst()
+
+ \since 6.5
+
+ Removes the first character in this byte array. If the byte array is empty,
+ this function does nothing.
+
+ \sa remove()
+*/
+/*!
+ \fn QByteArray &QByteArray::removeLast()
+
+ \since 6.5
+
+ Removes the last character in this byte array. If the byte array is empty,
+ this function does nothing.
+
+ \sa remove()
+*/
+
+/*!
\fn template <typename Predicate> QByteArray &QByteArray::removeIf(Predicate pred)
\since 6.1
@@ -2164,7 +2433,7 @@ QByteArray &QByteArray::remove(qsizetype pos, qsizetype len)
QByteArray &QByteArray::replace(qsizetype pos, qsizetype len, QByteArrayView after)
{
- if (QtPrivate::q_points_into_range(after.data(), d.data(), d.data() + d.size)) {
+ if (QtPrivate::q_points_into_range(after.data(), d)) {
QVarLengthArray copy(after.data(), after.data() + after.size());
return replace(pos, len, QByteArrayView{copy});
}
@@ -2224,11 +2493,11 @@ QByteArray &QByteArray::replace(QByteArrayView before, QByteArrayView after)
return *this;
// protect against before or after being part of this
- if (QtPrivate::q_points_into_range(a, d.data(), d.data() + d.size)) {
+ if (QtPrivate::q_points_into_range(a, d)) {
QVarLengthArray copy(a, a + asize);
return replace(before, QByteArrayView{copy});
}
- if (QtPrivate::q_points_into_range(b, d.data(), d.data() + d.size)) {
+ if (QtPrivate::q_points_into_range(b, d)) {
QVarLengthArray copy(b, b + bsize);
return replace(QByteArrayView{copy}, after);
}
@@ -2336,12 +2605,11 @@ QByteArray &QByteArray::replace(QByteArrayView before, QByteArrayView after)
QByteArray &QByteArray::replace(char before, char after)
{
- if (!isEmpty()) {
- char *i = data();
- char *e = i + size();
- for (; i != e; ++i)
- if (*i == before)
- * i = after;
+ if (before != after) {
+ if (const auto pos = indexOf(before); pos >= 0) {
+ const auto detachedData = data();
+ std::replace(detachedData + pos, detachedData + size(), before, after);
+ }
}
return *this;
}
@@ -2417,20 +2685,6 @@ QByteArray QByteArray::repeated(qsizetype times) const
hashHaystack -= std::size_t(a) << ol_minus_1; \
hashHaystack <<= 1
-static inline qsizetype findCharHelper(QByteArrayView haystack, qsizetype from, char needle) noexcept
-{
- if (from < 0)
- from = qMax(from + haystack.size(), qsizetype(0));
- if (from < haystack.size()) {
- const char *const b = haystack.data();
- if (const auto n = static_cast<const char *>(
- memchr(b + from, needle, static_cast<size_t>(haystack.size() - from)))) {
- return n - b;
- }
- }
- return -1;
-}
-
qsizetype QtPrivate::findByteArray(QByteArrayView haystack, qsizetype from, QByteArrayView needle) noexcept
{
const auto ol = needle.size();
@@ -2443,7 +2697,7 @@ qsizetype QtPrivate::findByteArray(QByteArrayView haystack, qsizetype from, QByt
}
if (ol == 1)
- return findCharHelper(haystack, from, needle.front());
+ return findByteArray(haystack, from, needle.front());
if (from > l || ol + from > l)
return -1;
@@ -2465,6 +2719,7 @@ qsizetype QtPrivate::findByteArray(QByteArrayView haystack, qsizetype from, QByt
*/
/*!
+ \fn qsizetype QByteArray::indexOf(char ch, qsizetype from) const
\overload
Returns the index position of the start of the first occurrence of the
@@ -2477,11 +2732,6 @@ qsizetype QtPrivate::findByteArray(QByteArrayView haystack, qsizetype from, QByt
\sa lastIndexOf(), contains()
*/
-qsizetype QByteArray::indexOf(char ch, qsizetype from) const
-{
- return qToByteArrayViewIgnoringNull(*this).indexOf(ch, from);
-}
-
static qsizetype lastIndexOfHelper(const char *haystack, qsizetype l, const char *needle,
qsizetype ol, qsizetype from)
{
@@ -2535,6 +2785,11 @@ static inline qsizetype lastIndexOfCharHelper(QByteArrayView haystack, qsizetype
return -1;
}
+qsizetype QtPrivate::lastIndexOf(QByteArrayView haystack, qsizetype from, char needle) noexcept
+{
+ return lastIndexOfCharHelper(haystack, from, needle);
+}
+
qsizetype QtPrivate::lastIndexOf(QByteArrayView haystack, qsizetype from, QByteArrayView needle) noexcept
{
if (haystack.isEmpty()) {
@@ -2554,9 +2809,11 @@ qsizetype QtPrivate::lastIndexOf(QByteArrayView haystack, qsizetype from, QByteA
Returns the index position of the start of the last occurrence of the
sequence of bytes viewed by \a bv in this byte array, searching backward
- from index position \a from. If \a from is -1, the search starts at
- the last character; if \a from is -2, at the next to last character
- and so on. Returns -1 if no match is found.
+ from index position \a from.
+
+ \include qstring.qdocinc negative-index-start-search-from-end
+
+ Returns -1 if no match is found.
Example:
\snippet code/src_corelib_text_qbytearray.cpp 23
@@ -2586,6 +2843,7 @@ qsizetype QtPrivate::lastIndexOf(QByteArrayView haystack, qsizetype from, QByteA
*/
/*!
+ \fn qsizetype QByteArray::lastIndexOf(char ch, qsizetype from) const
\overload
Returns the index position of the start of the last occurrence of byte \a ch
@@ -2599,11 +2857,6 @@ qsizetype QtPrivate::lastIndexOf(QByteArrayView haystack, qsizetype from, QByteA
\sa indexOf(), contains()
*/
-qsizetype QByteArray::lastIndexOf(char ch, qsizetype from) const
-{
- return qToByteArrayViewIgnoringNull(*this).lastIndexOf(ch, from);
-}
-
static inline qsizetype countCharHelper(QByteArrayView haystack, char needle) noexcept
{
qsizetype num = 0;
@@ -2654,15 +2907,17 @@ qsizetype QtPrivate::count(QByteArrayView haystack, QByteArrayView needle) noexc
qsizetype QByteArray::count(char ch) const
{
- return static_cast<int>(countCharHelper(*this, ch));
+ return countCharHelper(*this, ch);
}
+#if QT_DEPRECATED_SINCE(6, 4)
/*! \fn qsizetype QByteArray::count() const
-
+ \deprecated [6.4] Use size() or length() instead.
\overload
Same as size().
*/
+#endif
/*!
\fn int QByteArray::compare(QByteArrayView bv, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
@@ -2743,56 +2998,44 @@ static constexpr inline bool isUpperCaseAscii(char c)
return c >= 'A' && c <= 'Z';
}
+/*
+ Returns true if \a c is an lowercase ASCII letter.
+ */
+static constexpr inline bool isLowerCaseAscii(char c)
+{
+ return c >= 'a' && c <= 'z';
+}
+
/*!
- Returns \c true if this byte array contains only ASCII uppercase letters,
- otherwise returns \c false.
+ Returns \c true if this byte array is uppercase, that is, if
+ it's identical to its toUpper() folding.
+
+ Note that this does \e not mean that the byte array only contains
+ uppercase letters; only that it contains no ASCII lowercase letters.
+
\since 5.12
\sa isLower(), toUpper()
*/
bool QByteArray::isUpper() const
{
- if (isEmpty())
- return false;
-
- const char *d = data();
-
- for (qsizetype i = 0, max = size(); i < max; ++i) {
- if (!isUpperCaseAscii(d[i]))
- return false;
- }
-
- return true;
-}
-
-/*
- Returns true if \a c is an lowercase ASCII letter.
- */
-static constexpr inline bool isLowerCaseAscii(char c)
-{
- return c >= 'a' && c <= 'z';
+ return std::none_of(begin(), end(), isLowerCaseAscii);
}
/*!
- Returns \c true if this byte array contains only lowercase ASCII letters,
- otherwise returns \c false.
+ Returns \c true if this byte array is lowercase, that is, if
+ it's identical to its toLower() folding.
+
+ Note that this does \e not mean that the byte array only contains
+ lowercase letters; only that it contains no ASCII uppercase letters.
+
\since 5.12
\sa isUpper(), toLower()
*/
bool QByteArray::isLower() const
{
- if (isEmpty())
- return false;
-
- const char *d = data();
-
- for (qsizetype i = 0, max = size(); i < max; ++i) {
- if (!isLowerCaseAscii(d[i]))
- return false;
- }
-
- return true;
+ return std::none_of(begin(), end(), isUpperCaseAscii);
}
/*!
@@ -2805,6 +3048,9 @@ bool QByteArray::isLower() const
*/
/*!
+ \fn QByteArray QByteArray::left(qsizetype len) const &
+ \fn QByteArray QByteArray::left(qsizetype len) &&
+
Returns a byte array that contains the first \a len bytes of this byte
array.
@@ -2819,16 +3065,10 @@ bool QByteArray::isLower() const
\sa first(), last(), startsWith(), chopped(), chop(), truncate()
*/
-QByteArray QByteArray::left(qsizetype len) const
-{
- if (len >= size())
- return *this;
- if (len < 0)
- len = 0;
- return QByteArray(data(), len);
-}
-
/*!
+ \fn QByteArray QByteArray::right(qsizetype len) const &
+ \fn QByteArray QByteArray::right(qsizetype len) &&
+
Returns a byte array that contains the last \a len bytes of this byte array.
If you know that \a len cannot be out of bounds, use last() instead in new
@@ -2839,18 +3079,13 @@ QByteArray QByteArray::left(qsizetype len) const
Returns an empty QByteArray if \a len is smaller than 0.
- \sa endsWith(), last(), first(), sliced(), chopped(), chop(), truncate()
+ \sa endsWith(), last(), first(), sliced(), chopped(), chop(), truncate(), slice()
*/
-QByteArray QByteArray::right(qsizetype len) const
-{
- if (len >= size())
- return *this;
- if (len < 0)
- len = 0;
- return QByteArray(end() - len, len);
-}
/*!
+ \fn QByteArray QByteArray::mid(qsizetype pos, qsizetype len) const &
+ \fn QByteArray QByteArray::mid(qsizetype pos, qsizetype len) &&
+
Returns a byte array containing \a len bytes from this byte array,
starting at position \a pos.
@@ -2861,10 +3096,10 @@ QByteArray QByteArray::right(qsizetype len) const
returns a byte array containing all bytes starting at position \a
pos until the end of the byte array.
- \sa first(), last(), sliced(), chopped(), chop(), truncate()
+ \sa first(), last(), sliced(), chopped(), chop(), truncate(), slice()
*/
-QByteArray QByteArray::mid(qsizetype pos, qsizetype len) const
+QByteArray QByteArray::mid(qsizetype pos, qsizetype len) const &
{
qsizetype p = pos;
qsizetype l = len;
@@ -2879,14 +3114,33 @@ QByteArray QByteArray::mid(qsizetype pos, qsizetype len) const
case QContainerImplHelper::Full:
return *this;
case QContainerImplHelper::Subset:
- return QByteArray(d.data() + p, l);
+ return sliced(p, l);
}
- Q_UNREACHABLE();
- return QByteArray();
+ Q_UNREACHABLE_RETURN(QByteArray());
+}
+
+QByteArray QByteArray::mid(qsizetype pos, qsizetype len) &&
+{
+ qsizetype p = pos;
+ qsizetype l = len;
+ using namespace QtPrivate;
+ switch (QContainerImplHelper::mid(size(), &p, &l)) {
+ case QContainerImplHelper::Null:
+ return QByteArray();
+ case QContainerImplHelper::Empty:
+ resize(0); // keep capacity if we've reserve()d
+ [[fallthrough]];
+ case QContainerImplHelper::Full:
+ return std::move(*this);
+ case QContainerImplHelper::Subset:
+ return std::move(*this).sliced(p, l);
+ }
+ Q_UNREACHABLE_RETURN(QByteArray());
}
/*!
- \fn QByteArray QByteArray::first(qsizetype n) const
+ \fn QByteArray QByteArray::first(qsizetype n) const &
+ \fn QByteArray QByteArray::first(qsizetype n) &&
\since 6.0
Returns the first \a n bytes of the byte array.
@@ -2896,11 +3150,12 @@ QByteArray QByteArray::mid(qsizetype pos, qsizetype len) const
Example:
\snippet code/src_corelib_text_qbytearray.cpp 27
- \sa last(), sliced(), startsWith(), chopped(), chop(), truncate()
+ \sa last(), sliced(), startsWith(), chopped(), chop(), truncate(), slice()
*/
/*!
- \fn QByteArray QByteArray::last(qsizetype n) const
+ \fn QByteArray QByteArray::last(qsizetype n) const &
+ \fn QByteArray QByteArray::last(qsizetype n) &&
\since 6.0
Returns the last \a n bytes of the byte array.
@@ -2910,11 +3165,12 @@ QByteArray QByteArray::mid(qsizetype pos, qsizetype len) const
Example:
\snippet code/src_corelib_text_qbytearray.cpp 28
- \sa first(), sliced(), endsWith(), chopped(), chop(), truncate()
+ \sa first(), sliced(), endsWith(), chopped(), chop(), truncate(), slice()
*/
/*!
- \fn QByteArray QByteArray::sliced(qsizetype pos, qsizetype n) const
+ \fn QByteArray QByteArray::sliced(qsizetype pos, qsizetype n) const &
+ \fn QByteArray QByteArray::sliced(qsizetype pos, qsizetype n) &&
\since 6.0
Returns a byte array containing the \a n bytes of this object starting
@@ -2926,11 +3182,20 @@ QByteArray QByteArray::mid(qsizetype pos, qsizetype len) const
Example:
\snippet code/src_corelib_text_qbytearray.cpp 29
- \sa first(), last(), chopped(), chop(), truncate()
+ \sa first(), last(), chopped(), chop(), truncate(), slice()
*/
+QByteArray QByteArray::sliced_helper(QByteArray &a, qsizetype pos, qsizetype n)
+{
+ if (n == 0)
+ return fromRawData(&_empty, 0);
+ DataPointer d = std::move(a.d).sliced(pos, n);
+ d.data()[n] = 0;
+ return QByteArray(std::move(d));
+}
/*!
- \fn QByteArray QByteArray::sliced(qsizetype pos) const
+ \fn QByteArray QByteArray::sliced(qsizetype pos) const &
+ \fn QByteArray QByteArray::sliced(qsizetype pos) &&
\since 6.0
\overload
@@ -2939,11 +3204,41 @@ QByteArray QByteArray::mid(qsizetype pos, qsizetype len) const
\note The behavior is undefined when \a pos < 0 or \a pos > size().
- \sa first(), last(), sliced(), chopped(), chop(), truncate()
+ \sa first(), last(), chopped(), chop(), truncate(), slice()
*/
/*!
- \fn QByteArray QByteArray::chopped(qsizetype len) const
+ \fn QByteArray &QByteArray::slice(qsizetype pos, qsizetype n)
+ \since 6.8
+
+ Modifies this byte array to start at position \a pos, extending for \a n
+ bytes, and returns a reference to this byte array.
+
+ \note The behavior is undefined if \a pos < 0, \a n < 0,
+ or \a pos + \a n > size().
+
+ Example:
+ \snippet code/src_corelib_text_qbytearray.cpp 57
+
+ \sa sliced(), first(), last(), chopped(), chop(), truncate()
+*/
+
+/*!
+ \fn QByteArray &QByteArray::slice(qsizetype pos)
+ \since 6.8
+ \overload
+
+ Modifies this byte array to start at position \a pos, extending to its
+ end, and returns a reference to this byte array.
+
+ \note The behavior is undefined if \a pos < 0 or \a pos > size().
+
+ \sa sliced(), first(), last(), chopped(), chop(), truncate()
+*/
+
+/*!
+ \fn QByteArray QByteArray::chopped(qsizetype len) const &
+ \fn QByteArray QByteArray::chopped(qsizetype len) &&
\since 5.10
Returns a byte array that contains the leftmost size() - \a len bytes of
@@ -2951,7 +3246,7 @@ QByteArray QByteArray::mid(qsizetype pos, qsizetype len) const
\note The behavior is undefined if \a len is negative or greater than size().
- \sa endsWith(), first(), last(), sliced(), chop(), truncate()
+ \sa endsWith(), first(), last(), sliced(), chop(), truncate(), slice()
*/
/*!
@@ -3037,7 +3332,7 @@ void QByteArray::clear()
d.clear();
}
-#if !defined(QT_NO_DATASTREAM) || defined(QT_BOOTSTRAPPED)
+#if !defined(QT_NO_DATASTREAM)
/*! \relates QByteArray
@@ -3050,7 +3345,7 @@ void QByteArray::clear()
QDataStream &operator<<(QDataStream &out, const QByteArray &ba)
{
if (ba.isNull() && out.version() >= 6) {
- out << (quint32)0xffffffff;
+ QDataStream::writeQSizeType(out, -1);
return out;
}
return out.writeBytes(ba.constData(), ba.size());
@@ -3067,13 +3362,21 @@ QDataStream &operator<<(QDataStream &out, const QByteArray &ba)
QDataStream &operator>>(QDataStream &in, QByteArray &ba)
{
ba.clear();
- quint32 len;
- in >> len;
- if (len == 0xffffffff)
+
+ qint64 size = QDataStream::readQSizeType(in);
+ qsizetype len = size;
+ if (size != len || size < -1) {
+ ba.clear();
+ in.setStatus(QDataStream::SizeLimitExceeded);
return in;
+ }
+ if (len == -1) { // null byte-array
+ ba = QByteArray();
+ return in;
+ }
- const quint32 Step = 1024 * 1024;
- quint32 allocated = 0;
+ constexpr qsizetype Step = 1024 * 1024;
+ qsizetype allocated = 0;
do {
qsizetype blockSize = qMin(Step, len - allocated);
@@ -3090,253 +3393,169 @@ QDataStream &operator>>(QDataStream &in, QByteArray &ba)
}
#endif // QT_NO_DATASTREAM
-/*! \fn bool QByteArray::operator==(const QString &str) const
-
- Returns \c true if this byte array is equal to the UTF-8 encoding of \a str;
- otherwise returns \c false.
-
- The comparison is case sensitive.
-
- You can disable this operator by defining \c
- QT_NO_CAST_FROM_ASCII when you compile your applications. You
- then need to call QString::fromUtf8(), QString::fromLatin1(),
- or QString::fromLocal8Bit() explicitly if you want to convert the byte
- array to a QString before doing the comparison.
-*/
-
-/*! \fn bool QByteArray::operator!=(const QString &str) const
-
- Returns \c true if this byte array is not equal to the UTF-8 encoding of \a
- str; otherwise returns \c false.
-
- The comparison is case sensitive.
-
- You can disable this operator by defining \c
- QT_NO_CAST_FROM_ASCII when you compile your applications. You
- then need to call QString::fromUtf8(), QString::fromLatin1(),
- or QString::fromLocal8Bit() explicitly if you want to convert the byte
- array to a QString before doing the comparison.
-*/
-
-/*! \fn bool QByteArray::operator<(const QString &str) const
-
- Returns \c true if this byte array is lexically less than the UTF-8 encoding
- of \a str; otherwise returns \c false.
-
- The comparison is case sensitive.
-
- You can disable this operator by defining \c
- QT_NO_CAST_FROM_ASCII when you compile your applications. You
- then need to call QString::fromUtf8(), QString::fromLatin1(),
- or QString::fromLocal8Bit() explicitly if you want to convert the byte
- array to a QString before doing the comparison.
-*/
-
-/*! \fn bool QByteArray::operator>(const QString &str) const
-
- Returns \c true if this byte array is lexically greater than the UTF-8
- encoding of \a str; otherwise returns \c false.
-
- The comparison is case sensitive.
-
- You can disable this operator by defining \c
- QT_NO_CAST_FROM_ASCII when you compile your applications. You
- then need to call QString::fromUtf8(), QString::fromLatin1(),
- or QString::fromLocal8Bit() explicitly if you want to convert the byte
- array to a QString before doing the comparison.
-*/
-
-/*! \fn bool QByteArray::operator<=(const QString &str) const
-
- Returns \c true if this byte array is lexically less than or equal to the
- UTF-8 encoding of \a str; otherwise returns \c false.
-
- The comparison is case sensitive.
-
- You can disable this operator by defining \c
- QT_NO_CAST_FROM_ASCII when you compile your applications. You
- then need to call QString::fromUtf8(), QString::fromLatin1(),
- or QString::fromLocal8Bit() explicitly if you want to convert the byte
- array to a QString before doing the comparison.
-*/
-
-/*! \fn bool QByteArray::operator>=(const QString &str) const
-
- Returns \c true if this byte array is greater than or equal to the UTF-8
- encoding of \a str; otherwise returns \c false.
-
- The comparison is case sensitive.
-
- You can disable this operator by defining \c
- QT_NO_CAST_FROM_ASCII when you compile your applications. You
- then need to call QString::fromUtf8(), QString::fromLatin1(),
- or QString::fromLocal8Bit() explicitly if you want to convert the byte
- array to a QString before doing the comparison.
-*/
-
-/*! \fn bool QByteArray::operator==(const QByteArray &a1, const QByteArray &a2)
+/*! \fn bool QByteArray::operator==(const QByteArray &lhs, const QByteArray &rhs)
\overload
- Returns \c true if byte array \a a1 is equal to byte array \a a2;
+ Returns \c true if byte array \a lhs is equal to byte array \a rhs;
otherwise returns \c false.
\sa QByteArray::compare()
*/
-/*! \fn bool QByteArray::operator==(const QByteArray &a1, const char *a2)
+/*! \fn bool QByteArray::operator==(const QByteArray &lhs, const char * const &rhs)
\overload
- Returns \c true if byte array \a a1 is equal to the '\\0'-terminated string
- \a a2; otherwise returns \c false.
+ Returns \c true if byte array \a lhs is equal to the '\\0'-terminated string
+ \a rhs; otherwise returns \c false.
\sa QByteArray::compare()
*/
-/*! \fn bool QByteArray::operator==(const char *a1, const QByteArray &a2)
+/*! \fn bool QByteArray::operator==(const char * const &lhs, const QByteArray &rhs)
\overload
- Returns \c true if '\\0'-terminated string \a a1 is equal to byte array \a
- a2; otherwise returns \c false.
+ Returns \c true if '\\0'-terminated string \a lhs is equal to byte array \a
+ rhs; otherwise returns \c false.
\sa QByteArray::compare()
*/
-/*! \fn bool QByteArray::operator!=(const QByteArray &a1, const QByteArray &a2)
+/*! \fn bool QByteArray::operator!=(const QByteArray &lhs, const QByteArray &rhs)
\overload
- Returns \c true if byte array \a a1 is not equal to byte array \a a2;
+ Returns \c true if byte array \a lhs is not equal to byte array \a rhs;
otherwise returns \c false.
\sa QByteArray::compare()
*/
-/*! \fn bool QByteArray::operator!=(const QByteArray &a1, const char *a2)
+/*! \fn bool QByteArray::operator!=(const QByteArray &lhs, const char * const &rhs)
\overload
- Returns \c true if byte array \a a1 is not equal to the '\\0'-terminated
- string \a a2; otherwise returns \c false.
+ Returns \c true if byte array \a lhs is not equal to the '\\0'-terminated
+ string \a rhs; otherwise returns \c false.
\sa QByteArray::compare()
*/
-/*! \fn bool QByteArray::operator!=(const char *a1, const QByteArray &a2)
+/*! \fn bool QByteArray::operator!=(const char * const &lhs, const QByteArray &rhs)
\overload
- Returns \c true if '\\0'-terminated string \a a1 is not equal to byte array
- \a a2; otherwise returns \c false.
+ Returns \c true if '\\0'-terminated string \a lhs is not equal to byte array
+ \a rhs; otherwise returns \c false.
\sa QByteArray::compare()
*/
-/*! \fn bool QByteArray::operator<(const QByteArray &a1, const QByteArray &a2)
+/*! \fn bool QByteArray::operator<(const QByteArray &lhs, const QByteArray &rhs)
\overload
- Returns \c true if byte array \a a1 is lexically less than byte array
- \a a2; otherwise returns \c false.
+ Returns \c true if byte array \a lhs is lexically less than byte array
+ \a rhs; otherwise returns \c false.
\sa QByteArray::compare()
*/
-/*! \fn bool QByteArray::operator<(const QByteArray &a1, const char *a2)
+/*! \fn bool QByteArray::operator<(const QByteArray &lhs, const char * const &rhs)
\overload
- Returns \c true if byte array \a a1 is lexically less than the
- '\\0'-terminated string \a a2; otherwise returns \c false.
+ Returns \c true if byte array \a lhs is lexically less than the
+ '\\0'-terminated string \a rhs; otherwise returns \c false.
\sa QByteArray::compare()
*/
-/*! \fn bool QByteArray::operator<(const char *a1, const QByteArray &a2)
+/*! \fn bool QByteArray::operator<(const char * const &lhs, const QByteArray &rhs)
\overload
- Returns \c true if '\\0'-terminated string \a a1 is lexically less than byte
- array \a a2; otherwise returns \c false.
+ Returns \c true if '\\0'-terminated string \a lhs is lexically less than byte
+ array \a rhs; otherwise returns \c false.
\sa QByteArray::compare()
*/
-/*! \fn bool QByteArray::operator<=(const QByteArray &a1, const QByteArray &a2)
+/*! \fn bool QByteArray::operator<=(const QByteArray &lhs, const QByteArray &rhs)
\overload
- Returns \c true if byte array \a a1 is lexically less than or equal
- to byte array \a a2; otherwise returns \c false.
+ Returns \c true if byte array \a lhs is lexically less than or equal
+ to byte array \a rhs; otherwise returns \c false.
\sa QByteArray::compare()
*/
-/*! \fn bool QByteArray::operator<=(const QByteArray &a1, const char *a2)
+/*! \fn bool QByteArray::operator<=(const QByteArray &lhs, const char * const &rhs)
\overload
- Returns \c true if byte array \a a1 is lexically less than or equal to the
- '\\0'-terminated string \a a2; otherwise returns \c false.
+ Returns \c true if byte array \a lhs is lexically less than or equal to the
+ '\\0'-terminated string \a rhs; otherwise returns \c false.
\sa QByteArray::compare()
*/
-/*! \fn bool QByteArray::operator<=(const char *a1, const QByteArray &a2)
+/*! \fn bool QByteArray::operator<=(const char * const &lhs, const QByteArray &rhs)
\overload
- Returns \c true if '\\0'-terminated string \a a1 is lexically less than or
- equal to byte array \a a2; otherwise returns \c false.
+ Returns \c true if '\\0'-terminated string \a lhs is lexically less than or
+ equal to byte array \a rhs; otherwise returns \c false.
\sa QByteArray::compare()
*/
-/*! \fn bool QByteArray::operator>(const QByteArray &a1, const QByteArray &a2)
+/*! \fn bool QByteArray::operator>(const QByteArray &lhs, const QByteArray &rhs)
\overload
- Returns \c true if byte array \a a1 is lexically greater than byte
- array \a a2; otherwise returns \c false.
+ Returns \c true if byte array \a lhs is lexically greater than byte
+ array \a rhs; otherwise returns \c false.
\sa QByteArray::compare()
*/
-/*! \fn bool QByteArray::operator>(const QByteArray &a1, const char *a2)
+/*! \fn bool QByteArray::operator>(const QByteArray &lhs, const char * const &rhs)
\overload
- Returns \c true if byte array \a a1 is lexically greater than the
- '\\0'-terminated string \a a2; otherwise returns \c false.
+ Returns \c true if byte array \a lhs is lexically greater than the
+ '\\0'-terminated string \a rhs; otherwise returns \c false.
\sa QByteArray::compare()
*/
-/*! \fn bool QByteArray::operator>(const char *a1, const QByteArray &a2)
+/*! \fn bool QByteArray::operator>(const char * const &lhs, const QByteArray &rhs)
\overload
- Returns \c true if '\\0'-terminated string \a a1 is lexically greater than
- byte array \a a2; otherwise returns \c false.
+ Returns \c true if '\\0'-terminated string \a lhs is lexically greater than
+ byte array \a rhs; otherwise returns \c false.
\sa QByteArray::compare()
*/
-/*! \fn bool QByteArray::operator>=(const QByteArray &a1, const QByteArray &a2)
+/*! \fn bool QByteArray::operator>=(const QByteArray &lhs, const QByteArray &rhs)
\overload
- Returns \c true if byte array \a a1 is lexically greater than or
- equal to byte array \a a2; otherwise returns \c false.
+ Returns \c true if byte array \a lhs is lexically greater than or
+ equal to byte array \a rhs; otherwise returns \c false.
\sa QByteArray::compare()
*/
-/*! \fn bool QByteArray::operator>=(const QByteArray &a1, const char *a2)
+/*! \fn bool QByteArray::operator>=(const QByteArray &lhs, const char * const &rhs)
\overload
- Returns \c true if byte array \a a1 is lexically greater than or equal to
- the '\\0'-terminated string \a a2; otherwise returns \c false.
+ Returns \c true if byte array \a lhs is lexically greater than or equal to
+ the '\\0'-terminated string \a rhs; otherwise returns \c false.
\sa QByteArray::compare()
*/
-/*! \fn bool QByteArray::operator>=(const char *a1, const QByteArray &a2)
+/*! \fn bool QByteArray::operator>=(const char * const &lhs, const QByteArray &rhs)
\overload
- Returns \c true if '\\0'-terminated string \a a1 is lexically greater than
- or equal to byte array \a a2; otherwise returns \c false.
+ Returns \c true if '\\0'-terminated string \a lhs is lexically greater than
+ or equal to byte array \a rhs; otherwise returns \c false.
\sa QByteArray::compare()
*/
-/*! \fn const QByteArray operator+(const QByteArray &a1, const QByteArray &a2)
+/*! \fn QByteArray operator+(const QByteArray &a1, const QByteArray &a2)
\relates QByteArray
Returns a byte array that is the result of concatenating byte
@@ -3345,7 +3564,7 @@ QDataStream &operator>>(QDataStream &in, QByteArray &ba)
\sa QByteArray::operator+=()
*/
-/*! \fn const QByteArray operator+(const QByteArray &a1, const char *a2)
+/*! \fn QByteArray operator+(const QByteArray &a1, const char *a2)
\relates QByteArray
\overload
@@ -3354,7 +3573,7 @@ QDataStream &operator>>(QDataStream &in, QByteArray &ba)
and '\\0'-terminated string \a a2.
*/
-/*! \fn const QByteArray operator+(const QByteArray &a1, char a2)
+/*! \fn QByteArray operator+(const QByteArray &a1, char a2)
\relates QByteArray
\overload
@@ -3363,7 +3582,7 @@ QDataStream &operator>>(QDataStream &in, QByteArray &ba)
array \a a1 and byte \a a2.
*/
-/*! \fn const QByteArray operator+(const char *a1, const QByteArray &a2)
+/*! \fn QByteArray operator+(const char *a1, const QByteArray &a2)
\relates QByteArray
\overload
@@ -3372,7 +3591,7 @@ QDataStream &operator>>(QDataStream &in, QByteArray &ba)
string \a a1 and byte array \a a2.
*/
-/*! \fn const QByteArray operator+(char a1, const QByteArray &a2)
+/*! \fn QByteArray operator+(char a1, const QByteArray &a2)
\relates QByteArray
\overload
@@ -3439,9 +3658,7 @@ QByteArray QByteArray::trimmed_helper(QByteArray &a)
QByteArrayView QtPrivate::trimmed(QByteArrayView view) noexcept
{
- auto start = view.begin();
- auto stop = view.end();
- QStringAlgorithms<QByteArrayView>::trimmed_helper_positions(start, stop);
+ const auto [start, stop] = QStringAlgorithms<QByteArrayView>::trimmed_helper_positions(view);
return QByteArrayView(start, stop);
}
@@ -3519,46 +3736,38 @@ QByteArray QByteArray::rightJustified(qsizetype width, char fill, bool truncate)
return result;
}
-bool QByteArray::isNull() const noexcept
-{
- return d->isNull();
-}
-
-static qlonglong toIntegral_helper(QByteArrayView data, bool *ok, int base, qlonglong)
+auto QtPrivate::toSignedInteger(QByteArrayView data, int base) -> ParsedNumber<qlonglong>
{
- return QLocaleData::bytearrayToLongLong(data, base, ok);
-}
+#if defined(QT_CHECK_RANGE)
+ if (base != 0 && (base < 2 || base > 36)) {
+ qWarning("QByteArray::toIntegral: Invalid base %d", base);
+ base = 10;
+ }
+#endif
+ if (data.isEmpty())
+ return {};
-static qulonglong toIntegral_helper(QByteArrayView data, bool *ok, int base, qulonglong)
-{
- return QLocaleData::bytearrayToUnsLongLong(data, base, ok);
+ const QSimpleParsedNumber r = QLocaleData::bytearrayToLongLong(data, base);
+ if (r.ok())
+ return ParsedNumber(r.result);
+ return {};
}
-template <typename T> static inline
-T toIntegral_helper(QByteArrayView data, bool *ok, int base)
+auto QtPrivate::toUnsignedInteger(QByteArrayView data, int base) -> ParsedNumber<qulonglong>
{
- using Int64 = typename std::conditional<std::is_unsigned<T>::value, qulonglong, qlonglong>::type;
-
#if defined(QT_CHECK_RANGE)
if (base != 0 && (base < 2 || base > 36)) {
qWarning("QByteArray::toIntegral: Invalid base %d", base);
base = 10;
}
#endif
- if (data.isEmpty()) {
- if (ok)
- *ok = false;
- return 0;
- }
+ if (data.isEmpty())
+ return {};
- // we select the right overload by the last, unused parameter
- Int64 val = toIntegral_helper(data, ok, base, Int64());
- if (T(val) != val) {
- if (ok)
- *ok = false;
- val = 0;
- }
- return T(val);
+ const QSimpleParsedNumber r = QLocaleData::bytearrayToUnsLongLong(data, base);
+ if (r.ok())
+ return ParsedNumber(r.result);
+ return {};
}
/*!
@@ -3568,8 +3777,9 @@ T toIntegral_helper(QByteArrayView data, bool *ok, int base)
If \a base is 0, the base is determined automatically using the following
rules: If the byte array begins with "0x", it is assumed to be hexadecimal
- (base 16); otherwise, if it begins with "0", it is assumed to be octal (base
- 8); otherwise it is assumed to be decimal.
+ (base 16); otherwise, if it begins with "0b", it is assumed to be binary
+ (base 2); otherwise, if it begins with "0", it is assumed to be octal
+ (base 8); otherwise it is assumed to be decimal.
Returns 0 if the conversion fails.
@@ -3580,17 +3790,14 @@ T toIntegral_helper(QByteArrayView data, bool *ok, int base)
regardless of the user's locale. Use QLocale to perform locale-aware
conversions between numbers and strings.
+ \note Support for the "0b" prefix was added in Qt 6.4.
+
\sa number()
*/
qlonglong QByteArray::toLongLong(bool *ok, int base) const
{
- return toIntegral_helper<qlonglong>(*this, ok, base);
-}
-
-qlonglong QByteArrayView::toLongLong(bool *ok, int base) const
-{
- return toIntegral_helper<qlonglong>(*this, ok, base);
+ return QtPrivate::toIntegral<qlonglong>(qToByteArrayViewIgnoringNull(*this), ok, base);
}
/*!
@@ -3600,8 +3807,9 @@ qlonglong QByteArrayView::toLongLong(bool *ok, int base) const
If \a base is 0, the base is determined automatically using the following
rules: If the byte array begins with "0x", it is assumed to be hexadecimal
- (base 16); otherwise, if it begins with "0", it is assumed to be octal (base
- 8); otherwise it is assumed to be decimal.
+ (base 16); otherwise, if it begins with "0b", it is assumed to be binary
+ (base 2); otherwise, if it begins with "0", it is assumed to be octal
+ (base 8); otherwise it is assumed to be decimal.
Returns 0 if the conversion fails.
@@ -3612,17 +3820,14 @@ qlonglong QByteArrayView::toLongLong(bool *ok, int base) const
regardless of the user's locale. Use QLocale to perform locale-aware
conversions between numbers and strings.
+ \note Support for the "0b" prefix was added in Qt 6.4.
+
\sa number()
*/
qulonglong QByteArray::toULongLong(bool *ok, int base) const
{
- return toIntegral_helper<qulonglong>(*this, ok, base);
-}
-
-qulonglong QByteArrayView::toULongLong(bool *ok, int base) const
-{
- return toIntegral_helper<qulonglong>(*this, ok, base);
+ return QtPrivate::toIntegral<qulonglong>(qToByteArrayViewIgnoringNull(*this), ok, base);
}
/*!
@@ -3632,8 +3837,9 @@ qulonglong QByteArrayView::toULongLong(bool *ok, int base) const
If \a base is 0, the base is determined automatically using the following
rules: If the byte array begins with "0x", it is assumed to be hexadecimal
- (base 16); otherwise, if it begins with "0", it is assumed to be octal (base
- 8); otherwise it is assumed to be decimal.
+ (base 16); otherwise, if it begins with "0b", it is assumed to be binary
+ (base 2); otherwise, if it begins with "0", it is assumed to be octal
+ (base 8); otherwise it is assumed to be decimal.
Returns 0 if the conversion fails.
@@ -3646,17 +3852,14 @@ qulonglong QByteArrayView::toULongLong(bool *ok, int base) const
regardless of the user's locale. Use QLocale to perform locale-aware
conversions between numbers and strings.
+ \note Support for the "0b" prefix was added in Qt 6.4.
+
\sa number()
*/
int QByteArray::toInt(bool *ok, int base) const
{
- return toIntegral_helper<int>(*this, ok, base);
-}
-
-int QByteArrayView::toInt(bool *ok, int base) const
-{
- return toIntegral_helper<int>(*this, ok, base);
+ return QtPrivate::toIntegral<int>(qToByteArrayViewIgnoringNull(*this), ok, base);
}
/*!
@@ -3666,8 +3869,9 @@ int QByteArrayView::toInt(bool *ok, int base) const
If \a base is 0, the base is determined automatically using the following
rules: If the byte array begins with "0x", it is assumed to be hexadecimal
- (base 16); otherwise, if it begins with "0", it is assumed to be octal (base
- 8); otherwise it is assumed to be decimal.
+ (base 16); otherwise, if it begins with "0b", it is assumed to be binary
+ (base 2); otherwise, if it begins with "0", it is assumed to be octal
+ (base 8); otherwise it is assumed to be decimal.
Returns 0 if the conversion fails.
@@ -3678,17 +3882,14 @@ int QByteArrayView::toInt(bool *ok, int base) const
regardless of the user's locale. Use QLocale to perform locale-aware
conversions between numbers and strings.
+ \note Support for the "0b" prefix was added in Qt 6.4.
+
\sa number()
*/
uint QByteArray::toUInt(bool *ok, int base) const
{
- return toIntegral_helper<uint>(*this, ok, base);
-}
-
-uint QByteArrayView::toUInt(bool *ok, int base) const
-{
- return toIntegral_helper<uint>(*this, ok, base);
+ return QtPrivate::toIntegral<uint>(qToByteArrayViewIgnoringNull(*this), ok, base);
}
/*!
@@ -3700,8 +3901,9 @@ uint QByteArrayView::toUInt(bool *ok, int base) const
If \a base is 0, the base is determined automatically using the following
rules: If the byte array begins with "0x", it is assumed to be hexadecimal
- (base 16); otherwise, if it begins with "0", it is assumed to be octal (base
- 8); otherwise it is assumed to be decimal.
+ (base 16); otherwise, if it begins with "0b", it is assumed to be binary
+ (base 2); otherwise, if it begins with "0", it is assumed to be octal
+ (base 8); otherwise it is assumed to be decimal.
Returns 0 if the conversion fails.
@@ -3714,16 +3916,13 @@ uint QByteArrayView::toUInt(bool *ok, int base) const
regardless of the user's locale. Use QLocale to perform locale-aware
conversions between numbers and strings.
+ \note Support for the "0b" prefix was added in Qt 6.4.
+
\sa number()
*/
long QByteArray::toLong(bool *ok, int base) const
{
- return toIntegral_helper<long>(*this, ok, base);
-}
-
-long QByteArrayView::toLong(bool *ok, int base) const
-{
- return toIntegral_helper<long>(*this, ok, base);
+ return QtPrivate::toIntegral<long>(qToByteArrayViewIgnoringNull(*this), ok, base);
}
/*!
@@ -3735,8 +3934,9 @@ long QByteArrayView::toLong(bool *ok, int base) const
If \a base is 0, the base is determined automatically using the following
rules: If the byte array begins with "0x", it is assumed to be hexadecimal
- (base 16); otherwise, if it begins with "0", it is assumed to be octal (base
- 8); otherwise it is assumed to be decimal.
+ (base 16); otherwise, if it begins with "0b", it is assumed to be binary
+ (base 2); otherwise, if it begins with "0", it is assumed to be octal
+ (base 8); otherwise it is assumed to be decimal.
Returns 0 if the conversion fails.
@@ -3747,16 +3947,13 @@ long QByteArrayView::toLong(bool *ok, int base) const
regardless of the user's locale. Use QLocale to perform locale-aware
conversions between numbers and strings.
+ \note Support for the "0b" prefix was added in Qt 6.4.
+
\sa number()
*/
ulong QByteArray::toULong(bool *ok, int base) const
{
- return toIntegral_helper<ulong>(*this, ok, base);
-}
-
-ulong QByteArrayView::toULong(bool *ok, int base) const
-{
- return toIntegral_helper<ulong>(*this, ok, base);
+ return QtPrivate::toIntegral<ulong>(qToByteArrayViewIgnoringNull(*this), ok, base);
}
/*!
@@ -3765,9 +3962,10 @@ ulong QByteArrayView::toULong(bool *ok, int base) const
digits beyond 9; A is ten, B is eleven and so on.
If \a base is 0, the base is determined automatically using the following
- rules: If the byte array begins with "0x", it is assumed to be hexadecimal;
- otherwise, if it begins with "0", it is assumed to be octal; otherwise it is
- assumed to be decimal.
+ rules: If the byte array begins with "0x", it is assumed to be hexadecimal
+ (base 16); otherwise, if it begins with "0b", it is assumed to be binary
+ (base 2); otherwise, if it begins with "0", it is assumed to be octal
+ (base 8); otherwise it is assumed to be decimal.
Returns 0 if the conversion fails.
@@ -3778,17 +3976,14 @@ ulong QByteArrayView::toULong(bool *ok, int base) const
regardless of the user's locale. Use QLocale to perform locale-aware
conversions between numbers and strings.
+ \note Support for the "0b" prefix was added in Qt 6.4.
+
\sa number()
*/
short QByteArray::toShort(bool *ok, int base) const
{
- return toIntegral_helper<short>(*this, ok, base);
-}
-
-short QByteArrayView::toShort(bool *ok, int base) const
-{
- return toIntegral_helper<short>(*this, ok, base);
+ return QtPrivate::toIntegral<short>(qToByteArrayViewIgnoringNull(*this), ok, base);
}
/*!
@@ -3797,9 +3992,10 @@ short QByteArrayView::toShort(bool *ok, int base) const
letters for digits beyond 9; A is ten, B is eleven and so on.
If \a base is 0, the base is determined automatically using the following
- rules: If the byte array begins with "0x", it is assumed to be hexadecimal;
- otherwise, if it begins with "0", it is assumed to be octal; otherwise it is
- assumed to be decimal.
+ rules: If the byte array begins with "0x", it is assumed to be hexadecimal
+ (base 16); otherwise, if it begins with "0b", it is assumed to be binary
+ (base 2); otherwise, if it begins with "0", it is assumed to be octal
+ (base 8); otherwise it is assumed to be decimal.
Returns 0 if the conversion fails.
@@ -3810,17 +4006,14 @@ short QByteArrayView::toShort(bool *ok, int base) const
regardless of the user's locale. Use QLocale to perform locale-aware
conversions between numbers and strings.
+ \note Support for the "0b" prefix was added in Qt 6.4.
+
\sa number()
*/
ushort QByteArray::toUShort(bool *ok, int base) const
{
- return toIntegral_helper<ushort>(*this, ok, base);
-}
-
-ushort QByteArrayView::toUShort(bool *ok, int base) const
-{
- return toIntegral_helper<ushort>(*this, ok, base);
+ return QtPrivate::toIntegral<ushort>(qToByteArrayViewIgnoringNull(*this), ok, base);
}
/*!
@@ -3853,14 +4046,13 @@ double QByteArray::toDouble(bool *ok) const
return QByteArrayView(*this).toDouble(ok);
}
-double QByteArrayView::toDouble(bool *ok) const
+auto QtPrivate::toDouble(QByteArrayView a) noexcept -> ParsedNumber<double>
{
- bool nonNullOk = false;
- int processed = 0;
- double d = qt_asciiToDouble(data(), size(), nonNullOk, processed, WhitespacesAllowed);
- if (ok)
- *ok = nonNullOk;
- return d;
+ auto r = qt_asciiToDouble(a.data(), a.size(), WhitespacesAllowed);
+ if (r.ok())
+ return ParsedNumber{r.result};
+ else
+ return {};
}
/*!
@@ -3893,9 +4085,15 @@ float QByteArray::toFloat(bool *ok) const
return QLocaleData::convertDoubleToFloat(toDouble(ok), ok);
}
-float QByteArrayView::toFloat(bool *ok) const
+auto QtPrivate::toFloat(QByteArrayView a) noexcept -> ParsedNumber<float>
{
- return QLocaleData::convertDoubleToFloat(toDouble(ok), ok);
+ if (const auto r = toDouble(a)) {
+ bool ok = true;
+ const auto f = QLocaleData::convertDoubleToFloat(*r, &ok);
+ if (ok)
+ return ParsedNumber(f);
+ }
+ return {};
}
/*!
@@ -3911,27 +4109,29 @@ float QByteArrayView::toFloat(bool *ok) const
*/
QByteArray QByteArray::toBase64(Base64Options options) const
{
- const char alphabet_base64[] = "ABCDEFGH" "IJKLMNOP" "QRSTUVWX" "YZabcdef"
- "ghijklmn" "opqrstuv" "wxyz0123" "456789+/";
- const char alphabet_base64url[] = "ABCDEFGH" "IJKLMNOP" "QRSTUVWX" "YZabcdef"
- "ghijklmn" "opqrstuv" "wxyz0123" "456789-_";
+ constexpr char alphabet_base64[] = "ABCDEFGH" "IJKLMNOP" "QRSTUVWX" "YZabcdef"
+ "ghijklmn" "opqrstuv" "wxyz0123" "456789+/";
+ constexpr char alphabet_base64url[] = "ABCDEFGH" "IJKLMNOP" "QRSTUVWX" "YZabcdef"
+ "ghijklmn" "opqrstuv" "wxyz0123" "456789-_";
const char *const alphabet = options & Base64UrlEncoding ? alphabet_base64url : alphabet_base64;
- const char padchar = '=';
+ constexpr char padchar = '=';
qsizetype padlen = 0;
- QByteArray tmp((size() + 2) / 3 * 4, Qt::Uninitialized);
+ const qsizetype sz = size();
+
+ QByteArray tmp((sz + 2) / 3 * 4, Qt::Uninitialized);
qsizetype i = 0;
char *out = tmp.data();
- while (i < size()) {
+ while (i < sz) {
// encode 3 bytes at a time
int chunk = 0;
chunk |= int(uchar(data()[i++])) << 16;
- if (i == size()) {
+ if (i == sz) {
padlen = 2;
} else {
chunk |= int(uchar(data()[i++])) << 8;
- if (i == size())
+ if (i == sz)
padlen = 1;
else
chunk |= int(uchar(data()[i++]));
@@ -4026,7 +4226,7 @@ static char *qulltoa2(char *p, qulonglong n, int base)
base = 10;
}
#endif
- const char b = 'a' - 10;
+ constexpr char b = 'a' - 10;
do {
const int c = n % base;
n /= base;
@@ -4043,7 +4243,7 @@ static char *qulltoa2(char *p, qulonglong n, int base)
*/
QByteArray &QByteArray::setNum(qlonglong n, int base)
{
- const int buffsize = 66; // big enough for MAX_ULLONG in base 2
+ constexpr int buffsize = 66; // big enough for MAX_ULLONG in base 2
char buff[buffsize];
char *p;
@@ -4068,7 +4268,7 @@ QByteArray &QByteArray::setNum(qlonglong n, int base)
QByteArray &QByteArray::setNum(qulonglong n, int base)
{
- const int buffsize = 66; // big enough for MAX_ULLONG in base 2
+ constexpr int buffsize = 66; // big enough for MAX_ULLONG in base 2
char buff[buffsize];
char *p = qulltoa2(buff + buffsize, n, base);
@@ -4206,7 +4406,7 @@ QByteArray QByteArray::number(double n, char format, int precision)
{
QLocaleData::DoubleForm form = QLocaleData::DFDecimal;
- switch (asciiLower(format)) {
+ switch (QtMiscUtils::toAsciiLower(format)) {
case 'f':
form = QLocaleData::DFDecimal;
break;
@@ -4396,7 +4596,7 @@ QByteArray::FromBase64Result QByteArray::fromBase64Encoding(QByteArray &&base64,
base64.size(),
base64.data(), // in-place
options);
- base64.truncate(int(base64result.decodedLength));
+ base64.truncate(base64result.decodedLength);
return { std::move(base64), base64result.status };
}
@@ -4412,7 +4612,7 @@ QByteArray::FromBase64Result QByteArray::fromBase64Encoding(const QByteArray &ba
base64Size,
const_cast<char *>(result.constData()),
options);
- result.truncate(int(base64result.decodedLength));
+ result.truncate(base64result.decodedLength);
return { std::move(result), base64result.status };
}
@@ -4525,7 +4725,7 @@ static void q_fromPercentEncoding(QByteArray *ba, char percent)
const char *inputPtr = data;
qsizetype i = 0;
- qsizetype len = ba->count();
+ qsizetype len = ba->size();
qsizetype outlen = 0;
int a, b;
char c;
@@ -4556,20 +4756,17 @@ static void q_fromPercentEncoding(QByteArray *ba, char percent)
ba->truncate(outlen);
}
-void q_fromPercentEncoding(QByteArray *ba)
-{
- q_fromPercentEncoding(ba, '%');
-}
-
/*!
- \since 4.4
+ \since 6.4
- Returns a decoded copy of the URI/URL-style percent-encoded \a input.
- The \a percent parameter allows you to replace the '%' character for
- another (for instance, '_' or '=').
+ Decodes URI/URL-style percent-encoding.
+
+ Returns a byte array containing the decoded text. The \a percent parameter
+ allows use of a different character than '%' (for instance, '_' or '=') as
+ the escape character.
For example:
- \snippet code/src_corelib_text_qbytearray.cpp 51
+ \snippet code/src_corelib_text_qbytearray.cpp 54
\note Given invalid input (such as a string containing the sequence "%G5",
which is not a valid hexadecimal number) the output will be invalid as
@@ -4577,18 +4774,35 @@ void q_fromPercentEncoding(QByteArray *ba)
\sa toPercentEncoding(), QUrl::fromPercentEncoding()
*/
-QByteArray QByteArray::fromPercentEncoding(const QByteArray &input, char percent)
+QByteArray QByteArray::percentDecoded(char percent) const
{
- if (input.isNull())
- return QByteArray(); // preserve null
- if (input.isEmpty())
- return QByteArray(input.data(), 0);
+ if (isEmpty())
+ return *this; // Preserves isNull().
- QByteArray tmp = input;
+ QByteArray tmp = *this;
q_fromPercentEncoding(&tmp, percent);
return tmp;
}
+/*!
+ \since 4.4
+
+ Decodes \a input from URI/URL-style percent-encoding.
+
+ Returns a byte array containing the decoded text. The \a percent parameter
+ allows use of a different character than '%' (for instance, '_' or '=') as
+ the escape character. Equivalent to input.percentDecoded(percent).
+
+ For example:
+ \snippet code/src_corelib_text_qbytearray.cpp 51
+
+ \sa percentDecoded()
+*/
+QByteArray QByteArray::fromPercentEncoding(const QByteArray &input, char percent)
+{
+ return input.percentDecoded(percent);
+}
+
/*! \fn QByteArray QByteArray::fromStdString(const std::string &str)
\since 5.4
@@ -4596,6 +4810,10 @@ QByteArray QByteArray::fromPercentEncoding(const QByteArray &input, char percent
\sa toStdString(), QString::fromStdString()
*/
+QByteArray QByteArray::fromStdString(const std::string &s)
+{
+ return QByteArray(s.data(), qsizetype(s.size()));
+}
/*!
\fn std::string QByteArray::toStdString() const
@@ -4609,68 +4827,9 @@ QByteArray QByteArray::fromPercentEncoding(const QByteArray &input, char percent
\sa fromStdString(), QString::toStdString()
*/
-
-static inline bool q_strchr(const char str[], char chr)
+std::string QByteArray::toStdString() const
{
- if (!str) return false;
-
- const char *ptr = str;
- char c;
- while ((c = *ptr++))
- if (c == chr)
- return true;
- return false;
-}
-
-static void q_toPercentEncoding(QByteArray *ba, const char *dontEncode, const char *alsoEncode, char percent)
-{
- if (ba->isEmpty())
- return;
-
- QByteArray input = *ba;
- qsizetype len = input.count();
- const char *inputData = input.constData();
- char *output = nullptr;
- qsizetype length = 0;
-
- for (qsizetype i = 0; i < len; ++i) {
- unsigned char c = *inputData++;
- if (((c >= 0x61 && c <= 0x7A) // ALPHA
- || (c >= 0x41 && c <= 0x5A) // ALPHA
- || (c >= 0x30 && c <= 0x39) // DIGIT
- || c == 0x2D // -
- || c == 0x2E // .
- || c == 0x5F // _
- || c == 0x7E // ~
- || q_strchr(dontEncode, c))
- && !q_strchr(alsoEncode, c)) {
- if (output)
- output[length] = c;
- ++length;
- } else {
- if (!output) {
- // detach now
- ba->resize(len*3); // worst case
- output = ba->data();
- }
- output[length++] = percent;
- output[length++] = QtMiscUtils::toHexUpper((c & 0xf0) >> 4);
- output[length++] = QtMiscUtils::toHexUpper(c & 0xf);
- }
- }
- if (output)
- ba->truncate(length);
-}
-
-void q_toPercentEncoding(QByteArray *ba, const char *exclude, const char *include)
-{
- q_toPercentEncoding(ba, exclude, include, '%');
-}
-
-void q_normalizePercentEncoding(QByteArray *ba, const char *exclude)
-{
- q_fromPercentEncoding(ba, '%');
- q_toPercentEncoding(ba, exclude, nullptr, '%');
+ return std::string(data(), size_t(size()));
}
/*!
@@ -4705,23 +4864,100 @@ QByteArray QByteArray::toPercentEncoding(const QByteArray &exclude, const QByteA
if (isEmpty())
return QByteArray(data(), 0);
- QByteArray include2 = include;
- if (percent != '%') // the default
- if ((percent >= 0x61 && percent <= 0x7A) // ALPHA
- || (percent >= 0x41 && percent <= 0x5A) // ALPHA
- || (percent >= 0x30 && percent <= 0x39) // DIGIT
- || percent == 0x2D // -
- || percent == 0x2E // .
- || percent == 0x5F // _
- || percent == 0x7E) // ~
- include2 += percent;
+ const auto contains = [](const QByteArray &view, char c) {
+ // As view.contains(c), but optimised to bypass a lot of overhead:
+ return view.size() > 0 && memchr(view.data(), c, view.size()) != nullptr;
+ };
QByteArray result = *this;
- q_toPercentEncoding(&result, exclude.nulTerminated().constData(), include2.nulTerminated().constData(), percent);
+ char *output = nullptr;
+ qsizetype length = 0;
+
+ for (unsigned char c : *this) {
+ if (char(c) != percent
+ && ((c >= 0x61 && c <= 0x7A) // ALPHA
+ || (c >= 0x41 && c <= 0x5A) // ALPHA
+ || (c >= 0x30 && c <= 0x39) // DIGIT
+ || c == 0x2D // -
+ || c == 0x2E // .
+ || c == 0x5F // _
+ || c == 0x7E // ~
+ || contains(exclude, c))
+ && !contains(include, c)) {
+ if (output)
+ output[length] = c;
+ ++length;
+ } else {
+ if (!output) {
+ // detach now
+ result.resize(size() * 3); // worst case
+ output = result.data();
+ }
+ output[length++] = percent;
+ output[length++] = QtMiscUtils::toHexUpper((c & 0xf0) >> 4);
+ output[length++] = QtMiscUtils::toHexUpper(c & 0xf);
+ }
+ }
+ if (output)
+ result.truncate(length);
return result;
}
+#if defined(Q_OS_WASM) || defined(Q_QDOC)
+
+/*!
+ Constructs a new QByteArray containing a copy of the Uint8Array \a uint8array.
+
+ This function transfers data from a JavaScript data buffer - which
+ is not addressable from C++ code - to heap memory owned by a QByteArray.
+ The Uint8Array can be released once this function returns and a copy
+ has been made.
+
+ The \a uint8array argument must an emscripten::val referencing an Uint8Array
+ object, e.g. obtained from a global JavaScript variable:
+
+ \snippet code/src_corelib_text_qbytearray.cpp 55
+
+ This function returns a null QByteArray if the size of the Uint8Array
+ exceeds the maximum capacity of QByteArray, or if the \a uint8array
+ argument is not of the Uint8Array type.
+
+ \since 6.5
+ \ingroup platform-type-conversions
+
+ \sa toEcmaUint8Array()
+*/
+
+QByteArray QByteArray::fromEcmaUint8Array(emscripten::val uint8array)
+{
+ return qstdweb::Uint8Array(uint8array).copyToQByteArray();
+}
+
+/*!
+ Creates a Uint8Array from a QByteArray.
+
+ This function transfers data from heap memory owned by a QByteArray
+ to a JavaScript data buffer. The function allocates and copies into an
+ ArrayBuffer, and returns a Uint8Array view to that buffer.
+
+ The JavaScript objects own a copy of the data, and this
+ QByteArray can be safely deleted after the copy has been made.
+
+ \snippet code/src_corelib_text_qbytearray.cpp 56
+
+ \since 6.5
+ \ingroup platform-type-conversions
+
+ \sa toEcmaUint8Array()
+*/
+emscripten::val QByteArray::toEcmaUint8Array()
+{
+ return qstdweb::Uint8Array::copyFrom(*this).val();
+}
+
+#endif
+
/*! \typedef QByteArray::ConstIterator
\internal
*/
@@ -4818,11 +5054,13 @@ QByteArray QByteArray::toPercentEncoding(const QByteArray &exclude, const QByteA
\sa QStringLiteral
*/
+#if QT_DEPRECATED_SINCE(6, 8)
/*!
\fn QtLiterals::operator""_qba(const char *str, size_t size)
\relates QByteArray
\since 6.2
+ \deprecated [6.8] Use \c _ba from Qt::StringLiterals namespace instead.
Literal operator that creates a QByteArray out of the first \a size characters
in the char string literal \a str.
@@ -4840,6 +5078,32 @@ QByteArray QByteArray::toPercentEncoding(const QByteArray &exclude, const QByteA
\sa QByteArrayLiteral, QtLiterals::operator""_qs(const char16_t *str, size_t size)
*/
+#endif // QT_DEPRECATED_SINCE(6, 8)
+
+/*!
+ \fn Qt::Literals::StringLiterals::operator""_ba(const char *str, size_t size)
+
+ \relates QByteArray
+ \since 6.4
+
+ Literal operator that creates a QByteArray out of the first \a size characters
+ in the char string literal \a str.
+
+ The QByteArray is created at compile time, and the generated string data is stored
+ in the read-only segment of the compiled object file. Duplicate literals may share
+ the same read-only memory. This functionality is interchangeable with
+ QByteArrayLiteral, but saves typing when many string literals are present in the
+ code.
+
+ The following code creates a QByteArray:
+ \code
+ using namespace Qt::Literals::StringLiterals;
+
+ auto str = "hello"_ba;
+ \endcode
+
+ \sa Qt::Literals::StringLiterals
+*/
/*!
\class QByteArray::FromBase64Result
@@ -4942,3 +5206,5 @@ size_t qHash(const QByteArray::FromBase64Result &key, size_t seed) noexcept
*/
QT_END_NAMESPACE
+
+#undef REHASH
diff --git a/src/corelib/text/qbytearray.h b/src/corelib/text/qbytearray.h
index d3b3c3ca6e..3c8a3bba45 100644
--- a/src/corelib/text/qbytearray.h
+++ b/src/corelib/text/qbytearray.h
@@ -1,42 +1,6 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Copyright (C) 2016 Intel Corporation.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2022 The Qt Company Ltd.
+// Copyright (C) 2016 Intel Corporation.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QBYTEARRAY_H
#define QBYTEARRAY_H
@@ -45,13 +9,13 @@
#include <QtCore/qnamespace.h>
#include <QtCore/qarraydata.h>
#include <QtCore/qarraydatapointer.h>
+#include <QtCore/qcompare.h>
#include <QtCore/qcontainerfwd.h>
#include <QtCore/qbytearrayalgorithms.h>
#include <QtCore/qbytearrayview.h>
#include <stdlib.h>
#include <string.h>
-#include <stdarg.h>
#include <string>
#include <iterator>
@@ -70,6 +34,14 @@ Q_FORWARD_DECLARE_CF_TYPE(CFData);
Q_FORWARD_DECLARE_OBJC_CLASS(NSData);
#endif
+#if defined(Q_OS_WASM) || defined(Q_QDOC)
+namespace emscripten {
+ class val;
+}
+#endif
+
+class tst_QByteArray;
+
QT_BEGIN_NAMESPACE
class QString;
@@ -90,6 +62,11 @@ private:
DataPointer d;
static const char _empty;
+
+ friend class ::tst_QByteArray;
+
+ template <typename InputIterator>
+ using if_input_iterator = QtPrivate::IfIsInputIterator<InputIterator>;
public:
enum Base64Option {
@@ -115,19 +92,22 @@ public:
QByteArray(const char *, qsizetype size = -1);
QByteArray(qsizetype size, char c);
QByteArray(qsizetype size, Qt::Initialization);
+ explicit QByteArray(QByteArrayView v) : QByteArray(v.data(), v.size()) {}
inline QByteArray(const QByteArray &) noexcept;
inline ~QByteArray();
QByteArray &operator=(const QByteArray &) noexcept;
QByteArray &operator=(const char *str);
inline QByteArray(QByteArray && other) noexcept
- { qSwap(d, other.d); }
+ = default;
QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QByteArray)
inline void swap(QByteArray &other) noexcept
{ d.swap(other.d); }
bool isEmpty() const noexcept { return size() == 0; }
void resize(qsizetype size);
+ void resize(qsizetype size, char c);
+ void resizeForOverwrite(qsizetype size);
QByteArray &fill(char c, qsizetype size = -1);
@@ -156,10 +136,12 @@ public:
[[nodiscard]] char back() const { return at(size() - 1); }
[[nodiscard]] inline char &back();
+ QT_CORE_INLINE_SINCE(6, 7)
qsizetype indexOf(char c, qsizetype from = 0) const;
qsizetype indexOf(QByteArrayView bv, qsizetype from = 0) const
{ return QtPrivate::findByteArray(qToByteArrayViewIgnoringNull(*this), from, bv); }
+ QT_CORE_INLINE_SINCE(6, 7)
qsizetype lastIndexOf(char c, qsizetype from = -1) const;
qsizetype lastIndexOf(QByteArrayView bv) const
{ return lastIndexOf(bv, size()); }
@@ -174,20 +156,69 @@ public:
inline int compare(QByteArrayView a, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
- [[nodiscard]] QByteArray left(qsizetype len) const;
- [[nodiscard]] QByteArray right(qsizetype len) const;
- [[nodiscard]] QByteArray mid(qsizetype index, qsizetype len = -1) const;
-
- [[nodiscard]] QByteArray first(qsizetype n) const
- { Q_ASSERT(n >= 0); Q_ASSERT(n <= size()); return QByteArray(data(), n); }
- [[nodiscard]] QByteArray last(qsizetype n) const
- { Q_ASSERT(n >= 0); Q_ASSERT(n <= size()); return QByteArray(data() + size() - n, n); }
- [[nodiscard]] QByteArray sliced(qsizetype pos) const
- { Q_ASSERT(pos >= 0); Q_ASSERT(pos <= size()); return QByteArray(data() + pos, size() - pos); }
- [[nodiscard]] QByteArray sliced(qsizetype pos, qsizetype n) const
- { Q_ASSERT(pos >= 0); Q_ASSERT(n >= 0); Q_ASSERT(size_t(pos) + size_t(n) <= size_t(size())); return QByteArray(data() + pos, n); }
- [[nodiscard]] QByteArray chopped(qsizetype len) const
- { Q_ASSERT(len >= 0); Q_ASSERT(len <= size()); return first(size() - len); }
+#if QT_CORE_REMOVED_SINCE(6, 7)
+ QByteArray left(qsizetype len) const;
+ QByteArray right(qsizetype len) const;
+ QByteArray mid(qsizetype index, qsizetype len = -1) const;
+ QByteArray first(qsizetype n) const;
+ QByteArray last(qsizetype n) const;
+ QByteArray sliced(qsizetype pos) const;
+ QByteArray sliced(qsizetype pos, qsizetype n) const;
+ QByteArray chopped(qsizetype len) const;
+#else
+ [[nodiscard]] QByteArray left(qsizetype n) const &
+ {
+ if (n >= size())
+ return *this;
+ return first(qMax(n, 0));
+ }
+ [[nodiscard]] QByteArray left(qsizetype n) &&
+ {
+ if (n >= size())
+ return std::move(*this);
+ return std::move(*this).first(qMax(n, 0));
+ }
+ [[nodiscard]] QByteArray right(qsizetype n) const &
+ {
+ if (n >= size())
+ return *this;
+ return last(qMax(n, 0));
+ }
+ [[nodiscard]] QByteArray right(qsizetype n) &&
+ {
+ if (n >= size())
+ return std::move(*this);
+ return std::move(*this).last(qMax(n, 0));
+ }
+ [[nodiscard]] QByteArray mid(qsizetype index, qsizetype len = -1) const &;
+ [[nodiscard]] QByteArray mid(qsizetype index, qsizetype len = -1) &&;
+
+ [[nodiscard]] QByteArray first(qsizetype n) const &
+ { verify(0, n); return sliced(0, n); }
+ [[nodiscard]] QByteArray last(qsizetype n) const &
+ { verify(0, n); return sliced(size() - n, n); }
+ [[nodiscard]] QByteArray sliced(qsizetype pos) const &
+ { verify(pos, 0); return sliced(pos, size() - pos); }
+ [[nodiscard]] QByteArray sliced(qsizetype pos, qsizetype n) const &
+ { verify(pos, n); return QByteArray(d.data() + pos, n); }
+ [[nodiscard]] QByteArray chopped(qsizetype len) const &
+ { verify(0, len); return sliced(0, size() - len); }
+
+ [[nodiscard]] QByteArray first(qsizetype n) &&
+ {
+ verify(0, n);
+ resize(n); // may detach and allocate memory
+ return std::move(*this);
+ }
+ [[nodiscard]] QByteArray last(qsizetype n) &&
+ { verify(0, n); return sliced_helper(*this, size() - n, n); }
+ [[nodiscard]] QByteArray sliced(qsizetype pos) &&
+ { verify(pos, 0); return sliced_helper(*this, pos, size() - pos); }
+ [[nodiscard]] QByteArray sliced(qsizetype pos, qsizetype n) &&
+ { verify(pos, n); return sliced_helper(*this, pos, n); }
+ [[nodiscard]] QByteArray chopped(qsizetype len) &&
+ { verify(0, len); return std::move(*this).first(size() - len); }
+#endif
bool startsWith(QByteArrayView bv) const
{ return QtPrivate::startsWith(qToByteArrayViewIgnoringNull(*this), bv); }
@@ -208,7 +239,18 @@ public:
void truncate(qsizetype pos);
void chop(qsizetype n);
-#if !defined(Q_CLANG_QDOC)
+ QByteArray &slice(qsizetype pos)
+ { verify(pos, 0); return remove(0, pos); }
+ QByteArray &slice(qsizetype pos, qsizetype n)
+ {
+ verify(pos, n);
+ if (isNull())
+ return *this;
+ resize(pos + n);
+ return remove(0, pos);
+ }
+
+#if !defined(Q_QDOC)
[[nodiscard]] QByteArray toLower() const &
{ return toLower_helper(*this); }
[[nodiscard]] QByteArray toLower() &&
@@ -256,6 +298,20 @@ public:
QByteArray &append(QByteArrayView a)
{ return insert(size(), a); }
+ QByteArray &assign(QByteArrayView v);
+ QByteArray &assign(qsizetype n, char c)
+ {
+ Q_ASSERT(n >= 0);
+ return fill(c, n);
+ }
+ template <typename InputIterator, if_input_iterator<InputIterator> = true>
+ QByteArray &assign(InputIterator first, InputIterator last)
+ {
+ d.assign(first, last);
+ d.data()[d.size] = '\0';
+ return *this;
+ }
+
QByteArray &insert(qsizetype i, QByteArrayView data);
inline QByteArray &insert(qsizetype i, const char *s)
{ return insert(i, QByteArrayView(s)); }
@@ -268,10 +324,15 @@ public:
{ return insert(i, QByteArrayView(s, len)); }
QByteArray &remove(qsizetype index, qsizetype len);
+ QByteArray &removeAt(qsizetype pos)
+ { return size_t(pos) < size_t(size()) ? remove(pos, 1) : *this; }
+ QByteArray &removeFirst() { return !isEmpty() ? remove(0, 1) : *this; }
+ QByteArray &removeLast() { return !isEmpty() ? remove(size() - 1, 1) : *this; }
+
template <typename Predicate>
QByteArray &removeIf(Predicate pred)
{
- QtPrivate::sequential_erase_if(*this, pred);
+ removeIf_helper(pred);
return *this;
}
@@ -299,64 +360,15 @@ public:
[[nodiscard]] QByteArray repeated(qsizetype times) const;
#if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
+#if QT_CORE_REMOVED_SINCE(6, 8)
QT_ASCII_CAST_WARN inline bool operator==(const QString &s2) const;
QT_ASCII_CAST_WARN inline bool operator!=(const QString &s2) const;
QT_ASCII_CAST_WARN inline bool operator<(const QString &s2) const;
QT_ASCII_CAST_WARN inline bool operator>(const QString &s2) const;
QT_ASCII_CAST_WARN inline bool operator<=(const QString &s2) const;
QT_ASCII_CAST_WARN inline bool operator>=(const QString &s2) const;
-#endif
- friend inline bool operator==(const QByteArray &a1, const QByteArray &a2) noexcept
- { return QByteArrayView(a1) == QByteArrayView(a2); }
- friend inline bool operator==(const QByteArray &a1, const char *a2) noexcept
- { return a2 ? QtPrivate::compareMemory(a1, a2) == 0 : a1.isEmpty(); }
- friend inline bool operator==(const char *a1, const QByteArray &a2) noexcept
- { return a1 ? QtPrivate::compareMemory(a1, a2) == 0 : a2.isEmpty(); }
- friend inline bool operator!=(const QByteArray &a1, const QByteArray &a2) noexcept
- { return !(a1==a2); }
- friend inline bool operator!=(const QByteArray &a1, const char *a2) noexcept
- { return a2 ? QtPrivate::compareMemory(a1, a2) != 0 : !a1.isEmpty(); }
- friend inline bool operator!=(const char *a1, const QByteArray &a2) noexcept
- { return a1 ? QtPrivate::compareMemory(a1, a2) != 0 : !a2.isEmpty(); }
- friend inline bool operator<(const QByteArray &a1, const QByteArray &a2) noexcept
- { return QtPrivate::compareMemory(QByteArrayView(a1), QByteArrayView(a2)) < 0; }
- friend inline bool operator<(const QByteArray &a1, const char *a2) noexcept
- { return QtPrivate::compareMemory(a1, a2) < 0; }
- friend inline bool operator<(const char *a1, const QByteArray &a2) noexcept
- { return QtPrivate::compareMemory(a1, a2) < 0; }
- friend inline bool operator<=(const QByteArray &a1, const QByteArray &a2) noexcept
- { return QtPrivate::compareMemory(QByteArrayView(a1), QByteArrayView(a2)) <= 0; }
- friend inline bool operator<=(const QByteArray &a1, const char *a2) noexcept
- { return QtPrivate::compareMemory(a1, a2) <= 0; }
- friend inline bool operator<=(const char *a1, const QByteArray &a2) noexcept
- { return QtPrivate::compareMemory(a1, a2) <= 0; }
- friend inline bool operator>(const QByteArray &a1, const QByteArray &a2) noexcept
- { return QtPrivate::compareMemory(QByteArrayView(a1), QByteArrayView(a2)) > 0; }
- friend inline bool operator>(const QByteArray &a1, const char *a2) noexcept
- { return QtPrivate::compareMemory(a1, a2) > 0; }
- friend inline bool operator>(const char *a1, const QByteArray &a2) noexcept
- { return QtPrivate::compareMemory(a1, a2) > 0; }
- friend inline bool operator>=(const QByteArray &a1, const QByteArray &a2) noexcept
- { return QtPrivate::compareMemory(QByteArrayView(a1), QByteArrayView(a2)) >= 0; }
- friend inline bool operator>=(const QByteArray &a1, const char *a2) noexcept
- { return QtPrivate::compareMemory(a1, a2) >= 0; }
- friend inline bool operator>=(const char *a1, const QByteArray &a2) noexcept
- { return QtPrivate::compareMemory(a1, a2) >= 0; }
-
- // Check isEmpty() instead of isNull() for backwards compatibility.
- friend inline bool operator==(const QByteArray &a1, std::nullptr_t) noexcept { return a1.isEmpty(); }
- friend inline bool operator!=(const QByteArray &a1, std::nullptr_t) noexcept { return !a1.isEmpty(); }
- friend inline bool operator< (const QByteArray & , std::nullptr_t) noexcept { return false; }
- friend inline bool operator> (const QByteArray &a1, std::nullptr_t) noexcept { return !a1.isEmpty(); }
- friend inline bool operator<=(const QByteArray &a1, std::nullptr_t) noexcept { return a1.isEmpty(); }
- friend inline bool operator>=(const QByteArray & , std::nullptr_t) noexcept { return true; }
-
- friend inline bool operator==(std::nullptr_t, const QByteArray &a2) noexcept { return a2 == nullptr; }
- friend inline bool operator!=(std::nullptr_t, const QByteArray &a2) noexcept { return a2 != nullptr; }
- friend inline bool operator< (std::nullptr_t, const QByteArray &a2) noexcept { return a2 > nullptr; }
- friend inline bool operator> (std::nullptr_t, const QByteArray &a2) noexcept { return a2 < nullptr; }
- friend inline bool operator<=(std::nullptr_t, const QByteArray &a2) noexcept { return a2 >= nullptr; }
- friend inline bool operator>=(std::nullptr_t, const QByteArray &a2) noexcept { return a2 <= nullptr; }
+#endif // QT_CORE_REMOVED_SINCE(6, 8)
+#endif // !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
short toShort(bool *ok = nullptr, int base = 10) const;
ushort toUShort(bool *ok = nullptr, int base = 10) const;
@@ -373,6 +385,7 @@ public:
QByteArray toPercentEncoding(const QByteArray &exclude = QByteArray(),
const QByteArray &include = QByteArray(),
char percent = '%') const;
+ [[nodiscard]] QByteArray percentDecoded(char percent = '%') const;
inline QByteArray &setNum(short, int base = 10);
inline QByteArray &setNum(ushort, int base = 10);
@@ -416,6 +429,11 @@ public:
NSData *toRawNSData() const Q_DECL_NS_RETURNS_AUTORELEASED;
#endif
+#if defined(Q_OS_WASM) || defined(Q_QDOC)
+ static QByteArray fromEcmaUint8Array(emscripten::val uint8array);
+ emscripten::val toEcmaUint8Array();
+#endif
+
typedef char *iterator;
typedef const char *const_iterator;
typedef iterator Iterator;
@@ -423,11 +441,11 @@ public:
typedef std::reverse_iterator<iterator> reverse_iterator;
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
iterator begin() { return data(); }
- const_iterator begin() const noexcept { return data(); }
+ const_iterator begin() const noexcept { return d.data(); }
const_iterator cbegin() const noexcept { return begin(); }
const_iterator constBegin() const noexcept { return begin(); }
- iterator end() { return data() + size(); }
- const_iterator end() const noexcept { return data() + size(); }
+ iterator end() { return begin() + size(); }
+ const_iterator end() const noexcept { return begin() + size(); }
const_iterator cend() const noexcept { return end(); }
const_iterator constEnd() const noexcept { return end(); }
reverse_iterator rbegin() { return reverse_iterator(end()); }
@@ -463,15 +481,26 @@ public:
{ prepend(a); }
void shrink_to_fit() { squeeze(); }
iterator erase(const_iterator first, const_iterator last);
+ inline iterator erase(const_iterator it) { return erase(it, it + 1); }
+ static constexpr qsizetype max_size() noexcept
+ {
+ // -1 to deal with the NUL terminator
+ return Data::max_size() - 1;
+ }
- static inline QByteArray fromStdString(const std::string &s);
- inline std::string toStdString() const;
+ static QByteArray fromStdString(const std::string &s);
+ std::string toStdString() const;
inline qsizetype size() const noexcept { return d->size; }
+#if QT_DEPRECATED_SINCE(6, 4)
+ QT_DEPRECATED_VERSION_X_6_4("Use size() or length() instead.")
inline qsizetype count() const noexcept { return size(); }
+#endif
inline qsizetype length() const noexcept { return size(); }
+ QT_CORE_INLINE_SINCE(6, 4)
bool isNull() const noexcept;
+ inline const DataPointer &data_ptr() const { return d; }
inline DataPointer &data_ptr() { return d; }
#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0)
explicit inline QByteArray(const DataPointer &dd) : d(dd) {}
@@ -479,11 +508,66 @@ public:
explicit inline QByteArray(DataPointer &&dd) : d(std::move(dd)) {}
private:
+ friend bool comparesEqual(const QByteArray &lhs, const QByteArrayView &rhs) noexcept
+ { return QByteArrayView(lhs) == rhs; }
+ friend Qt::strong_ordering
+ compareThreeWay(const QByteArray &lhs, const QByteArrayView &rhs) noexcept
+ {
+ const int res = QtPrivate::compareMemory(QByteArrayView(lhs), rhs);
+ return Qt::compareThreeWay(res, 0);
+ }
+ Q_DECLARE_STRONGLY_ORDERED(QByteArray)
+ Q_DECLARE_STRONGLY_ORDERED(QByteArray, QByteArrayView)
+ Q_DECLARE_STRONGLY_ORDERED(QByteArray, const char *)
+#if defined(__GLIBCXX__) && defined(__cpp_lib_three_way_comparison)
+ // libstdc++ has a bug [0] when `operator const void *()` is preferred over
+ // `operator<=>()` when calling std::less<> and other similar methods.
+ // Fix it by explicitly providing relational operators in such case.
+ // [0]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114153
+ friend bool operator<(const QByteArray &lhs, const QByteArray &rhs) noexcept
+ { return is_lt(compareThreeWay(lhs, rhs)); }
+ friend bool operator<=(const QByteArray &lhs, const QByteArray &rhs) noexcept
+ { return is_lteq(compareThreeWay(lhs, rhs)); }
+ friend bool operator>(const QByteArray &lhs, const QByteArray &rhs) noexcept
+ { return is_gt(compareThreeWay(lhs, rhs)); }
+ friend bool operator>=(const QByteArray &lhs, const QByteArray &rhs) noexcept
+ { return is_gteq(compareThreeWay(lhs, rhs)); }
+#endif // defined(__GLIBCXX__) && defined(__cpp_lib_three_way_comparison)
+
+ // Check isEmpty() instead of isNull() for backwards compatibility.
+ friend bool comparesEqual(const QByteArray &lhs, std::nullptr_t) noexcept
+ { return lhs.isEmpty(); }
+ friend Qt::strong_ordering compareThreeWay(const QByteArray &lhs, std::nullptr_t) noexcept
+ { return lhs.isEmpty() ? Qt::strong_ordering::equivalent : Qt::strong_ordering::greater; }
+ Q_DECLARE_STRONGLY_ORDERED(QByteArray, std::nullptr_t)
+
+ // defined in qstring.cpp
+ friend Q_CORE_EXPORT bool comparesEqual(const QByteArray &lhs, const QChar &rhs) noexcept;
+ friend Q_CORE_EXPORT Qt::strong_ordering
+ compareThreeWay(const QByteArray &lhs, const QChar &rhs) noexcept;
+ friend Q_CORE_EXPORT bool comparesEqual(const QByteArray &lhs, char16_t rhs) noexcept;
+ friend Q_CORE_EXPORT Qt::strong_ordering
+ compareThreeWay(const QByteArray &lhs, char16_t rhs) noexcept;
+#if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
+ Q_DECLARE_STRONGLY_ORDERED(QByteArray, QChar, QT_ASCII_CAST_WARN)
+ Q_DECLARE_STRONGLY_ORDERED(QByteArray, char16_t, QT_ASCII_CAST_WARN)
+#endif // !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
+
+
void reallocData(qsizetype alloc, QArrayData::AllocationOption option);
void reallocGrowData(qsizetype n);
void expand(qsizetype i);
- QByteArray nulTerminated() const;
+ Q_ALWAYS_INLINE constexpr void verify([[maybe_unused]] qsizetype pos = 0,
+ [[maybe_unused]] qsizetype n = 1) const
+ {
+ Q_ASSERT(pos >= 0);
+ Q_ASSERT(pos <= d.size);
+ Q_ASSERT(n >= 0);
+ Q_ASSERT(n <= d.size - pos);
+ }
+
+ static QByteArray sliced_helper(QByteArray &a, qsizetype pos, qsizetype n);
static QByteArray toLower_helper(const QByteArray &a);
static QByteArray toLower_helper(QByteArray &a);
static QByteArray toUpper_helper(const QByteArray &a);
@@ -492,9 +576,20 @@ private:
static QByteArray trimmed_helper(QByteArray &a);
static QByteArray simplified_helper(const QByteArray &a);
static QByteArray simplified_helper(QByteArray &a);
+ template <typename Predicate>
+ qsizetype removeIf_helper(Predicate pred)
+ {
+ const qsizetype result = d->eraseIf(pred);
+ if (result > 0)
+ d.data()[d.size] = '\0';
+ return result;
+ }
friend class QString;
friend Q_CORE_EXPORT QByteArray qUncompress(const uchar *data, qsizetype nbytes);
+
+ template <typename T> friend qsizetype erase(QByteArray &ba, const T &t);
+ template <typename Predicate> friend qsizetype erase_if(QByteArray &ba, Predicate pred);
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QByteArray::Base64Options)
@@ -503,9 +598,9 @@ inline constexpr QByteArray::QByteArray() noexcept {}
inline QByteArray::~QByteArray() {}
inline char QByteArray::at(qsizetype i) const
-{ Q_ASSERT(size_t(i) < size_t(size())); return d.data()[i]; }
+{ verify(i, 1); return d.data()[i]; }
inline char QByteArray::operator[](qsizetype i) const
-{ Q_ASSERT(size_t(i) < size_t(size())); return d.data()[i]; }
+{ verify(i, 1); return d.data()[i]; }
#ifndef QT_NO_CAST_FROM_BYTEARRAY
inline QByteArray::operator const char *() const
@@ -555,7 +650,7 @@ inline void QByteArray::squeeze()
}
inline char &QByteArray::operator[](qsizetype i)
-{ Q_ASSERT(i >= 0 && i < size()); return data()[i]; }
+{ verify(i, 1); return data()[i]; }
inline char &QByteArray::front() { return operator[](0); }
inline char &QByteArray::back() { return operator[](size() - 1); }
inline QByteArray &QByteArray::append(qsizetype n, char ch)
@@ -572,15 +667,21 @@ inline int QByteArray::compare(QByteArrayView a, Qt::CaseSensitivity cs) const n
qstrnicmp(data(), size(), a.data(), a.size());
}
#if !defined(QT_USE_QSTRINGBUILDER)
-inline const QByteArray operator+(const QByteArray &a1, const QByteArray &a2)
+inline QByteArray operator+(const QByteArray &a1, const QByteArray &a2)
{ return QByteArray(a1) += a2; }
-inline const QByteArray operator+(const QByteArray &a1, const char *a2)
+inline QByteArray operator+(QByteArray &&lhs, const QByteArray &rhs)
+{ return std::move(lhs += rhs); }
+inline QByteArray operator+(const QByteArray &a1, const char *a2)
{ return QByteArray(a1) += a2; }
-inline const QByteArray operator+(const QByteArray &a1, char a2)
+inline QByteArray operator+(QByteArray &&lhs, const char *rhs)
+{ return std::move(lhs += rhs); }
+inline QByteArray operator+(const QByteArray &a1, char a2)
{ return QByteArray(a1) += a2; }
-inline const QByteArray operator+(const char *a1, const QByteArray &a2)
+inline QByteArray operator+(QByteArray &&lhs, char rhs)
+{ return std::move(lhs += rhs); }
+inline QByteArray operator+(const char *a1, const QByteArray &a2)
{ return QByteArray(a1) += a2; }
-inline const QByteArray operator+(char a1, const QByteArray &a2)
+inline QByteArray operator+(char a1, const QByteArray &a2)
{ return QByteArray(&a1, 1) += a2; }
#endif // QT_USE_QSTRINGBUILDER
@@ -599,11 +700,22 @@ inline QByteArray &QByteArray::setNum(ulong n, int base)
inline QByteArray &QByteArray::setNum(float n, char format, int precision)
{ return setNum(double(n), format, precision); }
-inline std::string QByteArray::toStdString() const
-{ return std::string(constData(), length()); }
-
-inline QByteArray QByteArray::fromStdString(const std::string &s)
-{ return QByteArray(s.data(), qsizetype(s.size())); }
+#if QT_CORE_INLINE_IMPL_SINCE(6, 4)
+bool QByteArray::isNull() const noexcept
+{
+ return d->isNull();
+}
+#endif
+#if QT_CORE_INLINE_IMPL_SINCE(6, 7)
+qsizetype QByteArray::indexOf(char ch, qsizetype from) const
+{
+ return qToByteArrayViewIgnoringNull(*this).indexOf(ch, from);
+}
+qsizetype QByteArray::lastIndexOf(char ch, qsizetype from) const
+{
+ return qToByteArrayViewIgnoringNull(*this).lastIndexOf(ch, from);
+}
+#endif
#if !defined(QT_NO_DATASTREAM) || defined(QT_BOOTSTRAPPED)
Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QByteArray &);
@@ -669,13 +781,13 @@ Q_CORE_EXPORT Q_DECL_PURE_FUNCTION size_t qHash(const QByteArray::FromBase64Resu
template <typename T>
qsizetype erase(QByteArray &ba, const T &t)
{
- return QtPrivate::sequential_erase(ba, t);
+ return ba.removeIf_helper([&t](const auto &e) { return t == e; });
}
template <typename Predicate>
qsizetype erase_if(QByteArray &ba, Predicate pred)
{
- return QtPrivate::sequential_erase_if(ba, pred);
+ return ba.removeIf_helper(pred);
}
//
@@ -683,14 +795,32 @@ qsizetype erase_if(QByteArray &ba, Predicate pred)
//
QByteArray QByteArrayView::toByteArray() const
{
- return QByteArray(data(), size());
+ return QByteArray(*this);
}
-inline namespace QtLiterals {
-inline QByteArray operator"" _qba(const char *str, size_t size) noexcept
+namespace Qt {
+inline namespace Literals {
+inline namespace StringLiterals {
+
+inline QByteArray operator""_ba(const char *str, size_t size) noexcept
{
return QByteArray(QByteArrayData(nullptr, const_cast<char *>(str), qsizetype(size)));
}
+
+} // StringLiterals
+} // Literals
+} // Qt
+
+inline namespace QtLiterals {
+#if QT_DEPRECATED_SINCE(6, 8)
+
+QT_DEPRECATED_VERSION_X_6_8("Use _ba from Qt::StringLiterals namespace instead.")
+inline QByteArray operator""_qba(const char *str, size_t size) noexcept
+{
+ return Qt::StringLiterals::operator""_ba(str, size);
+}
+
+#endif // QT_DEPRECATED_SINCE(6, 8)
} // QtLiterals
QT_END_NAMESPACE
diff --git a/src/corelib/text/qbytearray_p.h b/src/corelib/text/qbytearray_p.h
deleted file mode 100644
index 90552cb442..0000000000
--- a/src/corelib/text/qbytearray_p.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QBYTEARRAY_P_H
-#define QBYTEARRAY_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of other Qt classes. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <QtCore/qbytearray.h>
-#include "private/qtools_p.h"
-
-QT_BEGIN_NAMESPACE
-
-// -1 because of the terminating NUL
-constexpr qsizetype MaxByteArraySize = MaxAllocSize - sizeof(std::remove_pointer<QByteArray::DataPointer>::type) - 1;
-constexpr qsizetype MaxStringSize = (MaxAllocSize - sizeof(std::remove_pointer<QByteArray::DataPointer>::type)) / 2 - 1;
-
-QT_END_NAMESPACE
-
-#endif // QBYTEARRAY_P_H
diff --git a/src/corelib/text/qbytearrayalgorithms.h b/src/corelib/text/qbytearrayalgorithms.h
index b669f065b9..7060161bb4 100644
--- a/src/corelib/text/qbytearrayalgorithms.h
+++ b/src/corelib/text/qbytearrayalgorithms.h
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QBYTEARRAYALGORITHMS_H
#define QBYTEARRAYALGORITHMS_H
@@ -61,10 +25,16 @@ bool startsWith(QByteArrayView haystack, QByteArrayView needle) noexcept;
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION
bool endsWith(QByteArrayView haystack, QByteArrayView needle) noexcept;
+[[nodiscard]] inline
+qsizetype findByteArray(QByteArrayView haystack, qsizetype from, char needle) noexcept;
+
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION
qsizetype findByteArray(QByteArrayView haystack, qsizetype from, QByteArrayView needle) noexcept;
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION
+qsizetype lastIndexOf(QByteArrayView haystack, qsizetype from, char needle) noexcept;
+
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION
qsizetype lastIndexOf(QByteArrayView haystack, qsizetype from, QByteArrayView needle) noexcept;
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION
@@ -76,6 +46,53 @@ qsizetype count(QByteArrayView haystack, QByteArrayView needle) noexcept;
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool isValidUtf8(QByteArrayView s) noexcept;
+template <typename T>
+class ParsedNumber
+{
+ T m_value;
+ quint32 m_error : 1;
+ quint32 m_reserved : 31;
+ void *m_reserved2 = nullptr;
+public:
+ constexpr ParsedNumber() noexcept : m_value(), m_error(true), m_reserved(0) {}
+ constexpr explicit ParsedNumber(T v) : m_value(v), m_error(false), m_reserved(0) {}
+
+ // minimal optional-like API:
+ explicit operator bool() const noexcept { return !m_error; }
+ T &operator*() { Q_ASSERT(*this); return m_value; }
+ const T &operator*() const { Q_ASSERT(*this); return m_value; }
+ T *operator->() noexcept { return *this ? &m_value : nullptr; }
+ const T *operator->() const noexcept { return *this ? &m_value : nullptr; }
+ template <typename U> // not = T, as that'd allow calls that are incompatible with std::optional
+ T value_or(U &&u) const { return *this ? m_value : T(std::forward<U>(u)); }
+};
+
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION ParsedNumber<double> toDouble(QByteArrayView a) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION ParsedNumber<float> toFloat(QByteArrayView a) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION ParsedNumber<qlonglong> toSignedInteger(QByteArrayView data, int base);
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION ParsedNumber<qulonglong> toUnsignedInteger(QByteArrayView data, int base);
+
+// QByteArrayView has incomplete type here, and we can't include qbytearrayview.h,
+// since it includes qbytearrayalgorithms.h. Use the ByteArrayView template type as
+// a workaround.
+template <typename T, typename ByteArrayView,
+ typename = std::enable_if_t<std::is_same_v<ByteArrayView, QByteArrayView>>>
+static inline T toIntegral(ByteArrayView data, bool *ok, int base)
+{
+ const auto val = [&] {
+ if constexpr (std::is_unsigned_v<T>)
+ return toUnsignedInteger(data, base);
+ else
+ return toSignedInteger(data, base);
+ }();
+ const bool failed = !val || T(*val) != *val;
+ if (ok)
+ *ok = !failed;
+ if (failed)
+ return 0;
+ return T(*val);
+}
+
} // namespace QtPrivate
/*****************************************************************************
@@ -87,7 +104,7 @@ Q_CORE_EXPORT char *qstrdup(const char *);
inline size_t qstrlen(const char *str)
{
QT_WARNING_PUSH
-#if defined(Q_CC_GNU) && Q_CC_GNU >= 900 && Q_CC_GNU < 1000
+#if defined(Q_CC_GNU_ONLY) && Q_CC_GNU >= 900 && Q_CC_GNU < 1000
// spurious compiler warning (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91490#c6)
// when Q_DECLARE_METATYPE_TEMPLATE_1ARG is used
QT_WARNING_DISABLE_GCC("-Wstringop-overflow")
diff --git a/src/corelib/text/qbytearraylist.cpp b/src/corelib/text/qbytearraylist.cpp
index 129bcfc835..81bb54dfe4 100644
--- a/src/corelib/text/qbytearraylist.cpp
+++ b/src/corelib/text/qbytearraylist.cpp
@@ -1,42 +1,6 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Copyright (C) 2014 by Southwest Research Institute (R)
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// Copyright (C) 2014 by Southwest Research Institute (R)
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include <qbytearraylist.h>
diff --git a/src/corelib/text/qbytearraylist.h b/src/corelib/text/qbytearraylist.h
index de5546c8ce..f5302884f1 100644
--- a/src/corelib/text/qbytearraylist.h
+++ b/src/corelib/text/qbytearraylist.h
@@ -1,43 +1,7 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Copyright (C) 2016 Intel Corporation.
-** Copyright (C) 2014 by Southwest Research Institute (R)
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// Copyright (C) 2016 Intel Corporation.
+// Copyright (C) 2014 by Southwest Research Institute (R)
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include <QtCore/qlist.h>
@@ -55,23 +19,23 @@ typedef QListIterator<QByteArray> QByteArrayListIterator;
typedef QMutableListIterator<QByteArray> QMutableByteArrayListIterator;
#endif
-#ifndef Q_CLANG_QDOC
+#ifndef Q_QDOC
namespace QtPrivate {
-#if QT_REMOVED_SINCE(6, 3) && QT_POINTER_SIZE != 4
+#if QT_CORE_REMOVED_SINCE(6, 3) && QT_POINTER_SIZE != 4
QByteArray Q_CORE_EXPORT QByteArrayList_join(const QByteArrayList *that, const char *separator, int separatorLength);
#endif
QByteArray Q_CORE_EXPORT QByteArrayList_join(const QByteArrayList *that, const char *sep, qsizetype len);
}
#endif
-#ifdef Q_CLANG_QDOC
+#ifdef Q_QDOC
class QByteArrayList : public QList<QByteArray>
#else
template <> struct QListSpecialMethods<QByteArray> : QListSpecialMethodsBase<QByteArray>
#endif
{
-#ifndef Q_CLANG_QDOC
+#ifndef Q_QDOC
protected:
~QListSpecialMethods() = default;
#endif
diff --git a/src/corelib/text/qbytearraymatcher.cpp b/src/corelib/text/qbytearraymatcher.cpp
index 0d96355df2..ae38fb584b 100644
--- a/src/corelib/text/qbytearraymatcher.cpp
+++ b/src/corelib/text/qbytearraymatcher.cpp
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qbytearraymatcher.h"
@@ -447,3 +411,5 @@ qsizetype QStaticByteArrayMatcherBase::indexOfIn(const char *needle, size_t nlen
QT_END_NAMESPACE
+
+#undef REHASH
diff --git a/src/corelib/text/qbytearraymatcher.h b/src/corelib/text/qbytearraymatcher.h
index 4aac69f30a..1de9c23f10 100644
--- a/src/corelib/text/qbytearraymatcher.h
+++ b/src/corelib/text/qbytearraymatcher.h
@@ -1,47 +1,13 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QBYTEARRAYMATCHER_H
#define QBYTEARRAYMATCHER_H
#include <QtCore/qbytearray.h>
+#include <QtCore/q20algorithm.h>
+#include <iterator>
#include <limits>
QT_BEGIN_NAMESPACE
@@ -65,7 +31,7 @@ public:
void setPattern(const QByteArray &pattern);
-#if QT_REMOVED_SINCE(6, 3)
+#if QT_CORE_REMOVED_SINCE(6, 3)
qsizetype indexIn(const QByteArray &ba, qsizetype from = 0) const;
#else
Q_WEAK_OVERLOAD
@@ -107,7 +73,7 @@ protected:
// compiler-generated copy/more ctors/assignment operators are ok!
~QStaticByteArrayMatcherBase() = default;
-#if QT_REMOVED_SINCE(6, 3) && QT_POINTER_SIZE != 4
+#if QT_CORE_REMOVED_SINCE(6, 3) && QT_POINTER_SIZE != 4
Q_CORE_EXPORT int indexOfIn(const char *needle, uint nlen, const char *haystack, int hlen, int from) const noexcept;
#endif
Q_CORE_EXPORT qsizetype indexOfIn(const char *needle, size_t nlen,
@@ -119,31 +85,8 @@ private:
{
const auto uchar_max = (std::numeric_limits<uchar>::max)();
uchar max = n > uchar_max ? uchar_max : uchar(n);
- Skiptable table = {
- // this verbose initialization code aims to avoid some opaque error messages
- // even on powerful compilers such as GCC 5.3. Even though for GCC a loop
- // format can be found that v5.3 groks, it's probably better to go with this
- // for the time being:
- {
- max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max,
- max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max,
- max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max,
- max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max,
- max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max,
- max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max,
- max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max,
- max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max,
-
- max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max,
- max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max,
- max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max,
- max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max,
- max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max,
- max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max,
- max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max,
- max, max, max, max, max, max, max, max, max, max, max, max, max, max, max, max,
- }
- };
+ Skiptable table = {};
+ q20::fill(std::begin(table.data), std::end(table.data), max);
pattern += n - max;
while (max--)
table.data[uchar(*pattern++)] = max;
diff --git a/src/corelib/text/qbytearrayview.h b/src/corelib/text/qbytearrayview.h
index 11db03c62f..45ebc812cd 100644
--- a/src/corelib/text/qbytearrayview.h
+++ b/src/corelib/text/qbytearrayview.h
@@ -1,53 +1,19 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QBYTEARRAYVIEW_H
#define QBYTEARRAYVIEW_H
#include <QtCore/qbytearrayalgorithms.h>
+#include <QtCore/qcompare.h>
+#include <QtCore/qstringfwd.h>
+#include <QtCore/qarraydata.h>
#include <string>
+#include <string_view>
+#include <QtCore/q20type_traits.h>
QT_BEGIN_NAMESPACE
-class QByteArray;
-class QLatin1String;
-
namespace QtPrivate {
template <typename Byte>
@@ -60,8 +26,7 @@ struct IsCompatibleByteTypeHelper
template <typename Byte>
struct IsCompatibleByteType
- : IsCompatibleByteTypeHelper<
- typename std::remove_cv_t<typename std::remove_reference_t<Byte>>> {};
+ : IsCompatibleByteTypeHelper<q20::remove_cvref_t<Byte>> {};
template <typename Pointer>
struct IsCompatibleByteArrayPointerHelper : std::false_type {};
@@ -70,8 +35,7 @@ struct IsCompatibleByteArrayPointerHelper<Byte *>
: IsCompatibleByteType<Byte> {};
template<typename Pointer>
struct IsCompatibleByteArrayPointer
- : IsCompatibleByteArrayPointerHelper<
- typename std::remove_cv_t<typename std::remove_reference_t<Pointer>>> {};
+ : IsCompatibleByteArrayPointerHelper<q20::remove_cvref_t<Pointer>> {};
template <typename T, typename Enable = void>
struct IsContainerCompatibleWithQByteArrayView : std::false_type {};
@@ -100,6 +64,13 @@ struct IsContainerCompatibleWithQByteArrayView<T, std::enable_if_t<
// Don't make an accidental copy constructor
std::negation<std::is_same<std::decay_t<T>, QByteArrayView>>>>> : std::true_type {};
+// Used by QLatin1StringView too
+template <typename Char>
+static constexpr qsizetype lengthHelperPointer(const Char *data) noexcept
+{
+ return qsizetype(std::char_traits<Char>::length(data));
+}
+
} // namespace QtPrivate
class Q_CORE_EXPORT QByteArrayView
@@ -138,12 +109,6 @@ private:
typename std::enable_if_t<QtPrivate::IsContainerCompatibleWithQByteArrayView<T>::value,
bool>;
- template <typename Char>
- static constexpr qsizetype lengthHelperPointer(const Char *data) noexcept
- {
- return qsizetype(std::char_traits<Char>::length(data));
- }
-
template <typename Container>
static constexpr qsizetype lengthHelperContainer(const Container &c) noexcept
{
@@ -185,7 +150,7 @@ public:
template <typename Pointer, if_compatible_pointer<Pointer> = true>
constexpr QByteArrayView(const Pointer &data) noexcept
: QByteArrayView(
- data, data ? lengthHelperPointer(data) : 0) {}
+ data, data ? QtPrivate::lengthHelperPointer(data) : 0) {}
#endif
#ifdef Q_QDOC
@@ -203,6 +168,9 @@ public:
constexpr QByteArrayView(const char (&data)[Size]) noexcept
: QByteArrayView(data, lengthHelperCharArray(data, Size)) {}
+ constexpr QByteArrayView(QLatin1StringView v) noexcept; // defined in qlatin1stringview.h
+ constexpr QByteArrayView(QUtf8StringView v) noexcept; // defined in qutf8stringview.h
+
#ifdef Q_QDOC
template <typename Byte, size_t Size>
#else
@@ -217,7 +185,7 @@ public:
[[nodiscard]] constexpr const_pointer constData() const noexcept { return data(); }
[[nodiscard]] constexpr char operator[](qsizetype n) const
- { Q_ASSERT(n >= 0); Q_ASSERT(n < size()); return m_data[n]; }
+ { verify(n, 1); return m_data[n]; }
//
// QByteArray API
@@ -225,49 +193,81 @@ public:
[[nodiscard]] constexpr char at(qsizetype n) const { return (*this)[n]; }
[[nodiscard]] constexpr QByteArrayView first(qsizetype n) const
- { Q_ASSERT(n >= 0); Q_ASSERT(n <= size()); return QByteArrayView(data(), n); }
+ { verify(0, n); return sliced(0, n); }
[[nodiscard]] constexpr QByteArrayView last(qsizetype n) const
- { Q_ASSERT(n >= 0); Q_ASSERT(n <= size()); return QByteArrayView(data() + size() - n, n); }
+ { verify(0, n); return sliced(size() - n, n); }
[[nodiscard]] constexpr QByteArrayView sliced(qsizetype pos) const
- { Q_ASSERT(pos >= 0); Q_ASSERT(pos <= size()); return QByteArrayView(data() + pos, size() - pos); }
+ { verify(pos, 0); return QByteArrayView(data() + pos, size() - pos); }
[[nodiscard]] constexpr QByteArrayView sliced(qsizetype pos, qsizetype n) const
- { Q_ASSERT(pos >= 0); Q_ASSERT(n >= 0); Q_ASSERT(size_t(pos) + size_t(n) <= size_t(size())); return QByteArrayView(data() + pos, n); }
+ { verify(pos, n); return QByteArrayView(data() + pos, n); }
[[nodiscard]] constexpr QByteArrayView chopped(qsizetype len) const
- { Q_ASSERT(len >= 0); Q_ASSERT(len <= size()); return first(size() - len); }
+ { verify(0, len); return sliced(0, size() - len); }
+
+ [[nodiscard]] constexpr QByteArrayView left(qsizetype n) const
+ { if (n < 0 || n > size()) n = size(); return QByteArrayView(data(), n); }
+ [[nodiscard]] constexpr QByteArrayView right(qsizetype n) const
+ { if (n < 0 || n > size()) n = size(); if (n < 0) n = 0; return QByteArrayView(data() + size() - n, n); }
+ [[nodiscard]] constexpr QByteArrayView mid(qsizetype pos, qsizetype n = -1) const
+ {
+ using namespace QtPrivate;
+ auto result = QContainerImplHelper::mid(size(), &pos, &n);
+ return result == QContainerImplHelper::Null ? QByteArrayView()
+ : QByteArrayView(m_data + pos, n);
+ }
constexpr void truncate(qsizetype n)
- { Q_ASSERT(n >= 0); Q_ASSERT(n <= size()); m_size = n; }
+ { verify(0, n); m_size = n; }
constexpr void chop(qsizetype n)
- { Q_ASSERT(n >= 0); Q_ASSERT(n <= size()); m_size -= n; }
+ { verify(0, n); m_size -= n; }
// Defined in qbytearray.cpp:
[[nodiscard]] QByteArrayView trimmed() const noexcept
{ return QtPrivate::trimmed(*this); }
- [[nodiscard]] short toShort(bool *ok = nullptr, int base = 10) const;
- [[nodiscard]] ushort toUShort(bool *ok = nullptr, int base = 10) const;
- [[nodiscard]] int toInt(bool *ok = nullptr, int base = 10) const;
- [[nodiscard]] uint toUInt(bool *ok = nullptr, int base = 10) const;
- [[nodiscard]] long toLong(bool *ok = nullptr, int base = 10) const;
- [[nodiscard]] ulong toULong(bool *ok = nullptr, int base = 10) const;
- [[nodiscard]] qlonglong toLongLong(bool *ok = nullptr, int base = 10) const;
- [[nodiscard]] qulonglong toULongLong(bool *ok = nullptr, int base = 10) const;
- [[nodiscard]] float toFloat(bool *ok = nullptr) const;
- [[nodiscard]] double toDouble(bool *ok = nullptr) const;
+ [[nodiscard]] short toShort(bool *ok = nullptr, int base = 10) const
+ { return QtPrivate::toIntegral<short>(*this, ok, base); }
+ [[nodiscard]] ushort toUShort(bool *ok = nullptr, int base = 10) const
+ { return QtPrivate::toIntegral<ushort>(*this, ok, base); }
+ [[nodiscard]] int toInt(bool *ok = nullptr, int base = 10) const
+ { return QtPrivate::toIntegral<int>(*this, ok, base); }
+ [[nodiscard]] uint toUInt(bool *ok = nullptr, int base = 10) const
+ { return QtPrivate::toIntegral<uint>(*this, ok, base); }
+ [[nodiscard]] long toLong(bool *ok = nullptr, int base = 10) const
+ { return QtPrivate::toIntegral<long>(*this, ok, base); }
+ [[nodiscard]] ulong toULong(bool *ok = nullptr, int base = 10) const
+ { return QtPrivate::toIntegral<ulong>(*this, ok, base); }
+ [[nodiscard]] qlonglong toLongLong(bool *ok = nullptr, int base = 10) const
+ { return QtPrivate::toIntegral<qlonglong>(*this, ok, base); }
+ [[nodiscard]] qulonglong toULongLong(bool *ok = nullptr, int base = 10) const
+ { return QtPrivate::toIntegral<qulonglong>(*this, ok, base); }
+ [[nodiscard]] float toFloat(bool *ok = nullptr) const
+ {
+ const auto r = QtPrivate::toFloat(*this);
+ if (ok)
+ *ok = bool(r);
+ return r.value_or(0.0f);
+ }
+ [[nodiscard]] double toDouble(bool *ok = nullptr) const
+ {
+ const auto r = QtPrivate::toDouble(*this);
+ if (ok)
+ *ok = bool(r);
+ return r.value_or(0.0);
+ }
[[nodiscard]] bool startsWith(QByteArrayView other) const noexcept
{ return QtPrivate::startsWith(*this, other); }
- [[nodiscard]] bool startsWith(char c) const noexcept
+ [[nodiscard]] constexpr bool startsWith(char c) const noexcept
{ return !empty() && front() == c; }
[[nodiscard]] bool endsWith(QByteArrayView other) const noexcept
{ return QtPrivate::endsWith(*this, other); }
- [[nodiscard]] bool endsWith(char c) const noexcept
+ [[nodiscard]] constexpr bool endsWith(char c) const noexcept
{ return !empty() && back() == c; }
[[nodiscard]] qsizetype indexOf(QByteArrayView a, qsizetype from = 0) const noexcept
{ return QtPrivate::findByteArray(*this, from, a); }
[[nodiscard]] qsizetype indexOf(char ch, qsizetype from = 0) const noexcept
- { return QtPrivate::findByteArray(*this, from, QByteArrayView(&ch, 1)); }
+ { return QtPrivate::findByteArray(*this, from, ch); }
[[nodiscard]] bool contains(QByteArrayView a) const noexcept
{ return indexOf(a) != qsizetype(-1); }
@@ -279,7 +279,7 @@ public:
[[nodiscard]] qsizetype lastIndexOf(QByteArrayView a, qsizetype from) const noexcept
{ return QtPrivate::lastIndexOf(*this, from, a); }
[[nodiscard]] qsizetype lastIndexOf(char ch, qsizetype from = -1) const noexcept
- { return QtPrivate::lastIndexOf(*this, from, QByteArrayView(&ch, 1)); }
+ { return QtPrivate::lastIndexOf(*this, from, ch); }
[[nodiscard]] qsizetype count(QByteArrayView a) const noexcept
{ return QtPrivate::count(*this, a); }
@@ -306,6 +306,9 @@ public:
[[nodiscard]] constexpr char front() const { Q_ASSERT(!empty()); return m_data[0]; }
[[nodiscard]] constexpr char back() const { Q_ASSERT(!empty()); return m_data[m_size - 1]; }
+ [[nodiscard]] constexpr Q_IMPLICIT operator std::string_view() const noexcept
+ { return std::string_view(m_data, size_t(m_size)); }
+
//
// Qt compatibility API:
//
@@ -316,20 +319,51 @@ public:
[[nodiscard]] constexpr char first() const { return front(); }
[[nodiscard]] constexpr char last() const { return back(); }
- friend inline bool operator==(QByteArrayView lhs, QByteArrayView rhs) noexcept
- { return lhs.size() == rhs.size() && QtPrivate::compareMemory(lhs, rhs) == 0; }
- friend inline bool operator!=(QByteArrayView lhs, QByteArrayView rhs) noexcept
- { return !(lhs == rhs); }
- friend inline bool operator< (QByteArrayView lhs, QByteArrayView rhs) noexcept
- { return QtPrivate::compareMemory(lhs, rhs) < 0; }
- friend inline bool operator<=(QByteArrayView lhs, QByteArrayView rhs) noexcept
- { return QtPrivate::compareMemory(lhs, rhs) <= 0; }
- friend inline bool operator> (QByteArrayView lhs, QByteArrayView rhs) noexcept
- { return !(lhs <= rhs); }
- friend inline bool operator>=(QByteArrayView lhs, QByteArrayView rhs) noexcept
- { return !(lhs < rhs); }
-
private:
+ Q_ALWAYS_INLINE constexpr void verify([[maybe_unused]] qsizetype pos = 0,
+ [[maybe_unused]] qsizetype n = 1) const
+ {
+ Q_ASSERT(pos >= 0);
+ Q_ASSERT(pos <= size());
+ Q_ASSERT(n >= 0);
+ Q_ASSERT(n <= size() - pos);
+ }
+
+ friend bool
+ comparesEqual(const QByteArrayView &lhs, const QByteArrayView &rhs) noexcept
+ {
+ return lhs.size() == rhs.size()
+ && (!lhs.size() || memcmp(lhs.data(), rhs.data(), lhs.size()) == 0);
+ }
+ friend Qt::strong_ordering
+ compareThreeWay(const QByteArrayView &lhs, const QByteArrayView &rhs) noexcept
+ {
+ const int res = QtPrivate::compareMemory(lhs, rhs);
+ return Qt::compareThreeWay(res, 0);
+ }
+ Q_DECLARE_STRONGLY_ORDERED(QByteArrayView)
+
+ friend bool comparesEqual(const QByteArrayView &lhs, const char *rhs) noexcept
+ { return comparesEqual(lhs, QByteArrayView(rhs)); }
+ friend Qt::strong_ordering
+ compareThreeWay(const QByteArrayView &lhs, const char *rhs) noexcept
+ { return compareThreeWay(lhs, QByteArrayView(rhs)); }
+ Q_DECLARE_STRONGLY_ORDERED(QByteArrayView, const char *)
+
+ // defined in qstring.cpp
+ friend Q_CORE_EXPORT bool
+ comparesEqual(const QByteArrayView &lhs, const QChar &rhs) noexcept;
+ friend Q_CORE_EXPORT Qt::strong_ordering
+ compareThreeWay(const QByteArrayView &lhs, const QChar &rhs) noexcept;
+ friend Q_CORE_EXPORT bool
+ comparesEqual(const QByteArrayView &lhs, char16_t rhs) noexcept;
+ friend Q_CORE_EXPORT Qt::strong_ordering
+ compareThreeWay(const QByteArrayView &lhs, char16_t rhs) noexcept;
+#if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
+ Q_DECLARE_STRONGLY_ORDERED(QByteArrayView, QChar, QT_ASCII_CAST_WARN)
+ Q_DECLARE_STRONGLY_ORDERED(QByteArrayView, char16_t, QT_ASCII_CAST_WARN)
+#endif // !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
+
qsizetype m_size;
const storage_type *m_data;
};
@@ -338,7 +372,7 @@ Q_DECLARE_TYPEINFO(QByteArrayView, Q_PRIMITIVE_TYPE);
template<typename QByteArrayLike,
std::enable_if_t<std::is_same_v<QByteArrayLike, QByteArray>, bool> = true>
[[nodiscard]] inline QByteArrayView qToByteArrayViewIgnoringNull(const QByteArrayLike &b) noexcept
-{ return QByteArrayView(b.data(), b.size()); }
+{ return QByteArrayView(b.begin(), b.size()); }
inline int QByteArrayView::compare(QByteArrayView a, Qt::CaseSensitivity cs) const noexcept
{
@@ -353,6 +387,20 @@ inline quint16 qChecksum(const char *s, qsizetype len,
{ return qChecksum(QByteArrayView(s, len), standard); }
#endif
+qsizetype QtPrivate::findByteArray(QByteArrayView haystack, qsizetype from, char needle) noexcept
+{
+ if (from < 0)
+ from = qMax(from + haystack.size(), qsizetype(0));
+ if (from < haystack.size()) {
+ const char *const b = haystack.data();
+ if (const auto n = static_cast<const char *>(
+ memchr(b + from, needle, static_cast<size_t>(haystack.size() - from)))) {
+ return n - b;
+ }
+ }
+ return -1;
+}
+
QT_END_NAMESPACE
#endif // QBYTEARRAYVIEW_H
diff --git a/src/corelib/text/qbytearrayview.qdoc b/src/corelib/text/qbytearrayview.qdoc
index 96bb1ccb56..eb890917eb 100644
--- a/src/corelib/text/qbytearrayview.qdoc
+++ b/src/corelib/text/qbytearrayview.qdoc
@@ -1,29 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\class QByteArrayView
@@ -38,6 +14,15 @@
\reentrant
+ \compares strong
+ \compareswith strong QByteArray {const char *}
+ \endcompareswith
+ \compareswith strong QString QStringView QUtf8StringView QLatin1StringView \
+ QChar char16_t
+ When comparing with string and Unicode character types, the content is
+ interpreted as UTF-8.
+ \endcompareswith
+
A QByteArrayView references a contiguous portion of raw bytes it does
not own. It acts as an interface type to all kinds of byte-array-like data,
without the need to construct a QByteArray first.
@@ -80,6 +65,12 @@
If in doubt, obtain a strong reference to the data by calling toByteArray() to convert
the QByteArrayView into a QByteArray.
+ The methods supported by QByteArrayView reflect those of \l QByteArray. In
+ particular, to the limited degree that it ascribes semantics (such as
+ character case, spacing, digits of numbers) to the character data viewed, it
+ uses the C locale and ASCII encoding. See \l {C locale and ASCII functions}
+ for details and the limitations on these methods.
+
\section1 Compatible Byte Types
QByteArrayView can be constructed on any container of bytes, where the byte type
@@ -202,7 +193,7 @@
*/
/*!
- \fn template <typename Byte> QByteArrayView::QByteArrayView(const Byte *data, qsizetype len)
+ \fn template <typename Byte, QByteArrayView::if_compatible_byte<Byte> = true> QByteArrayView::QByteArrayView(const Byte *data, qsizetype len)
Constructs a byte array view on \a data with length \a len.
@@ -220,7 +211,7 @@
*/
/*!
- \fn template <typename Byte> QByteArrayView::QByteArrayView(const Byte *first, const Byte *last)
+ \fn template <typename Byte, QByteArrayView::if_compatible_byte<Byte> = true> QByteArrayView::QByteArrayView(const Byte *first, const Byte *last)
Constructs a byte array view on \a first with length (\a last - \a first).
@@ -288,7 +279,7 @@
*/
/*!
- \fn template <typename Container> QByteArrayView::QByteArrayView(const Container &c)
+ \fn template <typename Container, QByteArrayView::if_compatible_container<Container> = true> QByteArrayView::QByteArrayView(const Container &c)
Constructs a byte array view on the array-like container \a c. The length and data
are set via \c{std::size(c)} and \c{std::data(c)} respectively.
@@ -296,7 +287,7 @@
The container's data must remain valid for the lifetime of this byte array view object.
This constructor participates in overload resolution if \a c is any contiguous
- container container with elements of a compatible byte type.
+ container with elements of a compatible byte type.
\sa {Compatible Byte Types}
*/
@@ -323,10 +314,6 @@
The return value will be a null QByteArray if and only if this byte array
view is null.
-
- \warning QByteArrayView can store data with more than 2\sup{31} bytes while
- QByteArray cannot. Calling this function on a byte array view for which size()
- returns a value greater than \c{INT_MAX / 2} constitutes undefined behavior.
*/
/*!
@@ -354,12 +341,12 @@
*/
/*! //! friend
- \fn int QByteArrayView::operator==(QByteArrayView lhs, QByteArrayView rhs)
- \fn int QByteArrayView::operator!=(QByteArrayView lhs, QByteArrayView rhs)
- \fn int QByteArrayView::operator< (QByteArrayView lhs, QByteArrayView rhs)
- \fn int QByteArrayView::operator<=(QByteArrayView lhs, QByteArrayView rhs)
- \fn int QByteArrayView::operator> (QByteArrayView lhs, QByteArrayView rhs)
- \fn int QByteArrayView::operator>=(QByteArrayView lhs, QByteArrayView rhs)
+ \fn int QByteArrayView::operator==(const QByteArrayView &lhs, const QByteArrayView &rhs)
+ \fn int QByteArrayView::operator!=(const QByteArrayView &lhs, const QByteArrayView &rhs)
+ \fn int QByteArrayView::operator< (const QByteArrayView &lhs, const QByteArrayView &rhs)
+ \fn int QByteArrayView::operator<=(const QByteArrayView &lhs, const QByteArrayView &rhs)
+ \fn int QByteArrayView::operator> (const QByteArrayView &lhs, const QByteArrayView &rhs)
+ \fn int QByteArrayView::operator>=(const QByteArrayView &lhs, const QByteArrayView &rhs)
Comparison operators for QByteArrayView.
*/
@@ -503,7 +490,7 @@
*/
/*!
- \fn int QByteArrayView::length() const
+ \fn QByteArrayView::length() const
Same as size().
@@ -584,8 +571,10 @@
Returns a byte array view that points to \a n bytes of this byte array
view, starting at position \a pos.
+//! [UB-sliced-index-length]
\note The behavior is undefined when \a pos < 0, \a n < 0,
or \a pos + \a n > size().
+//! [UB-sliced-index-length]
\sa first(), last(), chopped(), chop(), truncate()
*/
@@ -596,7 +585,9 @@
Returns a byte array view starting at position \a pos in this object,
and extending to its end.
+//! [UB-sliced-index-only]
\note The behavior is undefined when \a pos < 0 or \a pos > size().
+//! [UB-sliced-index-only]
\sa first(), last(), chopped(), chop(), truncate()
*/
@@ -640,6 +631,54 @@
*/
/*!
+ \fn QByteArrayView QByteArrayView::mid(qsizetype start, qsizetype length) const
+ \since 6.5
+
+ \deprecated Use sliced() instead in new code.
+
+ Returns the subarray of length \a length starting at position
+ \a start in this object.
+
+ Returns an empty byte array view if \a start exceeds the
+ length of the byte array view. If there are less than \a length characters
+ available in the byte array view starting at \a start, or if
+ \a length is negative (default), the function returns all characters that
+ are available from \a start.
+
+ \sa first(), last(), sliced(), chopped(), chop(), truncate()
+*/
+
+/*!
+ \fn QByteArrayView QByteArrayView::left(qsizetype length) const
+ \since 6.5
+
+ \deprecated Use first() instead in new code.
+
+ Returns the subarray of length \a length starting at position
+ 0 in this object.
+
+ The entire byte array view is returned if \a length is greater than or equal
+ to size(), or less than zero.
+
+ \sa first(), last(), sliced(), startsWith(), chopped(), chop(), truncate()
+*/
+
+/*!
+ \fn QByteArrayView QByteArrayView::right(qsizetype length) const
+ \since 6.5
+
+ \deprecated Use last() instead in new code.
+
+ Returns the subarray of length \a length starting at position
+ size() - \a length in this object.
+
+ The entire byte array view is returned if \a length is greater than or equal
+ to size(), or less than zero.
+
+ \sa first(), last(), sliced(), endsWith(), chopped(), chop(), truncate()
+*/
+
+/*!
\fn QByteArrayView QByteArrayView::trimmed() const noexcept
\since 6.3
@@ -923,8 +962,7 @@
respectively, in this byte array view, searching forward from index position
\a from.Returns -1 if no match is found.
- If \a from is -1, the search starts at the last character; if it is
- -2, at the next to last character and so on.
+ \include qstring.qdocinc negative-index-start-search-from-end
\sa lastIndexOf(), contains()
*/
@@ -947,8 +985,10 @@
Returns the index position of either the start of the last occurrence of
the sequence of bytes viewed by \a bv or the last occurrence of byte \a ch,
respectively, in this byte array view, searching backward from index position
- \a from. If \a from is -1, the search starts at the last character;
- if \a from is -2, at the next to last character and so on.
+ \a from.
+
+ \include qstring.qdocinc negative-index-start-search-from-end
+
Returns -1 if no match is found.
\note When searching for a 0-length \a bv, the match at the end of
@@ -1005,3 +1045,12 @@
\sa QByteArray::isNull(), QByteArrayView
*/
+
+/*!
+ \fn QByteArrayView::operator std::string_view() const
+ \since 6.7
+
+ Converts this QByteArrayView object to a \c{std::string_view} object.
+ The returned view will have the same data pointer and length of
+ this view.
+*/
diff --git a/src/corelib/text/qbytedata_p.h b/src/corelib/text/qbytedata_p.h
index 3c36085021..fcbf82d6ce 100644
--- a/src/corelib/text/qbytedata_p.h
+++ b/src/corelib/text/qbytedata_p.h
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QBYTEDATA_P_H
#define QBYTEDATA_P_H
@@ -55,6 +19,8 @@
#include <qbytearray.h>
#include <QtCore/qlist.h>
+#include <climits>
+
QT_BEGIN_NAMESPACE
// this class handles a list of QByteArrays. It is a variant of QRingBuffer
@@ -139,6 +105,7 @@ public:
// preferably use this function to read data.
inline QByteArray read()
{
+ Q_ASSERT(!isEmpty());
squeezeFirst();
bufferCompleteSize -= buffers.first().size();
return buffers.takeFirst();
@@ -156,8 +123,15 @@ public:
inline QByteArray read(qint64 amount)
{
amount = qMin(byteAmount(), amount);
+ if constexpr (sizeof(qsizetype) == sizeof(int)) { // 32-bit
+ // While we cannot overall have more than INT_MAX memory allocated,
+ // the QByteArrays we hold may be shared copies of each other,
+ // causing byteAmount() to exceed INT_MAX.
+ if (amount > INT_MAX)
+ qBadAlloc(); // what resize() would do if it saw past the truncation
+ }
QByteArray byteData;
- byteData.resize(amount);
+ byteData.resize(qsizetype(amount));
read(byteData.data(), byteData.size());
return byteData;
}
@@ -265,9 +239,9 @@ public:
}
// the number of QByteArrays
- inline int bufferCount() const
+ qsizetype bufferCount() const
{
- return buffers.length();
+ return buffers.size();
}
inline bool isEmpty() const
@@ -283,7 +257,7 @@ public:
return buffers.first().size() - firstPos;
}
- inline QByteArray& operator[](int i)
+ QByteArray &operator[](qsizetype i)
{
if (i == 0)
squeezeFirst();
@@ -292,13 +266,13 @@ public:
}
inline bool canReadLine() const {
- int i = 0;
- if (i < buffers.length()) {
+ qsizetype i = 0;
+ if (i < buffers.size()) {
if (buffers.at(i).indexOf('\n', firstPos) != -1)
return true;
++i;
- for (; i < buffers.length(); i++)
+ for (; i < buffers.size(); i++)
if (buffers.at(i).contains('\n'))
return true;
}
diff --git a/src/corelib/text/qchar.cpp b/src/corelib/text/qchar.cpp
index d4a30c1dc6..63296a92de 100644
--- a/src/corelib/text/qchar.cpp
+++ b/src/corelib/text/qchar.cpp
@@ -1,50 +1,6 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-// Don't define it while compiling this module, or USERS of Qt will
-// not be able to link.
-#ifdef QT_NO_CAST_FROM_ASCII
-# undef QT_NO_CAST_FROM_ASCII
-#endif
-#ifdef QT_NO_CAST_TO_ASCII
-# undef QT_NO_CAST_TO_ASCII
-#endif
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
#include "qchar.h"
#include "qdatastream.h"
@@ -68,7 +24,7 @@ QT_BEGIN_NAMESPACE
This class is only useful to construct a QChar with 8-bit character.
- \sa QChar, QLatin1String, QString
+ \sa QChar, QLatin1StringView, QString
*/
/*!
@@ -99,6 +55,13 @@ QT_BEGIN_NAMESPACE
\ingroup string-processing
\reentrant
+ \compares strong
+ \compareswith strong char16_t QString QStringView QLatin1StringView QUtf8StringView
+ \endcompareswith
+ \compareswith strong {const char *} QByteArray QByteArrayView
+ The contents of the byte array is interpreted as utf-8.
+ \endcompareswith
+
In Qt, Unicode characters are 16-bit entities without any markup
or structure. This class represents such an entity. It is
lightweight, so it can be used everywhere. Most compilers treat
@@ -190,16 +153,18 @@ QT_BEGIN_NAMESPACE
\value Unicode_6_0 Version 6.0
\value Unicode_6_1 Version 6.1
\value Unicode_6_2 Version 6.2
- \value Unicode_6_3 Version 6.3 Since Qt 5.3
- \value Unicode_7_0 Version 7.0 Since Qt 5.5
- \value Unicode_8_0 Version 8.0 Since Qt 5.6
- \value Unicode_9_0 Version 9.0 Since Qt 5.11
- \value Unicode_10_0 Version 10.0 Since Qt 5.11
- \value Unicode_11_0 Version 11.0 Since Qt 5.15
- \value Unicode_12_0 Version 12.0 Since Qt 5.15
- \value Unicode_12_1 Version 12.1 Since Qt 5.15
- \value Unicode_13_0 Version 13.0 Since Qt 5.15
- \value Unicode_14_0 Version 14.0 Since Qt 6.3
+ \value [since 5.3] Unicode_6_3 Version 6.3
+ \value [since 5.5] Unicode_7_0 Version 7.0
+ \value [since 5.6] Unicode_8_0 Version 8.0
+ \value [since 5.11] Unicode_9_0 Version 9.0
+ \value [since 5.11] Unicode_10_0 Version 10.0
+ \value [since 5.15] Unicode_11_0 Version 11.0
+ \value [since 5.15] Unicode_12_0 Version 12.0
+ \value [since 5.15] Unicode_12_1 Version 12.1
+ \value [since 5.15] Unicode_13_0 Version 13.0
+ \value [since 6.3] Unicode_14_0 Version 14.0
+ \value [since 6.5] Unicode_15_0 Version 15.0
+ \value [since 6.8] Unicode_15_1 Version 15.1
\value Unicode_Unassigned The value is not assigned to any character
in version 8.0 of Unicode.
@@ -299,18 +264,18 @@ QT_BEGIN_NAMESPACE
\value Script_Common For characters that may be used with multiple scripts
and that do not inherit their script from the preceding characters.
- \value Script_Adlam Since Qt 5.11
- \value Script_Ahom Since Qt 5.6
- \value Script_AnatolianHieroglyphs Since Qt 5.6
+ \value [since 5.11] Script_Adlam
+ \value [since 5.6] Script_Ahom
+ \value [since 5.6] Script_AnatolianHieroglyphs
\value Script_Arabic
\value Script_Armenian
\value Script_Avestan
\value Script_Balinese
\value Script_Bamum
- \value Script_BassaVah Since Qt 5.5
+ \value [since 5.5] Script_BassaVah
\value Script_Batak
\value Script_Bengali
- \value Script_Bhaiksuki Since Qt 5.11
+ \value [since 5.11] Script_Bhaiksuki
\value Script_Bopomofo
\value Script_Brahmi
\value Script_Braille
@@ -318,38 +283,38 @@ QT_BEGIN_NAMESPACE
\value Script_Buhid
\value Script_CanadianAboriginal
\value Script_Carian
- \value Script_CaucasianAlbanian Since Qt 5.5
+ \value [since 5.5] Script_CaucasianAlbanian
\value Script_Chakma
\value Script_Cham
\value Script_Cherokee
- \value Script_Chorasmian Since Qt 5.15
+ \value [since 5.15] Script_Chorasmian
\value Script_Coptic
\value Script_Cuneiform
\value Script_Cypriot
- \value Script_CyproMinoan Since Qt 6.3
+ \value [since 6.3] Script_CyproMinoan
\value Script_Cyrillic
\value Script_Deseret
\value Script_Devanagari
- \value Script_DivesAkuru Since Qt 5.15
- \value Script_Dogra Since Qt 5.15
- \value Script_Duployan Since Qt 5.5
+ \value [since 5.15] Script_DivesAkuru
+ \value [since 5.15] Script_Dogra
+ \value [since 5.5] Script_Duployan
\value Script_EgyptianHieroglyphs
- \value Script_Elbasan Since Qt 5.5
- \value Script_Elymaic Since Qt 5.15
+ \value [since 5.5] Script_Elbasan
+ \value [since 5.15] Script_Elymaic
\value Script_Ethiopic
\value Script_Georgian
\value Script_Glagolitic
\value Script_Gothic
- \value Script_Grantha Since Qt 5.5
+ \value [since 5.5] Script_Grantha
\value Script_Greek
\value Script_Gujarati
- \value Script_GunjalaGondi Since Qt 5.15
+ \value [since 5.15] Script_GunjalaGondi
\value Script_Gurmukhi
\value Script_Han
\value Script_Hangul
- \value Script_HanifiRohingya Since Qt 5.15
+ \value [since 5.15] Script_HanifiRohingya
\value Script_Hanunoo
- \value Script_Hatran Since Qt 5.6
+ \value [since 5.6] Script_Hatran
\value Script_Hebrew
\value Script_Hiragana
\value Script_ImperialAramaic
@@ -359,78 +324,80 @@ QT_BEGIN_NAMESPACE
\value Script_Kaithi
\value Script_Kannada
\value Script_Katakana
+ \value [since 6.5] Script_Kawi
\value Script_KayahLi
\value Script_Kharoshthi
- \value Script_KhitanSmallScript Since Qt 5.15
+ \value [since 5.15] Script_KhitanSmallScript
\value Script_Khmer
- \value Script_Khojki Since Qt 5.5
- \value Script_Khudawadi Since Qt 5.5
+ \value [since 5.5] Script_Khojki
+ \value [since 5.5] Script_Khudawadi
\value Script_Lao
\value Script_Latin
\value Script_Lepcha
\value Script_Limbu
- \value Script_LinearA Since Qt 5.5
+ \value [since 5.5] Script_LinearA
\value Script_LinearB
\value Script_Lisu
\value Script_Lycian
\value Script_Lydian
- \value Script_Mahajani Since Qt 5.5
- \value Script_Makasar Since Qt 5.15
+ \value [since 5.5] Script_Mahajani
+ \value [since 5.15] Script_Makasar
\value Script_Malayalam
\value Script_Mandaic
- \value Script_Manichaean Since Qt 5.5
- \value Script_Marchen Since Qt 5.11
- \value Script_MasaramGondi Since Qt 5.11
- \value Script_Medefaidrin Since Qt 5.15
+ \value [since 5.5] Script_Manichaean
+ \value [since 5.11] Script_Marchen
+ \value [since 5.11] Script_MasaramGondi
+ \value [since 5.15] Script_Medefaidrin
\value Script_MeeteiMayek
- \value Script_MendeKikakui Since Qt 5.5
+ \value [since 5.5] Script_MendeKikakui
\value Script_MeroiticCursive
\value Script_MeroiticHieroglyphs
\value Script_Miao
- \value Script_Modi Since Qt 5.5
+ \value [since 5.5] Script_Modi
\value Script_Mongolian
- \value Script_Mro Since Qt 5.5
- \value Script_Multani Since Qt 5.6
+ \value [since 5.5] Script_Mro
+ \value [since 5.6] Script_Multani
\value Script_Myanmar
- \value Script_Nabataean Since Qt 5.5
- \value Script_Nandinagari Since Qt 5.15
- \value Script_Newa Since Qt 5.11
+ \value [since 5.5] Script_Nabataean
+ \value [since 6.3] Script_NagMundari
+ \value [since 5.15] Script_Nandinagari
+ \value [since 5.11] Script_Newa
\value Script_NewTaiLue
\value Script_Nko
- \value Script_Nushu Since Qt 5.11
- \value Script_NyiakengPuachueHmong Since Qt 5.15
+ \value [since 5.11] Script_Nushu
+ \value [since 5.15] Script_NyiakengPuachueHmong
\value Script_Ogham
\value Script_OlChiki
- \value Script_OldHungarian Since Qt 5.6
+ \value [since 5.6] Script_OldHungarian
\value Script_OldItalic
- \value Script_OldNorthArabian Since Qt 5.5
- \value Script_OldPermic Since Qt 5.5
+ \value [since 5.5] Script_OldNorthArabian
+ \value [since 5.5] Script_OldPermic
\value Script_OldPersian
- \value Script_OldSogdian Since Qt 5.15
+ \value [since 5.15] Script_OldSogdian
\value Script_OldSouthArabian
\value Script_OldTurkic
- \value Script_OldUyghur Since Qt 6.3
+ \value [since 6.3] Script_OldUyghur
\value Script_Oriya
- \value Script_Osage Since Qt 5.11
+ \value [since 5.11] Script_Osage
\value Script_Osmanya
- \value Script_PahawhHmong Since Qt 5.5
- \value Script_Palmyrene Since Qt 5.5
- \value Script_PauCinHau Since Qt 5.5
+ \value [since 5.5] Script_PahawhHmong
+ \value [since 5.5] Script_Palmyrene
+ \value [since 5.5] Script_PauCinHau
\value Script_PhagsPa
\value Script_Phoenician
- \value Script_PsalterPahlavi Since Qt 5.5
+ \value [since 5.5] Script_PsalterPahlavi
\value Script_Rejang
\value Script_Runic
\value Script_Samaritan
\value Script_Saurashtra
\value Script_Sharada
\value Script_Shavian
- \value Script_Siddham Since Qt 5.5
- \value Script_SignWriting Since Qt 5.6
+ \value [since 5.5] Script_Siddham
+ \value [since 5.6] Script_SignWriting
\value Script_Sinhala
- \value Script_Sogdian Since Qt 5.15
+ \value [since 5.15] Script_Sogdian
\value Script_SoraSompeng
- \value Script_Soyombo Since Qt 5.11
+ \value [since 5.11] Script_Soyombo
\value Script_Sundanese
\value Script_SylotiNagri
\value Script_Syriac
@@ -441,23 +408,23 @@ QT_BEGIN_NAMESPACE
\value Script_TaiViet
\value Script_Takri
\value Script_Tamil
- \value Script_Tangut Since Qt 5.11
- \value Script_Tangsa Since Qt 6.3
+ \value [since 5.11] Script_Tangut
+ \value [since 6.3] Script_Tangsa
\value Script_Telugu
\value Script_Thaana
\value Script_Thai
\value Script_Tibetan
\value Script_Tifinagh
- \value Script_Tirhuta Since Qt 5.5
- \value Script_Toto Since Qt 6.3
+ \value [since 5.5] Script_Tirhuta
+ \value [since 6.3] Script_Toto
\value Script_Ugaritic
\value Script_Vai
- \value Script_Vithkuqi Since Qt 6.3
- \value Script_Wancho Since Qt 5.15
- \value Script_WarangCiti Since Qt 5.5
- \value Script_Yezidi Since Qt 5.15
+ \value [since 6.3] Script_Vithkuqi
+ \value [since 5.15] Script_Wancho
+ \value [since 5.5] Script_WarangCiti
+ \value [since 5.15] Script_Yezidi
\value Script_Yi
- \value Script_ZanabazarSquare Since Qt 5.11
+ \value [since 5.11] Script_ZanabazarSquare
\omitvalue ScriptCount
@@ -482,18 +449,18 @@ QT_BEGIN_NAMESPACE
\value DirEN
\value DirES
\value DirET
- \value DirFSI Since Qt 5.3
+ \value [since 5.3] DirFSI
\value DirL
\value DirLRE
- \value DirLRI Since Qt 5.3
+ \value [since 5.3] DirLRI
\value DirLRO
\value DirNSM
\value DirON
\value DirPDF
- \value DirPDI Since Qt 5.3
+ \value [since 5.3] DirPDI
\value DirR
\value DirRLE
- \value DirRLI Since Qt 5.3
+ \value [since 5.3] DirRLI
\value DirRLO
\value DirS
\value DirWS
@@ -599,7 +566,7 @@ QT_BEGIN_NAMESPACE
\value ByteOrderSwapped
\value ParagraphSeparator
\value LineSeparator
- \value VisualTabCharacter Used to represent a tabulation as a horizontal arrow. Since 6.2.
+ \value [since 6.2] VisualTabCharacter Used to represent a tabulation as a horizontal arrow.
\value LastValidCodePoint
*/
@@ -1401,7 +1368,7 @@ static const QChar * QT_FASTCALL decompositionHelper(
{
if (ucs4 >= Hangul_SBase && ucs4 < Hangul_SBase + Hangul_SCount) {
// compute Hangul syllable decomposition as per UAX #15
- const uint SIndex = ucs4 - Hangul_SBase;
+ const char32_t SIndex = ucs4 - Hangul_SBase;
buffer[0] = QChar(Hangul_LBase + SIndex / Hangul_NCount); // L
buffer[1] = QChar(Hangul_VBase + (SIndex % Hangul_NCount) / Hangul_TCount); // V
buffer[2] = QChar(Hangul_TBase + SIndex % Hangul_TCount); // T
@@ -1780,47 +1747,64 @@ QDataStream &operator>>(QDataStream &in, QChar &chr)
*****************************************************************************/
/*!
- \fn bool QChar::operator==(QChar c1, QChar c2)
+ \fn bool QChar::operator==(const QChar &c1, const QChar &c2)
Returns \c true if \a c1 and \a c2 are the same Unicode character;
otherwise returns \c false.
*/
/*!
- \fn int QChar::operator!=(QChar c1, QChar c2)
+ \fn bool QChar::operator!=(const QChar &c1, const QChar &c2)
Returns \c true if \a c1 and \a c2 are not the same Unicode
character; otherwise returns \c false.
*/
/*!
- \fn int QChar::operator<=(QChar c1, QChar c2)
+ \fn bool QChar::operator<=(const QChar &c1, const QChar &c2)
Returns \c true if the numeric Unicode value of \a c1 is less than
or equal to that of \a c2; otherwise returns \c false.
*/
/*!
- \fn int QChar::operator>=(QChar c1, QChar c2)
+ \fn bool QChar::operator>=(const QChar &c1, const QChar &c2)
Returns \c true if the numeric Unicode value of \a c1 is greater than
or equal to that of \a c2; otherwise returns \c false.
*/
/*!
- \fn int QChar::operator<(QChar c1, QChar c2)
+ \fn bool QChar::operator<(const QChar &c1, const QChar &c2)
Returns \c true if the numeric Unicode value of \a c1 is less than
that of \a c2; otherwise returns \c false.
*/
/*!
- \fn int QChar::operator>(QChar c1, QChar c2)
+ \fn bool QChar::operator>(const QChar &c1, const QChar &c2)
Returns \c true if the numeric Unicode value of \a c1 is greater than
that of \a c2; otherwise returns \c false.
*/
+/*!
+ \fn Qt::Literals::StringLiterals::operator""_L1(char ch)
+
+ \relates QLatin1Char
+ \since 6.4
+
+ Literal operator that creates a QLatin1Char out of \a ch.
+
+ The following code creates a QLatin1Char:
+ \code
+ using namespace Qt::Literals::StringLiterals;
+
+ auto ch = 'a'_L1;
+ \endcode
+
+ \sa Qt::Literals::StringLiterals
+*/
// ---------------------------------------------------------------------------
@@ -1834,7 +1818,7 @@ static void decomposeHelper(QString *str, bool canonical, QChar::UnicodeVersion
QString &s = *str;
const unsigned short *utf16 = reinterpret_cast<unsigned short *>(s.data());
- const unsigned short *uc = utf16 + s.length();
+ const unsigned short *uc = utf16 + s.size();
while (uc != utf16 + from) {
char32_t ucs4 = *(--uc);
if (QChar(ucs4).isLowSurrogate() && uc != utf16) {
@@ -1880,26 +1864,26 @@ struct UCS2SurrogatePair {
inline bool operator<(const UCS2SurrogatePair &ligature1, const UCS2SurrogatePair &ligature2)
{ return QChar::surrogateToUcs4(ligature1.p1.u1, ligature1.p1.u2) < QChar::surrogateToUcs4(ligature2.p1.u1, ligature2.p1.u2); }
-inline bool operator<(uint u1, const UCS2SurrogatePair &ligature)
+inline bool operator<(char32_t u1, const UCS2SurrogatePair &ligature)
{ return u1 < QChar::surrogateToUcs4(ligature.p1.u1, ligature.p1.u2); }
-inline bool operator<(const UCS2SurrogatePair &ligature, uint u1)
+inline bool operator<(const UCS2SurrogatePair &ligature, char32_t u1)
{ return QChar::surrogateToUcs4(ligature.p1.u1, ligature.p1.u2) < u1; }
-static uint inline ligatureHelper(uint u1, uint u2)
+static char32_t inline ligatureHelper(char32_t u1, char32_t u2)
{
if (u1 >= Hangul_LBase && u1 < Hangul_SBase + Hangul_SCount) {
// compute Hangul syllable composition as per UAX #15
// hangul L-V pair
- const uint LIndex = u1 - Hangul_LBase;
+ const char32_t LIndex = u1 - Hangul_LBase;
if (LIndex < Hangul_LCount) {
- const uint VIndex = u2 - Hangul_VBase;
+ const char32_t VIndex = u2 - Hangul_VBase;
if (VIndex < Hangul_VCount)
return Hangul_SBase + (LIndex * Hangul_VCount + VIndex) * Hangul_TCount;
}
// hangul LV-T pair
- const uint SIndex = u1 - Hangul_SBase;
+ const char32_t SIndex = u1 - Hangul_SBase;
if (SIndex < Hangul_SCount && (SIndex % Hangul_TCount) == 0) {
- const uint TIndex = u2 - Hangul_TBase;
+ const char32_t TIndex = u2 - Hangul_TBase;
if (TIndex < Hangul_TCount && TIndex)
return u1 + TIndex;
}
@@ -1929,19 +1913,19 @@ static void composeHelper(QString *str, QChar::UnicodeVersion version, qsizetype
{
QString &s = *str;
- if (from < 0 || s.length() - from < 2)
+ if (from < 0 || s.size() - from < 2)
return;
- uint stcode = 0; // starter code point
+ char32_t stcode = 0; // starter code point
qsizetype starter = -1; // starter position
qsizetype next = -1; // to prevent i == next
int lastCombining = 255; // to prevent combining > lastCombining
qsizetype pos = from;
- while (pos < s.length()) {
+ while (pos < s.size()) {
qsizetype i = pos;
char32_t uc = s.at(pos).unicode();
- if (QChar(uc).isHighSurrogate() && pos < s.length()-1) {
+ if (QChar(uc).isHighSurrogate() && pos < s.size()-1) {
ushort low = s.at(pos+1).unicode();
if (QChar(low).isLowSurrogate()) {
uc = QChar::surrogateToUcs4(uc, low);
@@ -1961,7 +1945,7 @@ static void composeHelper(QString *str, QChar::UnicodeVersion version, qsizetype
int combining = p->combiningClass;
if ((i == next || combining > lastCombining) && starter >= from) {
// allowed to form ligature with S
- uint ligature = ligatureHelper(stcode, uc);
+ char32_t ligature = ligatureHelper(stcode, uc);
if (ligature) {
stcode = ligature;
QChar *d = s.data();
@@ -1988,7 +1972,7 @@ static void composeHelper(QString *str, QChar::UnicodeVersion version, qsizetype
static void canonicalOrderHelper(QString *str, QChar::UnicodeVersion version, qsizetype from)
{
QString &s = *str;
- const qsizetype l = s.length()-1;
+ const qsizetype l = s.size()-1;
char32_t u1, u2;
char16_t c1, c2;
@@ -2076,8 +2060,8 @@ static bool normalizationQuickCheckHelper(QString *str, QString::NormalizationFo
enum { NFQC_YES = 0, NFQC_NO = 1, NFQC_MAYBE = 3 };
- const ushort *string = reinterpret_cast<const ushort *>(str->constData());
- qsizetype length = str->length();
+ const auto *string = reinterpret_cast<const char16_t *>(str->constData());
+ qsizetype length = str->size();
// this avoids one out of bounds check in the loop
while (length > from && QChar::isHighSurrogate(string[length - 1]))
@@ -2120,8 +2104,8 @@ static bool normalizationQuickCheckHelper(QString *str, QString::NormalizationFo
*lastStable = pos;
}
- if (length != str->length()) // low surrogate parts at the end of text
- *lastStable = str->length() - 1;
+ if (length != str->size()) // low surrogate parts at the end of text
+ *lastStable = str->size() - 1;
return true;
}
diff --git a/src/corelib/text/qchar.h b/src/corelib/text/qchar.h
index f8d63c54f1..c0c53664c2 100644
--- a/src/corelib/text/qchar.h
+++ b/src/corelib/text/qchar.h
@@ -1,46 +1,11 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QCHAR_H
#define QCHAR_H
#include <QtCore/qglobal.h>
+#include <QtCore/qcompare.h>
#include <functional> // for std::hash
@@ -56,32 +21,27 @@ public:
constexpr inline char toLatin1() const noexcept { return ch; }
constexpr inline char16_t unicode() const noexcept { return char16_t(uchar(ch)); }
- friend constexpr inline bool operator==(QLatin1Char lhs, QLatin1Char rhs) noexcept { return lhs.ch == rhs.ch; }
- friend constexpr inline bool operator!=(QLatin1Char lhs, QLatin1Char rhs) noexcept { return lhs.ch != rhs.ch; }
- friend constexpr inline bool operator<=(QLatin1Char lhs, QLatin1Char rhs) noexcept { return lhs.ch <= rhs.ch; }
- friend constexpr inline bool operator>=(QLatin1Char lhs, QLatin1Char rhs) noexcept { return lhs.ch >= rhs.ch; }
- friend constexpr inline bool operator< (QLatin1Char lhs, QLatin1Char rhs) noexcept { return lhs.ch < rhs.ch; }
- friend constexpr inline bool operator> (QLatin1Char lhs, QLatin1Char rhs) noexcept { return lhs.ch > rhs.ch; }
-
- friend constexpr inline bool operator==(char lhs, QLatin1Char rhs) noexcept { return lhs == rhs.toLatin1(); }
- friend constexpr inline bool operator!=(char lhs, QLatin1Char rhs) noexcept { return lhs != rhs.toLatin1(); }
- friend constexpr inline bool operator<=(char lhs, QLatin1Char rhs) noexcept { return lhs <= rhs.toLatin1(); }
- friend constexpr inline bool operator>=(char lhs, QLatin1Char rhs) noexcept { return lhs >= rhs.toLatin1(); }
- friend constexpr inline bool operator< (char lhs, QLatin1Char rhs) noexcept { return lhs < rhs.toLatin1(); }
- friend constexpr inline bool operator> (char lhs, QLatin1Char rhs) noexcept { return lhs > rhs.toLatin1(); }
-
- friend constexpr inline bool operator==(QLatin1Char lhs, char rhs) noexcept { return lhs.toLatin1() == rhs; }
- friend constexpr inline bool operator!=(QLatin1Char lhs, char rhs) noexcept { return lhs.toLatin1() != rhs; }
- friend constexpr inline bool operator<=(QLatin1Char lhs, char rhs) noexcept { return lhs.toLatin1() <= rhs; }
- friend constexpr inline bool operator>=(QLatin1Char lhs, char rhs) noexcept { return lhs.toLatin1() >= rhs; }
- friend constexpr inline bool operator< (QLatin1Char lhs, char rhs) noexcept { return lhs.toLatin1() < rhs; }
- friend constexpr inline bool operator> (QLatin1Char lhs, char rhs) noexcept { return lhs.toLatin1() > rhs; }
+ friend constexpr bool
+ comparesEqual(const QLatin1Char &lhs, const QLatin1Char &rhs) noexcept
+ { return lhs.ch == rhs.ch; }
+ friend constexpr Qt::strong_ordering
+ compareThreeWay(const QLatin1Char &lhs, const QLatin1Char &rhs) noexcept
+ { return Qt::compareThreeWay(uchar(lhs.ch), uchar(rhs.ch)); }
+ Q_DECLARE_STRONGLY_ORDERED_LITERAL_TYPE(QLatin1Char)
+
+ friend constexpr bool comparesEqual(const QLatin1Char &lhs, char rhs) noexcept
+ { return lhs.toLatin1() == rhs; }
+ friend constexpr Qt::strong_ordering
+ compareThreeWay(const QLatin1Char &lhs, char rhs) noexcept
+ { return Qt::compareThreeWay(uchar(lhs.toLatin1()), uchar(rhs)); }
+ Q_DECLARE_STRONGLY_ORDERED_LITERAL_TYPE(QLatin1Char, char)
private:
char ch;
};
-class Q_CORE_EXPORT QChar {
+#define QT_CHAR_FASTCALL QT7_ONLY(Q_CORE_EXPORT) QT_FASTCALL
+class QT6_ONLY(Q_CORE_EXPORT) QChar {
public:
enum SpecialCharacter {
Null = 0x0000,
@@ -117,7 +77,7 @@ public:
constexpr Q_IMPLICIT QChar(SpecialCharacter s) noexcept : ucs(char16_t(s)) {}
constexpr Q_IMPLICIT QChar(QLatin1Char ch) noexcept : ucs(ch.unicode()) {}
constexpr Q_IMPLICIT QChar(char16_t ch) noexcept : ucs(ch) {}
-#if defined(Q_OS_WIN) || defined(Q_CLANG_QDOC)
+#if defined(Q_OS_WIN) || defined(Q_QDOC)
constexpr Q_IMPLICIT QChar(wchar_t ch) noexcept : ucs(char16_t(ch)) {}
#endif
@@ -370,6 +330,10 @@ public:
Script_Toto,
Script_Vithkuqi,
+ // Unicode 15.0 additions
+ Script_Kawi,
+ Script_NagMundari,
+
ScriptCount
};
@@ -461,7 +425,9 @@ public:
Unicode_12_0,
Unicode_12_1,
Unicode_13_0,
- Unicode_14_0
+ Unicode_14_0,
+ Unicode_15_0,
+ Unicode_15_1,
};
inline Category category() const noexcept { return QChar::category(ucs); }
@@ -555,39 +521,39 @@ public:
return char16_t(ucs4%0x400 + 0xdc00);
}
- static Category QT_FASTCALL category(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
- static Direction QT_FASTCALL direction(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
- static JoiningType QT_FASTCALL joiningType(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
- static unsigned char QT_FASTCALL combiningClass(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
+ static Category QT_CHAR_FASTCALL category(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
+ static Direction QT_CHAR_FASTCALL direction(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
+ static JoiningType QT_CHAR_FASTCALL joiningType(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
+ static unsigned char QT_CHAR_FASTCALL combiningClass(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
- static char32_t QT_FASTCALL mirroredChar(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
- static bool QT_FASTCALL hasMirrored(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
+ static char32_t QT_CHAR_FASTCALL mirroredChar(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
+ static bool QT_CHAR_FASTCALL hasMirrored(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
- static QString QT_FASTCALL decomposition(char32_t ucs4);
- static Decomposition QT_FASTCALL decompositionTag(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
+ static QString QT_CHAR_FASTCALL decomposition(char32_t ucs4);
+ static Decomposition QT_CHAR_FASTCALL decompositionTag(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
- static int QT_FASTCALL digitValue(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
- static char32_t QT_FASTCALL toLower(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
- static char32_t QT_FASTCALL toUpper(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
- static char32_t QT_FASTCALL toTitleCase(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
- static char32_t QT_FASTCALL toCaseFolded(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
+ static int QT_CHAR_FASTCALL digitValue(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
+ static char32_t QT_CHAR_FASTCALL toLower(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
+ static char32_t QT_CHAR_FASTCALL toUpper(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
+ static char32_t QT_CHAR_FASTCALL toTitleCase(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
+ static char32_t QT_CHAR_FASTCALL toCaseFolded(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
- static Script QT_FASTCALL script(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
+ static Script QT_CHAR_FASTCALL script(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
- static UnicodeVersion QT_FASTCALL unicodeVersion(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
+ static UnicodeVersion QT_CHAR_FASTCALL unicodeVersion(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
- static UnicodeVersion QT_FASTCALL currentUnicodeVersion() noexcept Q_DECL_CONST_FUNCTION;
+ static UnicodeVersion QT_CHAR_FASTCALL currentUnicodeVersion() noexcept Q_DECL_CONST_FUNCTION;
- static bool QT_FASTCALL isPrint(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
+ static bool QT_CHAR_FASTCALL isPrint(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
static constexpr inline bool isSpace(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION
{
// note that [0x09..0x0d] + 0x85 are exceptional Cc-s and must be handled explicitly
return ucs4 == 0x20 || (ucs4 <= 0x0d && ucs4 >= 0x09)
|| (ucs4 > 127 && (ucs4 == 0x85 || ucs4 == 0xa0 || QChar::isSpace_helper(ucs4)));
}
- static bool QT_FASTCALL isMark(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
- static bool QT_FASTCALL isPunct(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
- static bool QT_FASTCALL isSymbol(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
+ static bool QT_CHAR_FASTCALL isMark(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
+ static bool QT_CHAR_FASTCALL isPunct(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
+ static bool QT_CHAR_FASTCALL isSymbol(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
static constexpr inline bool isLetter(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION
{
return (ucs4 >= 'A' && ucs4 <= 'z' && (ucs4 >= 'a' || ucs4 <= 'Z'))
@@ -610,34 +576,44 @@ public:
static constexpr inline bool isTitleCase(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION
{ return ucs4 > 127 && QChar::category(ucs4) == Letter_Titlecase; }
- friend constexpr inline bool operator==(QChar c1, QChar c2) noexcept { return c1.ucs == c2.ucs; }
- friend constexpr inline bool operator< (QChar c1, QChar c2) noexcept { return c1.ucs < c2.ucs; }
-
- friend constexpr inline bool operator!=(QChar c1, QChar c2) noexcept { return !operator==(c1, c2); }
- friend constexpr inline bool operator>=(QChar c1, QChar c2) noexcept { return !operator< (c1, c2); }
- friend constexpr inline bool operator> (QChar c1, QChar c2) noexcept { return operator< (c2, c1); }
- friend constexpr inline bool operator<=(QChar c1, QChar c2) noexcept { return !operator< (c2, c1); }
-
- friend constexpr inline bool operator==(QChar lhs, std::nullptr_t) noexcept { return lhs.isNull(); }
- friend constexpr inline bool operator< (QChar, std::nullptr_t) noexcept { return false; }
- friend constexpr inline bool operator==(std::nullptr_t, QChar rhs) noexcept { return rhs.isNull(); }
- friend constexpr inline bool operator< (std::nullptr_t, QChar rhs) noexcept { return !rhs.isNull(); }
+ friend constexpr bool comparesEqual(const QChar &lhs, const QChar &rhs) noexcept
+ { return lhs.ucs == rhs.ucs; }
+ friend constexpr Qt::strong_ordering
+ compareThreeWay(const QChar &lhs, const QChar &rhs) noexcept
+ { return Qt::compareThreeWay(lhs.ucs, rhs.ucs); }
+ Q_DECLARE_STRONGLY_ORDERED_LITERAL_TYPE(QChar)
- friend constexpr inline bool operator!=(QChar lhs, std::nullptr_t) noexcept { return !operator==(lhs, nullptr); }
- friend constexpr inline bool operator>=(QChar lhs, std::nullptr_t) noexcept { return !operator< (lhs, nullptr); }
- friend constexpr inline bool operator> (QChar lhs, std::nullptr_t) noexcept { return operator< (nullptr, lhs); }
- friend constexpr inline bool operator<=(QChar lhs, std::nullptr_t) noexcept { return !operator< (nullptr, lhs); }
-
- friend constexpr inline bool operator!=(std::nullptr_t, QChar rhs) noexcept { return !operator==(nullptr, rhs); }
- friend constexpr inline bool operator>=(std::nullptr_t, QChar rhs) noexcept { return !operator< (nullptr, rhs); }
- friend constexpr inline bool operator> (std::nullptr_t, QChar rhs) noexcept { return operator< (rhs, nullptr); }
- friend constexpr inline bool operator<=(std::nullptr_t, QChar rhs) noexcept { return !operator< (rhs, nullptr); }
+ friend constexpr bool comparesEqual(const QChar &lhs, std::nullptr_t) noexcept
+ { return lhs.isNull(); }
+ friend constexpr Qt::strong_ordering
+ compareThreeWay(const QChar &lhs, std::nullptr_t) noexcept
+ { return lhs.isNull() ? Qt::strong_ordering::equivalent : Qt::strong_ordering::greater; }
+ Q_DECLARE_STRONGLY_ORDERED_LITERAL_TYPE(QChar, std::nullptr_t)
private:
- static bool QT_FASTCALL isSpace_helper(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
- static bool QT_FASTCALL isLetter_helper(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
- static bool QT_FASTCALL isNumber_helper(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
- static bool QT_FASTCALL isLetterOrNumber_helper(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
+ static bool QT_CHAR_FASTCALL isSpace_helper(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
+ static bool QT_CHAR_FASTCALL isLetter_helper(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
+ static bool QT_CHAR_FASTCALL isNumber_helper(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
+ static bool QT_CHAR_FASTCALL isLetterOrNumber_helper(char32_t ucs4) noexcept Q_DECL_CONST_FUNCTION;
+
+ // defined in qstring.cpp, because we need to go via QUtf8StringView
+ static bool QT_CHAR_FASTCALL
+ equal_helper(QChar lhs, const char *rhs) noexcept Q_DECL_CONST_FUNCTION;
+ static int QT_CHAR_FASTCALL
+ compare_helper(QChar lhs, const char *rhs) noexcept Q_DECL_CONST_FUNCTION;
+
+#if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
+ Q_WEAK_OVERLOAD
+ friend bool comparesEqual(const QChar &lhs, const char *rhs) noexcept
+ { return equal_helper(lhs, rhs); }
+ Q_WEAK_OVERLOAD
+ friend Qt::strong_ordering compareThreeWay(const QChar &lhs, const char *rhs) noexcept
+ {
+ const int res = compare_helper(lhs, rhs);
+ return Qt::compareThreeWay(res, 0);
+ }
+ Q_DECLARE_STRONGLY_ORDERED(QChar, const char *, Q_WEAK_OVERLOAD QT_ASCII_CAST_WARN)
+#endif // !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
#ifdef QT_NO_CAST_FROM_ASCII
QChar(char c) = delete;
@@ -646,6 +622,7 @@ private:
char16_t ucs;
};
+#undef QT_CHAR_FASTCALL
Q_DECLARE_TYPEINFO(QChar, Q_PRIMITIVE_TYPE);
@@ -654,6 +631,19 @@ Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, QChar);
Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QChar &);
#endif
+namespace Qt {
+inline namespace Literals {
+inline namespace StringLiterals {
+
+constexpr inline QLatin1Char operator""_L1(char ch) noexcept
+{
+ return QLatin1Char(ch);
+}
+
+} // StringLiterals
+} // Literals
+} // Qt
+
QT_END_NAMESPACE
namespace std {
diff --git a/src/corelib/text/qcollator.cpp b/src/corelib/text/qcollator.cpp
index 8bffae83da..1f7e7459e7 100644
--- a/src/corelib/text/qcollator.cpp
+++ b/src/corelib/text/qcollator.cpp
@@ -1,42 +1,6 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Copyright (C) 2013 Aleix Pol Gonzalez <aleixpol@kde.org>
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// Copyright (C) 2013 Aleix Pol Gonzalez <aleixpol@kde.org>
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qcollator_p.h"
#include "qstringlist.h"
@@ -47,6 +11,7 @@
#include "qthreadstorage.h"
QT_BEGIN_NAMESPACE
+QT_DEFINE_QESDP_SPECIALIZATION_DTOR(QCollatorSortKeyPrivate)
namespace {
struct GenerationalCollator
@@ -83,7 +48,7 @@ Q_GLOBAL_STATIC(QThreadStorage<GenerationalCollator>, defaultCollator)
\ingroup shared
QCollator is initialized with a QLocale. It can then be used to compare and
- sort strings in using the ordering appropriate to the locale.
+ sort strings by using the ordering appropriate for that locale.
A QCollator object can be used together with template-based sorting
algorithms, such as std::sort(), to sort a list with QString entries.
@@ -93,9 +58,25 @@ Q_GLOBAL_STATIC(QThreadStorage<GenerationalCollator>, defaultCollator)
In addition to the locale, several optional flags can be set that influence
the result of the collation.
- \note On Linux, Qt is normally compiled to use ICU. When it isn't, all
- options are ignored and the only supported locales are the system default
- (that \c{setlocale(LC_COLLATE, nullptr)} would report) and the "C" locale.
+ \section1 POSIX fallback implementation
+
+ On Unix systems, Qt is normally compiled to use ICU (except for \macos,
+ where Qt defaults to using an equivalent Apple API). However, if ICU was
+ not available at compile time or explicitly disabled, Qt will use a
+ fallback backend that uses the POSIX API only. This backend has several
+ limitations:
+
+ \list
+ \li Only the QLocale::c() and QLocale::system() locales are supported.
+ Consult the POSIX and C Standard Library manuals for the
+ \c{<locale.h>} header for more information on the system locale.
+ \li caseSensitivity() is not supported: only case-sensitive collation
+ can be performed.
+ \li numericMode() and ignorePunctuation() are not supported.
+ \endlist
+
+ The use of any of the unsupported options will cause a warning to be
+ printed to the application's output.
*/
/*!
@@ -133,8 +114,7 @@ QCollator::QCollator(const QCollator &other)
{
if (d) {
// Ensure clean, lest both copies try to init() at the same time:
- if (d->dirty)
- d->init();
+ d->ensureInitialized();
d->ref.ref();
}
}
@@ -159,8 +139,7 @@ QCollator &QCollator::operator=(const QCollator &other)
d = other.d;
if (d) {
// Ensure clean, lest both copies try to init() at the same time:
- if (d->dirty)
- d->init();
+ d->ensureInitialized();
d->ref.ref();
}
}
@@ -172,19 +151,19 @@ QCollator &QCollator::operator=(const QCollator &other)
Move constructor. Moves from \a other into this collator.
- Note that a moved-from QCollator can only be destroyed or assigned to.
- The effect of calling other functions than the destructor or one of the
- assignment operators is undefined.
+//! [partially-formed]
+ \note The moved-from object \a other is placed in a partially-formed state,
+ in which the only valid operations are destruction and assignment of a new
+ value.
+//! [partially-formed]
*/
/*!
\fn QCollator & QCollator::operator=(QCollator && other)
- Move-assigns from \a other to this collator.
+ Move-assigns \a other to this QCollator instance.
- Note that a moved-from QCollator can only be destroyed or assigned to.
- The effect of calling other functions than the destructor or one of the
- assignment operators is undefined.
+ \include qcollator.cpp partially-formed
*/
/*!
@@ -339,10 +318,10 @@ bool QCollator::ignorePunctuation() const
Compares \a s1 with \a s2.
- Returns an integer less than, equal to, or greater than zero depending on
- whether \a s1 sorts before, with or after \a s2.
+ Returns a negative integer if \a s1 is less than \a s2, a positive integer
+ if it is greater than \a s2, and zero if they are equal.
*/
-#if QT_STRINGVIEW_LEVEL < 2
+
/*!
\fn bool QCollator::operator()(const QString &s1, const QString &s2) const
\overload
@@ -356,17 +335,20 @@ bool QCollator::ignorePunctuation() const
*/
/*!
- \fn int QCollator::compare(const QChar *s1, int len1, const QChar *s2, int len2) const
+ \fn int QCollator::compare(const QChar *s1, qsizetype len1, const QChar *s2, qsizetype len2) const
\overload
\since 5.2
Compares \a s1 with \a s2. \a len1 and \a len2 specify the lengths of the
QChar arrays pointed to by \a s1 and \a s2.
- Returns an integer less than, equal to, or greater than zero depending on
- whether \a s1 sorts before, with or after \a s2.
+ Returns a negative integer if \a s1 is less than \a s2, a positive integer
+ if it is greater than \a s2, and zero if they are equal.
+
+
+ \note In Qt versions prior to 6.4, the length arguments were of type
+ \c{int}, not \c{qsizetype}.
*/
-#endif // QT_STRINGVIEW_LEVEL < 2
/*!
\since 6.3
@@ -443,6 +425,14 @@ QCollatorSortKey::QCollatorSortKey(const QCollatorSortKey &other)
}
/*!
+ \since 6.8
+ \fn QCollatorSortKey::QCollatorSortKey(QCollatorSortKey &&other)
+ Move-constructs a new QCollatorSortKey from \a other.
+
+ \include qcollator.cpp partially-formed
+*/
+
+/*!
Destroys the collator key.
*/
QCollatorSortKey::~QCollatorSortKey()
@@ -463,7 +453,9 @@ QCollatorSortKey& QCollatorSortKey::operator=(const QCollatorSortKey &other)
/*!
\fn QCollatorSortKey &QCollatorSortKey::operator=(QCollatorSortKey && other)
- Move-assigns \a other to this collator key.
+ Move-assigns \a other to this QCollatorSortKey instance.
+
+ \include qcollator.cpp partially-formed
*/
/*!
diff --git a/src/corelib/text/qcollator.h b/src/corelib/text/qcollator.h
index a0333e6f07..9f61cfc22a 100644
--- a/src/corelib/text/qcollator.h
+++ b/src/corelib/text/qcollator.h
@@ -1,42 +1,6 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Copyright (C) 2013 Aleix Pol Gonzalez <aleixpol@kde.org>
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 The Qt Company Ltd.
+// Copyright (C) 2013 Aleix Pol Gonzalez <aleixpol@kde.org>
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QCOLLATOR_H
#define QCOLLATOR_H
@@ -49,12 +13,14 @@ QT_BEGIN_NAMESPACE
class QCollatorPrivate;
class QCollatorSortKeyPrivate;
+QT_DECLARE_QESDP_SPECIALIZATION_DTOR_WITH_EXPORT(QCollatorSortKeyPrivate, Q_CORE_EXPORT)
class Q_CORE_EXPORT QCollatorSortKey
{
friend class QCollator;
public:
QCollatorSortKey(const QCollatorSortKey &other);
+ QCollatorSortKey(QCollatorSortKey &&other) noexcept = default;
~QCollatorSortKey();
QCollatorSortKey &operator=(const QCollatorSortKey &other);
QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QCollatorSortKey)
@@ -101,15 +67,17 @@ public:
void setIgnorePunctuation(bool on);
bool ignorePunctuation() const;
-#if QT_STRINGVIEW_LEVEL < 2
int compare(const QString &s1, const QString &s2) const
{ return compare(QStringView(s1), QStringView(s2)); }
+#if QT_CORE_REMOVED_SINCE(6, 4) && QT_POINTER_SIZE != 4
int compare(const QChar *s1, int len1, const QChar *s2, int len2) const
{ return compare(QStringView(s1, len1), QStringView(s2, len2)); }
+#endif
+ int compare(const QChar *s1, qsizetype len1, const QChar *s2, qsizetype len2) const
+ { return compare(QStringView(s1, len1), QStringView(s2, len2)); }
bool operator()(const QString &s1, const QString &s2) const
{ return compare(s1, s2) < 0; }
-#endif
int compare(QStringView s1, QStringView s2) const;
bool operator()(QStringView s1, QStringView s2) const
diff --git a/src/corelib/text/qcollator_icu.cpp b/src/corelib/text/qcollator_icu.cpp
index 0dca1ee9c9..84f9c51537 100644
--- a/src/corelib/text/qcollator_icu.cpp
+++ b/src/corelib/text/qcollator_icu.cpp
@@ -1,42 +1,6 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Copyright (C) 2013 Aleix Pol Gonzalez <aleixpol@kde.org>
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 The Qt Company Ltd.
+// Copyright (C) 2013 Aleix Pol Gonzalez <aleixpol@kde.org>
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qcollator_p.h"
#include "qlocale_p.h"
@@ -114,29 +78,28 @@ int QCollator::compare(QStringView s1, QStringView s2) const
if (!s2.size())
return +1;
- if (d->dirty)
- d->init();
+ d->ensureInitialized();
if (d->collator) {
+ // truncating sizes (QTBUG-105038)
return ucol_strcoll(d->collator,
reinterpret_cast<const UChar *>(s1.data()), s1.size(),
reinterpret_cast<const UChar *>(s2.data()), s2.size());
}
- return QString::compare_helper(s1.data(), s1.size(),
- s2.data(), s2.size(),
- d->caseSensitivity);
+ return QtPrivate::compareStrings(s1, s2, d->caseSensitivity);
}
QCollatorSortKey QCollator::sortKey(const QString &string) const
{
- if (d->dirty)
- d->init();
+ d->ensureInitialized();
+
if (d->isC())
return QCollatorSortKey(new QCollatorSortKeyPrivate(string.toUtf8()));
if (d->collator) {
QByteArray result(16 + string.size() + (string.size() >> 2), Qt::Uninitialized);
+ // truncating sizes (QTBUG-105038)
int size = ucol_getSortKey(d->collator, (const UChar *)string.constData(),
string.size(), (uint8_t *)result.data(), result.size());
if (size > result.size()) {
diff --git a/src/corelib/text/qcollator_macx.cpp b/src/corelib/text/qcollator_macx.cpp
index 8adc640fa7..23c23bd53a 100644
--- a/src/corelib/text/qcollator_macx.cpp
+++ b/src/corelib/text/qcollator_macx.cpp
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 Aleix Pol Gonzalez <aleixpol@kde.org>
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 Aleix Pol Gonzalez <aleixpol@kde.org>
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qcollator_p.h"
#include "qlocale_p.h"
@@ -99,8 +63,8 @@ int QCollator::compare(QStringView s1, QStringView s2) const
if (!s2.size())
return +1;
- if (d->dirty)
- d->init();
+ d->ensureInitialized();
+
if (!d->collator)
return s1.compare(s2, caseSensitivity());
@@ -118,8 +82,8 @@ int QCollator::compare(QStringView s1, QStringView s2) const
QCollatorSortKey QCollator::sortKey(const QString &string) const
{
- if (d->dirty)
- d->init();
+ d->ensureInitialized();
+
if (!d->collator) {
// What should (or even *can*) we do here ? (See init()'s comment.)
qWarning("QCollator doesn't support sort keys for the C locale on Darwin");
@@ -130,12 +94,12 @@ QCollatorSortKey QCollator::sortKey(const QString &string) const
// Documentation recommends having it 5 times as big as the input
QList<UCCollationValue> ret(string.size() * 5);
ItemCount actualSize;
- int status = UCGetCollationKey(d->collator, text, string.count(),
+ int status = UCGetCollationKey(d->collator, text, string.size(),
ret.size(), &actualSize, ret.data());
ret.resize(actualSize + 1);
if (status == kUCOutputBufferTooSmall) {
- status = UCGetCollationKey(d->collator, text, string.count(),
+ status = UCGetCollationKey(d->collator, text, string.size(),
ret.size(), &actualSize, ret.data());
Q_ASSERT(status != kUCOutputBufferTooSmall);
Q_ASSERT(ret.size() == qsizetype(actualSize + 1));
diff --git a/src/corelib/text/qcollator_p.h b/src/corelib/text/qcollator_p.h
index 402b58f1fb..b96cdbaa32 100644
--- a/src/corelib/text/qcollator_p.h
+++ b/src/corelib/text/qcollator_p.h
@@ -1,42 +1,6 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Copyright (C) 2013 Aleix Pol Gonzalez <aleixpol@kde.org>
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// Copyright (C) 2013 Aleix Pol Gonzalez <aleixpol@kde.org>
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QCOLLATOR_P_H
#define QCOLLATOR_P_H
@@ -110,6 +74,12 @@ public:
collator = NoCollator;
}
+ void ensureInitialized()
+ {
+ if (dirty)
+ init();
+ }
+
// Implemented by each back-end, in its own way:
void init();
void cleanup();
diff --git a/src/corelib/text/qcollator_posix.cpp b/src/corelib/text/qcollator_posix.cpp
index 7f04847434..5ed80c1b8e 100644
--- a/src/corelib/text/qcollator_posix.cpp
+++ b/src/corelib/text/qcollator_posix.cpp
@@ -1,46 +1,11 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Copyright (C) 2013 Aleix Pol Gonzalez <aleixpol@kde.org>
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// Copyright (C) 2013 Aleix Pol Gonzalez <aleixpol@kde.org>
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qcollator_p.h"
#include "qstringlist.h"
#include "qstring.h"
+#include "qvarlengtharray.h"
#include <cstring>
#include <cwchar>
@@ -71,7 +36,7 @@ void QCollatorPrivate::cleanup()
static void stringToWCharArray(QVarLengthArray<wchar_t> &ret, QStringView string)
{
ret.resize(string.length());
- int len = string.toWCharArray(ret.data());
+ qsizetype len = string.toWCharArray(ret.data());
ret.resize(len+1);
ret[len] = 0;
}
@@ -85,8 +50,8 @@ int QCollator::compare(QStringView s1, QStringView s2) const
if (d->isC())
return s1.compare(s2, caseSensitivity());
- if (d->dirty)
- d->init();
+
+ d->ensureInitialized();
QVarLengthArray<wchar_t> array1, array2;
stringToWCharArray(array1, s1);
@@ -96,8 +61,7 @@ int QCollator::compare(QStringView s1, QStringView s2) const
QCollatorSortKey QCollator::sortKey(const QString &string) const
{
- if (d->dirty)
- d->init();
+ d->ensureInitialized();
QVarLengthArray<wchar_t> original;
stringToWCharArray(original, string);
@@ -105,13 +69,19 @@ QCollatorSortKey QCollator::sortKey(const QString &string) const
if (d->isC()) {
std::copy(original.cbegin(), original.cend(), result.begin());
} else {
- size_t size = std::wcsxfrm(result.data(), original.constData(), string.size());
- if (size > uint(result.size())) {
- result.resize(size+1);
- size = std::wcsxfrm(result.data(), original.constData(), string.size());
+ auto availableSizeIncludingNullTerminator = result.size();
+ size_t neededSizeExcludingNullTerminator = std::wcsxfrm(
+ result.data(), original.constData(), availableSizeIncludingNullTerminator);
+ if (neededSizeExcludingNullTerminator > size_t(availableSizeIncludingNullTerminator - 1)) {
+ result.resize(neededSizeExcludingNullTerminator + 1);
+ availableSizeIncludingNullTerminator = result.size();
+ neededSizeExcludingNullTerminator = std::wcsxfrm(result.data(), original.constData(),
+ availableSizeIncludingNullTerminator);
+ Q_ASSERT(neededSizeExcludingNullTerminator
+ == size_t(availableSizeIncludingNullTerminator - 1));
}
- result.resize(size+1);
- result[size] = 0;
+ result.resize(neededSizeExcludingNullTerminator + 1);
+ result[neededSizeExcludingNullTerminator] = 0;
}
return QCollatorSortKey(new QCollatorSortKeyPrivate(std::move(result)));
}
diff --git a/src/corelib/text/qcollator_win.cpp b/src/corelib/text/qcollator_win.cpp
index 59f8add822..b588f5ff46 100644
--- a/src/corelib/text/qcollator_win.cpp
+++ b/src/corelib/text/qcollator_win.cpp
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 Aleix Pol Gonzalez <aleixpol@kde.org>
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 Aleix Pol Gonzalez <aleixpol@kde.org>
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qcollator_p.h"
#include "qlocale_p.h"
@@ -93,8 +57,7 @@ int QCollator::compare(QStringView s1, QStringView s2) const
if (d->isC())
return s1.compare(s2, d->caseSensitivity);
- if (d->dirty)
- d->init();
+ d->ensureInitialized();
//* from Windows documentation *
// Returns one of the following values if successful. To maintain the C
@@ -128,11 +91,12 @@ int QCollator::compare(QStringView s1, QStringView s2) const
QCollatorSortKey QCollator::sortKey(const QString &string) const
{
- if (d->dirty)
- d->init();
+ d->ensureInitialized();
+
if (d->isC())
return QCollatorSortKey(new QCollatorSortKeyPrivate(string));
+ // truncating sizes (QTBUG-105038)
int size = LCMapStringW(d->localeID, LCMAP_SORTKEY | d->collator,
reinterpret_cast<const wchar_t*>(string.constData()), string.size(),
0, 0);
diff --git a/src/corelib/text/qdoublescanprint_p.h b/src/corelib/text/qdoublescanprint_p.h
index 3865c69a99..b098cc4082 100644
--- a/src/corelib/text/qdoublescanprint_p.h
+++ b/src/corelib/text/qdoublescanprint_p.h
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QDOUBLESCANPRINT_P_H
#define QDOUBLESCANPRINT_P_H
@@ -51,7 +15,7 @@
// We mean it.
//
-#include <qglobal.h>
+#include <private/qglobal_p.h>
#if defined(Q_CC_MSVC) && (defined(QT_BOOTSTRAPPED) || defined(QT_NO_DOUBLECONVERSION))
# include <stdio.h>
diff --git a/src/corelib/text/qlatin1stringmatcher.cpp b/src/corelib/text/qlatin1stringmatcher.cpp
new file mode 100644
index 0000000000..68bf97db5c
--- /dev/null
+++ b/src/corelib/text/qlatin1stringmatcher.cpp
@@ -0,0 +1,201 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#include "qlatin1stringmatcher.h"
+#include <limits.h>
+
+QT_BEGIN_NAMESPACE
+
+/*! \class QLatin1StringMatcher
+ \inmodule QtCore
+ \brief Optimized search for substring in Latin-1 text.
+
+ A QLatin1StringMatcher can search for one QLatin1StringView
+ as a substring of another, either ignoring case or taking it into
+ account.
+
+ \since 6.5
+ \ingroup tools
+ \ingroup string-processing
+
+ This class is useful when you have a Latin-1 encoded string that
+ you want to repeatedly search for in some QLatin1StringViews
+ (perhaps in a loop), or when you want to search for all
+ instances of it in a given QLatin1StringView. Using a matcher
+ object and indexIn() is faster than matching a plain
+ QLatin1StringView with QLatin1StringView::indexOf() if repeated
+ matching takes place. This class offers no benefit if you are
+ doing one-off matches. The string to be searched for must not
+ be destroyed or changed before the matcher object is destroyed,
+ as the matcher accesses the string when searching for it.
+
+ Create a QLatin1StringMatcher for the QLatin1StringView
+ you want to search for and the case sensitivity. Then call
+ indexIn() with the QLatin1StringView that you want to search
+ within.
+
+ \sa QLatin1StringView, QStringMatcher, QByteArrayMatcher
+*/
+
+/*!
+ Construct an empty Latin-1 string matcher.
+ This will match at each position in any string.
+ \sa setPattern(), setCaseSensitivity(), indexIn()
+*/
+QLatin1StringMatcher::QLatin1StringMatcher() noexcept
+ : m_pattern(),
+ m_cs(Qt::CaseSensitive),
+ m_caseSensitiveSearcher(m_pattern.data(), m_pattern.data())
+{
+}
+
+/*!
+ Constructs a Latin-1 string matcher that searches for the given \a pattern
+ with given case sensitivity \a cs. The \a pattern argument must
+ not be destroyed before this matcher object. Call indexIn()
+ to find the \a pattern in the given QLatin1StringView.
+*/
+QLatin1StringMatcher::QLatin1StringMatcher(QLatin1StringView pattern,
+ Qt::CaseSensitivity cs) noexcept
+ : m_pattern(pattern), m_cs(cs)
+{
+ setSearcher();
+}
+
+/*!
+ Destroys the Latin-1 string matcher.
+*/
+QLatin1StringMatcher::~QLatin1StringMatcher() noexcept
+{
+ freeSearcher();
+}
+
+/*!
+ \internal
+*/
+void QLatin1StringMatcher::setSearcher() noexcept
+{
+ if (m_cs == Qt::CaseSensitive) {
+ new (&m_caseSensitiveSearcher) CaseSensitiveSearcher(m_pattern.data(), m_pattern.end());
+ } else {
+ QtPrivate::QCaseInsensitiveLatin1Hash foldCase;
+ qsizetype bufferSize = std::min(m_pattern.size(), qsizetype(sizeof m_foldBuffer));
+ for (qsizetype i = 0; i < bufferSize; ++i)
+ m_foldBuffer[i] = static_cast<char>(foldCase(m_pattern[i].toLatin1()));
+
+ new (&m_caseInsensitiveSearcher)
+ CaseInsensitiveSearcher(m_foldBuffer, &m_foldBuffer[bufferSize]);
+ }
+}
+
+/*!
+ \internal
+*/
+void QLatin1StringMatcher::freeSearcher() noexcept
+{
+ if (m_cs == Qt::CaseSensitive)
+ m_caseSensitiveSearcher.~CaseSensitiveSearcher();
+ else
+ m_caseInsensitiveSearcher.~CaseInsensitiveSearcher();
+}
+
+/*!
+ Sets the \a pattern to search for. The string pointed to by the
+ QLatin1StringView must not be destroyed before the matcher is
+ destroyed, unless it is set to point to a different \a pattern
+ with longer lifetime first.
+
+ \sa pattern(), indexIn()
+*/
+void QLatin1StringMatcher::setPattern(QLatin1StringView pattern) noexcept
+{
+ if (m_pattern.latin1() == pattern.latin1() && m_pattern.size() == pattern.size())
+ return; // Same address and size
+
+ freeSearcher();
+ m_pattern = pattern;
+ setSearcher();
+}
+
+/*!
+ Returns the Latin-1 pattern that the matcher searches for.
+
+ \sa setPattern(), indexIn()
+*/
+QLatin1StringView QLatin1StringMatcher::pattern() const noexcept
+{
+ return m_pattern;
+}
+
+/*!
+ Sets the case sensitivity to \a cs.
+
+ \sa caseSensitivity(), indexIn()
+*/
+void QLatin1StringMatcher::setCaseSensitivity(Qt::CaseSensitivity cs) noexcept
+{
+ if (m_cs == cs)
+ return;
+
+ freeSearcher();
+ m_cs = cs;
+ setSearcher();
+}
+
+/*!
+ Returns the case sensitivity the matcher uses.
+
+ \sa setCaseSensitivity(), indexIn()
+*/
+Qt::CaseSensitivity QLatin1StringMatcher::caseSensitivity() const noexcept
+{
+ return m_cs;
+}
+
+/*!
+ Searches for the pattern in the given \a haystack starting from
+ \a from.
+
+ \sa caseSensitivity(), pattern()
+*/
+qsizetype QLatin1StringMatcher::indexIn(QLatin1StringView haystack, qsizetype from) const noexcept
+{
+ if (m_pattern.isEmpty() && from == haystack.size())
+ return from;
+ if (from < 0) // Historical behavior (see QString::indexOf and co.)
+ from += haystack.size();
+ if (from >= haystack.size())
+ return -1;
+
+ auto begin = haystack.begin() + from;
+ auto end = haystack.end();
+ auto found = begin;
+ if (m_cs == Qt::CaseSensitive) {
+ found = m_caseSensitiveSearcher(begin, end, m_pattern.begin(), m_pattern.end()).begin;
+ if (found == end)
+ return -1;
+ } else {
+ const qsizetype bufferSize = std::min(m_pattern.size(), qsizetype(sizeof m_foldBuffer));
+ const QLatin1StringView restNeedle = m_pattern.sliced(bufferSize);
+ const bool needleLongerThanBuffer = restNeedle.size() > 0;
+ QLatin1StringView restHaystack = haystack;
+ do {
+ found = m_caseInsensitiveSearcher(found, end, m_foldBuffer, &m_foldBuffer[bufferSize])
+ .begin;
+ if (found == end) {
+ return -1;
+ } else if (!needleLongerThanBuffer) {
+ break;
+ }
+ restHaystack = haystack.sliced(
+ qMin(haystack.size(),
+ bufferSize + qsizetype(std::distance(haystack.begin(), found))));
+ if (restHaystack.startsWith(restNeedle, Qt::CaseInsensitive))
+ break;
+ ++found;
+ } while (true);
+ }
+ return std::distance(haystack.begin(), found);
+}
+
+QT_END_NAMESPACE
diff --git a/src/corelib/text/qlatin1stringmatcher.h b/src/corelib/text/qlatin1stringmatcher.h
new file mode 100644
index 0000000000..3b8c24fc92
--- /dev/null
+++ b/src/corelib/text/qlatin1stringmatcher.h
@@ -0,0 +1,172 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef QLATIN1STRINGMATCHER_H
+#define QLATIN1STRINGMATCHER_H
+
+#include <functional>
+#include <iterator>
+#include <limits>
+
+#include <QtCore/q20algorithm.h>
+#include <QtCore/qstring.h>
+
+QT_BEGIN_NAMESPACE
+
+namespace QtPrivate {
+template<class RandomIt1,
+ class Hash = std::hash<typename std::iterator_traits<RandomIt1>::value_type>,
+ class BinaryPredicate = std::equal_to<>>
+class q_boyer_moore_searcher_hashed_needle
+{
+public:
+ constexpr q_boyer_moore_searcher_hashed_needle(RandomIt1 pat_first, RandomIt1 pat_last)
+ : m_skiptable{}
+ {
+ const size_t n = std::distance(pat_first, pat_last);
+ constexpr auto uchar_max = (std::numeric_limits<uchar>::max)();
+ uchar max = n > uchar_max ? uchar_max : uchar(n);
+ q20::fill(std::begin(m_skiptable), std::end(m_skiptable), max);
+
+ RandomIt1 pattern = pat_first;
+ pattern += n - max;
+ while (max--)
+ m_skiptable[uchar(*pattern++)] = max;
+ }
+
+ template<class RandomIt2>
+ constexpr auto operator()(RandomIt2 first, RandomIt2 last, RandomIt1 pat_first,
+ RandomIt1 pat_last) const
+ {
+ struct R
+ {
+ RandomIt2 begin, end;
+ };
+ Hash hf;
+ BinaryPredicate pred;
+ auto pat_length = std::distance(pat_first, pat_last);
+ if (pat_length == 0)
+ return R{ first, first };
+
+ const qsizetype pl_minus_one = qsizetype(pat_length - 1);
+ RandomIt2 current = first + pl_minus_one;
+
+ while (current < last) {
+ qsizetype skip = m_skiptable[hf(*current)];
+ if (!skip) {
+ // possible match
+ while (skip < pat_length) {
+ if (!pred(hf(*(current - skip)), uchar(pat_first[pl_minus_one - skip])))
+ break;
+ skip++;
+ }
+ if (skip > pl_minus_one) { // we have a match
+ auto match = current - skip + 1;
+ return R{ match, match + pat_length };
+ }
+
+ // If we don't have a match we are a bit inefficient as we only skip by one
+ // when we have the non matching char in the string.
+ if (m_skiptable[hf(*(current - skip))] == pat_length)
+ skip = pat_length - skip;
+ else
+ skip = 1;
+ }
+ current += skip;
+ }
+
+ return R{ last, last };
+ }
+
+private:
+ alignas(16) uchar m_skiptable[256];
+};
+
+struct QCaseSensitiveLatin1Hash
+{
+ constexpr QCaseSensitiveLatin1Hash() = default;
+
+ constexpr std::size_t operator()(char c) const noexcept { return std::size_t(uchar(c)); }
+};
+
+struct QCaseInsensitiveLatin1Hash
+{
+ constexpr QCaseInsensitiveLatin1Hash() = default;
+
+ constexpr std::size_t operator()(char c) const noexcept
+ {
+ return std::size_t(latin1Lower[uchar(c)]);
+ }
+
+ static int difference(char lhs, char rhs)
+ {
+ return int(latin1Lower[uchar(lhs)]) - int(latin1Lower[uchar(rhs)]);
+ }
+
+ static auto matcher(char ch)
+ {
+ return [sought = latin1Lower[uchar(ch)]](char other) {
+ return latin1Lower[uchar(other)] == sought;
+ };
+ }
+
+private:
+ static constexpr uchar latin1Lower[256] = {
+ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
+ 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,
+ 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,
+ 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,
+ 0x40,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,
+ 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x5b,0x5c,0x5d,0x5e,0x5f,
+ 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,
+ 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f,
+ 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,
+ 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,
+ 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,
+ 0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf,
+ // 0xd7 (multiplication sign) and 0xdf (sz ligature) complicate life
+ 0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef,
+ 0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xd7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xdf,
+ 0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef,
+ 0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff
+ };
+};
+}
+
+class QLatin1StringMatcher
+{
+public:
+ Q_CORE_EXPORT QLatin1StringMatcher() noexcept;
+ Q_CORE_EXPORT explicit QLatin1StringMatcher(
+ QLatin1StringView pattern, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
+ Q_CORE_EXPORT ~QLatin1StringMatcher() noexcept;
+
+ Q_CORE_EXPORT void setPattern(QLatin1StringView pattern) noexcept;
+ Q_CORE_EXPORT QLatin1StringView pattern() const noexcept;
+ Q_CORE_EXPORT void setCaseSensitivity(Qt::CaseSensitivity cs) noexcept;
+ Q_CORE_EXPORT Qt::CaseSensitivity caseSensitivity() const noexcept;
+
+ Q_CORE_EXPORT qsizetype indexIn(QLatin1StringView haystack, qsizetype from = 0) const noexcept;
+
+private:
+ void setSearcher() noexcept;
+ void freeSearcher() noexcept;
+
+ QLatin1StringView m_pattern;
+ Qt::CaseSensitivity m_cs;
+ typedef QtPrivate::q_boyer_moore_searcher_hashed_needle<const char *,
+ QtPrivate::QCaseSensitiveLatin1Hash>
+ CaseSensitiveSearcher;
+ typedef QtPrivate::q_boyer_moore_searcher_hashed_needle<const char *,
+ QtPrivate::QCaseInsensitiveLatin1Hash>
+ CaseInsensitiveSearcher;
+ union {
+ CaseSensitiveSearcher m_caseSensitiveSearcher;
+ CaseInsensitiveSearcher m_caseInsensitiveSearcher;
+ };
+ char m_foldBuffer[256];
+};
+
+QT_END_NAMESPACE
+
+#endif // QLATIN1MATCHER_H
diff --git a/src/corelib/text/qlatin1stringview.h b/src/corelib/text/qlatin1stringview.h
new file mode 100644
index 0000000000..91392d9540
--- /dev/null
+++ b/src/corelib/text/qlatin1stringview.h
@@ -0,0 +1,375 @@
+// Copyright (C) 2020 The Qt Company Ltd.
+// Copyright (C) 2019 Intel Corporation.
+// Copyright (C) 2019 Mail.ru Group.
+// Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef QLATIN1STRINGVIEW_H
+#define QLATIN1STRINGVIEW_H
+
+#include <QtCore/qchar.h>
+#include <QtCore/qcompare.h>
+#include <QtCore/qnamespace.h>
+#include <QtCore/qtversionchecks.h>
+#include <QtCore/qstringview.h>
+
+#if 0
+// Workaround for generating forward headers
+#pragma qt_class(QLatin1String)
+#pragma qt_class(QLatin1StringView)
+#endif
+
+QT_BEGIN_NAMESPACE
+
+class QString;
+
+#if QT_VERSION >= QT_VERSION_CHECK(7, 0, 0) || defined(QT_BOOTSTRAPPED) || defined(Q_QDOC)
+# define Q_L1S_VIEW_IS_PRIMARY
+class QLatin1StringView
+#else
+class QLatin1String
+#endif
+{
+public:
+#ifdef Q_L1S_VIEW_IS_PRIMARY
+ constexpr QLatin1StringView() noexcept {}
+ constexpr QLatin1StringView(std::nullptr_t) noexcept : QLatin1StringView() {}
+ constexpr explicit QLatin1StringView(const char *s) noexcept
+ : QLatin1StringView(s, s ? qsizetype(QtPrivate::lengthHelperPointer(s)) : 0) {}
+ constexpr QLatin1StringView(const char *f, const char *l)
+ : QLatin1StringView(f, qsizetype(l - f)) {}
+ constexpr QLatin1StringView(const char *s, qsizetype sz) noexcept : m_data(s), m_size(sz) {}
+ explicit QLatin1StringView(const QByteArray &s) noexcept
+ : QLatin1StringView(s.constData(), s.size()) {}
+ constexpr explicit QLatin1StringView(QByteArrayView s) noexcept
+ : QLatin1StringView(s.constData(), s.size()) {}
+#else
+ constexpr QLatin1String() noexcept : m_size(0), m_data(nullptr) {}
+ Q_WEAK_OVERLOAD
+ constexpr QLatin1String(std::nullptr_t) noexcept : QLatin1String() {}
+ constexpr explicit QLatin1String(const char *s) noexcept
+ : m_size(s ? qsizetype(QtPrivate::lengthHelperPointer(s)) : 0), m_data(s) {}
+ constexpr QLatin1String(const char *f, const char *l)
+ : QLatin1String(f, qsizetype(l - f)) {}
+ constexpr QLatin1String(const char *s, qsizetype sz) noexcept : m_size(sz), m_data(s) {}
+ explicit QLatin1String(const QByteArray &s) noexcept : m_size(s.size()), m_data(s.constData()) {}
+ constexpr explicit QLatin1String(QByteArrayView s) noexcept : m_size(s.size()), m_data(s.data()) {}
+#endif // !Q_L1S_VIEW_IS_PRIMARY
+
+ inline QString toString() const;
+
+ constexpr const char *latin1() const noexcept { return m_data; }
+ constexpr qsizetype size() const noexcept { return m_size; }
+ constexpr const char *data() const noexcept { return m_data; }
+ [[nodiscard]] constexpr const char *constData() const noexcept { return data(); }
+ [[nodiscard]] constexpr const char *constBegin() const noexcept { return begin(); }
+ [[nodiscard]] constexpr const char *constEnd() const noexcept { return end(); }
+
+ [[nodiscard]] constexpr QLatin1Char first() const { return front(); }
+ [[nodiscard]] constexpr QLatin1Char last() const { return back(); }
+
+ [[nodiscard]] constexpr qsizetype length() const noexcept { return size(); }
+
+ constexpr bool isNull() const noexcept { return !data(); }
+ constexpr bool isEmpty() const noexcept { return !size(); }
+
+ [[nodiscard]] constexpr bool empty() const noexcept { return size() == 0; }
+
+ template <typename...Args>
+ [[nodiscard]] inline QString arg(Args &&...args) const;
+
+ [[nodiscard]] constexpr QLatin1Char at(qsizetype i) const
+ {
+ Q_ASSERT(i >= 0);
+ Q_ASSERT(i < size());
+ return QLatin1Char(m_data[i]);
+ }
+ [[nodiscard]] constexpr QLatin1Char operator[](qsizetype i) const { return at(i); }
+
+ [[nodiscard]] constexpr QLatin1Char front() const { return at(0); }
+ [[nodiscard]] constexpr QLatin1Char back() const { return at(size() - 1); }
+
+ [[nodiscard]] int compare(QStringView other, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ { return QtPrivate::compareStrings(*this, other, cs); }
+ [[nodiscard]] int compare(QLatin1StringView other, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ { return QtPrivate::compareStrings(*this, other, cs); }
+ [[nodiscard]] inline int compare(QUtf8StringView other, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
+ [[nodiscard]] constexpr int compare(QChar c) const noexcept
+ { return isEmpty() ? -1 : front() == c ? int(size() > 1) : uchar(m_data[0]) - c.unicode(); }
+ [[nodiscard]] int compare(QChar c, Qt::CaseSensitivity cs) const noexcept
+ { return QtPrivate::compareStrings(*this, QStringView(&c, 1), cs); }
+
+ [[nodiscard]] bool startsWith(QStringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ { return QtPrivate::startsWith(*this, s, cs); }
+ [[nodiscard]] bool startsWith(QLatin1StringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ { return QtPrivate::startsWith(*this, s, cs); }
+ [[nodiscard]] constexpr bool startsWith(QChar c) const noexcept
+ { return !isEmpty() && front() == c; }
+ [[nodiscard]] bool startsWith(QChar c, Qt::CaseSensitivity cs) const noexcept
+ { return QtPrivate::startsWith(*this, QStringView(&c, 1), cs); }
+
+ [[nodiscard]] bool endsWith(QStringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ { return QtPrivate::endsWith(*this, s, cs); }
+ [[nodiscard]] bool endsWith(QLatin1StringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ { return QtPrivate::endsWith(*this, s, cs); }
+ [[nodiscard]] constexpr bool endsWith(QChar c) const noexcept
+ { return !isEmpty() && back() == c; }
+ [[nodiscard]] bool endsWith(QChar c, Qt::CaseSensitivity cs) const noexcept
+ { return QtPrivate::endsWith(*this, QStringView(&c, 1), cs); }
+
+ [[nodiscard]] qsizetype indexOf(QStringView s, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ { return QtPrivate::findString(*this, from, s, cs); }
+ [[nodiscard]] qsizetype indexOf(QLatin1StringView s, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ { return QtPrivate::findString(*this, from, s, cs); }
+ [[nodiscard]] qsizetype indexOf(QChar c, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ { return QtPrivate::findString(*this, from, QStringView(&c, 1), cs); }
+
+ [[nodiscard]] bool contains(QStringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ { return indexOf(s, 0, cs) != -1; }
+ [[nodiscard]] bool contains(QLatin1StringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ { return indexOf(s, 0, cs) != -1; }
+ [[nodiscard]] bool contains(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ { return indexOf(QStringView(&c, 1), 0, cs) != -1; }
+
+ [[nodiscard]] qsizetype lastIndexOf(QStringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ { return lastIndexOf(s, size(), cs); }
+ [[nodiscard]] qsizetype lastIndexOf(QStringView s, qsizetype from, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ { return QtPrivate::lastIndexOf(*this, from, s, cs); }
+ [[nodiscard]] qsizetype lastIndexOf(QLatin1StringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ { return lastIndexOf(s, size(), cs); }
+ [[nodiscard]] qsizetype lastIndexOf(QLatin1StringView s, qsizetype from, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ { return QtPrivate::lastIndexOf(*this, from, s, cs); }
+ [[nodiscard]] qsizetype lastIndexOf(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ { return lastIndexOf(c, -1, cs); }
+ [[nodiscard]] qsizetype lastIndexOf(QChar c, qsizetype from, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ { return QtPrivate::lastIndexOf(*this, from, QStringView(&c, 1), cs); }
+
+ [[nodiscard]] qsizetype count(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
+ { return QtPrivate::count(*this, str, cs); }
+ [[nodiscard]] qsizetype count(QLatin1StringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
+ { return QtPrivate::count(*this, str, cs); }
+ [[nodiscard]] qsizetype count(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ { return QtPrivate::count(*this, ch, cs); }
+
+ [[nodiscard]] short toShort(bool *ok = nullptr, int base = 10) const
+ { return QtPrivate::toIntegral<short>(QByteArrayView(*this), ok, base); }
+ [[nodiscard]] ushort toUShort(bool *ok = nullptr, int base = 10) const
+ { return QtPrivate::toIntegral<ushort>(QByteArrayView(*this), ok, base); }
+ [[nodiscard]] int toInt(bool *ok = nullptr, int base = 10) const
+ { return QtPrivate::toIntegral<int>(QByteArrayView(*this), ok, base); }
+ [[nodiscard]] uint toUInt(bool *ok = nullptr, int base = 10) const
+ { return QtPrivate::toIntegral<uint>(QByteArrayView(*this), ok, base); }
+ [[nodiscard]] long toLong(bool *ok = nullptr, int base = 10) const
+ { return QtPrivate::toIntegral<long>(QByteArrayView(*this), ok, base); }
+ [[nodiscard]] ulong toULong(bool *ok = nullptr, int base = 10) const
+ { return QtPrivate::toIntegral<ulong>(QByteArrayView(*this), ok, base); }
+ [[nodiscard]] qlonglong toLongLong(bool *ok = nullptr, int base = 10) const
+ { return QtPrivate::toIntegral<qlonglong>(QByteArrayView(*this), ok, base); }
+ [[nodiscard]] qulonglong toULongLong(bool *ok = nullptr, int base = 10) const
+ { return QtPrivate::toIntegral<qulonglong>(QByteArrayView(*this), ok, base); }
+ [[nodiscard]] float toFloat(bool *ok = nullptr) const
+ {
+ const auto r = QtPrivate::toFloat(*this);
+ if (ok)
+ *ok = bool(r);
+ return r.value_or(0.0f);
+ }
+ [[nodiscard]] double toDouble(bool *ok = nullptr) const
+ {
+ const auto r = QtPrivate::toDouble(*this);
+ if (ok)
+ *ok = bool(r);
+ return r.value_or(0.0);
+ }
+
+ using value_type = const char;
+ using pointer = value_type*;
+ using const_pointer = pointer;
+ using reference = value_type&;
+ using const_reference = reference;
+ using iterator = value_type*;
+ using const_iterator = iterator;
+ using difference_type = qsizetype; // violates Container concept requirements
+ using size_type = qsizetype; // violates Container concept requirements
+
+ constexpr const_iterator begin() const noexcept { return data(); }
+ constexpr const_iterator cbegin() const noexcept { return data(); }
+ constexpr const_iterator end() const noexcept { return data() + size(); }
+ constexpr const_iterator cend() const noexcept { return data() + size(); }
+
+ using reverse_iterator = std::reverse_iterator<iterator>;
+ using const_reverse_iterator = reverse_iterator;
+
+ const_reverse_iterator rbegin() const noexcept { return const_reverse_iterator(end()); }
+ const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator(end()); }
+ const_reverse_iterator rend() const noexcept { return const_reverse_iterator(begin()); }
+ const_reverse_iterator crend() const noexcept { return const_reverse_iterator(begin()); }
+
+ [[nodiscard]] constexpr QLatin1StringView mid(qsizetype pos, qsizetype n = -1) const
+ {
+ using namespace QtPrivate;
+ auto result = QContainerImplHelper::mid(size(), &pos, &n);
+ return result == QContainerImplHelper::Null ? QLatin1StringView()
+ : QLatin1StringView(m_data + pos, n);
+ }
+ [[nodiscard]] constexpr QLatin1StringView left(qsizetype n) const
+ {
+ if (size_t(n) >= size_t(size()))
+ n = size();
+ return {m_data, n};
+ }
+ [[nodiscard]] constexpr QLatin1StringView right(qsizetype n) const
+ {
+ if (size_t(n) >= size_t(size()))
+ n = size();
+ return {m_data + m_size - n, n};
+ }
+
+ [[nodiscard]] constexpr QLatin1StringView sliced(qsizetype pos) const
+ { verify(pos, 0); return {m_data + pos, m_size - pos}; }
+ [[nodiscard]] constexpr QLatin1StringView sliced(qsizetype pos, qsizetype n) const
+ { verify(pos, n); return {m_data + pos, n}; }
+ [[nodiscard]] constexpr QLatin1StringView first(qsizetype n) const
+ { verify(0, n); return sliced(0, n); }
+ [[nodiscard]] constexpr QLatin1StringView last(qsizetype n) const
+ { verify(0, n); return sliced(size() - n, n); }
+ [[nodiscard]] constexpr QLatin1StringView chopped(qsizetype n) const
+ { verify(0, n); return sliced(0, size() - n); }
+
+ constexpr void chop(qsizetype n)
+ { verify(0, n); m_size -= n; }
+ constexpr void truncate(qsizetype n)
+ { verify(0, n); m_size = n; }
+
+ [[nodiscard]] QLatin1StringView trimmed() const noexcept { return QtPrivate::trimmed(*this); }
+
+ template <typename Needle, typename...Flags>
+ [[nodiscard]] constexpr auto tokenize(Needle &&needle, Flags...flags) const
+ noexcept(noexcept(qTokenize(std::declval<const QLatin1StringView &>(),
+ std::forward<Needle>(needle), flags...)))
+ -> decltype(qTokenize(*this, std::forward<Needle>(needle), flags...))
+ { return qTokenize(*this, std::forward<Needle>(needle), flags...); }
+
+ friend bool comparesEqual(const QLatin1StringView &s1, const QLatin1StringView &s2) noexcept
+ { return s1.size() == s2.size() && QtPrivate::equalStrings(s1, s2); }
+ friend Qt::strong_ordering
+ compareThreeWay(const QLatin1StringView &s1, const QLatin1StringView &s2) noexcept
+ {
+ const int res = QtPrivate::compareStrings(s1, s2);
+ return Qt::compareThreeWay(res, 0);
+ }
+ Q_DECLARE_STRONGLY_ORDERED(QLatin1StringView)
+
+ // QChar <> QLatin1StringView
+ friend bool comparesEqual(const QLatin1StringView &lhs, QChar rhs) noexcept
+ { return lhs.size() == 1 && rhs == lhs.front(); }
+ friend Qt::strong_ordering
+ compareThreeWay(const QLatin1StringView &lhs, QChar rhs) noexcept
+ {
+ // negate, as the helper function expects QChar as lhs
+ const int res = -compare_helper(&rhs, 1, lhs);
+ return Qt::compareThreeWay(res, 0);
+ }
+ Q_DECLARE_STRONGLY_ORDERED(QLatin1StringView, QChar)
+
+ // QStringView <> QLatin1StringView
+ friend bool comparesEqual(const QLatin1StringView &lhs, const QStringView &rhs) noexcept
+ { return lhs.size() == rhs.size() && QtPrivate::equalStrings(lhs, rhs); }
+ friend Qt::strong_ordering
+ compareThreeWay(const QLatin1StringView &lhs, const QStringView &rhs) noexcept
+ {
+ const int res = QtPrivate::compareStrings(lhs, rhs);
+ return Qt::compareThreeWay(res, 0);
+ }
+ Q_DECLARE_STRONGLY_ORDERED(QLatin1StringView, QStringView)
+
+ // Reversed helper methods for QStringView <> QLatin1StringView comparison.
+ // If we do not provide them explicitly, QStringView <> QByteArrayView
+ // overloads will be selected, which will provide wrong results, because
+ // they will convert from utf-8
+ friend bool comparesEqual(const QStringView &lhs, const QLatin1StringView &rhs) noexcept
+ { return comparesEqual(rhs, lhs); }
+ friend Qt::strong_ordering
+ compareThreeWay(const QStringView &lhs, const QLatin1StringView &rhs) noexcept
+ { return QtOrderingPrivate::reversed(compareThreeWay(rhs, lhs)); }
+
+private:
+ friend bool comparesEqual(const QLatin1StringView &lhs, const QByteArrayView &rhs) noexcept
+ { return equal_helper(lhs, rhs.data(), rhs.size()); }
+ friend Qt::strong_ordering
+ compareThreeWay(const QLatin1StringView &lhs, const QByteArrayView &rhs) noexcept
+ {
+ const int res = compare_helper(lhs, rhs.data(), rhs.size());
+ return Qt::compareThreeWay(res, 0);
+ }
+
+ // Reversed helper methods for QByteArrayView <> QLatin1StringView comparison.
+ // If we do not provide them explicitly, QByteArrayView <> QByteArrayView
+ // overloads will be selected, which will provide wrong results
+ friend bool comparesEqual(const QByteArrayView &lhs, const QLatin1StringView &rhs) noexcept
+ { return comparesEqual(rhs, lhs); }
+ friend Qt::strong_ordering
+ compareThreeWay(const QByteArrayView &lhs, const QLatin1StringView &rhs) noexcept
+ { return QtOrderingPrivate::reversed(compareThreeWay(rhs, lhs)); }
+
+public:
+#if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
+ Q_DECLARE_STRONGLY_ORDERED(QLatin1StringView, QByteArrayView, QT_ASCII_CAST_WARN)
+ Q_DECLARE_STRONGLY_ORDERED(QLatin1StringView, QByteArray, QT_ASCII_CAST_WARN)
+ Q_DECLARE_STRONGLY_ORDERED(QLatin1StringView, const char *, QT_ASCII_CAST_WARN)
+#endif // !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
+
+private:
+ Q_ALWAYS_INLINE constexpr void verify([[maybe_unused]] qsizetype pos,
+ [[maybe_unused]] qsizetype n = 1) const
+ {
+ Q_ASSERT(pos >= 0);
+ Q_ASSERT(pos <= size());
+ Q_ASSERT(n >= 0);
+ Q_ASSERT(n <= size() - pos);
+ }
+ static int compare_helper(const QLatin1StringView &s1, const char *s2) noexcept
+ { return compare_helper(s1, s2, qstrlen(s2)); }
+ Q_CORE_EXPORT static bool equal_helper(QLatin1StringView s1, const char *s2, qsizetype len) noexcept;
+ Q_CORE_EXPORT static int compare_helper(const QLatin1StringView &s1, const char *s2, qsizetype len) noexcept;
+ Q_CORE_EXPORT static int compare_helper(const QChar *data1, qsizetype length1,
+ QLatin1StringView s2,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
+#if QT_VERSION >= QT_VERSION_CHECK(7, 0, 0) || defined(QT_BOOTSTRAPPED)
+ const char *m_data = nullptr;
+ qsizetype m_size = 0;
+#else
+ qsizetype m_size;
+ const char *m_data;
+#endif
+};
+#ifdef Q_L1S_VIEW_IS_PRIMARY
+Q_DECLARE_TYPEINFO(QLatin1StringView, Q_RELOCATABLE_TYPE);
+#else
+Q_DECLARE_TYPEINFO(QLatin1String, Q_RELOCATABLE_TYPE);
+#endif
+
+constexpr QByteArrayView::QByteArrayView(QLatin1StringView v) noexcept
+ : QByteArrayView(v.data(), v.size())
+{}
+
+namespace Qt {
+inline namespace Literals {
+inline namespace StringLiterals {
+
+constexpr inline QLatin1StringView operator""_L1(const char *str, size_t size) noexcept
+{
+ return {str, qsizetype(size)};
+}
+
+} // StringLiterals
+} // Literals
+} // Qt
+
+QT_END_NAMESPACE
+
+#ifdef Q_L1S_VIEW_IS_PRIMARY
+# undef Q_L1S_VIEW_IS_PRIMARY
+#endif
+
+#endif // QLATIN1STRINGVIEW_H
diff --git a/src/corelib/text/qlatin1stringview.qdoc b/src/corelib/text/qlatin1stringview.qdoc
new file mode 100644
index 0000000000..711057767b
--- /dev/null
+++ b/src/corelib/text/qlatin1stringview.qdoc
@@ -0,0 +1,1295 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// Copyright (C) 2022 Intel Corporation.
+// Copyright (C) 2019 Mail.ru Group.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
+
+/*! \class QLatin1StringView
+ \inmodule QtCore
+ \brief The QLatin1StringView class provides a thin wrapper around
+ a US-ASCII/Latin-1 encoded string literal.
+
+ \ingroup string-processing
+ \reentrant
+
+ \compares strong
+ \compareswith strong char16_t QChar QStringView QUtf8StringView QString \
+ {const char16_t *}
+ \endcompareswith
+ \compareswith strong {const char *} QByteArray QByteArrayView
+ The byte array data is interpreted as utf-8.
+ \endcompareswith
+
+ Many of QString's member functions are overloaded to accept
+ \c{const char *} instead of QString. This includes the copy
+ constructor, the assignment operator, the comparison operators,
+ and various other functions such as \l{QString::insert()}{insert()},
+ \l{QString::append()}{append()}, and \l{QString::prepend()}{prepend()}.
+ Some of these functions are optimized to avoid constructing a
+ QString object for the \c{const char *} data. For example,
+ assuming \c str is a QString,
+
+ \snippet code/src_corelib_text_qstring.cpp 3
+
+ is much faster than
+
+ \snippet code/src_corelib_text_qstring.cpp 4
+
+ because it doesn't construct four temporary QString objects and
+ make a deep copy of the character data.
+
+ However, that is not true for all QString member functions that take
+ \c{const char *} and therefore applications should assume a temporary will
+ be created, such as in
+
+ \snippet code/src_corelib_text_qstring.cpp 4bis
+
+ Applications that define \l QT_NO_CAST_FROM_ASCII (as explained
+ in the QString documentation) don't have access to QString's
+ \c{const char *} API. To provide an efficient way of specifying
+ constant Latin-1 strings, Qt provides the QLatin1StringView, which is
+ just a very thin wrapper around a \c{const char *}. Using
+ QLatin1StringView, the example code above becomes
+
+ \snippet code/src_corelib_text_qstring.cpp 5
+
+ This is a bit longer to type, but it provides exactly the same
+ benefits as the first version of the code, and is faster than
+ converting the Latin-1 strings using QString::fromLatin1().
+
+ Thanks to the QString(QLatin1StringView) constructor,
+ QLatin1StringView can be used everywhere a QString is expected. For
+ example:
+
+ \snippet code/src_corelib_text_qstring.cpp 6
+
+ \note If the function you're calling with a QLatin1StringView
+ argument isn't actually overloaded to take QLatin1StringView, the
+ implicit conversion to QString will trigger a memory allocation,
+ which is usually what you want to avoid by using QLatin1StringView
+ in the first place. In those cases, using QStringLiteral may be
+ the better option.
+
+ \sa QString, QLatin1Char, {QStringLiteral()}{QStringLiteral},
+ QT_NO_CAST_FROM_ASCII
+*/
+
+/*!
+ \class QLatin1String
+ \inmodule QtCore
+ \brief QLatin1String is the same as QLatin1StringView.
+
+ QLatin1String is a view to a Latin-1 string. It's the same as
+ QLatin1StringView and is kept for compatibility reasons. It is
+ recommended to use QLatin1StringView instead.
+
+ Please see the QLatin1StringView documentation for details.
+*/
+
+/*!
+ \typedef QLatin1StringView::value_type
+ \since 5.10
+
+ Alias for \c{const char}. Provided for compatibility with the STL.
+*/
+
+/*!
+ \typedef QLatin1StringView::difference_type
+ \since 5.10
+
+ Alias for \c{qsizetype}. Provided for compatibility with the STL.
+*/
+
+/*!
+ \typedef QLatin1StringView::size_type
+ \since 5.10
+
+ Alias for \c{qsizetype}. Provided for compatibility with the STL.
+
+ \note In version prior to Qt 6, this was an alias for \c{int},
+ restricting the amount of data that could be held in a QLatin1StringView
+ on 64-bit architectures.
+*/
+
+/*!
+ \typedef QLatin1StringView::pointer
+ \typedef QLatin1StringView::const_pointer
+ \since 6.7
+
+ Alias for \c{value_type *}. Provided for compatibility with the STL.
+*/
+
+/*!
+ \typedef QLatin1StringView::reference
+ \since 5.10
+
+ Alias for \c{value_type &}. Provided for compatibility with the STL.
+*/
+
+/*!
+ \typedef QLatin1StringView::const_reference
+ \since 5.11
+
+ Alias for \c{reference}. Provided for compatibility with the STL.
+*/
+
+/*!
+ \typedef QLatin1StringView::iterator
+ \since 5.10
+
+ QLatin1StringView does not support mutable iterators, so this is the same
+ as const_iterator.
+
+ \sa const_iterator, reverse_iterator
+*/
+
+/*!
+ \typedef QLatin1StringView::const_iterator
+ \since 5.10
+
+ \sa iterator, const_reverse_iterator
+*/
+
+/*!
+ \typedef QLatin1StringView::reverse_iterator
+ \since 5.10
+
+ QLatin1StringView does not support mutable reverse iterators, so this is the
+ same as const_reverse_iterator.
+
+ \sa const_reverse_iterator, iterator
+*/
+
+/*!
+ \typedef QLatin1StringView::const_reverse_iterator
+ \since 5.10
+
+ \sa reverse_iterator, const_iterator
+*/
+
+/*! \fn QLatin1StringView::QLatin1StringView()
+ \since 5.6
+
+ Constructs a QLatin1StringView object that stores a \nullptr.
+
+ \sa data(), isEmpty(), isNull(), {Distinction Between Null and Empty Strings}
+*/
+
+/*! \fn QLatin1StringView::QLatin1StringView(std::nullptr_t)
+ \since 6.4
+
+ Constructs a QLatin1StringView object that stores a \nullptr.
+
+ \sa data(), isEmpty(), isNull(), {Distinction Between Null and Empty Strings}
+*/
+
+/*! \fn QLatin1StringView::QLatin1StringView(const char *str)
+
+ Constructs a QLatin1StringView object that stores \a str.
+
+ The string data is \e not copied. The caller must be able to
+ guarantee that \a str will not be deleted or modified as long as
+ the QLatin1StringView object exists.
+
+ \sa latin1()
+*/
+
+/*! \fn QLatin1StringView::QLatin1StringView(const char *str, qsizetype size)
+
+ Constructs a QLatin1StringView object that stores \a str with \a size.
+
+ The string data is \e not copied. The caller must be able to
+ guarantee that \a str will not be deleted or modified as long as
+ the QLatin1StringView object exists.
+
+ \note: any null ('\\0') bytes in the byte array will be included in this
+ string, which will be converted to Unicode null characters (U+0000) if this
+ string is used by QString. This behavior is different from Qt 5.x.
+
+ \sa latin1()
+*/
+
+/*!
+ \fn QLatin1StringView::QLatin1StringView(const char *first, const char *last)
+ \since 5.10
+
+ Constructs a QLatin1StringView object that stores \a first with length
+ (\a last - \a first).
+
+ The range \c{[first,last)} must remain valid for the lifetime of
+ this Latin-1 string object.
+
+ Passing \nullptr as \a first is safe if \a last is \nullptr,
+ too, and results in a null Latin-1 string.
+
+ The behavior is undefined if \a last precedes \a first, \a first
+ is \nullptr and \a last is not, or if \c{last - first >
+ INT_MAX}.
+*/
+
+/*! \fn QLatin1StringView::QLatin1StringView(const QByteArray &str)
+
+ Constructs a QLatin1StringView object as a view on \a str.
+
+ The string data is \e not copied. The caller must be able to
+ guarantee that \a str will not be deleted or modified as long as
+ the QLatin1StringView object exists.
+
+ \sa latin1()
+*/
+
+/*! \fn QLatin1StringView::QLatin1StringView(QByteArrayView str)
+ \since 6.3
+
+ Constructs a QLatin1StringView object as a view on \a str.
+
+ The string data is \e not copied. The caller must be able to
+ guarantee that the data which \a str is pointing to will not
+ be deleted or modified as long as the QLatin1StringView object
+ exists. The size is obtained from \a str as-is, without checking
+ for a null-terminator.
+
+ \note: any null ('\\0') bytes in the byte array will be included in this
+ string, which will be converted to Unicode null characters (U+0000) if this
+ string is used by QString.
+
+ \sa latin1()
+*/
+
+/*!
+ \fn QString QLatin1StringView::toString() const
+ \since 6.0
+
+ Converts this Latin-1 string into a QString. Equivalent to
+ \code
+ return QString(*this);
+ \endcode
+*/
+
+/*! \fn const char *QLatin1StringView::latin1() const
+
+ Returns the start of the Latin-1 string referenced by this object.
+*/
+
+/*! \fn const char *QLatin1StringView::data() const
+
+ Returns the start of the Latin-1 string referenced by this object.
+*/
+
+/*! \fn const char *QLatin1StringView::constData() const
+ \since 6.4
+
+ Returns the start of the Latin-1 string referenced by this object.
+
+ This function is provided for compatibility with other Qt containers.
+
+ \sa data()
+*/
+
+/*! \fn qsizetype QLatin1StringView::size() const
+
+ Returns the size of the Latin-1 string referenced by this object.
+
+ \note In version prior to Qt 6, this function returned \c{int},
+ restricting the amount of data that could be held in a QLatin1StringView
+ on 64-bit architectures.
+*/
+
+/*! \fn qsizetype QLatin1StringView::length() const
+ \since 6.4
+
+ Same as size().
+
+ This function is provided for compatibility with other Qt containers.
+*/
+
+/*! \fn bool QLatin1StringView::isNull() const
+ \since 5.10
+
+ Returns whether the Latin-1 string referenced by this object is null
+ (\c{data() == nullptr}) or not.
+
+ \sa isEmpty(), data()
+*/
+
+/*! \fn bool QLatin1StringView::isEmpty() const
+ \since 5.10
+
+ Returns whether the Latin-1 string referenced by this object is empty
+ (\c{size() == 0}) or not.
+
+ \sa isNull(), size()
+*/
+
+/*! \fn bool QLatin1StringView::empty() const
+ \since 6.4
+
+ Returns whether the Latin-1 string referenced by this object is empty
+ (\c{size() == 0}) or not.
+
+ This function is provided for STL compatibility.
+
+ \sa isEmpty(), isNull(), size()
+*/
+
+/*! \fn QLatin1Char QLatin1StringView::at(qsizetype pos) const
+ \since 5.8
+
+ Returns the character at position \a pos in this object.
+
+ \note This function performs no error checking.
+ The behavior is undefined when \a pos < 0 or \a pos >= size().
+
+ \sa operator[]()
+*/
+
+/*! \fn QLatin1Char QLatin1StringView::operator[](qsizetype pos) const
+ \since 5.8
+
+ Returns the character at position \a pos in this object.
+
+ \note This function performs no error checking.
+ The behavior is undefined when \a pos < 0 or \a pos >= size().
+
+ \sa at()
+*/
+
+/*!
+ \fn QLatin1Char QLatin1StringView::front() const
+ \since 5.10
+
+ Returns the first character in the string.
+ Same as \c{at(0)}.
+
+ This function is provided for STL compatibility.
+
+ \warning Calling this function on an empty string constitutes
+ undefined behavior.
+
+ \sa back(), at(), operator[]()
+*/
+
+/*!
+ \fn QLatin1Char QLatin1StringView::first() const
+ \since 6.4
+
+ Returns the first character in the string.
+ Same as \c{at(0)} or front().
+
+ This function is provided for compatibility with other Qt containers.
+
+ \warning Calling this function on an empty string constitutes
+ undefined behavior.
+
+ \sa last(), front(), back()
+*/
+
+/*!
+ \fn QLatin1Char QLatin1StringView::back() const
+ \since 5.10
+
+ Returns the last character in the string.
+ Same as \c{at(size() - 1)}.
+
+ This function is provided for STL compatibility.
+
+ \warning Calling this function on an empty string constitutes
+ undefined behavior.
+
+ \sa front(), at(), operator[]()
+*/
+
+/*!
+ \fn QLatin1Char QLatin1StringView::last() const
+ \since 6.4
+
+ Returns the last character in the string.
+ Same as \c{at(size() - 1)} or back().
+
+ This function is provided for compatibility with other Qt containers.
+
+ \warning Calling this function on an empty string constitutes
+ undefined behavior.
+
+ \sa first(), back(), front()
+*/
+
+/*!
+ \fn int QLatin1StringView::compare(QStringView str, Qt::CaseSensitivity cs) const
+ \fn int QLatin1StringView::compare(QLatin1StringView l1, Qt::CaseSensitivity cs) const
+ \fn int QLatin1StringView::compare(QChar ch) const
+ \fn int QLatin1StringView::compare(QChar ch, Qt::CaseSensitivity cs) const
+ \since 5.14
+
+ Compares this string view with UTF-16 string view \a str, Latin-1 string view \a l1,
+ or the character \a ch, respectively. Returns a negative integer if this
+ string is less than \a str, \a l1 or \a ch, returns a positive integer if it
+ is greater than \a str, \a l1 or \a ch, and zero if they are equal.
+
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
+
+ \sa operator==(), operator<(), operator>()
+*/
+
+/*!
+ \fn int QLatin1StringView::compare(QUtf8StringView str, Qt::CaseSensitivity cs) const
+ \since 6.5
+
+ Compares this string view with \a str and returns a negative integer if
+ this string view is less than \a str, a positive integer if it is greater than
+ \a str, and zero if they are equal.
+
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {comparison}
+
+ \sa operator==(), operator<(), operator>()
+*/
+
+
+/*!
+ \fn bool QLatin1StringView::startsWith(QStringView str, Qt::CaseSensitivity cs) const
+ \since 5.10
+ \fn bool QLatin1StringView::startsWith(QLatin1StringView l1, Qt::CaseSensitivity cs) const
+ \since 5.10
+ \fn bool QLatin1StringView::startsWith(QChar ch) const
+ \since 5.10
+ \fn bool QLatin1StringView::startsWith(QChar ch, Qt::CaseSensitivity cs) const
+ \since 5.10
+
+ Returns \c true if this Latin-1 string view starts with the UTF-16
+ string viewed by \a str, the Latin-1 string viewed by \a l1, or the
+ character \a ch, respectively; otherwise returns \c false.
+
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
+
+ \sa endsWith()
+*/
+
+/*!
+ \fn bool QLatin1StringView::endsWith(QStringView str, Qt::CaseSensitivity cs) const
+ \since 5.10
+ \fn bool QLatin1StringView::endsWith(QLatin1StringView l1, Qt::CaseSensitivity cs) const
+ \since 5.10
+ \fn bool QLatin1StringView::endsWith(QChar ch) const
+ \since 5.10
+ \fn bool QLatin1StringView::endsWith(QChar ch, Qt::CaseSensitivity cs) const
+ \since 5.10
+
+ Returns \c true if this Latin-1 string view ends with the UTF-16 string
+ viewed \a str, the Latin-1 string viewed by \a l1, or the character \a ch,
+ respectively; otherwise returns \c false.
+
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
+
+ \sa startsWith()
+*/
+
+/*!
+ \fn qsizetype QLatin1StringView::indexOf(QStringView str, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
+ \fn qsizetype QLatin1StringView::indexOf(QLatin1StringView l1, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
+ \fn qsizetype QLatin1StringView::indexOf(QChar c, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
+ \since 5.14
+
+ Returns the index position in this Latin-1 string view of the first
+ occurrence of the UTF-16 string viewed by \a str, the Latin-1 string
+ viewed by \a l1, or the character \a ch, respectively, searching forward
+ from index position \a from. Returns -1 if \a str, \a l1 or \a c is not
+ found, respectively.
+
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
+
+ \include qstring.qdocinc negative-index-start-search-from-end
+
+ \sa QString::indexOf()
+*/
+
+/*!
+ \fn bool QLatin1StringView::contains(QStringView str, Qt::CaseSensitivity cs) const
+ \fn bool QLatin1StringView::contains(QLatin1StringView l1, Qt::CaseSensitivity cs) const
+ \fn bool QLatin1StringView::contains(QChar c, Qt::CaseSensitivity cs) const
+ \since 5.14
+
+ Returns \c true if this Latin-1 string view contains an occurrence of the
+ UTF-16 string viewed by \a str, the Latin-1 string viewed by \a l1, or the
+ character \a ch, respectively; otherwise returns \c false.
+
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
+
+ \sa indexOf(), QStringView::contains(), QStringView::indexOf(),
+ QString::indexOf()
+*/
+
+/*!
+ \fn qsizetype QLatin1StringView::lastIndexOf(QStringView str, qsizetype from, Qt::CaseSensitivity cs) const
+ \fn qsizetype QLatin1StringView::lastIndexOf(QLatin1StringView l1, qsizetype from, Qt::CaseSensitivity cs) const
+ \fn qsizetype QLatin1StringView::lastIndexOf(QChar c, qsizetype from, Qt::CaseSensitivity cs) const
+ \since 5.14
+
+ Returns the index position in this Latin-1 string view of the last
+ occurrence of the UTF-16 string viewed by \a str, the Latin-1 string
+ viewed by \a l1, or the character \a ch, respectively, searching backward
+ from index position \a from; returns -1 if \a str, \a l1 or \a ch is not
+ found, respectively.
+
+ \include qstring.qdocinc negative-index-start-search-from-end
+
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
+
+ \note When searching for a 0-length \a str or \a l1, the match at
+ the end of the data is excluded from the search by a negative \a
+ from, even though \c{-1} is normally thought of as searching from
+ the end of the string: the match at the end is \e after the last
+ character, so it is excluded. To include such a final empty match,
+ either give a positive value for \a from or omit the \a from
+ parameter entirely.
+
+ \sa indexOf(), QStringView::lastIndexOf(), QStringView::indexOf(),
+ QString::indexOf()
+*/
+
+/*!
+ \fn qsizetype QLatin1StringView::lastIndexOf(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
+ \fn qsizetype QLatin1StringView::lastIndexOf(QLatin1StringView l1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
+ \since 6.2
+ \overload lastIndexOf()
+
+ Returns the index position in this Latin-1 string view of the last
+ occurrence of the UTF-16 string viewed by \a str or the Latin-1 string
+ viewed by \a l1, respectively. Returns -1 if \a str or \a l1 is not found,
+ respectively.
+
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
+*/
+
+/*!
+ \fn qsizetype QLatin1StringView::lastIndexOf(QChar ch, Qt::CaseSensitivity cs) const
+ \since 6.3
+ \overload
+*/
+
+/*!
+ \fn qsizetype QLatin1StringView::count(QStringView str, Qt::CaseSensitivity cs) const
+ \fn qsizetype QLatin1StringView::count(QLatin1StringView l1, Qt::CaseSensitivity cs) const
+ \fn qsizetype QLatin1StringView::count(QChar ch, Qt::CaseSensitivity cs) const
+ \since 6.4
+
+ Returns the number of (potentially overlapping) occurrences of the
+ UTF-16 string viewed by \a str, the Latin-1 string viewed by \a l1,
+ or the character \a ch, respectively, in this string view.
+
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
+
+ \sa contains(), indexOf()
+*/
+
+/*!
+ \fn QLatin1StringView::const_iterator QLatin1StringView::begin() const
+ \since 5.10
+
+ Returns a const \l{STL-style iterators}{STL-style iterator} pointing to the
+ first character in the string.
+
+ This function is provided for STL compatibility.
+
+ \sa end(), cbegin(), rbegin(), data()
+*/
+
+/*!
+ \fn QLatin1StringView::const_iterator QLatin1StringView::cbegin() const
+ \since 5.10
+
+ Same as begin().
+
+ This function is provided for STL compatibility.
+
+ \sa cend(), begin(), crbegin(), data()
+*/
+
+/*!
+ \fn QLatin1StringView::const_iterator QLatin1StringView::constBegin() const
+ \since 6.4
+
+ Same as begin().
+
+ This function is provided for compatibility with other Qt containers.
+
+ \sa constEnd(), begin(), cbegin(), data()
+*/
+
+/*!
+ \fn QLatin1StringView::const_iterator QLatin1StringView::end() const
+ \since 5.10
+
+ Returns a const \l{STL-style iterators}{STL-style iterator} pointing just
+ after the last character in the string.
+
+ This function is provided for STL compatibility.
+
+ \sa begin(), cend(), rend()
+*/
+
+/*! \fn QLatin1StringView::const_iterator QLatin1StringView::cend() const
+ \since 5.10
+
+ Same as end().
+
+ This function is provided for STL compatibility.
+
+ \sa cbegin(), end(), crend()
+*/
+
+/*! \fn QLatin1StringView::const_iterator QLatin1StringView::constEnd() const
+ \since 6.4
+
+ Same as end().
+
+ This function is provided for compatibility with other Qt containers.
+
+ \sa constBegin(), end(), cend(), crend()
+*/
+
+/*!
+ \fn QLatin1StringView::const_reverse_iterator QLatin1StringView::rbegin() const
+ \since 5.10
+
+ Returns a const \l{STL-style iterators}{STL-style} reverse iterator pointing
+ to the first character in the string, in reverse order.
+
+ This function is provided for STL compatibility.
+
+ \sa rend(), crbegin(), begin()
+*/
+
+/*!
+ \fn QLatin1StringView::const_reverse_iterator QLatin1StringView::crbegin() const
+ \since 5.10
+
+ Same as rbegin().
+
+ This function is provided for STL compatibility.
+
+ \sa crend(), rbegin(), cbegin()
+*/
+
+/*!
+ \fn QLatin1StringView::const_reverse_iterator QLatin1StringView::rend() const
+ \since 5.10
+
+ Returns a \l{STL-style iterators}{STL-style} reverse iterator pointing just
+ after the last character in the string, in reverse order.
+
+ This function is provided for STL compatibility.
+
+ \sa rbegin(), crend(), end()
+*/
+
+/*!
+ \fn QLatin1StringView::const_reverse_iterator QLatin1StringView::crend() const
+ \since 5.10
+
+ Same as rend().
+
+ This function is provided for STL compatibility.
+
+ \sa crbegin(), rend(), cend()
+*/
+
+/*!
+ \fn QLatin1StringView QLatin1StringView::mid(qsizetype start, qsizetype length) const
+ \since 5.8
+
+ Returns the substring of length \a length starting at position
+ \a start in this Latin-1 string view.
+
+ If you know that \a start and \a length cannot be out of bounds, use
+ sliced() instead in new code, because it is faster.
+
+ Returns an empty Latin-1 string view if \a start exceeds the length
+ of this string view. If there are less than \a length characters available
+ in this string view starting at \a start, or if \a length is negative
+ (default), the function returns all characters that are available from
+ \a start.
+
+ \sa first(), last(), sliced(), chopped(), chop(), truncate()
+*/
+
+/*!
+ \fn QLatin1StringView QLatin1StringView::left(qsizetype length) const
+ \since 5.8
+
+ If you know that \a length cannot be out of bounds, use first() instead in
+ new code, because it is faster.
+
+ Returns the substring of length \a length starting at position
+ 0 in this Latin-1 string view.
+
+ The entire Latin-1 string view is returned if \a length is greater
+ than or equal to size(), or less than zero.
+
+ \sa first(), last(), sliced(), startsWith(), chopped(), chop(), truncate()
+*/
+
+/*!
+ \fn QLatin1StringView QLatin1StringView::right(qsizetype length) const
+ \since 5.8
+
+ If you know that \a length cannot be out of bounds, use last() instead in
+ new code, because it is faster.
+
+ Returns the substring of length \a length starting at position
+ size() - \a length in this Latin-1 string view.
+
+ The entire Latin-1 string view is returned if \a length is greater
+ than or equal to size(), or less than zero.
+
+ \sa first(), last(), sliced(), endsWith(), chopped(), chop(), truncate()
+*/
+
+/*!
+ \fn QLatin1StringView QLatin1StringView::first(qsizetype n) const
+ \since 6.0
+
+ Returns a Latin-1 string view that contains the first \a n characters
+ of this string view.
+
+ \note The behavior is undefined when \a n < 0 or \a n > size().
+
+ \sa last(), startsWith(), chopped(), chop(), truncate()
+*/
+
+/*!
+ \fn QLatin1StringView QLatin1StringView::last(qsizetype n) const
+ \since 6.0
+
+ Returns a Latin-1 string view that contains the last \a n characters
+ of this string view.
+
+ \note The behavior is undefined when \a n < 0 or \a n > size().
+
+ \sa first(), endsWith(), chopped(), chop(), truncate()
+*/
+
+/*!
+ \fn QLatin1StringView QLatin1StringView::sliced(qsizetype pos, qsizetype n) const
+ \since 6.0
+
+ Returns a Latin-1 string view that points to \a n characters of this
+ string view, starting at position \a pos.
+
+//! [UB-sliced-index-length]
+ \note The behavior is undefined when \a pos < 0, \a n < 0,
+ or \c{pos + n > size()}.
+//! [UB-sliced-index-length]
+
+ \sa first(), last(), chopped(), chop(), truncate()
+*/
+
+/*!
+ \fn QLatin1StringView QLatin1StringView::sliced(qsizetype pos) const
+ \since 6.0
+
+ Returns a Latin-1 string view starting at position \a pos in this
+ string view, and extending to its end.
+
+//! [UB-sliced-index-only]
+ \note The behavior is undefined when \a pos < 0 or \a pos > size().
+//! [UB-sliced-index-only]
+
+ \sa first(), last(), chopped(), chop(), truncate()
+*/
+
+/*!
+ \fn QLatin1StringView QLatin1StringView::chopped(qsizetype length) const
+ \since 5.10
+
+ Returns the substring of length size() - \a length starting at the
+ beginning of this object.
+
+ Same as \c{left(size() - length)}.
+
+ \note The behavior is undefined when \a length < 0 or \a length > size().
+
+ \sa sliced(), first(), last(), chop(), truncate()
+*/
+
+/*!
+ \fn void QLatin1StringView::truncate(qsizetype length)
+ \since 5.10
+
+ Truncates this string to length \a length.
+
+ Same as \c{*this = left(length)}.
+
+ \note The behavior is undefined when \a length < 0 or \a length > size().
+
+ \sa sliced(), first(), last(), chopped(), chop()
+*/
+
+/*!
+ \fn void QLatin1StringView::chop(qsizetype length)
+ \since 5.10
+
+ Truncates this string by \a length characters.
+
+ Same as \c{*this = left(size() - length)}.
+
+ \note The behavior is undefined when \a length < 0 or \a length > size().
+
+ \sa sliced(), first(), last(), chopped(), truncate()
+*/
+
+/*!
+ \fn QLatin1StringView QLatin1StringView::trimmed() const
+ \since 5.10
+
+ Strips leading and trailing whitespace and returns the result.
+
+ Whitespace means any character for which QChar::isSpace() returns
+ \c true. This includes the ASCII characters '\\t', '\\n', '\\v',
+ '\\f', '\\r', and ' '.
+*/
+
+/*!
+ \fn bool QLatin1StringView::operator==(const QLatin1StringView &lhs, const char * const &rhs)
+ \since 4.3
+
+ Returns \c true if the string \a lhs is equal to const char pointer \a rhs;
+ otherwise returns \c false.
+
+ The \a rhs const char pointer is converted to a QUtf8StringView.
+
+ You can disable this operator by defining
+ \l QT_NO_CAST_FROM_ASCII when you compile your applications. This
+ can be useful if you want to ensure that all user-visible strings
+ go through QObject::tr(), for example.
+
+ \sa {Comparing Strings}
+*/
+
+/*!
+ \fn bool QLatin1StringView::operator==(const QLatin1StringView &lhs, const QByteArray &rhs)
+ \since 5.0
+ \overload
+
+ The \a rhs byte array is converted to a QUtf8StringView.
+
+ You can disable this operator by defining
+ \l QT_NO_CAST_FROM_ASCII when you compile your applications. This
+ can be useful if you want to ensure that all user-visible strings
+ go through QObject::tr(), for example.
+*/
+
+/*!
+ \fn bool QLatin1StringView::operator!=(const QLatin1StringView &lhs, const char * const &rhs)
+ \since 4.3
+
+ Returns \c true if the string \a lhs is not equal to const char pointer \a rhs;
+ otherwise returns \c false.
+
+ The \a rhs const char pointer is converted to a QUtf8StringView.
+
+ You can disable this operator by defining
+ \l QT_NO_CAST_FROM_ASCII when you compile your applications. This
+ can be useful if you want to ensure that all user-visible strings
+ go through QObject::tr(), for example.
+
+ \sa {Comparing Strings}
+*/
+
+/*!
+ \fn bool QLatin1StringView::operator!=(const QLatin1StringView &lhs, const QByteArray &rhs)
+ \since 5.0
+ \overload operator!=()
+
+ The \a rhs byte array is converted to a QUtf8StringView.
+
+ You can disable this operator by defining
+ \l QT_NO_CAST_FROM_ASCII when you compile your applications. This
+ can be useful if you want to ensure that all user-visible strings
+ go through QObject::tr(), for example.
+*/
+
+/*!
+ \fn bool QLatin1StringView::operator>(const QLatin1StringView &lhs, const char * const &rhs)
+ \since 4.3
+
+ Returns \c true if the string \a lhs is lexically greater than const char pointer
+ \a rhs; otherwise returns \c false.
+
+ The \a rhs const char pointer is converted to a QUtf8StringView.
+
+ You can disable this operator by defining \l QT_NO_CAST_FROM_ASCII
+ when you compile your applications. This can be useful if you want
+ to ensure that all user-visible strings go through QObject::tr(),
+ for example.
+
+ \sa {Comparing Strings}
+*/
+
+/*!
+ \fn bool QLatin1StringView::operator>(const QLatin1StringView &lhs, const QByteArray &rhs)
+ \since 5.0
+ \overload
+
+ The \a rhs byte array is converted to a QUtf8StringView.
+
+ You can disable this operator by defining \l QT_NO_CAST_FROM_ASCII
+ when you compile your applications. This can be useful if you want
+ to ensure that all user-visible strings go through QObject::tr(),
+ for example.
+*/
+
+/*!
+ \fn bool QLatin1StringView::operator<(const QLatin1StringView &lhs, const char * const &rhs)
+ \since 4.3
+
+ Returns \c true if the string \a lhs is lexically less than const char pointer
+ \a rhs; otherwise returns \c false.
+
+ The \a rhs const char pointer is converted to a QUtf8StringView.
+
+ You can disable this operator by defining
+ \l QT_NO_CAST_FROM_ASCII when you compile your applications. This
+ can be useful if you want to ensure that all user-visible strings
+ go through QObject::tr(), for example.
+
+ \sa {Comparing Strings}
+*/
+
+/*!
+ \fn bool QLatin1StringView::operator<(const QLatin1StringView &lhs, const QByteArray &rhs)
+ \since 5.0
+ \overload
+
+ The \a rhs byte array is converted to a QUtf8StringView.
+
+ You can disable this operator by defining
+ \l QT_NO_CAST_FROM_ASCII when you compile your applications. This
+ can be useful if you want to ensure that all user-visible strings
+ go through QObject::tr(), for example.
+*/
+
+/*!
+ \fn bool QLatin1StringView::operator>=(const QLatin1StringView &lhs, const char * const &rhs)
+ \since 4.3
+
+ Returns \c true if the string \a lhs is lexically greater than or equal to
+ const char pointer \a rhs; otherwise returns \c false.
+
+ The \a rhs const char pointer is converted to a QUtf8StringView.
+
+ You can disable this operator by defining
+ \l QT_NO_CAST_FROM_ASCII when you compile your applications. This
+ can be useful if you want to ensure that all user-visible strings
+ go through QObject::tr(), for example.
+
+ \sa {Comparing Strings}
+*/
+
+/*!
+ \fn bool QLatin1StringView::operator>=(const QLatin1StringView &lhs, const QByteArray &rhs)
+ \since 5.0
+ \overload
+
+ The \a rhs byte array is converted to a QUtf8StringView.
+
+ You can disable this operator by defining
+ \l QT_NO_CAST_FROM_ASCII when you compile your applications. This
+ can be useful if you want to ensure that all user-visible strings
+ go through QObject::tr(), for example.
+*/
+
+/*!
+ \fn bool QLatin1StringView::operator<=(const QLatin1StringView &lhs, const char * const &rhs)
+ \since 4.3
+
+ Returns \c true if the string \a lhs is lexically less than or equal to
+ const char pointer \a rhs; otherwise returns \c false.
+
+ The \a rhs const char pointer is converted to a QUtf8StringView.
+
+ You can disable this operator by defining
+ \l QT_NO_CAST_FROM_ASCII when you compile your applications. This
+ can be useful if you want to ensure that all user-visible strings
+ go through QObject::tr(), for example.
+
+ \sa {Comparing Strings}
+*/
+
+/*!
+ \fn bool QLatin1StringView::operator<=(const QLatin1StringView &lhs, const QByteArray &rhs)
+ \since 5.0
+ \overload
+
+ The \a rhs byte array is converted to a QUtf8StringView.
+
+ You can disable this operator by defining
+ \l QT_NO_CAST_FROM_ASCII when you compile your applications. This
+ can be useful if you want to ensure that all user-visible strings
+ go through QObject::tr(), for example.
+*/
+
+/*! \fn bool QLatin1StringView::operator==(const QLatin1StringView &lhs, const QLatin1StringView &rhs)
+
+ Returns \c true if string \a lhs is lexically equal to string \a rhs;
+ otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator!=(const QLatin1StringView &lhs, const QLatin1StringView &rhs)
+
+ Returns \c true if string \a lhs is lexically not equal to string \a rhs;
+ otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator<(const QLatin1StringView &lhs, const QLatin1StringView &rhs)
+
+ Returns \c true if string \a lhs is lexically less than string \a rhs;
+ otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator<=(const QLatin1StringView &lhs, const QLatin1StringView &rhs)
+
+ Returns \c true if string \a lhs is lexically less than or equal to
+ string \a rhs; otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator>(const QLatin1StringView &lhs, const QLatin1StringView &rhs)
+
+ Returns \c true if string \a lhs is lexically greater than string \a rhs;
+ otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator>=(const QLatin1StringView &lhs, const QLatin1StringView &rhs)
+
+ Returns \c true if string \a lhs is lexically greater than or equal
+ to string \a rhs; otherwise returns \c false.
+*/
+
+/*! \fn bool QLatin1StringView::operator==(const QChar &lhs, const QLatin1StringView &rhs)
+
+ Returns \c true if char \a lhs is lexically equal to string \a rhs;
+ otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator<(const QChar &lhs, const QLatin1StringView &rhs)
+
+ Returns \c true if char \a lhs is lexically less than string \a rhs;
+ otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator>(const QChar &lhs, const QLatin1StringView &rhs)
+ Returns \c true if char \a lhs is lexically greater than string \a rhs;
+ otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator!=(const QChar &lhs, const QLatin1StringView &rhs)
+
+ Returns \c true if char \a lhs is lexically not equal to string \a rhs;
+ otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator<=(const QChar &lhs, const QLatin1StringView &rhs)
+
+ Returns \c true if char \a lhs is lexically less than or equal to
+ string \a rhs; otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator>=(const QChar &lhs, const QLatin1StringView &rhs)
+
+ Returns \c true if char \a lhs is lexically greater than or equal to
+ string \a rhs; otherwise returns \c false.
+*/
+
+/*! \fn bool QLatin1StringView::operator==(const QLatin1StringView &lhs, const QChar &rhs)
+
+ Returns \c true if string \a lhs is lexically equal to char \a rhs;
+ otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator<(const QLatin1StringView &lhs, const QChar &rhs)
+
+ Returns \c true if string \a lhs is lexically less than char \a rhs;
+ otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator>(const QLatin1StringView &lhs, const QChar &rhs)
+
+ Returns \c true if string \a lhs is lexically greater than char \a rhs;
+ otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator!=(const QLatin1StringView &lhs, const QChar &rhs)
+
+ Returns \c true if string \a lhs is lexically not equal to char \a rhs;
+ otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator<=(const QLatin1StringView &lhs, const QChar &rhs)
+
+ Returns \c true if string \a lhs is lexically less than or equal to
+ char \a rhs; otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator>=(const QLatin1StringView &lhs, const QChar &rhs)
+
+ Returns \c true if string \a lhs is lexically greater than or equal to
+ char \a rhs; otherwise returns \c false.
+*/
+
+/*! \fn bool QLatin1StringView::operator==(const QStringView &lhs, const QLatin1StringView &rhs)
+
+ Returns \c true if string view \a lhs is lexically equal to string \a rhs;
+ otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator<(const QStringView &lhs, const QLatin1StringView &rhs)
+
+ Returns \c true if string view \a lhs is lexically less than string \a rhs;
+ otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator>(const QStringView &lhs, const QLatin1StringView &rhs)
+
+ Returns \c true if string view \a lhs is lexically greater than string \a rhs;
+ otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator!=(const QStringView &lhs, const QLatin1StringView &rhs)
+
+ Returns \c true if string view \a lhs is lexically not equal to string \a rhs;
+ otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator<=(const QStringView &lhs, const QLatin1StringView &rhs)
+
+ Returns \c true if string view \a lhs is lexically less than or equal to
+ string \a rhs; otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator>=(const QStringView &lhs, const QLatin1StringView &rhs)
+
+ Returns \c true if string view \a lhs is lexically greater than or equal to
+ string \a rhs; otherwise returns \c false.
+*/
+
+/*! \fn bool QLatin1StringView::operator==(const QLatin1StringView &lhs, const QStringView &rhs)
+
+ Returns \c true if string \a lhs is lexically equal to string view \a rhs;
+ otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator<(const QLatin1StringView &lhs, const QStringView &rhs)
+
+ Returns \c true if string \a lhs is lexically less than string view \a rhs;
+ otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator>(const QLatin1StringView &lhs, const QStringView &rhs)
+
+ Returns \c true if string \a lhs is lexically greater than string view \a rhs;
+ otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator!=(const QLatin1StringView &lhs, const QStringView &rhs)
+
+ Returns \c true if string \a lhs is lexically not equal to string view \a rhs;
+ otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator<=(const QLatin1StringView &lhs, const QStringView &rhs)
+
+ Returns \c true if string \a lhs is lexically less than or equal to
+ string view \a rhs; otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator>=(const QLatin1StringView &lhs, const QStringView &rhs)
+
+ Returns \c true if string \a lhs is lexically greater than or equal to
+ string view \a rhs; otherwise returns \c false.
+*/
+
+/*! \fn bool QLatin1StringView::operator==(const char * const &lhs, const QLatin1StringView &rhs)
+
+ Returns \c true if const char pointer \a lhs is lexically equal to
+ string \a rhs; otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator<(const char * const &lhs, const QLatin1StringView &rhs)
+
+ Returns \c true if const char pointer \a lhs is lexically less than
+ string \a rhs; otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator>(const char * const &lhs, const QLatin1StringView &rhs)
+
+ Returns \c true if const char pointer \a lhs is lexically greater than
+ string \a rhs; otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator!=(const char * const &lhs, const QLatin1StringView &rhs)
+
+ Returns \c true if const char pointer \a lhs is lexically not equal to
+ string \a rhs; otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator<=(const char * const &lhs, const QLatin1StringView &rhs)
+
+ Returns \c true if const char pointer \a lhs is lexically less than or
+ equal to string \a rhs; otherwise returns \c false.
+*/
+/*! \fn bool QLatin1StringView::operator>=(const char * const &lhs, const QLatin1StringView &rhs)
+
+ Returns \c true if const char pointer \a lhs is lexically greater than or
+ equal to string \a rhs; otherwise returns \c false.
+*/
+
+/*!
+ \fn qlonglong QLatin1StringView::toLongLong(bool *ok, int base) const
+ \fn qulonglong QLatin1StringView::toULongLong(bool *ok, int base) const
+ \fn int QLatin1StringView::toInt(bool *ok, int base) const
+ \fn uint QLatin1StringView::toUInt(bool *ok, int base) const
+ \fn long QLatin1StringView::toLong(bool *ok, int base) const
+ \fn ulong QLatin1StringView::toULong(bool *ok, int base) const
+ \fn short QLatin1StringView::toShort(bool *ok, int base) const
+ \fn ushort QLatin1StringView::toUShort(bool *ok, int base) const
+
+ \since 6.4
+
+ Returns this QLatin1StringView converted to a corresponding numeric value using
+ base \a base, which is ten by default. Bases 0 and 2 through 36 are supported,
+ using letters for digits beyond 9; A is ten, B is eleven and so on.
+
+ If \a base is 0, the base is determined automatically using the following
+ rules (in this order), if the Latin-1 string view begins with:
+
+ \list
+ \li \c "0x", the rest of it is read as hexadecimal (base 16)
+ \li \c "0b", the rest of it is read as binary (base 2)
+ \li \c "0", the rest of it is read as octal (base 8)
+ \li otherwise it is read as decimal
+ \endlist
+
+ Returns 0 if the conversion fails.
+
+ If \a ok is not \nullptr, failure is reported by setting *\a{ok}
+ to \c false, and success by setting *\a{ok} to \c true.
+
+//! [latin1-numeric-conversion-note]
+ \note The conversion of the number is performed in the default C locale,
+ regardless of the user's locale. Use QLocale to perform locale-aware
+ conversions between numbers and strings.
+
+ This function ignores leading and trailing spacing characters.
+//! [latin1-numeric-conversion-note]
+
+ \note Support for the "0b" prefix was added in Qt 6.4.
+*/
+
+/*!
+ \fn double QLatin1StringView::toDouble(bool *ok) const
+ \fn float QLatin1StringView::toFloat(bool *ok) const
+ \since 6.4
+
+ Returns this QLatin1StringView converted to a corresponding floating-point value.
+
+ Returns an infinity if the conversion overflows or 0.0 if the
+ conversion fails for other reasons (e.g. underflow).
+
+ If \a ok is not \nullptr, failure is reported by setting *\a{ok}
+ to \c false, and success by setting *\a{ok} to \c true.
+
+ \warning The QLatin1StringView content may only contain valid numerical
+ characters which includes the plus/minus sign, the character e used in
+ scientific notation, and the decimal point. Including the unit or additional
+ characters leads to a conversion error.
+
+ \include qlatin1stringview.qdoc latin1-numeric-conversion-note
+*/
+
+/*!
+ \fn Qt::Literals::StringLiterals::operator""_L1(const char *str, size_t size)
+
+ \relates QLatin1StringView
+ \since 6.4
+
+ Literal operator that creates a QLatin1StringView out of the first \a size
+ characters in the char string literal \a str.
+
+ The following code creates a QLatin1StringView:
+ \code
+ using namespace Qt::Literals::StringLiterals;
+
+ auto str = "hello"_L1;
+ \endcode
+
+ \sa Qt::Literals::StringLiterals
+*/
diff --git a/src/corelib/text/qlocale.cpp b/src/corelib/text/qlocale.cpp
index 26087ffd83..ab95b300eb 100644
--- a/src/corelib/text/qlocale.cpp
+++ b/src/corelib/text/qlocale.cpp
@@ -1,46 +1,10 @@
-/****************************************************************************
-**
-** Copyright (C) 2022 The Qt Company Ltd.
-** Copyright (C) 2021 Intel Corporation.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2022 The Qt Company Ltd.
+// Copyright (C) 2021 Intel Corporation.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qglobal.h"
-#if (defined(QT_STATIC) || defined(QT_BOOTSTRAPPED)) && defined(Q_CC_GNU) && Q_CC_GNU >= 1000
+#if (defined(QT_STATIC) || defined(QT_BOOTSTRAPPED)) && defined(Q_CC_GNU_ONLY) && Q_CC_GNU >= 1000
QT_WARNING_DISABLE_GCC("-Wfree-nonheap-object") // false positive tracking
#endif
@@ -58,6 +22,7 @@ QT_WARNING_DISABLE_GCC("-Wfree-nonheap-object") // false positive tracking
#include "qlocale.h"
#include "qlocale_p.h"
#include "qlocale_tools_p.h"
+#include <private/qtools_p.h>
#if QT_CONFIG(datetimeparser)
#include "private/qdatetimeparser_p.h"
#endif
@@ -65,8 +30,13 @@ QT_WARNING_DISABLE_GCC("-Wfree-nonheap-object") // false positive tracking
#include "qdatetime.h"
#include "qstringlist.h"
#include "qvariant.h"
+#include "qvarlengtharray.h"
#include "qstringbuilder.h"
+#if QT_CONFIG(timezone)
+# include "qtimezone.h"
+#endif
#include "private/qnumeric_p.h"
+#include "private/qtools_p.h"
#include <cmath>
#ifndef QT_NO_SYSTEMLOCALE
# include "qmutex.h"
@@ -80,20 +50,40 @@ QT_WARNING_DISABLE_GCC("-Wfree-nonheap-object") // false positive tracking
#include "private/qgregoriancalendar_p.h"
#include "qcalendar.h"
+#include <q20iterator.h>
+
QT_BEGIN_NAMESPACE
+constexpr int QLocale::DefaultTwoDigitBaseYear;
+
+QT_IMPL_METATYPE_EXTERN_TAGGED(QList<Qt::DayOfWeek>, QList_Qt__DayOfWeek)
#ifndef QT_NO_SYSTEMLOCALE
-static QSystemLocale *_systemLocale = nullptr;
-class QSystemLocaleSingleton: public QSystemLocale
-{
-public:
- QSystemLocaleSingleton() : QSystemLocale(true) {}
-};
+QT_IMPL_METATYPE_EXTERN_TAGGED(QSystemLocale::CurrencyToStringArgument,
+ QSystemLocale__CurrencyToStringArgument)
+#endif
+
+using namespace Qt::StringLiterals;
+using namespace QtMiscUtils;
-Q_GLOBAL_STATIC(QSystemLocaleSingleton, QSystemLocale_globalSystemLocale)
-static QLocaleData systemLocaleData;
+#ifndef QT_NO_SYSTEMLOCALE
+Q_CONSTINIT static QSystemLocale *_systemLocale = nullptr;
+Q_CONSTINIT static QLocaleData systemLocaleData = {};
#endif
+static_assert(ascii_isspace(' '));
+static_assert(ascii_isspace('\t'));
+static_assert(ascii_isspace('\n'));
+static_assert(ascii_isspace('\v'));
+static_assert(ascii_isspace('\f'));
+static_assert(ascii_isspace('\r'));
+static_assert(!ascii_isspace('\0'));
+static_assert(!ascii_isspace('\a'));
+static_assert(!ascii_isspace('a'));
+static_assert(!ascii_isspace('\177'));
+static_assert(!ascii_isspace(uchar('\200')));
+static_assert(!ascii_isspace(uchar('\xA0'))); // NBSP (is a space but Latin 1, not ASCII)
+static_assert(!ascii_isspace(uchar('\377')));
+
/******************************************************************************
** Helpers for accessing Qt locale database
*/
@@ -117,22 +107,22 @@ QLocale::Language QLocalePrivate::codeToLanguage(QStringView code,
if (uc1 > 0x7F || uc2 > 0x7F || uc3 > 0x7F)
return QLocale::AnyLanguage;
- const AlphaCode codeBuf = { { char(uc1), char(uc2), char(uc3) } };
+ const AlphaCode codeBuf = { char(uc1), char(uc2), char(uc3) };
auto searchCode = [codeBuf](auto f) {
return std::find_if(languageCodeList.begin(), languageCodeList.end(),
- [=](const LanguageCodeEntry &i) { return f(i) == codeBuf; });
+ [=](LanguageCodeEntry i) { return f(i) == codeBuf; });
};
if (codeTypes.testFlag(QLocale::ISO639Part1) && uc3 == 0) {
- auto i = searchCode([](const LanguageCodeEntry &i) { return i.part1; });
+ auto i = searchCode([](LanguageCodeEntry i) { return i.part1; });
if (i != languageCodeList.end())
return QLocale::Language(std::distance(languageCodeList.begin(), i));
}
if (uc3 != 0) {
if (codeTypes.testFlag(QLocale::ISO639Part2B)) {
- auto i = searchCode([](const LanguageCodeEntry &i) { return i.part2B; });
+ auto i = searchCode([](LanguageCodeEntry i) { return i.part2B; });
if (i != languageCodeList.end())
return QLocale::Language(std::distance(languageCodeList.begin(), i));
}
@@ -141,13 +131,13 @@ QLocale::Language QLocalePrivate::codeToLanguage(QStringView code,
// This is asserted in iso639_3.LanguageCodeData.
if (codeTypes.testFlag(QLocale::ISO639Part2T)
&& !codeTypes.testFlag(QLocale::ISO639Part3)) {
- auto i = searchCode([](const LanguageCodeEntry &i) { return i.part2T; });
+ auto i = searchCode([](LanguageCodeEntry i) { return i.part2T; });
if (i != languageCodeList.end())
return QLocale::Language(std::distance(languageCodeList.begin(), i));
}
if (codeTypes.testFlag(QLocale::ISO639Part3)) {
- auto i = searchCode([](const LanguageCodeEntry &i) { return i.part3; });
+ auto i = searchCode([](LanguageCodeEntry i) { return i.part3; });
if (i != languageCodeList.end())
return QLocale::Language(std::distance(languageCodeList.begin(), i));
}
@@ -187,7 +177,7 @@ QLocale::Script QLocalePrivate::codeToScript(QStringView code) noexcept
unsigned char c3 = code[3].toLower().toLatin1();
const unsigned char *c = script_code_list;
- for (int i = 0; i < QLocale::LastScript; ++i, c += 4) {
+ for (qsizetype i = 0; i < QLocale::LastScript; ++i, c += 4) {
if (c0 == c[0] && c1 == c[1] && c2 == c[2] && c3 == c[3])
return QLocale::Script(i);
}
@@ -213,46 +203,46 @@ QLocale::Territory QLocalePrivate::codeToTerritory(QStringView code) noexcept
return QLocale::AnyTerritory;
}
-QLatin1String QLocalePrivate::languageToCode(QLocale::Language language,
- QLocale::LanguageCodeTypes codeTypes)
+std::array<char, 4> QLocalePrivate::languageToCode(QLocale::Language language,
+ QLocale::LanguageCodeTypes codeTypes)
{
if (language == QLocale::AnyLanguage || language > QLocale::LastLanguage)
- return QLatin1String();
+ return {};
if (language == QLocale::C)
- return QLatin1String("C");
+ return {'C'};
const LanguageCodeEntry &i = languageCodeList[language];
if (codeTypes.testFlag(QLocale::ISO639Part1) && i.part1.isValid())
- return QLatin1String(i.part1.code, 2);
+ return i.part1.decode();
if (codeTypes.testFlag(QLocale::ISO639Part2B) && i.part2B.isValid())
- return QLatin1String(i.part2B.code, 3);
+ return i.part2B.decode();
if (codeTypes.testFlag(QLocale::ISO639Part2T) && i.part2T.isValid())
- return QLatin1String(i.part2T.code, 3);
+ return i.part2T.decode();
if (codeTypes.testFlag(QLocale::ISO639Part3))
- return QLatin1String(i.part3.code, 3);
+ return i.part3.decode();
- return QLatin1String();
+ return {};
}
-QLatin1String QLocalePrivate::scriptToCode(QLocale::Script script)
+QLatin1StringView QLocalePrivate::scriptToCode(QLocale::Script script)
{
if (script == QLocale::AnyScript || script > QLocale::LastScript)
- return QLatin1String();
+ return {};
const unsigned char *c = script_code_list + 4 * script;
- return QLatin1String(reinterpret_cast<const char *>(c), 4);
+ return {reinterpret_cast<const char *>(c), 4};
}
-QLatin1String QLocalePrivate::territoryToCode(QLocale::Territory territory)
+QLatin1StringView QLocalePrivate::territoryToCode(QLocale::Territory territory)
{
if (territory == QLocale::AnyTerritory || territory > QLocale::LastTerritory)
- return QLatin1String();
+ return {};
const unsigned char *c = territory_code_list + 3 * territory;
- return QLatin1String(reinterpret_cast<const char*>(c), c[2] == 0 ? 2 : 3);
+ return {reinterpret_cast<const char*>(c), c[2] == 0 ? 2 : 3};
}
namespace {
@@ -262,7 +252,7 @@ struct LikelyPair
QLocaleId value = QLocaleId { 0, 0, 0 };
};
-bool operator<(const LikelyPair &lhs, const LikelyPair &rhs)
+bool operator<(LikelyPair lhs, LikelyPair rhs)
{
// Must match the comparison LocaleDataWriter.likelySubtags() uses when
// sorting, see qtbase/util/locale_database.qlocalexml2cpp.py
@@ -421,14 +411,14 @@ QByteArray QLocaleId::name(char separator) const
return QByteArrayLiteral("C");
const LanguageCodeEntry &language = languageCodeList[language_id];
- const char *lang;
+ AlphaCode lang;
qsizetype langLen;
if (language.part1.isValid()) {
- lang = language.part1.code;
+ lang = language.part1;
langLen = 2;
} else {
- lang = language.part2B.isValid() ? language.part2B.code : language.part3.code;
+ lang = language.part2B.isValid() ? language.part2B : language.part3;
langLen = 3;
}
@@ -441,10 +431,12 @@ QByteArray QLocaleId::name(char separator) const
QByteArray name(len, Qt::Uninitialized);
char *uc = name.data();
- *uc++ = lang[0];
- *uc++ = lang[1];
+ auto langArray = lang.decode();
+
+ *uc++ = langArray[0];
+ *uc++ = langArray[1];
if (langLen > 2)
- *uc++ = lang[2];
+ *uc++ = langArray[2];
if (script) {
*uc++ = separator;
@@ -473,9 +465,9 @@ QByteArray QLocalePrivate::bcp47Name(char separator) const
return m_data->id().withLikelySubtagsRemoved().name(separator);
}
-static int findLocaleIndexById(const QLocaleId &localeId)
+static qsizetype findLocaleIndexById(QLocaleId localeId)
{
- quint16 idx = locale_index[localeId.language_id];
+ qsizetype idx = locale_index[localeId.language_id];
// If there are no locales for specified language (so we we've got the
// default language, which has no associated script or country), give up:
if (localeId.language_id && idx == 0)
@@ -492,17 +484,17 @@ static int findLocaleIndexById(const QLocaleId &localeId)
return -1;
}
-int QLocaleData::findLocaleIndex(QLocaleId lid)
+qsizetype QLocaleData::findLocaleIndex(QLocaleId lid)
{
QLocaleId localeId = lid;
QLocaleId likelyId = localeId.withLikelySubtagsAdded();
const ushort fallback = likelyId.language_id;
// Try a straight match with the likely data:
- int index = findLocaleIndexById(likelyId);
+ qsizetype index = findLocaleIndexById(likelyId);
if (index >= 0)
return index;
- QList<QLocaleId> tried;
+ QVarLengthArray<QLocaleId, 6> tried;
tried.push_back(likelyId);
#define CheckCandidate(id) do { \
@@ -542,13 +534,13 @@ int QLocaleData::findLocaleIndex(QLocaleId lid)
return locale_index[fallback];
}
-static QStringView findTag(QStringView name)
+static QStringView findTag(QStringView name) noexcept
{
- const QString separators = QStringLiteral("_-.@");
- int i = 0;
- while (i < name.size() && !separators.contains(name[i]))
- i++;
- return name.first(i);
+ const std::u16string_view v(name.utf16(), size_t(name.size()));
+ const auto i = v.find_first_of(u"_-.@");
+ if (i == std::string_view::npos)
+ return name;
+ return name.first(qsizetype(i));
}
static bool validTag(QStringView tag)
@@ -556,7 +548,7 @@ static bool validTag(QStringView tag)
// Is tag is a non-empty sequence of ASCII letters and/or digits ?
for (QChar uc : tag) {
const char16_t ch = uc.unicode();
- if (!((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || (ch >= '0' && ch <= '9')))
+ if (!isAsciiLetterOrNumber(ch))
return false;
}
return tag.size() > 0;
@@ -569,7 +561,7 @@ static bool isScript(QStringView tag)
static const QString allScripts =
QString::fromLatin1(reinterpret_cast<const char *>(script_code_list),
sizeof(script_code_list) - 1);
- return tag.length() == 4 && allScripts.indexOf(tag) % 4 == 0;
+ return tag.size() == 4 && allScripts.indexOf(tag) % 4 == 0;
}
bool qt_splitLocaleName(QStringView name, QStringView *lang, QStringView *script, QStringView *land)
@@ -630,26 +622,26 @@ QLocaleId QLocaleId::fromName(QStringView name)
return { langId, QLocalePrivate::codeToScript(script), QLocalePrivate::codeToTerritory(land) };
}
-QString qt_readEscapedFormatString(QStringView format, int *idx)
+QString qt_readEscapedFormatString(QStringView format, qsizetype *idx)
{
- int &i = *idx;
+ qsizetype &i = *idx;
- Q_ASSERT(format.at(i) == QLatin1Char('\''));
+ Q_ASSERT(format.at(i) == u'\'');
++i;
if (i == format.size())
return QString();
if (format.at(i).unicode() == '\'') { // "''" outside of a quoted string
++i;
- return QLatin1String("'");
+ return "'"_L1;
}
QString result;
while (i < format.size()) {
if (format.at(i).unicode() == '\'') {
- if (format.mid(i + 1).startsWith(QLatin1Char('\''))) {
+ if (format.mid(i + 1).startsWith(u'\'')) {
// "''" inside a quoted string
- result.append(QLatin1Char('\''));
+ result.append(u'\'');
i += 2;
} else {
break;
@@ -680,7 +672,7 @@ QString qt_readEscapedFormatString(QStringView format, int *idx)
qt_repeatCount(u"aab"); // == 2
\endcode
*/
-int qt_repeatCount(QStringView s)
+qsizetype qt_repeatCount(QStringView s)
{
if (s.isEmpty())
return 0;
@@ -688,15 +680,15 @@ int qt_repeatCount(QStringView s)
qsizetype j = 1;
while (j < s.size() && s.at(j) == c)
++j;
- return int(j);
+ return j;
}
-static const QLocaleData *default_data = nullptr;
+Q_CONSTINIT static const QLocaleData *default_data = nullptr;
+Q_CONSTINIT QBasicAtomicInt QLocalePrivate::s_generation = Q_BASIC_ATOMIC_INITIALIZER(0);
-static const QLocaleData *const c_data = locale_data;
static QLocalePrivate *c_private()
{
- static QLocalePrivate c_locale(c_data, 0, QLocale::OmitGroupSeparator, 1);
+ static QLocalePrivate c_locale(locale_data, 0, QLocale::OmitGroupSeparator, 1);
return &c_locale;
}
@@ -706,37 +698,48 @@ static QLocalePrivate *c_private()
*/
/*!
- Constructs a QSystemLocale object.
+ \internal
+ Constructs a QSystemLocale object.
+
+ The constructor will automatically install this object as the system locale.
+ It and the destructor maintain a stack of system locales, with the
+ most-recently-created instance (that hasn't yet been deleted) used as the
+ system locale. This is only intended as a way to let a platform plugin
+ install its own system locale, overriding what might otherwise be provided
+ for its class of platform (as Android does, differing from Linux), and to
+ let tests transiently override the system or plugin-supplied one. As such,
+ there should not be diverse threads creating and destroying QSystemLocale
+ instances concurrently, so no attempt is made at thread-safety in managing
+ the stack.
- The constructor will automatically install this object as the system locale,
- if there's not one active. It also resets the flag that'll prompt
- QLocale::system() to re-initialize its data, so that instantiating a
- QSystemLocale transiently (doesn't install the transient as system locale if
- there was one already and) triggers an update to the system locale's data.
+ This constructor also resets the flag that'll prompt QLocale::system() to
+ re-initialize its data, so that instantiating a QSystemLocale (even
+ transiently) triggers a refresh of the system locale's data. This is
+ exploited by some test code.
*/
-QSystemLocale::QSystemLocale()
+QSystemLocale::QSystemLocale() : next(_systemLocale)
{
- if (!_systemLocale)
- _systemLocale = this;
+ _systemLocale = this;
systemLocaleData.m_language_id = 0;
}
/*!
\internal
-*/
-QSystemLocale::QSystemLocale(bool)
-{ }
-
-/*!
- Deletes the object.
+ Deletes the object.
*/
QSystemLocale::~QSystemLocale()
{
if (_systemLocale == this) {
- _systemLocale = nullptr;
+ _systemLocale = next;
+ // Change to system locale => force refresh.
systemLocaleData.m_language_id = 0;
+ } else {
+ for (QSystemLocale *p = _systemLocale; p; p = p->next) {
+ if (p->next == this)
+ p->next = next;
+ }
}
}
@@ -744,7 +747,12 @@ static const QSystemLocale *systemLocale()
{
if (_systemLocale)
return _systemLocale;
- return QSystemLocale_globalSystemLocale();
+
+ // As this is only ever instantiated with _systemLocale null, it is
+ // necessarily the ->next-most in any chain that may subsequently develop;
+ // and it won't be destructed until exit()-time.
+ static QSystemLocale globalInstance;
+ return &globalInstance;
}
static void updateSystemPrivate()
@@ -775,28 +783,49 @@ static void updateSystemPrivate()
systemLocaleData.m_script_id = res.toInt();
// Should we replace Any values based on likely sub-tags ?
+
+ // If system locale is default locale, update the default collator's generation:
+ if (default_data == &systemLocaleData)
+ QLocalePrivate::s_generation.fetchAndAddRelaxed(1);
}
#endif // !QT_NO_SYSTEMLOCALE
-static const QLocaleData *systemData()
+static const QLocaleData *systemData(qsizetype *sysIndex = nullptr)
{
#ifndef QT_NO_SYSTEMLOCALE
/*
Copy over the information from the fallback locale and modify.
- This modifies (cross-thread) global state, so take care to only call it in
- one thread.
+ If sysIndex is passed, it should be the m_index of the system locale's
+ QLocalePrivate, which we'll update if it needs it.
+
+ This modifies (cross-thread) global state, so is mutex-protected.
*/
{
- static QBasicMutex systemDataMutex;
+ Q_CONSTINIT static QLocaleId sysId;
+ bool updated = false;
+
+ Q_CONSTINIT static QBasicMutex systemDataMutex;
systemDataMutex.lock();
- if (systemLocaleData.m_language_id == 0)
+ if (systemLocaleData.m_language_id == 0) {
updateSystemPrivate();
+ updated = true;
+ }
+ // Initialization of system private has *sysIndex == -1 to hit this.
+ if (sysIndex && (updated || *sysIndex < 0)) {
+ const QLocaleId nowId = systemLocaleData.id();
+ if (sysId != nowId || *sysIndex < 0) {
+ // This look-up may be expensive:
+ *sysIndex = QLocaleData::findLocaleIndex(nowId);
+ sysId = nowId;
+ }
+ }
systemDataMutex.unlock();
}
return &systemLocaleData;
#else
+ Q_UNUSED(sysIndex);
return locale_data;
#endif
}
@@ -808,7 +837,7 @@ static const QLocaleData *defaultData()
return default_data;
}
-static uint defaultIndex()
+static qsizetype defaultIndex()
{
const QLocaleData *const data = defaultData();
#ifndef QT_NO_SYSTEMLOCALE
@@ -819,15 +848,15 @@ static uint defaultIndex()
}
#endif
- Q_ASSERT(data >= locale_data);
- Q_ASSERT(data < locale_data + std::size(locale_data));
+ using QtPrivate::q_points_into_range;
+ Q_ASSERT(q_points_into_range(data, locale_data));
return data - locale_data;
}
const QLocaleData *QLocaleData::c()
{
Q_ASSERT(locale_index[QLocale::C] == 0);
- return c_data;
+ return locale_data;
}
#ifndef QT_NO_DATASTREAM
@@ -846,18 +875,17 @@ QDataStream &operator>>(QDataStream &ds, QLocale &l)
}
#endif // QT_NO_DATASTREAM
-static const int locale_data_size = sizeof(locale_data)/sizeof(QLocaleData) - 1;
+static constexpr qsizetype locale_data_size = q20::ssize(locale_data) - 1; // trailing guard
-QBasicAtomicInt QLocalePrivate::s_generation = Q_BASIC_ATOMIC_INITIALIZER(0);
-Q_GLOBAL_STATIC_WITH_ARGS(QSharedDataPointer<QLocalePrivate>, defaultLocalePrivate,
- (new QLocalePrivate(defaultData(), defaultIndex())))
+Q_GLOBAL_STATIC(QSharedDataPointer<QLocalePrivate>, defaultLocalePrivate,
+ new QLocalePrivate(defaultData(), defaultIndex()))
static QLocalePrivate *localePrivateByName(QStringView name)
{
if (name == u"C")
return c_private();
- const int index = QLocaleData::findLocaleIndex(QLocaleId::fromName(name));
- Q_ASSERT(index >= 0 && size_t(index) < std::size(locale_data) - 1);
+ const qsizetype index = QLocaleData::findLocaleIndex(QLocaleId::fromName(name));
+ Q_ASSERT(index >= 0 && index < locale_data_size);
return new QLocalePrivate(locale_data + index, index,
locale_data[index].m_language_id == QLocale::C
? QLocale::OmitGroupSeparator : QLocale::DefaultNumberOptions);
@@ -869,8 +897,8 @@ static QLocalePrivate *findLocalePrivate(QLocale::Language language, QLocale::Sc
if (language == QLocale::C)
return c_private();
- int index = QLocaleData::findLocaleIndex(QLocaleId { language, script, territory });
- Q_ASSERT(index >= 0 && size_t(index) < std::size(locale_data) - 1);
+ qsizetype index = QLocaleData::findLocaleIndex(QLocaleId { language, script, territory });
+ Q_ASSERT(index >= 0 && index < locale_data_size);
const QLocaleData *data = locale_data + index;
QLocale::NumberOptions numberOptions = QLocale::DefaultNumberOptions;
@@ -885,29 +913,41 @@ static QLocalePrivate *findLocalePrivate(QLocale::Language language, QLocale::Sc
return new QLocalePrivate(data, index, numberOptions);
}
-QString QLocaleData::decimalPoint() const
+static std::optional<QString>
+systemLocaleString(const QLocaleData *that, QSystemLocale::QueryType type)
{
#ifndef QT_NO_SYSTEMLOCALE
- if (this == &systemLocaleData) {
- auto res = systemLocale()->query(QSystemLocale::DecimalPoint).toString();
- if (!res.isEmpty())
- return res;
- }
+ if (that != &systemLocaleData)
+ return std::nullopt;
+
+ QVariant v = systemLocale()->query(type);
+ if (v.metaType() != QMetaType::fromType<QString>())
+ return std::nullopt;
+
+ return v.toString();
+#else
+ Q_UNUSED(that)
+ Q_UNUSED(type)
+ return std::nullopt;
#endif
- return decimalSeparator().getData(single_character_data);
+}
+
+static QString localeString(const QLocaleData *that, QSystemLocale::QueryType type,
+ QLocaleData::DataRange range)
+{
+ if (auto opt = systemLocaleString(that, type))
+ return *opt;
+ return range.getData(single_character_data);
+}
+
+QString QLocaleData::decimalPoint() const
+{
+ return localeString(this, QSystemLocale::DecimalPoint, decimalSeparator());
}
QString QLocaleData::groupSeparator() const
{
- // Empty => don't do grouping
-#ifndef QT_NO_SYSTEMLOCALE
- if (this == &systemLocaleData) {
- QVariant res = systemLocale()->query(QSystemLocale::GroupSeparator);
- if (!res.isNull())
- return res.toString();
- }
-#endif
- return groupDelim().getData(single_character_data);
+ return localeString(this, QSystemLocale::GroupSeparator, groupDelim());
}
QString QLocaleData::percentSign() const
@@ -922,14 +962,7 @@ QString QLocaleData::listSeparator() const
QString QLocaleData::zeroDigit() const
{
-#ifndef QT_NO_SYSTEMLOCALE
- if (this == &systemLocaleData) {
- auto res = systemLocale()->query(QSystemLocale::ZeroDigit).toString();
- if (!res.isEmpty())
- return res;
- }
-#endif
- return zero().getData(single_character_data);
+ return localeString(this, QSystemLocale::ZeroDigit, zero());
}
char32_t QLocaleData::zeroUcs() const
@@ -950,26 +983,12 @@ char32_t QLocaleData::zeroUcs() const
QString QLocaleData::negativeSign() const
{
-#ifndef QT_NO_SYSTEMLOCALE
- if (this == &systemLocaleData) {
- auto res = systemLocale()->query(QSystemLocale::NegativeSign).toString();
- if (!res.isEmpty())
- return res;
- }
-#endif
- return minus().getData(single_character_data);
+ return localeString(this, QSystemLocale::NegativeSign, minus());
}
QString QLocaleData::positiveSign() const
{
-#ifndef QT_NO_SYSTEMLOCALE
- if (this == &systemLocaleData) {
- auto res = systemLocale()->query(QSystemLocale::PositiveSign).toString();
- if (!res.isEmpty())
- return res;
- }
-#endif
- return plus().getData(single_character_data);
+ return localeString(this, QSystemLocale::PositiveSign, plus());
}
QString QLocaleData::exponentSeparator() const
@@ -984,6 +1003,21 @@ QLocale::QLocale(QLocalePrivate &dd)
: d(&dd)
{}
+/*!
+ \variable QLocale::DefaultTwoDigitBaseYear
+ \since 6.7
+
+ \brief The default start year of the century within which a format taking
+ a two-digit year will select. The value of the constant is \c {1900}.
+
+ Some locales use, particularly for ShortFormat, only the last two digits of
+ the year. Proir to 6.7 the year 1900 was always used as a base year for
+ such cases. Now various QLocale and QDate functions have the overloads that
+ allow callers to specify the base year, and this constant is used as its
+ default value.
+
+ \sa toDate(), toDateTime(), QDate::fromString(), QDateTime::fromString()
+*/
/*!
\since 6.3
@@ -1019,12 +1053,10 @@ QLocale::QLocale(QStringView name)
{
}
-#if QT_STRINGVIEW_LEVEL < 2
/*!
\fn QLocale::QLocale(const QString &name)
\overload
*/
-#endif
/*!
Constructs a QLocale object initialized with the default locale.
@@ -1055,7 +1087,7 @@ QLocale::QLocale()
*/
QLocale::QLocale(Language language, Territory territory)
- : d(findLocalePrivate(language, QLocale::AnyScript, territory))
+ : d(findLocalePrivate(language, AnyScript, territory))
{
}
@@ -1087,10 +1119,7 @@ QLocale::QLocale(Language language, Script script, Territory territory)
Constructs a QLocale object as a copy of \a other.
*/
-QLocale::QLocale(const QLocale &other)
-{
- d = other.d;
-}
+QLocale::QLocale(const QLocale &other) noexcept = default;
/*!
Destructor
@@ -1105,11 +1134,7 @@ QLocale::~QLocale()
to this QLocale object.
*/
-QLocale &QLocale::operator=(const QLocale &other)
-{
- d = other.d;
- return *this;
-}
+QLocale &QLocale::operator=(const QLocale &other) noexcept = default;
/*!
\internal
@@ -1189,10 +1214,10 @@ QString QLocale::quoteString(QStringView str, QuotationStyle style) const
#ifndef QT_NO_SYSTEMLOCALE
if (d->m_data == &systemLocaleData) {
QVariant res;
- if (style == QLocale::AlternateQuotation)
+ if (style == AlternateQuotation)
res = systemLocale()->query(QSystemLocale::StringToAlternateQuotation,
QVariant::fromValue(str));
- if (res.isNull() || style == QLocale::StandardQuotation)
+ if (res.isNull() || style == StandardQuotation)
res = systemLocale()->query(QSystemLocale::StringToStandardQuotation,
QVariant::fromValue(str));
if (!res.isNull())
@@ -1201,7 +1226,7 @@ QString QLocale::quoteString(QStringView str, QuotationStyle style) const
#endif
QLocaleData::DataRange start, end;
- if (style == QLocale::StandardQuotation) {
+ if (style == StandardQuotation) {
start = d->m_data->quoteStart();
end = d->m_data->quoteEnd();
} else {
@@ -1231,7 +1256,7 @@ QString QLocale::createSeparatedList(const QStringList &list) const
}
#endif
- const int size = list.size();
+ const qsizetype size = list.size();
if (size < 1)
return QString();
@@ -1246,7 +1271,7 @@ QString QLocale::createSeparatedList(const QStringList &list) const
QStringView formatMid = d->m_data->midListPattern().viewData(list_pattern_part_data);
QStringView formatEnd = d->m_data->endListPattern().viewData(list_pattern_part_data);
QString result = formatStart.arg(list.at(0), list.at(1));
- for (int i = 2; i < size - 1; ++i)
+ for (qsizetype i = 2; i < size - 1; ++i)
result = formatMid.arg(result, list.at(i));
result = formatEnd.arg(result, list.at(size - 1));
return result;
@@ -1333,51 +1358,94 @@ QLocale::Country QLocale::country() const
#endif
/*!
- Returns the language and country of this locale as a
- string of the form "language_country", where
- language is a lowercase, two-letter ISO 639 language code,
- and country is an uppercase, two- or three-letter ISO 3166 country code.
+ \since 6.7
+ \enum QLocale::TagSeparator
+
+ Indicate how to combine the parts that make up a locale identifier.
+
+ A locale identifier may be made up of several tags, indicating language,
+ script and territory (plus, potentially, other details), joined together to
+ form the identifier. Various standards and conventional forms use either a
+ dash (the Unicode HYPHEN-MINUS, U+002D) or an underscore (LOW LINE, U+005F).
+ Different clients of QLocale may thus need one or the other.
+
+ \value Dash Use \c{'-'}, the dash or hyphen character.
+ \value Underscore Use \c{'_'}, the underscore character.
+
+ \note Although dash and underscore are the only separators used in public
+ standards (as at 2023), it is possible to cast any \l
+ {https://en.cppreference.com/w/cpp/language/ascii} {ASCII} character to this
+ type if a non-standard ASCII separator is needed. Casting a non-ASCII
+ character (with decimal value above 127) is not supported: such values are
+ reserved for future use as enum members if some public standard ever uses a
+ non-ASCII separator. It is, of course, possible to use QString::replace() to
+ replace the separator used by a function taking a parameter of this type
+ with an arbitrary Unicode character or string.
+*/
+
+Q_DECL_COLD_FUNCTION static void badSeparatorWarning(const char *method, char sep)
+{
+ qWarning("QLocale::%s(): Using non-ASCII separator '%c' (%02x) is unsupported",
+ method, sep, uint(uchar(sep)));
+}
+
+/*!
+ \brief The short name of this locale.
- Note that even if QLocale object was constructed with an explicit script,
- name() will not contain it for compatibility reasons. Use \l bcp47Name() instead
- if you need a full locale name.
+ Returns the language and territory of this locale as a string of the form
+ "language_territory", where language is a lowercase, two-letter ISO 639
+ language code, and territory is an uppercase, two- or three-letter ISO 3166
+ territory code. If the locale has no specified territory, only the language
+ name is returned. Since Qt 6.7 an optional \a separator parameter can be
+ supplied to override the default underscore character separating the two
+ tags.
- \sa QLocale(), language(), script(), territory(), bcp47Name()
+ Even if the QLocale object was constructed with an explicit script, name()
+ will not contain it for compatibility reasons. Use \l bcp47Name() instead if
+ you need a full locale name, or construct the string you want to identify a
+ locale by from those returned by passing its \l language() to \l
+ languageToCode() and similar for the script and territory.
+
+ \sa QLocale(), language(), script(), territory(), bcp47Name(), uiLanguages()
*/
-QString QLocale::name() const
+QString QLocale::name(TagSeparator separator) const
{
+ const char sep = char(separator);
+ if (uchar(sep) > 0x7f) {
+ badSeparatorWarning("name", sep);
+ return {};
+ }
+ const auto code = d->languageCode();
+ QLatin1StringView view{code.data()};
+
Language l = language();
if (l == C)
- return d->languageCode();
+ return view;
Territory c = territory();
if (c == AnyTerritory)
- return d->languageCode();
-
- return d->languageCode() + QLatin1Char('_') + d->territoryCode();
-}
+ return view;
-static qlonglong toIntegral_helper(const QLocaleData *d, QStringView str, bool *ok,
- QLocale::NumberOptions mode, qlonglong)
-{
- return d->stringToLongLong(str, 10, ok, mode);
-}
-
-static qulonglong toIntegral_helper(const QLocaleData *d, QStringView str, bool *ok,
- QLocale::NumberOptions mode, qulonglong)
-{
- return d->stringToUnsLongLong(str, 10, ok, mode);
+ return view + QLatin1Char(sep) + d->territoryCode();
}
template <typename T> static inline
T toIntegral_helper(const QLocalePrivate *d, QStringView str, bool *ok)
{
- using Int64 =
- typename std::conditional<std::is_unsigned<T>::value, qulonglong, qlonglong>::type;
+ constexpr bool isUnsigned = std::is_unsigned_v<T>;
+ using Int64 = typename std::conditional_t<isUnsigned, quint64, qint64>;
+
+ QSimpleParsedNumber<Int64> r{};
+ if constexpr (isUnsigned)
+ r = d->m_data->stringToUnsLongLong(str, 10, d->m_numberOptions);
+ else
+ r = d->m_data->stringToLongLong(str, 10, d->m_numberOptions);
- // we select the right overload by the last, unused parameter
- Int64 val = toIntegral_helper(d->m_data, str, ok, d->m_numberOptions, Int64());
+ if (ok)
+ *ok = r.ok();
+
+ Int64 val = r.result;
if (T(val) != val) {
if (ok != nullptr)
*ok = false;
@@ -1390,20 +1458,35 @@ T toIntegral_helper(const QLocalePrivate *d, QStringView str, bool *ok)
/*!
\since 4.8
- Returns the dash-separated language, script and country (and possibly other
- BCP47 fields) of this locale as a string.
+ \brief Returns the BCP47 field names joined with dashes.
+
+ This combines as many of language, script and territory (and possibly other
+ BCP47 fields) for this locale as are needed to uniquely specify it. Note
+ that fields may be omitted if the Unicode consortium's \l {Matching
+ combinations of language, script and territory}{Likely Subtag Rules} imply
+ the omitted fields when given those retained. See \l name() for how to
+ construct a string from individual fields, if some other format is needed.
- Unlike the uiLanguages() the returned value of the bcp47Name() represents
- the locale name of the QLocale data but not the language the user-interface
- should be in.
+ Unlike uiLanguages(), the value returned by bcp47Name() represents the
+ locale name of the QLocale data; this need not be the language the
+ user-interface should be in.
- This function tries to conform the locale name to BCP47.
+ This function tries to conform the locale name to the IETF Best Common
+ Practice 47, defined by RFC 5646. Since Qt 6.7, it supports an optional \a
+ separator parameter which can be used to override the BCP47-specified use of
+ a hyphen to separate the tags. For use in IETF-defined protocols, however,
+ the default, QLocale::TagSeparator::Dash, should be retained.
- \sa language(), territory(), script(), uiLanguages()
+ \sa name(), language(), territory(), script(), uiLanguages()
*/
-QString QLocale::bcp47Name() const
+QString QLocale::bcp47Name(TagSeparator separator) const
{
- return QString::fromLatin1(d->bcp47Name());
+ const char sep = char(separator);
+ if (uchar(sep) > 0x7f) {
+ badSeparatorWarning("bcp47Name", sep);
+ return {};
+ }
+ return QString::fromLatin1(d->bcp47Name(sep));
}
/*!
@@ -1426,19 +1509,9 @@ QString QLocale::bcp47Name() const
*/
QString QLocale::languageToCode(Language language, LanguageCodeTypes codeTypes)
{
- return QLocalePrivate::languageToCode(language, codeTypes);
-}
-
-#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0)
-/*!
- \overload
- \since 6.1
-*/
-QString QLocale::languageToCode(Language language)
-{
- return QLocalePrivate::languageToCode(language);
+ const auto code = QLocalePrivate::languageToCode(language, codeTypes);
+ return QLatin1StringView{code.data()};
}
-#endif
/*!
Returns the QLocale::Language enum corresponding to the two- or three-letter
@@ -1460,17 +1533,6 @@ QLocale::Language QLocale::codeToLanguage(QStringView languageCode,
return QLocalePrivate::codeToLanguage(languageCode, codeTypes);
}
-#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0)
-/*!
- \overload
- \since 6.1
-*/
-QLocale::Language QLocale::codeToLanguage(QStringView languageCode) noexcept
-{
- return QLocalePrivate::codeToLanguage(languageCode);
-}
-#endif
-
/*!
\since 6.2
@@ -1569,9 +1631,9 @@ QLocale::Script QLocale::codeToScript(QStringView scriptCode) noexcept
QString QLocale::languageToString(Language language)
{
- if (language > QLocale::LastLanguage)
- return QLatin1String("Unknown");
- return QLatin1String(language_name_list + language_name_index[language]);
+ if (language > LastLanguage)
+ return "Unknown"_L1;
+ return QString::fromUtf8(language_name_list + language_name_index[language]);
}
/*!
@@ -1581,11 +1643,11 @@ QString QLocale::languageToString(Language language)
\sa languageToString(), scriptToString(), territory(), bcp47Name()
*/
-QString QLocale::territoryToString(QLocale::Territory territory)
+QString QLocale::territoryToString(Territory territory)
{
- if (territory > QLocale::LastTerritory)
- return QLatin1String("Unknown");
- return QLatin1String(territory_name_list + territory_name_index[territory]);
+ if (territory > LastTerritory)
+ return "Unknown"_L1;
+ return QString::fromUtf8(territory_name_list + territory_name_index[territory]);
}
#if QT_DEPRECATED_SINCE(6, 6)
@@ -1609,14 +1671,13 @@ QString QLocale::countryToString(Country country)
\sa languageToString(), territoryToString(), script(), bcp47Name()
*/
-QString QLocale::scriptToString(QLocale::Script script)
+QString QLocale::scriptToString(Script script)
{
- if (script > QLocale::LastScript)
- return QLatin1String("Unknown");
- return QLatin1String(script_name_list + script_name_index[script]);
+ if (script > LastScript)
+ return "Unknown"_L1;
+ return QString::fromUtf8(script_name_list + script_name_index[script]);
}
-#if QT_STRINGVIEW_LEVEL < 2
/*!
\fn short QLocale::toShort(const QString &s, bool *ok) const
@@ -1749,9 +1810,6 @@ QString QLocale::scriptToString(QLocale::Script script)
If \a ok is not \nullptr, failure is reported by setting *\a{ok}
to \c false, and success by setting *\a{ok} to \c true.
- This function does not fall back to the 'C' locale if the string
- cannot be interpreted in this locale.
-
This function ignores leading and trailing whitespace.
\sa toDouble(), toInt(), toString()
@@ -1767,9 +1825,6 @@ QString QLocale::scriptToString(QLocale::Script script)
If \a ok is not \nullptr, failure is reported by setting *\a{ok}
to \c false, and success by setting *\a{ok} to \c true.
- This function does not fall back to the 'C' locale if the string
- cannot be interpreted in this locale.
-
\snippet code/src_corelib_text_qlocale.cpp 3
Notice that the last conversion returns 1234.0, because '.' is the
@@ -1779,7 +1834,6 @@ QString QLocale::scriptToString(QLocale::Script script)
\sa toFloat(), toInt(), toString()
*/
-#endif // QT_STRINGVIEW_LEVEL < 2
/*!
Returns the short int represented by the localized string \a s.
@@ -1972,10 +2026,6 @@ float QLocale::toFloat(QStringView s, bool *ok) const
If \a ok is not \nullptr, failure is reported by setting *\a{ok}
to \c false, and success by setting *\a{ok} to \c true.
- Unlike QString::toDouble(), this function does not fall back to
- the "C" locale if the string cannot be interpreted in this
- locale.
-
\snippet code/src_corelib_text_qlocale.cpp 3-qstringview
Notice that the last conversion returns 1234.0, because '.' is the
@@ -2021,7 +2071,6 @@ QString QLocale::toString(qulonglong i) const
return d->m_data->unsLongLongToString(i, -1, 10, -1, flags);
}
-#if QT_STRINGVIEW_LEVEL < 2
/*!
Returns a localized string representation of the given \a date in the
specified \a format.
@@ -2058,7 +2107,6 @@ QString QLocale::toString(QTime time, const QString &format) const
\sa QDateTime::toString(), QDate::toString(), QTime::toString()
*/
-#endif
/*!
\since 5.14
@@ -2139,7 +2187,7 @@ QString QLocale::toString(QDate date, FormatType format) const
static bool timeFormatContainsAP(QStringView format)
{
- int i = 0;
+ qsizetype i = 0;
while (i < format.size()) {
if (format.at(i).unicode() == '\'') {
qt_readEscapedFormatString(format, &i);
@@ -2358,7 +2406,7 @@ QString QLocale::dateTimeFormat(FormatType format) const
}
}
#endif
- return dateFormat(format) + QLatin1Char(' ') + timeFormat(format);
+ return dateFormat(format) + u' ' + timeFormat(format);
}
#if QT_CONFIG(datestring)
@@ -2390,6 +2438,16 @@ QTime QLocale::toTime(const QString &string, FormatType format) const
Parses \a string and returns the date it represents. The format of the date
string is chosen according to the \a format parameter (see dateFormat()).
+//! [base-year-for-short]
+ Some locales use, particularly for ShortFormat, only the last two digits of
+ the year. In such a case, the 100 years starting at \a baseYear are the
+ candidates first considered. Prior to 6.7 there was no \a baseYear parameter
+ and 1900 was always used. This is the default for \a baseYear, selecting a
+ year from then to 1999. In some cases, other fields may lead to the next or
+ previous century being selected, to get a result consistent with all fields
+ given. See \l QDate::fromString() for details.
+//! [base-year-for-short]
+
\note Month and day names, where used, must be given in the locale's
language.
@@ -2397,18 +2455,18 @@ QTime QLocale::toTime(const QString &string, FormatType format) const
\sa dateFormat(), toTime(), toDateTime(), QDate::fromString()
*/
-QDate QLocale::toDate(const QString &string, FormatType format) const
+QDate QLocale::toDate(const QString &string, FormatType format, int baseYear) const
{
- return toDate(string, dateFormat(format));
+ return toDate(string, dateFormat(format), baseYear);
}
/*!
\since 5.14
\overload
*/
-QDate QLocale::toDate(const QString &string, FormatType format, QCalendar cal) const
+QDate QLocale::toDate(const QString &string, FormatType format, QCalendar cal, int baseYear) const
{
- return toDate(string, dateFormat(format), cal);
+ return toDate(string, dateFormat(format), cal, baseYear);
}
/*!
@@ -2420,6 +2478,8 @@ QDate QLocale::toDate(const QString &string, FormatType format, QCalendar cal) c
date string is chosen according to the \a format parameter (see
dateFormat()).
+ \include qlocale.cpp base-year-for-short
+
\note Month and day names, where used, must be given in the locale's
language. Any am/pm indicators used must match \l amText() or \l pmText(),
ignoring case.
@@ -2428,18 +2488,19 @@ QDate QLocale::toDate(const QString &string, FormatType format, QCalendar cal) c
\sa dateTimeFormat(), toTime(), toDate(), QDateTime::fromString()
*/
-QDateTime QLocale::toDateTime(const QString &string, FormatType format) const
+QDateTime QLocale::toDateTime(const QString &string, FormatType format, int baseYear) const
{
- return toDateTime(string, dateTimeFormat(format));
+ return toDateTime(string, dateTimeFormat(format), baseYear);
}
/*!
\since 5.14
\overload
*/
-QDateTime QLocale::toDateTime(const QString &string, FormatType format, QCalendar cal) const
+QDateTime QLocale::toDateTime(const QString &string, FormatType format, QCalendar cal,
+ int baseYear) const
{
- return toDateTime(string, dateTimeFormat(format), cal);
+ return toDateTime(string, dateTimeFormat(format), cal, baseYear);
}
/*!
@@ -2480,6 +2541,16 @@ QTime QLocale::toTime(const QString &string, const QString &format) const
Parses \a string and returns the date it represents. See QDate::fromString()
for the interpretation of \a format.
+//! [base-year-for-two-digit]
+ When \a format only specifies the last two digits of a year, the 100 years
+ starting at \a baseYear are the candidates first considered. Prior to 6.7
+ there was no \a baseYear parameter and 1900 was always used. This is the
+ default for \a baseYear, selecting a year from then to 1999. In some cases,
+ other fields may lead to the next or previous century being selected, to get
+ a result consistent with all fields given. See \l QDate::fromString() for
+ details.
+//! [base-year-for-two-digit]
+
\note Month and day names, where used, must be given in the locale's
language.
@@ -2487,26 +2558,27 @@ QTime QLocale::toTime(const QString &string, const QString &format) const
\sa dateFormat(), toTime(), toDateTime(), QDate::fromString()
*/
-QDate QLocale::toDate(const QString &string, const QString &format) const
+QDate QLocale::toDate(const QString &string, const QString &format, int baseYear) const
{
- return toDate(string, format, QCalendar());
+ return toDate(string, format, QCalendar(), baseYear);
}
/*!
\since 5.14
\overload
*/
-QDate QLocale::toDate(const QString &string, const QString &format, QCalendar cal) const
+QDate QLocale::toDate(const QString &string, const QString &format, QCalendar cal, int baseYear) const
{
QDate date;
#if QT_CONFIG(datetimeparser)
QDateTimeParser dt(QMetaType::QDate, QDateTimeParser::FromString, cal);
dt.setDefaultLocale(*this);
if (dt.parseFormat(format))
- dt.fromString(string, &date, nullptr);
+ dt.fromString(string, &date, nullptr, baseYear);
#else
Q_UNUSED(string);
Q_UNUSED(format);
+ Q_UNUSED(baseYear);
Q_UNUSED(cal);
#endif
return date;
@@ -2520,6 +2592,8 @@ QDate QLocale::toDate(const QString &string, const QString &format, QCalendar ca
Parses \a string and returns the date-time it represents. See
QDateTime::fromString() for the interpretation of \a format.
+ \include qlocale.cpp base-year-for-two-digit
+
\note Month and day names, where used, must be given in the locale's
language. Any am/pm indicators used must match \l amText() or \l pmText(),
ignoring case.
@@ -2533,27 +2607,31 @@ QDate QLocale::toDate(const QString &string, const QString &format, QCalendar ca
\sa dateTimeFormat(), toTime(), toDate(), QDateTime::fromString()
*/
-QDateTime QLocale::toDateTime(const QString &string, const QString &format) const
+QDateTime QLocale::toDateTime(const QString &string, const QString &format, int baseYear) const
{
- return toDateTime(string, format, QCalendar());
+ return toDateTime(string, format, QCalendar(), baseYear);
}
/*!
\since 5.14
\overload
*/
-QDateTime QLocale::toDateTime(const QString &string, const QString &format, QCalendar cal) const
+QDateTime QLocale::toDateTime(const QString &string, const QString &format, QCalendar cal,
+ int baseYear) const
{
#if QT_CONFIG(datetimeparser)
QDateTime datetime;
QDateTimeParser dt(QMetaType::QDateTime, QDateTimeParser::FromString, cal);
dt.setDefaultLocale(*this);
- if (dt.parseFormat(format) && (dt.fromString(string, &datetime) || !datetime.isValid()))
+ if (dt.parseFormat(format) && (dt.fromString(string, &datetime, baseYear)
+ || !datetime.isValid())) {
return datetime;
+ }
#else
Q_UNUSED(string);
Q_UNUSED(format);
+ Q_UNUSED(baseYear);
Q_UNUSED(cal);
#endif
return QDateTime();
@@ -2563,7 +2641,14 @@ QDateTime QLocale::toDateTime(const QString &string, const QString &format, QCal
/*!
\since 4.1
- Returns the decimal point character of this locale.
+ Returns the fractional part separator for this locale.
+
+ This is the token that separates the whole number part from the fracional
+ part in the representation of a number which has a fractional part. This is
+ commonly called the "decimal point character" - even though, in many
+ locales, it is not a "point" (or similar dot). It is (since Qt 6.0) returned
+ as a string in case some locale needs more than one UTF-16 code-point to
+ represent its separator.
\sa groupSeparator(), toString()
*/
@@ -2575,7 +2660,14 @@ QString QLocale::decimalPoint() const
/*!
\since 4.1
- Returns the group separator character of this locale.
+ Returns the digit-grouping separator for this locale.
+
+ This is a token used to break up long sequences of digits, in the
+ representation of a number, to make it easier to read. In some locales it
+ may be empty, indicating that digits should not be broken up into groups in
+ this way. In others it may be a spacing character. It is (since Qt 6.0)
+ returned as a string in case some locale needs more than one UTF-16
+ code-point to represent its separator.
\sa decimalPoint(), toString()
*/
@@ -2587,7 +2679,12 @@ QString QLocale::groupSeparator() const
/*!
\since 4.1
- Returns the percent character of this locale.
+ Returns the percent marker of this locale.
+
+ This is a token presumed to be appended to a number to indicate a
+ percentage. It is (since Qt 6.0) returned as a string because, in some
+ locales, it is not a single character - for example, because it includes a
+ text-direction-control character.
\sa toString()
*/
@@ -2601,6 +2698,13 @@ QString QLocale::percent() const
Returns the zero digit character of this locale.
+ This is a single Unicode character but may be encoded as a surrogate pair,
+ so is (since Qt 6.0) returned as a string. In most locales, other digits
+ follow it in Unicode ordering - however, some number systems, notably those
+ using U+3007 as zero, do not have contiguous digits. Use toString() to
+ obtain suitable representations of numbers, rather than trying to construct
+ them from this zero digit.
+
\sa toString()
*/
QString QLocale::zeroDigit() const
@@ -2611,7 +2715,12 @@ QString QLocale::zeroDigit() const
/*!
\since 4.1
- Returns the negative sign character of this locale.
+ Returns the negative sign indicator of this locale.
+
+ This is a token presumed to be used as a prefix to a number to indicate that
+ it is negative. It is (since Qt 6.0) returned as a string because, in some
+ locales, it is not a single character - for example, because it includes a
+ text-direction-control character.
\sa positiveSign(), toString()
*/
@@ -2623,7 +2732,12 @@ QString QLocale::negativeSign() const
/*!
\since 4.5
- Returns the positive sign character of this locale.
+ Returns the positive sign indicator of this locale.
+
+ This is a token presumed to be used as a prefix to a number to indicate that
+ it is positive. It is (since Qt 6.0) returned as a string because, in some
+ locales, it is not a single character - for example, because it includes a
+ text-direction-control character.
\sa negativeSign(), toString()
*/
@@ -2635,8 +2749,13 @@ QString QLocale::positiveSign() const
/*!
\since 4.1
- Returns the exponential character of this locale, used to separate exponent
- from mantissa in some floating-point numeric representations.
+ Returns the exponent separator for this locale.
+
+ This is a token used to separate mantissa from exponent in some
+ floating-point numeric representations. It is (since Qt 6.0) returned as a
+ string because, in some locales, it is not a single character - for example,
+ it may consist of a multiplication sign and a representation of the "ten to
+ the power" operator.
\sa toString(double, char, int)
*/
@@ -2645,19 +2764,6 @@ QString QLocale::exponential() const
return d->m_data->exponentSeparator();
}
-static bool qIsUpper(char c)
-{
- return c >= 'A' && c <= 'Z';
-}
-
-static char qToLower(char c)
-{
- if (c >= 'A' && c <= 'Z')
- return c - 'A' + 'a';
- else
- return c;
-}
-
/*!
\overload
Returns a string representing the floating-point number \a f.
@@ -2668,26 +2774,24 @@ static char qToLower(char c)
The \a format defaults to \c{'g'}. It can be any of the following:
\table
- \header \li Format \li Meaning
- \row \li \c 'e' \li format as [-]9.9e[+|-]999
- \row \li \c 'E' \li format as [-]9.9E[+|-]999
- \row \li \c 'f' \li format as [-]9.9
- \row \li \c 'g' \li use \c 'e' or \c 'f' format, whichever is more concise
- \row \li \c 'G' \li use \c 'E' or \c 'f' format, whichever is more concise
+ \header \li Format \li Meaning \li Meaning of \a precision
+ \row \li \c 'e' \li format as [-]9.9e[+|-]999 \li number of digits \e after the decimal point
+ \row \li \c 'E' \li format as [-]9.9E[+|-]999 \li "
+ \row \li \c 'f' \li format as [-]9.9 \li "
+ \row \li \c 'F' \li same as \c 'f' except for INF and NAN (see below) \li "
+ \row \li \c 'g' \li use \c 'e' or \c 'f' format, whichever is more concise \li maximum number of significant digits (trailing zeroes are omitted)
+ \row \li \c 'G' \li use \c 'E' or \c 'F' format, whichever is more concise \li "
\endtable
- For the \c 'e', \c 'E', and \c 'f' formats, the \a precision represents the
- number of digits \e after the decimal point. For the \c 'g' and \c 'G'
- formats, the \a precision represents the maximum number of significant
- digits (trailing zeroes are omitted). The special \a precision value
- QLocale::FloatingPointShortest selects the shortest representation that,
- when read as a number, gets back the original floating-point value. Aside
- from that, any negative \a precision is ignored in favor of the default, 6.
+ The special \a precision value QLocale::FloatingPointShortest selects the
+ shortest representation that, when read as a number, gets back the original floating-point
+ value. Aside from that, any negative \a precision is ignored in favor of the
+ default, 6.
For the \c 'e', \c 'f' and \c 'g' formats, positive infinity is represented
as "inf", negative infinity as "-inf" and floating-point NaN (not-a-number)
- values are represented as "nan". For the \c 'E' and \c 'G' formats, "INF"
- and "NAN" are used instead. This does not vary with locale.
+ values are represented as "nan". For the \c 'E', \c 'F' and \c 'G' formats,
+ "INF" and "NAN" are used instead. This does not vary with locale.
\sa toDouble(), numberOptions(), exponential(), decimalPoint(), zeroDigit(),
positiveSign(), percent(), toCurrencyString(), formattedDataSize(),
@@ -2697,20 +2801,20 @@ static char qToLower(char c)
QString QLocale::toString(double f, char format, int precision) const
{
QLocaleData::DoubleForm form = QLocaleData::DFDecimal;
- uint flags = qIsUpper(format) ? QLocaleData::CapitalEorX : 0;
+ uint flags = isAsciiUpper(format) ? QLocaleData::CapitalEorX : 0;
- switch (qToLower(format)) {
- case 'f':
- form = QLocaleData::DFDecimal;
- break;
- case 'e':
- form = QLocaleData::DFExponent;
- break;
- case 'g':
- form = QLocaleData::DFSignificantDigits;
- break;
- default:
- break;
+ switch (QtMiscUtils::toAsciiLower(format)) {
+ case 'f':
+ form = QLocaleData::DFDecimal;
+ break;
+ case 'e':
+ form = QLocaleData::DFExponent;
+ break;
+ case 'g':
+ form = QLocaleData::DFSignificantDigits;
+ break;
+ default:
+ break;
}
if (!(d->m_numberOptions & OmitGroupSeparator))
@@ -2757,8 +2861,19 @@ QString QLocale::toString(double f, char format, int precision) const
QLocale QLocale::system()
{
- QT_PREPEND_NAMESPACE(systemData)(); // Ensure system data is up to date.
- static QLocalePrivate locale(systemData(), defaultIndex(), DefaultNumberOptions, 1);
+ constexpr auto sysData = []() {
+ // Same return as systemData(), but leave the setup to the actual call to it.
+#ifdef QT_NO_SYSTEMLOCALE
+ return locale_data;
+#else
+ return &systemLocaleData;
+#endif
+ };
+ Q_CONSTINIT static QLocalePrivate locale(sysData(), -1, DefaultNumberOptions, 1);
+ // Calling systemData() ensures system data is up to date; we also need it
+ // to ensure that locale's index stays up to date:
+ systemData(&locale.m_index);
+ Q_ASSERT(locale.m_index >= 0 && locale.m_index < locale_data_size);
return QLocale(locale);
}
@@ -2775,15 +2890,14 @@ QLocale QLocale::system()
QList<QLocale> locales = QLocale::matchingLocales(QLocale::AnyLanguage, QLocale::AnyScript,
QLocale::Russia);
*/
-QList<QLocale> QLocale::matchingLocales(QLocale::Language language, QLocale::Script script,
- QLocale::Territory territory)
+QList<QLocale> QLocale::matchingLocales(Language language, Script script, Territory territory)
{
const QLocaleId filter { language, script, territory };
if (!filter.isValid())
return QList<QLocale>();
- if (language == QLocale::C)
- return QList<QLocale>() << QLocale(QLocale::C);
+ if (language == C)
+ return QList<QLocale>{QLocale(C)};
QList<QLocale> result;
if (filter.matchesAll())
@@ -2800,6 +2914,15 @@ QList<QLocale> QLocale::matchingLocales(QLocale::Language language, QLocale::Scr
++index;
}
+ // Add current system locale, if it matches
+ const auto syslocaledata = systemData();
+
+ if (filter.acceptLanguage(syslocaledata->m_language_id)) {
+ const QLocaleId id = syslocaledata->id();
+ if (filter.acceptScriptTerritory(id))
+ result.append(system());
+ }
+
return result;
}
@@ -2817,7 +2940,7 @@ QList<QLocale> QLocale::matchingLocales(QLocale::Language language, QLocale::Scr
QList<QLocale::Country> QLocale::countriesForLanguage(Language language)
{
const auto locales = matchingLocales(language, AnyScript, AnyCountry);
- QList<QLocale::Country> result;
+ QList<Country> result;
result.reserve(locales.size());
for (const auto &locale : locales)
result.append(locale.territory());
@@ -2895,6 +3018,14 @@ QString QLocale::standaloneDayName(int day, FormatType type) const
// Calendar look-up of month and day names:
+// Only used in assertions
+[[maybe_unused]] static bool sameLocale(const QLocaleData *locale, const QCalendarLocale &calendar)
+{
+ return locale->m_language_id == calendar.m_language_id
+ && locale->m_script_id == calendar.m_script_id
+ && locale->m_territory_id == calendar.m_territory_id;
+}
+
/*!
\internal
*/
@@ -3003,12 +3134,13 @@ QString QCalendarBackend::monthName(const QLocale &locale, int month, int,
QLocale::FormatType format) const
{
Q_ASSERT(month >= 1 && month <= maximumMonthsInYear());
- return rawMonthName(localeMonthIndexData()[locale.d->m_index],
- localeMonthData(), month, format);
+ const QCalendarLocale &monthly = localeMonthIndexData()[locale.d->m_index];
+ Q_ASSERT(sameLocale(locale.d->m_data, monthly));
+ return rawMonthName(monthly, localeMonthData(), month, format);
}
-QString QGregorianCalendar::monthName(const QLocale &locale, int month, int year,
- QLocale::FormatType format) const
+QString QRomanCalendar::monthName(const QLocale &locale, int month, int year,
+ QLocale::FormatType format) const
{
#ifndef QT_NO_SYSTEMLOCALE
if (locale.d->m_data == &systemLocaleData) {
@@ -3038,12 +3170,13 @@ QString QCalendarBackend::standaloneMonthName(const QLocale &locale, int month,
QLocale::FormatType format) const
{
Q_ASSERT(month >= 1 && month <= maximumMonthsInYear());
- return rawStandaloneMonthName(localeMonthIndexData()[locale.d->m_index],
- localeMonthData(), month, format);
+ const QCalendarLocale &monthly = localeMonthIndexData()[locale.d->m_index];
+ Q_ASSERT(sameLocale(locale.d->m_data, monthly));
+ return rawStandaloneMonthName(monthly, localeMonthData(), month, format);
}
-QString QGregorianCalendar::standaloneMonthName(const QLocale &locale, int month, int year,
- QLocale::FormatType format) const
+QString QRomanCalendar::standaloneMonthName(const QLocale &locale, int month, int year,
+ QLocale::FormatType format) const
{
#ifndef QT_NO_SYSTEMLOCALE
if (locale.d->m_data == &systemLocaleData) {
@@ -3150,10 +3283,10 @@ Qt::DayOfWeek QLocale::firstDayOfWeek() const
QLocale::MeasurementSystem QLocalePrivate::measurementSystem() const
{
- for (int i = 0; i < ImperialMeasurementSystemsCount; ++i) {
- if (ImperialMeasurementSystems[i].languageId == m_data->m_language_id
- && ImperialMeasurementSystems[i].territoryId == m_data->m_territory_id) {
- return ImperialMeasurementSystems[i].system;
+ for (const auto &system : ImperialMeasurementSystems) {
+ if (system.languageId == m_data->m_language_id
+ && system.territoryId == m_data->m_territory_id) {
+ return system.system;
}
}
return QLocale::MetricSystem;
@@ -3211,34 +3344,34 @@ QLocale::MeasurementSystem QLocale::measurementSystem() const
Qt::LayoutDirection QLocale::textDirection() const
{
switch (script()) {
- case QLocale::AdlamScript:
- case QLocale::ArabicScript:
- case QLocale::AvestanScript:
- case QLocale::CypriotScript:
- case QLocale::HatranScript:
- case QLocale::HebrewScript:
- case QLocale::ImperialAramaicScript:
- case QLocale::InscriptionalPahlaviScript:
- case QLocale::InscriptionalParthianScript:
- case QLocale::KharoshthiScript:
- case QLocale::LydianScript:
- case QLocale::MandaeanScript:
- case QLocale::ManichaeanScript:
- case QLocale::MendeKikakuiScript:
- case QLocale::MeroiticCursiveScript:
- case QLocale::MeroiticScript:
- case QLocale::NabataeanScript:
- case QLocale::NkoScript:
- case QLocale::OldHungarianScript:
- case QLocale::OldNorthArabianScript:
- case QLocale::OldSouthArabianScript:
- case QLocale::OrkhonScript:
- case QLocale::PalmyreneScript:
- case QLocale::PhoenicianScript:
- case QLocale::PsalterPahlaviScript:
- case QLocale::SamaritanScript:
- case QLocale::SyriacScript:
- case QLocale::ThaanaScript:
+ case AdlamScript:
+ case ArabicScript:
+ case AvestanScript:
+ case CypriotScript:
+ case HatranScript:
+ case HebrewScript:
+ case ImperialAramaicScript:
+ case InscriptionalPahlaviScript:
+ case InscriptionalParthianScript:
+ case KharoshthiScript:
+ case LydianScript:
+ case MandaeanScript:
+ case ManichaeanScript:
+ case MendeKikakuiScript:
+ case MeroiticCursiveScript:
+ case MeroiticScript:
+ case NabataeanScript:
+ case NkoScript:
+ case OldHungarianScript:
+ case OldNorthArabianScript:
+ case OldSouthArabianScript:
+ case OrkhonScript:
+ case PalmyreneScript:
+ case PhoenicianScript:
+ case PsalterPahlaviScript:
+ case SamaritanScript:
+ case SyriacScript:
+ case ThaanaScript:
return Qt::RightToLeft;
default:
break;
@@ -3371,7 +3504,19 @@ QString QCalendarBackend::dateTimeToString(QStringView format, const QDateTime &
day = parts.day;
}
- int i = 0;
+ auto appendToResult = [&](int t, int repeat) {
+ auto data = locale.d->m_data;
+ if (repeat > 1)
+ result.append(data->longLongToString(t, -1, 10, repeat, QLocaleData::ZeroPadded));
+ else
+ result.append(data->longLongToString(t));
+ };
+
+ auto formatType = [](int repeat) {
+ return repeat == 3 ? QLocale::ShortFormat : QLocale::LongFormat;
+ };
+
+ qsizetype i = 0;
while (i < format.size()) {
if (format.at(i).unicode() == '\'') {
result.append(qt_readEscapedFormatString(format, &i));
@@ -3379,7 +3524,9 @@ QString QCalendarBackend::dateTimeToString(QStringView format, const QDateTime &
}
const QChar c = format.at(i);
- int repeat = qt_repeatCount(format.mid(i));
+ qsizetype rep = qt_repeatCount(format.mid(i));
+ Q_ASSERT(rep < std::numeric_limits<int>::max());
+ int repeat = int(rep);
bool used = false;
if (formatDate) {
switch (c.unicode()) {
@@ -3391,15 +3538,11 @@ QString QCalendarBackend::dateTimeToString(QStringView format, const QDateTime &
repeat = 2;
switch (repeat) {
- case 4: {
- const int len = (year < 0) ? 5 : 4;
- result.append(locale.d->m_data->longLongToString(year, -1, 10, len,
- QLocaleData::ZeroPadded));
+ case 4:
+ appendToResult(year, (year < 0) ? 5 : 4);
break;
- }
case 2:
- result.append(locale.d->m_data->longLongToString(year % 100, -1, 10, 2,
- QLocaleData::ZeroPadded));
+ appendToResult(year % 100, 2);
break;
default:
repeat = 1;
@@ -3411,43 +3554,20 @@ QString QCalendarBackend::dateTimeToString(QStringView format, const QDateTime &
case 'M':
used = true;
repeat = qMin(repeat, 4);
- switch (repeat) {
- case 1:
- result.append(locale.d->m_data->longLongToString(month));
- break;
- case 2:
- result.append(locale.d->m_data->longLongToString(month, -1, 10, 2,
- QLocaleData::ZeroPadded));
- break;
- case 3:
- result.append(monthName(locale, month, year, QLocale::ShortFormat));
- break;
- case 4:
- result.append(monthName(locale, month, year, QLocale::LongFormat));
- break;
- }
+ if (repeat <= 2)
+ appendToResult(month, repeat);
+ else
+ result.append(monthName(locale, month, year, formatType(repeat)));
break;
case 'd':
used = true;
repeat = qMin(repeat, 4);
- switch (repeat) {
- case 1:
- result.append(locale.d->m_data->longLongToString(day));
- break;
- case 2:
- result.append(locale.d->m_data->longLongToString(day, -1, 10, 2,
- QLocaleData::ZeroPadded));
- break;
- case 3:
- result.append(locale.dayName(
- dayOfWeek(date.toJulianDay()), QLocale::ShortFormat));
- break;
- case 4:
- result.append(locale.dayName(
- dayOfWeek(date.toJulianDay()), QLocale::LongFormat));
- break;
- }
+ if (repeat <= 2)
+ appendToResult(day, repeat);
+ else
+ result.append(
+ locale.dayName(dayOfWeek(date.toJulianDay()), formatType(repeat)));
break;
default:
@@ -3466,58 +3586,25 @@ QString QCalendarBackend::dateTimeToString(QStringView format, const QDateTime &
else if (hour == 0)
hour = 12;
}
-
- switch (repeat) {
- case 1:
- result.append(locale.d->m_data->longLongToString(hour));
- break;
- case 2:
- result.append(locale.d->m_data->longLongToString(hour, -1, 10, 2,
- QLocaleData::ZeroPadded));
- break;
- }
+ appendToResult(hour, repeat);
break;
}
case 'H':
used = true;
repeat = qMin(repeat, 2);
- switch (repeat) {
- case 1:
- result.append(locale.d->m_data->longLongToString(time.hour()));
- break;
- case 2:
- result.append(locale.d->m_data->longLongToString(time.hour(), -1, 10, 2,
- QLocaleData::ZeroPadded));
- break;
- }
+ appendToResult(time.hour(), repeat);
break;
case 'm':
used = true;
repeat = qMin(repeat, 2);
- switch (repeat) {
- case 1:
- result.append(locale.d->m_data->longLongToString(time.minute()));
- break;
- case 2:
- result.append(locale.d->m_data->longLongToString(time.minute(), -1, 10, 2,
- QLocaleData::ZeroPadded));
- break;
- }
+ appendToResult(time.minute(), repeat);
break;
case 's':
used = true;
repeat = qMin(repeat, 2);
- switch (repeat) {
- case 1:
- result.append(locale.d->m_data->longLongToString(time.second()));
- break;
- case 2:
- result.append(locale.d->m_data->longLongToString(time.second(), -1, 10, 2,
- QLocaleData::ZeroPadded));
- break;
- }
+ appendToResult(time.second(), repeat);
break;
case 'A':
@@ -3525,7 +3612,7 @@ QString QCalendarBackend::dateTimeToString(QStringView format, const QDateTime &
QString text = time.hour() < 12 ? locale.amText() : locale.pmText();
used = true;
repeat = 1;
- if (format.mid(i + 1).startsWith(QLatin1Char('p'), Qt::CaseInsensitive))
+ if (format.mid(i + 1).startsWith(u'p', Qt::CaseInsensitive))
++repeat;
if (c.unicode() == 'A' && (repeat == 1 || format.at(i + 1).unicode() == 'P'))
text = std::move(text).toUpper();
@@ -3538,13 +3625,12 @@ QString QCalendarBackend::dateTimeToString(QStringView format, const QDateTime &
case 'z':
used = true;
- repeat = (repeat >= 3) ? 3 : 1;
+ repeat = qMin(repeat, 3);
// note: the millisecond component is treated like the decimal part of the seconds
// so ms == 2 is always printed as "002", but ms == 200 can be either "2" or "200"
- result.append(locale.d->m_data->longLongToString(time.msec(), -1, 10, 3,
- QLocaleData::ZeroPadded));
- if (repeat == 1) {
+ appendToResult(time.msec(), 3);
+ if (repeat != 3) {
if (result.endsWith(locale.zeroDigit()))
result.chop(1);
if (result.endsWith(locale.zeroDigit()))
@@ -3552,13 +3638,56 @@ QString QCalendarBackend::dateTimeToString(QStringView format, const QDateTime &
}
break;
- case 't':
+ case 't': {
+ enum AbbrType { Long, Offset, Short };
+ const auto tzAbbr = [locale](const QDateTime &when, AbbrType type) {
+#if QT_CONFIG(timezone)
+ if (type != Short || locale != QLocale::system()) {
+ QTimeZone::NameType mode =
+ type == Short ? QTimeZone::ShortName
+ : type == Long ? QTimeZone::LongName : QTimeZone::OffsetName;
+ return when.timeRepresentation().displayName(when, mode, locale);
+ } // else: prefer QDateTime's abbreviation, for backwards-compatibility.
+#endif // else, make do with non-localized abbreviation:
+ if (type != Offset)
+ return when.timeZoneAbbreviation();
+ // For Offset, we can coerce to a UTC-based zone's abbreviation:
+ return when.toOffsetFromUtc(when.offsetFromUtc()).timeZoneAbbreviation();
+ };
used = true;
- repeat = 1;
- // If we have a QDateTime use the time spec otherwise use the current system tzname
- result.append(formatDate ? datetime.timeZoneAbbreviation()
- : QDateTime::currentDateTime().timeZoneAbbreviation());
+ repeat = qMin(repeat, 4);
+ // If we don't have a date-time, use the current system time:
+ const QDateTime when = formatDate ? datetime : QDateTime::currentDateTime();
+ QString text;
+ switch (repeat) {
+ case 4:
+ text = tzAbbr(when, Long);
+ break;
+ case 3: // ±hh:mm
+ case 2: // ±hhmm (we'll remove the ':' at the end)
+ text = tzAbbr(when, Offset);
+ Q_ASSERT(text.startsWith("UTC"_L1)); // Need to strip this.
+ // The Qt::UTC case omits the zero offset:
+ text = (text.size() == 3
+ ? u"+00:00"_s
+ : (text.size() <= 6
+ // Whole-hour offsets may lack the zero minutes:
+ ? QStringView{text}.sliced(3) + ":00"_L1
+ : std::move(text).sliced(3)));
+ if (repeat == 2)
+ text = text.remove(u':');
+ break;
+ default:
+ text = tzAbbr(when, Short);
+ // UTC-offset zones only include minutes if non-zero.
+ if (text.startsWith("UTC"_L1) && text.size() == 6)
+ text += ":00"_L1;
+ break;
+ }
+ if (!text.isEmpty())
+ result.append(text);
break;
+ }
default:
break;
@@ -3588,10 +3717,10 @@ QString QLocaleData::doubleToString(double d, int precision, DoubleForm form,
width = 0;
int decpt;
- int bufSize = 1;
+ qsizetype bufSize = 1;
if (precision == QLocale::FloatingPointShortest)
bufSize += std::numeric_limits<double>::max_digits10;
- else if (form == DFDecimal && qIsFinite(d))
+ else if (form == DFDecimal && qt_is_finite(d))
bufSize += wholePartSpace(qAbs(d)) + precision;
else // Add extra digit due to different interpretations of precision.
bufSize += qMax(2, precision) + 1; // Must also be big enough for "nan" or "inf"
@@ -3613,15 +3742,14 @@ QString QLocaleData::doubleToString(double d, int precision, DoubleForm form,
if (zero == u"0") {
// No need to convert digits.
- Q_ASSERT(std::all_of(buf.cbegin(), buf.cbegin() + length, [](char ch)
- { return '0' <= ch && ch <= '9'; }));
+ Q_ASSERT(std::all_of(buf.cbegin(), buf.cbegin() + length, isAsciiDigit));
// That check is taken care of in unicodeForDigits, below.
} else if (zero.size() == 2 && zero.at(0).isHighSurrogate()) {
const char32_t zeroUcs4 = QChar::surrogateToUcs4(zero.at(0), zero.at(1));
QString converted;
converted.reserve(2 * digits.size());
- for (int i = 0; i < digits.length(); ++i) {
- const char32_t digit = unicodeForDigit(digits.at(i).unicode() - '0', zeroUcs4);
+ for (QChar ch : std::as_const(digits)) {
+ const char32_t digit = unicodeForDigit(ch.unicode() - '0', zeroUcs4);
Q_ASSERT(QChar::requiresSurrogates(digit));
converted.append(QChar::highSurrogate(digit));
converted.append(QChar::lowSurrogate(digit));
@@ -3632,7 +3760,7 @@ QString QLocaleData::doubleToString(double d, int precision, DoubleForm form,
Q_ASSERT(!zero.at(0).isSurrogate());
char16_t z = zero.at(0).unicode();
char16_t *const value = reinterpret_cast<char16_t *>(digits.data());
- for (int i = 0; i < digits.length(); ++i)
+ for (qsizetype i = 0; i < digits.size(); ++i)
value[i] = unicodeForDigit(value[i] - '0', z);
}
@@ -3640,81 +3768,78 @@ QString QLocaleData::doubleToString(double d, int precision, DoubleForm form,
const bool groupDigits = flags & GroupDigits;
const int minExponentDigits = flags & ZeroPadExponent ? 2 : 1;
switch (form) {
- case DFExponent:
- numStr = exponentForm(std::move(digits), decpt, precision, PMDecimalDigits,
- mustMarkDecimal, minExponentDigits);
- break;
- case DFDecimal:
- numStr = decimalForm(std::move(digits), decpt, precision, PMDecimalDigits,
- mustMarkDecimal, groupDigits);
- break;
- case DFSignificantDigits: {
- PrecisionMode mode = (flags & AddTrailingZeroes) ?
- PMSignificantDigits : PMChopTrailingZeros;
-
- /* POSIX specifies sprintf() to follow fprintf(), whose 'g/G'
- format says; with P = 6 if precision unspecified else 1 if
- precision is 0 else precision; when 'e/E' would have exponent
- X, use:
- * 'f/F' if P > X >= -4, with precision P-1-X
- * 'e/E' otherwise, with precision P-1
- Helpfully, we already have mapped precision < 0 to 6 - except
- for F.P.Shortest mode, which is its own story - and those of
- our callers with unspecified precision either used 6 or -1
- for it.
- */
- bool useDecimal;
- if (precision == QLocale::FloatingPointShortest) {
- // Find out which representation is shorter.
- // Set bias to everything added to exponent form but not
- // decimal, minus the converse.
-
- // Exponent adds separator, sign and digits:
- int bias = 2 + minExponentDigits;
- // Decimal form may get grouping separators inserted:
- if (groupDigits && decpt >= m_grouping_top + m_grouping_least)
- bias -= (decpt - m_grouping_top - m_grouping_least) / m_grouping_higher + 1;
- // X = decpt - 1 needs two digits if decpt > 10:
- if (decpt > 10 && minExponentDigits == 1)
- ++bias;
- // Assume digitCount < 95, so we can ignore the 3-digit
- // exponent case (we'll set useDecimal false anyway).
-
- const int digitCount = digits.length() / zero.size();
- if (!mustMarkDecimal) {
- // Decimal separator is skipped if at end; adjust if
- // that happens for only one form:
- if (digitCount <= decpt && digitCount > 1)
- ++bias; // decimal but not exponent
- else if (digitCount == 1 && decpt <= 0)
- --bias; // exponent but not decimal
- }
- // When 0 < decpt <= digitCount, the forms have equal digit
- // counts, plus things bias has taken into account;
- // otherwise decimal form's digit count is right-padded with
- // zeros to decpt, when decpt is positive, otherwise it's
- // left-padded with 1 - decpt zeros.
- useDecimal = (decpt <= 0 ? 1 - decpt <= bias
- : decpt <= digitCount ? 0 <= bias
- : decpt <= digitCount + bias);
- } else {
- // X == decpt - 1, POSIX's P; -4 <= X < P iff -4 < decpt <= P
- Q_ASSERT(precision >= 0);
- useDecimal = decpt > -4 && decpt <= (precision ? precision : 1);
+ case DFExponent:
+ numStr = exponentForm(std::move(digits), decpt, precision, PMDecimalDigits,
+ mustMarkDecimal, minExponentDigits);
+ break;
+ case DFDecimal:
+ numStr = decimalForm(std::move(digits), decpt, precision, PMDecimalDigits,
+ mustMarkDecimal, groupDigits);
+ break;
+ case DFSignificantDigits: {
+ PrecisionMode mode
+ = (flags & AddTrailingZeroes) ? PMSignificantDigits : PMChopTrailingZeros;
+
+ /* POSIX specifies sprintf() to follow fprintf(), whose 'g/G' format
+ says; with P = 6 if precision unspecified else 1 if precision is
+ 0 else precision; when 'e/E' would have exponent X, use:
+ * 'f/F' if P > X >= -4, with precision P-1-X
+ * 'e/E' otherwise, with precision P-1
+ Helpfully, we already have mapped precision < 0 to 6 - except for
+ F.P.Shortest mode, which is its own story - and those of our
+ callers with unspecified precision either used 6 or -1 for it.
+ */
+ bool useDecimal;
+ if (precision == QLocale::FloatingPointShortest) {
+ // Find out which representation is shorter.
+ // Set bias to everything added to exponent form but not
+ // decimal, minus the converse.
+
+ // Exponent adds separator, sign and digits:
+ int bias = 2 + minExponentDigits;
+ // Decimal form may get grouping separators inserted:
+ if (groupDigits && decpt >= m_grouping_top + m_grouping_least)
+ bias -= (decpt - m_grouping_least) / m_grouping_higher + 1;
+ // X = decpt - 1 needs two digits if decpt > 10:
+ if (decpt > 10 && minExponentDigits == 1)
+ ++bias;
+ // Assume digitCount < 95, so we can ignore the 3-digit
+ // exponent case (we'll set useDecimal false anyway).
+
+ const qsizetype digitCount = digits.size() / zero.size();
+ if (!mustMarkDecimal) {
+ // Decimal separator is skipped if at end; adjust if
+ // that happens for only one form:
+ if (digitCount <= decpt && digitCount > 1)
+ ++bias; // decimal but not exponent
+ else if (digitCount == 1 && decpt <= 0)
+ --bias; // exponent but not decimal
}
-
- numStr = useDecimal
- ? decimalForm(std::move(digits), decpt, precision, mode,
- mustMarkDecimal, groupDigits)
- : exponentForm(std::move(digits), decpt, precision, mode,
- mustMarkDecimal, minExponentDigits);
- break;
+ // When 0 < decpt <= digitCount, the forms have equal digit
+ // counts, plus things bias has taken into account; otherwise
+ // decimal form's digit count is right-padded with zeros to
+ // decpt, when decpt is positive, otherwise it's left-padded
+ // with 1 - decpt zeros.
+ useDecimal = (decpt <= 0 ? 1 - decpt <= bias
+ : decpt <= digitCount ? 0 <= bias : decpt <= digitCount + bias);
+ } else {
+ // X == decpt - 1, POSIX's P; -4 <= X < P iff -4 < decpt <= P
+ Q_ASSERT(precision >= 0);
+ useDecimal = decpt > -4 && decpt <= (precision ? precision : 1);
}
+
+ numStr = useDecimal
+ ? decimalForm(std::move(digits), decpt, precision, mode,
+ mustMarkDecimal, groupDigits)
+ : exponentForm(std::move(digits), decpt, precision, mode,
+ mustMarkDecimal, minExponentDigits);
+ break;
+ }
}
// Pad with zeros. LeftAdjusted overrides ZeroPadded.
if (flags & ZeroPadded && !(flags & LeftAdjusted)) {
- for (int i = numStr.length() / zero.length() + prefix.size(); i < width; ++i)
+ for (qsizetype i = numStr.size() / zero.size() + prefix.size(); i < width; ++i)
numStr.prepend(zero);
}
}
@@ -3737,33 +3862,33 @@ QString QLocaleData::decimalForm(QString &&digits, int decpt, int precision,
for (; decpt < 0; ++decpt)
digits.prepend(zero);
} else {
- for (int i = digits.length() / digitWidth; i < decpt; ++i)
+ for (qsizetype i = digits.size() / digitWidth; i < decpt; ++i)
digits.append(zero);
}
switch (pm) {
case PMDecimalDigits:
- for (int i = digits.length() / digitWidth - decpt; i < precision; ++i)
+ for (qsizetype i = digits.size() / digitWidth - decpt; i < precision; ++i)
digits.append(zero);
break;
case PMSignificantDigits:
- for (int i = digits.length() / digitWidth; i < precision; ++i)
+ for (qsizetype i = digits.size() / digitWidth; i < precision; ++i)
digits.append(zero);
break;
case PMChopTrailingZeros:
- Q_ASSERT(digits.length() / digitWidth <= qMax(decpt, 1) || !digits.endsWith(zero));
+ Q_ASSERT(digits.size() / digitWidth <= qMax(decpt, 1) || !digits.endsWith(zero));
break;
}
- if (mustMarkDecimal || decpt < digits.length() / digitWidth)
+ if (mustMarkDecimal || decpt < digits.size() / digitWidth)
digits.insert(decpt * digitWidth, decimalPoint());
if (groupDigits) {
const QString group = groupSeparator();
- int i = decpt - m_grouping_least;
+ qsizetype i = decpt - m_grouping_least;
if (i >= m_grouping_top) {
digits.insert(i * digitWidth, group);
- while ((i -= m_grouping_higher) >= m_grouping_top)
+ while ((i -= m_grouping_higher) > 0)
digits.insert(i * digitWidth, group);
}
}
@@ -3785,19 +3910,19 @@ QString QLocaleData::exponentForm(QString &&digits, int decpt, int precision,
switch (pm) {
case PMDecimalDigits:
- for (int i = digits.length() / digitWidth; i < precision + 1; ++i)
+ for (qsizetype i = digits.size() / digitWidth; i < precision + 1; ++i)
digits.append(zero);
break;
case PMSignificantDigits:
- for (int i = digits.length() / digitWidth; i < precision; ++i)
+ for (qsizetype i = digits.size() / digitWidth; i < precision; ++i)
digits.append(zero);
break;
case PMChopTrailingZeros:
- Q_ASSERT(digits.length() / digitWidth <= 1 || !digits.endsWith(zero));
+ Q_ASSERT(digits.size() / digitWidth <= 1 || !digits.endsWith(zero));
break;
}
- if (mustMarkDecimal || digits.length() > digitWidth)
+ if (mustMarkDecimal || digits.size() > digitWidth)
digits.insert(digitWidth, decimalPoint());
digits.append(exponentSeparator());
@@ -3846,7 +3971,7 @@ QString QLocaleData::applyIntegerFormatting(QString &&numStr, bool negative, int
{
const QString zero = base == 10 ? zeroDigit() : QStringLiteral("0");
const auto digitWidth = zero.size();
- const auto digitCount = numStr.length() / digitWidth;
+ const auto digitCount = numStr.size() / digitWidth;
const auto basePrefix = [&] () -> QStringView {
if (flags & ShowBase) {
@@ -3863,15 +3988,15 @@ QString QLocaleData::applyIntegerFormatting(QString &&numStr, bool negative, int
const QString prefix = signPrefix(negative, flags) + basePrefix;
// Count how much of width we've used up. Each digit counts as one
- int usedWidth = digitCount + prefix.size();
+ qsizetype usedWidth = digitCount + prefix.size();
if (base == 10 && flags & GroupDigits) {
const QString group = groupSeparator();
- int i = digitCount - m_grouping_least;
+ qsizetype i = digitCount - m_grouping_least;
if (i >= m_grouping_top) {
numStr.insert(i * digitWidth, group);
++usedWidth;
- while ((i -= m_grouping_higher) >= m_grouping_top) {
+ while ((i -= m_grouping_higher) > 0) {
numStr.insert(i * digitWidth, group);
++usedWidth;
}
@@ -3883,7 +4008,7 @@ QString QLocaleData::applyIntegerFormatting(QString &&numStr, bool negative, int
if (noPrecision)
precision = 1;
- for (int i = numStr.length(); i < precision; ++i) {
+ for (qsizetype i = numStr.size(); i < precision; ++i) {
numStr.prepend(zero);
usedWidth++;
}
@@ -3891,7 +4016,7 @@ QString QLocaleData::applyIntegerFormatting(QString &&numStr, bool negative, int
// LeftAdjusted overrides ZeroPadded; and sprintf() only pads when
// precision is not specified in the format string.
if (noPrecision && flags & ZeroPadded && !(flags & LeftAdjusted)) {
- for (int i = usedWidth; i < width; ++i)
+ for (qsizetype i = usedWidth; i < width; ++i)
numStr.prepend(zero);
}
@@ -3901,50 +4026,259 @@ QString QLocaleData::applyIntegerFormatting(QString &&numStr, bool negative, int
return result;
}
+inline QLocaleData::NumericData QLocaleData::numericData(QLocaleData::NumberMode mode) const
+{
+ NumericData result;
+ if (this == c()) {
+ result.isC = true;
+ return result;
+ }
+ result.setZero(zero().viewData(single_character_data));
+ result.group = groupDelim().viewData(single_character_data);
+ // Note: minus, plus and exponent might not actually be single characters.
+ result.minus = minus().viewData(single_character_data);
+ result.plus = plus().viewData(single_character_data);
+ if (mode != IntegerMode)
+ result.decimal = decimalSeparator().viewData(single_character_data);
+ if (mode == DoubleScientificMode) {
+ result.exponent = exponential().viewData(single_character_data);
+ // exponentCyrillic means "apply the Cyrrilic-specific exponent hack"
+ result.exponentCyrillic = m_script_id == QLocale::CyrillicScript;
+ }
+#ifndef QT_NO_SYSTEMLOCALE
+ if (this == &systemLocaleData) {
+ const auto getString = [sys = systemLocale()](QSystemLocale::QueryType query) {
+ return sys->query(query).toString();
+ };
+ if (mode != IntegerMode) {
+ result.sysDecimal = getString(QSystemLocale::DecimalPoint);
+ if (result.sysDecimal.size())
+ result.decimal = QStringView{result.sysDecimal};
+ }
+ result.sysGroup = getString(QSystemLocale::GroupSeparator);
+ if (result.sysGroup.size())
+ result.group = QStringView{result.sysGroup};
+ result.sysMinus = getString(QSystemLocale::NegativeSign);
+ if (result.sysMinus.size())
+ result.minus = QStringView{result.sysMinus};
+ result.sysPlus = getString(QSystemLocale::PositiveSign);
+ if (result.sysPlus.size())
+ result.plus = QStringView{result.sysPlus};
+ result.setZero(getString(QSystemLocale::ZeroDigit));
+ }
+#endif
+
+ return result;
+}
+
+namespace {
+// A bit like QStringIterator but rather specialized ... and some of the tokens
+// it recognizes aren't single Unicode code-points (but it does map each to a
+// single character).
+class NumericTokenizer
+{
+ // TODO: use deterministic finite-state-automata.
+ // TODO QTBUG-95460: CLDR has Inf/NaN representations per locale.
+ static constexpr char lettersInfNaN[] = "afin"; // Letters of Inf, NaN
+ static constexpr auto matchInfNaN = QtPrivate::makeCharacterSetMatch<lettersInfNaN>();
+ const QStringView m_text;
+ const QLocaleData::NumericData m_guide;
+ qsizetype m_index = 0;
+ const QLocaleData::NumberMode m_mode;
+ static_assert('+' + 1 == ',' && ',' + 1 == '-' && '-' + 1 == '.');
+ char lastMark; // C locale accepts '+' through lastMark.
+public:
+ NumericTokenizer(QStringView text, QLocaleData::NumericData &&guide,
+ QLocaleData::NumberMode mode)
+ : m_text(text), m_guide(guide), m_mode(mode),
+ lastMark(mode == QLocaleData::IntegerMode ? '-' : '.')
+ {
+ Q_ASSERT(m_guide.isValid(mode));
+ }
+ bool done() const { return !(m_index < m_text.size()); }
+ qsizetype index() const { return m_index; }
+ inline int asBmpDigit(char16_t digit) const;
+ char nextToken();
+};
+
+int NumericTokenizer::asBmpDigit(char16_t digit) const
+{
+ // If digit *is* a digit, result will be in range 0 through 9; otherwise not.
+ // Must match qlocale_tools.h's unicodeForDigit()
+ if (m_guide.zeroUcs != u'\u3007' || digit == m_guide.zeroUcs)
+ return digit - m_guide.zeroUcs;
+
+ // QTBUG-85409: Suzhou's digits aren't contiguous !
+ if (digit == u'\u3020') // U+3020 POSTAL MARK FACE is not a digit.
+ return -1;
+ // ... but is followed by digits 1 through 9.
+ return digit - u'\u3020';
+}
+
+char NumericTokenizer::nextToken()
+{
+ // As long as caller stops iterating on a zero return, those don't need to
+ // keep m_index correctly updated.
+ Q_ASSERT(!done());
+ // Mauls non-letters above 'Z' but we don't care:
+ const auto asciiLower = [](unsigned char c) { return c >= 'A' ? c | 0x20 : c; };
+ const QStringView tail = m_text.sliced(m_index);
+ const QChar ch = tail.front();
+ if (ch == u'\u2212') {
+ // Special case: match the "proper" minus sign, for all locales.
+ ++m_index;
+ return '-';
+ }
+ if (m_guide.isC) {
+ // "Conversion" to C locale is just a filter:
+ ++m_index;
+ if (Q_LIKELY(ch.unicode() < 256)) {
+ unsigned char ascii = asciiLower(ch.toLatin1());
+ if (Q_LIKELY(isAsciiDigit(ascii) || ('+' <= ascii && ascii <= lastMark)
+ // No caller presently (6.5) passes DoubleStandardMode,
+ // so !IntegerMode implies scientific, for now.
+ || (m_mode != QLocaleData::IntegerMode
+ && matchInfNaN.matches(ascii))
+ || (m_mode == QLocaleData::DoubleScientificMode
+ && ascii == 'e'))) {
+ return ascii;
+ }
+ }
+ return 0;
+ }
+ if (ch.unicode() < 256) {
+ // Accept the C locale's digits and signs in all locales:
+ char ascii = asciiLower(ch.toLatin1());
+ if (isAsciiDigit(ascii) || ascii == '-' || ascii == '+'
+ // Also its Inf and NaN letters:
+ || (m_mode != QLocaleData::IntegerMode && matchInfNaN.matches(ascii))) {
+ ++m_index;
+ return ascii;
+ }
+ }
+
+ // Other locales may be trickier:
+ if (tail.startsWith(m_guide.minus)) {
+ m_index += m_guide.minus.size();
+ return '-';
+ }
+ if (tail.startsWith(m_guide.plus)) {
+ m_index += m_guide.plus.size();
+ return '+';
+ }
+ if (!m_guide.group.isEmpty() && tail.startsWith(m_guide.group)) {
+ m_index += m_guide.group.size();
+ return ',';
+ }
+ if (m_mode != QLocaleData::IntegerMode && tail.startsWith(m_guide.decimal)) {
+ m_index += m_guide.decimal.size();
+ return '.';
+ }
+ if (m_mode == QLocaleData::DoubleScientificMode
+ && tail.startsWith(m_guide.exponent, Qt::CaseInsensitive)) {
+ m_index += m_guide.exponent.size();
+ return 'e';
+ }
+
+ // Must match qlocale_tools.h's unicodeForDigit()
+ if (m_guide.zeroLen == 1) {
+ if (!ch.isSurrogate()) {
+ const uint gap = asBmpDigit(ch.unicode());
+ if (gap < 10u) {
+ ++m_index;
+ return '0' + gap;
+ }
+ } else if (ch.isHighSurrogate() && tail.size() > 1 && tail.at(1).isLowSurrogate()) {
+ return 0;
+ }
+ } else if (ch.isHighSurrogate()) {
+ // None of the corner cases below matches a surrogate, so (update
+ // already and) return early if we don't have a digit.
+ if (tail.size() > 1) {
+ QChar low = tail.at(1);
+ if (low.isLowSurrogate()) {
+ m_index += 2;
+ const uint gap = QChar::surrogateToUcs4(ch, low) - m_guide.zeroUcs;
+ return gap < 10u ? '0' + gap : 0;
+ }
+ }
+ return 0;
+ }
+
+ // All cases where tail starts with properly-matched surrogate pair
+ // have been handled by this point.
+ Q_ASSERT(!(ch.isHighSurrogate() && tail.size() > 1 && tail.at(1).isLowSurrogate()));
+
+ // Weird corner cases follow (code above assumes these match no surrogates).
+
+ // Some locales use a non-breaking space (U+00A0) or its thin version
+ // (U+202f) for grouping. These look like spaces, so people (and thus some
+ // of our tests) use a regular space instead and complain if it doesn't
+ // work.
+ // Should this be extended generally to any case where group is a space ?
+ if ((m_guide.group == u"\u00a0" || m_guide.group == u"\u202f") && tail.startsWith(u' ')) {
+ ++m_index;
+ return ',';
+ }
+
+ // Cyrillic has its own E, used by Ukrainian as exponent; but others
+ // writing Cyrillic may well use that; and Ukrainians might well use E.
+ // All other Cyrillic locales (officially) use plain ASCII E.
+ if (m_guide.exponentCyrillic // Only true in scientific float mode.
+ && (tail.startsWith(u"\u0415", Qt::CaseInsensitive)
+ || tail.startsWith(u"E", Qt::CaseInsensitive))) {
+ ++m_index;
+ return 'e';
+ }
+
+ return 0;
+}
+} // namespace with no name
+
/*
- Converts a number in locale to its representation in the C locale.
- Only has to guarantee that a string that is a correct representation of
- a number will be converted. If junk is passed in, junk will be passed
- out and the error will be detected during the actual conversion to a
- number. We can't detect junk here, since we don't even know the base
- of the number.
+ Converts a number in locale representation to the C locale equivalent.
+
+ Only has to guarantee that a string that is a correct representation of a
+ number will be converted. Checks signs, separators and digits appear in all
+ the places they should, and nowhere else.
+
+ Returns true precisely if the number appears to be well-formed, modulo
+ things a parser for C Locale strings (without digit-grouping separators;
+ they're stripped) will catch. When it returns true, it records (and
+ '\0'-terminates) the C locale representation in *result.
+
+ Note: only QString integer-parsing methods have a base parameter (hence need
+ to cope with letters as possible digits); but these are now all routed via
+ byteArrayToU?LongLong(), so no longer come via here. The QLocale
+ number-parsers only work in decimal, so don't have to cope with any digits
+ other than 0 through 9.
*/
bool QLocaleData::numberToCLocale(QStringView s, QLocale::NumberOptions number_options,
- CharBuff *result) const
+ NumberMode mode, CharBuff *result) const
{
s = s.trimmed();
if (s.size() < 1)
return false;
+ NumericTokenizer tokens(s, numericData(mode), mode);
+
+ // Digit-grouping details (all modes):
+ qsizetype digitsInGroup = 0;
+ qsizetype last_separator_idx = -1;
+ qsizetype start_of_digits_idx = -1;
+
+ // Floating-point details (non-integer modes):
+ qsizetype decpt_idx = -1;
+ qsizetype exponent_idx = -1;
+
+ char last = '\0';
+ while (!tokens.done()) {
+ qsizetype idx = tokens.index(); // before nextToken() advances
+ char out = tokens.nextToken();
+ if (out == 0)
+ return false;
+ Q_ASSERT(tokens.index() > idx); // it always *should* advance (except on zero return)
- const QChar *uc = s.data();
- auto length = s.size();
- decltype(length) idx = 0;
-
- int digitsInGroup = 0;
- int group_cnt = 0; // counts number of group chars
- int decpt_idx = -1;
- int last_separator_idx = -1;
- int start_of_digits_idx = -1;
- int exponent_idx = -1;
-
- while (idx < length) {
- const QStringView in = QStringView(uc + idx, uc[idx].isHighSurrogate() ? 2 : 1);
-
- char out = numericToCLocale(in);
- if (out == 0) {
- const QChar simple = in.size() == 1 ? in.front() : QChar::Null;
- if (in == listSeparator())
- out = ';';
- else if (in == percentSign())
- out = '%';
- // for handling base-x numbers
- else if (simple.toLatin1() >= 'A' && simple.toLatin1() <= 'Z')
- out = simple.toLower().toLatin1();
- else if (simple.toLatin1() >= 'a' && simple.toLatin1() <= 'z')
- out = simple.toLatin1();
- else
- break;
- } else if (out == '.') {
+ if (out == '.') {
// Fail if more than one decimal point or point after e
if (decpt_idx != -1 || exponent_idx != -1)
return false;
@@ -3953,26 +4287,26 @@ bool QLocaleData::numberToCLocale(QStringView s, QLocale::NumberOptions number_o
exponent_idx = idx;
}
- if (number_options & QLocale::RejectLeadingZeroInExponent) {
- if (exponent_idx != -1 && out == '0' && idx < length - 1) {
- // After the exponent there can only be '+', '-' or digits.
- // If we find a '0' directly after some non-digit, then that is a leading zero.
- if (result->last() < '0' || result->last() > '9')
- return false;
- }
+ if (number_options.testFlag(QLocale::RejectLeadingZeroInExponent)
+ && exponent_idx != -1 && out == '0') {
+ // After the exponent there can only be '+', '-' or digits.
+ // If we find a '0' directly after some non-digit, then that is a
+ // leading zero, acceptable only if it is the whole exponent.
+ if (!tokens.done() && !isAsciiDigit(last))
+ return false;
}
- if (number_options & QLocale::RejectTrailingZeroesAfterDot) {
- // If we've seen a decimal point and the last character after the exponent is 0, then
- // that is a trailing zero.
- if (decpt_idx >= 0 && idx == exponent_idx && result->last() == '0')
- return false;
+ if (number_options.testFlag(QLocale::RejectTrailingZeroesAfterDot) && decpt_idx >= 0) {
+ // In a fractional part, a 0 just before the exponent is trailing:
+ if (idx == exponent_idx && last == '0')
+ return false;
}
- if (!(number_options & QLocale::RejectGroupSeparator)) {
- if (start_of_digits_idx == -1 && out >= '0' && out <= '9') {
- start_of_digits_idx = idx;
- digitsInGroup++;
+ if (!number_options.testFlag(QLocale::RejectGroupSeparator)) {
+ if (isAsciiDigit(out)) {
+ if (start_of_digits_idx == -1)
+ start_of_digits_idx = idx;
+ ++digitsInGroup;
} else if (out == ',') {
// Don't allow group chars after the decimal point or exponent
if (decpt_idx != -1 || exponent_idx != -1)
@@ -3981,7 +4315,7 @@ bool QLocaleData::numberToCLocale(QStringView s, QLocale::NumberOptions number_o
if (last_separator_idx == -1) {
// Check distance from the beginning of the digits:
if (start_of_digits_idx == -1 || m_grouping_top > digitsInGroup
- || digitsInGroup >= m_grouping_higher + m_grouping_top) {
+ || digitsInGroup >= m_grouping_least + m_grouping_top) {
return false;
}
} else {
@@ -3991,67 +4325,58 @@ bool QLocaleData::numberToCLocale(QStringView s, QLocale::NumberOptions number_o
}
last_separator_idx = idx;
- ++group_cnt;
digitsInGroup = 0;
-
- // don't add the group separator
- idx += in.size();
- continue;
- } else if (out == '.' || idx == exponent_idx) {
- // Were there enough digits since the last separator?
- if (last_separator_idx != -1 && digitsInGroup != m_grouping_least)
+ } else if (mode != IntegerMode && (out == '.' || idx == exponent_idx)
+ && last_separator_idx != -1) {
+ // Were there enough digits since the last group separator?
+ if (digitsInGroup != m_grouping_least)
return false;
- // If we saw no separator, should we fail if
- // digitsInGroup > m_grouping_top + m_grouping_least ?
// stop processing separators
last_separator_idx = -1;
- } else if (out >= '0' && out <= '9') {
- digitsInGroup++;
}
+ } else if (out == ',') {
+ return false;
}
- result->append(out);
- idx += in.size();
+ last = out;
+ if (out != ',') // Leave group separators out of the result.
+ result->append(out);
}
- if (!(number_options & QLocale::RejectGroupSeparator)) {
- // group separator post-processing
- // did we end in a separator?
- if (last_separator_idx + 1 == idx)
- return false;
- // Were there enough digits since the last separator?
- if (last_separator_idx != -1 && digitsInGroup != m_grouping_least)
+ if (!number_options.testFlag(QLocale::RejectGroupSeparator) && last_separator_idx != -1) {
+ // Were there enough digits since the last group separator?
+ if (digitsInGroup != m_grouping_least)
return false;
- // If we saw no separator, and no decimal point, should we fail if
- // digitsInGroup > m_grouping_top + m_grouping_least ?
}
- if (number_options & QLocale::RejectTrailingZeroesAfterDot) {
- // In decimal form, the last character can be a trailing zero if we've seen a decpt.
- if (decpt_idx != -1 && exponent_idx == -1 && result->last() == '0')
+ if (number_options.testFlag(QLocale::RejectTrailingZeroesAfterDot)
+ && decpt_idx != -1 && exponent_idx == -1) {
+ // In the fractional part, a final zero is trailing:
+ if (last == '0')
return false;
}
result->append('\0');
- return idx == length;
+ return true;
}
-bool QLocaleData::validateChars(QStringView str, NumberMode numMode, QByteArray *buff,
- int decDigits, QLocale::NumberOptions number_options) const
+ParsingResult
+QLocaleData::validateChars(QStringView str, NumberMode numMode, int decDigits,
+ QLocale::NumberOptions number_options) const
{
- buff->clear();
- buff->reserve(str.length());
+ ParsingResult result;
+ result.buff.reserve(str.size());
enum { Whole, Fractional, Exponent } state = Whole;
const bool scientific = numMode == DoubleScientificMode;
- char last = 0;
+ NumericTokenizer tokens(str, numericData(numMode), numMode);
+ char last = '\0';
- for (qsizetype i = 0; i < str.size();) {
- const QStringView in = str.mid(i, str.at(i).isHighSurrogate() ? 2 : 1);
- char c = numericToCLocale(in);
+ while (!tokens.done()) {
+ char c = tokens.nextToken();
- if (c >= '0' && c <= '9') {
+ if (isAsciiDigit(c)) {
switch (state) {
case Whole:
// Nothing special to do (unless we want to check grouping sizes).
@@ -4059,185 +4384,149 @@ bool QLocaleData::validateChars(QStringView str, NumberMode numMode, QByteArray
case Fractional:
// If a double has too many digits in its fractional part it is Invalid.
if (decDigits-- == 0)
- return false;
+ return {};
break;
case Exponent:
- if (last < '0' || last > '9') {
+ if (!isAsciiDigit(last)) {
// This is the first digit in the exponent (there may have beena '+'
// or '-' in before). If it's a zero, the exponent is zero-padded.
if (c == '0' && (number_options & QLocale::RejectLeadingZeroInExponent))
- return false;
+ return {};
}
break;
}
} else {
switch (c) {
- case '.':
- // If an integer has a decimal point, it is Invalid.
- // A double can only have one, at the end of its whole-number part.
- if (numMode == IntegerMode || state != Whole)
- return false;
- // Even when decDigits is 0, we do allow the decimal point to be
- // present - just as long as no digits follow it.
-
- state = Fractional;
- break;
+ case '.':
+ // If an integer has a decimal point, it is Invalid.
+ // A double can only have one, at the end of its whole-number part.
+ if (numMode == IntegerMode || state != Whole)
+ return {};
+ // Even when decDigits is 0, we do allow the decimal point to be
+ // present - just as long as no digits follow it.
+
+ state = Fractional;
+ break;
- case '+':
- case '-':
- // A sign can only appear at the start or after the e of scientific:
- if (i != 0 && !(scientific && last == 'e'))
- return false;
- break;
+ case '+':
+ case '-':
+ // A sign can only appear at the start or after the e of scientific:
+ if (last != '\0' && !(scientific && last == 'e'))
+ return {};
+ break;
- case ',':
- // Grouping is only allowed after a digit in the whole-number portion:
- if ((number_options & QLocale::RejectGroupSeparator) || state != Whole
- || last < '0' || last > '9') {
- return false;
- }
- // We could check grouping sizes are correct, but fixup()s are
- // probably better off correcting any misplacement instead.
- break;
+ case ',':
+ // Grouping is only allowed after a digit in the whole-number portion:
+ if ((number_options & QLocale::RejectGroupSeparator) || state != Whole
+ || !isAsciiDigit(last)) {
+ return {};
+ }
+ // We could check grouping sizes are correct, but fixup()s are
+ // probably better off correcting any misplacement instead.
+ break;
- case 'e':
- // Only one e is allowed and only in scientific:
- if (!scientific || state == Exponent)
- return false;
- state = Exponent;
- break;
+ case 'e':
+ // Only one e is allowed and only in scientific:
+ if (!scientific || state == Exponent)
+ return {};
+ state = Exponent;
+ break;
- default:
- // Nothing else can validly appear in a number.
- // In fact, numericToCLocale() must have returned 0. If anyone changes
- // it to return something else, we probably need to handle it here !
- Q_ASSERT(!c);
- return false;
+ default:
+ // Nothing else can validly appear in a number.
+ // NumericTokenizer allows letters of "inf" and "nan", but
+ // validators don't accept those values.
+ // For anything else, tokens.nextToken() must have returned 0.
+ Q_ASSERT(!c || c == 'a' || c == 'f' || c == 'i' || c == 'n');
+ return {};
}
}
last = c;
if (c != ',') // Skip grouping
- buff->append(c);
- i += in.size();
+ result.buff.append(c);
}
- return true;
+ result.state = ParsingResult::Acceptable;
+
+ // Intermediate if it ends with any character that requires a digit after
+ // it to be valid e.g. group separator, sign, or exponent
+ if (last == ',' || last == '-' || last == '+' || last == 'e')
+ result.state = ParsingResult::Intermediate;
+
+ return result;
}
double QLocaleData::stringToDouble(QStringView str, bool *ok,
QLocale::NumberOptions number_options) const
{
CharBuff buff;
- if (!numberToCLocale(str, number_options, &buff)) {
+ if (!numberToCLocale(str, number_options, DoubleScientificMode, &buff)) {
if (ok != nullptr)
*ok = false;
return 0.0;
}
- int processed = 0;
- bool nonNullOk = false;
- double d = qt_asciiToDouble(buff.constData(), buff.length() - 1, nonNullOk, processed);
+ auto r = qt_asciiToDouble(buff.constData(), buff.size() - 1);
if (ok != nullptr)
- *ok = nonNullOk;
- return d;
+ *ok = r.ok();
+ return r.result;
}
-qlonglong QLocaleData::stringToLongLong(QStringView str, int base, bool *ok,
- QLocale::NumberOptions number_options) const
+QSimpleParsedNumber<qint64>
+QLocaleData::stringToLongLong(QStringView str, int base,
+ QLocale::NumberOptions number_options) const
{
CharBuff buff;
- if (!numberToCLocale(str, number_options, &buff)) {
- if (ok != nullptr)
- *ok = false;
- return 0;
- }
+ if (!numberToCLocale(str, number_options, IntegerMode, &buff))
+ return {};
- return bytearrayToLongLong(QByteArrayView(buff.constData(), buff.size()), base, ok);
+ return bytearrayToLongLong(QByteArrayView(buff), base);
}
-qulonglong QLocaleData::stringToUnsLongLong(QStringView str, int base, bool *ok,
- QLocale::NumberOptions number_options) const
+QSimpleParsedNumber<quint64>
+QLocaleData::stringToUnsLongLong(QStringView str, int base,
+ QLocale::NumberOptions number_options) const
{
CharBuff buff;
- if (!numberToCLocale(str, number_options, &buff)) {
- if (ok != nullptr)
- *ok = false;
- return 0;
- }
+ if (!numberToCLocale(str, number_options, IntegerMode, &buff))
+ return {};
- return bytearrayToUnsLongLong(QByteArrayView(buff.constData(), buff.size()), base, ok);
+ return bytearrayToUnsLongLong(QByteArrayView(buff), base);
}
-qlonglong QLocaleData::bytearrayToLongLong(QByteArrayView num, int base, bool *ok)
+static bool checkParsed(QByteArrayView num, qsizetype used)
{
- if (num.isEmpty() || num.at(0) == '\0') {
- if (ok != nullptr)
- *ok = false;
- return 0;
- }
-
- bool _ok;
- const char *endptr;
- const qlonglong l = qstrntoll(num.data(), num.size(), &endptr, base, &_ok);
-
- if (!_ok || endptr == num.data()) {
- if (ok != nullptr)
- *ok = false;
- return 0;
- }
+ if (used <= 0)
+ return false;
- const char *const stop = num.end();
- if (endptr < stop && *endptr != '\0') {
- while (endptr < stop && ascii_isspace(*endptr))
- ++endptr;
+ const qsizetype len = num.size();
+ if (used < len && num[used] != '\0') {
+ while (used < len && ascii_isspace(num[used]))
+ ++used;
}
- if (endptr < stop && *endptr != '\0') {
+ if (used < len && num[used] != '\0')
// we stopped at a non-digit character after converting some digits
- if (ok != nullptr)
- *ok = false;
- return 0;
- }
+ return false;
- if (ok != nullptr)
- *ok = true;
- return l;
+ return true;
}
-qulonglong QLocaleData::bytearrayToUnsLongLong(QByteArrayView num, int base, bool *ok)
+QSimpleParsedNumber<qint64> QLocaleData::bytearrayToLongLong(QByteArrayView num, int base)
{
- if (num.isEmpty() || num.at(0) == '\0') {
- if (ok != nullptr)
- *ok = false;
- return 0;
- }
-
- bool _ok;
- const char *endptr;
- const qulonglong l = qstrntoull(num.data(), num.size(), &endptr, base, &_ok);
-
- if (!_ok || endptr == num.data()) {
- if (ok != nullptr)
- *ok = false;
- return 0;
- }
-
- const char *const stop = num.end();
- if (endptr < stop && *endptr != '\0') {
- while (endptr < stop && ascii_isspace(*endptr))
- ++endptr;
- }
-
- if (endptr < stop && *endptr != '\0') {
- if (ok != nullptr)
- *ok = false;
- return 0;
- }
+ auto r = qstrntoll(num.data(), num.size(), base);
+ if (!checkParsed(num, r.used))
+ return {};
+ return r;
+}
- if (ok != nullptr)
- *ok = true;
- return l;
+QSimpleParsedNumber<quint64> QLocaleData::bytearrayToUnsLongLong(QByteArrayView num, int base)
+{
+ auto r = qstrntoull(num.data(), num.size(), base);
+ if (!checkParsed(num, r.used))
+ return {};
+ return r;
}
/*!
@@ -4256,7 +4545,7 @@ qulonglong QLocaleData::bytearrayToUnsLongLong(QByteArrayView num, int base, boo
\since 4.8
Returns a currency symbol according to the \a format.
*/
-QString QLocale::currencySymbol(QLocale::CurrencySymbolFormat format) const
+QString QLocale::currencySymbol(CurrencySymbolFormat format) const
{
#ifndef QT_NO_SYSTEMLOCALE
if (d->m_data == &systemLocaleData) {
@@ -4273,7 +4562,7 @@ QString QLocale::currencySymbol(QLocale::CurrencySymbolFormat format) const
case CurrencyIsoCode: {
const char *code = d->m_data->m_currency_iso_code;
if (auto len = qstrnlen(code, 3))
- return QString::fromLatin1(code, int(len));
+ return QString::fromLatin1(code, qsizetype(len));
break;
}
}
@@ -4307,7 +4596,7 @@ QString QLocale::toCurrencyString(qlonglong value, const QString &symbol) const
QString str = toString(value);
QString sym = symbol.isNull() ? currencySymbol() : symbol;
if (sym.isEmpty())
- sym = currencySymbol(QLocale::CurrencyIsoCode);
+ sym = currencySymbol(CurrencyIsoCode);
return range.viewData(currency_format_data).arg(str, sym);
}
@@ -4329,7 +4618,7 @@ QString QLocale::toCurrencyString(qulonglong value, const QString &symbol) const
QString str = toString(value);
QString sym = symbol.isNull() ? currencySymbol() : symbol;
if (sym.isEmpty())
- sym = currencySymbol(QLocale::CurrencyIsoCode);
+ sym = currencySymbol(CurrencyIsoCode);
return d->m_data->currencyFormat().getData(currency_format_data).arg(str, sym);
}
@@ -4362,7 +4651,7 @@ QString QLocale::toCurrencyString(double value, const QString &symbol, int preci
QString str = toString(value, 'f', precision == -1 ? d->m_data->m_currency_digits : precision);
QString sym = symbol.isNull() ? currencySymbol() : symbol;
if (sym.isEmpty())
- sym = currencySymbol(QLocale::CurrencyIsoCode);
+ sym = currencySymbol(CurrencyIsoCode);
return range.viewData(currency_format_data).arg(str, sym);
}
@@ -4431,50 +4720,80 @@ QString QLocale::formattedDataSize(qint64 bytes, int precision, DataSizeFormats
unit = d->m_data->byteCount().viewData(byte_unit_data);
}
- return number + QLatin1Char(' ') + unit;
+ return number + u' ' + unit;
}
/*!
\since 4.8
-
- Returns an ordered list of locale names for translation purposes in
- preference order (like "en-Latn-US", "en-US", "en").
-
- The return value represents locale names that the user expects to see the
- UI translation in.
-
- Most like you do not need to use this function directly, but just pass the
+ \brief List of locale names for use in selecting translations
+
+ Each entry in the returned list is the name of a locale suitable to the
+ user's preferences for what to translate the UI into. Where a name in the
+ list is composed of several tags, they are joined as indicated by \a
+ separator. Prior to Qt 6.7 a dash was used as separator.
+
+ For example, using the default separator QLocale::TagSeparator::Dash, if the
+ user has configured their system to use English as used in the USA, the list
+ would be "en-Latn-US", "en-US", "en". The order of entries is the order in
+ which to check for translations; earlier items in the list are to be
+ preferred over later ones. If your translation files use underscores, rather
+ than dashes, to separate locale tags, pass QLocale::TagSeparator::Underscore
+ as \a separator.
+
+ Most likely you do not need to use this function directly, but just pass the
QLocale object to the QTranslator::load() function.
- The first item in the list is the most preferred one.
-
\sa QTranslator, bcp47Name()
*/
-QStringList QLocale::uiLanguages() const
+QStringList QLocale::uiLanguages(TagSeparator separator) const
{
+ const char sep = char(separator);
QStringList uiLanguages;
- QList<QLocale> locales;
-#ifndef QT_NO_SYSTEMLOCALE
- if (d->m_data == &systemLocaleData) {
+ if (uchar(sep) > 0x7f) {
+ badSeparatorWarning("uiLanguages", sep);
+ return uiLanguages;
+ }
+ QList<QLocaleId> localeIds;
+#ifdef QT_NO_SYSTEMLOCALE
+ constexpr bool isSystem = false;
+#else
+ const bool isSystem = d->m_data == &systemLocaleData;
+ if (isSystem) {
uiLanguages = systemLocale()->query(QSystemLocale::UILanguages).toStringList();
- // ... but we need to include likely-adjusted forms of each of those, too:
+ // ... but we need to include likely-adjusted forms of each of those, too.
+ // For now, collect up locale Ids representing the entries, for later processing:
for (const auto &entry : std::as_const(uiLanguages))
- locales.append(QLocale(entry));
- if (locales.isEmpty())
- locales.append(systemLocale()->fallbackLocale());
+ localeIds.append(QLocaleId::fromName(entry));
+ if (localeIds.isEmpty())
+ localeIds.append(systemLocale()->fallbackLocale().d->m_data->id());
+ // If the system locale (isn't C and) didn't include itself in the list,
+ // or as fallback, presume to know better than it and put its name
+ // first. (Known issue, QTBUG-104930, on some macOS versions when in
+ // locale en_DE.) Our translation system might have a translation for a
+ // locale the platform doesn't believe in.
+ const QString name = bcp47Name(separator);
+ if (!name.isEmpty() && language() != C && !uiLanguages.contains(name)) {
+ // That uses contains(name) as a cheap pre-test, but there may be an
+ // entry that matches this on purging likely subtags.
+ const QLocaleId mine = d->m_data->id().withLikelySubtagsRemoved();
+ const auto isMine = [mine](const QString &entry) {
+ return QLocaleId::fromName(entry).withLikelySubtagsRemoved() == mine;
+ };
+ if (std::none_of(uiLanguages.constBegin(), uiLanguages.constEnd(), isMine)) {
+ localeIds.prepend(d->m_data->id());
+ uiLanguages.prepend(name);
+ }
+ }
} else
#endif
{
- locales.append(*this);
+ localeIds.append(d->m_data->id());
}
- for (int i = locales.size(); i-- > 0; ) {
- const QLocale &locale = locales.at(i);
- const auto data = locale.d->m_data;
- QLocaleId id = data->id();
-
- int j;
+ for (qsizetype i = localeIds.size(); i-- > 0; ) {
+ QLocaleId id = localeIds.at(i);
+ qsizetype j;
QByteArray prior;
- if (i < uiLanguages.size()) {
+ if (isSystem && i < uiLanguages.size()) {
// Adding likely-adjusted forms to system locale's list.
// Name the locale is derived from:
prior = uiLanguages.at(i).toLatin1();
@@ -4482,33 +4801,49 @@ QStringList QLocale::uiLanguages() const
j = i + 1;
} else if (id.language_id == C) {
// Attempt no likely sub-tag amendments to C:
- uiLanguages.append(locale.name());
+ uiLanguages.append(QString::fromLatin1(id.name(sep)));
continue;
} else {
- // Plain locale, not system locale; just append.
- const QString name = locale.bcp47Name();
- uiLanguages.append(name);
- prior = name.toLatin1();
+ // Plain locale or empty system uiLanguages; just append.
+ prior = id.name(sep);
+ uiLanguages.append(QString::fromLatin1(prior));
j = uiLanguages.size();
}
const QLocaleId max = id.withLikelySubtagsAdded();
const QLocaleId min = max.withLikelySubtagsRemoved();
- id.script_id = 0; // For re-use as script-less variant.
- // Include version with all likely sub-tags (last) if distinct from the rest:
- if (max != min && max != id && max.name() != prior)
- uiLanguages.insert(j, QString::fromLatin1(max.name()));
+ // Include minimal version (last) unless it's what our locale is derived from:
+ if (auto name = min.name(sep); name != prior)
+ uiLanguages.insert(j, QString::fromLatin1(name));
+ else if (!isSystem)
+ --j; // bcp47Name() matches min(): put more specific forms *before* it.
+
+ if (id.script_id) {
+ // Include scriptless version if likely-equivalent and distinct:
+ id.script_id = 0;
+ if (id != min && id.withLikelySubtagsAdded() == max) {
+ if (auto name = id.name(sep); name != prior)
+ uiLanguages.insert(j, QString::fromLatin1(name));
+ }
+ }
- // Include scriptless version if likely-equivalent and distinct:
- if (data->m_script_id && id != min && id.name() != prior
- && id.withLikelySubtagsAdded() == max) {
- uiLanguages.insert(j, QString::fromLatin1(id.name()));
+ if (!id.territory_id) {
+ Q_ASSERT(!min.territory_id);
+ Q_ASSERT(!id.script_id); // because we just cleared it.
+ // Include version with territory if it likely-equivalent and distinct:
+ id.territory_id = max.territory_id;
+ if (id != max && id.withLikelySubtagsAdded() == max) {
+ if (auto name = id.name(sep); name != prior)
+ uiLanguages.insert(j, QString::fromLatin1(name));
+ }
}
- // Include minimal version (first) unless it's what our locale is derived from:
- if (min.name() != prior)
- uiLanguages.insert(j, QString::fromLatin1(min.name()));
+ // Include version with all likely sub-tags (first) if distinct from the rest:
+ if (max != min && max != id) {
+ if (auto name = max.name(sep); name != prior)
+ uiLanguages.insert(j, QString::fromLatin1(name));
+ }
}
return uiLanguages;
}
@@ -4540,7 +4875,7 @@ QLocale QLocale::collation() const
\since 4.8
Returns a native name of the language for the locale. For example
- "Schwiizertüütsch" for Swiss-German locale.
+ "Schweizer Hochdeutsch" for the Swiss-German locale.
\sa nativeTerritoryName(), languageToString()
*/
diff --git a/src/corelib/text/qlocale.h b/src/corelib/text/qlocale.h
index 7f1d47063b..cb3eb64193 100644
--- a/src/corelib/text/qlocale.h
+++ b/src/corelib/text/qlocale.h
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QLOCALE_H
#define QLOCALE_H
@@ -72,6 +36,8 @@ class Q_CORE_EXPORT QLocale
friend class QTextStreamPrivate;
public:
+ static constexpr int DefaultTwoDigitBaseYear = 1900;
+
// see qlocale_data_p.h for more info on generated data
// GENERATED PART STARTS HERE
enum Language : ushort {
@@ -405,6 +371,20 @@ public:
Zulu = 327,
Kaingang = 328,
Nheengatu = 329,
+ Haryanvi = 330,
+ NorthernFrisian = 331,
+ Rajasthani = 332,
+ Moksha = 333,
+ TokiPona = 334,
+ Pijin = 335,
+ Obolo = 336,
+ Baluchi = 337,
+ Ligurian = 338,
+ Rohingya = 339,
+ Torwali = 340,
+ Anii = 341,
+ Kangri = 342,
+ Venetian = 343,
Afan = Oromo,
Bengali = Bangla,
@@ -426,7 +406,7 @@ public:
Uigur = Uyghur,
Walamo = Wolaytta,
- LastLanguage = Nheengatu
+ LastLanguage = Venetian
};
enum Script : ushort {
@@ -572,6 +552,7 @@ public:
VaiScript = 139,
VarangKshitiScript = 140,
YiScript = 141,
+ HanifiScript = 142,
BengaliScript = BanglaScript,
MendeKikakuiScript = MendeScript,
@@ -579,7 +560,7 @@ public:
SimplifiedChineseScript = SimplifiedHanScript,
TraditionalChineseScript = TraditionalHanScript,
- LastScript = YiScript
+ LastScript = HanifiScript
};
// ### Qt 7: Rename to Territory
@@ -892,6 +873,7 @@ public:
Q_ENUM(MeasurementSystem)
enum FormatType { LongFormat, ShortFormat, NarrowFormat };
+ Q_ENUM(FormatType)
enum NumberOption {
DefaultNumberOptions = 0x0,
OmitGroupSeparator = 0x01,
@@ -902,16 +884,21 @@ public:
RejectTrailingZeroesAfterDot = 0x20
};
Q_DECLARE_FLAGS(NumberOptions, NumberOption)
+ Q_FLAG(NumberOptions)
enum FloatingPointPrecisionOption {
FloatingPointShortest = -128
};
+ enum class TagSeparator : char { Dash = '-', Underscore = '_' };
+ Q_ENUM(TagSeparator)
+
enum CurrencySymbolFormat {
CurrencyIsoCode,
CurrencySymbol,
CurrencyDisplayName
};
+ Q_ENUM(CurrencySymbolFormat)
enum DataSizeFormat {
// Single-bit values, for internal use.
@@ -927,15 +914,14 @@ public:
Q_FLAG(DataSizeFormats)
QLocale();
-#if QT_STRINGVIEW_LEVEL < 2
- explicit QLocale(const QString &name) : QLocale(qToStringViewIgnoringNull(name)) {}
-#endif
+ QT_CORE_INLINE_SINCE(6, 4)
+ explicit QLocale(const QString &name);
explicit QLocale(QStringView name);
QLocale(Language language, Territory territory);
QLocale(Language language, Script script = AnyScript, Territory territory = AnyTerritory);
- QLocale(const QLocale &other);
+ QLocale(const QLocale &other) noexcept;
QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QLocale)
- QLocale &operator=(const QLocale &other);
+ QLocale &operator=(const QLocale &other) noexcept;
~QLocale();
void swap(QLocale &other) noexcept { d.swap(other.d); }
@@ -947,9 +933,14 @@ public:
QT_DEPRECATED_VERSION_X_6_6("Use territory() instead")
Country country() const;
#endif
- QString name() const;
+#if QT_CORE_REMOVED_SINCE(6, 7)
+ QString name() const;
QString bcp47Name() const;
+#endif
+ QString name(TagSeparator separator = TagSeparator::Underscore) const;
+ QString bcp47Name(TagSeparator separator = TagSeparator::Dash) const;
+
QString nativeLanguageName() const;
QString nativeTerritoryName() const;
#if QT_DEPRECATED_SINCE(6, 6)
@@ -957,7 +948,6 @@ public:
QString nativeCountryName() const;
#endif
-#if QT_STRINGVIEW_LEVEL < 2
short toShort(const QString &s, bool *ok = nullptr) const
{ return toShort(qToStringViewIgnoringNull(s), ok); }
ushort toUShort(const QString &s, bool *ok = nullptr) const
@@ -978,7 +968,6 @@ public:
{ return toFloat(qToStringViewIgnoringNull(s), ok); }
double toDouble(const QString &s, bool *ok = nullptr) const
{ return toDouble(qToStringViewIgnoringNull(s), ok); }
-#endif
short toShort(QStringView s, bool *ok = nullptr) const;
ushort toUShort(QStringView s, bool *ok = nullptr) const;
@@ -1003,13 +992,11 @@ public:
QString toString(float f, char format = 'g', int precision = 6) const
{ return toString(double(f), format, precision); }
-#if QT_STRINGVIEW_LEVEL < 2
// (Can't inline first two: passing by value doesn't work when only forward-declared.)
QString toString(QDate date, const QString &format) const;
QString toString(QTime time, const QString &format) const;
QString toString(const QDateTime &dateTime, const QString &format) const
{ return toString(dateTime, qToStringViewIgnoringNull(format)); }
-#endif
QString toString(QDate date, QStringView format) const;
QString toString(QTime time, QStringView format) const;
QString toString(const QDateTime &dateTime, QStringView format) const;
@@ -1029,18 +1016,39 @@ public:
QString dateFormat(FormatType format = LongFormat) const;
QString timeFormat(FormatType format = LongFormat) const;
QString dateTimeFormat(FormatType format = LongFormat) const;
+ // QCalendar's header has to #include QLocale's, preventing the reverse, so
+ // QCalendar parameters can't have defaults here.
#if QT_CONFIG(datestring)
- QDate toDate(const QString &string, FormatType = LongFormat) const;
QTime toTime(const QString &string, FormatType = LongFormat) const;
- QDateTime toDateTime(const QString &string, FormatType format = LongFormat) const;
- QDate toDate(const QString &string, const QString &format) const;
QTime toTime(const QString &string, const QString &format) const;
+# if QT_CORE_REMOVED_SINCE(6, 7)
+ QDate toDate(const QString &string, FormatType = LongFormat) const;
+ QDate toDate(const QString &string, const QString &format) const;
+ QDateTime toDateTime(const QString &string, FormatType format = LongFormat) const;
QDateTime toDateTime(const QString &string, const QString &format) const;
// Calendar-aware API
QDate toDate(const QString &string, FormatType format, QCalendar cal) const;
- QDateTime toDateTime(const QString &string, FormatType format, QCalendar cal) const;
QDate toDate(const QString &string, const QString &format, QCalendar cal) const;
+ QDateTime toDateTime(const QString &string, FormatType format, QCalendar cal) const;
QDateTime toDateTime(const QString &string, const QString &format, QCalendar cal) const;
+# endif
+ QDate toDate(const QString &string, FormatType = LongFormat,
+ int baseYear = DefaultTwoDigitBaseYear) const;
+ QDate toDate(const QString &string, const QString &format,
+ int baseYear = DefaultTwoDigitBaseYear) const;
+ QDateTime toDateTime(const QString &string, FormatType format = LongFormat,
+ int baseYear = DefaultTwoDigitBaseYear) const;
+ QDateTime toDateTime(const QString &string, const QString &format,
+ int baseYear = DefaultTwoDigitBaseYear) const;
+ // Calendar-aware API
+ QDate toDate(const QString &string, FormatType format, QCalendar cal,
+ int baseYear = DefaultTwoDigitBaseYear) const;
+ QDate toDate(const QString &string, const QString &format, QCalendar cal,
+ int baseYear = DefaultTwoDigitBaseYear) const;
+ QDateTime toDateTime(const QString &string, FormatType format, QCalendar cal,
+ int baseYear = DefaultTwoDigitBaseYear) const;
+ QDateTime toDateTime(const QString &string, const QString &format, QCalendar cal,
+ int baseYear = DefaultTwoDigitBaseYear) const;
#endif
QString decimalPoint() const;
@@ -1086,7 +1094,10 @@ public:
QString formattedDataSize(qint64 bytes, int precision = 2, DataSizeFormats format = DataSizeIecFormat) const;
+#if QT_CORE_REMOVED_SINCE(6, 7)
QStringList uiLanguages() const;
+#endif
+ QStringList uiLanguages(TagSeparator separator = TagSeparator::Dash) const;
enum LanguageCodeType {
ISO639Part1 = 1 << 0,
@@ -1103,17 +1114,15 @@ public:
AnyLanguageCode = -1
};
Q_DECLARE_FLAGS(LanguageCodeTypes, LanguageCodeType)
+ Q_FLAG(LanguageCodeTypes)
-#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0)
+#if QT_CORE_REMOVED_SINCE(6, 3)
static QString languageToCode(Language language);
- static QString languageToCode(Language language, LanguageCodeTypes codeTypes);
static Language codeToLanguage(QStringView languageCode) noexcept;
- static Language codeToLanguage(QStringView languageCode, LanguageCodeTypes codeTypes) noexcept;
-#else
+#endif
static QString languageToCode(Language language, LanguageCodeTypes codeTypes = AnyLanguageCode);
static Language codeToLanguage(QStringView languageCode,
LanguageCodeTypes codeTypes = AnyLanguageCode) noexcept;
-#endif
static QString territoryToCode(Territory territory);
static Territory codeToTerritory(QStringView territoryCode) noexcept;
#if QT_DEPRECATED_SINCE(6, 6)
@@ -1148,6 +1157,7 @@ public:
NumberOptions numberOptions() const;
enum QuotationStyle { StandardQuotation, AlternateQuotation };
+ Q_ENUM(QuotationStyle)
QString quoteString(const QString &str, QuotationStyle style = StandardQuotation) const
{ return quoteString(QStringView(str), style); }
QString quoteString(QStringView str, QuotationStyle style = StandardQuotation) const;
@@ -1160,7 +1170,7 @@ private:
friend class QLocalePrivate;
friend class QSystemLocale;
friend class QCalendarBackend;
- friend class QGregorianCalendar;
+ friend class QRomanCalendar;
friend Q_CORE_EXPORT size_t qHash(const QLocale &key, size_t seed) noexcept;
friend bool operator==(const QLocale &lhs, const QLocale &rhs) { return lhs.equals(rhs); }
@@ -1172,6 +1182,11 @@ Q_DECLARE_SHARED(QLocale)
Q_DECLARE_OPERATORS_FOR_FLAGS(QLocale::NumberOptions)
Q_DECLARE_OPERATORS_FOR_FLAGS(QLocale::LanguageCodeTypes)
+#if QT_CORE_INLINE_IMPL_SINCE(6, 4)
+QLocale::QLocale(const QString &name)
+ : QLocale(qToStringViewIgnoringNull(name)) {}
+#endif
+
#ifndef QT_NO_DATASTREAM
Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QLocale &);
Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QLocale &);
diff --git a/src/corelib/text/qlocale.qdoc b/src/corelib/text/qlocale.qdoc
index 9ea24d1433..f3f0a5cc2d 100644
--- a/src/corelib/text/qlocale.qdoc
+++ b/src/corelib/text/qlocale.qdoc
@@ -1,29 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\class QLocale
@@ -74,7 +50,7 @@
\note For the current keyboard input locale take a look at
QInputMethod::locale().
- QLocale's data is based on Common Locale Data Repository v40.
+ QLocale's data is based on Common Locale Data Repository v44.1.
\section1 Matching combinations of language, script and territory
@@ -119,16 +95,17 @@
\value Afrikaans
\value Aghem
\value Akan
- \value Akkadian Since Qt 5.1
- \value Akoose Since Qt 5.3
+ \value [since 5.1] Akkadian
+ \value [since 5.3] Akoose
\value Albanian
- \value AmericanSignLanguage Since Qt 5.7
+ \value [since 5.7] AmericanSignLanguage
\value Amharic
- \value AncientEgyptian Since Qt 5.1
- \value AncientGreek Since Qt 5.1
+ \value [since 5.1] AncientEgyptian
+ \value [since 5.1] AncientGreek
+ \value [since 6.7] Anii
\value Arabic
- \value Aragonese Since Qt 5.1
- \value Aramaic Since Qt 5.1
+ \value [since 5.1] Aragonese
+ \value [since 5.1] Aramaic
\value Armenian
\value Assamese
\value Asturian
@@ -139,48 +116,49 @@
\value Aymara
\value Azerbaijani
\value Bafia
- \value Balinese Since Qt 5.1
+ \value [since 5.1] Balinese
+ \value [since 6.6] Baluchi
\value Bambara
- \value Bamun Since Qt 5.1
- \value Bangla Since Qt 6.0
+ \value [since 5.1] Bamun
+ \value [since 6.0] Bangla
\value Basaa
\value Bashkir
\value Basque
- \value BatakToba Since Qt 5.1
+ \value [since 5.1] BatakToba
\value Belarusian
\value Bemba
\value Bena
\value Bengali Obsolete, please use Bangla
- \value Bhojpuri Since Qt 5.7
+ \value [since 5.7] Bhojpuri
\value Bhutani Obsolete, please use Dzongkha
\value Bislama
\value Blin
\value Bodo
\value Bosnian
\value Breton
- \value Buginese Since Qt 5.1
+ \value [since 5.1] Buginese
\value Bulgarian
\value Burmese
\value Byelorussian Obsolete, please use Belarusian
\value Cambodian Obsolete, please use Khmer
- \value Cantonese Since Qt 5.7
+ \value [since 5.7] Cantonese
\value Catalan
- \value Cebuano Since Qt 5.14
- \value CentralAtlasTamazight Since Qt 6.0
- \value CentralKurdish Since Qt 5.5
+ \value [since 5.14] Cebuano
+ \value [since 6.0] CentralAtlasTamazight
+ \value [since 5.5] CentralKurdish
\value CentralMoroccoTamazight Obsolete, please use CentralAtlasTamazight
- \value Chakma Since Qt 5.1
+ \value [since 5.1] Chakma
\value Chamorro
\value Chechen
\value Cherokee
\value Chewa Obsolete, please use Nyanja
- \value Chickasaw Since Qt 5.14
+ \value [since 5.14] Chickasaw
\value Chiga
\value Chinese (Mandarin)
\value Church
\value Chuvash
\value Colognian
- \value Coptic Since Qt 5.1
+ \value [since 5.1] Coptic
\value Cornish
\value Corsican
\value Cree
@@ -188,13 +166,13 @@
\value Czech
\value Danish
\value Divehi
- \value Dogri Since Qt 5.1
+ \value [since 5.1] Dogri
\value Duala
\value Dutch
\value Dzongkha
\value Embu
\value English
- \value Erzya Since Qt 5.14
+ \value [since 5.14] Erzya
\value Esperanto
\value Estonian
\value Ewe
@@ -214,13 +192,14 @@
\value Geez
\value Georgian
\value German
- \value Gothic Since Qt 5.1
+ \value [since 5.1] Gothic
\value Greek
\value Greenlandic Obsolete, please use Kalaallisut
\value Guarani
\value Gujarati
\value Gusii
\value Haitian
+ \value [since 6.5] Haryanvi
\value Hausa
\value Hawaiian
\value Hebrew
@@ -229,16 +208,16 @@
\value HiriMotu
\value Hungarian
\value Icelandic
- \value Ido Since Qt 5.12
+ \value [since 5.12] Ido
\value Igbo
- \value InariSami Since Qt 5.5
+ \value [since 5.5] InariSami
\value Indonesian
- \value Ingush Since Qt 5.1
+ \value [since 5.1] Ingush
\value Interlingua
\value Interlingue
\value Inuktitut
\value Inupiak Obsolete, please use Inupiaq
- \value Inupiaq Since 6.0
+ \value [since 6.0] Inupiaq
\value Irish
\value Italian
\value Japanese
@@ -247,18 +226,19 @@
\value JolaFonyi
\value Kabuverdianu
\value Kabyle
- \value Kaingang Since 6.3
+ \value [since 6.3] Kaingang
\value Kako
- \value Kalaallisut Since Qt 6.0
+ \value [since 6.0] Kalaallisut
\value Kalenjin
\value Kamba
+ \value [since 6.7] Kangri
\value Kannada
\value Kanuri
\value Kashmiri
\value Kazakh
- \value Kenyang Since Qt 5.5
+ \value [since 5.5] Kenyang
\value Khmer
- \value Kiche Since Qt 5.5
+ \value [since 5.5] Kiche
\value Kikuyu
\value Kinyarwanda
\value Kirghiz Obsolete, please use Kyrgyz
@@ -270,69 +250,72 @@
\value KoyraboroSenni
\value KoyraChiini
\value Kpelle
- \value Kuanyama Since 6.0
+ \value [since 6.0] Kuanyama
\value Kurdish
\value Kurundi Obsolete, please use Rundi
\value Kwanyama Obsolete, please use Kuanyama
\value Kwasio
- \value Kyrgyz Since 6.0
- \value Lakota Since Qt 5.3
+ \value [since 6.0] Kyrgyz
+ \value [since 5.3] Lakota
\value Langi
\value Lao
\value Latin
\value Latvian
- \value Lezghian Since Qt 5.5
+ \value [since 5.5] Lezghian
\value Limburgish
\value Lingala
- \value LiteraryChinese Since Qt 5.7
+ \value [since 6.6] Ligurian
+ \value [since 5.7] LiteraryChinese
\value Lithuanian
- \value Lojban Since Qt 5.12
- \value LowerSorbian Since Qt 5.5
+ \value [since 5.12] Lojban
+ \value [since 5.5] LowerSorbian
\value LowGerman
\value LubaKatanga
- \value LuleSami Since Qt 5.5
+ \value [since 5.5] LuleSami
\value Luo
\value Luxembourgish
\value Luyia
\value Macedonian
\value Machame
- \value Maithili Since Qt 5.5
+ \value [since 5.5] Maithili
\value MakhuwaMeetto
\value Makonde
\value Malagasy
\value Malay
\value Malayalam
\value Maltese
- \value Mandingo Since Qt 5.1
- \value Manipuri Since Qt 5.1
+ \value [since 5.1] Mandingo
+ \value [since 5.1] Manipuri
\value Manx
\value Maori
- \value Mapuche Since Qt 5.5
+ \value [since 5.5] Mapuche
\value Marathi
\value Marshallese
\value Masai
- \value Mazanderani Since Qt 5.7
- \value Mende Since Qt 5.5
+ \value [since 5.7] Mazanderani
+ \value [since 5.5] Mende
\value Meru
\value Meta
- \value Mohawk Since Qt 5.5
+ \value [since 5.5] Mohawk
+ \value [since 6.5] Moksha
\value Mongolian
\value Morisyen
\value Mundang
- \value Muscogee Since Qt 5.14
+ \value [since 5.14] Muscogee
\value Nama
\value NauruLanguage
\value Navaho Obsolete, please use Navajo
- \value Navajo Since 6.0
+ \value [since 6.0] Navajo
\value Ndonga
\value Nepali
- \value Newari Since Qt 5.7
+ \value [since 5.7] Newari
\value Ngiemboon
- \value Nheengatu Since 6.3
- \value NigerianPidgin Since Qt 6.0
+ \value [since 6.3] Nheengatu
+ \value [since 6.0] NigerianPidgin
\value Ngomba
- \value Nko Since Qt 5.5
- \value NorthernLuri Since Qt 5.7
+ \value [since 5.5] Nko
+ \value [since 6.5] NorthernFrisian
+ \value [since 5.7] NorthernLuri
\value NorthernSami
\value NorthernSotho
\value NorthNdebele
@@ -341,29 +324,33 @@
\value Nuer
\value Nyanja
\value Nyankole
+ \value [since 6.5] Obolo
\value Occitan
- \value Odia Since 6.0
+ \value [since 6.0] Odia
\value Ojibwa
- \value OldIrish Since Qt 5.1
- \value OldNorse Since Qt 5.1
- \value OldPersian Since Qt 5.1
+ \value [since 5.1] OldIrish
+ \value [since 5.1] OldNorse
+ \value [since 5.1] OldPersian
\value Oriya Obsolete, please use Odia
\value Oromo
- \value Osage Since Qt 5.7
+ \value [since 5.7] Osage
\value Ossetic
- \value Pahlavi Since Qt 5.1
- \value Palauan Since Qt 5.7
+ \value [since 5.1] Pahlavi
+ \value [since 5.7] Palauan
\value Pali
- \value Papiamento Since Qt 5.7
+ \value [since 5.7] Papiamento
\value Pashto
\value Persian
- \value Phoenician Since Qt 5.1
+ \value [since 5.1] Phoenician
+ \value [since 6.5] Pijin
\value Polish
\value Portuguese
- \value Prussian Since Qt 5.5
+ \value [since 5.5] Prussian
\value Punjabi
\value Quechua
+ \value [since 6.5] Rajasthani
\value RhaetoRomance Obsolete, please use Romansh
+ \value [since 6.6] Rohingya
\value Romanian
\value Romansh
\value Rombo
@@ -377,30 +364,30 @@
\value Sango
\value Sangu
\value Sanskrit
- \value Santali Since Qt 5.1
+ \value [since 5.1] Santali
\value Sardinian
- \value Saurashtra Since Qt 5.1
+ \value [since 5.1] Saurashtra
\value Sena
\value Serbian
\value Shambala
\value Shona
\value SichuanYi
- \value Sicilian Since Qt 5.12
+ \value [since 5.12] Sicilian
\value Sidamo
- \value Silesian Since Qt 5.14
+ \value [since 5.14] Silesian
\value Sindhi
\value Sinhala
- \value SkoltSami Since Qt 5.5
+ \value [since 5.5] SkoltSami
\value Slovak
\value Slovenian
\value Soga
\value Somali
- \value SouthernKurdish Since Qt 5.12
- \value SouthernSami Since Qt 5.5
+ \value [since 5.12] SouthernKurdish
+ \value [since 5.5] SouthernSami
\value SouthernSotho
\value SouthNdebele
\value Spanish
- \value StandardMoroccanTamazight Since Qt 5.3
+ \value [since 5.3] StandardMoroccanTamazight
\value Sundanese
\value Swahili
\value Swati
@@ -409,7 +396,7 @@
\value Syriac
\value Tachelhit
\value Tahitian
- \value TaiDam Since Qt 5.1
+ \value [since 5.1] TaiDam
\value Taita
\value Tajik
\value Tamil
@@ -422,36 +409,39 @@
\value Tibetan
\value Tigre
\value Tigrinya
- \value TokelauLanguage Since Qt 5.7
- \value TokPisin Since Qt 5.7
+ \value [since 5.7] TokelauLanguage
+ \value [since 6.5] TokiPona
+ \value [since 5.7] TokPisin
\value Tongan
+ \value [since 6.6] Torwali
\value Tsonga
\value Tswana
\value Turkish
\value Turkmen
- \value TuvaluLanguage Since Qt 5.7
+ \value [since 5.7] TuvaluLanguage
\value Tyap
- \value Ugaritic Since Qt 5.1
+ \value [since 5.1] Ugaritic
\value Uighur Obsolete, please use Uyghur
\value Uigur Obsolete, please use Uyghur
\value Ukrainian
- \value UpperSorbian Since Qt 5.5
+ \value [since 5.5] UpperSorbian
\value Urdu
- \value Uyghur Since 6.0
+ \value [since 6.0] Uyghur
\value Uzbek
\value Vai
\value Venda
+ \value [since 6.7] Venetian
\value Vietnamese
\value Volapuk
\value Vunjo
\value Walamo Obsolete, please use Wolaytta
\value Walloon
\value Walser
- \value Warlpiri Since Qt 5.5
+ \value [since 5.5] Warlpiri
\value Welsh
- \value WesternBalochi Since Qt 5.12
+ \value [since 5.12] WesternBalochi
\value WesternFrisian same as Frisian
- \value Wolaytta Since 6.0
+ \value [since 6.0] Wolaytta
\value Wolof
\value Xhosa
\value Yangben
@@ -485,7 +475,7 @@
details are specific.
\value AnyCountry Osbolete alias for \c AnyTerritory
- \value AnyTerritory Since 6.2
+ \value [since 6.2] AnyTerritory
\value Afghanistan
\value AlandIslands
@@ -517,7 +507,7 @@
\value Bolivia
\value Bonaire
\value BosniaAndHerzegowina Obsolete, use \c BosniaAndHerzegovina instead
- \value BosniaAndHerzegovina Since 6.0
+ \value [since 6.0] BosniaAndHerzegovina
\value Botswana
\value BouvetIsland
\value Brazil
@@ -550,10 +540,10 @@
\value CostaRica
\value Croatia
\value Cuba
- \value Curacao Since Qt 6.0
+ \value [since 6.0] Curacao
\value CuraSao Obsolete, use \c Curacao instead
\value Cyprus
- \value Czechia Since 6.0
+ \value [since 6.0] Czechia
\value CzechRepublic Obsolete, use \c Czechia instead
\value DemocraticRepublicOfCongo Obsolete, use \c CongoKinshasa instead
\value DemocraticRepublicOfKorea Obsolete, use \c NorthKorea instead
@@ -571,8 +561,8 @@
\value Estonia
\value Eswatini
\value Ethiopia
- \value EuropeanUnion Since Qt 5.7
- \value Europe Since Qt 5.12
+ \value [since 5.7] EuropeanUnion
+ \value [since 5.12] Europe
\value FalklandIslands
\value FaroeIslands
\value Fiji
@@ -619,7 +609,7 @@
\value Kazakhstan
\value Kenya
\value Kiribati
- \value Kosovo Since Qt 5.2
+ \value [since 5.2] Kosovo
\value Kuwait
\value Kyrgyzstan
\value Laos
@@ -659,7 +649,7 @@
\value Myanmar
\value Namibia
\value NauruCountry Osbolete alias for \c NauruTerritory
- \value NauruTerritory Since 6.2
+ \value [since 6.2] NauruTerritory
\value Nepal
\value Netherlands
\value NewCaledonia
@@ -673,7 +663,7 @@
\value NorthKorea
\value Norway
\value Oman
- \value OutlyingOceania Since Qt 5.7
+ \value [since 5.7] OutlyingOceania
\value Pakistan
\value Palau
\value PalestinianTerritories
@@ -739,7 +729,7 @@
\value TimorLeste
\value Togo
\value TokelauCountry Osbolete alias for \c TokelauTerritory
- \value TokelauTerritory Since 6.2
+ \value [since 6.2] TokelauTerritory
\value Tonga
\value TrinidadAndTobago
\value TristanDaCunha
@@ -748,7 +738,7 @@
\value Turkmenistan
\value TurksAndCaicosIslands
\value TuvaluCountry Osbolete alias for \c TuvaluTerritory
- \value TuvaluTerritory Since 6.2
+ \value [since 6.2] TuvaluTerritory
\value Uganda
\value Ukraine
\value UnitedArabEmirates
@@ -767,7 +757,7 @@
\value WallisAndFutuna
\value WallisAndFutunaIslands
\value WesternSahara
- \value World Since Qt 5.12
+ \value [since 5.12] World
\value Yemen
\value Zambia
\value Zimbabwe
@@ -788,151 +778,152 @@
\value AnyScript
- \value AdlamScript Since Qt 5.7
- \value AhomScript Since Qt 5.7
- \value AnatolianHieroglyphsScript Since Qt 5.7
+ \value [since 5.7] AdlamScript
+ \value [since 5.7] AhomScript
+ \value [since 5.7] AnatolianHieroglyphsScript
\value ArabicScript
\value ArmenianScript
- \value AvestanScript Since Qt 5.1
- \value BalineseScript Since Qt 5.1
- \value BamumScript Since Qt 5.1
- \value BanglaScript Since 6.0
- \value BassaVahScript Since Qt 5.5
- \value BatakScript Since Qt 5.1
+ \value [since 5.1] AvestanScript
+ \value [since 5.1] BalineseScript
+ \value [since 5.1] BamumScript
+ \value [since 6.0] BanglaScript
+ \value [since 5.5] BassaVahScript
+ \value [since 5.1] BatakScript
\value BengaliScript Obsolete, please use BanglaScript
- \value BhaiksukiScript Since Qt 5.7
- \value BopomofoScript Since Qt 5.1
- \value BrahmiScript Since Qt 5.1
- \value BrailleScript Since Qt 5.1
- \value BugineseScript Since Qt 5.1
- \value BuhidScript Since Qt 5.1
- \value CanadianAboriginalScript Since Qt 5.1
- \value CarianScript Since Qt 5.1
- \value CaucasianAlbanianScript Since Qt 5.5
- \value ChakmaScript Since Qt 5.1
- \value ChamScript Since Qt 5.1
+ \value [since 5.7] BhaiksukiScript
+ \value [since 5.1] BopomofoScript
+ \value [since 5.1] BrahmiScript
+ \value [since 5.1] BrailleScript
+ \value [since 5.1] BugineseScript
+ \value [since 5.1] BuhidScript
+ \value [since 5.1] CanadianAboriginalScript
+ \value [since 5.1] CarianScript
+ \value [since 5.5] CaucasianAlbanianScript
+ \value [since 5.1] ChakmaScript
+ \value [since 5.1] ChamScript
\value CherokeeScript
- \value CopticScript Since Qt 5.1
- \value CuneiformScript Since Qt 5.1
- \value CypriotScript Since Qt 5.1
+ \value [since 5.1] CopticScript
+ \value [since 5.1] CuneiformScript
+ \value [since 5.1] CypriotScript
\value CyrillicScript
- \value DeseretScript Since Qt 5.1
+ \value [since 5.1] DeseretScript
\value DevanagariScript
- \value DuployanScript Since Qt 5.5
- \value EgyptianHieroglyphsScript Since Qt 5.1
- \value ElbasanScript Since Qt 5.5
+ \value [since 5.5] DuployanScript
+ \value [since 5.1] EgyptianHieroglyphsScript
+ \value [since 5.5] ElbasanScript
\value EthiopicScript
- \value FraserScript Since Qt 5.1
+ \value [since 5.1] FraserScript
\value GeorgianScript
- \value GlagoliticScript Since Qt 5.1
- \value GothicScript Since Qt 5.1
- \value GranthaScript Since Qt 5.5
+ \value [since 5.1] GlagoliticScript
+ \value [since 5.1] GothicScript
+ \value [since 5.5] GranthaScript
\value GreekScript
\value GujaratiScript
\value GurmukhiScript
- \value HangulScript Since Qt 5.1
- \value HanScript Since Qt 5.1
- \value HanunooScript Since Qt 5.1
- \value HanWithBopomofoScript Since Qt 5.7
- \value HatranScript Since Qt 5.7
+ \value [since 5.1] HangulScript
+ \value [since 6.6] HanifiScript
+ \value [since 5.1] HanScript
+ \value [since 5.1] HanunooScript
+ \value [since 5.7] HanWithBopomofoScript
+ \value [since 5.7] HatranScript
\value HebrewScript
- \value HiraganaScript Since Qt 5.1
- \value ImperialAramaicScript Since Qt 5.1
- \value InscriptionalPahlaviScript Since Qt 5.1
- \value InscriptionalParthianScript Since Qt 5.1
- \value JamoScript Since Qt 5.7
+ \value [since 5.1] HiraganaScript
+ \value [since 5.1] ImperialAramaicScript
+ \value [since 5.1] InscriptionalPahlaviScript
+ \value [since 5.1] InscriptionalParthianScript
+ \value [since 5.7] JamoScript
\value JapaneseScript
- \value JavaneseScript Since Qt 5.1
- \value KaithiScript Since Qt 5.1
+ \value [since 5.1] JavaneseScript
+ \value [since 5.1] KaithiScript
\value KannadaScript
- \value KatakanaScript Since Qt 5.1
- \value KayahLiScript Since Qt 5.1
- \value KharoshthiScript Since Qt 5.1
- \value KhmerScript Since Qt 5.1
- \value KhojkiScript Since Qt 5.5
- \value KhudawadiScript Since Qt 5.5
+ \value [since 5.1] KatakanaScript
+ \value [since 5.1] KayahLiScript
+ \value [since 5.1] KharoshthiScript
+ \value [since 5.1] KhmerScript
+ \value [since 5.5] KhojkiScript
+ \value [since 5.5] KhudawadiScript
\value KoreanScript
- \value LannaScript Since Qt 5.1
+ \value [since 5.1] LannaScript
\value LaoScript
\value LatinScript
- \value LepchaScript Since Qt 5.1
- \value LimbuScript Since Qt 5.1
- \value LinearAScript Since Qt 5.5
- \value LinearBScript Since Qt 5.1
- \value LycianScript Since Qt 5.1
- \value LydianScript Since Qt 5.1
- \value MahajaniScript Since Qt 5.5
+ \value [since 5.1] LepchaScript
+ \value [since 5.1] LimbuScript
+ \value [since 5.5] LinearAScript
+ \value [since 5.1] LinearBScript
+ \value [since 5.1] LycianScript
+ \value [since 5.1] LydianScript
+ \value [since 5.5] MahajaniScript
\value MalayalamScript
- \value MandaeanScript Since Qt 5.1
- \value ManichaeanScript Since Qt 5.5
- \value MarchenScript Since Qt 5.7
- \value MeiteiMayekScript Since Qt 5.1
- \value MendeScript Since Qt 6.0
+ \value [since 5.1] MandaeanScript
+ \value [since 5.5] ManichaeanScript
+ \value [since 5.7] MarchenScript
+ \value [since 5.1] MeiteiMayekScript
+ \value [since 6.0] MendeScript
\value MendeKikakuiScript Obsolete, please use MendeScript
- \value MeroiticCursiveScript Since Qt 5.1
- \value MeroiticScript Since Qt 5.1
- \value ModiScript Since Qt 5.5
+ \value [since 5.1] MeroiticCursiveScript
+ \value [since 5.1] MeroiticScript
+ \value [since 5.5] ModiScript
\value MongolianScript
- \value MroScript Since Qt 5.5
- \value MultaniScript Since Qt 5.7
+ \value [since 5.5] MroScript
+ \value [since 5.7] MultaniScript
\value MyanmarScript
- \value NabataeanScript Since Qt 5.5
- \value NewaScript Since Qt 5.7
- \value NewTaiLueScript Since Qt 5.1
- \value NkoScript Since Qt 5.1
- \value OghamScript Since Qt 5.1
- \value OlChikiScript Since Qt 5.1
- \value OldHungarianScript Since Qt 5.7
- \value OldItalicScript Since Qt 5.1
- \value OldNorthArabianScript Since Qt 5.5
- \value OldPermicScript Since Qt 5.5
- \value OldPersianScript Since Qt 5.1
- \value OldSouthArabianScript Since Qt 5.1
- \value OdiaScript Since 6.0
+ \value [since 5.5] NabataeanScript
+ \value [since 5.7] NewaScript
+ \value [since 5.1] NewTaiLueScript
+ \value [since 5.1] NkoScript
+ \value [since 5.1] OghamScript
+ \value [since 5.1] OlChikiScript
+ \value [since 5.7] OldHungarianScript
+ \value [since 5.1] OldItalicScript
+ \value [since 5.5] OldNorthArabianScript
+ \value [since 5.5] OldPermicScript
+ \value [since 5.1] OldPersianScript
+ \value [since 5.1] OldSouthArabianScript
+ \value [since 6.0] OdiaScript
\value OriyaScript Obsolete, please use OdiaScript
- \value OrkhonScript Since Qt 5.1
- \value OsageScript Since Qt 5.7
- \value OsmanyaScript Since Qt 5.1
- \value PahawhHmongScript Since Qt 5.5
- \value PalmyreneScript Since Qt 5.5
- \value PauCinHauScript Since Qt 5.5
- \value PhagsPaScript Since Qt 5.1
- \value PhoenicianScript Since Qt 5.1
- \value PollardPhoneticScript Since Qt 5.1
- \value PsalterPahlaviScript Since Qt 5.5
- \value RejangScript Since Qt 5.1
- \value RunicScript Since Qt 5.1
- \value SamaritanScript Since Qt 5.1
- \value SaurashtraScript Since Qt 5.1
- \value SharadaScript Since Qt 5.1
- \value ShavianScript Since Qt 5.1
- \value SiddhamScript Since Qt 5.5
- \value SignWritingScript Since Qt 5.7
+ \value [since 5.1] OrkhonScript
+ \value [since 5.7] OsageScript
+ \value [since 5.1] OsmanyaScript
+ \value [since 5.5] PahawhHmongScript
+ \value [since 5.5] PalmyreneScript
+ \value [since 5.5] PauCinHauScript
+ \value [since 5.1] PhagsPaScript
+ \value [since 5.1] PhoenicianScript
+ \value [since 5.1] PollardPhoneticScript
+ \value [since 5.5] PsalterPahlaviScript
+ \value [since 5.1] RejangScript
+ \value [since 5.1] RunicScript
+ \value [since 5.1] SamaritanScript
+ \value [since 5.1] SaurashtraScript
+ \value [since 5.1] SharadaScript
+ \value [since 5.1] ShavianScript
+ \value [since 5.5] SiddhamScript
+ \value [since 5.7] SignWritingScript
\value SimplifiedChineseScript same as SimplifiedHanScript
\value SimplifiedHanScript same as SimplifiedChineseScript
\value SinhalaScript
- \value SoraSompengScript Since Qt 5.1
- \value SundaneseScript Since Qt 5.1
- \value SylotiNagriScript Since Qt 5.1
+ \value [since 5.1] SoraSompengScript
+ \value [since 5.1] SundaneseScript
+ \value [since 5.1] SylotiNagriScript
\value SyriacScript
- \value TagalogScript Since Qt 5.1
- \value TagbanwaScript Since Qt 5.1
- \value TaiLeScript Since Qt 5.1
- \value TaiVietScript Since Qt 5.1
- \value TakriScript Since Qt 5.1
+ \value [since 5.1] TagalogScript
+ \value [since 5.1] TagbanwaScript
+ \value [since 5.1] TaiLeScript
+ \value [since 5.1] TaiVietScript
+ \value [since 5.1] TakriScript
\value TamilScript
- \value TangutScript Since Qt 5.7
+ \value [since 5.7] TangutScript
\value TeluguScript
\value ThaanaScript
\value ThaiScript
\value TibetanScript
\value TifinaghScript
- \value TirhutaScript Since Qt 5.5
+ \value [since 5.5] TirhutaScript
\value TraditionalChineseScript same as TraditionalHanScript
\value TraditionalHanScript same as TraditionalChineseScript
- \value UgariticScript Since Qt 5.1
+ \value [since 5.1] UgariticScript
\value VaiScript
- \value VarangKshitiScript Since Qt 5.5
+ \value [since 5.5] VarangKshitiScript
\value YiScript
\omitvalue LastScript
@@ -1162,7 +1153,7 @@
*/
/*!
- \fn QVariant QSystemLocale::query(QueryType type, QVariant in = QVariant()) const
+ \fn QVariant QSystemLocale::query(QueryType type, QVariant &&in = QVariant()) const
Generic query method for locale data. Provides indirection.
Denotes the \a type of the query
diff --git a/src/corelib/text/qlocale_data_p.h b/src/corelib/text/qlocale_data_p.h
index b0ed889762..6175398dd9 100644
--- a/src/corelib/text/qlocale_data_p.h
+++ b/src/corelib/text/qlocale_data_p.h
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2019 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2019 The Qt Company Ltd.
+// SPDX-License-Identifier: Unicode-3.0
#ifndef QLOCALE_DATA_P_H
#define QLOCALE_DATA_P_H
@@ -51,41 +15,57 @@
// We mean it.
//
-#include <array>
#include <QtCore/qendian.h>
-#include <QtCore/private/qglobal_p.h>
+#include <QtCore/private/qlocale_p.h>
+
+#include <array>
+#include <cstring> // std::memcmp
QT_BEGIN_NAMESPACE
-/* This part of the file isn't generated, but written by hand since
- * Unicode CLDR doesn't contain measurement system information.
- */
+/* This part of the file isn't generated, but written by hand. Unicode CLDR's
+ information about measurement systems doesn't say which to use by default in
+ each locale. Even if it did, adding another entry in every locale's row of
+ locale_data[] would take up much more memory than the small table below.
+*/
struct TerritoryLanguage
{
quint16 languageId;
quint16 territoryId;
QLocale::MeasurementSystem system;
};
-static const TerritoryLanguage ImperialMeasurementSystems[] = {
+static constexpr TerritoryLanguage ImperialMeasurementSystems[] = {
{ QLocale::English, QLocale::UnitedStates, QLocale::ImperialUSSystem },
{ QLocale::English, QLocale::UnitedStatesMinorOutlyingIslands, QLocale::ImperialUSSystem },
{ QLocale::Spanish, QLocale::UnitedStates, QLocale::ImperialUSSystem },
{ QLocale::Hawaiian, QLocale::UnitedStates, QLocale::ImperialUSSystem },
{ QLocale::English, QLocale::UnitedKingdom, QLocale::ImperialUKSystem }
};
-static const int ImperialMeasurementSystemsCount =
- sizeof(ImperialMeasurementSystems)/sizeof(ImperialMeasurementSystems[0]);
/*
Storage for alpha codes with length of up to 4 allowing efficient comparison.
*/
-struct alignas(uint32_t) AlphaCode {
- char code[4];
+struct AlphaCode {
+ constexpr AlphaCode(char c1 = 0, char c2 = 0, char c3 = 0)
+ : c1(c2m(c1)), c2(c2m(c2)), c3(c2m(c3)), reserved(0) { }
+
+ uint16_t c1: 5, c2:5, c3: 5, reserved:1;
+
+ bool isValid() const noexcept { return c1 != 0; }
+
+ std::array<char, 4> decode() const { return {m2c(c1), m2c(c2), m2c(c3), 0}; }
- bool isValid() const noexcept { return asU32() != 0; }
- bool operator==(AlphaCode other) const noexcept { return asU32() == other.asU32(); }
private:
- uint32_t asU32() const noexcept { return qFromUnaligned<uint32_t>(code); }
+ static constexpr uint16_t c2m(char c) { return c ? c - 'a' + 1 : 0; }
+ static constexpr char m2c (uint16_t c) { return c ? c + 'a' - 1 : 0; }
+
+ friend bool operator==(AlphaCode lhs, AlphaCode rhs) noexcept
+ {
+ static_assert(std::has_unique_object_representations_v<AlphaCode>,
+ "memcmp() cannot be used to implement equality on "
+ "types that don't have unique object representations");
+ return std::memcmp(&lhs, &rhs, sizeof(lhs)) == 0;
+ }
};
struct LanguageCodeEntry {
@@ -98,8 +78,8 @@ struct LanguageCodeEntry {
// GENERATED PART STARTS HERE
/*
- This part of the file was generated on 2021-12-03 from the
- Common Locale Data Repository v40
+ This part of the file was generated on 2024-04-04 from the
+ Common Locale Data Repository v44.1
http://www.unicode.org/cldr/
@@ -108,7 +88,7 @@ struct LanguageCodeEntry {
edited) CLDR data; see qtbase/util/locale_database/.
*/
-static const QLocaleId likely_subtags[] = {
+static constexpr QLocaleId likely_subtags[] = {
{ 2, 0, 0 }, { 2, 27, 90 }, // ab -> ab_Cyrl_GE
{ 3, 0, 0 }, { 3, 66, 77 }, // aa -> aa_Latn_ET
{ 4, 0, 0 }, { 4, 66, 216 }, // af -> af_Latn_ZA
@@ -254,6 +234,7 @@ static const QLocaleId likely_subtags[] = {
{ 112, 0, 0 }, { 112, 66, 111 }, // id -> id_Latn_ID
{ 113, 0, 0 }, { 113, 27, 193 }, // inh -> inh_Cyrl_RU
{ 114, 0, 0 }, { 114, 66, 258 }, // ia -> ia_Latn_001
+ { 115, 0, 0 }, { 115, 66, 75 }, // ie -> ie_Latn_EE
{ 116, 0, 0 }, { 116, 18, 41 }, // iu -> iu_Cans_CA
{ 117, 0, 0 }, { 117, 66, 248 }, // ik -> ik_Latn_US
{ 118, 0, 0 }, { 118, 66, 114 }, // ga -> ga_Latn_IE
@@ -269,7 +250,8 @@ static const QLocaleId likely_subtags[] = {
{ 128, 0, 0 }, { 128, 66, 124 }, // kln -> kln_Latn_KE
{ 129, 0, 0 }, { 129, 66, 124 }, // kam -> kam_Latn_KE
{ 130, 0, 0 }, { 130, 56, 110 }, // kn -> kn_Knda_IN
- { 131, 0, 0 }, { 131, 66, 0 }, // kr -> kr_Latn
+ { 131, 4, 0 }, { 131, 4, 169 }, // kr_Arab -> kr_Arab_NG
+ { 131, 0, 0 }, { 131, 66, 169 }, // kr -> kr_Latn_NG
{ 132, 0, 0 }, { 132, 4, 110 }, // ks -> ks_Arab_IN
{ 133, 0, 1 }, { 133, 4, 1 }, // kk_AF -> kk_Arab_AF
{ 133, 0, 50 }, { 133, 4, 50 }, // kk_CN -> kk_Arab_CN
@@ -370,6 +352,7 @@ static const QLocaleId likely_subtags[] = {
{ 213, 0, 0 }, { 213, 66, 243 }, // nyn -> nyn_Latn_UG
{ 214, 0, 0 }, { 214, 66, 84 }, // oc -> oc_Latn_FR
{ 215, 0, 0 }, { 215, 91, 110 }, // or -> or_Orya_IN
+ { 216, 0, 0 }, { 216, 18, 41 }, // oj -> oj_Cans_CA
{ 217, 0, 0 }, { 217, 92, 114 }, // sga -> sga_Ogam_IE
{ 218, 0, 0 }, { 218, 111, 225 }, // non -> non_Runr_SE
{ 219, 0, 0 }, { 219, 98, 112 }, // peo -> peo_Xpeo_IR
@@ -379,13 +362,20 @@ static const QLocaleId likely_subtags[] = {
{ 223, 109, 0 }, { 223, 109, 50 }, // pal_Phlp -> pal_Phlp_CN
{ 223, 0, 0 }, { 223, 50, 112 }, // pal -> pal_Phli_IR
{ 224, 0, 0 }, { 224, 66, 179 }, // pau -> pau_Latn_PW
- { 226, 0, 0 }, { 226, 66, 13 }, // pap -> pap_Latn_AW
+ { 225, 14, 0 }, { 225, 14, 110 }, // pi_Brah -> pi_Brah_IN
+ { 225, 29, 0 }, { 225, 29, 110 }, // pi_Deva -> pi_Deva_IN
+ { 225, 59, 0 }, { 225, 59, 110 }, // pi_Khar -> pi_Khar_IN
+ { 225, 60, 0 }, { 225, 60, 110 }, // pi_Khmr -> pi_Khmr_IN
+ { 225, 86, 0 }, { 225, 86, 110 }, // pi_Mymr -> pi_Mymr_IN
+ { 225, 133, 0 }, { 225, 133, 110 }, // pi_Thai -> pi_Thai_IN
+ { 225, 0, 0 }, { 225, 119, 110 }, // pi -> pi_Sinh_IN
+ { 226, 0, 0 }, { 226, 66, 62 }, // pap -> pap_Latn_CW
{ 227, 0, 0 }, { 227, 4, 1 }, // ps -> ps_Arab_AF
{ 228, 0, 0 }, { 228, 4, 112 }, // fa -> fa_Arab_IR
{ 229, 0, 0 }, { 229, 107, 132 }, // phn -> phn_Phnx_LB
{ 230, 0, 0 }, { 230, 66, 187 }, // pl -> pl_Latn_PL
{ 231, 0, 0 }, { 231, 66, 32 }, // pt -> pt_Latn_BR
- { 232, 0, 0 }, { 232, 66, 258 }, // prg -> prg_Latn_001
+ { 232, 0, 0 }, { 232, 66, 187 }, // prg -> prg_Latn_PL
{ 233, 0, 178 }, { 233, 4, 178 }, // pa_PK -> pa_Arab_PK
{ 233, 4, 0 }, { 233, 4, 178 }, // pa_Arab -> pa_Arab_PK
{ 233, 0, 0 }, { 233, 41, 110 }, // pa -> pa_Guru_IN
@@ -418,6 +408,7 @@ static const QLocaleId likely_subtags[] = {
{ 256, 0, 0 }, { 256, 66, 117 }, // scn -> scn_Latn_IT
{ 257, 0, 0 }, { 257, 66, 77 }, // sid -> sid_Latn_ET
{ 258, 0, 0 }, { 258, 66, 187 }, // szl -> szl_Latn_PL
+ { 259, 0, 110 }, { 259, 29, 110 }, // sd_IN -> sd_Deva_IN
{ 259, 29, 0 }, { 259, 29, 110 }, // sd_Deva -> sd_Deva_IN
{ 259, 61, 0 }, { 259, 61, 110 }, // sd_Khoj -> sd_Khoj_IN
{ 259, 62, 0 }, { 259, 62, 110 }, // sd_Sind -> sd_Sind_IN
@@ -493,253 +484,471 @@ static const QLocaleId likely_subtags[] = {
{ 320, 0, 0 }, { 320, 66, 206 }, // wo -> wo_Latn_SN
{ 321, 0, 0 }, { 321, 66, 216 }, // xh -> xh_Latn_ZA
{ 322, 0, 0 }, { 322, 66, 40 }, // yav -> yav_Latn_CM
- { 323, 0, 0 }, { 323, 47, 258 }, // yi -> yi_Hebr_001
+ { 323, 0, 0 }, { 323, 47, 244 }, // yi -> yi_Hebr_UA
{ 324, 0, 0 }, { 324, 66, 169 }, // yo -> yo_Latn_NG
{ 325, 0, 0 }, { 325, 66, 170 }, // dje -> dje_Latn_NE
{ 326, 0, 0 }, { 326, 66, 50 }, // za -> za_Latn_CN
{ 327, 0, 0 }, { 327, 66, 216 }, // zu -> zu_Latn_ZA
{ 328, 0, 0 }, { 328, 66, 32 }, // kgp -> kgp_Latn_BR
{ 329, 0, 0 }, { 329, 66, 32 }, // yrl -> yrl_Latn_BR
+ { 330, 0, 0 }, { 330, 29, 110 }, // bgc -> bgc_Deva_IN
+ { 331, 0, 0 }, { 331, 66, 91 }, // frr -> frr_Latn_DE
+ { 332, 0, 0 }, { 332, 29, 110 }, // raj -> raj_Deva_IN
+ { 333, 0, 0 }, { 333, 27, 193 }, // mdf -> mdf_Cyrl_RU
+ { 334, 0, 0 }, { 334, 66, 258 }, // tok -> tok_Latn_001
+ { 335, 0, 0 }, { 335, 66, 214 }, // pis -> pis_Latn_SB
+ { 336, 0, 0 }, { 336, 66, 169 }, // ann -> ann_Latn_NG
+ { 337, 0, 0 }, { 337, 4, 178 }, // bal -> bal_Arab_PK
+ { 338, 0, 0 }, { 338, 66, 117 }, // lij -> lij_Latn_IT
+ { 339, 0, 0 }, { 339, 142, 161 }, // rhg -> rhg_Rohg_MM
+ { 340, 0, 0 }, { 340, 4, 178 }, // trw -> trw_Arab_PK
+ { 341, 0, 0 }, { 341, 66, 25 }, // blo -> blo_Latn_BJ
+ { 342, 0, 0 }, { 342, 29, 110 }, // xnr -> xnr_Deva_IN
+ { 343, 0, 0 }, { 343, 66, 117 }, // vec -> vec_Latn_IT
+ { 0, 4, 1 }, { 228, 4, 1 }, // und_Arab_AF -> fa_Arab_AF
{ 0, 66, 1 }, { 299, 66, 1 }, // und_Latn_AF -> tk_Latn_AF
{ 0, 0, 1 }, { 228, 4, 1 }, // und_AF -> fa_Arab_AF
+ { 0, 66, 2 }, { 275, 66, 2 }, // und_Latn_AX -> sv_Latn_AX
{ 0, 0, 2 }, { 275, 66, 2 }, // und_AX -> sv_Latn_AX
{ 0, 27, 3 }, { 169, 27, 3 }, // und_Cyrl_AL -> mk_Cyrl_AL
+ { 0, 66, 3 }, { 9, 66, 3 }, // und_Latn_AL -> sq_Latn_AL
{ 0, 0, 3 }, { 9, 66, 3 }, // und_AL -> sq_Latn_AL
{ 0, 66, 4 }, { 85, 66, 4 }, // und_Latn_DZ -> fr_Latn_DZ
{ 0, 0, 4 }, { 14, 4, 4 }, // und_DZ -> ar_Arab_DZ
+ { 0, 66, 5 }, { 244, 66, 5 }, // und_Latn_AS -> sm_Latn_AS
{ 0, 0, 5 }, { 244, 66, 5 }, // und_AS -> sm_Latn_AS
+ { 0, 66, 6 }, { 48, 66, 6 }, // und_Latn_AD -> ca_Latn_AD
{ 0, 0, 6 }, { 48, 66, 6 }, // und_AD -> ca_Latn_AD
+ { 0, 66, 7 }, { 231, 66, 7 }, // und_Latn_AO -> pt_Latn_AO
{ 0, 0, 7 }, { 231, 66, 7 }, // und_AO -> pt_Latn_AO
- { 0, 0, 9 }, { 0, 66, 9 }, // und_AQ -> und_Latn_AQ
+ { 0, 0, 8 }, { 75, 66, 8 }, // und_AI -> en_Latn_AI
+ { 0, 0, 9 }, { 75, 66, 9 }, // und_AQ -> en_Latn_AQ
+ { 0, 0, 10 }, { 75, 66, 10 }, // und_AG -> en_Latn_AG
+ { 0, 66, 11 }, { 270, 66, 11 }, // und_Latn_AR -> es_Latn_AR
{ 0, 0, 11 }, { 270, 66, 11 }, // und_AR -> es_Latn_AR
{ 0, 66, 12 }, { 148, 66, 12 }, // und_Latn_AM -> ku_Latn_AM
{ 0, 0, 12 }, { 17, 5, 12 }, // und_AM -> hy_Armn_AM
+ { 0, 66, 13 }, { 72, 66, 13 }, // und_Latn_AW -> nl_Latn_AW
{ 0, 0, 13 }, { 72, 66, 13 }, // und_AW -> nl_Latn_AW
+ { 0, 0, 14 }, { 75, 66, 14 }, // und_AC -> en_Latn_AC
+ { 0, 0, 15 }, { 75, 66, 15 }, // und_AU -> en_Latn_AU
+ { 0, 66, 16 }, { 94, 66, 16 }, // und_Latn_AT -> de_Latn_AT
{ 0, 0, 16 }, { 94, 66, 16 }, // und_AT -> de_Latn_AT
+ { 0, 66, 17 }, { 25, 66, 17 }, // und_Latn_AZ -> az_Latn_AZ
{ 0, 0, 17 }, { 25, 66, 17 }, // und_AZ -> az_Latn_AZ
+ { 0, 0, 18 }, { 75, 66, 18 }, // und_BS -> en_Latn_BS
{ 0, 0, 19 }, { 14, 4, 19 }, // und_BH -> ar_Arab_BH
{ 0, 0, 20 }, { 30, 9, 20 }, // und_BD -> bn_Beng_BD
+ { 0, 0, 21 }, { 75, 66, 21 }, // und_BB -> en_Latn_BB
+ { 0, 27, 22 }, { 35, 27, 22 }, // und_Cyrl_BY -> be_Cyrl_BY
{ 0, 0, 22 }, { 35, 27, 22 }, // und_BY -> be_Cyrl_BY
+ { 0, 66, 23 }, { 72, 66, 23 }, // und_Latn_BE -> nl_Latn_BE
{ 0, 0, 23 }, { 72, 66, 23 }, // und_BE -> nl_Latn_BE
+ { 0, 0, 24 }, { 75, 66, 24 }, // und_BZ -> en_Latn_BZ
+ { 0, 66, 25 }, { 85, 66, 25 }, // und_Latn_BJ -> fr_Latn_BJ
{ 0, 0, 25 }, { 85, 66, 25 }, // und_BJ -> fr_Latn_BJ
+ { 0, 0, 26 }, { 75, 66, 26 }, // und_BM -> en_Latn_BM
{ 0, 29, 27 }, { 199, 29, 27 }, // und_Deva_BT -> ne_Deva_BT
+ { 0, 134, 27 }, { 73, 134, 27 }, // und_Tibt_BT -> dz_Tibt_BT
{ 0, 0, 27 }, { 73, 134, 27 }, // und_BT -> dz_Tibt_BT
+ { 0, 66, 28 }, { 270, 66, 28 }, // und_Latn_BO -> es_Latn_BO
{ 0, 0, 28 }, { 270, 66, 28 }, // und_BO -> es_Latn_BO
{ 0, 27, 29 }, { 252, 27, 29 }, // und_Cyrl_BA -> sr_Cyrl_BA
+ { 0, 66, 29 }, { 42, 66, 29 }, // und_Latn_BA -> bs_Latn_BA
{ 0, 0, 29 }, { 42, 66, 29 }, // und_BA -> bs_Latn_BA
- { 0, 0, 31 }, { 0, 66, 31 }, // und_BV -> und_Latn_BV
+ { 0, 0, 30 }, { 75, 66, 30 }, // und_BW -> en_Latn_BW
+ { 0, 0, 31 }, { 75, 66, 31 }, // und_BV -> en_Latn_BV
+ { 0, 66, 32 }, { 231, 66, 32 }, // und_Latn_BR -> pt_Latn_BR
{ 0, 0, 32 }, { 231, 66, 32 }, // und_BR -> pt_Latn_BR
+ { 0, 0, 33 }, { 75, 66, 33 }, // und_IO -> en_Latn_IO
+ { 0, 0, 34 }, { 75, 66, 34 }, // und_VG -> en_Latn_VG
+ { 0, 66, 35 }, { 176, 66, 35 }, // und_Latn_BN -> ms_Latn_BN
{ 0, 0, 35 }, { 176, 66, 35 }, // und_BN -> ms_Latn_BN
+ { 0, 27, 36 }, { 45, 27, 36 }, // und_Cyrl_BG -> bg_Cyrl_BG
{ 0, 0, 36 }, { 45, 27, 36 }, // und_BG -> bg_Cyrl_BG
+ { 0, 66, 37 }, { 85, 66, 37 }, // und_Latn_BF -> fr_Latn_BF
{ 0, 0, 37 }, { 85, 66, 37 }, // und_BF -> fr_Latn_BF
+ { 0, 66, 38 }, { 238, 66, 38 }, // und_Latn_BI -> rn_Latn_BI
{ 0, 0, 38 }, { 238, 66, 38 }, // und_BI -> rn_Latn_BI
{ 0, 0, 39 }, { 135, 60, 39 }, // und_KH -> km_Khmr_KH
+ { 0, 66, 40 }, { 85, 66, 40 }, // und_Latn_CM -> fr_Latn_CM
{ 0, 0, 40 }, { 85, 66, 40 }, // und_CM -> fr_Latn_CM
- { 0, 47, 41 }, { 323, 47, 41 }, // und_Hebr_CA -> yi_Hebr_CA
+ { 0, 137, 41 }, { 47, 137, 41 }, // und_Hant_CA -> yue_Hant_CA
+ { 0, 0, 41 }, { 75, 66, 41 }, // und_CA -> en_Latn_CA
+ { 0, 66, 42 }, { 270, 66, 42 }, // und_Latn_IC -> es_Latn_IC
{ 0, 0, 42 }, { 270, 66, 42 }, // und_IC -> es_Latn_IC
+ { 0, 66, 43 }, { 231, 66, 43 }, // und_Latn_CV -> pt_Latn_CV
{ 0, 0, 43 }, { 231, 66, 43 }, // und_CV -> pt_Latn_CV
+ { 0, 66, 44 }, { 226, 66, 44 }, // und_Latn_BQ -> pap_Latn_BQ
{ 0, 0, 44 }, { 226, 66, 44 }, // und_BQ -> pap_Latn_BQ
+ { 0, 0, 45 }, { 75, 66, 45 }, // und_KY -> en_Latn_KY
+ { 0, 66, 46 }, { 85, 66, 46 }, // und_Latn_CF -> fr_Latn_CF
{ 0, 0, 46 }, { 85, 66, 46 }, // und_CF -> fr_Latn_CF
+ { 0, 66, 47 }, { 270, 66, 47 }, // und_Latn_EA -> es_Latn_EA
{ 0, 0, 47 }, { 270, 66, 47 }, // und_EA -> es_Latn_EA
+ { 0, 66, 48 }, { 85, 66, 48 }, // und_Latn_TD -> fr_Latn_TD
{ 0, 0, 48 }, { 85, 66, 48 }, // und_TD -> fr_Latn_TD
+ { 0, 66, 49 }, { 270, 66, 49 }, // und_Latn_CL -> es_Latn_CL
{ 0, 0, 49 }, { 270, 66, 49 }, // und_CL -> es_Latn_CL
{ 0, 4, 50 }, { 306, 4, 50 }, // und_Arab_CN -> ug_Arab_CN
{ 0, 66, 50 }, { 326, 66, 50 }, // und_Latn_CN -> za_Latn_CN
{ 0, 0, 50 }, { 58, 118, 50 }, // und_CN -> zh_Hans_CN
- { 0, 0, 52 }, { 0, 66, 52 }, // und_CP -> und_Latn_CP
+ { 0, 0, 51 }, { 75, 66, 51 }, // und_CX -> en_Latn_CX
+ { 0, 0, 52 }, { 75, 66, 52 }, // und_CP -> en_Latn_CP
{ 0, 4, 53 }, { 176, 4, 53 }, // und_Arab_CC -> ms_Arab_CC
+ { 0, 0, 53 }, { 176, 4, 53 }, // und_CC -> ms_Arab_CC
+ { 0, 66, 54 }, { 270, 66, 54 }, // und_Latn_CO -> es_Latn_CO
{ 0, 0, 54 }, { 270, 66, 54 }, // und_CO -> es_Latn_CO
{ 0, 66, 55 }, { 85, 66, 55 }, // und_Latn_KM -> fr_Latn_KM
{ 0, 0, 55 }, { 14, 4, 55 }, // und_KM -> ar_Arab_KM
+ { 0, 66, 56 }, { 85, 66, 56 }, // und_Latn_CG -> fr_Latn_CG
{ 0, 0, 56 }, { 85, 66, 56 }, // und_CG -> fr_Latn_CG
+ { 0, 66, 57 }, { 273, 66, 57 }, // und_Latn_CD -> sw_Latn_CD
{ 0, 0, 57 }, { 273, 66, 57 }, // und_CD -> sw_Latn_CD
+ { 0, 0, 58 }, { 75, 66, 58 }, // und_CK -> en_Latn_CK
+ { 0, 66, 59 }, { 270, 66, 59 }, // und_Latn_CR -> es_Latn_CR
{ 0, 0, 59 }, { 270, 66, 59 }, // und_CR -> es_Latn_CR
+ { 0, 66, 60 }, { 66, 66, 60 }, // und_Latn_HR -> hr_Latn_HR
{ 0, 0, 60 }, { 66, 66, 60 }, // und_HR -> hr_Latn_HR
+ { 0, 66, 61 }, { 270, 66, 61 }, // und_Latn_CU -> es_Latn_CU
{ 0, 0, 61 }, { 270, 66, 61 }, // und_CU -> es_Latn_CU
+ { 0, 66, 62 }, { 226, 66, 62 }, // und_Latn_CW -> pap_Latn_CW
{ 0, 0, 62 }, { 226, 66, 62 }, // und_CW -> pap_Latn_CW
{ 0, 66, 63 }, { 298, 66, 63 }, // und_Latn_CY -> tr_Latn_CY
{ 0, 0, 63 }, { 96, 39, 63 }, // und_CY -> el_Grek_CY
+ { 0, 66, 64 }, { 67, 66, 64 }, // und_Latn_CZ -> cs_Latn_CZ
{ 0, 0, 64 }, { 67, 66, 64 }, // und_CZ -> cs_Latn_CZ
+ { 0, 66, 65 }, { 68, 66, 65 }, // und_Latn_DK -> da_Latn_DK
{ 0, 0, 65 }, { 68, 66, 65 }, // und_DK -> da_Latn_DK
+ { 0, 0, 66 }, { 75, 66, 66 }, // und_DG -> en_Latn_DG
+ { 0, 66, 67 }, { 3, 66, 67 }, // und_Latn_DJ -> aa_Latn_DJ
{ 0, 0, 67 }, { 3, 66, 67 }, // und_DJ -> aa_Latn_DJ
+ { 0, 0, 68 }, { 75, 66, 68 }, // und_DM -> en_Latn_DM
+ { 0, 66, 69 }, { 270, 66, 69 }, // und_Latn_DO -> es_Latn_DO
{ 0, 0, 69 }, { 270, 66, 69 }, // und_DO -> es_Latn_DO
+ { 0, 66, 70 }, { 270, 66, 70 }, // und_Latn_EC -> es_Latn_EC
{ 0, 0, 70 }, { 270, 66, 70 }, // und_EC -> es_Latn_EC
{ 0, 0, 71 }, { 14, 4, 71 }, // und_EG -> ar_Arab_EG
+ { 0, 66, 72 }, { 270, 66, 72 }, // und_Latn_SV -> es_Latn_SV
{ 0, 0, 72 }, { 270, 66, 72 }, // und_SV -> es_Latn_SV
+ { 0, 66, 73 }, { 270, 66, 73 }, // und_Latn_GQ -> es_Latn_GQ
{ 0, 0, 73 }, { 270, 66, 73 }, // und_GQ -> es_Latn_GQ
+ { 0, 33, 74 }, { 292, 33, 74 }, // und_Ethi_ER -> ti_Ethi_ER
{ 0, 0, 74 }, { 292, 33, 74 }, // und_ER -> ti_Ethi_ER
+ { 0, 66, 75 }, { 78, 66, 75 }, // und_Latn_EE -> et_Latn_EE
{ 0, 0, 75 }, { 78, 66, 75 }, // und_EE -> et_Latn_EE
+ { 0, 0, 76 }, { 75, 66, 76 }, // und_SZ -> en_Latn_SZ
{ 0, 66, 77 }, { 75, 66, 77 }, // und_Latn_ET -> en_Latn_ET
{ 0, 0, 77 }, { 11, 33, 77 }, // und_ET -> am_Ethi_ET
- { 0, 0, 78 }, { 239, 27, 193 }, // und_150 -> ru_Cyrl_RU
- { 0, 0, 79 }, { 75, 66, 114 }, // und_EU -> en_Latn_IE
+ { 0, 0, 80 }, { 75, 66, 80 }, // und_FK -> en_Latn_FK
+ { 0, 66, 81 }, { 81, 66, 81 }, // und_Latn_FO -> fo_Latn_FO
{ 0, 0, 81 }, { 81, 66, 81 }, // und_FO -> fo_Latn_FO
+ { 0, 0, 82 }, { 75, 66, 82 }, // und_FJ -> en_Latn_FJ
+ { 0, 66, 83 }, { 84, 66, 83 }, // und_Latn_FI -> fi_Latn_FI
{ 0, 0, 83 }, { 84, 66, 83 }, // und_FI -> fi_Latn_FI
+ { 0, 66, 84 }, { 85, 66, 84 }, // und_Latn_FR -> fr_Latn_FR
{ 0, 0, 84 }, { 85, 66, 84 }, // und_FR -> fr_Latn_FR
+ { 0, 66, 85 }, { 85, 66, 85 }, // und_Latn_GF -> fr_Latn_GF
{ 0, 0, 85 }, { 85, 66, 85 }, // und_GF -> fr_Latn_GF
+ { 0, 66, 86 }, { 85, 66, 86 }, // und_Latn_PF -> fr_Latn_PF
{ 0, 0, 86 }, { 85, 66, 86 }, // und_PF -> fr_Latn_PF
+ { 0, 66, 87 }, { 85, 66, 87 }, // und_Latn_TF -> fr_Latn_TF
{ 0, 0, 87 }, { 85, 66, 87 }, // und_TF -> fr_Latn_TF
+ { 0, 66, 88 }, { 85, 66, 88 }, // und_Latn_GA -> fr_Latn_GA
{ 0, 0, 88 }, { 85, 66, 88 }, // und_GA -> fr_Latn_GA
- { 0, 27, 90 }, { 222, 27, 90 }, // und_Cyrl_GE -> os_Cyrl_GE
+ { 0, 0, 89 }, { 75, 66, 89 }, // und_GM -> en_Latn_GM
+ { 0, 27, 90 }, { 2, 27, 90 }, // und_Cyrl_GE -> ab_Cyrl_GE
{ 0, 66, 90 }, { 148, 66, 90 }, // und_Latn_GE -> ku_Latn_GE
{ 0, 0, 90 }, { 93, 35, 90 }, // und_GE -> ka_Geor_GE
+ { 0, 66, 91 }, { 94, 66, 91 }, // und_Latn_DE -> de_Latn_DE
{ 0, 0, 91 }, { 94, 66, 91 }, // und_DE -> de_Latn_DE
+ { 0, 66, 92 }, { 6, 66, 92 }, // und_Latn_GH -> ak_Latn_GH
{ 0, 0, 92 }, { 6, 66, 92 }, // und_GH -> ak_Latn_GH
+ { 0, 0, 93 }, { 75, 66, 93 }, // und_GI -> en_Latn_GI
{ 0, 27, 94 }, { 169, 27, 94 }, // und_Cyrl_GR -> mk_Cyrl_GR
{ 0, 0, 94 }, { 96, 39, 94 }, // und_GR -> el_Grek_GR
+ { 0, 66, 95 }, { 127, 66, 95 }, // und_Latn_GL -> kl_Latn_GL
{ 0, 0, 95 }, { 127, 66, 95 }, // und_GL -> kl_Latn_GL
+ { 0, 0, 96 }, { 75, 66, 96 }, // und_GD -> en_Latn_GD
+ { 0, 66, 97 }, { 85, 66, 97 }, // und_Latn_GP -> fr_Latn_GP
{ 0, 0, 97 }, { 85, 66, 97 }, // und_GP -> fr_Latn_GP
+ { 0, 0, 98 }, { 75, 66, 98 }, // und_GU -> en_Latn_GU
+ { 0, 66, 99 }, { 270, 66, 99 }, // und_Latn_GT -> es_Latn_GT
{ 0, 0, 99 }, { 270, 66, 99 }, // und_GT -> es_Latn_GT
+ { 0, 0, 100 }, { 75, 66, 100 }, // und_GG -> en_Latn_GG
+ { 0, 66, 101 }, { 231, 66, 101 }, // und_Latn_GW -> pt_Latn_GW
{ 0, 0, 101 }, { 231, 66, 101 }, // und_GW -> pt_Latn_GW
+ { 0, 66, 102 }, { 85, 66, 102 }, // und_Latn_GN -> fr_Latn_GN
{ 0, 0, 102 }, { 85, 66, 102 }, // und_GN -> fr_Latn_GN
+ { 0, 0, 103 }, { 75, 66, 103 }, // und_GY -> en_Latn_GY
+ { 0, 66, 104 }, { 100, 66, 104 }, // und_Latn_HT -> ht_Latn_HT
{ 0, 0, 104 }, { 100, 66, 104 }, // und_HT -> ht_Latn_HT
- { 0, 0, 105 }, { 0, 66, 105 }, // und_HM -> und_Latn_HM
+ { 0, 0, 105 }, { 75, 66, 105 }, // und_HM -> en_Latn_HM
+ { 0, 66, 106 }, { 270, 66, 106 }, // und_Latn_HN -> es_Latn_HN
{ 0, 0, 106 }, { 270, 66, 106 }, // und_HN -> es_Latn_HN
{ 0, 0, 107 }, { 58, 137, 107 }, // und_HK -> zh_Hant_HK
+ { 0, 66, 108 }, { 107, 66, 108 }, // und_Latn_HU -> hu_Latn_HU
{ 0, 0, 108 }, { 107, 66, 108 }, // und_HU -> hu_Latn_HU
+ { 0, 66, 109 }, { 108, 66, 109 }, // und_Latn_IS -> is_Latn_IS
{ 0, 0, 109 }, { 108, 66, 109 }, // und_IS -> is_Latn_IS
{ 0, 4, 110 }, { 305, 4, 110 }, // und_Arab_IN -> ur_Arab_IN
{ 0, 0, 110 }, { 105, 29, 110 }, // und_IN -> hi_Deva_IN
{ 0, 4, 111 }, { 176, 4, 111 }, // und_Arab_ID -> ms_Arab_ID
+ { 0, 66, 111 }, { 112, 66, 111 }, // und_Latn_ID -> id_Latn_ID
{ 0, 0, 111 }, { 112, 66, 111 }, // und_ID -> id_Latn_ID
+ { 0, 4, 112 }, { 228, 4, 112 }, // und_Arab_IR -> fa_Arab_IR
{ 0, 66, 112 }, { 299, 66, 112 }, // und_Latn_IR -> tk_Latn_IR
{ 0, 0, 112 }, { 228, 4, 112 }, // und_IR -> fa_Arab_IR
{ 0, 0, 113 }, { 14, 4, 113 }, // und_IQ -> ar_Arab_IQ
+ { 0, 0, 114 }, { 75, 66, 114 }, // und_IE -> en_Latn_IE
+ { 0, 0, 115 }, { 75, 66, 115 }, // und_IM -> en_Latn_IM
{ 0, 0, 116 }, { 103, 47, 116 }, // und_IL -> he_Hebr_IL
+ { 0, 66, 117 }, { 119, 66, 117 }, // und_Latn_IT -> it_Latn_IT
{ 0, 0, 117 }, { 119, 66, 117 }, // und_IT -> it_Latn_IT
+ { 0, 66, 118 }, { 85, 66, 118 }, // und_Latn_CI -> fr_Latn_CI
{ 0, 0, 118 }, { 85, 66, 118 }, // und_CI -> fr_Latn_CI
+ { 0, 0, 119 }, { 75, 66, 119 }, // und_JM -> en_Latn_JM
{ 0, 0, 120 }, { 120, 53, 120 }, // und_JP -> ja_Jpan_JP
+ { 0, 0, 121 }, { 75, 66, 121 }, // und_JE -> en_Latn_JE
{ 0, 0, 122 }, { 14, 4, 122 }, // und_JO -> ar_Arab_JO
{ 0, 0, 123 }, { 239, 27, 123 }, // und_KZ -> ru_Cyrl_KZ
+ { 0, 66, 124 }, { 273, 66, 124 }, // und_Latn_KE -> sw_Latn_KE
{ 0, 0, 124 }, { 273, 66, 124 }, // und_KE -> sw_Latn_KE
+ { 0, 0, 125 }, { 75, 66, 125 }, // und_KI -> en_Latn_KI
{ 0, 27, 126 }, { 252, 27, 126 }, // und_Cyrl_XK -> sr_Cyrl_XK
+ { 0, 66, 126 }, { 9, 66, 126 }, // und_Latn_XK -> sq_Latn_XK
{ 0, 0, 126 }, { 9, 66, 126 }, // und_XK -> sq_Latn_XK
{ 0, 0, 127 }, { 14, 4, 127 }, // und_KW -> ar_Arab_KW
+ { 0, 27, 128 }, { 150, 27, 128 }, // und_Cyrl_KG -> ky_Cyrl_KG
{ 0, 0, 128 }, { 150, 27, 128 }, // und_KG -> ky_Cyrl_KG
{ 0, 0, 129 }, { 153, 65, 129 }, // und_LA -> lo_Laoo_LA
+ { 0, 66, 130 }, { 270, 66, 130 }, // und_Latn_419 -> es_Latn_419
{ 0, 0, 130 }, { 270, 66, 130 }, // und_419 -> es_Latn_419
+ { 0, 66, 131 }, { 155, 66, 131 }, // und_Latn_LV -> lv_Latn_LV
{ 0, 0, 131 }, { 155, 66, 131 }, // und_LV -> lv_Latn_LV
{ 0, 0, 132 }, { 14, 4, 132 }, // und_LB -> ar_Arab_LB
+ { 0, 66, 133 }, { 268, 66, 133 }, // und_Latn_LS -> st_Latn_LS
{ 0, 0, 133 }, { 268, 66, 133 }, // und_LS -> st_Latn_LS
+ { 0, 0, 134 }, { 75, 66, 134 }, // und_LR -> en_Latn_LR
{ 0, 0, 135 }, { 14, 4, 135 }, // und_LY -> ar_Arab_LY
+ { 0, 66, 136 }, { 94, 66, 136 }, // und_Latn_LI -> de_Latn_LI
{ 0, 0, 136 }, { 94, 66, 136 }, // und_LI -> de_Latn_LI
+ { 0, 66, 137 }, { 160, 66, 137 }, // und_Latn_LT -> lt_Latn_LT
{ 0, 0, 137 }, { 160, 66, 137 }, // und_LT -> lt_Latn_LT
+ { 0, 66, 138 }, { 85, 66, 138 }, // und_Latn_LU -> fr_Latn_LU
{ 0, 0, 138 }, { 85, 66, 138 }, // und_LU -> fr_Latn_LU
{ 0, 66, 139 }, { 231, 66, 139 }, // und_Latn_MO -> pt_Latn_MO
{ 0, 0, 139 }, { 58, 137, 139 }, // und_MO -> zh_Hant_MO
+ { 0, 27, 140 }, { 169, 27, 140 }, // und_Cyrl_MK -> mk_Cyrl_MK
{ 0, 66, 140 }, { 9, 66, 140 }, // und_Latn_MK -> sq_Latn_MK
{ 0, 0, 140 }, { 169, 27, 140 }, // und_MK -> mk_Cyrl_MK
+ { 0, 66, 141 }, { 174, 66, 141 }, // und_Latn_MG -> mg_Latn_MG
{ 0, 0, 141 }, { 174, 66, 141 }, // und_MG -> mg_Latn_MG
+ { 0, 0, 142 }, { 75, 66, 142 }, // und_MW -> en_Latn_MW
+ { 0, 66, 143 }, { 176, 66, 143 }, // und_Latn_MY -> ms_Latn_MY
{ 0, 0, 143 }, { 176, 66, 143 }, // und_MY -> ms_Latn_MY
{ 0, 0, 144 }, { 69, 132, 144 }, // und_MV -> dv_Thaa_MV
+ { 0, 66, 145 }, { 28, 66, 145 }, // und_Latn_ML -> bm_Latn_ML
{ 0, 0, 145 }, { 28, 66, 145 }, // und_ML -> bm_Latn_ML
+ { 0, 66, 146 }, { 177, 66, 146 }, // und_Latn_MT -> mt_Latn_MT
{ 0, 0, 146 }, { 177, 66, 146 }, // und_MT -> mt_Latn_MT
+ { 0, 0, 147 }, { 75, 66, 147 }, // und_MH -> en_Latn_MH
+ { 0, 66, 148 }, { 85, 66, 148 }, // und_Latn_MQ -> fr_Latn_MQ
{ 0, 0, 148 }, { 85, 66, 148 }, // und_MQ -> fr_Latn_MQ
{ 0, 66, 149 }, { 85, 66, 149 }, // und_Latn_MR -> fr_Latn_MR
{ 0, 0, 149 }, { 14, 4, 149 }, // und_MR -> ar_Arab_MR
{ 0, 4, 150 }, { 305, 4, 150 }, // und_Arab_MU -> ur_Arab_MU
{ 0, 29, 150 }, { 38, 29, 150 }, // und_Deva_MU -> bho_Deva_MU
+ { 0, 66, 150 }, { 192, 66, 150 }, // und_Latn_MU -> mfe_Latn_MU
{ 0, 0, 150 }, { 192, 66, 150 }, // und_MU -> mfe_Latn_MU
+ { 0, 66, 151 }, { 85, 66, 151 }, // und_Latn_YT -> fr_Latn_YT
{ 0, 0, 151 }, { 85, 66, 151 }, // und_YT -> fr_Latn_YT
+ { 0, 66, 152 }, { 270, 66, 152 }, // und_Latn_MX -> es_Latn_MX
{ 0, 0, 152 }, { 270, 66, 152 }, // und_MX -> es_Latn_MX
+ { 0, 0, 153 }, { 75, 66, 153 }, // und_FM -> en_Latn_FM
{ 0, 27, 154 }, { 303, 27, 154 }, // und_Cyrl_MD -> uk_Cyrl_MD
+ { 0, 66, 154 }, { 235, 66, 154 }, // und_Latn_MD -> ro_Latn_MD
{ 0, 0, 154 }, { 235, 66, 154 }, // und_MD -> ro_Latn_MD
+ { 0, 66, 155 }, { 85, 66, 155 }, // und_Latn_MC -> fr_Latn_MC
{ 0, 0, 155 }, { 85, 66, 155 }, // und_MC -> fr_Latn_MC
{ 0, 4, 156 }, { 133, 4, 156 }, // und_Arab_MN -> kk_Arab_MN
+ { 0, 27, 156 }, { 191, 27, 156 }, // und_Cyrl_MN -> mn_Cyrl_MN
{ 0, 0, 156 }, { 191, 27, 156 }, // und_MN -> mn_Cyrl_MN
+ { 0, 66, 157 }, { 252, 66, 157 }, // und_Latn_ME -> sr_Latn_ME
{ 0, 0, 157 }, { 252, 66, 157 }, // und_ME -> sr_Latn_ME
+ { 0, 0, 158 }, { 75, 66, 158 }, // und_MS -> en_Latn_MS
{ 0, 66, 159 }, { 85, 66, 159 }, // und_Latn_MA -> fr_Latn_MA
{ 0, 0, 159 }, { 14, 4, 159 }, // und_MA -> ar_Arab_MA
+ { 0, 66, 160 }, { 231, 66, 160 }, // und_Latn_MZ -> pt_Latn_MZ
{ 0, 0, 160 }, { 231, 66, 160 }, // und_MZ -> pt_Latn_MZ
+ { 0, 4, 161 }, { 339, 4, 161 }, // und_Arab_MM -> rhg_Arab_MM
{ 0, 0, 161 }, { 46, 86, 161 }, // und_MM -> my_Mymr_MM
+ { 0, 66, 162 }, { 4, 66, 162 }, // und_Latn_NA -> af_Latn_NA
{ 0, 0, 162 }, { 4, 66, 162 }, // und_NA -> af_Latn_NA
+ { 0, 0, 163 }, { 75, 66, 163 }, // und_NR -> en_Latn_NR
+ { 0, 29, 164 }, { 199, 29, 164 }, // und_Deva_NP -> ne_Deva_NP
{ 0, 0, 164 }, { 199, 29, 164 }, // und_NP -> ne_Deva_NP
+ { 0, 66, 165 }, { 72, 66, 165 }, // und_Latn_NL -> nl_Latn_NL
{ 0, 0, 165 }, { 72, 66, 165 }, // und_NL -> nl_Latn_NL
+ { 0, 66, 166 }, { 85, 66, 166 }, // und_Latn_NC -> fr_Latn_NC
{ 0, 0, 166 }, { 85, 66, 166 }, // und_NC -> fr_Latn_NC
+ { 0, 0, 167 }, { 75, 66, 167 }, // und_NZ -> en_Latn_NZ
+ { 0, 66, 168 }, { 270, 66, 168 }, // und_Latn_NI -> es_Latn_NI
{ 0, 0, 168 }, { 270, 66, 168 }, // und_NI -> es_Latn_NI
{ 0, 4, 169 }, { 101, 4, 169 }, // und_Arab_NG -> ha_Arab_NG
+ { 0, 0, 169 }, { 75, 66, 169 }, // und_NG -> en_Latn_NG
+ { 0, 66, 170 }, { 101, 66, 170 }, // und_Latn_NE -> ha_Latn_NE
{ 0, 0, 170 }, { 101, 66, 170 }, // und_NE -> ha_Latn_NE
+ { 0, 0, 171 }, { 75, 66, 171 }, // und_NU -> en_Latn_NU
+ { 0, 0, 172 }, { 75, 66, 172 }, // und_NF -> en_Latn_NF
+ { 0, 0, 173 }, { 75, 66, 173 }, // und_MP -> en_Latn_MP
{ 0, 0, 174 }, { 142, 63, 174 }, // und_KP -> ko_Kore_KP
+ { 0, 66, 175 }, { 209, 66, 175 }, // und_Latn_NO -> nb_Latn_NO
{ 0, 0, 175 }, { 209, 66, 175 }, // und_NO -> nb_Latn_NO
{ 0, 0, 176 }, { 14, 4, 176 }, // und_OM -> ar_Arab_OM
- { 0, 0, 177 }, { 75, 66, 66 }, // und_QO -> en_Latn_DG
{ 0, 4, 178 }, { 305, 4, 178 }, // und_Arab_PK -> ur_Arab_PK
{ 0, 0, 178 }, { 305, 4, 178 }, // und_PK -> ur_Arab_PK
+ { 0, 66, 179 }, { 224, 66, 179 }, // und_Latn_PW -> pau_Latn_PW
{ 0, 0, 179 }, { 224, 66, 179 }, // und_PW -> pau_Latn_PW
{ 0, 0, 180 }, { 14, 4, 180 }, // und_PS -> ar_Arab_PS
+ { 0, 66, 181 }, { 270, 66, 181 }, // und_Latn_PA -> es_Latn_PA
{ 0, 0, 181 }, { 270, 66, 181 }, // und_PA -> es_Latn_PA
+ { 0, 66, 182 }, { 294, 66, 182 }, // und_Latn_PG -> tpi_Latn_PG
{ 0, 0, 182 }, { 294, 66, 182 }, // und_PG -> tpi_Latn_PG
+ { 0, 66, 183 }, { 97, 66, 183 }, // und_Latn_PY -> gn_Latn_PY
{ 0, 0, 183 }, { 97, 66, 183 }, // und_PY -> gn_Latn_PY
+ { 0, 66, 184 }, { 270, 66, 184 }, // und_Latn_PE -> es_Latn_PE
{ 0, 0, 184 }, { 270, 66, 184 }, // und_PE -> es_Latn_PE
+ { 0, 66, 185 }, { 83, 66, 185 }, // und_Latn_PH -> fil_Latn_PH
{ 0, 0, 185 }, { 83, 66, 185 }, // und_PH -> fil_Latn_PH
+ { 0, 0, 186 }, { 75, 66, 186 }, // und_PN -> en_Latn_PN
+ { 0, 66, 187 }, { 230, 66, 187 }, // und_Latn_PL -> pl_Latn_PL
{ 0, 0, 187 }, { 230, 66, 187 }, // und_PL -> pl_Latn_PL
+ { 0, 66, 188 }, { 231, 66, 188 }, // und_Latn_PT -> pt_Latn_PT
{ 0, 0, 188 }, { 231, 66, 188 }, // und_PT -> pt_Latn_PT
+ { 0, 66, 189 }, { 270, 66, 189 }, // und_Latn_PR -> es_Latn_PR
{ 0, 0, 189 }, { 270, 66, 189 }, // und_PR -> es_Latn_PR
{ 0, 0, 190 }, { 14, 4, 190 }, // und_QA -> ar_Arab_QA
+ { 0, 66, 191 }, { 85, 66, 191 }, // und_Latn_RE -> fr_Latn_RE
{ 0, 0, 191 }, { 85, 66, 191 }, // und_RE -> fr_Latn_RE
{ 0, 27, 192 }, { 45, 27, 192 }, // und_Cyrl_RO -> bg_Cyrl_RO
+ { 0, 66, 192 }, { 235, 66, 192 }, // und_Latn_RO -> ro_Latn_RO
{ 0, 0, 192 }, { 235, 66, 192 }, // und_RO -> ro_Latn_RO
{ 0, 0, 193 }, { 239, 27, 193 }, // und_RU -> ru_Cyrl_RU
+ { 0, 66, 194 }, { 138, 66, 194 }, // und_Latn_RW -> rw_Latn_RW
{ 0, 0, 194 }, { 138, 66, 194 }, // und_RW -> rw_Latn_RW
+ { 0, 66, 195 }, { 85, 66, 195 }, // und_Latn_BL -> fr_Latn_BL
{ 0, 0, 195 }, { 85, 66, 195 }, // und_BL -> fr_Latn_BL
+ { 0, 0, 196 }, { 75, 66, 196 }, // und_SH -> en_Latn_SH
+ { 0, 0, 197 }, { 75, 66, 197 }, // und_KN -> en_Latn_KN
+ { 0, 0, 198 }, { 75, 66, 198 }, // und_LC -> en_Latn_LC
+ { 0, 66, 199 }, { 85, 66, 199 }, // und_Latn_MF -> fr_Latn_MF
{ 0, 0, 199 }, { 85, 66, 199 }, // und_MF -> fr_Latn_MF
+ { 0, 66, 200 }, { 85, 66, 200 }, // und_Latn_PM -> fr_Latn_PM
{ 0, 0, 200 }, { 85, 66, 200 }, // und_PM -> fr_Latn_PM
+ { 0, 0, 201 }, { 75, 66, 201 }, // und_VC -> en_Latn_VC
+ { 0, 66, 202 }, { 244, 66, 202 }, // und_Latn_WS -> sm_Latn_WS
{ 0, 0, 202 }, { 244, 66, 202 }, // und_WS -> sm_Latn_WS
+ { 0, 66, 203 }, { 119, 66, 203 }, // und_Latn_SM -> it_Latn_SM
{ 0, 0, 203 }, { 119, 66, 203 }, // und_SM -> it_Latn_SM
+ { 0, 66, 204 }, { 231, 66, 204 }, // und_Latn_ST -> pt_Latn_ST
{ 0, 0, 204 }, { 231, 66, 204 }, // und_ST -> pt_Latn_ST
{ 0, 0, 205 }, { 14, 4, 205 }, // und_SA -> ar_Arab_SA
+ { 0, 66, 206 }, { 85, 66, 206 }, // und_Latn_SN -> fr_Latn_SN
{ 0, 0, 206 }, { 85, 66, 206 }, // und_SN -> fr_Latn_SN
+ { 0, 27, 207 }, { 252, 27, 207 }, // und_Cyrl_RS -> sr_Cyrl_RS
+ { 0, 66, 207 }, { 252, 66, 207 }, // und_Latn_RS -> sr_Latn_RS
{ 0, 0, 207 }, { 252, 27, 207 }, // und_RS -> sr_Cyrl_RS
+ { 0, 66, 208 }, { 85, 66, 208 }, // und_Latn_SC -> fr_Latn_SC
{ 0, 0, 208 }, { 85, 66, 208 }, // und_SC -> fr_Latn_SC
+ { 0, 0, 210 }, { 75, 66, 210 }, // und_SG -> en_Latn_SG
+ { 0, 0, 211 }, { 75, 66, 211 }, // und_SX -> en_Latn_SX
{ 0, 27, 212 }, { 303, 27, 212 }, // und_Cyrl_SK -> uk_Cyrl_SK
+ { 0, 66, 212 }, { 262, 66, 212 }, // und_Latn_SK -> sk_Latn_SK
{ 0, 0, 212 }, { 262, 66, 212 }, // und_SK -> sk_Latn_SK
+ { 0, 66, 213 }, { 263, 66, 213 }, // und_Latn_SI -> sl_Latn_SI
{ 0, 0, 213 }, { 263, 66, 213 }, // und_SI -> sl_Latn_SI
+ { 0, 0, 214 }, { 75, 66, 214 }, // und_SB -> en_Latn_SB
+ { 0, 66, 215 }, { 265, 66, 215 }, // und_Latn_SO -> so_Latn_SO
{ 0, 0, 215 }, { 265, 66, 215 }, // und_SO -> so_Latn_SO
- { 0, 0, 217 }, { 0, 66, 217 }, // und_GS -> und_Latn_GS
+ { 0, 0, 216 }, { 75, 66, 216 }, // und_ZA -> en_Latn_ZA
+ { 0, 0, 217 }, { 75, 66, 217 }, // und_GS -> en_Latn_GS
{ 0, 0, 218 }, { 142, 63, 218 }, // und_KR -> ko_Kore_KR
+ { 0, 0, 219 }, { 14, 4, 219 }, // und_SS -> ar_Arab_SS
+ { 0, 66, 220 }, { 270, 66, 220 }, // und_Latn_ES -> es_Latn_ES
{ 0, 0, 220 }, { 270, 66, 220 }, // und_ES -> es_Latn_ES
{ 0, 0, 221 }, { 260, 119, 221 }, // und_LK -> si_Sinh_LK
{ 0, 0, 222 }, { 14, 4, 222 }, // und_SD -> ar_Arab_SD
+ { 0, 66, 223 }, { 72, 66, 223 }, // und_Latn_SR -> nl_Latn_SR
{ 0, 0, 223 }, { 72, 66, 223 }, // und_SR -> nl_Latn_SR
+ { 0, 66, 224 }, { 209, 66, 224 }, // und_Latn_SJ -> nb_Latn_SJ
{ 0, 0, 224 }, { 209, 66, 224 }, // und_SJ -> nb_Latn_SJ
{ 0, 47, 225 }, { 323, 47, 225 }, // und_Hebr_SE -> yi_Hebr_SE
+ { 0, 66, 225 }, { 275, 66, 225 }, // und_Latn_SE -> sv_Latn_SE
{ 0, 0, 225 }, { 275, 66, 225 }, // und_SE -> sv_Latn_SE
+ { 0, 66, 226 }, { 94, 66, 226 }, // und_Latn_CH -> de_Latn_CH
{ 0, 0, 226 }, { 94, 66, 226 }, // und_CH -> de_Latn_CH
{ 0, 66, 227 }, { 85, 66, 227 }, // und_Latn_SY -> fr_Latn_SY
{ 0, 0, 227 }, { 14, 4, 227 }, // und_SY -> ar_Arab_SY
{ 0, 66, 228 }, { 284, 66, 228 }, // und_Latn_TW -> trv_Latn_TW
{ 0, 0, 228 }, { 58, 137, 228 }, // und_TW -> zh_Hant_TW
{ 0, 4, 229 }, { 228, 4, 229 }, // und_Arab_TJ -> fa_Arab_TJ
+ { 0, 27, 229 }, { 282, 27, 229 }, // und_Cyrl_TJ -> tg_Cyrl_TJ
{ 0, 0, 229 }, { 282, 27, 229 }, // und_TJ -> tg_Cyrl_TJ
+ { 0, 66, 230 }, { 273, 66, 230 }, // und_Latn_TZ -> sw_Latn_TZ
{ 0, 0, 230 }, { 273, 66, 230 }, // und_TZ -> sw_Latn_TZ
{ 0, 0, 231 }, { 289, 133, 231 }, // und_TH -> th_Thai_TH
+ { 0, 66, 232 }, { 231, 66, 232 }, // und_Latn_TL -> pt_Latn_TL
{ 0, 0, 232 }, { 231, 66, 232 }, // und_TL -> pt_Latn_TL
+ { 0, 66, 233 }, { 85, 66, 233 }, // und_Latn_TG -> fr_Latn_TG
{ 0, 0, 233 }, { 85, 66, 233 }, // und_TG -> fr_Latn_TG
+ { 0, 66, 234 }, { 293, 66, 234 }, // und_Latn_TK -> tkl_Latn_TK
{ 0, 0, 234 }, { 293, 66, 234 }, // und_TK -> tkl_Latn_TK
+ { 0, 66, 235 }, { 295, 66, 235 }, // und_Latn_TO -> to_Latn_TO
{ 0, 0, 235 }, { 295, 66, 235 }, // und_TO -> to_Latn_TO
+ { 0, 0, 236 }, { 75, 66, 236 }, // und_TT -> en_Latn_TT
+ { 0, 0, 237 }, { 75, 66, 237 }, // und_TA -> en_Latn_TA
{ 0, 66, 238 }, { 85, 66, 238 }, // und_Latn_TN -> fr_Latn_TN
{ 0, 0, 238 }, { 14, 4, 238 }, // und_TN -> ar_Arab_TN
- { 0, 4, 239 }, { 25, 4, 239 }, // und_Arab_TR -> az_Arab_TR
+ { 0, 66, 239 }, { 298, 66, 239 }, // und_Latn_TR -> tr_Latn_TR
{ 0, 0, 239 }, { 298, 66, 239 }, // und_TR -> tr_Latn_TR
+ { 0, 66, 240 }, { 299, 66, 240 }, // und_Latn_TM -> tk_Latn_TM
{ 0, 0, 240 }, { 299, 66, 240 }, // und_TM -> tk_Latn_TM
+ { 0, 0, 241 }, { 75, 66, 241 }, // und_TC -> en_Latn_TC
+ { 0, 66, 242 }, { 300, 66, 242 }, // und_Latn_TV -> tvl_Latn_TV
{ 0, 0, 242 }, { 300, 66, 242 }, // und_TV -> tvl_Latn_TV
+ { 0, 66, 243 }, { 273, 66, 243 }, // und_Latn_UG -> sw_Latn_UG
{ 0, 0, 243 }, { 273, 66, 243 }, // und_UG -> sw_Latn_UG
+ { 0, 27, 244 }, { 303, 27, 244 }, // und_Cyrl_UA -> uk_Cyrl_UA
{ 0, 47, 244 }, { 323, 47, 244 }, // und_Hebr_UA -> yi_Hebr_UA
{ 0, 66, 244 }, { 230, 66, 244 }, // und_Latn_UA -> pl_Latn_UA
{ 0, 0, 244 }, { 303, 27, 244 }, // und_UA -> uk_Cyrl_UA
{ 0, 0, 245 }, { 14, 4, 245 }, // und_AE -> ar_Arab_AE
- { 0, 4, 246 }, { 132, 4, 246 }, // und_Arab_GB -> ks_Arab_GB
- { 0, 47, 246 }, { 323, 47, 246 }, // und_Hebr_GB -> yi_Hebr_GB
+ { 0, 4, 246 }, { 305, 4, 246 }, // und_Arab_GB -> ur_Arab_GB
+ { 0, 0, 246 }, { 75, 66, 246 }, // und_GB -> en_Latn_GB
+ { 0, 0, 247 }, { 75, 66, 247 }, // und_UM -> en_Latn_UM
{ 0, 47, 248 }, { 323, 47, 248 }, // und_Hebr_US -> yi_Hebr_US
+ { 0, 0, 248 }, { 75, 66, 248 }, // und_US -> en_Latn_US
+ { 0, 0, 249 }, { 75, 66, 249 }, // und_VI -> en_Latn_VI
+ { 0, 66, 250 }, { 270, 66, 250 }, // und_Latn_UY -> es_Latn_UY
{ 0, 0, 250 }, { 270, 66, 250 }, // und_UY -> es_Latn_UY
+ { 0, 66, 251 }, { 307, 66, 251 }, // und_Latn_UZ -> uz_Latn_UZ
{ 0, 0, 251 }, { 307, 66, 251 }, // und_UZ -> uz_Latn_UZ
+ { 0, 66, 252 }, { 39, 66, 252 }, // und_Latn_VU -> bi_Latn_VU
{ 0, 0, 252 }, { 39, 66, 252 }, // und_VU -> bi_Latn_VU
+ { 0, 66, 253 }, { 119, 66, 253 }, // und_Latn_VA -> it_Latn_VA
{ 0, 0, 253 }, { 119, 66, 253 }, // und_VA -> it_Latn_VA
+ { 0, 66, 254 }, { 270, 66, 254 }, // und_Latn_VE -> es_Latn_VE
{ 0, 0, 254 }, { 270, 66, 254 }, // und_VE -> es_Latn_VE
+ { 0, 66, 255 }, { 310, 66, 255 }, // und_Latn_VN -> vi_Latn_VN
{ 0, 0, 255 }, { 310, 66, 255 }, // und_VN -> vi_Latn_VN
+ { 0, 66, 256 }, { 85, 66, 256 }, // und_Latn_WF -> fr_Latn_WF
{ 0, 0, 256 }, { 85, 66, 256 }, // und_WF -> fr_Latn_WF
{ 0, 0, 257 }, { 14, 4, 257 }, // und_EH -> ar_Arab_EH
{ 0, 0, 259 }, { 14, 4, 259 }, // und_YE -> ar_Arab_YE
+ { 0, 66, 260 }, { 36, 66, 260 }, // und_Latn_ZM -> bem_Latn_ZM
+ { 0, 0, 260 }, { 36, 66, 260 }, // und_ZM -> bem_Latn_ZM
+ { 0, 66, 261 }, { 254, 66, 261 }, // und_Latn_ZW -> sn_Latn_ZW
{ 0, 0, 261 }, { 254, 66, 261 }, // und_ZW -> sn_Latn_ZW
{ 0, 1, 0 }, { 87, 1, 102 }, // und_Adlm -> ff_Adlm_GN
{ 0, 4, 0 }, { 14, 4, 71 }, // und_Arab -> ar_Arab_EG
@@ -753,7 +962,7 @@ static const QLocaleId likely_subtags[] = {
{ 0, 13, 0 }, { 58, 13, 228 }, // und_Bopo -> zh_Bopo_TW
{ 0, 15, 0 }, { 85, 15, 84 }, // und_Brai -> fr_Brai_FR
{ 0, 16, 0 }, { 44, 16, 111 }, // und_Bugi -> bug_Bugi_ID
- { 0, 18, 0 }, { 65, 18, 41 }, // und_Cans -> cr_Cans_CA
+ { 0, 18, 0 }, { 116, 18, 41 }, // und_Cans -> iu_Cans_CA
{ 0, 21, 0 }, { 52, 21, 20 }, // und_Cakm -> ccp_Cakm_BD
{ 0, 23, 0 }, { 55, 23, 248 }, // und_Cher -> chr_Cher_US
{ 0, 24, 0 }, { 62, 24, 71 }, // und_Copt -> cop_Copt_EG
@@ -790,6 +999,7 @@ static const QLocaleId likely_subtags[] = {
{ 0, 62, 0 }, { 259, 62, 110 }, // und_Sind -> sd_Sind_IN
{ 0, 63, 0 }, { 142, 63, 218 }, // und_Kore -> ko_Kore_KR
{ 0, 65, 0 }, { 153, 65, 129 }, // und_Laoo -> lo_Laoo_LA
+ { 0, 66, 0 }, { 75, 66, 248 }, // und_Latn -> en_Latn_US
{ 0, 70, 0 }, { 13, 70, 94 }, // und_Linb -> grc_Linb_GR
{ 0, 73, 0 }, { 105, 73, 110 }, // und_Mahj -> hi_Mahj_IN
{ 0, 74, 0 }, { 175, 74, 110 }, // und_Mlym -> ml_Mlym_IN
@@ -837,3042 +1047,5153 @@ static const QLocaleId likely_subtags[] = {
{ 0, 137, 0 }, { 58, 137, 228 }, // und_Hant -> zh_Hant_TW
{ 0, 138, 0 }, { 302, 138, 227 }, // und_Ugar -> uga_Ugar_SY
{ 0, 139, 0 }, { 308, 139, 134 }, // und_Vaii -> vai_Vaii_LR
- { 0, 141, 0 }, { 255, 141, 50 } // und_Yiii -> ii_Yiii_CN
+ { 0, 141, 0 }, { 255, 141, 50 }, // und_Yiii -> ii_Yiii_CN
+ { 0, 142, 0 }, { 339, 142, 161 } // und_Rohg -> rhg_Rohg_MM
};
-static const quint16 locale_index[] = {
+static constexpr quint16 locale_index[] = {
0, // AnyLanguage
0, // C
1, // Abkhazian
2, // Afar
- 3, // Afrikaans
- 5, // Aghem
- 6, // Akan
+ 5, // Afrikaans
+ 7, // Aghem
+ 8, // Akan
0, // Akkadian
- 7, // Akoose
- 8, // Albanian
+ 9, // Akoose
+ 10, // Albanian
0, // American Sign Language
- 11, // Amharic
+ 13, // Amharic
0, // Ancient Egyptian
0, // Ancient Greek
- 12, // Arabic
- 40, // Aragonese
+ 14, // Arabic
+ 42, // Aragonese
0, // Aramaic
- 41, // Armenian
- 42, // Assamese
- 43, // Asturian
- 44, // Asu
- 45, // Atsam
+ 43, // Armenian
+ 44, // Assamese
+ 45, // Asturian
+ 46, // Asu
+ 47, // Atsam
0, // Avaric
0, // Avestan
0, // Aymara
- 46, // Azerbaijani
- 49, // Bafia
+ 48, // Azerbaijani
+ 53, // Bafia
0, // Balinese
- 50, // Bambara
+ 54, // Bambara
0, // Bamun
- 52, // Bangla
- 54, // Basaa
- 55, // Bashkir
- 56, // Basque
+ 56, // Bangla
+ 58, // Basaa
+ 59, // Bashkir
+ 60, // Basque
0, // Batak Toba
- 57, // Belarusian
- 58, // Bemba
- 59, // Bena
- 0, // Bhojpuri
+ 61, // Belarusian
+ 62, // Bemba
+ 63, // Bena
+ 64, // Bhojpuri
0, // Bislama
- 60, // Blin
- 61, // Bodo
- 62, // Bosnian
- 64, // Breton
+ 65, // Blin
+ 66, // Bodo
+ 67, // Bosnian
+ 69, // Breton
0, // Buginese
- 65, // Bulgarian
- 66, // Burmese
- 67, // Cantonese
- 69, // Catalan
- 73, // Cebuano
- 74, // Central Atlas Tamazight
- 75, // Central Kurdish
- 77, // Chakma
+ 70, // Bulgarian
+ 71, // Burmese
+ 72, // Cantonese
+ 74, // Catalan
+ 78, // Cebuano
+ 79, // Central Atlas Tamazight
+ 80, // Central Kurdish
+ 82, // Chakma
0, // Chamorro
- 79, // Chechen
- 80, // Cherokee
- 81, // Chickasaw
- 82, // Chiga
- 83, // Chinese
- 90, // Church
- 91, // Chuvash
- 92, // Colognian
+ 84, // Chechen
+ 85, // Cherokee
+ 86, // Chickasaw
+ 87, // Chiga
+ 88, // Chinese
+ 95, // Church
+ 96, // Chuvash
+ 97, // Colognian
0, // Coptic
- 93, // Cornish
- 94, // Corsican
+ 98, // Cornish
+ 99, // Corsican
0, // Cree
- 95, // Croatian
- 97, // Czech
- 98, // Danish
- 100, // Divehi
- 101, // Dogri
- 102, // Duala
- 103, // Dutch
- 110, // Dzongkha
- 111, // Embu
- 112, // English
- 218, // Erzya
- 219, // Esperanto
- 220, // Estonian
- 221, // Ewe
- 223, // Ewondo
- 224, // Faroese
+ 100, // Croatian
+ 102, // Czech
+ 103, // Danish
+ 105, // Divehi
+ 106, // Dogri
+ 107, // Duala
+ 108, // Dutch
+ 115, // Dzongkha
+ 116, // Embu
+ 117, // English
+ 226, // Erzya
+ 227, // Esperanto
+ 228, // Estonian
+ 229, // Ewe
+ 231, // Ewondo
+ 232, // Faroese
0, // Fijian
- 226, // Filipino
- 227, // Finnish
- 228, // French
- 274, // Friulian
- 275, // Fulah
- 299, // Gaelic
- 300, // Ga
- 301, // Galician
- 302, // Ganda
- 303, // Geez
- 304, // Georgian
- 305, // German
+ 234, // Filipino
+ 235, // Finnish
+ 236, // French
+ 282, // Friulian
+ 283, // Fulah
+ 307, // Gaelic
+ 308, // Ga
+ 309, // Galician
+ 310, // Ganda
+ 311, // Geez
+ 313, // Georgian
+ 314, // German
0, // Gothic
- 312, // Greek
- 314, // Guarani
- 315, // Gujarati
- 316, // Gusii
+ 321, // Greek
+ 323, // Guarani
+ 324, // Gujarati
+ 325, // Gusii
0, // Haitian
- 317, // Hausa
- 321, // Hawaiian
- 322, // Hebrew
+ 326, // Hausa
+ 331, // Hawaiian
+ 332, // Hebrew
0, // Herero
- 323, // Hindi
+ 333, // Hindi
0, // Hiri Motu
- 325, // Hungarian
- 326, // Icelandic
- 327, // Ido
- 328, // Igbo
- 329, // Inari Sami
- 330, // Indonesian
+ 335, // Hungarian
+ 336, // Icelandic
+ 337, // Ido
+ 338, // Igbo
+ 339, // Inari Sami
+ 340, // Indonesian
0, // Ingush
- 331, // Interlingua
- 0, // Interlingue
- 332, // Inuktitut
+ 341, // Interlingua
+ 342, // Interlingue
+ 343, // Inuktitut
0, // Inupiaq
- 334, // Irish
- 336, // Italian
- 340, // Japanese
- 341, // Javanese
- 342, // Jju
- 343, // Jola Fonyi
- 344, // Kabuverdianu
- 345, // Kabyle
- 346, // Kako
- 347, // Kalaallisut
- 348, // Kalenjin
- 349, // Kamba
- 350, // Kannada
+ 345, // Irish
+ 347, // Italian
+ 351, // Japanese
+ 352, // Javanese
+ 353, // Jju
+ 354, // Jola-Fonyi
+ 355, // Kabuverdianu
+ 356, // Kabyle
+ 357, // Kako
+ 358, // Kalaallisut
+ 359, // Kalenjin
+ 360, // Kamba
+ 361, // Kannada
0, // Kanuri
- 351, // Kashmiri
- 353, // Kazakh
- 354, // Kenyang
- 355, // Khmer
- 356, // Kiche
- 357, // Kikuyu
- 358, // Kinyarwanda
+ 362, // Kashmiri
+ 364, // Kazakh
+ 365, // Kenyang
+ 366, // Khmer
+ 367, // Kiche
+ 368, // Kikuyu
+ 369, // Kinyarwanda
0, // Komi
0, // Kongo
- 359, // Konkani
- 360, // Korean
+ 370, // Konkani
+ 371, // Korean
0, // Koro
- 362, // Koyraboro Senni
- 363, // Koyra Chiini
- 364, // Kpelle
+ 374, // Koyraboro Senni
+ 375, // Koyra Chiini
+ 376, // Kpelle
0, // Kuanyama
- 365, // Kurdish
- 366, // Kwasio
- 367, // Kyrgyz
- 368, // Lakota
- 369, // Langi
- 370, // Lao
- 371, // Latin
- 372, // Latvian
+ 378, // Kurdish
+ 379, // Kwasio
+ 380, // Kyrgyz
+ 381, // Lakota
+ 382, // Langi
+ 383, // Lao
+ 384, // Latin
+ 385, // Latvian
0, // Lezghian
0, // Limburgish
- 373, // Lingala
+ 386, // Lingala
0, // Literary Chinese
- 377, // Lithuanian
- 378, // Lojban
- 379, // Lower Sorbian
- 380, // Low German
- 382, // Luba Katanga
- 383, // Lule Sami
- 384, // Luo
- 385, // Luxembourgish
- 386, // Luyia
- 387, // Macedonian
- 388, // Machame
- 389, // Maithili
- 390, // Makhuwa Meetto
- 391, // Makonde
- 392, // Malagasy
- 393, // Malayalam
- 394, // Malay
- 399, // Maltese
+ 390, // Lithuanian
+ 391, // Lojban
+ 392, // Lower Sorbian
+ 393, // Low German
+ 395, // Luba-Katanga
+ 396, // Lule Sami
+ 398, // Luo
+ 399, // Luxembourgish
+ 400, // Luyia
+ 401, // Macedonian
+ 402, // Machame
+ 403, // Maithili
+ 404, // Makhuwa-Meetto
+ 405, // Makonde
+ 406, // Malagasy
+ 407, // Malayalam
+ 408, // Malay
+ 414, // Maltese
0, // Mandingo
- 400, // Manipuri
- 402, // Manx
- 403, // Maori
- 404, // Mapuche
- 405, // Marathi
+ 415, // Manipuri
+ 417, // Manx
+ 418, // Maori
+ 419, // Mapuche
+ 420, // Marathi
0, // Marshallese
- 406, // Masai
- 408, // Mazanderani
+ 421, // Masai
+ 423, // Mazanderani
0, // Mende
- 409, // Meru
- 410, // Meta
- 411, // Mohawk
- 412, // Mongolian
- 414, // Morisyen
- 415, // Mundang
- 416, // Muscogee
- 417, // Nama
+ 424, // Meru
+ 425, // Meta
+ 426, // Mohawk
+ 427, // Mongolian
+ 430, // Morisyen
+ 431, // Mundang
+ 432, // Muscogee
+ 433, // Nama
0, // Nauru
- 418, // Navajo
+ 434, // Navajo
0, // Ndonga
- 419, // Nepali
+ 435, // Nepali
0, // Newari
- 421, // Ngiemboon
- 422, // Ngomba
- 423, // Nigerian Pidgin
- 424, // Nko
- 425, // Northern Luri
- 427, // Northern Sami
- 430, // Northern Sotho
- 431, // North Ndebele
- 432, // Norwegian Bokmal
- 434, // Norwegian Nynorsk
- 435, // Nuer
- 436, // Nyanja
- 437, // Nyankole
- 438, // Occitan
- 439, // Odia
+ 437, // Ngiemboon
+ 438, // Ngomba
+ 439, // Nigerian Pidgin
+ 440, // Nko
+ 441, // Northern Luri
+ 443, // Northern Sami
+ 446, // Northern Sotho
+ 447, // North Ndebele
+ 448, // Norwegian Bokmal
+ 450, // Norwegian Nynorsk
+ 451, // Nuer
+ 452, // Nyanja
+ 453, // Nyankole
+ 454, // Occitan
+ 456, // Odia
0, // Ojibwa
0, // Old Irish
0, // Old Norse
0, // Old Persian
- 440, // Oromo
- 442, // Osage
- 443, // Ossetic
+ 457, // Oromo
+ 459, // Osage
+ 460, // Ossetic
0, // Pahlavi
0, // Palauan
0, // Pali
- 0, // Papiamento
- 445, // Pashto
- 447, // Persian
+ 462, // Papiamento
+ 464, // Pashto
+ 466, // Persian
0, // Phoenician
- 449, // Polish
- 450, // Portuguese
- 462, // Prussian
- 463, // Punjabi
- 465, // Quechua
- 468, // Romanian
- 470, // Romansh
- 471, // Rombo
- 472, // Rundi
- 473, // Russian
- 479, // Rwa
- 480, // Saho
- 481, // Sakha
- 482, // Samburu
+ 468, // Polish
+ 469, // Portuguese
+ 481, // Prussian
+ 482, // Punjabi
+ 484, // Quechua
+ 487, // Romanian
+ 489, // Romansh
+ 490, // Rombo
+ 491, // Rundi
+ 492, // Russian
+ 498, // Rwa
+ 499, // Saho
+ 500, // Sakha
+ 501, // Samburu
0, // Samoan
- 483, // Sango
- 484, // Sangu
- 485, // Sanskrit
- 486, // Santali
- 488, // Sardinian
+ 502, // Sango
+ 503, // Sangu
+ 504, // Sanskrit
+ 505, // Santali
+ 507, // Sardinian
0, // Saurashtra
- 489, // Sena
- 490, // Serbian
- 498, // Shambala
- 499, // Shona
- 500, // Sichuan Yi
- 501, // Sicilian
- 502, // Sidamo
- 503, // Silesian
- 504, // Sindhi
- 506, // Sinhala
- 507, // Skolt Sami
- 508, // Slovak
- 509, // Slovenian
- 510, // Soga
- 511, // Somali
- 515, // Southern Kurdish
- 516, // Southern Sami
- 517, // Southern Sotho
- 518, // South Ndebele
- 519, // Spanish
- 547, // Standard Moroccan Tamazight
- 548, // Sundanese
- 549, // Swahili
- 553, // Swati
- 554, // Swedish
- 557, // Swiss German
- 560, // Syriac
- 561, // Tachelhit
+ 508, // Sena
+ 509, // Serbian
+ 517, // Shambala
+ 518, // Shona
+ 519, // Sichuan Yi
+ 520, // Sicilian
+ 521, // Sidamo
+ 522, // Silesian
+ 523, // Sindhi
+ 525, // Sinhala
+ 526, // Skolt Sami
+ 527, // Slovak
+ 528, // Slovenian
+ 529, // Soga
+ 530, // Somali
+ 534, // Southern Kurdish
+ 536, // Southern Sami
+ 538, // Southern Sotho
+ 540, // South Ndebele
+ 541, // Spanish
+ 569, // Standard Moroccan Tamazight
+ 570, // Sundanese
+ 571, // Swahili
+ 575, // Swati
+ 577, // Swedish
+ 580, // Swiss German
+ 583, // Syriac
+ 585, // Tachelhit
0, // Tahitian
- 563, // Tai Dam
- 564, // Taita
- 565, // Tajik
- 566, // Tamil
- 570, // Taroko
- 571, // Tasawaq
- 572, // Tatar
- 573, // Telugu
- 574, // Teso
- 576, // Thai
- 577, // Tibetan
- 579, // Tigre
- 580, // Tigrinya
+ 587, // Tai Dam
+ 588, // Taita
+ 589, // Tajik
+ 590, // Tamil
+ 594, // Taroko
+ 595, // Tasawaq
+ 596, // Tatar
+ 597, // Telugu
+ 598, // Teso
+ 600, // Thai
+ 601, // Tibetan
+ 603, // Tigre
+ 604, // Tigrinya
0, // Tokelau
- 582, // Tok Pisin
- 583, // Tongan
- 584, // Tsonga
- 585, // Tswana
- 586, // Turkish
- 588, // Turkmen
+ 606, // Tok Pisin
+ 607, // Tongan
+ 608, // Tsonga
+ 609, // Tswana
+ 611, // Turkish
+ 613, // Turkmen
0, // Tuvalu
- 589, // Tyap
+ 614, // Tyap
0, // Ugaritic
- 590, // Ukrainian
- 591, // Upper Sorbian
- 592, // Urdu
- 594, // Uyghur
- 595, // Uzbek
- 598, // Vai
- 600, // Venda
- 601, // Vietnamese
- 602, // Volapuk
- 603, // Vunjo
- 604, // Walloon
- 605, // Walser
- 606, // Warlpiri
- 607, // Welsh
- 608, // Western Balochi
- 609, // Western Frisian
- 610, // Wolaytta
- 611, // Wolof
- 612, // Xhosa
- 613, // Yangben
- 614, // Yiddish
- 615, // Yoruba
- 617, // Zarma
- 0, // Zhuang
- 618, // Zulu
- 619, // Kaingang
- 620, // Nheengatu
+ 615, // Ukrainian
+ 616, // Upper Sorbian
+ 617, // Urdu
+ 619, // Uyghur
+ 620, // Uzbek
+ 623, // Vai
+ 625, // Venda
+ 626, // Vietnamese
+ 627, // Volapuk
+ 628, // Vunjo
+ 629, // Walloon
+ 630, // Walser
+ 631, // Warlpiri
+ 632, // Welsh
+ 633, // Western Balochi
+ 638, // Western Frisian
+ 639, // Wolaytta
+ 640, // Wolof
+ 641, // Xhosa
+ 642, // Yangben
+ 643, // Yiddish
+ 644, // Yoruba
+ 646, // Zarma
+ 647, // Zhuang
+ 648, // Zulu
+ 649, // Kaingang
+ 650, // Nheengatu
+ 653, // Haryanvi
+ 654, // Northern Frisian
+ 655, // Rajasthani
+ 656, // Moksha
+ 657, // Toki Pona
+ 658, // Pijin
+ 659, // Obolo
+ 660, // Baluchi
+ 662, // Ligurian
+ 663, // Rohingya
+ 665, // Torwali
+ 666, // Anii
+ 667, // Kangri
+ 668, // Venetian
0 // trailing 0
};
-static const QLocaleData locale_data[] = {
+static constexpr QLocaleData locale_data[] = {
// lang script terr lStrt lpMid lpEnd lPair lDelm dec group prcnt zero minus plus exp qtOpn qtEnd altQO altQE lDFmt sDFmt lTFmt sTFmt slDay lDays ssDys sDays snDay nDays am pm byte siQnt iecQn crSym crDsp crFmt crFNg ntLng ntTer currISO curDgt curRnd dow1st wknd+ wknd- grpTop grpMid grpEnd
{ 1, 0, 0, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 8, 0, 17, 0, 0, 0, 0, 56, 56, 83, 96, 0, 0, 0, 5, 22, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 8, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 0, 0, 4, 0, 0, 0, {0,0,0}, 2, 1, 1, 6, 7, 1, 3, 3 }, // C/AnyScript/AnyTerritory
- { 2, 27, 90, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {71,69,76}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Abkhazian/Cyrillic/Georgia
- { 3, 66, 77, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 0, 0, {69,84,66}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Afar/Latin/Ethiopia
- { 4, 66, 216, 0, 0, 7, 7, 6, 1, 14, 2, 3, 4, 5, 9, 10, 11, 12, 13, 54, 44, 0, 0, 109, 109, 166, 166, 193, 193, 2, 2, 45, 5, 22, 1, 0, 9, 13, 0, 9, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 57, 57, 27, 27, 13, 13, 3, 3, 5, 17, 23, 1, 20, 4, 6, 9, 11, {90,65,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Afrikaans/Latin/South Africa
- { 4, 66, 162, 0, 0, 7, 7, 6, 1, 14, 2, 3, 4, 5, 9, 10, 11, 12, 13, 71, 44, 10, 22, 109, 109, 166, 166, 193, 193, 2, 2, 45, 5, 22, 2, 20, 9, 13, 0, 20, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 12, 7, 57, 57, 27, 27, 13, 13, 3, 3, 5, 17, 23, 1, 16, 4, 6, 9, 7, {78,65,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Afrikaans/Latin/Namibia
- { 5, 66, 40, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 15, 11, 16, 13, 71, 87, 0, 0, 206, 206, 277, 277, 304, 304, 5, 5, 0, 5, 22, 3, 36, 0, 0, 27, 32, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 71, 71, 27, 27, 13, 13, 3, 3, 4, 17, 23, 4, 14, 4, 0, 5, 7, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Aghem/Latin/Cameroon
- { 6, 66, 92, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 95, 113, 10, 22, 317, 317, 365, 365, 392, 392, 8, 8, 0, 5, 22, 7, 50, 9, 0, 39, 43, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 12, 7, 48, 48, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 10, 4, 0, 4, 5, {71,72,83}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Akan/Latin/Ghana
- { 8, 66, 40, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 3, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 4, 0, 5, 0, 0, 0, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Akoose/Latin/Cameroon
- { 9, 66, 3, 0, 0, 15, 15, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 10, 11, 0, 121, 29, 22, 405, 405, 462, 489, 516, 516, 10, 10, 50, 5, 22, 10, 60, 19, 24, 48, 53, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 13, 7, 57, 57, 27, 27, 14, 14, 11, 10, 4, 17, 23, 4, 13, 5, 7, 5, 8, {65,76,76}, 0, 0, 1, 6, 7, 2, 3, 3 }, // Albanian/Latin/Albania
- { 9, 66, 126, 0, 0, 15, 15, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 10, 11, 0, 121, 0, 0, 405, 405, 462, 489, 516, 516, 10, 10, 50, 5, 22, 14, 73, 19, 24, 48, 61, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 10, 5, 57, 57, 27, 27, 14, 14, 11, 10, 4, 17, 23, 1, 6, 5, 7, 5, 6, {69,85,82}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Albanian/Latin/Kosovo
- { 9, 66, 140, 0, 0, 15, 15, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 10, 11, 0, 121, 0, 0, 405, 405, 462, 489, 516, 516, 10, 10, 50, 5, 22, 15, 79, 19, 24, 48, 67, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 10, 5, 57, 57, 27, 27, 14, 14, 11, 10, 4, 17, 23, 3, 16, 5, 7, 5, 18, {77,75,68}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Albanian/Latin/Macedonia
- { 11, 33, 77, 24, 24, 30, 39, 6, 0, 1, 2, 3, 4, 5, 9, 17, 18, 19, 20, 27, 127, 10, 22, 530, 530, 557, 557, 583, 583, 21, 20, 54, 57, 22, 18, 95, 9, 13, 85, 89, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 27, 27, 26, 26, 13, 13, 3, 4, 3, 23, 23, 2, 9, 4, 6, 4, 5, {69,84,66}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Amharic/Ethiopic/Ethiopia
- { 14, 4, 71, 47, 47, 47, 47, 53, 21, 22, 23, 25, 26, 28, 30, 11, 10, 13, 12, 137, 154, 10, 22, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 20, 104, 19, 0, 94, 101, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 12, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 9, 5, 0, 7, 3, {69,71,80}, 2, 1, 6, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Egypt
- { 14, 4, 4, 47, 47, 47, 47, 6, 1, 0, 32, 3, 35, 37, 9, 11, 10, 13, 12, 137, 154, 10, 22, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 25, 113, 9, 13, 94, 104, 6, 6, 6, 6, 1, 1, 1, 3, 1, 2, 2, 1, 1, 1, 1, 1, 17, 10, 12, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 12, 4, 6, 7, 7, {68,90,68}, 2, 1, 6, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Algeria
- { 14, 4, 19, 47, 47, 47, 47, 53, 21, 22, 23, 25, 26, 28, 30, 11, 10, 13, 12, 137, 154, 10, 22, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 30, 125, 19, 0, 94, 111, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 12, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 12, 5, 0, 7, 7, {66,72,68}, 3, 0, 6, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Bahrain
- { 14, 4, 48, 47, 47, 47, 47, 53, 21, 22, 23, 25, 26, 28, 30, 11, 10, 13, 12, 137, 154, 10, 22, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 3, 137, 19, 0, 94, 118, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 12, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 4, 15, 5, 0, 7, 4, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Arabic/Arabic/Chad
- { 14, 4, 55, 47, 47, 47, 47, 53, 21, 22, 23, 25, 26, 28, 30, 11, 10, 13, 12, 137, 154, 0, 0, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 4, 152, 19, 0, 94, 122, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 10, 5, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 2, 14, 5, 0, 7, 9, {75,77,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Arabic/Arabic/Comoros
- { 14, 4, 67, 47, 47, 47, 47, 53, 21, 22, 23, 25, 26, 28, 30, 11, 10, 13, 12, 137, 154, 10, 22, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 35, 166, 19, 0, 94, 131, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 12, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 3, 11, 5, 0, 7, 6, {68,74,70}, 0, 0, 6, 6, 7, 1, 3, 3 }, // Arabic/Arabic/Djibouti
- { 14, 4, 74, 47, 47, 47, 47, 53, 21, 22, 23, 25, 26, 28, 30, 11, 10, 13, 12, 137, 154, 10, 22, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 38, 177, 19, 0, 94, 137, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 12, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 3, 12, 5, 0, 7, 7, {69,82,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Arabic/Arabic/Eritrea
- { 14, 4, 113, 47, 47, 47, 47, 53, 21, 22, 23, 25, 26, 28, 30, 11, 10, 13, 12, 137, 154, 10, 22, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 41, 189, 19, 0, 94, 144, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 12, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 11, 5, 0, 7, 6, {73,81,68}, 0, 0, 6, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Iraq
- { 14, 4, 116, 47, 47, 47, 47, 53, 21, 22, 23, 25, 26, 28, 30, 11, 10, 13, 12, 137, 154, 1, 1, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 46, 200, 19, 0, 94, 150, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 9, 4, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 1, 18, 5, 0, 7, 7, {73,76,83}, 2, 1, 7, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Israel
- { 14, 4, 122, 47, 47, 47, 47, 53, 21, 22, 23, 25, 26, 28, 30, 11, 10, 13, 12, 137, 154, 10, 22, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 47, 218, 19, 0, 94, 157, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 12, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 11, 5, 0, 7, 6, {74,79,68}, 3, 0, 6, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Jordan
- { 14, 4, 127, 47, 47, 47, 47, 53, 21, 22, 23, 25, 26, 28, 30, 11, 10, 13, 12, 137, 154, 10, 22, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 52, 229, 19, 0, 94, 163, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 12, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 11, 5, 0, 7, 6, {75,87,68}, 3, 0, 6, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Kuwait
- { 14, 4, 132, 47, 47, 47, 47, 53, 21, 22, 23, 25, 26, 28, 30, 11, 10, 13, 12, 137, 154, 10, 22, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 57, 240, 19, 0, 94, 169, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 12, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 11, 5, 0, 7, 5, {76,66,80}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Arabic/Arabic/Lebanon
- { 14, 4, 135, 47, 47, 47, 47, 6, 1, 0, 32, 3, 35, 37, 9, 11, 10, 13, 12, 137, 154, 10, 22, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 62, 251, 9, 13, 94, 174, 6, 6, 6, 6, 1, 1, 1, 3, 1, 2, 2, 1, 1, 1, 1, 1, 17, 10, 12, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 10, 4, 6, 7, 5, {76,89,68}, 3, 0, 6, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Libya
- { 14, 4, 149, 47, 47, 47, 47, 53, 21, 22, 23, 25, 26, 28, 30, 11, 10, 13, 12, 137, 154, 10, 22, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 67, 261, 19, 0, 94, 179, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 12, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 4, 15, 5, 0, 7, 9, {77,82,85}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Arabic/Arabic/Mauritania
- { 14, 4, 159, 47, 47, 47, 47, 6, 1, 0, 32, 3, 35, 37, 9, 11, 10, 13, 12, 137, 154, 0, 0, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 71, 276, 9, 13, 94, 188, 6, 6, 6, 6, 1, 1, 1, 3, 1, 2, 2, 1, 1, 1, 1, 1, 17, 10, 10, 5, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 10, 4, 6, 7, 6, {77,65,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Arabic/Arabic/Morocco
- { 14, 4, 176, 47, 47, 47, 47, 53, 21, 22, 23, 25, 26, 28, 30, 11, 10, 13, 12, 137, 154, 10, 22, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 76, 286, 19, 0, 94, 194, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 12, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 10, 5, 0, 7, 5, {79,77,82}, 3, 0, 6, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Oman
- { 14, 4, 180, 47, 47, 47, 47, 53, 21, 22, 23, 25, 26, 28, 30, 11, 10, 13, 12, 137, 154, 10, 22, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 46, 200, 19, 0, 94, 199, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 12, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 1, 18, 5, 0, 7, 18, {73,76,83}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Arabic/Arabic/Palestinian Territories
- { 14, 4, 190, 47, 47, 47, 47, 53, 21, 22, 23, 25, 26, 28, 30, 11, 10, 13, 12, 137, 154, 10, 22, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 81, 296, 19, 0, 94, 217, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 12, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 9, 5, 0, 7, 3, {81,65,82}, 2, 1, 6, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Qatar
- { 14, 4, 205, 47, 47, 47, 47, 53, 21, 22, 23, 25, 26, 28, 30, 11, 10, 13, 12, 137, 154, 10, 22, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 86, 305, 19, 0, 94, 220, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 12, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 10, 5, 0, 7, 24, {83,65,82}, 2, 1, 7, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Saudi Arabia
- { 14, 4, 215, 47, 47, 47, 47, 53, 21, 22, 23, 25, 26, 28, 30, 11, 10, 13, 12, 137, 154, 10, 22, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 91, 315, 19, 0, 94, 244, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 12, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 1, 10, 5, 0, 7, 7, {83,79,83}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Arabic/Arabic/Somalia
- { 14, 4, 219, 47, 47, 47, 47, 53, 21, 22, 23, 25, 26, 28, 30, 11, 10, 13, 12, 137, 154, 10, 22, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 92, 325, 19, 0, 94, 251, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 12, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 1, 17, 5, 0, 7, 12, {83,83,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Arabic/Arabic/South Sudan
- { 14, 4, 222, 47, 47, 47, 47, 53, 21, 22, 23, 25, 26, 28, 30, 11, 10, 13, 12, 137, 154, 10, 22, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 93, 342, 19, 0, 94, 263, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 12, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 4, 11, 5, 0, 7, 7, {83,68,71}, 2, 1, 6, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Sudan
- { 14, 4, 227, 47, 47, 47, 47, 53, 21, 22, 23, 25, 26, 28, 30, 11, 10, 13, 12, 137, 154, 10, 22, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 97, 353, 19, 0, 94, 270, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 12, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 10, 5, 0, 7, 5, {83,89,80}, 0, 0, 6, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Syria
- { 14, 4, 238, 47, 47, 47, 47, 6, 1, 0, 32, 3, 35, 37, 9, 11, 10, 13, 12, 137, 154, 10, 22, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 102, 363, 9, 13, 94, 275, 6, 6, 6, 6, 1, 1, 1, 3, 1, 2, 2, 1, 1, 1, 1, 1, 17, 10, 12, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 11, 4, 6, 7, 4, {84,78,68}, 3, 0, 1, 6, 7, 1, 3, 3 }, // Arabic/Arabic/Tunisia
- { 14, 4, 245, 47, 47, 47, 47, 6, 0, 1, 32, 3, 35, 37, 9, 11, 10, 13, 12, 137, 154, 10, 22, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 107, 374, 9, 13, 94, 279, 6, 6, 6, 6, 1, 1, 1, 3, 1, 2, 2, 1, 1, 1, 1, 1, 17, 10, 12, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 12, 4, 6, 7, 24, {65,69,68}, 2, 1, 6, 5, 6, 1, 3, 3 }, // Arabic/Arabic/United Arab Emirates
- { 14, 4, 257, 47, 47, 47, 47, 6, 0, 1, 32, 3, 35, 37, 9, 11, 10, 13, 12, 137, 154, 10, 22, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 71, 276, 9, 13, 94, 303, 6, 6, 6, 6, 1, 1, 1, 3, 1, 2, 2, 1, 1, 1, 1, 1, 17, 10, 12, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 10, 4, 6, 7, 15, {77,65,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Arabic/Arabic/Western Sahara
- { 14, 4, 258, 47, 47, 47, 47, 53, 21, 22, 23, 25, 26, 28, 30, 11, 10, 13, 12, 137, 154, 10, 22, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 0, 0, 19, 0, 318, 340, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 12, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 0, 0, 5, 0, 22, 6, {0,0,0}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Arabic/Arabic/World
- { 14, 4, 259, 47, 47, 47, 47, 53, 21, 22, 23, 25, 26, 28, 30, 11, 10, 13, 12, 137, 154, 10, 22, 596, 596, 596, 596, 647, 647, 24, 24, 80, 84, 22, 112, 386, 19, 0, 94, 346, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 12, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 9, 5, 0, 7, 5, {89,69,82}, 0, 0, 7, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Yemen
- { 15, 66, 220, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 14, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Aragonese/Latin/Spain
- { 17, 5, 12, 0, 0, 54, 54, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 17, 18, 164, 184, 0, 0, 660, 660, 721, 721, 748, 748, 0, 0, 121, 127, 22, 117, 395, 19, 0, 351, 358, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 8, 10, 5, 61, 61, 27, 27, 13, 13, 2, 2, 6, 17, 23, 1, 13, 5, 0, 7, 8, {65,77,68}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Armenian/Armenian/Armenia
- { 18, 9, 110, 0, 0, 61, 61, 6, 0, 1, 2, 39, 4, 5, 9, 10, 11, 12, 13, 192, 210, 42, 42, 761, 761, 818, 818, 849, 849, 25, 25, 144, 148, 22, 118, 408, 4, 0, 366, 373, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 12, 7, 57, 57, 31, 31, 13, 13, 9, 7, 4, 37, 23, 1, 12, 5, 0, 7, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Assamese/Bangla/India
- { 19, 66, 220, 0, 0, 70, 70, 6, 1, 0, 2, 3, 4, 5, 9, 17, 18, 10, 11, 218, 87, 0, 0, 862, 862, 915, 915, 942, 942, 34, 32, 0, 5, 22, 14, 420, 19, 0, 377, 386, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 6, 10, 5, 53, 53, 27, 27, 13, 13, 12, 11, 5, 17, 23, 1, 4, 5, 0, 9, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Asturian/Latin/Spain
- { 20, 66, 230, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 955, 955, 1014, 1014, 1041, 1041, 46, 43, 0, 5, 22, 119, 424, 19, 0, 392, 398, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 59, 59, 27, 27, 13, 13, 9, 8, 4, 17, 23, 3, 21, 5, 0, 6, 8, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Asu/Latin/Tanzania
- { 21, 66, 169, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 122, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {78,71,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Atsam/Latin/Nigeria
- { 25, 66, 17, 0, 0, 77, 77, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 240, 184, 0, 0, 1054, 1054, 1120, 1146, 96, 96, 0, 0, 185, 5, 22, 123, 445, 19, 0, 406, 416, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 10, 5, 66, 66, 26, 26, 13, 13, 2, 2, 4, 17, 23, 1, 17, 5, 0, 10, 10, {65,90,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Azerbaijani/Latin/Azerbaijan
- { 25, 4, 112, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 0, 0, {73,82,82}, 0, 0, 6, 5, 5, 1, 3, 3 }, // Azerbaijani/Arabic/Iran
- { 25, 27, 17, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 9, 17, 18, 19, 20, 240, 184, 0, 0, 1172, 1172, 1238, 1238, 96, 96, 55, 51, 0, 5, 22, 123, 462, 19, 0, 426, 436, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 10, 5, 66, 66, 26, 26, 13, 13, 2, 2, 4, 17, 23, 1, 5, 5, 0, 10, 10, {65,90,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Azerbaijani/Cyrillic/Azerbaijan
- { 26, 66, 40, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 12, 13, 71, 87, 0, 0, 1264, 1264, 1308, 1308, 1336, 1336, 57, 53, 0, 5, 22, 3, 467, 19, 0, 446, 451, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 44, 44, 28, 28, 13, 13, 6, 7, 4, 17, 23, 4, 4, 5, 0, 5, 7, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Bafia/Latin/Cameroon
- { 28, 66, 145, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 17, 18, 10, 11, 71, 87, 0, 0, 1349, 1349, 1392, 1392, 1419, 1419, 0, 0, 0, 5, 22, 124, 471, 9, 13, 458, 467, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 43, 43, 27, 27, 13, 13, 2, 2, 4, 17, 23, 5, 17, 4, 6, 9, 4, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Bambara/Latin/Mali
- { 28, 90, 145, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 124, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 5, 0, 5, 0, 0, 0, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Bambara/Nko/Mali
- { 30, 9, 20, 0, 0, 85, 85, 6, 0, 1, 2, 39, 4, 5, 9, 10, 11, 12, 13, 192, 87, 10, 22, 1432, 1432, 1489, 1489, 1525, 1525, 0, 0, 144, 5, 22, 129, 488, 0, 31, 471, 476, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7, 57, 57, 36, 36, 17, 17, 2, 2, 4, 17, 23, 1, 14, 4, 6, 5, 8, {66,68,84}, 2, 1, 7, 6, 7, 1, 2, 3 }, // Bangla/Bangla/Bangladesh
- { 30, 9, 110, 0, 0, 85, 85, 6, 0, 1, 2, 39, 4, 5, 9, 10, 11, 12, 13, 192, 87, 10, 22, 1432, 1432, 1489, 1489, 1525, 1525, 0, 0, 144, 5, 22, 118, 502, 0, 31, 471, 484, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7, 57, 57, 36, 36, 17, 17, 2, 2, 4, 17, 23, 1, 12, 4, 6, 5, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Bangla/Bangla/India
- { 31, 66, 40, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 15, 10, 71, 87, 0, 0, 1542, 1542, 1611, 1611, 1638, 1638, 63, 60, 0, 5, 22, 3, 514, 19, 0, 488, 493, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 69, 69, 27, 27, 13, 13, 10, 9, 4, 17, 23, 4, 15, 5, 0, 5, 8, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Basaa/Latin/Cameroon
- { 32, 27, 193, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 130, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {82,85,66}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Bashkir/Cyrillic/Russia
- { 33, 66, 220, 0, 0, 94, 94, 6, 1, 0, 2, 3, 40, 5, 9, 10, 11, 10, 11, 257, 293, 54, 0, 1651, 1651, 1718, 1718, 1745, 1745, 0, 0, 189, 5, 22, 14, 529, 19, 24, 501, 508, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 36, 6, 12, 5, 67, 67, 27, 27, 13, 13, 2, 2, 7, 17, 23, 1, 5, 5, 7, 7, 8, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Basque/Latin/Spain
- { 35, 27, 22, 0, 0, 103, 103, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 15, 10, 299, 185, 66, 0, 1758, 1758, 1813, 1813, 1833, 1833, 0, 0, 196, 201, 22, 131, 534, 19, 0, 516, 526, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 7, 11, 5, 55, 55, 20, 20, 13, 13, 2, 2, 5, 17, 23, 2, 16, 5, 0, 10, 8, {66,89,78}, 2, 0, 1, 6, 7, 2, 3, 3 }, // Belarusian/Cyrillic/Belarus
- { 36, 66, 260, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 1846, 1846, 1846, 1846, 83, 83, 73, 69, 0, 5, 22, 133, 0, 9, 13, 534, 543, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 79, 79, 79, 79, 13, 13, 8, 7, 4, 17, 23, 1, 0, 4, 6, 9, 6, {90,77,87}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Bemba/Latin/Zambia
- { 37, 66, 230, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 1925, 1925, 2006, 2006, 2033, 2033, 81, 76, 0, 5, 22, 119, 550, 0, 0, 549, 555, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 81, 81, 27, 27, 13, 13, 7, 7, 4, 17, 23, 3, 22, 4, 0, 6, 10, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Bena/Latin/Tanzania
- { 40, 33, 74, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 0, 0, {69,82,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Blin/Ethiopic/Eritrea
- { 41, 29, 110, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 339, 10, 22, 2046, 2046, 2099, 2099, 2131, 2131, 88, 83, 0, 5, 22, 118, 572, 4, 0, 565, 569, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7, 53, 53, 32, 32, 18, 18, 3, 6, 4, 17, 23, 1, 3, 5, 0, 4, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Bodo/Devanagari/India
- { 42, 66, 29, 0, 0, 110, 110, 6, 1, 0, 2, 3, 4, 5, 9, 15, 11, 12, 13, 345, 364, 0, 0, 2149, 2149, 2206, 2206, 2233, 2246, 91, 89, 218, 5, 22, 134, 575, 19, 0, 573, 581, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 11, 10, 5, 57, 57, 27, 27, 13, 13, 10, 7, 7, 17, 23, 2, 40, 5, 0, 8, 19, {66,65,77}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Bosnian/Latin/Bosnia And Herzegovina
- { 42, 27, 29, 0, 0, 117, 117, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 16, 12, 375, 395, 0, 0, 2259, 2259, 2314, 2314, 2341, 2341, 101, 96, 0, 5, 22, 136, 615, 19, 0, 600, 608, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 7, 10, 5, 55, 55, 27, 27, 13, 13, 11, 13, 4, 17, 23, 2, 19, 5, 0, 8, 19, {66,65,77}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Bosnian/Cyrillic/Bosnia And Herzegovina
- { 43, 66, 84, 0, 0, 124, 124, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 10, 11, 71, 127, 0, 0, 2354, 2354, 2396, 2396, 2428, 2428, 112, 109, 225, 232, 249, 14, 420, 19, 0, 627, 636, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 42, 42, 32, 32, 17, 17, 4, 4, 7, 17, 23, 1, 4, 5, 0, 9, 5, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Breton/Latin/France
- { 45, 27, 36, 0, 0, 117, 117, 6, 1, 14, 2, 3, 4, 5, 9, 15, 10, 15, 10, 299, 402, 77, 91, 2445, 2445, 2499, 2499, 2519, 2519, 116, 113, 272, 5, 22, 138, 634, 19, 24, 641, 650, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 12, 14, 9, 54, 54, 20, 20, 13, 13, 6, 6, 7, 17, 23, 3, 13, 5, 7, 9, 8, {66,71,78}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Bulgarian/Cyrillic/Bulgaria
- { 46, 86, 161, 132, 132, 139, 139, 149, 0, 1, 2, 41, 4, 5, 9, 10, 11, 12, 13, 414, 432, 100, 1, 2532, 2532, 2532, 2532, 2585, 2585, 122, 119, 279, 5, 22, 133, 647, 4, 0, 658, 658, 7, 7, 10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 10, 4, 53, 53, 53, 53, 13, 13, 5, 3, 5, 17, 23, 1, 11, 5, 0, 6, 6, {77,77,75}, 0, 0, 7, 6, 7, 1, 3, 3 }, // Burmese/Myanmar/Myanmar
- { 47, 137, 107, 150, 150, 155, 155, 6, 0, 1, 2, 3, 4, 5, 9, 42, 43, 44, 45, 440, 454, 110, 27, 2598, 2598, 2598, 2598, 2625, 2625, 127, 122, 0, 5, 22, 141, 658, 9, 13, 664, 666, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 8, 13, 6, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 2, 4, 6, 2, 14, {72,75,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Cantonese/Traditional Han/Hong Kong
- { 47, 118, 50, 150, 150, 155, 155, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 462, 454, 100, 0, 2598, 2598, 2638, 2638, 2625, 2625, 127, 122, 0, 5, 22, 144, 660, 9, 13, 680, 682, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 8, 10, 5, 27, 27, 20, 20, 13, 13, 2, 2, 4, 17, 23, 1, 3, 4, 6, 2, 7, {67,78,89}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Cantonese/Simplified Han/China
- { 48, 66, 220, 0, 0, 110, 110, 6, 1, 0, 2, 3, 4, 5, 9, 17, 18, 10, 11, 218, 87, 55, 1, 2658, 2658, 2717, 2717, 2744, 2744, 129, 124, 0, 5, 22, 14, 420, 19, 24, 689, 695, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 6, 11, 4, 59, 59, 27, 27, 20, 20, 5, 5, 5, 17, 23, 1, 4, 5, 7, 6, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Catalan/Latin/Spain
- { 48, 66, 6, 0, 0, 110, 110, 6, 1, 0, 2, 3, 4, 5, 9, 17, 18, 10, 11, 218, 87, 55, 1, 2658, 2658, 2717, 2717, 2744, 2744, 129, 124, 0, 5, 22, 14, 420, 19, 24, 689, 702, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 6, 11, 4, 59, 59, 27, 27, 20, 20, 5, 5, 5, 17, 23, 1, 4, 5, 7, 6, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Catalan/Latin/Andorra
- { 48, 66, 84, 0, 0, 110, 110, 6, 1, 0, 2, 3, 4, 5, 9, 17, 18, 10, 11, 218, 87, 55, 1, 2658, 2658, 2717, 2717, 2744, 2744, 129, 124, 0, 5, 22, 14, 420, 19, 24, 689, 709, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 6, 11, 4, 59, 59, 27, 27, 20, 20, 5, 5, 5, 17, 23, 1, 4, 5, 7, 6, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Catalan/Latin/France
- { 48, 66, 117, 0, 0, 110, 110, 6, 1, 0, 2, 3, 4, 5, 9, 17, 18, 10, 11, 218, 87, 55, 1, 2658, 2658, 2717, 2717, 2744, 2744, 129, 124, 0, 5, 22, 14, 420, 19, 24, 689, 715, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 6, 11, 4, 59, 59, 27, 27, 20, 20, 5, 5, 5, 17, 23, 1, 4, 5, 7, 6, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Catalan/Latin/Italy
- { 49, 66, 185, 0, 0, 160, 169, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 339, 10, 22, 2764, 2764, 2819, 2819, 2846, 2846, 0, 0, 284, 5, 22, 145, 663, 9, 13, 721, 729, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7, 55, 55, 27, 27, 13, 13, 2, 2, 8, 17, 23, 1, 15, 4, 6, 8, 9, {80,72,80}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Cebuano/Latin/Philippines
- { 50, 66, 159, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 2859, 2859, 2906, 2906, 2933, 2933, 134, 129, 0, 5, 22, 0, 678, 19, 0, 738, 755, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 47, 47, 27, 27, 13, 13, 9, 10, 4, 17, 23, 0, 15, 5, 0, 17, 6, {77,65,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Central Atlas Tamazight/Latin/Morocco
- { 51, 4, 113, 0, 0, 0, 0, 53, 21, 22, 23, 25, 46, 48, 30, 10, 11, 12, 13, 27, 44, 10, 22, 2946, 2946, 2946, 2946, 3003, 3003, 143, 139, 0, 5, 22, 41, 693, 19, 0, 761, 775, 6, 6, 6, 6, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 12, 7, 57, 57, 57, 57, 13, 13, 3, 3, 4, 17, 23, 5, 13, 5, 0, 14, 5, {73,81,68}, 0, 0, 6, 5, 6, 1, 3, 3 }, // Central Kurdish/Arabic/Iraq
- { 51, 4, 112, 0, 0, 0, 0, 53, 21, 22, 23, 25, 46, 48, 30, 10, 11, 12, 13, 27, 44, 0, 0, 2946, 2946, 2946, 2946, 3003, 3003, 143, 139, 0, 5, 22, 0, 706, 19, 0, 761, 780, 6, 6, 6, 6, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 10, 5, 57, 57, 57, 57, 13, 13, 3, 3, 4, 17, 23, 0, 12, 5, 0, 14, 5, {73,82,82}, 0, 0, 6, 5, 5, 1, 3, 3 }, // Central Kurdish/Arabic/Iran
- { 52, 21, 20, 0, 0, 177, 177, 6, 0, 1, 2, 50, 4, 5, 9, 10, 11, 12, 13, 192, 87, 10, 22, 3016, 3016, 3142, 3142, 3226, 3226, 0, 0, 292, 5, 22, 129, 718, 0, 31, 785, 797, 6, 6, 12, 12, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7,126,126, 84, 84, 38, 38, 2, 2, 8, 17, 23, 1, 21, 4, 6, 12, 14, {66,68,84}, 2, 1, 7, 6, 7, 1, 2, 3 }, // Chakma/Chakma/Bangladesh
- { 52, 21, 110, 0, 0, 177, 177, 6, 0, 1, 2, 50, 4, 5, 9, 10, 11, 12, 13, 192, 87, 10, 22, 3016, 3016, 3142, 3142, 3226, 3226, 0, 0, 292, 5, 22, 118, 739, 0, 31, 785, 811, 6, 6, 12, 12, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7,126,126, 84, 84, 38, 38, 2, 2, 8, 17, 23, 1, 27, 4, 6, 12, 10, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Chakma/Chakma/India
- { 54, 27, 193, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 3264, 3264, 3308, 3308, 3332, 3308, 0, 0, 0, 5, 22, 130, 766, 19, 0, 821, 828, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 44, 44, 24, 24, 16, 24, 2, 2, 4, 17, 23, 1, 11, 5, 0, 7, 5, {82,85,66}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Chechen/Cyrillic/Russia
- { 55, 23, 248, 0, 0, 189, 198, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 339, 10, 22, 3348, 3348, 3396, 3396, 3423, 3423, 146, 142, 300, 5, 22, 2, 777, 9, 13, 833, 836, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7, 48, 48, 27, 27, 13, 13, 3, 6, 6, 17, 23, 1, 6, 4, 6, 3, 15, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Cherokee/Cherokee/United States
- { 56, 66, 248, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 146, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 0, 5, 0, 0, 0, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Chickasaw/Latin/United States
- { 57, 66, 243, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 3436, 3436, 3509, 3509, 3536, 3536, 0, 0, 0, 5, 22, 149, 783, 9, 0, 851, 857, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 73, 73, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 19, 4, 0, 6, 6, {85,71,88}, 0, 0, 1, 7, 7, 1, 3, 3 }, // Chiga/Latin/Uganda
- { 58, 118, 50, 150, 150, 206, 206, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 462, 454, 100, 0, 2598, 2598, 2638, 2638, 2625, 2625, 127, 122, 306, 5, 22, 152, 660, 9, 13, 863, 867, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 8, 10, 5, 27, 27, 20, 20, 13, 13, 2, 2, 2, 17, 23, 1, 3, 4, 6, 4, 2, {67,78,89}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Chinese/Simplified Han/China
- { 58, 118, 107, 150, 150, 206, 206, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 462, 87, 123, 27, 2598, 2598, 2638, 2638, 2625, 2625, 127, 122, 306, 5, 22, 141, 802, 9, 13, 863, 869, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 6, 11, 6, 27, 27, 20, 20, 13, 13, 2, 2, 2, 17, 23, 3, 2, 4, 6, 4, 9, {72,75,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Chinese/Simplified Han/Hong Kong
- { 58, 118, 139, 150, 150, 206, 206, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 462, 87, 123, 27, 2598, 2598, 2638, 2638, 2625, 2625, 127, 122, 306, 5, 22, 153, 804, 9, 13, 863, 878, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 6, 11, 6, 27, 27, 20, 20, 13, 13, 2, 2, 2, 17, 23, 4, 3, 4, 6, 4, 9, {77,79,80}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Chinese/Simplified Han/Macao
- { 58, 118, 210, 150, 150, 206, 206, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 462, 127, 123, 27, 2598, 2598, 2638, 2638, 2625, 2625, 127, 122, 306, 5, 22, 2, 807, 9, 13, 863, 887, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 8, 11, 6, 27, 27, 20, 20, 13, 13, 2, 2, 2, 17, 23, 1, 4, 4, 6, 4, 3, {83,71,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Chinese/Simplified Han/Singapore
- { 58, 137, 107, 150, 150, 211, 211, 6, 0, 1, 2, 3, 4, 5, 9, 42, 43, 44, 45, 462, 87, 110, 27, 2598, 2598, 3549, 3549, 2625, 2625, 127, 122, 308, 5, 22, 141, 802, 9, 13, 890, 894, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 8, 13, 6, 27, 27, 20, 20, 13, 13, 2, 2, 3, 17, 23, 3, 2, 4, 6, 4, 9, {72,75,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Chinese/Traditional Han/Hong Kong
- { 58, 137, 139, 150, 150, 211, 211, 6, 0, 1, 2, 3, 4, 5, 9, 42, 43, 44, 45, 462, 87, 110, 27, 2598, 2598, 3549, 3549, 2625, 2625, 127, 122, 308, 5, 22, 153, 811, 9, 13, 890, 903, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 8, 13, 6, 27, 27, 20, 20, 13, 13, 2, 2, 3, 17, 23, 4, 3, 4, 6, 4, 9, {77,79,80}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Chinese/Traditional Han/Macao
- { 58, 137, 228, 150, 150, 206, 206, 6, 0, 1, 2, 3, 4, 5, 9, 42, 43, 44, 45, 440, 454, 134, 134, 2598, 2598, 3549, 3549, 2625, 2625, 127, 122, 0, 5, 22, 2, 814, 9, 13, 890, 912, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 8, 12, 5, 27, 27, 20, 20, 13, 13, 2, 2, 4, 17, 23, 1, 3, 4, 6, 4, 2, {84,87,68}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Chinese/Traditional Han/Taiwan
- { 59, 27, 193, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 130, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {82,85,66}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Church/Cyrillic/Russia
- { 60, 27, 193, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 130, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {82,85,66}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Chuvash/Cyrillic/Russia
- { 61, 66, 91, 0, 0, 216, 216, 6, 1, 14, 2, 3, 40, 5, 52, 15, 10, 16, 12, 475, 364, 0, 0, 3569, 3569, 3640, 3640, 3667, 3667, 149, 148, 0, 5, 22, 14, 73, 19, 0, 914, 920, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 23, 10, 10, 5, 71, 71, 27, 27, 13, 13, 16, 16, 4, 17, 23, 1, 4, 5, 0, 6, 11, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Colognian/Latin/Germany
- { 63, 66, 246, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 71, 127, 0, 0, 3680, 3680, 3740, 3740, 83, 83, 165, 164, 0, 5, 22, 92, 0, 9, 0, 931, 939, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 60, 60, 27, 27, 13, 13, 4, 4, 4, 17, 23, 1, 0, 4, 0, 8, 14, {71,66,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Cornish/Latin/United Kingdom
- { 64, 66, 84, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 14, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Corsican/Latin/France
- { 66, 66, 60, 0, 0, 110, 110, 6, 1, 0, 2, 3, 40, 5, 9, 15, 10, 16, 12, 345, 498, 54, 0, 2149, 2149, 2206, 2206, 2233, 2246, 0, 0, 218, 5, 22, 157, 817, 19, 0, 953, 961, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 13, 12, 5, 57, 57, 27, 27, 13, 13, 2, 2, 7, 17, 23, 2, 13, 5, 0, 8, 8, {72,82,75}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Croatian/Latin/Croatia
- { 66, 66, 29, 0, 0, 110, 110, 6, 1, 0, 2, 3, 40, 5, 9, 15, 10, 16, 12, 345, 511, 54, 0, 2149, 2149, 2206, 2206, 2246, 2246, 0, 0, 218, 5, 22, 134, 596, 19, 0, 953, 581, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 9, 12, 5, 57, 57, 27, 27, 13, 13, 2, 2, 7, 17, 23, 2, 19, 5, 0, 8, 19, {66,65,77}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Croatian/Latin/Bosnia And Herzegovina
- { 67, 66, 64, 0, 0, 224, 224, 6, 1, 14, 2, 3, 4, 5, 9, 15, 10, 16, 12, 520, 184, 1, 1, 3767, 3767, 3815, 3815, 3835, 3835, 169, 168, 311, 5, 22, 159, 830, 19, 0, 969, 976, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 9, 4, 48, 48, 20, 20, 13, 13, 4, 4, 5, 17, 23, 2, 12, 5, 0, 7, 5, {67,90,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Czech/Latin/Czechia
- { 68, 66, 65, 0, 0, 231, 231, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 537, 560, 146, 146, 3848, 3848, 3898, 3925, 3959, 3959, 0, 0, 0, 5, 22, 161, 842, 19, 0, 981, 986, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 10, 10, 5, 50, 50, 27, 34, 13, 13, 2, 2, 5, 17, 23, 3, 11, 5, 0, 5, 7, {68,75,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Danish/Latin/Denmark
- { 68, 66, 95, 0, 0, 231, 231, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 537, 560, 146, 146, 3848, 3848, 3898, 3925, 3959, 3959, 0, 0, 0, 5, 22, 161, 842, 19, 0, 981, 993, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 10, 10, 5, 50, 50, 27, 34, 13, 13, 2, 2, 5, 17, 23, 3, 11, 5, 0, 5, 8, {68,75,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Danish/Latin/Greenland
- { 69, 132, 144, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 0, 0, {77,86,82}, 2, 1, 5, 6, 7, 1, 3, 3 }, // Divehi/Thaana/Maldives
- { 70, 29, 110, 0, 0, 239, 248, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 570, 87, 10, 22, 3972, 4022, 4072, 4072, 4101, 4123, 173, 172, 0, 5, 22, 118, 853, 9, 0, 1001, 569, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7, 50, 50, 29, 29, 22, 24, 4, 9, 4, 17, 23, 1, 10, 4, 0, 5, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Dogri/Devanagari/India
- { 71, 66, 40, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 12, 13, 71, 87, 0, 0, 4147, 4147, 4191, 4191, 4218, 4218, 177, 181, 0, 5, 22, 3, 0, 19, 0, 1006, 1011, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 44, 44, 27, 27, 13, 13, 5, 6, 4, 17, 23, 4, 0, 5, 0, 5, 8, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Duala/Latin/Cameroon
- { 72, 66, 165, 0, 0, 7, 7, 6, 1, 0, 2, 3, 4, 5, 9, 12, 13, 12, 13, 71, 432, 0, 0, 4231, 4231, 4289, 4289, 4309, 4309, 165, 164, 0, 5, 22, 14, 73, 4, 37, 1019, 1019, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 58, 58, 20, 20, 13, 13, 4, 4, 4, 17, 23, 1, 4, 5, 7, 10, 9, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Dutch/Latin/Netherlands
- { 72, 66, 13, 0, 0, 7, 7, 6, 1, 0, 2, 3, 4, 5, 9, 12, 13, 12, 13, 71, 432, 0, 0, 4231, 4231, 4289, 4289, 4309, 4309, 165, 164, 0, 5, 22, 164, 863, 4, 37, 1019, 1029, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 58, 58, 20, 20, 13, 13, 4, 4, 4, 17, 23, 4, 16, 5, 7, 10, 5, {65,87,71}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Dutch/Latin/Aruba
- { 72, 66, 23, 0, 0, 7, 7, 6, 1, 0, 2, 3, 4, 5, 9, 12, 13, 12, 13, 71, 128, 0, 0, 4231, 4231, 4289, 4289, 4309, 4309, 165, 164, 0, 5, 22, 14, 73, 4, 37, 1034, 1040, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 9, 10, 5, 58, 58, 20, 20, 13, 13, 4, 4, 4, 17, 23, 1, 4, 5, 7, 6, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Dutch/Latin/Belgium
- { 72, 66, 44, 0, 0, 7, 7, 6, 1, 0, 2, 3, 4, 5, 9, 12, 13, 12, 13, 71, 432, 0, 0, 4231, 4231, 4289, 4289, 4309, 4309, 165, 164, 0, 5, 22, 2, 879, 4, 37, 1019, 1046, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 58, 58, 20, 20, 13, 13, 4, 4, 4, 17, 23, 1, 18, 5, 7, 10, 19, {85,83,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Dutch/Latin/Caribbean Netherlands
- { 72, 66, 62, 0, 0, 7, 7, 6, 1, 0, 2, 3, 4, 5, 9, 12, 13, 12, 13, 71, 432, 0, 0, 4231, 4231, 4289, 4289, 4309, 4309, 165, 164, 0, 5, 22, 168, 897, 4, 37, 1019, 1065, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 58, 58, 20, 20, 13, 13, 4, 4, 4, 17, 23, 4, 30, 5, 7, 10, 7, {65,78,71}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Dutch/Latin/Curacao
- { 72, 66, 211, 0, 0, 7, 7, 6, 1, 0, 2, 3, 4, 5, 9, 12, 13, 12, 13, 71, 432, 0, 0, 4231, 4231, 4289, 4289, 4309, 4309, 165, 164, 0, 5, 22, 168, 897, 4, 37, 1019, 1072, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 58, 58, 20, 20, 13, 13, 4, 4, 4, 17, 23, 4, 30, 5, 7, 10, 12, {65,78,71}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Dutch/Latin/Sint Maarten
- { 72, 66, 223, 0, 0, 7, 7, 6, 1, 0, 2, 3, 4, 5, 9, 12, 13, 12, 13, 71, 432, 0, 0, 4231, 4231, 4289, 4289, 4309, 4309, 165, 164, 0, 5, 22, 2, 927, 4, 37, 1019, 1084, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 58, 58, 20, 20, 13, 13, 4, 4, 4, 17, 23, 1, 17, 5, 7, 10, 8, {83,82,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Dutch/Latin/Suriname
- { 73, 134, 27, 256, 256, 256, 256, 6, 0, 1, 2, 56, 4, 5, 9, 10, 11, 12, 13, 588, 44, 156, 183, 4322, 4322, 4400, 4400, 4433, 4433, 182, 187, 0, 5, 22, 172, 944, 9, 0, 1092, 1098, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 30, 10, 27, 22, 78, 78, 33, 33, 26, 26, 5, 6, 4, 17, 23, 3, 8, 4, 0, 6, 5, {66,84,78}, 2, 1, 7, 6, 7, 1, 2, 3 }, // Dzongkha/Tibetan/Bhutan
- { 74, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 4459, 4459, 4522, 4522, 4549, 4549, 187, 193, 0, 5, 22, 175, 952, 9, 13, 1103, 1109, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 63, 63, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 17, 4, 6, 6, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Embu/Latin/Kenya
- { 75, 66, 248, 0, 0, 265, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 339, 10, 22, 0, 0, 56, 56, 83, 83, 0, 0, 0, 5, 22, 2, 969, 9, 13, 1114, 1130, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 9, 4, 6, 16, 13, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/United States
- { 75, 28, 248, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 146, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 0, 5, 0, 0, 0, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Deseret/United States
- { 75, 66, 5, 0, 0, 265, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 339, 10, 22, 0, 0, 56, 56, 83, 83, 0, 0, 0, 5, 22, 2, 969, 9, 13, 1123, 1143, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 9, 4, 6, 7, 14, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/American Samoa
- { 75, 66, 8, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 978, 9, 13, 1123, 1157, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 21, 4, 6, 7, 8, {88,67,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Anguilla
- { 75, 66, 10, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 978, 9, 13, 1123, 1165, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 21, 4, 6, 7, 17, {88,67,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Antigua And Barbuda
- { 75, 66, 15, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 6, 10, 11, 12, 13, 0, 87, 10, 22, 0, 0, 56, 56, 4562, 4562, 82, 195, 0, 5, 22, 2, 999, 9, 13, 1182, 1182, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 12, 7, 56, 56, 27, 27, 24, 24, 2, 2, 5, 17, 23, 1, 17, 4, 6, 18, 9, {65,85,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Australia
- { 75, 66, 16, 0, 0, 275, 275, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 14, 73, 4, 0, 1123, 1200, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 0, 7, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Austria
- { 75, 66, 18, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 1016, 9, 13, 1123, 1207, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 15, 4, 6, 7, 7, {66,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Bahamas
- { 75, 66, 21, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 1031, 9, 13, 1123, 1214, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 16, 4, 6, 7, 8, {66,66,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Barbados
- { 75, 66, 23, 0, 0, 275, 275, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 14, 73, 19, 0, 1123, 1222, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 0, 7, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Belgium
- { 75, 66, 24, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 618, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 1047, 9, 13, 1123, 1229, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 13, 4, 6, 7, 6, {66,90,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Belize
- { 75, 66, 26, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 1060, 9, 13, 1123, 1235, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 16, 4, 6, 7, 7, {66,77,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Bermuda
- { 75, 66, 30, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 618, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 155, 1076, 9, 13, 1123, 1242, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 14, 4, 6, 7, 8, {66,87,80}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Botswana
- { 75, 66, 33, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 146, 969, 9, 13, 1123, 1250, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 9, 4, 6, 7, 30, {85,83,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/British Indian Ocean Territory
- { 75, 66, 34, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 146, 969, 9, 13, 1123, 1280, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 9, 4, 6, 7, 22, {85,83,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/British Virgin Islands
- { 75, 66, 38, 0, 0, 265, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 339, 0, 0, 0, 0, 56, 56, 83, 83, 0, 0, 0, 5, 22, 178, 1090, 9, 13, 1123, 1302, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 15, 4, 6, 7, 7, {66,73,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // English/Latin/Burundi
- { 75, 66, 40, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 3, 1105, 9, 13, 1123, 1309, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 4, 25, 4, 6, 7, 8, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // English/Latin/Cameroon
- { 75, 66, 41, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 44, 10, 22, 0, 0, 56, 56, 83, 83, 165, 164, 0, 5, 22, 2, 1130, 9, 13, 1317, 1333, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 10, 12, 7, 56, 56, 27, 27, 13, 13, 4, 4, 5, 17, 23, 1, 15, 4, 6, 16, 6, {67,65,68}, 2, 0, 7, 6, 7, 1, 3, 3 }, // English/Latin/Canada
- { 75, 66, 45, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 1145, 9, 13, 1123, 1339, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 21, 4, 6, 7, 14, {75,89,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Cayman Islands
- { 75, 66, 51, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 999, 9, 13, 1123, 1353, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 17, 4, 6, 7, 16, {65,85,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Christmas Island
- { 75, 66, 53, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 999, 9, 13, 1123, 1369, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 17, 4, 6, 7, 23, {65,85,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Cocos Islands
- { 75, 66, 58, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 1166, 9, 13, 1123, 1392, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 18, 4, 6, 7, 12, {78,90,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Cook Islands
- { 75, 66, 63, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 14, 73, 9, 13, 1123, 1404, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 4, 6, 7, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Cyprus
- { 75, 66, 65, 0, 0, 275, 275, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 146, 146, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 161, 1184, 19, 0, 1123, 1410, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 12, 5, 0, 7, 7, {68,75,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // English/Latin/Denmark
- { 75, 66, 66, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 146, 969, 9, 13, 1123, 1417, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 9, 4, 6, 7, 12, {85,83,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Diego Garcia
- { 75, 66, 68, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 978, 9, 13, 1123, 1429, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 21, 4, 6, 7, 8, {88,67,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Dominica
- { 75, 66, 74, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 38, 1196, 9, 13, 1123, 1437, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 14, 4, 6, 7, 7, {69,82,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Eritrea
- { 75, 66, 76, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 181, 1210, 9, 13, 1123, 1444, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 15, 4, 6, 7, 8, {83,90,76}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Eswatini
- { 75, 66, 78, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 0, 0, 19, 0, 1123, 1452, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 0, 0, 5, 0, 7, 6, {0,0,0}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Europe
- { 75, 66, 80, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 92, 1225, 9, 13, 1123, 1458, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 22, 4, 6, 7, 16, {70,75,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Falkland Islands
- { 75, 66, 82, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 1247, 9, 13, 1123, 1474, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 13, 4, 6, 7, 4, {70,74,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Fiji
- { 75, 66, 83, 0, 0, 275, 275, 6, 1, 14, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 147, 147, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 14, 73, 19, 0, 1123, 1478, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 9, 4, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 0, 7, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Finland
- { 75, 66, 89, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 182, 1260, 9, 13, 1123, 1485, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 14, 4, 6, 7, 6, {71,77,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Gambia
- { 75, 66, 91, 0, 0, 275, 275, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 14, 73, 19, 0, 1123, 1491, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 0, 7, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Germany
- { 75, 66, 92, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 7, 1274, 9, 13, 1123, 1498, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 13, 4, 6, 7, 5, {71,72,83}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Ghana
- { 75, 66, 93, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 92, 1287, 9, 13, 1123, 1503, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 15, 4, 6, 7, 9, {71,73,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Gibraltar
- { 75, 66, 96, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 978, 9, 13, 1123, 1512, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 21, 4, 6, 7, 7, {88,67,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Grenada
- { 75, 66, 98, 0, 0, 265, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 339, 10, 22, 0, 0, 56, 56, 83, 83, 0, 0, 0, 5, 22, 2, 969, 9, 13, 1123, 1519, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 9, 4, 6, 7, 4, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Guam
- { 75, 66, 100, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 92, 1302, 9, 13, 1123, 1523, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 8, 4, 6, 7, 8, {71,66,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Guernsey
- { 75, 66, 103, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 1310, 9, 13, 1123, 1531, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 16, 4, 6, 7, 6, {71,89,68}, 2, 0, 1, 6, 7, 1, 3, 3 }, // English/Latin/Guyana
- { 75, 66, 107, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 87, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 141, 1326, 9, 13, 1123, 1537, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 16, 4, 6, 7, 19, {72,75,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Hong Kong
- { 75, 66, 110, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 192, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 118, 1342, 9, 13, 1123, 1258, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 12, 4, 6, 7, 5, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // English/Latin/India
- { 75, 66, 114, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 71, 127, 0, 0, 0, 0, 56, 56, 83, 83, 165, 164, 0, 5, 22, 14, 73, 9, 13, 1123, 1556, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 56, 56, 27, 27, 13, 13, 4, 4, 5, 17, 23, 1, 4, 4, 6, 7, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Ireland
- { 75, 66, 115, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 92, 1302, 9, 13, 1123, 1563, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 8, 4, 6, 7, 11, {71,66,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Isle Of Man
- { 75, 66, 116, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 1, 1, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 46, 1354, 9, 13, 1123, 1574, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 9, 4, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 18, 4, 6, 7, 6, {73,76,83}, 2, 1, 7, 5, 6, 1, 3, 3 }, // English/Latin/Israel
- { 75, 66, 119, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 87, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 1372, 9, 13, 1123, 1580, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 15, 4, 6, 7, 7, {74,77,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Jamaica
- { 75, 66, 121, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 92, 1302, 9, 13, 1123, 1587, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 8, 4, 6, 7, 6, {71,66,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Jersey
- { 75, 66, 124, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 175, 1387, 9, 13, 1123, 1109, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 15, 4, 6, 7, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Kenya
- { 75, 66, 125, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 999, 9, 13, 1123, 1593, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 17, 4, 6, 7, 8, {65,85,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Kiribati
- { 75, 66, 133, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 1, 1402, 9, 13, 1123, 1601, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 18, 4, 6, 7, 7, {90,65,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Lesotho
- { 75, 66, 134, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 1420, 9, 13, 1123, 1608, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 15, 4, 6, 7, 7, {76,82,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Liberia
- { 75, 66, 139, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 153, 1435, 9, 13, 1123, 1615, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 4, 15, 4, 6, 7, 15, {77,79,80}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Macao
- { 75, 66, 141, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 183, 1450, 9, 13, 1123, 1630, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 2, 15, 4, 6, 7, 10, {77,71,65}, 0, 0, 1, 6, 7, 1, 3, 3 }, // English/Latin/Madagascar
- { 75, 66, 142, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 185, 1465, 9, 13, 1123, 1640, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 2, 15, 4, 6, 7, 6, {77,87,75}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Malawi
- { 75, 66, 143, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 187, 1480, 9, 13, 1123, 1646, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 2, 17, 4, 6, 7, 8, {77,89,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Malaysia
- { 75, 66, 146, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 14, 73, 9, 13, 1123, 1654, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 4, 6, 7, 5, {69,85,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Malta
- { 75, 66, 147, 0, 0, 265, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 339, 10, 22, 0, 0, 56, 56, 83, 83, 0, 0, 0, 5, 22, 2, 969, 9, 13, 1123, 1659, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 9, 4, 6, 7, 16, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Marshall Islands
- { 75, 66, 150, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 189, 1497, 9, 13, 1123, 1675, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 2, 15, 4, 6, 7, 9, {77,85,82}, 2, 0, 1, 6, 7, 1, 3, 3 }, // English/Latin/Mauritius
- { 75, 66, 153, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 146, 969, 9, 13, 1123, 1684, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 9, 4, 6, 7, 10, {85,83,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Micronesia
- { 75, 66, 158, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 978, 9, 13, 1123, 1694, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 21, 4, 6, 7, 10, {88,67,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Montserrat
- { 75, 66, 162, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 1512, 9, 13, 1123, 1704, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 15, 4, 6, 7, 7, {78,65,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Namibia
- { 75, 66, 163, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 999, 9, 13, 1123, 1711, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 17, 4, 6, 7, 5, {65,85,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Nauru
- { 75, 66, 165, 0, 0, 275, 275, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 14, 73, 4, 37, 1123, 1716, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 7, 7, 11, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Netherlands
- { 75, 66, 167, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 128, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 1166, 9, 13, 1123, 1727, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 7, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 18, 4, 6, 7, 11, {78,90,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/New Zealand
- { 75, 66, 169, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 122, 1527, 9, 13, 1123, 1738, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 14, 4, 6, 7, 7, {78,71,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Nigeria
- { 75, 66, 171, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 1166, 9, 13, 1123, 1745, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 18, 4, 6, 7, 4, {78,90,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Niue
- { 75, 66, 172, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 999, 9, 13, 1123, 1749, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 17, 4, 6, 7, 14, {65,85,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Norfolk Island
- { 75, 66, 173, 0, 0, 265, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 339, 10, 22, 0, 0, 56, 56, 83, 83, 0, 0, 0, 5, 22, 2, 969, 9, 13, 1123, 1763, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 9, 4, 6, 7, 24, {85,83,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Northern Mariana Islands
- { 75, 66, 178, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 189, 1541, 9, 13, 1123, 1787, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 2, 15, 4, 6, 7, 8, {80,75,82}, 2, 0, 7, 6, 7, 1, 3, 3 }, // English/Latin/Pakistan
- { 75, 66, 179, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 146, 969, 9, 13, 1123, 1795, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 9, 4, 6, 7, 5, {85,83,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Palau
- { 75, 66, 182, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 133, 1556, 9, 13, 1123, 1800, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 22, 4, 6, 7, 16, {80,71,75}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Papua New Guinea
- { 75, 66, 185, 0, 0, 265, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 339, 10, 22, 0, 0, 56, 56, 83, 83, 0, 0, 0, 5, 22, 145, 663, 9, 13, 1123, 1816, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 15, 4, 6, 7, 11, {80,72,80}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Philippines
- { 75, 66, 186, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 1166, 9, 13, 1123, 1827, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 18, 4, 6, 7, 16, {78,90,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Pitcairn
- { 75, 66, 189, 0, 0, 265, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 339, 10, 22, 0, 0, 56, 56, 83, 83, 0, 0, 0, 5, 22, 2, 969, 9, 13, 1123, 1843, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 9, 4, 6, 7, 11, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Puerto Rico
- { 75, 66, 194, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 191, 1578, 9, 13, 1123, 1854, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 2, 13, 4, 6, 7, 6, {82,87,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // English/Latin/Rwanda
- { 75, 66, 196, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 92, 1591, 9, 13, 1123, 1860, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 15, 4, 6, 7, 10, {83,72,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Saint Helena
- { 75, 66, 197, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 978, 9, 13, 1123, 1870, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 21, 4, 6, 7, 17, {88,67,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Saint Kitts And Nevis
- { 75, 66, 198, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 978, 9, 13, 1123, 1887, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 21, 4, 6, 7, 9, {88,67,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Saint Lucia
- { 75, 66, 201, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 978, 9, 13, 1123, 1896, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 21, 4, 6, 7, 24, {88,67,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Saint Vincent And Grenadines
- { 75, 66, 202, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 193, 1606, 9, 13, 1123, 1152, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 11, 4, 6, 7, 5, {87,83,84}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Samoa
- { 75, 66, 208, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 196, 1617, 9, 13, 1123, 1920, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 2, 17, 4, 6, 7, 10, {83,67,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Seychelles
- { 75, 66, 209, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 10, 1634, 9, 13, 1123, 1930, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 2, 20, 4, 6, 7, 12, {83,76,76}, 0, 0, 1, 6, 7, 1, 3, 3 }, // English/Latin/Sierra Leone
- { 75, 66, 210, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 87, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 1654, 9, 13, 1123, 1942, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 16, 4, 6, 7, 9, {83,71,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Singapore
- { 75, 66, 211, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 168, 1670, 9, 13, 1123, 1951, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 4, 29, 4, 6, 7, 12, {65,78,71}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Sint Maarten
- { 75, 66, 213, 0, 0, 275, 275, 6, 1, 0, 2, 3, 4, 5, 6, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 14, 73, 19, 24, 1123, 1963, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 7, 7, 8, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Slovenia
- { 75, 66, 214, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 1699, 9, 13, 1123, 1971, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 22, 4, 6, 7, 15, {83,66,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Solomon Islands
- { 75, 66, 216, 0, 0, 275, 275, 6, 1, 14, 2, 3, 4, 5, 9, 10, 11, 12, 13, 618, 636, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 1, 1402, 9, 13, 1123, 1986, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 18, 4, 6, 7, 12, {90,65,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/South Africa
- { 75, 66, 219, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 92, 1721, 9, 13, 1123, 1998, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 20, 4, 6, 7, 11, {83,83,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/South Sudan
- { 75, 66, 222, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 0, 1741, 9, 13, 1123, 2009, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 0, 14, 4, 6, 7, 5, {83,68,71}, 2, 1, 6, 5, 6, 1, 3, 3 }, // English/Latin/Sudan
- { 75, 66, 225, 0, 0, 275, 275, 6, 1, 14, 2, 3, 4, 5, 52, 10, 11, 12, 13, 0, 44, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 161, 1755, 19, 0, 1123, 2014, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 2, 13, 5, 0, 7, 6, {83,69,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // English/Latin/Sweden
- { 75, 66, 226, 0, 0, 275, 275, 6, 0, 13, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 0, 1768, 4, 44, 1123, 2020, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 0, 11, 5, 5, 7, 11, {67,72,70}, 2, 0, 1, 6, 7, 1, 3, 3 }, // English/Latin/Switzerland
- { 75, 66, 230, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 119, 1779, 9, 13, 1123, 2031, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 18, 4, 6, 7, 8, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // English/Latin/Tanzania
- { 75, 66, 234, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 1166, 9, 13, 1123, 2039, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 18, 4, 6, 7, 7, {78,90,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Tokelau
- { 75, 66, 235, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 198, 1797, 9, 13, 1123, 2046, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 2, 14, 4, 6, 7, 5, {84,79,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Tonga
- { 75, 66, 236, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 1811, 9, 13, 1123, 2051, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 24, 4, 6, 7, 17, {84,84,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Trinidad And Tobago
- { 75, 66, 241, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 146, 969, 9, 13, 1123, 2068, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 9, 4, 6, 7, 22, {85,83,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Turks And Caicos Islands
- { 75, 66, 242, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 2, 999, 9, 13, 1123, 2090, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 17, 4, 6, 7, 6, {65,85,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Tuvalu
- { 75, 66, 243, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 149, 1835, 9, 13, 1123, 857, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 16, 4, 6, 7, 6, {85,71,88}, 0, 0, 1, 7, 7, 1, 3, 3 }, // English/Latin/Uganda
- { 75, 66, 245, 0, 0, 265, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 0, 0, 0, 5, 22, 200, 1851, 9, 13, 1123, 2096, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 27, 4, 6, 7, 20, {65,69,68}, 2, 1, 6, 5, 6, 1, 3, 3 }, // English/Latin/United Arab Emirates
- { 75, 66, 246, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 92, 1878, 9, 13, 2116, 2131, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 13, 4, 6, 15, 14, {71,66,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/United Kingdom
- { 75, 66, 247, 0, 0, 265, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 339, 10, 22, 0, 0, 56, 56, 83, 83, 0, 0, 0, 5, 22, 2, 969, 9, 13, 1123, 2145, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 9, 4, 6, 7, 21, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/United States Outlying Islands
- { 75, 66, 249, 0, 0, 265, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 339, 10, 22, 0, 0, 56, 56, 83, 83, 0, 0, 0, 5, 22, 2, 969, 9, 13, 1123, 2166, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 9, 4, 6, 7, 19, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/United States Virgin Islands
- { 75, 66, 252, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 203, 1891, 9, 13, 1123, 2185, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 2, 12, 4, 6, 7, 7, {86,85,86}, 0, 0, 1, 6, 7, 1, 3, 3 }, // English/Latin/Vanuatu
- { 75, 66, 258, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 0, 0, 9, 13, 1123, 2192, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 0, 0, 4, 6, 7, 5, {0,0,0}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/World
- { 75, 66, 260, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 133, 1903, 9, 13, 1123, 543, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 14, 4, 6, 7, 6, {90,77,87}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Zambia
- { 75, 66, 261, 0, 0, 275, 275, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 618, 87, 0, 0, 0, 0, 56, 56, 83, 83, 82, 195, 0, 5, 22, 146, 969, 9, 13, 1123, 2197, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 9, 4, 6, 7, 8, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Zimbabwe
- { 76, 27, 193, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 130, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {82,85,66}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Erzya/Cyrillic/Russia
- { 77, 66, 258, 0, 0, 284, 284, 6, 1, 14, 2, 3, 40, 5, 9, 10, 11, 12, 13, 646, 46, 205, 0, 4586, 4586, 4636, 4636, 4656, 4656, 189, 197, 316, 5, 22, 0, 0, 4, 0, 2205, 2214, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 26, 8, 25, 5, 50, 50, 20, 20, 13, 13, 3, 3, 6, 17, 23, 0, 0, 5, 0, 9, 5, {0,0,0}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Esperanto/Latin/World
- { 78, 66, 75, 0, 0, 293, 293, 6, 1, 14, 2, 3, 40, 5, 52, 15, 10, 16, 12, 345, 184, 0, 0, 4669, 4669, 4731, 4731, 4731, 4731, 0, 0, 322, 5, 22, 14, 420, 19, 24, 2219, 2224, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 18, 8, 10, 5, 62, 62, 13, 13, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 5, 5, {69,85,82}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Estonian/Latin/Estonia
- { 79, 66, 92, 0, 0, 301, 312, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 672, 339, 230, 230, 4744, 4744, 4787, 4787, 4814, 4814, 192, 200, 0, 5, 22, 7, 1917, 9, 13, 2229, 2235, 6, 6, 11, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 6, 17, 12, 43, 43, 27, 27, 13, 13, 3, 5, 4, 17, 23, 3, 10, 4, 6, 6, 12, {71,72,83}, 2, 1, 1, 6, 7, 3, 3, 3 }, // Ewe/Latin/Ghana
- { 79, 66, 233, 0, 0, 301, 312, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 672, 339, 0, 0, 4744, 4744, 4787, 4787, 4814, 4814, 192, 200, 0, 5, 22, 124, 1927, 9, 13, 2229, 2247, 6, 6, 11, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 6, 10, 5, 43, 43, 27, 27, 13, 13, 3, 5, 4, 17, 23, 5, 33, 4, 6, 6, 11, {88,79,70}, 0, 0, 1, 6, 7, 3, 3, 3 }, // Ewe/Latin/Togo
- { 80, 66, 40, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 10, 11, 71, 87, 0, 0, 4827, 4827, 4911, 4911, 4940, 4940, 195, 205, 0, 5, 22, 3, 1960, 19, 0, 2258, 2264, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 84, 84, 29, 29, 13, 13, 7, 9, 4, 17, 23, 4, 16, 5, 0, 6, 7, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Ewondo/Latin/Cameroon
- { 81, 66, 81, 0, 0, 231, 231, 6, 1, 0, 2, 3, 40, 5, 9, 10, 11, 12, 13, 345, 184, 0, 0, 4953, 4953, 5026, 5053, 5087, 5087, 0, 0, 328, 5, 22, 161, 1976, 19, 24, 2271, 2279, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 10, 5, 73, 73, 27, 34, 13, 13, 2, 2, 3, 17, 23, 2, 11, 5, 7, 8, 7, {68,75,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Faroese/Latin/Faroe Islands
- { 81, 66, 65, 0, 0, 231, 231, 6, 1, 0, 2, 3, 40, 5, 9, 10, 11, 12, 13, 345, 184, 0, 0, 4953, 4953, 5026, 5053, 5087, 5087, 0, 0, 328, 5, 22, 161, 1976, 19, 24, 2271, 986, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 10, 5, 73, 73, 27, 34, 13, 13, 2, 2, 3, 17, 23, 3, 11, 5, 7, 8, 7, {68,75,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Faroese/Latin/Denmark
- { 83, 66, 185, 0, 0, 322, 331, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 339, 10, 22, 5100, 5100, 5154, 5154, 5154, 5154, 0, 0, 0, 5, 22, 145, 1987, 9, 13, 2286, 729, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7, 54, 54, 27, 27, 27, 27, 2, 2, 5, 17, 23, 1, 17, 4, 6, 8, 9, {80,72,80}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Filipino/Latin/Philippines
- { 84, 66, 83, 0, 0, 293, 293, 6, 1, 14, 2, 3, 40, 5, 9, 11, 11, 13, 13, 520, 695, 147, 147, 5181, 5247, 5327, 5327, 5347, 5347, 202, 214, 331, 336, 353, 14, 420, 19, 0, 2294, 2299, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 9, 4, 66, 80, 20, 20, 13, 13, 3, 3, 5, 17, 23, 1, 4, 5, 0, 5, 5, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Finnish/Latin/Finland
- { 85, 66, 84, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 14, 420, 19, 24, 2304, 2312, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 8, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/France
- { 85, 66, 4, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 10, 22, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 182, 2004, 19, 24, 2304, 2318, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 12, 7, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 2, 14, 5, 7, 8, 7, {68,90,68}, 2, 1, 6, 5, 6, 1, 3, 3 }, // French/Latin/Algeria
- { 85, 66, 23, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 128, 247, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 14, 420, 19, 24, 2304, 2325, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 7, 23, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 8, 8, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Belgium
- { 85, 66, 25, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 124, 2018, 19, 24, 2304, 2333, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 5, 17, 5, 7, 8, 5, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Benin
- { 85, 66, 37, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 124, 2018, 19, 24, 2304, 2338, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 5, 17, 5, 7, 8, 12, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Burkina Faso
- { 85, 66, 38, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 178, 2035, 19, 24, 2304, 1302, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 3, 15, 5, 7, 8, 7, {66,73,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Burundi
- { 85, 66, 40, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 205, 217, 376, 232, 249, 3, 2050, 19, 24, 2304, 1011, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 5, 4, 6, 17, 23, 4, 16, 5, 7, 8, 8, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Cameroon
- { 85, 66, 41, 0, 0, 339, 339, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 11, 10, 71, 44, 270, 270, 5360, 5360, 5411, 5411, 5445, 5445, 165, 164, 376, 232, 249, 2, 2066, 19, 24, 2350, 1333, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 24, 9, 51, 51, 34, 34, 13, 13, 4, 4, 6, 17, 23, 1, 15, 5, 7, 17, 6, {67,65,68}, 2, 0, 7, 6, 7, 1, 3, 3 }, // French/Latin/Canada
- { 85, 66, 46, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 3, 2050, 19, 24, 2304, 2367, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 4, 16, 5, 7, 8, 25, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Central African Republic
- { 85, 66, 48, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 10, 22, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 3, 2050, 19, 24, 2304, 2392, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 12, 7, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 4, 16, 5, 7, 8, 5, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Chad
- { 85, 66, 55, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 4, 2081, 19, 24, 2304, 2397, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 2, 14, 5, 7, 8, 7, {75,77,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Comoros
- { 85, 66, 56, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 3, 2050, 19, 24, 2304, 2404, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 4, 16, 5, 7, 8, 17, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Congo Brazzaville
- { 85, 66, 57, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 3, 2095, 19, 24, 2304, 2421, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 2, 15, 5, 7, 8, 14, {67,68,70}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Congo Kinshasa
- { 85, 66, 67, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 10, 22, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 35, 2110, 19, 24, 2304, 2435, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 12, 7, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 3, 16, 5, 7, 8, 8, {68,74,70}, 0, 0, 6, 6, 7, 1, 3, 3 }, // French/Latin/Djibouti
- { 85, 66, 73, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 3, 2050, 19, 24, 2304, 2443, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 4, 16, 5, 7, 8, 18, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Equatorial Guinea
- { 85, 66, 85, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 14, 420, 19, 24, 2304, 2461, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 8, 16, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/French Guiana
- { 85, 66, 86, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 205, 2126, 19, 24, 2304, 2477, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 4, 9, 5, 7, 8, 19, {88,80,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/French Polynesia
- { 85, 66, 88, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 3, 2050, 19, 24, 2304, 2496, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 4, 16, 5, 7, 8, 5, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Gabon
- { 85, 66, 97, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 14, 420, 19, 24, 2304, 2501, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 8, 10, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Guadeloupe
- { 85, 66, 102, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 209, 2135, 19, 24, 2304, 2443, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 2, 13, 5, 7, 8, 6, {71,78,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Guinea
- { 85, 66, 104, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 7, 2148, 19, 24, 2304, 2511, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 16, 5, 7, 8, 5, {72,84,71}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Haiti
- { 85, 66, 118, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 124, 2018, 19, 24, 2304, 2516, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 5, 17, 5, 7, 8, 13, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Ivory Coast
- { 85, 66, 138, 0, 0, 339, 339, 6, 1, 0, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 14, 420, 19, 24, 2304, 2529, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 8, 10, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Luxembourg
- { 85, 66, 141, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 183, 2164, 19, 24, 2304, 1630, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 2, 15, 5, 7, 8, 10, {77,71,65}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Madagascar
- { 85, 66, 145, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 124, 2018, 19, 24, 2304, 467, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 5, 17, 5, 7, 8, 4, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Mali
- { 85, 66, 148, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 14, 420, 19, 24, 2304, 2539, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 8, 10, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Martinique
- { 85, 66, 149, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 10, 22, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 211, 2179, 19, 24, 2304, 2549, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 12, 7, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 2, 19, 5, 7, 8, 10, {77,82,85}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Mauritania
- { 85, 66, 150, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 189, 2198, 19, 24, 2304, 2559, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 2, 18, 5, 7, 8, 7, {77,85,82}, 2, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Mauritius
- { 85, 66, 151, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 14, 420, 19, 24, 2304, 2566, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 8, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Mayotte
- { 85, 66, 155, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 14, 420, 19, 24, 2304, 2573, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 8, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Monaco
- { 85, 66, 159, 0, 0, 339, 339, 6, 1, 0, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 165, 164, 376, 232, 249, 213, 2216, 19, 24, 2304, 2579, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 4, 4, 6, 17, 23, 3, 15, 5, 7, 8, 5, {77,65,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Morocco
- { 85, 66, 166, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 205, 2126, 19, 24, 2304, 2584, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 4, 9, 5, 7, 8, 18, {88,80,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/New Caledonia
- { 85, 66, 170, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 124, 2018, 19, 24, 2304, 1738, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 5, 17, 5, 7, 8, 5, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Niger
- { 85, 66, 191, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 14, 420, 19, 24, 2304, 2602, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 8, 10, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Reunion
- { 85, 66, 194, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 191, 2231, 19, 24, 2304, 1854, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 2, 14, 5, 7, 8, 6, {82,87,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Rwanda
- { 85, 66, 195, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 14, 420, 19, 24, 2304, 2612, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 8, 16, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Saint Barthelemy
- { 85, 66, 199, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 14, 420, 19, 24, 2304, 2628, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 8, 12, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Saint Martin
- { 85, 66, 200, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 14, 420, 19, 24, 2304, 2640, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 8, 24, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Saint Pierre And Miquelon
- { 85, 66, 206, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 124, 2018, 19, 24, 2304, 2664, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 5, 17, 5, 7, 8, 7, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Senegal
- { 85, 66, 208, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 196, 2245, 19, 24, 2304, 1920, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 2, 21, 5, 7, 8, 10, {83,67,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Seychelles
- { 85, 66, 226, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 19, 20, 0, 184, 294, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 216, 2266, 19, 24, 2671, 2686, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 14, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 3, 12, 5, 7, 15, 6, {67,72,70}, 2, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Switzerland
- { 85, 66, 227, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 10, 22, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 219, 2278, 19, 24, 2304, 2692, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 12, 7, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 2, 14, 5, 7, 8, 5, {83,89,80}, 0, 0, 6, 5, 6, 1, 3, 3 }, // French/Latin/Syria
- { 85, 66, 233, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 124, 2018, 19, 24, 2304, 2247, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 5, 17, 5, 7, 8, 4, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Togo
- { 85, 66, 238, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 10, 22, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 221, 2292, 19, 24, 2304, 2697, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 12, 7, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 2, 14, 5, 7, 8, 7, {84,78,68}, 3, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Tunisia
- { 85, 66, 252, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 10, 22, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 203, 2306, 19, 24, 2304, 2185, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 12, 7, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 2, 14, 5, 7, 8, 7, {86,85,86}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Vanuatu
- { 85, 66, 256, 0, 0, 339, 339, 6, 1, 57, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 127, 0, 0, 5360, 5360, 5411, 5411, 5445, 5445, 0, 0, 376, 232, 249, 205, 2126, 19, 24, 2304, 2704, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 4, 9, 5, 7, 8, 16, {88,80,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Wallis And Futuna
- { 86, 66, 117, 0, 0, 347, 347, 6, 1, 0, 2, 3, 4, 5, 9, 12, 13, 10, 11, 703, 127, 0, 0, 5458, 5458, 5507, 5507, 5445, 5445, 5, 124, 0, 5, 22, 14, 420, 4, 0, 2720, 2726, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 10, 5, 49, 49, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 4, 5, 0, 6, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Friulian/Latin/Italy
- { 87, 66, 206, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 15, 11, 16, 13, 71, 87, 0, 0, 5534, 5534, 5592, 5592, 5619, 5619, 210, 221, 0, 5, 22, 124, 2320, 19, 0, 2732, 2738, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 58, 58, 27, 27, 13, 13, 6, 7, 4, 17, 23, 5, 19, 5, 0, 6, 8, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Latin/Senegal
- { 87, 1, 37, 354, 354, 354, 360, 6, 0, 58, 2, 59, 4, 5, 9, 10, 11, 12, 13, 730, 210, 0, 0, 5632, 5632, 5750, 5750, 5802, 5802, 216, 228, 382, 394, 22, 223, 2339, 4, 0, 2746, 2756, 6, 6, 6, 8, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 17, 8, 10, 5,118,118, 52, 52, 22, 22, 4, 4, 12, 27, 23, 6, 51, 5, 0, 10, 25, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Adlam/Burkina Faso
- { 87, 1, 40, 354, 354, 354, 360, 6, 0, 58, 2, 59, 4, 5, 9, 10, 11, 12, 13, 730, 210, 0, 0, 5632, 5632, 5750, 5750, 5802, 5802, 216, 228, 382, 394, 22, 229, 2390, 4, 0, 2746, 2781, 6, 6, 6, 8, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 17, 8, 10, 5,118,118, 52, 52, 22, 22, 4, 4, 12, 27, 23, 8, 44, 5, 0, 10, 16, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Adlam/Cameroon
- { 87, 1, 89, 354, 354, 354, 360, 6, 0, 58, 2, 59, 4, 5, 9, 10, 11, 12, 13, 730, 210, 10, 22, 5632, 5632, 5750, 5750, 5802, 5802, 216, 228, 382, 394, 22, 182, 2434, 4, 0, 2746, 2797, 6, 6, 6, 8, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 17, 8, 12, 7,118,118, 52, 52, 22, 22, 4, 4, 12, 27, 23, 1, 29, 5, 0, 10, 14, {71,77,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Fulah/Adlam/Gambia
- { 87, 1, 92, 354, 354, 354, 360, 6, 0, 58, 2, 59, 4, 5, 9, 10, 11, 12, 13, 730, 210, 10, 22, 5632, 5632, 5750, 5750, 5802, 5802, 216, 228, 382, 394, 22, 7, 2463, 4, 0, 2746, 2811, 6, 6, 6, 8, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 17, 8, 12, 7,118,118, 52, 52, 22, 22, 4, 4, 12, 27, 23, 3, 23, 5, 0, 10, 8, {71,72,83}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Fulah/Adlam/Ghana
- { 87, 1, 101, 354, 354, 354, 360, 6, 0, 58, 2, 59, 4, 5, 9, 10, 11, 12, 13, 730, 210, 0, 0, 5632, 5632, 5750, 5750, 5802, 5802, 216, 228, 382, 394, 22, 223, 2339, 4, 0, 2746, 2819, 6, 6, 6, 8, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 17, 8, 10, 5,118,118, 52, 52, 22, 22, 4, 4, 12, 27, 23, 6, 51, 5, 0, 10, 23, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Adlam/Guinea Bissau
- { 87, 1, 102, 354, 354, 354, 360, 6, 0, 58, 2, 59, 4, 5, 9, 10, 11, 12, 13, 730, 210, 0, 0, 5632, 5632, 5750, 5750, 5802, 5802, 216, 228, 382, 394, 22, 209, 2486, 4, 0, 2746, 2819, 6, 6, 6, 8, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 17, 8, 10, 5,118,118, 52, 52, 22, 22, 4, 4, 12, 27, 23, 2, 25, 5, 0, 10, 8, {71,78,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Adlam/Guinea
- { 87, 1, 134, 354, 354, 354, 360, 6, 0, 58, 2, 59, 4, 5, 9, 10, 11, 12, 13, 730, 210, 10, 22, 5632, 5632, 5750, 5750, 5802, 5802, 216, 228, 382, 394, 22, 2, 2511, 4, 0, 2746, 2842, 6, 6, 6, 8, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 17, 8, 12, 7,118,118, 52, 52, 22, 22, 4, 4, 12, 27, 23, 1, 31, 5, 0, 10, 18, {76,82,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Fulah/Adlam/Liberia
- { 87, 1, 149, 354, 354, 354, 360, 6, 0, 58, 2, 59, 4, 5, 9, 10, 11, 12, 13, 730, 210, 10, 22, 5632, 5632, 5750, 5750, 5802, 5802, 216, 228, 382, 394, 22, 211, 2542, 4, 0, 2746, 2860, 6, 6, 6, 8, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 17, 8, 12, 7,118,118, 52, 52, 22, 22, 4, 4, 12, 27, 23, 2, 37, 5, 0, 10, 16, {77,82,85}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Fulah/Adlam/Mauritania
- { 87, 1, 169, 354, 354, 354, 360, 6, 0, 58, 2, 59, 4, 5, 9, 10, 11, 12, 13, 730, 210, 0, 0, 5632, 5632, 5750, 5750, 5802, 5802, 216, 228, 382, 394, 22, 122, 2579, 4, 0, 2746, 2876, 6, 6, 6, 8, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 17, 8, 10, 5,118,118, 52, 52, 22, 22, 4, 4, 12, 27, 23, 1, 33, 5, 0, 10, 18, {78,71,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Fulah/Adlam/Nigeria
- { 87, 1, 170, 354, 354, 354, 360, 6, 0, 58, 2, 59, 4, 5, 9, 10, 11, 12, 13, 730, 210, 0, 0, 5632, 5632, 5750, 5750, 5802, 5802, 216, 228, 382, 394, 22, 223, 2339, 4, 0, 2746, 2894, 6, 6, 6, 8, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 17, 8, 10, 5,118,118, 52, 52, 22, 22, 4, 4, 12, 27, 23, 6, 51, 5, 0, 10, 12, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Adlam/Niger
- { 87, 1, 206, 354, 354, 354, 360, 6, 0, 58, 2, 59, 4, 5, 9, 10, 11, 12, 13, 730, 210, 0, 0, 5632, 5632, 5750, 5750, 5802, 5802, 216, 228, 382, 394, 22, 223, 2339, 4, 0, 2746, 2906, 6, 6, 6, 8, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 17, 8, 10, 5,118,118, 52, 52, 22, 22, 4, 4, 12, 27, 23, 6, 51, 5, 0, 10, 16, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Adlam/Senegal
- { 87, 1, 209, 354, 354, 354, 360, 6, 0, 58, 2, 59, 4, 5, 9, 10, 11, 12, 13, 730, 210, 10, 22, 5632, 5632, 5750, 5750, 5802, 5802, 216, 228, 382, 394, 22, 10, 2612, 4, 0, 2746, 2922, 6, 6, 6, 8, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 17, 8, 12, 7,118,118, 52, 52, 22, 22, 4, 4, 12, 27, 23, 2, 33, 5, 0, 10, 14, {83,76,76}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Adlam/Sierra Leone
- { 87, 66, 37, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 15, 11, 16, 13, 71, 87, 0, 0, 5534, 5534, 5592, 5592, 5619, 5619, 210, 221, 0, 5, 22, 124, 2320, 19, 0, 2732, 2936, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 58, 58, 27, 27, 13, 13, 6, 7, 4, 17, 23, 5, 19, 5, 0, 6, 14, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Latin/Burkina Faso
- { 87, 66, 40, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 15, 11, 16, 13, 71, 87, 0, 0, 5534, 5534, 5592, 5592, 5619, 5619, 210, 221, 0, 5, 22, 3, 2645, 19, 0, 2732, 2950, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 58, 58, 27, 27, 13, 13, 6, 7, 4, 17, 23, 4, 18, 5, 0, 6, 8, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Latin/Cameroon
- { 87, 66, 89, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 15, 11, 16, 13, 71, 87, 10, 22, 5534, 5534, 5592, 5592, 5619, 5619, 210, 221, 0, 5, 22, 182, 2663, 19, 0, 2732, 2958, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 12, 7, 58, 58, 27, 27, 13, 13, 6, 7, 4, 17, 23, 1, 13, 5, 0, 6, 6, {71,77,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Fulah/Latin/Gambia
- { 87, 66, 92, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 15, 11, 16, 13, 71, 87, 10, 22, 5534, 5534, 5592, 5592, 5619, 5619, 210, 221, 0, 5, 22, 7, 0, 19, 0, 2732, 2964, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 12, 7, 58, 58, 27, 27, 13, 13, 6, 7, 4, 17, 23, 3, 0, 5, 0, 6, 5, {71,72,83}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Fulah/Latin/Ghana
- { 87, 66, 101, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 15, 11, 16, 13, 71, 87, 0, 0, 5534, 5534, 5592, 5592, 5619, 5619, 210, 221, 0, 5, 22, 124, 2320, 19, 0, 2732, 2969, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 58, 58, 27, 27, 13, 13, 6, 7, 4, 17, 23, 5, 19, 5, 0, 6, 12, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Latin/Guinea Bissau
- { 87, 66, 102, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 15, 11, 16, 13, 71, 87, 0, 0, 5534, 5534, 5592, 5592, 5619, 5619, 210, 221, 0, 5, 22, 209, 0, 19, 0, 2732, 2969, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 58, 58, 27, 27, 13, 13, 6, 7, 4, 17, 23, 2, 0, 5, 0, 6, 4, {71,78,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Latin/Guinea
- { 87, 66, 134, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 15, 11, 16, 13, 71, 87, 10, 22, 5534, 5534, 5592, 5592, 5619, 5619, 210, 221, 0, 5, 22, 2, 2676, 19, 0, 2732, 2981, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 12, 7, 58, 58, 27, 27, 13, 13, 6, 7, 4, 17, 23, 1, 16, 5, 0, 6, 9, {76,82,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Fulah/Latin/Liberia
- { 87, 66, 149, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 15, 11, 16, 13, 71, 87, 10, 22, 5534, 5534, 5592, 5592, 5619, 5619, 210, 221, 0, 5, 22, 211, 2692, 19, 0, 2732, 2990, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 12, 7, 58, 58, 27, 27, 13, 13, 6, 7, 4, 17, 23, 2, 15, 5, 0, 6, 8, {77,82,85}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Fulah/Latin/Mauritania
- { 87, 66, 169, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 15, 11, 16, 13, 71, 87, 0, 0, 5534, 5534, 5592, 5592, 5619, 5619, 210, 221, 0, 5, 22, 122, 2707, 19, 0, 2732, 2998, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 58, 58, 27, 27, 13, 13, 6, 7, 4, 17, 23, 1, 16, 5, 0, 6, 9, {78,71,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Fulah/Latin/Nigeria
- { 87, 66, 170, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 15, 11, 16, 13, 71, 87, 0, 0, 5534, 5534, 5592, 5592, 5619, 5619, 210, 221, 0, 5, 22, 124, 2320, 19, 0, 2732, 3007, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 58, 58, 27, 27, 13, 13, 6, 7, 4, 17, 23, 5, 19, 5, 0, 6, 6, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Latin/Niger
- { 87, 66, 209, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 15, 11, 16, 13, 71, 87, 10, 22, 5534, 5534, 5592, 5592, 5619, 5619, 210, 221, 0, 5, 22, 10, 2723, 19, 0, 2732, 3013, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 12, 7, 58, 58, 27, 27, 13, 13, 6, 7, 4, 17, 23, 2, 18, 5, 0, 6, 11, {83,76,76}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Latin/Sierra Leone
- { 88, 66, 246, 0, 0, 368, 368, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 747, 127, 0, 0, 5824, 5824, 5892, 5892, 5919, 5919, 3, 131, 421, 5, 22, 92, 2741, 9, 13, 3024, 3032, 6, 6, 10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 10, 10, 5, 68, 68, 27, 27, 13, 13, 1, 1, 6, 17, 23, 1, 15, 4, 6, 8, 22, {71,66,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Gaelic/Latin/United Kingdom
- { 89, 66, 92, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 7, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 0, 5, 0, 0, 0, {71,72,83}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Ga/Latin/Ghana
- { 90, 66, 220, 0, 0, 347, 347, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 768, 127, 0, 0, 5932, 5980, 6028, 6062, 942, 6096, 165, 164, 0, 5, 22, 14, 420, 19, 0, 3054, 386, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 10, 5, 48, 48, 34, 34, 13, 20, 4, 4, 5, 17, 23, 1, 4, 5, 0, 6, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Galician/Latin/Spain
- { 91, 66, 243, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 6116, 6116, 6181, 6181, 6208, 6208, 0, 0, 0, 5, 22, 149, 2756, 0, 0, 3060, 3067, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 65, 65, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 19, 4, 0, 7, 7, {85,71,88}, 0, 0, 1, 7, 7, 1, 3, 3 }, // Ganda/Latin/Uganda
- { 92, 33, 77, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 0, 0, {69,84,66}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Geez/Ethiopic/Ethiopia
- { 93, 35, 90, 0, 0, 378, 378, 6, 1, 14, 2, 3, 4, 5, 9, 15, 10, 17, 18, 795, 184, 0, 0, 6221, 6221, 6282, 6282, 6309, 6309, 0, 0, 427, 432, 22, 0, 2775, 19, 0, 3074, 3081, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 8, 10, 5, 61, 61, 27, 27, 13, 13, 2, 2, 5, 29, 23, 1, 12, 5, 0, 7, 10, {71,69,76}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Georgian/Georgian/Georgia
- { 94, 66, 91, 0, 0, 386, 386, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 16, 12, 345, 184, 0, 0, 6322, 6322, 6381, 6401, 3667, 3667, 0, 0, 461, 5, 22, 14, 73, 19, 0, 3091, 3098, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 10, 5, 59, 59, 20, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 0, 7, 11, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // German/Latin/Germany
- { 94, 66, 16, 0, 0, 386, 386, 6, 1, 14, 2, 3, 4, 5, 9, 15, 10, 16, 12, 345, 184, 0, 0, 6322, 6322, 6381, 6401, 3667, 3667, 0, 0, 461, 5, 22, 14, 73, 19, 0, 3109, 3109, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 10, 5, 59, 59, 20, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 0, 24, 10, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // German/Latin/Austria
- { 94, 66, 23, 0, 0, 386, 386, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 16, 12, 345, 184, 0, 0, 6322, 6322, 6381, 6401, 3667, 3667, 0, 0, 461, 5, 22, 14, 73, 19, 0, 3091, 3133, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 10, 5, 59, 59, 20, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 0, 7, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // German/Latin/Belgium
- { 94, 66, 117, 0, 0, 386, 386, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 16, 12, 345, 184, 0, 0, 6322, 6322, 6381, 6401, 3667, 3667, 0, 0, 461, 5, 22, 14, 73, 19, 0, 3091, 3140, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 10, 5, 59, 59, 20, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 0, 7, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // German/Latin/Italy
- { 94, 66, 136, 0, 0, 386, 386, 6, 0, 13, 2, 3, 4, 5, 9, 15, 10, 16, 12, 345, 184, 0, 0, 6322, 6322, 6381, 6401, 3667, 3667, 0, 0, 461, 5, 22, 216, 2787, 19, 0, 3091, 3147, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 10, 5, 59, 59, 20, 27, 13, 13, 2, 2, 5, 17, 23, 3, 17, 5, 0, 7, 13, {67,72,70}, 2, 0, 1, 6, 7, 1, 3, 3 }, // German/Latin/Liechtenstein
- { 94, 66, 138, 0, 0, 386, 386, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 16, 12, 345, 184, 0, 0, 6322, 6322, 6381, 6401, 3667, 3667, 0, 0, 461, 5, 22, 14, 73, 19, 0, 3091, 3160, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 10, 5, 59, 59, 20, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 0, 7, 9, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // German/Latin/Luxembourg
- { 94, 66, 226, 0, 0, 386, 386, 6, 0, 13, 2, 3, 4, 5, 9, 15, 10, 16, 12, 345, 184, 0, 0, 6322, 6322, 6381, 6401, 3667, 3667, 0, 0, 461, 5, 22, 216, 2787, 19, 0, 3169, 3169, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 10, 5, 59, 59, 20, 27, 13, 13, 2, 2, 5, 17, 23, 3, 17, 5, 0, 21, 7, {67,72,70}, 2, 0, 1, 6, 7, 1, 3, 3 }, // German/Latin/Switzerland
- { 96, 39, 94, 0, 0, 395, 395, 6, 1, 0, 2, 3, 4, 5, 6, 17, 18, 10, 11, 71, 87, 10, 22, 6428, 6428, 6482, 6482, 6509, 6509, 220, 232, 0, 5, 22, 14, 2804, 19, 0, 3190, 3198, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 6, 12, 7, 54, 54, 27, 27, 13, 13, 4, 4, 4, 17, 23, 1, 4, 5, 0, 8, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Greek/Greek/Greece
- { 96, 39, 63, 0, 0, 395, 395, 6, 1, 0, 2, 3, 4, 5, 6, 17, 18, 10, 11, 71, 87, 10, 22, 6428, 6428, 6482, 6482, 6509, 6509, 220, 232, 0, 5, 22, 14, 2804, 19, 0, 3190, 3204, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 6, 12, 7, 54, 54, 27, 27, 13, 13, 4, 4, 4, 17, 23, 1, 4, 5, 0, 8, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Greek/Greek/Cyprus
- { 97, 66, 183, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 237, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {80,89,71}, 0, 0, 7, 6, 7, 1, 3, 3 }, // Guarani/Latin/Paraguay
- { 98, 40, 110, 0, 0, 404, 404, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 192, 87, 308, 321, 6522, 6522, 6574, 6574, 6605, 6605, 0, 0, 466, 5, 22, 118, 2808, 9, 13, 3210, 3217, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 13, 8, 52, 52, 31, 31, 18, 18, 2, 2, 4, 17, 23, 1, 13, 4, 6, 7, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Gujarati/Gujarati/India
- { 99, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 6623, 6623, 6684, 6684, 6711, 6711, 224, 236, 0, 5, 22, 175, 952, 9, 13, 3221, 1109, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 61, 61, 27, 27, 13, 13, 6, 3, 4, 17, 23, 3, 17, 4, 6, 8, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Gusii/Latin/Kenya
- { 101, 66, 169, 0, 0, 413, 422, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 814, 87, 0, 0, 6724, 6724, 6775, 6775, 6802, 6802, 230, 239, 0, 470, 511, 122, 2821, 4, 0, 3229, 3234, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 10, 5, 51, 51, 27, 27, 13, 13, 6, 5, 5, 41, 47, 1, 15, 5, 0, 5, 8, {78,71,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Hausa/Latin/Nigeria
- { 101, 4, 169, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 122, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {78,71,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Hausa/Arabic/Nigeria
- { 101, 66, 92, 0, 0, 413, 422, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 814, 87, 10, 22, 6724, 6724, 6775, 6775, 6802, 6802, 230, 239, 0, 470, 511, 7, 2836, 4, 0, 3229, 2964, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 12, 7, 51, 51, 27, 27, 13, 13, 6, 5, 5, 41, 47, 3, 13, 5, 0, 5, 4, {71,72,83}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Hausa/Latin/Ghana
- { 101, 66, 170, 0, 0, 413, 422, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 814, 87, 0, 0, 6724, 6724, 6775, 6775, 6802, 6802, 230, 239, 0, 470, 511, 124, 2849, 4, 0, 3229, 3242, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 10, 5, 51, 51, 27, 27, 13, 13, 6, 5, 5, 41, 47, 5, 29, 5, 0, 5, 5, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Hausa/Latin/Niger
- { 102, 66, 248, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 87, 10, 22, 6815, 6815, 6871, 6871, 83, 83, 0, 0, 0, 5, 22, 2, 0, 9, 13, 3247, 3261, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 12, 7, 56, 56, 20, 20, 13, 13, 2, 2, 4, 17, 23, 1, 0, 4, 6, 14, 19, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Hawaiian/Latin/United States
- { 103, 47, 116, 0, 0, 430, 430, 6, 0, 1, 2, 3, 35, 37, 9, 11, 11, 13, 13, 831, 695, 1, 1, 6891, 6891, 6955, 6955, 7000, 7000, 236, 244, 558, 5, 22, 46, 2878, 19, 0, 3280, 3285, 6, 6, 6, 6, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 18, 8, 9, 4, 64, 64, 45, 45, 20, 20, 6, 5, 4, 17, 23, 1, 7, 5, 0, 5, 5, {73,76,83}, 2, 1, 7, 5, 6, 1, 3, 3 }, // Hebrew/Hebrew/Israel
- { 105, 29, 110, 0, 0, 436, 445, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 87, 10, 22, 7020, 7020, 7072, 7072, 7103, 7103, 82, 195, 562, 5, 22, 118, 2885, 9, 0, 3290, 569, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 12, 7, 52, 52, 31, 31, 18, 18, 2, 2, 4, 17, 23, 1, 12, 4, 0, 6, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Hindi/Devanagari/India
- { 105, 66, 110, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 118, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Hindi/Latin/India
- { 107, 66, 108, 0, 0, 453, 453, 6, 1, 14, 2, 3, 4, 5, 9, 15, 11, 18, 17, 849, 868, 1, 1, 7121, 7121, 7172, 7172, 7190, 7190, 242, 249, 566, 5, 22, 238, 2897, 19, 0, 3296, 3302, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 13, 9, 4, 51, 51, 18, 18, 16, 16, 3, 3, 4, 17, 23, 2, 13, 5, 0, 6, 12, {72,85,70}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Hungarian/Latin/Hungary
- { 108, 66, 109, 0, 0, 231, 231, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 16, 12, 345, 695, 0, 0, 7206, 7206, 7286, 7286, 7320, 7320, 245, 252, 570, 5, 22, 240, 2910, 19, 0, 3314, 3322, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 10, 5, 80, 80, 34, 34, 13, 13, 4, 4, 4, 17, 23, 3, 13, 5, 0, 8, 6, {73,83,75}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Icelandic/Latin/Iceland
- { 109, 66, 258, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 0, 0, {0,0,0}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Ido/Latin/World
- { 110, 66, 169, 0, 0, 461, 470, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 87, 0, 0, 7333, 7333, 7386, 7386, 83, 83, 249, 256, 0, 5, 22, 122, 2923, 9, 13, 3328, 3332, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 10, 5, 53, 53, 28, 28, 13, 13, 7, 7, 4, 17, 23, 1, 5, 4, 6, 4, 8, {78,71,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Igbo/Latin/Nigeria
- { 111, 66, 83, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 10, 11, 12, 13, 881, 695, 147, 147, 7414, 7483, 7555, 7555, 83, 7582, 256, 263, 0, 5, 22, 14, 420, 19, 0, 3340, 3351, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 9, 4, 69, 72, 27, 27, 13, 13, 3, 3, 4, 17, 23, 1, 4, 5, 0, 11, 5, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Inari Sami/Latin/Finland
- { 112, 66, 111, 0, 0, 478, 488, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 618, 127, 146, 146, 7595, 7595, 7637, 7637, 7664, 7664, 0, 0, 0, 5, 22, 243, 2928, 9, 0, 3356, 3356, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 10, 5, 42, 42, 27, 27, 13, 13, 2, 2, 4, 17, 23, 2, 16, 4, 0, 9, 9, {73,68,82}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Indonesian/Latin/Indonesia
- { 114, 66, 258, 0, 0, 347, 347, 6, 1, 0, 2, 3, 4, 5, 9, 12, 13, 10, 11, 899, 432, 0, 0, 7677, 7677, 7733, 7733, 7760, 7760, 0, 0, 0, 5, 22, 0, 0, 4, 37, 3365, 3376, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 26, 10, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 0, 0, 5, 7, 11, 5, {0,0,0}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Interlingua/Latin/World
- { 116, 18, 41, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 245, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 0, 5, 0, 0, 0, {67,65,68}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Inuktitut/Canadian Aboriginal/Canada
- { 116, 66, 41, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 245, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 0, 5, 0, 0, 0, {67,65,68}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Inuktitut/Latin/Canada
- { 118, 66, 114, 0, 0, 368, 368, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 71, 127, 0, 0, 7773, 7773, 7847, 7847, 7883, 7883, 259, 266, 574, 5, 22, 14, 73, 9, 13, 3381, 3388, 6, 6, 10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 74, 74, 36, 36, 13, 13, 4, 4, 6, 17, 23, 1, 4, 4, 6, 7, 4, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Irish/Latin/Ireland
- { 118, 66, 246, 0, 0, 368, 368, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 71, 127, 0, 0, 7773, 7773, 7847, 7847, 7883, 7883, 259, 266, 574, 5, 22, 92, 2944, 9, 13, 3381, 3392, 6, 6, 10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 74, 74, 36, 36, 13, 13, 4, 4, 6, 17, 23, 1, 14, 4, 6, 7, 19, {71,66,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Irish/Latin/United Kingdom
- { 119, 66, 117, 0, 0, 347, 347, 6, 1, 0, 2, 3, 4, 5, 9, 17, 18, 10, 11, 71, 127, 0, 0, 7896, 7896, 7952, 7952, 7979, 7979, 0, 0, 0, 5, 22, 14, 420, 19, 0, 3411, 3419, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 4, 5, 0, 8, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Italian/Latin/Italy
- { 119, 66, 203, 0, 0, 347, 347, 6, 1, 0, 2, 3, 4, 5, 9, 17, 18, 10, 11, 71, 127, 0, 0, 7896, 7896, 7952, 7952, 7979, 7979, 0, 0, 0, 5, 22, 14, 420, 19, 0, 3411, 3425, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 4, 5, 0, 8, 10, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Italian/Latin/San Marino
- { 119, 66, 226, 0, 0, 347, 347, 6, 0, 13, 2, 3, 4, 5, 9, 17, 18, 19, 20, 0, 184, 0, 0, 7896, 7896, 7952, 7952, 7979, 7979, 0, 0, 0, 5, 22, 0, 2958, 19, 0, 3411, 3435, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 15, 5, 0, 8, 8, {67,72,70}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Italian/Latin/Switzerland
- { 119, 66, 253, 0, 0, 347, 347, 6, 1, 0, 2, 3, 4, 5, 9, 17, 18, 10, 11, 71, 127, 0, 0, 7896, 7896, 7952, 7952, 7979, 7979, 0, 0, 0, 5, 22, 14, 420, 19, 0, 3411, 3443, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 56, 56, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 4, 5, 0, 8, 18, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Italian/Latin/Vatican City
- { 120, 53, 120, 150, 150, 150, 150, 6, 0, 1, 2, 3, 4, 5, 9, 42, 43, 44, 45, 462, 636, 329, 1, 7992, 7992, 8019, 8019, 8019, 8019, 263, 270, 580, 583, 22, 144, 2973, 9, 13, 3461, 3461, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 10, 10, 4, 27, 27, 13, 13, 13, 13, 2, 2, 3, 17, 23, 1, 3, 4, 6, 3, 2, {74,80,89}, 0, 0, 7, 6, 7, 1, 3, 3 }, // Japanese/Japanese/Japan
- { 121, 66, 111, 0, 0, 497, 507, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 432, 0, 0, 8032, 8032, 8072, 8072, 8100, 8100, 265, 272, 600, 5, 22, 243, 2928, 4, 0, 3464, 3468, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 40, 40, 28, 28, 13, 13, 4, 5, 4, 17, 23, 2, 16, 5, 0, 4, 9, {73,68,82}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Javanese/Latin/Indonesia
- { 122, 66, 169, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 122, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {78,71,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Jju/Latin/Nigeria
- { 123, 66, 206, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 10, 11, 71, 87, 0, 0, 8113, 8113, 8162, 8162, 8189, 8189, 0, 0, 0, 5, 22, 124, 2976, 19, 0, 3477, 3482, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 49, 49, 27, 27, 13, 13, 2, 2, 4, 17, 23, 5, 16, 5, 0, 5, 7, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Jola Fonyi/Latin/Senegal
- { 124, 66, 43, 0, 0, 110, 110, 6, 1, 14, 2, 3, 4, 5, 9, 10, 11, 12, 13, 925, 127, 0, 0, 8202, 8202, 8274, 8274, 8301, 8301, 82, 195, 0, 5, 22, 248, 2992, 19, 24, 3489, 3501, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 10, 10, 5, 72, 72, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 18, 5, 7, 12, 10, {67,86,69}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Kabuverdianu/Latin/Cape Verde
- { 125, 66, 4, 0, 0, 516, 524, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 10, 11, 71, 87, 10, 22, 8314, 8347, 8397, 8397, 8426, 8439, 269, 277, 604, 611, 22, 182, 3010, 0, 0, 3511, 3520, 6, 6, 8, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 12, 7, 33, 50, 29, 29, 13, 13, 7, 9, 7, 21, 23, 2, 14, 4, 0, 9, 8, {68,90,68}, 2, 1, 6, 5, 6, 1, 3, 3 }, // Kabyle/Latin/Algeria
- { 126, 66, 40, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 9, 17, 18, 19, 20, 54, 952, 0, 0, 8452, 8452, 8452, 8452, 8505, 8505, 0, 0, 0, 5, 22, 3, 3024, 4, 0, 3528, 3532, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 53, 53, 53, 53, 20, 20, 2, 2, 4, 17, 23, 4, 9, 5, 0, 4, 7, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Kako/Latin/Cameroon
- { 127, 66, 95, 0, 0, 531, 531, 6, 1, 0, 2, 3, 40, 5, 52, 18, 17, 20, 19, 54, 44, 146, 146, 8525, 8525, 8622, 8622, 8649, 8649, 0, 0, 0, 5, 22, 161, 3033, 9, 49, 3539, 3550, 6, 6, 11, 11, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 17, 10, 10, 5, 97, 97, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 19, 4, 5, 11, 16, {68,75,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Kalaallisut/Latin/Greenland
- { 128, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 8662, 8662, 8714, 8714, 8741, 8741, 276, 286, 0, 5, 22, 175, 3052, 9, 13, 3566, 3574, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 52, 52, 27, 27, 13, 13, 6, 10, 4, 17, 23, 3, 19, 4, 6, 8, 12, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Kalenjin/Latin/Kenya
- { 129, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 8754, 8754, 8827, 8827, 8854, 8854, 282, 296, 0, 5, 22, 175, 3071, 9, 13, 3586, 1109, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 73, 73, 27, 27, 13, 13, 9, 7, 4, 17, 23, 3, 16, 4, 6, 7, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Kamba/Latin/Kenya
- { 130, 56, 110, 0, 0, 542, 554, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 87, 308, 321, 8867, 8867, 8920, 8920, 8952, 8952, 291, 303, 632, 640, 22, 118, 3087, 9, 13, 3593, 3598, 6, 6, 12, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 13, 8, 53, 53, 32, 32, 19, 19, 9, 7, 8, 35, 23, 1, 13, 4, 6, 5, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Kannada/Kannada/India
- { 132, 4, 110, 0, 0, 0, 0, 53, 21, 22, 23, 61, 35, 62, 65, 10, 11, 12, 13, 321, 339, 10, 22, 8971, 8971, 9022, 9022, 9071, 9071, 0, 0, 0, 5, 22, 118, 3100, 4, 0, 3602, 3607, 6, 6, 6, 6, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 18, 6, 12, 7, 51, 51, 49, 49, 13, 13, 2, 2, 4, 17, 23, 1, 16, 5, 0, 5, 9, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Kashmiri/Arabic/India
- { 132, 29, 110, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 118, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Kashmiri/Devanagari/India
- { 133, 27, 123, 0, 0, 0, 565, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 10, 11, 962, 184, 0, 0, 9084, 9084, 9139, 9139, 9159, 9159, 0, 0, 196, 675, 692, 249, 3116, 19, 0, 3616, 3626, 6, 6, 6, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 8, 10, 5, 55, 55, 20, 20, 13, 13, 2, 2, 4, 17, 23, 1, 17, 5, 0, 10, 9, {75,90,84}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Kazakh/Cyrillic/Kazakhstan
- { 134, 66, 40, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 3, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 4, 0, 5, 0, 0, 0, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Kenyang/Latin/Cameroon
- { 135, 60, 39, 0, 0, 575, 584, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 71, 87, 10, 22, 9172, 9217, 9263, 9263, 9302, 9302, 0, 0, 715, 5, 22, 250, 3133, 0, 31, 3635, 3640, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 6, 12, 7, 45, 46, 39, 39, 13, 13, 2, 2, 2, 17, 23, 1, 11, 4, 6, 5, 7, {75,72,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Khmer/Khmer/Cambodia
- { 136, 66, 99, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 251, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {71,84,81}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Kiche/Latin/Guatemala
- { 137, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 9315, 9315, 9377, 9377, 9404, 9404, 300, 310, 0, 5, 22, 175, 3144, 9, 13, 3647, 1109, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 62, 62, 27, 27, 13, 13, 6, 8, 4, 17, 23, 3, 16, 4, 6, 6, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Kikuyu/Latin/Kenya
- { 138, 66, 194, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 9, 17, 18, 12, 13, 27, 44, 0, 0, 9417, 9417, 9500, 9500, 83, 83, 0, 0, 0, 5, 22, 191, 0, 4, 0, 3653, 3664, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 83, 83, 34, 34, 13, 13, 2, 2, 4, 17, 23, 2, 0, 5, 0, 11, 8, {82,87,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Kinyarwanda/Latin/Rwanda
- { 141, 29, 110, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 71, 210, 10, 22, 9534, 9534, 9534, 9534, 9584, 9602, 0, 0, 717, 5, 22, 118, 2885, 9, 13, 3672, 569, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 6, 12, 7, 50, 50, 50, 50, 18, 19, 2, 2, 4, 17, 23, 1, 12, 4, 6, 6, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Konkani/Devanagari/India
- { 142, 63, 218, 0, 0, 593, 593, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 984, 1000, 339, 352, 9621, 9621, 9648, 9648, 9648, 9648, 306, 318, 721, 5, 22, 252, 3160, 9, 13, 3678, 3681, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 9, 13, 7, 27, 27, 13, 13, 13, 13, 2, 2, 3, 17, 23, 1, 6, 4, 6, 3, 4, {75,82,87}, 0, 0, 7, 6, 7, 1, 3, 3 }, // Korean/Korean/South Korea
- { 142, 63, 174, 0, 0, 593, 593, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 984, 1000, 339, 352, 9621, 9621, 9648, 9648, 9648, 9648, 306, 318, 721, 5, 22, 253, 3166, 9, 13, 3678, 3685, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 9, 13, 7, 27, 27, 13, 13, 13, 13, 2, 2, 3, 17, 23, 3, 16, 4, 6, 3, 11, {75,80,87}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Korean/Korean/North Korea
- { 144, 66, 145, 0, 0, 0, 0, 6, 0, 14, 2, 3, 4, 5, 9, 10, 11, 12, 13, 71, 87, 0, 0, 9661, 9661, 9714, 9714, 9741, 9741, 308, 320, 0, 5, 22, 124, 3182, 0, 0, 3696, 3711, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 53, 53, 27, 27, 13, 13, 6, 6, 4, 17, 23, 5, 16, 4, 0, 15, 5, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Koyraboro Senni/Latin/Mali
- { 145, 66, 145, 0, 0, 0, 0, 6, 0, 14, 2, 3, 4, 5, 9, 10, 11, 12, 13, 71, 87, 0, 0, 9754, 9754, 9806, 9806, 9741, 9741, 308, 320, 0, 5, 22, 124, 3182, 0, 0, 3716, 3711, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 52, 52, 27, 27, 13, 13, 6, 6, 4, 17, 23, 5, 16, 4, 0, 11, 5, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Koyra Chiini/Latin/Mali
- { 146, 66, 134, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 2, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {76,82,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Kpelle/Latin/Liberia
- { 148, 66, 239, 0, 0, 600, 600, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 9833, 9833, 9874, 9874, 9893, 9893, 314, 326, 0, 5, 22, 256, 0, 19, 24, 3727, 3732, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 41, 41, 19, 19, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 7, 5, 7, {84,82,89}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Kurdish/Latin/Turkey
- { 149, 66, 40, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 15, 11, 17, 18, 71, 87, 0, 0, 9906, 9906, 9994, 9994,10023,10023, 316, 328, 0, 5, 22, 3, 3198, 19, 0, 3739, 3745, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 88, 88, 29, 29, 13, 13, 4, 4, 4, 17, 23, 4, 13, 5, 0, 6, 7, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Kwasio/Latin/Cameroon
- { 150, 27, 128, 0, 0, 607, 607, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 15, 10, 1009, 87, 0, 0,10036,10036,10092,10092,10129,10129, 320, 332, 196, 724, 22, 257, 3211, 19, 0, 3752, 3760, 6, 6, 10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 6, 10, 5, 56, 56, 37, 37, 13, 13, 5, 14, 4, 18, 23, 3, 15, 5, 0, 8, 10, {75,71,83}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Kyrgyz/Cyrillic/Kyrgyzstan
- { 151, 66, 248, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 339, 10, 22,10142,10142,10142,10142, 83,10228, 0, 0, 0, 5, 22, 2, 0, 4, 0, 3770, 3782, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7, 86, 86, 86, 86, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 12, 22, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Lakota/Latin/United States
- { 152, 66, 230, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 11, 11, 13, 13, 0, 127, 0, 0,10241,10241,10303,10303,10338,10338, 325, 346, 0, 5, 22, 119, 3226, 4, 0, 3804, 3812, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 62, 62, 35, 35, 13, 13, 3, 3, 4, 17, 23, 3, 22, 5, 0, 8, 9, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Langi/Latin/Tanzania
- { 153, 65, 129, 0, 0, 0, 617, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 1032, 87, 359, 1,10351,10351,10407,10407,10442,10442, 328, 349, 0, 5, 22, 260, 3248, 9, 44, 3821, 3821, 6, 6, 6, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 8, 24, 4, 56, 56, 35, 35, 16, 16, 8, 8, 4, 17, 23, 1, 7, 4, 5, 3, 3, {76,65,75}, 0, 0, 7, 6, 7, 1, 3, 3 }, // Lao/Lao/Laos
- { 154, 66, 253, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 14, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Latin/Latin/Vatican City
- { 155, 66, 131, 0, 0, 216, 216, 6, 1, 14, 2, 3, 4, 5, 9, 10, 11, 12, 13, 1051, 184, 0, 0,10458,10529,10600,10650,10700,10700, 336, 357, 742, 5, 22, 14, 3255, 19, 0, 3824, 3832, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 26, 8, 10, 5, 71, 71, 50, 50, 13, 13, 14, 11, 5, 17, 23, 1, 4, 5, 0, 8, 7, {69,85,82}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Latvian/Latin/Latvia
- { 158, 66, 57, 0, 0, 626, 626, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 71, 87, 0, 0,10713,10713,10812,10812,10839,10839, 350, 368, 0, 5, 22, 3, 3259, 19, 0, 3839, 3846, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 99, 99, 27, 27, 13, 13, 8, 6, 4, 17, 23, 2, 16, 5, 0, 7, 30, {67,68,70}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Lingala/Latin/Congo Kinshasa
- { 158, 66, 7, 0, 0, 626, 626, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 71, 87, 0, 0,10713,10713,10812,10812,10839,10839, 350, 368, 0, 5, 22, 261, 3275, 19, 0, 3839, 3876, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 99, 99, 27, 27, 13, 13, 8, 6, 4, 17, 23, 2, 16, 5, 0, 7, 6, {65,79,65}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Lingala/Latin/Angola
- { 158, 66, 46, 0, 0, 626, 626, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 71, 87, 0, 0,10713,10713,10812,10812,10839,10839, 350, 368, 0, 5, 22, 3, 3291, 19, 0, 3839, 3882, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 99, 99, 27, 27, 13, 13, 8, 6, 4, 17, 23, 4, 16, 5, 0, 7, 26, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Lingala/Latin/Central African Republic
- { 158, 66, 56, 0, 0, 626, 626, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 71, 87, 0, 0,10713,10713,10812,10812,10839,10839, 350, 368, 0, 5, 22, 3, 3291, 19, 0, 3839, 3908, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 99, 99, 27, 27, 13, 13, 8, 6, 4, 17, 23, 4, 16, 5, 0, 7, 5, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Lingala/Latin/Congo Brazzaville
- { 160, 66, 137, 0, 0, 635, 635, 6, 1, 14, 2, 3, 40, 5, 52, 15, 10, 15, 10, 1077, 44, 0, 0,10852,10852,10940,10940,10960,10960, 358, 374, 747, 5, 22, 14, 3307, 19, 0, 3913, 3921, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 27, 10, 10, 5, 88, 88, 20, 20, 13, 13, 9, 6, 6, 17, 23, 1, 5, 5, 0, 8, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Lithuanian/Latin/Lithuania
- { 161, 66, 258, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 0, 0, {0,0,0}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Lojban/Latin/World
- { 162, 66, 91, 0, 0, 224, 224, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 16, 12, 345, 121, 1, 1,10973,10973,11025,11025,11052,11052, 367, 380, 0, 5, 22, 14, 420, 19, 0, 3928, 3942, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 9, 4, 52, 52, 27, 27, 13, 13, 9, 10, 4, 17, 23, 1, 4, 5, 0, 14, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Lower Sorbian/Latin/Germany
- { 163, 66, 91, 0, 0, 216, 216, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 16, 12, 1104, 185, 383, 402,11065,11065,11129,11129, 3667, 3667, 0, 0, 0, 5, 22, 14, 73, 19, 0, 3948, 3962, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 7, 19, 10, 64, 64, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 4, 5, 0, 14, 11, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Low German/Latin/Germany
- { 163, 66, 165, 0, 0, 216, 216, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 16, 12, 1104, 185, 383, 402,11065,11065,11129,11129, 3667, 3667, 0, 0, 0, 5, 22, 14, 73, 19, 0, 3948, 3973, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 7, 19, 10, 64, 64, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 4, 5, 0, 14, 12, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Low German/Latin/Netherlands
- { 164, 66, 57, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 71, 87, 0, 0,11156,11156,11205,11205,11232,11232, 376, 390, 0, 5, 22, 3, 3312, 0, 0, 3985, 3993, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 49, 49, 27, 27, 13, 13, 5, 6, 4, 17, 23, 2, 17, 4, 0, 8, 16, {67,68,70}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Luba Katanga/Latin/Congo Kinshasa
- { 165, 66, 225, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 161, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 2, 0, 5, 0, 0, 0, {83,69,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Lule Sami/Latin/Sweden
- { 166, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0,11245,11245,11313,11313,11340,11340, 381, 396, 0, 5, 22, 175, 3329, 0, 0, 4009, 1109, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 68, 68, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 16, 4, 0, 6, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Luo/Latin/Kenya
- { 167, 66, 138, 0, 0, 643, 643, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 16, 12, 345, 184, 0, 0,11353,11353,11417,11444, 3667, 3667, 383, 398, 461, 5, 22, 14, 73, 19, 0, 4015, 4015, 6, 6, 10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 10, 5, 64, 64, 27, 34, 13, 13, 5, 8, 5, 17, 23, 1, 4, 5, 0, 14, 10, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Luxembourgish/Latin/Luxembourg
- { 168, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 15, 10, 16, 12, 0, 127, 0, 0,11478,11478,11552,11552, 83, 83, 165, 164, 0, 5, 22, 175, 3345, 9, 54, 4029, 1109, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 74, 74, 20, 20, 13, 13, 4, 4, 4, 17, 23, 3, 16, 4, 6, 7, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Luyia/Latin/Kenya
- { 169, 27, 140, 0, 0, 117, 117, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 16, 12, 0, 121, 0, 0,11572,11572,11625,11625, 2519, 2519, 388, 406, 753, 5, 22, 263, 3361, 19, 0, 4036, 4046, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 10, 5, 53, 53, 34, 34, 13, 13, 10, 8, 5, 17, 23, 4, 16, 5, 0, 10, 18, {77,75,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Macedonian/Cyrillic/Macedonia
- { 170, 66, 230, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0,11659,11659,11720,11720, 1041, 1041, 398, 414, 0, 5, 22, 119, 3377, 9, 0, 4064, 2031, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 61, 61, 27, 27, 13, 13, 5, 9, 4, 17, 23, 3, 20, 4, 0, 9, 8, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Machame/Latin/Tanzania
- { 171, 29, 110, 0, 0, 436, 445, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 87, 10, 22,11747,11747, 7072, 7072, 7103, 7103, 403, 423, 0, 5, 22, 118, 2885, 4, 0, 4073, 569, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 12, 7, 63, 63, 31, 31, 18, 18, 3, 4, 4, 17, 23, 1, 12, 5, 0, 6, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Maithili/Devanagari/India
- { 172, 66, 160, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0,11810,11810,11868,11868,11895,11895, 406, 427, 0, 5, 22, 267, 0, 4, 0, 4079, 4084, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 58, 58, 27, 27, 13, 13, 8, 10, 4, 17, 23, 3, 0, 5, 0, 5, 10, {77,90,78}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Makhuwa Meetto/Latin/Mozambique
- { 173, 66, 230, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0,11908,11908,12040,12040,12067,12067, 414, 437, 0, 5, 22, 119, 3377, 9, 13, 4094, 2031, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5,132,132, 27, 27, 13, 13, 4, 5, 4, 17, 23, 3, 20, 4, 6, 10, 8, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Makonde/Latin/Tanzania
- { 174, 66, 141, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 17, 18, 10, 11, 71, 44, 0, 0,12080,12080,12139,12139,12172,12172, 0, 0, 0, 5, 22, 183, 1459, 9, 0, 4104, 4112, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 59, 59, 33, 33, 13, 13, 2, 2, 4, 17, 23, 2, 6, 4, 0, 8, 12, {77,71,65}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Malagasy/Latin/Madagascar
- { 175, 74, 110, 0, 0, 653, 666, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 1127, 87, 10, 22,12185,12261,12336,12336,12376,12397, 0, 0, 758, 764, 22, 118, 3397, 9, 13, 4124, 4130, 6, 6, 13, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7, 76, 75, 40, 40, 21, 20, 2, 2, 6, 27, 23, 1, 11, 4, 6, 6, 6, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Malayalam/Malayalam/India
- { 176, 66, 143, 0, 0, 488, 488, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 128, 10, 22,12417,12417,12459,12459,12486,12486, 418, 442, 742, 5, 22, 187, 3408, 9, 13, 4136, 1646, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 7, 12, 7, 42, 42, 27, 27, 13, 13, 2, 3, 4, 17, 23, 2, 16, 4, 6, 6, 8, {77,89,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Malay/Latin/Malaysia
- { 176, 4, 143, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 187, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 2, 0, 5, 0, 0, 0, {77,89,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Malay/Arabic/Malaysia
- { 176, 66, 35, 0, 0, 488, 488, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 59, 128, 10, 22,12417,12417,12459,12459,12486,12486, 418, 442, 742, 5, 22, 2, 3424, 9, 13, 4136, 4142, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 7, 12, 7, 42, 42, 27, 27, 13, 13, 2, 3, 4, 17, 23, 1, 12, 4, 6, 6, 6, {66,78,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Malay/Latin/Brunei
- { 176, 66, 111, 0, 0, 488, 488, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 618, 127, 146, 146,12417,12417,12459,12459,12486,12486, 418, 442, 742, 5, 22, 243, 2928, 9, 0, 4136, 3356, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 10, 5, 42, 42, 27, 27, 13, 13, 2, 3, 4, 17, 23, 2, 16, 4, 0, 6, 9, {73,68,82}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Malay/Latin/Indonesia
- { 176, 66, 210, 0, 0, 488, 488, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 128, 10, 22,12417,12417,12459,12459,12486,12486, 418, 442, 742, 5, 22, 2, 3436, 9, 13, 4136, 4148, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 7, 12, 7, 42, 42, 27, 27, 13, 13, 2, 3, 4, 17, 23, 1, 15, 4, 6, 6, 9, {83,71,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Malay/Latin/Singapore
- { 177, 66, 146, 0, 0, 678, 686, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 1145, 127, 0, 0,12499,12499,12561,12561,12588,12608, 0, 0, 0, 5, 22, 14, 3451, 9, 0, 4157, 1654, 6, 6, 8, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 10, 10, 5, 62, 62, 27, 27, 20, 19, 2, 2, 4, 17, 23, 1, 4, 4, 0, 5, 5, {69,85,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Maltese/Latin/Malta
- { 179, 9, 110, 0, 0, 693, 693, 6, 0, 1, 2, 39, 4, 5, 9, 10, 11, 12, 13, 1168, 87, 10, 22,12627,12627,12627,12627,12685,12710, 420, 445, 0, 5, 22, 118, 3455, 4, 0, 4162, 4170, 6, 6, 11, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7, 58, 58, 58, 58, 25, 29, 4, 5, 4, 17, 23, 1, 14, 5, 0, 8, 8, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Manipuri/Bangla/India
- { 179, 78, 110, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 118, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Manipuri/Meitei Mayek/India
- { 180, 66, 115, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 54, 127, 0, 0,12739,12739,12795,12795, 83, 83, 165, 164, 0, 5, 22, 92, 0, 9, 0, 4178, 4183, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 10, 5, 56, 56, 29, 29, 13, 13, 4, 4, 4, 17, 23, 1, 0, 4, 0, 5, 12, {71,66,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Manx/Latin/Isle Of Man
- { 181, 66, 167, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 432, 10, 22,12824,12824,12870,12870,12896,12896, 0, 0, 0, 5, 22, 2, 3469, 4, 0, 4195, 4207, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 46, 46, 26, 26, 13, 13, 2, 2, 4, 17, 23, 1, 15, 5, 0, 12, 8, {78,90,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Maori/Latin/New Zealand
- { 182, 66, 49, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 2, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {67,76,80}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Mapuche/Latin/Chile
- { 183, 29, 110, 0, 0, 704, 704, 6, 0, 1, 2, 69, 4, 5, 9, 10, 11, 12, 13, 192, 87, 10, 22,12909,12909,12961,12961, 7103, 7103, 0, 0, 562, 5, 22, 118, 2885, 9, 13, 4215, 569, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7, 52, 52, 31, 31, 18, 18, 2, 2, 4, 17, 23, 1, 12, 4, 6, 5, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Marathi/Devanagari/India
- { 185, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0,12992,12992,11720,11720,12067,12067, 424, 450, 0, 5, 22, 175, 3484, 9, 13, 1077, 1109, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 57, 57, 27, 27, 13, 13, 9, 6, 4, 17, 23, 3, 18, 4, 6, 3, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Masai/Latin/Kenya
- { 185, 66, 230, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0,12992,12992,11720,11720,12067,12067, 424, 450, 0, 5, 22, 119, 3502, 9, 13, 1077, 4220, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 57, 57, 27, 27, 13, 13, 9, 6, 4, 17, 23, 3, 21, 4, 6, 3, 8, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Masai/Latin/Tanzania
- { 186, 4, 112, 0, 0, 0, 0, 53, 21, 22, 23, 61, 35, 62, 65, 17, 18, 19, 20, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 791, 795, 22, 270, 3523, 4, 0, 4228, 4235, 6, 6, 6, 6, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 39, 23, 3, 10, 5, 0, 7, 5, {73,82,82}, 0, 0, 6, 5, 5, 1, 3, 3 }, // Mazanderani/Arabic/Iran
- { 188, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0,13049,13049,13099,13099,13126,13126, 433, 456, 0, 5, 22, 175, 952, 9, 13, 4240, 1109, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 50, 50, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 17, 4, 6, 6, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Meru/Latin/Kenya
- { 189, 66, 40, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 95, 44, 0, 0,13139,13139,13139,13139,13187,13187, 0, 0, 0, 5, 22, 3, 3533, 4, 0, 4246, 4251, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 10, 10, 5, 48, 48, 48, 48, 20, 20, 2, 2, 4, 17, 23, 4, 5, 5, 0, 5, 7, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Meta/Latin/Cameroon
- { 190, 66, 41, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 245, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 0, 5, 0, 0, 0, {67,65,68}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Mohawk/Latin/Canada
- { 191, 27, 156, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 1186, 1221, 54, 0,13207,13249,13291,13291,13291,13291, 435, 458, 196, 834, 22, 273, 3538, 4, 0, 4258, 4264, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 35, 10, 12, 5, 42, 42, 20, 20, 20, 20, 4, 4, 4, 17, 23, 1, 13, 5, 0, 6, 6, {77,78,84}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Mongolian/Cyrillic/Mongolia
- { 191, 83, 50, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 274, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 0, 5, 0, 0, 0, {67,78,89}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Mongolian/Mongolian/China
- { 192, 66, 150, 0, 0, 0, 0, 6, 0, 14, 2, 3, 4, 5, 9, 10, 11, 12, 13, 71, 87, 0, 0,13311,13311,13358,13358,13384,13384, 0, 0, 0, 5, 22, 189, 3551, 4, 0, 4270, 4284, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 47, 47, 26, 26, 13, 13, 2, 2, 4, 17, 23, 2, 14, 5, 0, 14, 5, {77,85,82}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Morisyen/Latin/Mauritius
- { 193, 66, 40, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 9, 17, 18, 10, 11, 71, 87, 0, 0,13397,13397,13470,13470,13497,13497, 439, 462, 0, 5, 22, 3, 3565, 9, 13, 4289, 4295, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 73, 73, 27, 27, 13, 13, 5, 5, 4, 17, 23, 4, 10, 4, 6, 6, 7, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Mundang/Latin/Cameroon
- { 194, 66, 248, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 146, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 0, 5, 0, 0, 0, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Muscogee/Latin/United States
- { 195, 66, 162, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22,13510,13510,13601,13601,13623,13623, 444, 467, 0, 5, 22, 2, 3575, 9, 0, 4302, 4315, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 91, 91, 22, 22, 13, 13, 7, 5, 4, 17, 23, 1, 15, 4, 0, 13, 8, {78,65,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Nama/Latin/Namibia
- { 197, 66, 248, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 146, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 0, 5, 0, 0, 0, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Navajo/Latin/United States
- { 199, 29, 164, 713, 0, 718, 718, 6, 0, 1, 2, 69, 4, 5, 9, 10, 11, 12, 13, 27, 293, 0, 0,13636,13636,13689,13689,13721,13721, 451, 472, 562, 851, 22, 277, 3590, 4, 0, 4323, 4323, 5, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 10, 5, 53, 53, 32, 32, 17, 17, 9, 7, 4, 19, 23, 4, 14, 5, 0, 6, 5, {78,80,82}, 2, 1, 7, 6, 7, 1, 2, 3 }, // Nepali/Devanagari/Nepal
- { 199, 29, 110, 713, 0, 718, 718, 6, 0, 1, 2, 69, 4, 5, 9, 10, 11, 12, 13, 27, 293, 10, 22,13636,13636,13689,13689,13721,13721, 451, 472, 562, 851, 22, 118, 3604, 4, 0, 4323, 569, 5, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 12, 7, 53, 53, 32, 32, 17, 17, 9, 7, 4, 19, 23, 1, 14, 5, 0, 6, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Nepali/Devanagari/India
- { 201, 66, 40, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 9, 17, 18, 10, 11, 1231, 127, 0, 0,13738,13738,13738,13738, 83, 83, 460, 479, 0, 5, 22, 3, 3618, 4, 0, 4329, 4345, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 32, 8, 10, 5,110,110,110,110, 13, 13, 9, 8, 4, 17, 23, 4, 9, 5, 0, 16, 7, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Ngiemboon/Latin/Cameroon
- { 202, 66, 40, 725, 725, 736, 752, 6, 1, 0, 2, 3, 4, 5, 9, 17, 18, 19, 20, 95, 44, 0, 0,13848,13848,13848,13848,13907,13907, 469, 487, 0, 5, 22, 3, 3627, 4, 0, 4352, 4357, 11, 11, 16, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 10, 10, 5, 59, 59, 59, 59, 24, 24, 8, 13, 4, 17, 23, 4, 5, 5, 0, 5, 7, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Ngomba/Latin/Cameroon
- { 203, 66, 169, 0, 0, 761, 770, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0,13931,13931,13982,13982, 83, 83, 477, 500, 870, 5, 22, 122, 3632, 9, 0, 4364, 4378, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 51, 51, 32, 32, 13, 13, 9, 8, 8, 17, 23, 1, 14, 4, 0, 14, 8, {78,71,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Nigerian Pidgin/Latin/Nigeria
- { 204, 90, 102, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 209, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 2, 0, 5, 0, 0, 0, {71,78,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Nko/Nko/Guinea
- { 205, 4, 112, 0, 0, 0, 0, 53, 21, 22, 23, 61, 35, 62, 65, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 4, 0, 4386, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 11, 0, {73,82,82}, 0, 0, 6, 5, 5, 1, 3, 3 }, // Northern Luri/Arabic/Iran
- { 205, 4, 113, 0, 0, 0, 0, 53, 21, 22, 23, 61, 35, 62, 65, 10, 11, 12, 13, 27, 44, 10, 22, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 41, 0, 4, 0, 4386, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 17, 10, 12, 7, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 5, 0, 5, 0, 11, 0, {73,81,68}, 0, 0, 6, 5, 6, 1, 3, 3 }, // Northern Luri/Arabic/Iraq
- { 206, 66, 175, 0, 0, 293, 293, 6, 1, 14, 2, 3, 40, 5, 70, 11, 11, 13, 13, 27, 44, 0, 0,14014,14014,14088,14088,14120,14120, 486, 508, 0, 5, 22, 161, 3646, 19, 0, 4397, 4412, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 17, 10, 10, 5, 74, 74, 32, 32, 13, 13, 11, 13, 4, 17, 23, 2, 14, 5, 0, 15, 5, {78,79,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Northern Sami/Latin/Norway
- { 206, 66, 83, 0, 0, 293, 293, 6, 1, 14, 2, 3, 40, 5, 70, 11, 11, 13, 13, 71, 560, 0, 0,14133,14133,14202,14202,14222,14222, 497, 181, 0, 5, 22, 14, 420, 19, 0, 4397, 4417, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 16, 10, 10, 5, 69, 69, 20, 20, 13, 13, 2, 2, 4, 17, 23, 1, 4, 5, 0, 15, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Northern Sami/Latin/Finland
- { 206, 66, 225, 0, 0, 293, 293, 6, 1, 14, 2, 3, 40, 5, 70, 11, 11, 13, 13, 27, 44, 0, 0,14014,14014,14088,14088,14120,14120, 486, 508, 0, 5, 22, 161, 3660, 19, 0, 4397, 4423, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 17, 10, 10, 5, 74, 74, 32, 32, 13, 13, 11, 13, 4, 17, 23, 2, 14, 5, 0, 15, 6, {83,69,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Northern Sami/Latin/Sweden
- { 207, 66, 216, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 1, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {90,65,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Northern Sotho/Latin/South Africa
- { 208, 66, 261, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0,14235,14235,14284,14284,14311,14311, 0, 0, 0, 5, 22, 146, 3674, 9, 13, 4429, 2197, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 49, 49, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 17, 4, 6, 10, 8, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // North Ndebele/Latin/Zimbabwe
- { 209, 66, 175, 0, 0, 231, 231, 6, 1, 14, 2, 3, 40, 5, 9, 17, 18, 12, 13, 520, 560, 0, 0, 3848, 3848, 3925, 3925, 3959, 3959, 165, 164, 0, 5, 22, 161, 3691, 4, 37, 4439, 4451, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 50, 50, 34, 34, 13, 13, 4, 4, 4, 17, 23, 2, 13, 5, 7, 12, 5, {78,79,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Norwegian Bokmal/Latin/Norway
- { 209, 66, 224, 0, 0, 231, 231, 6, 1, 14, 2, 3, 40, 5, 9, 17, 18, 12, 13, 520, 560, 0, 0, 3848, 3848, 3925, 3925, 3959, 3959, 165, 164, 0, 5, 22, 161, 3691, 4, 37, 4439, 4456, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 50, 50, 34, 34, 13, 13, 4, 4, 4, 17, 23, 2, 13, 5, 7, 12, 21, {78,79,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Norwegian Bokmal/Latin/Svalbard And Jan Mayen
- { 210, 66, 175, 0, 0, 231, 231, 6, 1, 14, 2, 3, 40, 5, 9, 17, 18, 12, 13, 520, 560, 412, 0,14324,14324,14374,14401, 3959, 3959, 165, 164, 0, 5, 22, 161, 3691, 19, 0, 4477, 4490, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 16, 5, 50, 50, 27, 27, 13, 13, 4, 4, 4, 17, 23, 2, 13, 5, 0, 13, 5, {78,79,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Norwegian Nynorsk/Latin/Norway
- { 211, 66, 219, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 71, 128, 428, 22,14428,14428,14506,14506,14543,14543, 499, 521, 0, 5, 22, 92, 0, 9, 13, 4495, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 9, 12, 7, 78, 78, 37, 37, 13, 13, 2, 2, 4, 17, 23, 1, 0, 4, 6, 9, 0, {83,83,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Nuer/Latin/South Sudan
- { 212, 66, 142, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 0, 0, {77,87,75}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Nyanja/Latin/Malawi
- { 213, 66, 243, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 3436, 3436, 3509, 3509, 3536, 3536, 0, 0, 0, 5, 22, 149, 783, 9, 0, 4504, 857, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 73, 73, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 19, 4, 0, 10, 6, {85,71,88}, 0, 0, 1, 7, 7, 1, 3, 3 }, // Nyankole/Latin/Uganda
- { 214, 66, 84, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 14, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Occitan/Latin/France
- { 215, 91, 110, 0, 0, 778, 786, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 339, 10, 22,14556,14556,14609,14609,14641,14641, 0, 0, 878, 5, 22, 118, 3704, 9, 13, 4514, 4519, 6, 6, 8, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7, 53, 53, 32, 32, 17, 17, 2, 2, 5, 17, 23, 1, 12, 4, 6, 5, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Odia/Odia/India
- { 220, 66, 77, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 127, 10, 22,14658,14658,14712,14712, 83, 83, 501, 523, 0, 5, 22, 131, 3716, 9, 0, 4523, 4529, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 12, 7, 54, 54, 27, 27, 13, 13, 2, 2, 4, 17, 23, 2, 17, 4, 0, 6, 10, {69,84,66}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Oromo/Latin/Ethiopia
- { 220, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 127, 0, 0,14658,14658,14712,14712,14739,14739, 501, 523, 0, 5, 22, 175, 0, 9, 0, 4523, 4539, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 10, 5, 54, 54, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 0, 4, 0, 6, 8, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Oromo/Latin/Kenya
- { 221, 101, 248, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 146, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 0, 5, 0, 0, 0, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Osage/Osage/United States
- { 222, 27, 90, 0, 0, 793, 793, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 15, 10, 1263, 184, 0, 0,14752,14812,14872,14899,14926,14926, 503, 525, 0, 5, 22, 0, 3733, 4, 0, 4547, 4551, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 8, 10, 5, 60, 60, 27, 27, 13, 13, 15, 15, 4, 17, 23, 1, 3, 5, 0, 4, 11, {71,69,76}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Ossetic/Cyrillic/Georgia
- { 222, 27, 193, 0, 0, 793, 793, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 15, 10, 1263, 184, 0, 0,14752,14812,14872,14899,14926,14926, 503, 525, 0, 5, 22, 130, 3736, 4, 0, 4547, 4562, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 8, 10, 5, 60, 60, 27, 27, 13, 13, 15, 15, 4, 17, 23, 1, 3, 5, 0, 4, 6, {82,85,66}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Ossetic/Cyrillic/Russia
- { 227, 4, 1, 802, 802, 808, 817, 53, 21, 22, 23, 61, 35, 62, 65, 10, 11, 12, 13, 1286, 454, 55, 1,14939,14939,14939,14939, 83, 83, 518, 540, 883, 5, 22, 281, 3739, 9, 13, 4568, 4572, 6, 6, 9, 8, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 20, 8, 11, 4, 38, 38, 38, 38, 13, 13, 4, 4, 5, 17, 23, 1, 6, 4, 6, 4, 9, {65,70,78}, 0, 0, 6, 4, 5, 1, 3, 3 }, // Pashto/Arabic/Afghanistan
- { 227, 4, 178, 802, 802, 808, 817, 53, 21, 22, 23, 61, 35, 62, 65, 10, 11, 12, 13, 1286, 454, 10, 22,14939,14939,14939,14939, 83, 83, 518, 540, 883, 5, 22, 189, 3745, 9, 13, 4568, 4581, 6, 6, 9, 8, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 20, 8, 12, 7, 38, 38, 38, 38, 13, 13, 4, 4, 5, 17, 23, 2, 15, 4, 6, 4, 7, {80,75,82}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Pashto/Arabic/Pakistan
- { 228, 4, 112, 825, 825, 832, 840, 53, 21, 22, 23, 61, 74, 37, 65, 17, 18, 19, 20, 71, 454, 55, 1,14977,14977,14977,14977,15025,15025, 522, 544, 791, 5, 22, 282, 3760, 60, 66, 4588, 4235, 7, 7, 8, 7, 1, 1, 1, 1, 1, 2, 2, 4, 1, 1, 1, 1, 16, 8, 11, 4, 48, 48, 48, 48, 13, 13, 9, 8, 4, 17, 23, 4, 10, 6, 8, 5, 5, {73,82,82}, 0, 0, 6, 5, 5, 1, 3, 3 }, // Persian/Arabic/Iran
- { 228, 4, 1, 825, 825, 832, 840, 53, 21, 22, 23, 61, 74, 37, 65, 17, 18, 19, 20, 71, 454, 55, 1,14977,14977,14977,14977,15025,15025, 522, 544, 791, 5, 22, 281, 3770, 4, 66, 4593, 4572, 7, 7, 8, 7, 1, 1, 1, 1, 1, 2, 2, 4, 1, 1, 1, 1, 16, 8, 11, 4, 48, 48, 48, 48, 13, 13, 9, 8, 4, 17, 23, 1, 16, 5, 8, 3, 9, {65,70,78}, 0, 0, 6, 4, 5, 1, 3, 3 }, // Persian/Arabic/Afghanistan
- { 230, 66, 187, 0, 0, 110, 110, 6, 1, 14, 2, 3, 4, 5, 9, 15, 11, 17, 18, 0, 561, 0, 0,15038,15038,15096,15096,15129,15142, 0, 0, 311, 5, 22, 286, 3786, 19, 24, 4596, 4602, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 9, 10, 5, 58, 58, 33, 33, 13, 13, 2, 2, 5, 17, 23, 2, 12, 5, 7, 6, 6, {80,76,78}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Polish/Latin/Poland
- { 231, 66, 32, 0, 0, 347, 347, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 768, 127, 0, 0,15155,15155,15233,15233,15267,15267, 0, 0, 0, 5, 22, 1, 3798, 4, 0, 4608, 4617, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 10, 10, 5, 78, 78, 34, 34, 13, 13, 2, 2, 5, 17, 23, 2, 15, 5, 0, 9, 6, {66,82,76}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Portuguese/Latin/Brazil
- { 231, 66, 7, 0, 0, 347, 347, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 10, 11, 768, 127, 0, 0,15155,15155,15280,15280,15267,15267, 531, 552, 0, 5, 22, 261, 3813, 19, 24, 4608, 4623, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 10, 5, 78, 78, 48, 48, 13, 13, 8, 8, 5, 17, 23, 2, 15, 5, 7, 9, 6, {65,79,65}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Portuguese/Latin/Angola
- { 231, 66, 43, 0, 0, 347, 347, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 10, 11, 768, 127, 0, 0,15155,15155,15280,15280,15267,15267, 531, 552, 0, 5, 22, 248, 3828, 19, 24, 4608, 4629, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 10, 5, 78, 78, 48, 48, 13, 13, 8, 8, 5, 17, 23, 1, 20, 5, 7, 9, 10, {67,86,69}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Portuguese/Latin/Cape Verde
- { 231, 66, 73, 0, 0, 347, 347, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 10, 11, 768, 127, 0, 0,15155,15155,15280,15280,15267,15267, 531, 552, 0, 5, 22, 3, 3848, 19, 24, 4608, 4639, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 10, 5, 78, 78, 48, 48, 13, 13, 8, 8, 5, 17, 23, 4, 17, 5, 7, 9, 16, {88,65,70}, 0, 0, 1, 6, 7, 2, 3, 3 }, // Portuguese/Latin/Equatorial Guinea
- { 231, 66, 101, 0, 0, 347, 347, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 10, 11, 768, 127, 0, 0,15155,15155,15280,15280,15267,15267, 531, 552, 0, 5, 22, 124, 3865, 19, 24, 4608, 4655, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 10, 5, 78, 78, 48, 48, 13, 13, 8, 8, 5, 17, 23, 5, 18, 5, 7, 9, 12, {88,79,70}, 0, 0, 1, 6, 7, 2, 3, 3 }, // Portuguese/Latin/Guinea Bissau
- { 231, 66, 138, 0, 0, 347, 347, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 10, 11, 768, 127, 0, 0,15155,15155,15280,15280,15267,15267, 531, 552, 0, 5, 22, 14, 420, 19, 24, 4608, 4667, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 10, 5, 78, 78, 48, 48, 13, 13, 8, 8, 5, 17, 23, 1, 4, 5, 7, 9, 10, {69,85,82}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Portuguese/Latin/Luxembourg
- { 231, 66, 139, 0, 0, 347, 347, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 10, 11, 768, 127, 10, 22,15155,15155,15280,15280,15267,15267, 531, 552, 0, 5, 22, 153, 3883, 19, 24, 4608, 4677, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 12, 7, 78, 78, 48, 48, 13, 13, 8, 8, 5, 17, 23, 4, 15, 5, 7, 9, 19, {77,79,80}, 2, 1, 7, 6, 7, 2, 3, 3 }, // Portuguese/Latin/Macao
- { 231, 66, 160, 0, 0, 347, 347, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 10, 11, 768, 127, 0, 0,15155,15155,15280,15280,15267,15267, 531, 552, 0, 5, 22, 267, 3898, 19, 24, 4608, 4696, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 10, 5, 78, 78, 48, 48, 13, 13, 8, 8, 5, 17, 23, 3, 19, 5, 7, 9, 10, {77,90,78}, 2, 1, 7, 6, 7, 2, 3, 3 }, // Portuguese/Latin/Mozambique
- { 231, 66, 188, 0, 0, 347, 347, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 10, 11, 768, 127, 0, 0,15155,15155,15280,15280,15267,15267, 531, 552, 0, 5, 22, 14, 420, 19, 24, 4706, 4723, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 10, 5, 78, 78, 48, 48, 13, 13, 8, 8, 5, 17, 23, 1, 4, 5, 7, 17, 8, {69,85,82}, 2, 1, 7, 6, 7, 2, 3, 3 }, // Portuguese/Latin/Portugal
- { 231, 66, 204, 0, 0, 347, 347, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 10, 11, 768, 127, 0, 0,15155,15155,15280,15280,15267,15267, 531, 552, 0, 5, 22, 288, 3917, 19, 24, 4608, 4731, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 10, 5, 78, 78, 48, 48, 13, 13, 8, 8, 5, 17, 23, 2, 28, 5, 7, 9, 19, {83,84,78}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Portuguese/Latin/Sao Tome And Principe
- { 231, 66, 226, 0, 0, 347, 347, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 10, 11, 768, 127, 0, 0,15155,15155,15280,15280,15267,15267, 531, 552, 0, 5, 22, 216, 3945, 19, 24, 4608, 4750, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 10, 5, 78, 78, 48, 48, 13, 13, 8, 8, 5, 17, 23, 3, 12, 5, 7, 9, 5, {67,72,70}, 2, 0, 1, 6, 7, 2, 3, 3 }, // Portuguese/Latin/Switzerland
- { 231, 66, 232, 0, 0, 347, 347, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 10, 11, 768, 127, 0, 0,15155,15155,15280,15280,15267,15267, 531, 552, 0, 5, 22, 146, 3957, 19, 24, 4608, 4755, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 10, 5, 78, 78, 48, 48, 13, 13, 8, 8, 5, 17, 23, 3, 24, 5, 7, 9, 11, {85,83,68}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Portuguese/Latin/Timor-Leste
- { 232, 66, 258, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 0, 0, {0,0,0}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Prussian/Latin/World
- { 233, 41, 110, 0, 0, 847, 847, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 87, 10, 22,15328,15328,15384,15384,15419,15419, 539, 560, 888, 5, 22, 118, 3981, 4, 0, 4766, 4772, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 12, 7, 56, 56, 35, 35, 22, 22, 6, 6, 4, 17, 23, 1, 11, 5, 0, 6, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Punjabi/Gurmukhi/India
- { 233, 4, 178, 0, 0, 0, 0, 53, 21, 22, 23, 61, 35, 62, 65, 10, 11, 12, 13, 618, 127, 10, 22,15441,15441,15441,15441, 83, 83, 0, 0, 0, 5, 22, 76, 3992, 4, 0, 4776, 4581, 6, 6, 6, 6, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 18, 10, 12, 7, 36, 36, 36, 36, 13, 13, 2, 2, 4, 17, 23, 1, 6, 5, 0, 6, 7, {80,75,82}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Punjabi/Arabic/Pakistan
- { 234, 66, 184, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 192, 127, 0, 0,15477,15477,15529,15529,15556,15556, 165, 164, 0, 5, 22, 290, 3998, 4, 0, 4782, 4790, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 10, 10, 5, 52, 52, 27, 27, 13, 13, 4, 4, 4, 17, 23, 2, 11, 5, 0, 8, 4, {80,69,78}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Quechua/Latin/Peru
- { 234, 66, 28, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 192, 127, 0, 0,15477,15477,15529,15529,15556,15556, 165, 164, 0, 5, 22, 292, 4009, 4, 0, 4782, 4794, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 10, 10, 5, 52, 52, 27, 27, 13, 13, 4, 4, 4, 17, 23, 2, 9, 5, 0, 8, 7, {66,79,66}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Quechua/Latin/Bolivia
- { 234, 66, 70, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 192, 127, 0, 0,15477,15477,15529,15529,15556,15556, 165, 164, 0, 5, 22, 2, 4018, 4, 0, 4782, 4801, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 10, 10, 5, 52, 52, 27, 27, 13, 13, 4, 4, 4, 17, 23, 1, 15, 5, 0, 8, 7, {85,83,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Quechua/Latin/Ecuador
- { 235, 66, 192, 0, 0, 856, 856, 6, 1, 0, 2, 3, 4, 5, 9, 15, 11, 17, 18, 0, 560, 0, 0,15569,15569,15616,15616, 5445, 5445, 165, 164, 892, 5, 22, 294, 4033, 19, 24, 4808, 4814, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 47, 47, 33, 33, 13, 13, 4, 4, 4, 17, 23, 3, 12, 5, 7, 6, 7, {82,79,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Romanian/Latin/Romania
- { 235, 66, 154, 0, 0, 856, 856, 6, 1, 0, 2, 3, 4, 5, 9, 15, 11, 17, 18, 0, 560, 0, 0,15569,15569,15649,15649,15676,15676, 165, 164, 892, 5, 22, 10, 4045, 19, 24, 4808, 4821, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 47, 47, 27, 27, 15, 15, 4, 4, 4, 17, 23, 1, 15, 5, 7, 6, 17, {77,68,76}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Romanian/Latin/Moldova
- { 236, 66, 226, 0, 0, 347, 347, 6, 0, 13, 2, 3, 40, 5, 9, 17, 18, 19, 20, 1306, 432, 0, 0,15691,15691,15746,15746,15768,15768, 0, 0, 0, 5, 22, 216, 4060, 19, 0, 4838, 4847, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 8, 10, 5, 55, 55, 22, 22, 13, 13, 2, 2, 5, 17, 23, 3, 13, 5, 0, 9, 6, {67,72,70}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Romansh/Latin/Switzerland
- { 237, 66, 230, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0,15781,15781,15845,15845,12067,12067, 545, 566, 0, 5, 22, 119, 4073, 9, 0, 4853, 2031, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 64, 64, 28, 28, 13, 13, 8, 7, 4, 17, 23, 3, 18, 4, 0, 9, 8, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Rombo/Latin/Tanzania
- { 238, 66, 38, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 9, 11, 11, 13, 13, 71, 87, 0, 0,15873,15873,15961,15961, 83, 83, 553, 573, 0, 5, 22, 178, 4091, 0, 0, 4862, 4870, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 88, 88, 33, 33, 13, 13, 5, 5, 4, 17, 23, 3, 20, 4, 0, 8, 8, {66,73,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Rundi/Latin/Burundi
- { 239, 27, 193, 0, 0, 117, 117, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 15, 10, 299, 560, 0, 0,15994,15994,16055,16055,16075,16075, 0, 0, 196, 834, 22, 130, 4111, 19, 0, 4878, 4885, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 10, 10, 5, 61, 61, 20, 20, 13, 13, 2, 2, 5, 17, 23, 1, 16, 5, 0, 7, 6, {82,85,66}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Russian/Cyrillic/Russia
- { 239, 27, 22, 0, 0, 117, 117, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 15, 10, 299, 560, 0, 0,15994,15994,16055,16055,16075,16075, 0, 0, 196, 834, 22, 131, 4127, 19, 0, 4878, 526, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 10, 10, 5, 61, 61, 20, 20, 13, 13, 2, 2, 5, 17, 23, 2, 17, 5, 0, 7, 8, {66,89,78}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Russian/Cyrillic/Belarus
- { 239, 27, 123, 0, 0, 117, 117, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 15, 10, 299, 560, 0, 0,15994,15994,16055,16055,16075,16075, 0, 0, 196, 834, 22, 249, 4144, 19, 0, 4878, 4891, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 10, 10, 5, 61, 61, 20, 20, 13, 13, 2, 2, 5, 17, 23, 1, 15, 5, 0, 7, 9, {75,90,84}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Russian/Cyrillic/Kazakhstan
- { 239, 27, 128, 0, 0, 117, 117, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 15, 10, 299, 560, 0, 0,15994,15994,16055,16055,16075,16075, 0, 0, 196, 834, 22, 257, 4159, 19, 0, 4878, 4900, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 10, 10, 5, 61, 61, 20, 20, 13, 13, 2, 2, 5, 17, 23, 3, 14, 5, 0, 7, 8, {75,71,83}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Russian/Cyrillic/Kyrgyzstan
- { 239, 27, 154, 0, 0, 117, 117, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 15, 10, 299, 560, 0, 0,15994,15994,16055,16055,16075,16075, 0, 0, 196, 834, 22, 10, 4173, 19, 0, 4878, 4908, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 10, 10, 5, 61, 61, 20, 20, 13, 13, 2, 2, 5, 17, 23, 1, 14, 5, 0, 7, 7, {77,68,76}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Russian/Cyrillic/Moldova
- { 239, 27, 244, 0, 0, 117, 117, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 15, 10, 299, 560, 0, 0,15994,15994,16055,16055,16075,16075, 0, 0, 196, 834, 22, 297, 4187, 19, 0, 4878, 4915, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 10, 10, 5, 61, 61, 20, 20, 13, 13, 2, 2, 5, 17, 23, 1, 17, 5, 0, 7, 7, {85,65,72}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Russian/Cyrillic/Ukraine
- { 240, 66, 230, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0,11659,11659,11720,11720, 1041, 1041, 398, 414, 0, 5, 22, 119, 3377, 0, 0, 4922, 2031, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 61, 61, 27, 27, 13, 13, 5, 9, 4, 17, 23, 3, 20, 4, 0, 6, 8, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Rwa/Latin/Tanzania
- { 241, 66, 74, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 0, 0, {69,82,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Saho/Latin/Eritrea
- { 242, 27, 193, 0, 0, 864, 864, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 15, 10, 1329, 293, 0, 0,16088,16088,16158,16158,16178,16178, 558, 578, 896, 901, 22, 130, 4204, 19, 0, 4928, 4937, 6, 6, 11, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 30, 6, 10, 5, 70, 70, 20, 20, 13, 13, 2, 2, 5, 17, 23, 1, 20, 5, 0, 9, 9, {82,85,66}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Sakha/Cyrillic/Russia
- { 243, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0,16191,16191,16295,16295,16322,16322, 560, 580, 0, 5, 22, 175, 4224, 9, 13, 4946, 1109, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5,104,104, 27, 27, 13, 13, 7, 5, 4, 17, 23, 3, 18, 4, 6, 8, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Samburu/Latin/Kenya
- { 245, 66, 46, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 9, 17, 18, 10, 11, 71, 87, 0, 0,16335,16335,16400,16400,16427,16427, 567, 585, 0, 5, 22, 3, 4242, 9, 44, 4954, 4959, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 65, 65, 27, 27, 13, 13, 2, 2, 4, 17, 23, 4, 18, 4, 5, 5, 22, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Sango/Latin/Central African Republic
- { 246, 66, 230, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0,16440,16440,16499,16499,16526,16526, 569, 587, 0, 5, 22, 119, 4260, 0, 0, 4981, 4990, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 59, 59, 27, 27, 13, 13, 9, 9, 4, 17, 23, 3, 18, 4, 0, 9, 9, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Sangu/Latin/Tanzania
- { 247, 29, 110, 0, 0, 875, 885, 6, 0, 1, 2, 69, 4, 5, 9, 10, 11, 12, 13, 0, 87, 10, 22,16539,16539, 7072, 7072, 7103, 7103, 451, 472, 0, 5, 22, 118, 4278, 4, 0, 4999, 5011, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 12, 7, 66, 66, 31, 31, 18, 18, 9, 7, 4, 17, 23, 1, 15, 5, 0, 12, 5, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Sanskrit/Devanagari/India
- { 248, 93, 110, 0, 0, 0, 0, 6, 0, 1, 2, 76, 4, 5, 9, 10, 11, 12, 13, 0, 87, 10, 22,16605,16605,16646,16646,16671,16671, 578, 596, 0, 5, 22, 118, 4293, 4, 0, 5016, 5023, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 12, 7, 41, 41, 25, 25, 13, 13, 5, 5, 4, 17, 23, 1, 16, 5, 0, 7, 6, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Santali/Ol Chiki/India
- { 248, 29, 110, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 118, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Santali/Devanagari/India
- { 249, 66, 117, 0, 0, 347, 347, 6, 1, 0, 2, 3, 4, 5, 9, 17, 18, 10, 11, 1359, 127, 0, 0,16684,16684,16738,16738,16765,16765, 0, 0, 0, 5, 22, 14, 4309, 19, 0, 5029, 715, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 37, 10, 10, 5, 54, 54, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 0, 5, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Sardinian/Latin/Italy
- { 251, 66, 160, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 768, 87, 0, 0,16778,16778,16832,16832,16859,16859, 0, 0, 0, 5, 22, 267, 4313, 0, 0, 5034, 4696, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 10, 5, 54, 54, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 21, 4, 0, 4, 10, {77,90,78}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Sena/Latin/Mozambique
- { 252, 27, 207, 0, 0, 117, 117, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 12, 12, 345, 395, 0, 0,16872,16872,16923,16923, 2341, 2341, 0, 0, 918, 5, 22, 298, 4334, 19, 24, 5038, 5044, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 7, 10, 5, 51, 51, 27, 27, 13, 13, 2, 2, 7, 17, 23, 3, 12, 5, 7, 6, 6, {82,83,68}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Serbian/Cyrillic/Serbia
- { 252, 27, 29, 0, 0, 117, 117, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 12, 12, 345, 395, 0, 0, 2259, 2259, 2314,16923, 2341, 2341, 101, 601, 918, 5, 22, 136, 4346, 19, 24, 5038, 608, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 7, 10, 5, 55, 55, 27, 27, 13, 13, 11, 8, 7, 17, 23, 2, 40, 5, 7, 6, 19, {66,65,77}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Serbian/Cyrillic/Bosnia And Herzegovina
- { 252, 27, 126, 0, 0, 117, 117, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 12, 12, 345, 395, 0, 0,16872,16872,16923,16923, 2341, 2341, 0, 0, 918, 5, 22, 14, 4386, 19, 24, 5038, 5050, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 7, 10, 5, 51, 51, 27, 27, 13, 13, 2, 2, 7, 17, 23, 1, 4, 5, 7, 6, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Serbian/Cyrillic/Kosovo
- { 252, 27, 157, 0, 0, 117, 117, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 12, 12, 345, 395, 0, 0,16950,16950,16923,16923, 2341, 2341, 101, 601, 918, 5, 22, 14, 4386, 19, 24, 5038, 5056, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 7, 10, 5, 54, 54, 27, 27, 13, 13, 11, 8, 7, 17, 23, 1, 4, 5, 7, 6, 9, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Serbian/Cyrillic/Montenegro
- { 252, 66, 29, 0, 0, 110, 110, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 12, 12, 345, 395, 0, 0, 2149, 2149, 2206,17004, 2233, 2233, 583, 609, 218, 5, 22, 134, 575, 19, 24, 5065, 581, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 7, 10, 5, 57, 57, 27, 27, 13, 13, 11, 8, 7, 17, 23, 2, 40, 5, 7, 6, 19, {66,65,77}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Serbian/Latin/Bosnia And Herzegovina
- { 252, 66, 126, 0, 0, 110, 110, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 12, 12, 345, 395, 0, 0,17031,17031,17004,17004, 2233, 2233, 0, 0, 218, 5, 22, 14, 4390, 19, 24, 5065, 5071, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 7, 10, 5, 53, 53, 27, 27, 13, 13, 2, 2, 7, 17, 23, 1, 4, 5, 7, 6, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Serbian/Latin/Kosovo
- { 252, 66, 157, 0, 0, 110, 110, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 12, 12, 345, 395, 0, 0,17084,17084,17004,17004, 2233, 2233, 583, 609, 218, 5, 22, 14, 4390, 19, 24, 5065, 5077, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 7, 10, 5, 56, 56, 27, 27, 13, 13, 11, 8, 7, 17, 23, 1, 4, 5, 7, 6, 9, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Serbian/Latin/Montenegro
- { 252, 66, 207, 0, 0, 110, 110, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 12, 12, 345, 395, 0, 0,17031,17031,17004,17004, 2233, 2233, 0, 0, 218, 5, 22, 298, 4394, 19, 24, 5065, 5086, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 7, 10, 5, 53, 53, 27, 27, 13, 13, 2, 2, 7, 17, 23, 3, 12, 5, 7, 6, 6, {82,83,68}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Serbian/Latin/Serbia
- { 253, 66, 230, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0,17140,17140,17202,17202,17229,17229, 594, 617, 0, 5, 22, 119, 4406, 0, 0, 5092, 2031, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 62, 62, 27, 27, 13, 13, 5, 8, 4, 17, 23, 3, 20, 4, 0, 9, 8, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Shambala/Latin/Tanzania
- { 254, 66, 261, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 11, 11, 13, 13, 27, 44, 0, 0,17242,17242,17296,17296,17323,17323, 0, 0, 0, 5, 22, 146, 4426, 9, 13, 5101, 2197, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 54, 54, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 15, 4, 6, 8, 8, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Shona/Latin/Zimbabwe
- { 255, 141, 50, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0,17336,17336,17363,17363,17383,17383, 599, 625, 0, 5, 22, 152, 0, 4, 0, 5109, 5112, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 20, 20, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 3, 2, {67,78,89}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Sichuan Yi/Yi/China
- { 256, 66, 117, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 14, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Sicilian/Latin/Italy
- { 257, 66, 77, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 0, 0, {69,84,66}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Sidamo/Latin/Ethiopia
- { 258, 66, 187, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 286, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 2, 0, 5, 0, 0, 0, {80,76,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Silesian/Latin/Poland
- { 259, 4, 178, 0, 0, 894, 902, 53, 21, 22, 23, 25, 26, 28, 30, 10, 11, 12, 13, 27, 44, 10, 22,17396,17396,17396,17396,17430,17430, 601, 627, 925, 931, 22, 189, 4441, 19, 0, 5114, 5118, 6, 6, 8, 7, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 12, 7, 34, 34, 34, 34, 30, 30, 11, 11, 6, 25, 23, 2, 12, 5, 0, 4, 7, {80,75,82}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Sindhi/Arabic/Pakistan
- { 259, 29, 110, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 339, 10, 22,17460,17487,17528,17550,17578,17578, 612, 638, 0, 5, 22, 118, 4453, 4, 0, 5125, 569, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7, 27, 41, 22, 28, 20, 20, 20, 14, 4, 17, 23, 1, 17, 5, 0, 6, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Sindhi/Devanagari/India
- { 260, 119, 221, 0, 0, 909, 918, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 146, 146,17598,17598,17659,17659,17697,17697, 632, 652, 956, 961, 22, 301, 4470, 9, 13, 5131, 5136, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 61, 61, 38, 38, 18, 18, 5, 4, 5, 42, 23, 3, 17, 4, 6, 5, 11, {76,75,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Sinhala/Sinhala/Sri Lanka
- { 261, 66, 83, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 14, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Skolt Sami/Latin/Finland
- { 262, 66, 212, 0, 0, 224, 926, 6, 1, 14, 2, 3, 4, 5, 6, 15, 10, 16, 12, 520, 364, 1, 1,17715,17715,17766,17766,17786,17786, 0, 0, 311, 5, 22, 14, 420, 19, 24, 5147, 5157, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 9, 4, 51, 51, 20, 20, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 7, 10, 9, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Slovak/Latin/Slovakia
- { 263, 66, 213, 0, 0, 933, 933, 6, 1, 0, 2, 3, 40, 5, 6, 15, 10, 16, 12, 345, 499, 0, 0,17799,17799,17850,17850,17884,17884, 169, 656, 50, 5, 22, 14, 4487, 19, 24, 5166, 5177, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 9, 10, 5, 51, 51, 34, 34, 13, 13, 4, 4, 4, 17, 23, 1, 4, 5, 7, 11, 9, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Slovenian/Latin/Slovenia
- { 264, 66, 243, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0,17897,17897,17961,17961,17995,17995, 637, 660, 0, 5, 22, 149, 2756, 19, 0, 5186, 3067, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 64, 64, 34, 34, 13, 13, 6, 6, 4, 17, 23, 3, 19, 5, 0, 7, 7, {85,71,88}, 0, 0, 1, 7, 7, 1, 3, 3 }, // Soga/Latin/Uganda
- { 265, 66, 215, 0, 0, 941, 941, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 127, 10, 22,18008,18008,18054,18054,18085,18085, 643, 666, 1003, 1009, 22, 91, 4491, 9, 13, 5193, 5201, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 12, 7, 46, 46, 31, 31, 14, 14, 2, 2, 6, 17, 23, 1, 20, 4, 6, 8, 10, {83,79,83}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Somali/Latin/Somalia
- { 265, 66, 67, 0, 0, 941, 941, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 127, 10, 22,18008,18008,18054,18054,18085,18085, 643, 666, 1003, 1009, 22, 35, 4511, 9, 13, 5193, 5211, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 12, 7, 46, 46, 31, 31, 14, 14, 2, 2, 6, 17, 23, 3, 13, 4, 6, 8, 7, {68,74,70}, 0, 0, 6, 6, 7, 1, 3, 3 }, // Somali/Latin/Djibouti
- { 265, 66, 77, 0, 0, 941, 941, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 127, 10, 22,18008,18008,18054,18054,18085,18085, 643, 666, 1003, 1009, 22, 131, 4524, 9, 13, 5193, 5218, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 12, 7, 46, 46, 31, 31, 14, 14, 2, 2, 6, 17, 23, 2, 15, 4, 6, 8, 8, {69,84,66}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Somali/Latin/Ethiopia
- { 265, 66, 124, 0, 0, 941, 941, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 127, 0, 0,18008,18008,18054,18054,18085,18085, 643, 666, 1003, 1009, 22, 175, 4539, 9, 13, 5193, 1109, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 10, 5, 46, 46, 31, 31, 14, 14, 2, 2, 6, 17, 23, 3, 15, 4, 6, 8, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Somali/Latin/Kenya
- { 266, 4, 112, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 0, 0, {73,82,82}, 0, 0, 6, 5, 5, 1, 3, 3 }, // Southern Kurdish/Arabic/Iran
- { 267, 66, 225, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 161, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 2, 0, 5, 0, 0, 0, {83,69,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Southern Sami/Latin/Sweden
- { 268, 66, 216, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 1, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {90,65,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Southern Sotho/Latin/South Africa
- { 269, 66, 216, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 1, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {90,65,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // South Ndebele/Latin/South Africa
- { 270, 66, 220, 0, 0, 70, 70, 6, 1, 0, 2, 3, 4, 5, 9, 17, 18, 10, 11, 768, 87, 55, 1,18099,18099,18151,18151,15556,15556, 129, 124, 0, 5, 22, 14, 420, 19, 0, 5226, 386, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 11, 4, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 4, 5, 0, 17, 6, {69,85,82}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Spanish/Latin/Spain
- { 270, 66, 11, 0, 0, 70, 70, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 768, 87, 0, 0,18099,18099,18151,18151, 5445, 5445, 129, 124, 0, 5, 22, 2, 4554, 4, 37, 5226, 5243, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 10, 5, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 14, 5, 7, 7, 9, {65,82,83}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Spanish/Latin/Argentina
- { 270, 66, 24, 0, 0, 70, 70, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 768, 87, 0, 0,18099,18099,18151,18151, 5445, 7760, 129, 124, 0, 5, 22, 2, 4568, 9, 0, 5226, 5252, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 10, 5, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 14, 4, 0, 7, 6, {66,90,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Belize
- { 270, 66, 28, 0, 0, 70, 70, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 768, 87, 0, 0,18099,18099,18151,18151, 5445, 7760, 129, 124, 0, 5, 22, 292, 4582, 9, 0, 5226, 4794, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 10, 5, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 2, 9, 4, 0, 7, 7, {66,79,66}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Spanish/Latin/Bolivia
- { 270, 66, 32, 0, 0, 70, 70, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 768, 87, 0, 0,18099,18099,18151,18151, 5445, 7760, 129, 124, 0, 5, 22, 1, 4591, 9, 0, 5226, 4617, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 10, 5, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 2, 14, 4, 0, 7, 6, {66,82,76}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Brazil
- { 270, 66, 42, 0, 0, 70, 70, 6, 1, 0, 2, 3, 4, 5, 9, 17, 18, 10, 11, 768, 87, 55, 1,18099,18099,18151,18151,15556,15556, 129, 124, 0, 5, 22, 14, 420, 19, 0, 5226, 5258, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 11, 4, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 4, 5, 0, 7, 8, {69,85,82}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Spanish/Latin/Canary Islands
- { 270, 66, 47, 0, 0, 70, 70, 6, 1, 0, 2, 3, 4, 5, 9, 17, 18, 10, 11, 768, 87, 55, 1,18099,18099,18151,18151,15556,15556, 129, 124, 0, 5, 22, 14, 420, 19, 0, 5226, 5266, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 11, 4, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 4, 5, 0, 7, 15, {69,85,82}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Spanish/Latin/Ceuta And Melilla
- { 270, 66, 49, 0, 0, 70, 70, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 768, 432, 0, 0,18099,18099,18151,18151, 5445, 7760, 129, 124, 0, 5, 22, 2, 4605, 9, 0, 5226, 5281, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 10, 5, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 12, 4, 0, 7, 5, {67,76,80}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Spanish/Latin/Chile
- { 270, 66, 54, 0, 0, 70, 70, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 768, 128, 10, 22,18099,18099,18151,18151, 7760, 5445, 129, 124, 0, 5, 22, 2, 4617, 9, 0, 5226, 5286, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 7, 12, 7, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 15, 4, 0, 7, 8, {67,79,80}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Colombia
- { 270, 66, 59, 0, 0, 70, 70, 6, 1, 14, 2, 3, 4, 5, 9, 10, 11, 12, 13, 768, 87, 0, 0,18099,18099,18151,18151, 5445, 7760, 129, 124, 0, 5, 22, 304, 4632, 9, 0, 5226, 5294, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 10, 5, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 19, 4, 0, 7, 10, {67,82,67}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Spanish/Latin/Costa Rica
- { 270, 66, 61, 0, 0, 70, 70, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 768, 87, 0, 0,18099,18099,18151,18151, 5445, 7760, 129, 124, 0, 5, 22, 2, 4651, 9, 0, 5226, 5304, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 10, 5, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 11, 4, 0, 7, 4, {67,85,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Spanish/Latin/Cuba
- { 270, 66, 69, 0, 0, 70, 70, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 768, 87, 10, 22,18099,18099,18151,18151, 5445, 5445, 129, 124, 0, 5, 22, 305, 4662, 9, 13, 5226, 5308, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 12, 7, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 3, 15, 4, 6, 7, 20, {68,79,80}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Dominican Republic
- { 270, 66, 70, 0, 0, 70, 70, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 768, 87, 0, 0,18099,18099,18151,18151, 5445, 7760, 129, 124, 0, 5, 22, 2, 4677, 9, 0, 5226, 4801, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 10, 5, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 20, 4, 0, 7, 7, {85,83,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Spanish/Latin/Ecuador
- { 270, 66, 72, 0, 0, 70, 70, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 768, 87, 0, 0,18099,18099,18151,18151, 5445, 7760, 129, 124, 0, 5, 22, 2, 4677, 9, 0, 5226, 5328, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 10, 5, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 20, 4, 0, 7, 11, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/El Salvador
- { 270, 66, 73, 0, 0, 70, 70, 6, 1, 0, 2, 3, 4, 5, 9, 17, 18, 10, 11, 768, 87, 55, 1,18099,18099,18151,18151,15556,15556, 129, 124, 0, 5, 22, 3, 4697, 19, 0, 5226, 5339, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 11, 4, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 4, 28, 5, 0, 7, 17, {88,65,70}, 0, 0, 1, 6, 7, 2, 3, 3 }, // Spanish/Latin/Equatorial Guinea
- { 270, 66, 99, 0, 0, 70, 70, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 768, 128, 0, 0,18099,18099,18151,18151, 5445, 7760, 129, 124, 0, 5, 22, 251, 4725, 9, 0, 5226, 5356, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 7, 10, 5, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 7, 4, 0, 7, 9, {71,84,81}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Guatemala
- { 270, 66, 106, 0, 0, 70, 70, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 1396, 87, 0, 0,18099,18099,18151,18151, 5445, 7760, 129, 124, 0, 5, 22, 10, 4732, 9, 0, 5226, 5365, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 10, 5, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 17, 4, 0, 7, 8, {72,78,76}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Honduras
- { 270, 66, 130, 0, 0, 70, 70, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 768, 87, 0, 0,18099,18099,18151,18151, 5445, 7760, 129, 124, 0, 5, 22, 0, 0, 9, 0, 5373, 5396, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 10, 5, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 0, 0, 4, 0, 23, 13, {0,0,0}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Spanish/Latin/Latin America
- { 270, 66, 152, 0, 0, 70, 70, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 768, 127, 0, 0,18099,18099,18151,18151, 5445, 5445, 129, 124, 0, 5, 22, 2, 4749, 9, 0, 5409, 5426, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 10, 5, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 13, 4, 0, 17, 6, {77,88,78}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Mexico
- { 270, 66, 168, 0, 0, 70, 70, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 768, 87, 0, 0,18099,18099,18151,18151, 5445, 7760, 129, 124, 0, 5, 22, 308, 4762, 9, 0, 5226, 5432, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 10, 5, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 2, 20, 4, 0, 7, 9, {78,73,79}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Nicaragua
- { 270, 66, 181, 0, 0, 70, 70, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 768, 1423, 10, 22,18099,18099,18151,18151, 5445, 7760, 129, 124, 0, 5, 22, 310, 4782, 9, 0, 5226, 5441, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 12, 7, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 3, 15, 4, 0, 7, 6, {80,65,66}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Panama
- { 270, 66, 183, 0, 0, 70, 70, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 768, 87, 0, 0,18099,18099,18151,18151, 5445, 7760, 129, 124, 0, 5, 22, 313, 4797, 9, 0, 5226, 5447, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 10, 5, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 3, 17, 4, 0, 7, 8, {80,89,71}, 0, 0, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Paraguay
- { 270, 66, 184, 0, 0, 70, 70, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 768, 128, 0, 0,18099,18099,18151,18151, 5445, 7760, 129, 124, 0, 5, 22, 290, 4814, 9, 0, 5226, 4790, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 7, 10, 5, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 2, 11, 4, 0, 7, 4, {80,69,78}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Peru
- { 270, 66, 185, 0, 0, 70, 70, 6, 1, 0, 2, 3, 4, 5, 9, 17, 18, 10, 11, 768, 87, 10, 22,18099,18099,18151,18151,15556,15556, 129, 124, 0, 5, 22, 145, 4825, 19, 0, 5226, 5455, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 12, 7, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 13, 5, 0, 7, 9, {80,72,80}, 2, 1, 7, 6, 7, 2, 3, 3 }, // Spanish/Latin/Philippines
- { 270, 66, 189, 0, 0, 70, 70, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 768, 1423, 10, 22,18099,18099,18151,18151, 5445, 7760, 129, 124, 0, 5, 22, 2, 4677, 9, 0, 5226, 1843, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 12, 7, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 20, 4, 0, 7, 11, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Puerto Rico
- { 270, 66, 248, 0, 0, 70, 70, 6, 0, 1, 2, 3, 4, 5, 9, 17, 18, 10, 11, 768, 87, 10, 22,18099,18099,18151,18151, 5445, 5445, 129, 124, 0, 5, 22, 2, 4677, 9, 0, 5226, 5464, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 12, 7, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 20, 4, 0, 7, 14, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/United States
- { 270, 66, 250, 0, 0, 70, 70, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 768, 87, 0, 0,18099,18099,18151,18151, 5445, 7760, 129, 124, 0, 5, 22, 2, 4838, 4, 37, 5226, 5478, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 10, 5, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 13, 5, 7, 7, 7, {85,89,85}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Spanish/Latin/Uruguay
- { 270, 66, 254, 0, 0, 70, 70, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 768, 87, 10, 22,18099,18099,18151,18151, 5445, 7760, 129, 124, 0, 5, 22, 316, 4851, 9, 0, 5226, 5485, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 12, 7, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 4, 16, 4, 0, 7, 9, {86,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Venezuela
- { 271, 135, 159, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 15, 11, 71, 87, 0, 0,18178,18178,18225,18225, 83, 83, 645, 668, 0, 5, 22, 0, 4867, 0, 0, 5494, 5502, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 47, 47, 29, 29, 13, 13, 6, 8, 4, 17, 23, 0, 14, 4, 0, 8, 6, {77,65,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Standard Moroccan Tamazight/Tifinagh/Morocco
- { 272, 66, 111, 0, 0, 950, 963, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 87, 147, 147,18254,18254,18297,18297, 7664, 7664, 0, 0, 0, 5, 22, 243, 4881, 9, 0, 5508, 0, 6, 6, 13, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 9, 4, 43, 43, 27, 27, 13, 13, 2, 2, 4, 17, 23, 2, 15, 4, 0, 10, 0, {73,68,82}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Sundanese/Latin/Indonesia
- { 273, 66, 230, 0, 0, 470, 470, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 955, 955, 955, 955, 83, 83, 0, 0, 742, 1026, 22, 119, 3377, 4, 0, 5518, 2031, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 59, 59, 59, 59, 13, 13, 2, 2, 5, 51, 23, 3, 20, 5, 0, 9, 8, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Swahili/Latin/Tanzania
- { 273, 66, 57, 0, 0, 470, 470, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 955, 955, 955, 955, 83, 83, 0, 0, 742, 1026, 22, 3, 4896, 4, 0, 5518, 5527, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 59, 59, 59, 59, 13, 13, 2, 2, 5, 51, 23, 2, 16, 5, 0, 9, 32, {67,68,70}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Swahili/Latin/Congo Kinshasa
- { 273, 66, 124, 0, 0, 470, 470, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 955, 955, 955, 955, 83, 83, 0, 0, 742, 1026, 22, 175, 952, 4, 0, 5518, 1109, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 59, 59, 59, 59, 13, 13, 2, 2, 5, 51, 23, 3, 17, 5, 0, 9, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Swahili/Latin/Kenya
- { 273, 66, 243, 0, 0, 470, 470, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0, 955, 955, 955, 955, 83, 83, 0, 0, 742, 1026, 22, 149, 4912, 4, 0, 5518, 857, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 59, 59, 59, 59, 13, 13, 2, 2, 5, 51, 23, 3, 18, 5, 0, 9, 6, {85,71,88}, 0, 0, 1, 7, 7, 1, 3, 3 }, // Swahili/Latin/Uganda
- { 274, 66, 216, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 1, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {90,65,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Swati/Latin/South Africa
- { 275, 66, 225, 0, 0, 975, 975, 6, 1, 14, 2, 3, 40, 5, 52, 11, 11, 13, 13, 71, 44, 0, 0,18324,18324,18373,18373, 3959, 3959, 651, 676, 0, 5, 22, 161, 4930, 19, 0, 5559, 5566, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 16, 10, 10, 5, 49, 49, 28, 28, 13, 13, 2, 2, 4, 17, 23, 2, 12, 5, 0, 7, 7, {83,69,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Swedish/Latin/Sweden
- { 275, 66, 2, 0, 0, 975, 975, 6, 1, 14, 2, 3, 40, 5, 52, 11, 11, 13, 13, 71, 44, 0, 0,18324,18324,18373,18373, 3959, 3959, 651, 676, 0, 5, 22, 14, 420, 19, 0, 5559, 5573, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 16, 10, 10, 5, 49, 49, 28, 28, 13, 13, 2, 2, 4, 17, 23, 1, 4, 5, 0, 7, 5, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Swedish/Latin/Aland Islands
- { 275, 66, 83, 0, 0, 975, 975, 6, 1, 14, 2, 3, 40, 5, 52, 11, 11, 13, 13, 71, 44, 0, 0,18324,18324,18373,18373, 3959, 3959, 651, 676, 0, 5, 22, 14, 420, 19, 0, 5559, 1478, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 16, 10, 10, 5, 49, 49, 28, 28, 13, 13, 2, 2, 4, 17, 23, 1, 4, 5, 0, 7, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Swedish/Latin/Finland
- { 276, 66, 226, 0, 0, 386, 386, 6, 0, 13, 2, 3, 40, 5, 9, 17, 18, 19, 20, 345, 184, 0, 0,18401,18401,18463,18463, 3667, 3667, 653, 678, 0, 5, 22, 216, 4942, 19, 0, 5578, 5578, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 10, 5, 62, 62, 27, 27, 13, 13, 12, 11, 4, 17, 23, 3, 16, 5, 0, 16, 7, {67,72,70}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Swiss German/Latin/Switzerland
- { 276, 66, 84, 0, 0, 386, 386, 6, 0, 13, 2, 3, 40, 5, 9, 17, 18, 19, 20, 345, 184, 0, 0,18401,18401,18463,18463, 3667, 3667, 653, 678, 0, 5, 22, 14, 73, 19, 0, 5578, 5594, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 10, 5, 62, 62, 27, 27, 13, 13, 12, 11, 4, 17, 23, 1, 4, 5, 0, 16, 10, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Swiss German/Latin/France
- { 276, 66, 136, 0, 0, 386, 386, 6, 0, 13, 2, 3, 40, 5, 9, 17, 18, 19, 20, 345, 184, 0, 0,18401,18401,18463,18463, 3667, 3667, 653, 678, 0, 5, 22, 216, 4942, 19, 0, 5578, 5604, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 10, 5, 62, 62, 27, 27, 13, 13, 12, 11, 4, 17, 23, 3, 16, 5, 0, 16, 13, {67,72,70}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Swiss German/Latin/Liechtenstein
- { 277, 123, 113, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 0, 0, {73,81,68}, 0, 0, 6, 5, 6, 1, 3, 3 }, // Syriac/Syriac/Iraq
- { 278, 135, 159, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 15, 11, 71, 87, 0, 0,18490,18490,18225,18225, 83, 83, 645, 668, 0, 5, 22, 0, 4867, 0, 0, 5617, 5502, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 46, 46, 29, 29, 13, 13, 6, 8, 4, 17, 23, 0, 14, 4, 0, 7, 6, {77,65,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Tachelhit/Tifinagh/Morocco
- { 278, 66, 159, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 15, 11, 71, 87, 0, 0,18536,18536,18583,18583, 83, 83, 665, 689, 0, 5, 22, 0, 4958, 0, 0, 5624, 5634, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 47, 47, 29, 29, 13, 13, 6, 8, 4, 17, 23, 0, 14, 4, 0, 10, 6, {77,65,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Tachelhit/Latin/Morocco
- { 280, 127, 255, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 320, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {86,78,68}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Tai Dam/Tai Viet/Vietnam
- { 281, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0,18612,18612,18716,18716,18743,18743, 671, 697, 0, 5, 22, 175, 952, 9, 13, 5640, 1109, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5,104,104, 27, 27, 13, 13, 10, 10, 4, 17, 23, 3, 17, 4, 6, 7, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Taita/Latin/Kenya
- { 282, 27, 229, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 10, 11, 12, 13, 618, 127, 0, 0,18756,18756,18810,18810,18837,18837, 0, 0, 0, 5, 22, 321, 4972, 19, 0, 5647, 5653, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 10, 5, 54, 54, 27, 27, 13, 13, 2, 2, 4, 17, 23, 4, 6, 5, 0, 6, 10, {84,74,83}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Tajik/Cyrillic/Tajikistan
- { 283, 129, 110, 0, 0, 984, 984, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 192, 87, 440, 352,18850,18850,18898,18898,18936,18936, 681, 707, 1077, 5, 22, 118, 4978, 9, 13, 5663, 5668, 6, 6, 13, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7, 48, 48, 38, 38, 19, 19, 8, 8, 7, 17, 23, 1, 13, 4, 6, 5, 7, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Tamil/Tamil/India
- { 283, 129, 143, 0, 0, 984, 984, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 192, 87, 440, 352,18850,18850,18898,18898,18936,18936, 681, 707, 1077, 5, 22, 187, 4991, 9, 13, 5663, 5675, 6, 6, 13, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7, 48, 48, 38, 38, 19, 19, 8, 8, 7, 17, 23, 2, 17, 4, 6, 5, 7, {77,89,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Tamil/Tamil/Malaysia
- { 283, 129, 210, 0, 0, 984, 984, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 192, 87, 440, 352,18850,18850,18898,18898,18936,18936, 681, 707, 1077, 5, 22, 2, 5008, 9, 13, 5663, 5682, 6, 6, 13, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 7, 48, 48, 38, 38, 19, 19, 8, 8, 7, 17, 23, 1, 17, 4, 6, 5, 11, {83,71,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Tamil/Tamil/Singapore
- { 283, 129, 221, 0, 0, 984, 984, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 192, 87, 0, 0,18850,18850,18898,18898,18936,18936, 681, 707, 1077, 5, 22, 325, 5025, 9, 13, 5663, 5693, 6, 6, 13, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 10, 5, 48, 48, 38, 38, 19, 19, 8, 8, 7, 17, 23, 3, 13, 4, 6, 5, 6, {76,75,82}, 2, 1, 1, 6, 7, 1, 2, 3 }, // Tamil/Tamil/Sri Lanka
- { 284, 66, 228, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 328, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 0, 5, 0, 0, 0, {84,87,68}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Taroko/Latin/Taiwan
- { 285, 66, 170, 0, 0, 0, 0, 6, 0, 14, 2, 3, 4, 5, 9, 10, 11, 12, 13, 71, 87, 0, 0, 9661, 9661, 9714, 9714, 9741, 9741, 689, 715, 0, 5, 22, 124, 3182, 0, 0, 5699, 5712, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 53, 53, 27, 27, 13, 13, 8, 10, 4, 17, 23, 5, 16, 4, 0, 13, 5, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Tasawaq/Latin/Niger
- { 286, 27, 193, 0, 0, 997, 997, 6, 1, 14, 2, 3, 4, 5, 9, 10, 11, 12, 13, 1431, 560, 1, 1,18955,18955,19010,19010,19045,19045, 0, 0, 0, 5, 22, 130, 5038, 19, 0, 5717, 4885, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 10, 9, 4, 55, 55, 35, 35, 13, 13, 2, 2, 4, 17, 23, 1, 11, 5, 0, 5, 6, {82,85,66}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Tatar/Cyrillic/Russia
- { 287, 131, 110, 0, 0, 1006, 1006, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 1454, 432, 10, 22,19058,19058,19117,19117,19148,19148, 0, 0, 1084, 1091, 22, 118, 5049, 9, 13, 5722, 5728, 6, 6, 11, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 12, 7, 59, 59, 31, 31, 17, 17, 2, 2, 7, 29, 23, 1, 14, 4, 6, 6, 8, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Telugu/Telugu/India
- { 288, 66, 243, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0,19165,19165,19233,19233,19260,19260, 697, 725, 0, 5, 22, 149, 5063, 9, 13, 5736, 857, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 68, 68, 27, 27, 13, 13, 9, 6, 4, 17, 23, 3, 21, 4, 6, 6, 6, {85,71,88}, 0, 0, 1, 7, 7, 1, 3, 3 }, // Teso/Latin/Uganda
- { 288, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0,19165,19165,19233,19233,19260,19260, 697, 725, 0, 5, 22, 175, 5084, 9, 13, 5736, 5742, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 68, 68, 27, 27, 13, 13, 9, 6, 4, 17, 23, 3, 20, 4, 6, 6, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Teso/Latin/Kenya
- { 289, 133, 231, 1017, 1017, 1022, 1030, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 1472, 87, 452, 0,19273,19273,19340,19340,19362,19362, 706, 731, 1120, 5, 22, 331, 5104, 9, 13, 5747, 5747, 5, 5, 8, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 6, 28, 5, 67, 67, 22, 22, 15, 15, 10, 10, 4, 17, 23, 1, 3, 4, 6, 3, 3, {84,72,66}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Thai/Thai/Thailand
- { 290, 134, 50, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 1491, 44, 0, 0,19377,19377,19455,19455,19505,19505, 716, 741, 0, 5, 22, 152, 5107, 4, 0, 5750, 5758, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 10, 10, 5, 78, 78, 50, 50, 26, 26, 7, 8, 4, 17, 23, 1, 6, 5, 0, 8, 6, {67,78,89}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Tibetan/Tibetan/China
- { 290, 134, 110, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 1491, 44, 10, 22,19377,19377,19455,19455,19505,19505, 716, 741, 0, 5, 22, 118, 5113, 4, 0, 5750, 5764, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 10, 12, 7, 78, 78, 50, 50, 26, 26, 7, 8, 4, 17, 23, 1, 12, 5, 0, 8, 7, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Tibetan/Tibetan/India
- { 291, 33, 74, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 0, 0, {69,82,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Tigre/Ethiopic/Eritrea
- { 292, 33, 77, 24, 24, 1037, 1037, 6, 0, 1, 2, 3, 4, 5, 9, 17, 18, 10, 11, 1514, 127, 10, 22,19531,19531,19559,19559,19579,19579, 723, 749, 0, 5, 22, 131, 102, 9, 0, 5771, 89, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 12, 7, 28, 28, 20, 20, 13, 13, 4, 4, 4, 17, 23, 2, 2, 4, 0, 4, 5, {69,84,66}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Tigrinya/Ethiopic/Ethiopia
- { 292, 33, 74, 24, 24, 1037, 1037, 6, 0, 1, 2, 3, 4, 5, 9, 12, 13, 10, 11, 1514, 127, 10, 22,19531,19531,19559,19559,19579,19579, 723, 749, 0, 5, 22, 38, 5125, 9, 0, 5771, 5775, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 12, 7, 28, 28, 20, 20, 13, 13, 4, 4, 4, 17, 23, 3, 3, 4, 0, 4, 4, {69,82,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Tigrinya/Ethiopic/Eritrea
- { 294, 66, 182, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 0, 0, {80,71,75}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Tok Pisin/Latin/Papua New Guinea
- { 295, 66, 235, 1044, 1044, 1044, 1044, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 71, 87, 10, 22,19592,19592,19651,19651,19679,19679, 727, 753, 1124, 1129, 1188, 198, 5128, 4, 0, 5779, 2046, 8, 8, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 6, 12, 7, 59, 59, 28, 28, 13, 13, 10, 6, 5, 59, 65, 2, 17, 5, 0, 13, 5, {84,79,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Tongan/Latin/Tonga
- { 296, 66, 216, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 1, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {90,65,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Tsonga/Latin/South Africa
- { 297, 66, 216, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 1, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {90,65,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Tswana/Latin/South Africa
- { 298, 66, 239, 0, 0, 1052, 1052, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 1531, 561, 0, 0,19692,19692,19745,19745,19772,19772, 737, 759, 185, 5, 22, 256, 5145, 9, 13, 5792, 5798, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 9, 10, 5, 53, 53, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 11, 4, 6, 6, 7, {84,82,89}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Turkish/Latin/Turkey
- { 298, 66, 63, 0, 0, 1052, 1052, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 1531, 561, 10, 22,19692,19692,19745,19745,19772,19772, 737, 759, 185, 5, 22, 14, 73, 9, 13, 5792, 5805, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 9, 12, 7, 53, 53, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 4, 4, 6, 6, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Turkish/Latin/Cyprus
- { 299, 66, 240, 0, 0, 1060, 1060, 6, 1, 14, 2, 3, 4, 5, 9, 10, 11, 10, 11, 1531, 560, 0, 0,19785,19838,19891,19918,19945,19945, 739, 761, 1253, 5, 22, 332, 5156, 19, 0, 5811, 5823, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 10, 5, 53, 53, 27, 27, 13, 13, 13, 14, 4, 17, 23, 3, 14, 5, 0, 12, 12, {84,77,84}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Turkmen/Latin/Turkmenistan
- { 301, 66, 169, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 122, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {78,71,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Tyap/Latin/Nigeria
- { 303, 27, 244, 0, 0, 103, 103, 6, 1, 14, 2, 3, 4, 5, 77, 17, 18, 15, 10, 1547, 184, 0, 0,19958,19958, 2499, 2499,20013,20013, 752, 775, 1257, 834, 22, 297, 5170, 19, 0, 5835, 5845, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 8, 10, 5, 55, 55, 20, 20, 13, 13, 2, 2, 5, 17, 23, 1, 17, 5, 0, 10, 7, {85,65,72}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Ukrainian/Cyrillic/Ukraine
- { 304, 66, 91, 0, 0, 224, 224, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 16, 12, 345, 121, 1, 480,20026,20026,20078,20078,20105,20105, 367, 777, 1262, 5, 22, 14, 420, 19, 0, 5852, 5867, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 9, 12, 52, 52, 27, 27, 13, 13, 9, 9, 5, 17, 23, 1, 4, 5, 0, 15, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Upper Sorbian/Latin/Germany
- { 305, 4, 178, 802, 802, 1068, 1078, 6, 0, 1, 2, 3, 35, 37, 9, 11, 10, 13, 12, 1569, 87, 10, 22,20118,20118,20118,20118, 83, 83, 0, 0, 1267, 1271, 22, 189, 5187, 9, 13, 5873, 4581, 6, 6, 10, 9, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 18, 6, 12, 7, 35, 35, 35, 35, 13, 13, 2, 2, 4, 20, 23, 2, 14, 4, 6, 4, 7, {80,75,82}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Urdu/Arabic/Pakistan
- { 305, 4, 110, 802, 802, 1068, 1078, 6, 21, 22, 2, 61, 35, 62, 65, 11, 10, 13, 12, 1569, 87, 10, 22,20118,20118,20118,20118, 83, 83, 0, 0, 1267, 1271, 22, 118, 5201, 9, 13, 5873, 5877, 6, 6, 10, 9, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 18, 6, 12, 7, 35, 35, 35, 35, 13, 13, 2, 2, 4, 20, 23, 1, 12, 4, 6, 4, 5, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Urdu/Arabic/India
- { 306, 4, 50, 0, 0, 265, 275, 6, 0, 1, 2, 3, 4, 5, 9, 18, 17, 20, 19, 1587, 44, 0, 0,20153,20153,20207,20207,20227,20227, 754, 786, 0, 5, 22, 144, 5213, 9, 13, 5882, 5890, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 54, 54, 20, 20, 13, 13, 12, 12, 4, 17, 23, 1, 11, 4, 6, 8, 5, {67,78,89}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Uyghur/Arabic/China
- { 307, 66, 251, 0, 0, 1087, 1087, 6, 1, 14, 2, 3, 4, 5, 9, 10, 11, 13, 12, 1604, 127, 55, 0,20240,20240,20300,20300,20331,20331, 325, 798, 185, 5, 22, 335, 5224, 19, 0, 5895, 5901, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 11, 5, 60, 60, 31, 31, 13, 13, 2, 2, 4, 17, 23, 4, 17, 5, 0, 6, 11, {85,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Uzbek/Latin/Uzbekistan
- { 307, 4, 1, 0, 0, 0, 0, 53, 21, 22, 23, 61, 35, 62, 65, 10, 11, 12, 13, 1622, 454, 55, 1,14977,14977,20344,20344, 83, 83, 0, 0, 0, 5, 22, 281, 3770, 19, 0, 5912, 4572, 6, 6, 6, 6, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 33, 8, 11, 4, 48, 48, 20, 20, 13, 13, 2, 2, 4, 17, 23, 1, 6, 5, 0, 6, 9, {65,70,78}, 0, 0, 6, 4, 5, 1, 3, 3 }, // Uzbek/Arabic/Afghanistan
- { 307, 27, 251, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 10, 11, 12, 13, 795, 127, 54, 0,20364,20364,20416,20416,20443,20443, 766, 800, 0, 5, 22, 339, 5241, 19, 0, 5918, 5925, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 8, 12, 5, 52, 52, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 14, 5, 0, 7, 10, {85,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Uzbek/Cyrillic/Uzbekistan
- { 308, 139, 134, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22,20456,20456,20456,20456, 83, 83, 0, 0, 0, 5, 22, 2, 5255, 9, 13, 5935, 5937, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 29, 29, 29, 29, 13, 13, 2, 2, 4, 17, 23, 1, 8, 4, 6, 2, 4, {76,82,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Vai/Vai/Liberia
- { 308, 66, 134, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22,20485,20485,20485,20485, 83, 83, 0, 0, 0, 5, 22, 2, 5263, 9, 13, 5941, 5944, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 47, 47, 47, 47, 13, 13, 2, 2, 4, 17, 23, 1, 13, 4, 6, 3, 8, {76,82,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Vai/Latin/Liberia
- { 309, 66, 216, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 1, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {90,65,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Venda/Latin/South Africa
- { 310, 66, 255, 0, 0, 1095, 1095, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 192, 127, 0, 0,20532,20532,20586,20586,20618,20618, 768, 802, 0, 5, 22, 320, 5276, 19, 0, 5952, 5962, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 10, 10, 5, 54, 54, 32, 32, 20, 20, 2, 2, 4, 17, 23, 1, 13, 5, 0, 10, 8, {86,78,68}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Vietnamese/Latin/Vietnam
- { 311, 66, 258, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 0, 0, {0,0,0}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Volapuk/Latin/World
- { 312, 66, 230, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0,11659,11659,11720,11720, 1041, 1041, 398, 414, 0, 5, 22, 119, 3377, 9, 0, 5970, 2031, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 61, 61, 27, 27, 13, 13, 5, 9, 4, 17, 23, 3, 20, 4, 0, 8, 8, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Vunjo/Latin/Tanzania
- { 313, 66, 23, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 14, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Walloon/Latin/Belgium
- { 314, 66, 226, 0, 0, 386, 386, 6, 1, 13, 2, 3, 4, 5, 9, 17, 18, 19, 20, 345, 44, 0, 0,20638,20638,20690,20690,20717,20717, 0, 0, 0, 5, 22, 0, 0, 4, 0, 5978, 5984, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 10, 10, 5, 52, 52, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 6, 6, {67,72,70}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Walser/Latin/Switzerland
- { 315, 66, 15, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 246, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 2, 0, 5, 0, 0, 0, {65,85,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Warlpiri/Latin/Australia
- { 316, 66, 246, 0, 0, 1103, 1114, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0,20730,20730,20806,20834,20863,20863, 770, 804, 1291, 5, 22, 92, 5289, 9, 13, 5990, 5997, 6, 6, 11, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 10, 5, 76, 76, 28, 29, 14, 14, 2, 2, 7, 17, 23, 1, 12, 4, 6, 7, 16, {71,66,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Welsh/Latin/United Kingdom
- { 317, 4, 178, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 189, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 2, 0, 5, 0, 0, 0, {80,75,82}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Western Balochi/Arabic/Pakistan
- { 318, 66, 165, 0, 0, 7, 7, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 71, 432, 0, 0,20877,20877,20930,20930, 83, 83, 0, 0, 0, 5, 22, 14, 73, 4, 37, 6013, 6018, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 53, 53, 20, 20, 13, 13, 2, 2, 4, 17, 23, 1, 4, 5, 7, 5, 8, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Western Frisian/Latin/Netherlands
- { 319, 33, 77, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 0, 0, {69,84,66}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Wolaytta/Ethiopic/Ethiopia
- { 320, 66, 206, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 1655, 432, 0, 0,20950,20950,20999,20999,20999,20999, 689, 806, 0, 5, 22, 124, 5301, 4, 0, 6026, 2738, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 49, 49, 27, 27, 27, 27, 3, 3, 4, 17, 23, 5, 29, 5, 0, 5, 8, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Wolof/Latin/Senegal
- { 321, 66, 216, 0, 0, 0, 0, 6, 0, 14, 2, 3, 4, 5, 9, 12, 13, 10, 11, 27, 44, 0, 0,21026,21026,21086,21086, 83, 83, 0, 0, 0, 5, 22, 1, 5330, 9, 0, 6031, 6039, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 60, 60, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 24, 4, 0, 8, 15, {90,65,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Xhosa/Latin/South Africa
- { 322, 66, 40, 0, 0, 0, 0, 6, 1, 14, 2, 3, 4, 5, 9, 17, 18, 17, 18, 71, 87, 0, 0,21113,21113,21183,21183,21203,21203, 772, 809, 0, 5, 22, 3, 0, 19, 24, 6054, 6060, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 70, 70, 20, 20, 13, 13, 8, 8, 4, 17, 23, 4, 0, 5, 7, 6, 7, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Yangben/Latin/Cameroon
- { 323, 47, 258, 0, 0, 1124, 1124, 6, 0, 1, 2, 3, 4, 5, 9, 11, 11, 13, 13, 1672, 127, 0, 0,21216,21216,21216,21216, 83, 83, 780, 817, 0, 5, 22, 0, 0, 4, 0, 6067, 6073, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 8, 10, 5, 53, 53, 53, 53, 13, 13, 11, 10, 4, 17, 23, 0, 0, 5, 0, 6, 5, {0,0,0}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Yiddish/Hebrew/World
- { 324, 66, 169, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 1691, 87, 0, 1,21269,21312,21380,21380,21412,21412, 791, 827, 1298, 1309, 22, 122, 5354, 9, 13, 6078, 6088, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 3, 43, 68, 32, 32, 13, 13, 5, 5, 11, 37, 23, 1, 14, 4, 6, 10, 8, {78,71,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Yoruba/Latin/Nigeria
- { 324, 66, 25, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 1691, 87, 0, 1,21425,21468,21536,21536,21568,21568, 796, 832, 1346, 1309, 22, 124, 5368, 9, 13, 6078, 6096, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 3, 43, 68, 32, 32, 13, 13, 5, 5, 11, 37, 23, 5, 26, 4, 6, 10, 6, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Yoruba/Latin/Benin
- { 325, 66, 170, 0, 0, 0, 0, 6, 0, 14, 2, 3, 4, 5, 9, 10, 11, 12, 13, 71, 87, 0, 0,21581,21581, 9714, 9714,21633,21633, 689, 715, 0, 5, 22, 124, 3182, 0, 0, 6102, 5712, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 10, 5, 52, 52, 27, 27, 13, 13, 8, 10, 4, 17, 23, 5, 16, 4, 0, 10, 5, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Zarma/Latin/Niger
- { 327, 66, 216, 0, 0, 1133, 1142, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 321, 339, 0, 0,21646,21646,21719,21719,21746,21746, 0, 0, 0, 5, 22, 1, 5394, 9, 13, 6112, 6119, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 10, 5, 73, 73, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 20, 4, 6, 7, 17, {90,65,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Zulu/Latin/South Africa
- { 328, 66, 32, 0, 0, 1150, 1150, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 1707, 127, 0, 0,21759,21759,21845,21845,21879,21879, 0, 0, 1357, 5, 22, 1, 5414, 4, 0, 6136, 6143, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 10, 10, 5, 86, 86, 34, 34, 20, 20, 2, 2, 7, 17, 23, 2, 12, 5, 0, 7, 6, {66,82,76}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Kaingang/Latin/Brazil
- { 329, 66, 32, 0, 0, 1159, 1159, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0,21899,21899,21963,21963,21990,21990, 0, 0, 1364, 5, 22, 1, 5426, 4, 0, 6149, 6157, 6, 6, 10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 64, 64, 27, 27, 13, 13, 2, 2, 8, 17, 23, 2, 15, 5, 0, 8, 6, {66,82,76}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Nheengatu/Latin/Brazil
- { 329, 66, 54, 0, 0, 1159, 1159, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22,21899,21899,21963,21963,21990,21990, 129, 124, 1364, 5, 22, 2, 5441, 4, 0, 6163, 6170, 6, 6, 10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 64, 64, 27, 27, 13, 13, 5, 5, 8, 17, 23, 1, 17, 5, 0, 7, 8, {67,79,80}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Nheengatu/Latin/Colombia
- { 329, 66, 254, 0, 0, 1159, 1159, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 10, 22,21899,21899,21963,21963,21990,21990, 129, 124, 1364, 5, 22, 316, 5458, 4, 0, 6163, 6178, 6, 6, 10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 64, 64, 27, 27, 13, 13, 5, 5, 8, 17, 23, 4, 22, 5, 0, 7, 9, {86,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Nheengatu/Latin/Venezuela
+ { 2, 27, 90, 0, 0, 7, 7, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 13, 14, 27, 49, 10, 0, 109, 109, 157, 157, 179, 179, 0, 0, 0, 5, 22, 0, 0, 4, 0, 0, 6, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 10, 13, 5, 48, 48, 22, 22, 15, 15, 2, 2, 4, 17, 23, 1, 0, 5, 0, 6, 9, {71,69,76}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Abkhazian/Cyrillic/Georgia
+ { 3, 66, 77, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 59, 78, 23, 38, 194, 194, 245, 245, 272, 272, 0, 0, 0, 5, 22, 1, 0, 2, 0, 15, 20, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 8, 15, 7, 51, 51, 27, 27, 13, 13, 2, 2, 4, 17, 23, 2, 0, 4, 0, 5, 7, {69,84,66}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Afar/Latin/Ethiopia
+ { 3, 66, 67, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 59, 78, 23, 38, 194, 194, 245, 245, 272, 272, 0, 0, 0, 5, 22, 3, 0, 2, 0, 15, 27, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 8, 15, 7, 51, 51, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 0, 4, 0, 5, 7, {68,74,70}, 0, 0, 6, 6, 7, 1, 3, 3 }, // Afar/Latin/Djibouti
+ { 3, 66, 74, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 59, 78, 23, 38, 194, 194, 245, 245, 272, 272, 0, 0, 0, 5, 22, 6, 0, 2, 0, 15, 34, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 8, 15, 7, 51, 51, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 0, 4, 0, 5, 7, {69,82,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Afar/Latin/Eritrea
+ { 4, 66, 216, 0, 0, 16, 16, 6, 1, 9, 2, 3, 4, 5, 10, 14, 15, 16, 17, 86, 103, 10, 0, 285, 285, 342, 342, 369, 369, 2, 2, 45, 5, 22, 9, 0, 2, 9, 41, 50, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 57, 57, 27, 27, 13, 13, 3, 3, 5, 17, 23, 1, 20, 4, 6, 9, 11, {90,65,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Afrikaans/Latin/South Africa
+ { 4, 66, 162, 0, 0, 16, 16, 6, 1, 9, 2, 3, 4, 5, 10, 14, 15, 16, 17, 113, 103, 23, 38, 285, 285, 342, 342, 369, 369, 2, 2, 45, 5, 22, 10, 20, 2, 9, 41, 61, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 15, 7, 57, 57, 27, 27, 13, 13, 3, 3, 5, 17, 23, 1, 16, 4, 6, 9, 7, {78,65,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Afrikaans/Latin/Namibia
+ { 5, 66, 40, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 13, 15, 18, 17, 113, 129, 10, 0, 382, 382, 453, 453, 480, 480, 5, 5, 0, 5, 22, 11, 36, 0, 0, 68, 73, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 71, 71, 27, 27, 13, 13, 3, 3, 4, 17, 23, 4, 14, 4, 0, 5, 7, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Aghem/Latin/Cameroon
+ { 6, 66, 92, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 137, 155, 23, 38, 493, 493, 541, 541, 568, 568, 8, 8, 0, 5, 22, 15, 50, 2, 0, 80, 84, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 15, 7, 48, 48, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 10, 4, 0, 4, 5, {71,72,83}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Akan/Latin/Ghana
+ { 8, 66, 40, 0, 0, 24, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 11, 60, 15, 0, 89, 95, 6, 6, 5, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 4, 10, 5, 0, 6, 7, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Akoose/Latin/Cameroon
+ { 9, 66, 3, 0, 0, 29, 29, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 14, 15, 0, 180, 45, 38, 581, 581, 638, 638, 665, 665, 10, 10, 50, 5, 22, 18, 70, 4, 20, 102, 107, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 16, 7, 57, 57, 27, 27, 14, 14, 11, 10, 4, 17, 23, 4, 13, 5, 7, 5, 8, {65,76,76}, 0, 0, 1, 6, 7, 2, 3, 3 }, // Albanian/Latin/Albania
+ { 9, 66, 126, 0, 0, 29, 29, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 14, 15, 0, 180, 10, 0, 581, 581, 638, 638, 665, 665, 10, 10, 50, 5, 22, 22, 83, 4, 20, 102, 115, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 13, 5, 57, 57, 27, 27, 14, 14, 11, 10, 4, 17, 23, 1, 6, 5, 7, 5, 6, {69,85,82}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Albanian/Latin/Kosovo
+ { 9, 66, 140, 0, 0, 29, 29, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 14, 15, 0, 180, 10, 0, 581, 581, 638, 638, 665, 665, 10, 10, 50, 5, 22, 23, 89, 4, 20, 102, 121, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 13, 5, 57, 57, 27, 27, 14, 14, 11, 10, 4, 17, 23, 3, 16, 5, 7, 5, 18, {77,75,68}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Albanian/Latin/Macedonia
+ { 11, 33, 77, 38, 38, 44, 53, 6, 0, 1, 2, 3, 4, 5, 10, 11, 12, 19, 20, 163, 186, 61, 76, 679, 679, 706, 706, 732, 732, 21, 20, 54, 57, 22, 26, 105, 2, 9, 139, 143, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 27, 27, 26, 26, 13, 13, 3, 4, 3, 23, 23, 2, 9, 4, 6, 4, 5, {69,84,66}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Amharic/Ethiopic/Ethiopia
+ { 14, 4, 71, 61, 61, 61, 61, 67, 21, 22, 23, 25, 26, 28, 30, 15, 14, 17, 16, 196, 213, 61, 76, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 28, 114, 27, 0, 148, 155, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 15, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 9, 6, 0, 7, 3, {69,71,80}, 2, 1, 6, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Egypt
+ { 14, 4, 4, 61, 61, 61, 61, 6, 1, 0, 32, 3, 35, 37, 10, 15, 14, 17, 16, 196, 213, 61, 76, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 33, 123, 33, 38, 148, 158, 6, 6, 6, 6, 1, 1, 1, 3, 1, 2, 2, 1, 1, 1, 1, 1, 17, 10, 15, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 12, 5, 7, 7, 7, {68,90,68}, 2, 1, 6, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Algeria
+ { 14, 4, 19, 61, 61, 61, 61, 67, 21, 22, 23, 25, 26, 28, 30, 15, 14, 17, 16, 196, 213, 61, 76, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 38, 135, 27, 0, 148, 165, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 15, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 12, 6, 0, 7, 7, {66,72,68}, 3, 0, 6, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Bahrain
+ { 14, 4, 48, 61, 61, 61, 61, 67, 21, 22, 23, 25, 26, 28, 30, 15, 14, 17, 16, 196, 213, 61, 76, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 11, 147, 27, 0, 148, 172, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 15, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 4, 15, 6, 0, 7, 4, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Arabic/Arabic/Chad
+ { 14, 4, 55, 61, 61, 61, 61, 67, 21, 22, 23, 25, 26, 28, 30, 15, 14, 17, 16, 196, 213, 10, 0, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 12, 162, 27, 0, 148, 176, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 13, 5, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 2, 14, 6, 0, 7, 9, {75,77,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Arabic/Arabic/Comoros
+ { 14, 4, 67, 61, 61, 61, 61, 67, 21, 22, 23, 25, 26, 28, 30, 15, 14, 17, 16, 196, 213, 61, 76, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 3, 176, 27, 0, 148, 185, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 15, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 3, 11, 6, 0, 7, 6, {68,74,70}, 0, 0, 6, 6, 7, 1, 3, 3 }, // Arabic/Arabic/Djibouti
+ { 14, 4, 74, 61, 61, 61, 61, 67, 21, 22, 23, 25, 26, 28, 30, 15, 14, 17, 16, 196, 213, 61, 76, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 6, 187, 27, 0, 148, 191, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 15, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 3, 12, 6, 0, 7, 7, {69,82,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Arabic/Arabic/Eritrea
+ { 14, 4, 113, 61, 61, 61, 61, 67, 21, 22, 23, 25, 26, 28, 30, 15, 14, 17, 16, 196, 213, 61, 76, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 43, 199, 27, 0, 148, 198, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 15, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 11, 6, 0, 7, 6, {73,81,68}, 0, 0, 6, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Iraq
+ { 14, 4, 116, 61, 61, 61, 61, 67, 21, 22, 23, 25, 26, 28, 30, 15, 14, 17, 16, 196, 213, 11, 1, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 48, 210, 27, 0, 148, 204, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 12, 4, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 1, 18, 6, 0, 7, 7, {73,76,83}, 2, 1, 7, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Israel
+ { 14, 4, 122, 61, 61, 61, 61, 67, 21, 22, 23, 25, 26, 28, 30, 15, 14, 17, 16, 196, 213, 61, 76, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 49, 228, 27, 0, 148, 211, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 15, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 11, 6, 0, 7, 6, {74,79,68}, 3, 0, 6, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Jordan
+ { 14, 4, 127, 61, 61, 61, 61, 67, 21, 22, 23, 25, 26, 28, 30, 15, 14, 17, 16, 196, 213, 61, 76, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 54, 239, 27, 0, 148, 217, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 15, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 11, 6, 0, 7, 6, {75,87,68}, 3, 0, 6, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Kuwait
+ { 14, 4, 132, 61, 61, 61, 61, 67, 21, 22, 23, 25, 26, 28, 30, 15, 14, 17, 16, 196, 213, 61, 76, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 59, 250, 27, 0, 148, 223, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 15, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 11, 6, 0, 7, 5, {76,66,80}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Arabic/Arabic/Lebanon
+ { 14, 4, 135, 61, 61, 61, 61, 6, 1, 0, 32, 3, 35, 37, 10, 15, 14, 17, 16, 196, 213, 61, 76, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 64, 261, 33, 38, 148, 228, 6, 6, 6, 6, 1, 1, 1, 3, 1, 2, 2, 1, 1, 1, 1, 1, 17, 10, 15, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 10, 5, 7, 7, 5, {76,89,68}, 3, 0, 6, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Libya
+ { 14, 4, 149, 61, 61, 61, 61, 67, 21, 22, 23, 25, 26, 28, 30, 15, 14, 17, 16, 196, 213, 61, 76, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 69, 271, 27, 0, 148, 233, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 15, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 4, 15, 6, 0, 7, 9, {77,82,85}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Arabic/Arabic/Mauritania
+ { 14, 4, 159, 61, 61, 61, 61, 6, 1, 0, 32, 3, 35, 37, 10, 15, 14, 17, 16, 196, 213, 10, 0, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 73, 286, 33, 38, 148, 242, 6, 6, 6, 6, 1, 1, 1, 3, 1, 2, 2, 1, 1, 1, 1, 1, 17, 10, 13, 5, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 10, 5, 7, 7, 6, {77,65,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Arabic/Arabic/Morocco
+ { 14, 4, 176, 61, 61, 61, 61, 67, 21, 22, 23, 25, 26, 28, 30, 15, 14, 17, 16, 196, 213, 61, 76, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 78, 296, 27, 0, 148, 248, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 15, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 10, 6, 0, 7, 5, {79,77,82}, 3, 0, 6, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Oman
+ { 14, 4, 180, 61, 61, 61, 61, 67, 21, 22, 23, 25, 26, 28, 30, 15, 14, 17, 16, 196, 213, 61, 76, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 48, 210, 27, 0, 148, 253, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 15, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 1, 18, 6, 0, 7, 18, {73,76,83}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Arabic/Arabic/Palestinian Territories
+ { 14, 4, 190, 61, 61, 61, 61, 67, 21, 22, 23, 25, 26, 28, 30, 15, 14, 17, 16, 196, 213, 61, 76, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 83, 306, 27, 0, 148, 271, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 15, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 9, 6, 0, 7, 3, {81,65,82}, 2, 1, 6, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Qatar
+ { 14, 4, 205, 61, 61, 61, 61, 67, 21, 22, 23, 25, 26, 28, 30, 15, 14, 17, 16, 196, 213, 61, 76, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 88, 315, 27, 0, 148, 274, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 15, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 10, 6, 0, 7, 24, {83,65,82}, 2, 1, 7, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Saudi Arabia
+ { 14, 4, 215, 61, 61, 61, 61, 67, 21, 22, 23, 25, 26, 28, 30, 15, 14, 17, 16, 196, 213, 61, 76, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 93, 325, 27, 0, 148, 298, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 15, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 1, 10, 6, 0, 7, 7, {83,79,83}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Arabic/Arabic/Somalia
+ { 14, 4, 219, 61, 61, 61, 61, 67, 21, 22, 23, 25, 26, 28, 30, 15, 14, 17, 16, 196, 213, 61, 76, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 94, 335, 27, 0, 148, 305, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 15, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 1, 17, 6, 0, 7, 12, {83,83,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Arabic/Arabic/South Sudan
+ { 14, 4, 222, 61, 61, 61, 61, 67, 21, 22, 23, 25, 26, 28, 30, 15, 14, 17, 16, 196, 213, 61, 76, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 95, 352, 27, 0, 148, 317, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 15, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 4, 11, 6, 0, 7, 7, {83,68,71}, 2, 1, 6, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Sudan
+ { 14, 4, 227, 61, 61, 61, 61, 67, 21, 22, 23, 25, 26, 28, 30, 15, 14, 17, 16, 196, 213, 61, 76, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 99, 363, 27, 0, 148, 324, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 15, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 10, 6, 0, 7, 5, {83,89,80}, 0, 0, 6, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Syria
+ { 14, 4, 238, 61, 61, 61, 61, 6, 1, 0, 32, 3, 35, 37, 10, 15, 14, 17, 16, 196, 213, 61, 76, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 104, 373, 33, 38, 148, 329, 6, 6, 6, 6, 1, 1, 1, 3, 1, 2, 2, 1, 1, 1, 1, 1, 17, 10, 15, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 11, 5, 7, 7, 4, {84,78,68}, 3, 0, 1, 6, 7, 1, 3, 3 }, // Arabic/Arabic/Tunisia
+ { 14, 4, 245, 61, 61, 61, 61, 6, 0, 1, 32, 3, 35, 37, 10, 15, 14, 17, 16, 196, 213, 61, 76, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 109, 384, 33, 38, 148, 333, 6, 6, 6, 6, 1, 1, 1, 3, 1, 2, 2, 1, 1, 1, 1, 1, 17, 10, 15, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 12, 5, 7, 7, 24, {65,69,68}, 2, 1, 6, 6, 7, 1, 3, 3 }, // Arabic/Arabic/United Arab Emirates
+ { 14, 4, 257, 61, 61, 61, 61, 6, 0, 1, 32, 3, 35, 37, 10, 15, 14, 17, 16, 196, 213, 61, 76, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 73, 286, 33, 38, 148, 357, 6, 6, 6, 6, 1, 1, 1, 3, 1, 2, 2, 1, 1, 1, 1, 1, 17, 10, 15, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 10, 5, 7, 7, 15, {77,65,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Arabic/Arabic/Western Sahara
+ { 14, 4, 258, 61, 61, 61, 61, 67, 21, 22, 23, 25, 26, 28, 30, 15, 14, 17, 16, 196, 213, 61, 76, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 0, 0, 27, 0, 372, 394, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 15, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 0, 0, 6, 0, 22, 6, {0,0,0}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Arabic/Arabic/world
+ { 14, 4, 259, 61, 61, 61, 61, 67, 21, 22, 23, 25, 26, 28, 30, 15, 14, 17, 16, 196, 213, 61, 76, 745, 745, 745, 745, 796, 796, 24, 24, 80, 84, 22, 114, 396, 27, 0, 148, 400, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 15, 7, 51, 51, 51, 51, 13, 13, 1, 1, 4, 37, 23, 5, 9, 6, 0, 7, 5, {89,69,82}, 0, 0, 7, 5, 6, 1, 3, 3 }, // Arabic/Arabic/Yemen
+ { 15, 66, 220, 0, 0, 68, 68, 6, 1, 0, 2, 3, 4, 5, 10, 11, 12, 15, 15, 223, 129, 11, 1, 809, 809, 860, 860, 887, 887, 0, 0, 0, 5, 22, 22, 405, 2, 9, 405, 413, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 6, 12, 4, 51, 51, 27, 27, 16, 16, 2, 2, 4, 17, 23, 1, 4, 4, 6, 8, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Aragonese/Latin/Spain
+ { 17, 5, 12, 0, 0, 75, 75, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 11, 12, 245, 49, 10, 0, 903, 903, 964, 964, 991, 991, 0, 0, 121, 127, 22, 119, 409, 4, 0, 420, 427, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 8, 13, 5, 61, 61, 27, 27, 13, 13, 2, 2, 6, 17, 23, 1, 13, 5, 0, 7, 8, {65,77,68}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Armenian/Armenian/Armenia
+ { 18, 9, 110, 0, 0, 82, 82, 6, 0, 1, 2, 39, 4, 5, 10, 14, 15, 16, 17, 265, 283, 83, 83, 1004, 1004, 1061, 1061, 1092, 1092, 25, 25, 144, 148, 22, 120, 422, 2, 9, 435, 442, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 15, 7, 57, 57, 31, 31, 13, 13, 9, 7, 4, 37, 23, 1, 12, 4, 6, 7, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Assamese/Bangla/India
+ { 19, 66, 220, 0, 0, 68, 68, 6, 1, 0, 2, 3, 4, 5, 10, 11, 12, 14, 15, 223, 129, 10, 0, 1105, 1105, 1158, 1158, 1185, 1185, 34, 32, 0, 5, 22, 22, 405, 4, 0, 446, 455, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 6, 13, 5, 53, 53, 27, 27, 13, 13, 12, 11, 5, 17, 23, 1, 4, 5, 0, 9, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Asturian/Latin/Spain
+ { 20, 66, 230, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 1198, 1198, 1257, 1257, 1284, 1284, 46, 43, 0, 5, 22, 121, 434, 4, 0, 461, 467, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 59, 59, 27, 27, 13, 13, 9, 8, 4, 17, 23, 3, 21, 5, 0, 6, 8, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Asu/Latin/Tanzania
+ { 21, 66, 169, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 137, 155, 10, 0, 1297, 1297, 1383, 1383, 83, 83, 0, 0, 0, 5, 22, 124, 455, 15, 0, 475, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 86, 86, 33, 33, 13, 13, 2, 2, 4, 17, 23, 1, 4, 5, 0, 5, 0, {78,71,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Atsam/Latin/Nigeria
+ { 25, 66, 17, 0, 0, 91, 91, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 291, 49, 10, 0, 1416, 1416, 1482, 1508, 96, 96, 0, 0, 185, 5, 22, 125, 459, 4, 0, 480, 490, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 13, 5, 66, 66, 26, 26, 13, 13, 2, 2, 4, 17, 23, 1, 17, 5, 0, 10, 10, {65,90,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Azerbaijani/Latin/Azerbaijan
+ { 25, 4, 112, 0, 0, 0, 0, 67, 21, 22, 23, 40, 35, 41, 44, 11, 12, 19, 20, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 15, 0, 500, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 6, 0, {73,82,82}, 0, 0, 6, 5, 5, 1, 3, 3 }, // Azerbaijani/Arabic/Iran
+ { 25, 4, 113, 0, 0, 0, 0, 67, 21, 22, 23, 40, 35, 41, 44, 11, 12, 19, 20, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 15, 0, 500, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 6, 0, {73,81,68}, 0, 0, 6, 5, 6, 1, 3, 3 }, // Azerbaijani/Arabic/Iraq
+ { 25, 4, 239, 0, 0, 0, 0, 67, 21, 22, 23, 40, 35, 41, 44, 11, 12, 19, 20, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 126, 0, 15, 0, 500, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 6, 0, {84,82,89}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Azerbaijani/Arabic/Turkey
+ { 25, 27, 17, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 10, 11, 12, 19, 20, 291, 49, 10, 0, 1534, 1534, 1600, 1600, 96, 96, 55, 51, 0, 5, 22, 125, 476, 4, 0, 506, 516, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 13, 5, 66, 66, 26, 26, 13, 13, 2, 2, 4, 17, 23, 1, 5, 5, 0, 10, 10, {65,90,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Azerbaijani/Cyrillic/Azerbaijan
+ { 26, 66, 40, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 16, 17, 113, 129, 10, 0, 1626, 1626, 1670, 1670, 1698, 1698, 57, 53, 0, 5, 22, 11, 481, 4, 0, 526, 531, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 44, 44, 28, 28, 13, 13, 6, 7, 4, 17, 23, 4, 4, 5, 0, 5, 7, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Bafia/Latin/Cameroon
+ { 28, 66, 145, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 11, 12, 14, 15, 113, 129, 10, 0, 1711, 1711, 1754, 1754, 1781, 1781, 0, 0, 0, 5, 22, 127, 485, 2, 9, 538, 547, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 43, 43, 27, 27, 13, 13, 2, 2, 4, 17, 23, 5, 17, 4, 6, 9, 4, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Bambara/Latin/Mali
+ { 28, 90, 145, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 113, 129, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 127, 0, 2, 9, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 5, 0, 4, 6, 0, 0, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Bambara/Nko/Mali
+ { 30, 9, 20, 0, 0, 99, 99, 6, 0, 1, 2, 39, 4, 5, 10, 14, 15, 16, 17, 265, 129, 61, 76, 1794, 1794, 1851, 1851, 1887, 1887, 0, 0, 144, 5, 22, 132, 502, 0, 45, 551, 556, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 57, 57, 36, 36, 17, 17, 2, 2, 4, 17, 23, 1, 14, 4, 6, 5, 8, {66,68,84}, 2, 1, 7, 6, 7, 1, 2, 3 }, // Bangla/Bangla/Bangladesh
+ { 30, 9, 110, 0, 0, 99, 99, 6, 0, 1, 2, 39, 4, 5, 10, 14, 15, 16, 17, 265, 129, 61, 76, 1794, 1794, 1851, 1851, 1887, 1887, 0, 0, 144, 5, 22, 120, 516, 2, 9, 551, 564, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 57, 57, 36, 36, 17, 17, 2, 2, 4, 17, 23, 1, 12, 4, 6, 5, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Bangla/Bangla/India
+ { 31, 66, 40, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 13, 14, 113, 129, 10, 0, 1904, 1904, 1973, 1973, 2000, 2000, 63, 60, 0, 5, 22, 11, 528, 4, 0, 568, 573, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 69, 69, 27, 27, 13, 13, 10, 9, 4, 17, 23, 4, 15, 5, 0, 5, 8, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Basaa/Latin/Cameroon
+ { 32, 27, 193, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 133, 0, 15, 0, 581, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 12, 0, {82,85,66}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Bashkir/Cyrillic/Russia
+ { 33, 66, 220, 0, 0, 108, 108, 6, 1, 0, 2, 3, 48, 5, 10, 11, 12, 14, 15, 308, 344, 98, 0, 2013, 2013, 2080, 2080, 2107, 2107, 0, 0, 189, 5, 22, 22, 543, 4, 20, 593, 600, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 36, 6, 15, 5, 67, 67, 27, 27, 13, 13, 2, 2, 7, 17, 23, 1, 5, 5, 7, 7, 8, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Basque/Latin/Spain
+ { 35, 27, 22, 0, 0, 117, 117, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 13, 14, 350, 50, 113, 0, 2120, 2120, 2175, 2175, 2195, 2195, 0, 0, 196, 201, 22, 1, 548, 4, 0, 608, 618, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 7, 14, 5, 55, 55, 20, 20, 13, 13, 2, 2, 5, 17, 23, 2, 16, 5, 0, 10, 8, {66,89,78}, 2, 0, 1, 6, 7, 2, 3, 3 }, // Belarusian/Cyrillic/Belarus
+ { 36, 66, 260, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 2208, 2208, 2208, 2208, 83, 83, 73, 69, 0, 5, 22, 134, 0, 2, 9, 626, 635, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 79, 79, 79, 79, 13, 13, 8, 7, 4, 17, 23, 1, 0, 4, 6, 9, 6, {90,77,87}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Bemba/Latin/Zambia
+ { 37, 66, 230, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 2287, 2287, 2368, 2368, 2395, 2395, 81, 76, 0, 5, 22, 121, 564, 0, 0, 641, 647, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 81, 81, 27, 27, 13, 13, 7, 7, 4, 17, 23, 3, 22, 4, 0, 6, 10, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Bena/Latin/Tanzania
+ { 38, 29, 110, 0, 0, 0, 0, 6, 0, 1, 2, 49, 4, 5, 10, 14, 15, 16, 17, 163, 103, 61, 76, 2408, 2408, 2408, 2408, 83, 83, 88, 83, 0, 5, 22, 120, 0, 2, 0, 657, 664, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 55, 55, 55, 55, 13, 13, 3, 4, 4, 17, 23, 1, 0, 4, 0, 7, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Bhojpuri/Devanagari/India
+ { 40, 33, 74, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 372, 78, 61, 76, 2463, 2463, 2505, 2505, 2530, 2530, 0, 0, 0, 5, 22, 6, 0, 2, 0, 668, 671, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 8, 15, 7, 42, 42, 25, 25, 13, 13, 2, 2, 4, 17, 23, 3, 0, 4, 0, 3, 4, {69,82,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Blin/Ethiopic/Eritrea
+ { 41, 29, 110, 0, 0, 124, 134, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 291, 394, 127, 142, 2543, 2597, 2650, 2650, 2682, 2682, 91, 87, 0, 5, 22, 120, 586, 2, 9, 675, 664, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 10, 54, 53, 32, 32, 17, 17, 3, 6, 4, 17, 23, 1, 11, 4, 6, 3, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Bodo/Devanagari/India
+ { 42, 66, 29, 0, 0, 143, 143, 6, 1, 0, 2, 3, 4, 5, 10, 13, 15, 16, 17, 404, 423, 10, 0, 2699, 2699, 2756, 2756, 2783, 2796, 94, 93, 218, 5, 22, 135, 597, 4, 0, 678, 686, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 11, 13, 5, 57, 57, 27, 27, 13, 13, 10, 7, 7, 17, 23, 2, 40, 5, 0, 8, 19, {66,65,77}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Bosnian/Latin/Bosnia and Herzegovina
+ { 42, 27, 29, 0, 0, 150, 150, 6, 1, 0, 2, 3, 4, 5, 10, 13, 14, 18, 16, 434, 454, 10, 0, 2809, 2809, 2864, 2864, 2891, 2891, 104, 100, 0, 5, 22, 137, 637, 4, 0, 705, 713, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 7, 13, 5, 55, 55, 27, 27, 13, 13, 11, 13, 4, 17, 23, 2, 19, 5, 0, 8, 19, {66,65,77}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Bosnian/Cyrillic/Bosnia and Herzegovina
+ { 43, 66, 84, 0, 0, 157, 157, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 14, 15, 113, 186, 10, 0, 2904, 2904, 2946, 2946, 2978, 2978, 115, 113, 225, 232, 249, 22, 405, 4, 0, 732, 741, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 42, 42, 32, 32, 17, 17, 4, 4, 7, 17, 23, 1, 4, 5, 0, 9, 5, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Breton/Latin/France
+ { 45, 27, 36, 0, 0, 150, 150, 6, 1, 9, 2, 3, 4, 5, 10, 13, 14, 13, 14, 350, 461, 152, 1, 2995, 2995, 3049, 3049, 3069, 3069, 119, 117, 272, 5, 22, 139, 656, 4, 20, 746, 755, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 12, 17, 4, 54, 54, 20, 20, 13, 13, 6, 6, 7, 17, 23, 3, 13, 5, 7, 9, 8, {66,71,78}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Bulgarian/Cyrillic/Bulgaria
+ { 46, 86, 161, 165, 165, 172, 172, 182, 0, 1, 2, 50, 4, 5, 10, 14, 15, 16, 17, 473, 129, 169, 1, 3082, 3082, 3082, 3082, 3135, 3135, 125, 123, 279, 5, 22, 134, 669, 15, 0, 763, 763, 7, 7, 10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 13, 4, 53, 53, 53, 53, 13, 13, 5, 3, 5, 17, 23, 1, 11, 5, 0, 6, 6, {77,77,75}, 0, 0, 7, 6, 7, 1, 3, 3 }, // Burmese/Myanmar/Myanmar
+ { 47, 137, 107, 183, 183, 188, 188, 6, 0, 1, 2, 3, 4, 5, 10, 51, 52, 53, 54, 491, 505, 182, 43, 3148, 3148, 3148, 3148, 3175, 3175, 130, 126, 0, 5, 22, 142, 680, 2, 9, 769, 771, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 8, 16, 6, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 2, 4, 6, 2, 14, {72,75,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Cantonese/Traditional Han/Hong Kong
+ { 47, 118, 50, 183, 183, 188, 188, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 513, 505, 169, 0, 3148, 3148, 3188, 3188, 3175, 3175, 130, 126, 0, 5, 22, 145, 682, 2, 9, 785, 787, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 8, 13, 5, 27, 27, 20, 20, 13, 13, 2, 2, 4, 17, 23, 1, 3, 4, 6, 2, 7, {67,78,89}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Cantonese/Simplified Han/China
+ { 48, 66, 220, 0, 0, 143, 143, 6, 1, 0, 2, 3, 4, 5, 10, 11, 12, 14, 15, 526, 129, 99, 1, 3208, 3208, 3267, 3267, 3267, 3267, 132, 128, 0, 5, 22, 22, 405, 4, 20, 794, 413, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 6, 14, 4, 59, 59, 27, 27, 27, 27, 5, 5, 5, 17, 23, 1, 4, 5, 7, 6, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Catalan/Latin/Spain
+ { 48, 66, 6, 0, 0, 143, 143, 6, 1, 0, 2, 3, 4, 5, 10, 11, 12, 14, 15, 526, 129, 99, 1, 3208, 3208, 3267, 3267, 3267, 3267, 132, 128, 0, 5, 22, 22, 405, 4, 20, 794, 800, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 6, 14, 4, 59, 59, 27, 27, 27, 27, 5, 5, 5, 17, 23, 1, 4, 5, 7, 6, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Catalan/Latin/Andorra
+ { 48, 66, 84, 0, 0, 143, 143, 6, 1, 0, 2, 3, 4, 5, 10, 11, 12, 14, 15, 526, 129, 99, 1, 3208, 3208, 3267, 3267, 3267, 3267, 132, 128, 0, 5, 22, 22, 405, 4, 20, 794, 807, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 6, 14, 4, 59, 59, 27, 27, 27, 27, 5, 5, 5, 17, 23, 1, 4, 5, 7, 6, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Catalan/Latin/France
+ { 48, 66, 117, 0, 0, 143, 143, 6, 1, 0, 2, 3, 4, 5, 10, 11, 12, 14, 15, 526, 129, 99, 1, 3208, 3208, 3267, 3267, 3267, 3267, 132, 128, 0, 5, 22, 22, 405, 4, 20, 794, 813, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 6, 14, 4, 59, 59, 27, 27, 27, 27, 5, 5, 5, 17, 23, 1, 4, 5, 7, 6, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Catalan/Latin/Italy
+ { 49, 66, 185, 0, 0, 193, 202, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 567, 23, 38, 3294, 3294, 3349, 3349, 3376, 3376, 0, 0, 284, 5, 22, 146, 685, 2, 9, 819, 826, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 55, 55, 27, 27, 13, 13, 2, 2, 8, 17, 23, 1, 15, 4, 6, 7, 9, {80,72,80}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Cebuano/Latin/Philippines
+ { 50, 66, 159, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 3389, 3389, 3436, 3436, 3463, 3463, 137, 133, 0, 5, 22, 0, 700, 4, 0, 835, 852, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 47, 47, 27, 27, 13, 13, 9, 10, 4, 17, 23, 0, 15, 5, 0, 17, 6, {77,65,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Central Atlas Tamazight/Latin/Morocco
+ { 51, 4, 113, 0, 0, 0, 0, 67, 21, 22, 23, 25, 55, 57, 59, 14, 15, 16, 17, 163, 103, 61, 76, 3476, 3476, 3476, 3476, 3533, 3533, 146, 143, 0, 5, 22, 43, 715, 4, 0, 858, 872, 6, 6, 6, 6, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 15, 7, 57, 57, 57, 57, 13, 13, 3, 3, 4, 17, 23, 5, 13, 5, 0, 14, 5, {73,81,68}, 0, 0, 6, 5, 6, 1, 3, 3 }, // Central Kurdish/Arabic/Iraq
+ { 51, 4, 112, 0, 0, 0, 0, 67, 21, 22, 23, 25, 55, 57, 59, 14, 15, 16, 17, 163, 103, 10, 0, 3476, 3476, 3476, 3476, 3533, 3533, 146, 143, 0, 5, 22, 0, 728, 4, 0, 858, 877, 6, 6, 6, 6, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 13, 5, 57, 57, 57, 57, 13, 13, 3, 3, 4, 17, 23, 0, 12, 5, 0, 14, 5, {73,82,82}, 0, 0, 6, 5, 5, 1, 3, 3 }, // Central Kurdish/Arabic/Iran
+ { 52, 21, 20, 0, 0, 210, 210, 6, 0, 1, 2, 61, 4, 5, 10, 14, 15, 16, 17, 265, 129, 61, 76, 3546, 3546, 3672, 3672, 3756, 3756, 0, 0, 292, 5, 22, 132, 740, 0, 45, 882, 894, 6, 6, 12, 12, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7,126,126, 84, 84, 38, 38, 2, 2, 8, 17, 23, 1, 21, 4, 6, 12, 14, {66,68,84}, 2, 1, 7, 6, 7, 1, 2, 3 }, // Chakma/Chakma/Bangladesh
+ { 52, 21, 110, 0, 0, 210, 210, 6, 0, 1, 2, 61, 4, 5, 10, 14, 15, 16, 17, 265, 129, 61, 76, 3546, 3546, 3672, 3672, 3756, 3756, 0, 0, 292, 5, 22, 120, 761, 0, 45, 882, 908, 6, 6, 12, 12, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7,126,126, 84, 84, 38, 38, 2, 2, 8, 17, 23, 1, 27, 4, 6, 12, 10, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Chakma/Chakma/India
+ { 54, 27, 193, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 3794, 3794, 3838, 3838, 3862, 3838, 0, 0, 0, 5, 22, 133, 788, 4, 0, 918, 925, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 44, 44, 24, 24, 16, 24, 2, 2, 4, 17, 23, 1, 11, 5, 0, 7, 5, {82,85,66}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Chechen/Cyrillic/Russia
+ { 55, 23, 248, 0, 0, 222, 231, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 567, 61, 76, 3878, 3878, 3926, 3926, 3953, 3953, 149, 146, 300, 5, 22, 10, 799, 2, 9, 930, 933, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 48, 48, 27, 27, 13, 13, 3, 6, 6, 17, 23, 1, 6, 4, 6, 3, 15, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Cherokee/Cherokee/United States
+ { 56, 66, 248, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 567, 23, 38, 3966, 3966, 3966, 3966, 83, 83, 0, 0, 0, 5, 22, 10, 0, 15, 0, 948, 964, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 87, 87, 87, 87, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 16, 13, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Chickasaw/Latin/United States
+ { 57, 66, 243, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 4053, 4053, 4126, 4126, 4153, 4153, 0, 0, 0, 5, 22, 147, 805, 2, 0, 977, 983, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 73, 73, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 19, 4, 0, 6, 6, {85,71,88}, 0, 0, 1, 7, 7, 1, 3, 3 }, // Chiga/Latin/Uganda
+ { 58, 118, 50, 183, 183, 239, 239, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 513, 505, 169, 0, 3148, 3148, 3188, 3188, 3175, 3175, 130, 126, 306, 5, 22, 150, 682, 2, 9, 989, 993, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 8, 13, 5, 27, 27, 20, 20, 13, 13, 2, 2, 2, 17, 23, 1, 3, 4, 6, 4, 2, {67,78,89}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Chinese/Simplified Han/China
+ { 58, 118, 107, 183, 183, 239, 239, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 513, 129, 198, 43, 3148, 3148, 3188, 3188, 3175, 3175, 130, 126, 306, 5, 22, 142, 824, 2, 9, 989, 995, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 6, 14, 6, 27, 27, 20, 20, 13, 13, 2, 2, 2, 17, 23, 3, 2, 4, 6, 4, 9, {72,75,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Chinese/Simplified Han/Hong Kong
+ { 58, 118, 139, 183, 183, 239, 239, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 513, 129, 198, 43, 3148, 3148, 3188, 3188, 3175, 3175, 130, 126, 306, 5, 22, 151, 826, 2, 9, 989, 1004, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 6, 14, 6, 27, 27, 20, 20, 13, 13, 2, 2, 2, 17, 23, 4, 3, 4, 6, 4, 9, {77,79,80}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Chinese/Simplified Han/Macao
+ { 58, 118, 210, 183, 183, 239, 239, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 513, 78, 198, 43, 3148, 3148, 3188, 3188, 3175, 3175, 130, 126, 306, 5, 22, 10, 829, 2, 9, 989, 1013, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 8, 14, 6, 27, 27, 20, 20, 13, 13, 2, 2, 2, 17, 23, 1, 4, 4, 6, 4, 3, {83,71,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Chinese/Simplified Han/Singapore
+ { 58, 137, 107, 183, 183, 244, 244, 6, 0, 1, 2, 3, 4, 5, 10, 51, 52, 53, 54, 513, 129, 182, 43, 3148, 3148, 4166, 4166, 3175, 3175, 130, 126, 308, 5, 22, 142, 824, 2, 9, 1016, 1020, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 8, 16, 6, 27, 27, 20, 20, 13, 13, 2, 2, 3, 17, 23, 3, 2, 4, 6, 4, 9, {72,75,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Chinese/Traditional Han/Hong Kong
+ { 58, 137, 139, 183, 183, 244, 244, 6, 0, 1, 2, 3, 4, 5, 10, 51, 52, 53, 54, 513, 129, 182, 43, 3148, 3148, 4166, 4166, 3175, 3175, 130, 126, 308, 5, 22, 151, 833, 2, 9, 1016, 1029, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 8, 16, 6, 27, 27, 20, 20, 13, 13, 2, 2, 3, 17, 23, 4, 3, 4, 6, 4, 9, {77,79,80}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Chinese/Traditional Han/Macao
+ { 58, 137, 228, 183, 183, 239, 239, 6, 0, 1, 2, 3, 4, 5, 10, 51, 52, 53, 54, 491, 505, 182, 43, 3148, 3148, 4166, 4166, 3175, 3175, 130, 126, 0, 5, 22, 10, 836, 2, 9, 1016, 1038, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 8, 16, 6, 27, 27, 20, 20, 13, 13, 2, 2, 4, 17, 23, 1, 3, 4, 6, 4, 2, {84,87,68}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Chinese/Traditional Han/Taiwan
+ { 59, 27, 193, 0, 0, 249, 249, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 13, 14, 573, 596, 10, 0, 4186, 4186, 4253, 4253, 4289, 4289, 0, 0, 0, 5, 22, 133, 839, 4, 0, 1040, 1059, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 10, 13, 5, 67, 67, 36, 36, 13, 13, 2, 2, 4, 17, 23, 1, 18, 5, 0, 19, 7, {82,85,66}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Church/Cyrillic/Russia
+ { 60, 27, 193, 0, 0, 257, 257, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 13, 14, 606, 49, 10, 0, 4302, 4302, 4367, 4367, 4399, 4399, 0, 0, 0, 5, 22, 133, 857, 4, 0, 1066, 1071, 6, 6, 10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 10, 13, 5, 65, 65, 32, 32, 13, 13, 2, 2, 4, 17, 23, 1, 12, 5, 0, 5, 6, {82,85,66}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Chuvash/Cyrillic/Russia
+ { 61, 66, 91, 0, 0, 267, 267, 6, 1, 9, 2, 3, 48, 5, 63, 13, 14, 18, 16, 628, 423, 10, 0, 4412, 4412, 4483, 4483, 4510, 4510, 152, 152, 0, 5, 22, 22, 83, 4, 0, 1077, 1083, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 23, 10, 13, 5, 71, 71, 27, 27, 13, 13, 16, 16, 4, 17, 23, 1, 4, 5, 0, 6, 11, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Colognian/Latin/Germany
+ { 63, 66, 246, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 113, 186, 10, 0, 4523, 4523, 4583, 4583, 83, 83, 168, 168, 0, 5, 22, 94, 0, 2, 0, 1094, 1102, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 60, 60, 27, 27, 13, 13, 4, 4, 4, 17, 23, 1, 0, 4, 0, 8, 14, {71,66,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Cornish/Latin/United Kingdom
+ { 64, 66, 84, 0, 0, 275, 275, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 11, 12, 651, 186, 10, 0, 4610, 4610, 4660, 4660, 4694, 4694, 0, 0, 0, 5, 22, 155, 405, 4, 51, 1116, 1121, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 25, 10, 13, 5, 50, 50, 34, 34, 13, 13, 2, 2, 4, 17, 23, 3, 4, 5, 7, 5, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Corsican/Latin/France
+ { 66, 66, 60, 0, 0, 143, 143, 6, 1, 0, 2, 3, 48, 5, 10, 13, 14, 18, 16, 404, 676, 98, 0, 2699, 2699, 2756, 2756, 2783, 2796, 0, 0, 218, 5, 22, 22, 405, 4, 0, 1128, 1136, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 13, 15, 5, 57, 57, 27, 27, 13, 13, 2, 2, 7, 17, 23, 1, 4, 5, 0, 8, 8, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Croatian/Latin/Croatia
+ { 66, 66, 29, 0, 0, 143, 143, 6, 1, 0, 2, 3, 48, 5, 10, 13, 14, 18, 16, 404, 689, 98, 0, 2699, 2699, 2756, 2756, 2796, 2796, 0, 0, 218, 5, 22, 135, 618, 4, 0, 1128, 686, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 9, 15, 5, 57, 57, 27, 27, 13, 13, 2, 2, 7, 17, 23, 2, 19, 5, 0, 8, 19, {66,65,77}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Croatian/Latin/Bosnia and Herzegovina
+ { 67, 66, 64, 0, 0, 282, 282, 6, 1, 9, 2, 3, 4, 5, 10, 13, 14, 18, 16, 698, 49, 114, 1, 4707, 4707, 4755, 4755, 4775, 4775, 172, 172, 311, 5, 22, 158, 869, 4, 0, 1144, 1151, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 13, 4, 48, 48, 20, 20, 13, 13, 4, 4, 5, 17, 23, 2, 12, 5, 0, 7, 5, {67,90,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Czech/Latin/Czechia
+ { 68, 66, 65, 0, 0, 289, 289, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 715, 49, 212, 212, 4788, 4788, 4838, 4838, 4874, 4874, 0, 0, 0, 5, 22, 160, 881, 4, 0, 1156, 1161, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 10, 13, 5, 50, 50, 36, 36, 13, 13, 2, 2, 5, 17, 23, 3, 11, 5, 0, 5, 7, {68,75,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Danish/Latin/Denmark
+ { 68, 66, 95, 0, 0, 289, 289, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 715, 49, 212, 212, 4788, 4788, 4838, 4838, 4874, 4874, 0, 0, 0, 5, 22, 160, 881, 4, 0, 1156, 1168, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 10, 13, 5, 50, 50, 36, 36, 13, 13, 2, 2, 5, 17, 23, 3, 11, 5, 0, 5, 8, {68,75,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Danish/Latin/Greenland
+ { 69, 132, 144, 0, 0, 0, 0, 2, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 113, 283, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 163, 0, 15, 0, 1176, 1186, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 6, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 2, 0, 5, 0, 10, 13, {77,86,82}, 2, 1, 5, 6, 7, 1, 3, 3 }, // Divehi/Thaana/Maldives
+ { 70, 29, 110, 0, 0, 297, 306, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 738, 129, 61, 76, 4887, 4887, 4937, 4937, 4966, 4988, 176, 176, 0, 5, 22, 120, 892, 2, 0, 1199, 664, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 50, 50, 29, 29, 22, 24, 4, 9, 4, 17, 23, 1, 10, 4, 0, 5, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Dogri/Devanagari/India
+ { 71, 66, 40, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 16, 17, 113, 129, 10, 0, 5012, 5012, 5056, 5056, 5083, 5083, 180, 185, 0, 5, 22, 11, 0, 4, 0, 1204, 1209, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 44, 44, 27, 27, 13, 13, 5, 6, 4, 17, 23, 4, 0, 5, 0, 5, 8, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Duala/Latin/Cameroon
+ { 72, 66, 165, 0, 0, 16, 16, 6, 1, 0, 2, 3, 4, 5, 10, 16, 17, 16, 17, 113, 394, 10, 0, 5096, 5096, 5154, 5154, 5174, 5174, 168, 168, 0, 5, 22, 22, 83, 15, 58, 1217, 1217, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 58, 58, 20, 20, 13, 13, 4, 4, 4, 17, 23, 1, 4, 5, 7, 10, 9, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Dutch/Latin/Netherlands
+ { 72, 66, 13, 0, 0, 16, 16, 6, 1, 0, 2, 3, 4, 5, 10, 16, 17, 16, 17, 113, 394, 10, 0, 5096, 5096, 5154, 5154, 5174, 5174, 168, 168, 0, 5, 22, 165, 902, 15, 58, 1217, 1227, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 58, 58, 20, 20, 13, 13, 4, 4, 4, 17, 23, 4, 16, 5, 7, 10, 5, {65,87,71}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Dutch/Latin/Aruba
+ { 72, 66, 23, 0, 0, 16, 16, 6, 1, 0, 2, 3, 4, 5, 10, 16, 17, 16, 17, 113, 187, 10, 0, 5096, 5096, 5154, 5154, 5174, 5174, 168, 168, 0, 5, 22, 22, 83, 15, 58, 1232, 1238, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 9, 13, 5, 58, 58, 20, 20, 13, 13, 4, 4, 4, 17, 23, 1, 4, 5, 7, 6, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Dutch/Latin/Belgium
+ { 72, 66, 44, 0, 0, 16, 16, 6, 1, 0, 2, 3, 4, 5, 10, 16, 17, 16, 17, 113, 394, 10, 0, 5096, 5096, 5154, 5154, 5174, 5174, 168, 168, 0, 5, 22, 10, 918, 15, 58, 1217, 1244, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 58, 58, 20, 20, 13, 13, 4, 4, 4, 17, 23, 1, 18, 5, 7, 10, 19, {85,83,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Dutch/Latin/Caribbean Netherlands
+ { 72, 66, 62, 0, 0, 16, 16, 6, 1, 0, 2, 3, 4, 5, 10, 16, 17, 16, 17, 113, 394, 10, 0, 5096, 5096, 5154, 5154, 5174, 5174, 168, 168, 0, 5, 22, 169, 936, 15, 58, 1217, 1263, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 58, 58, 20, 20, 13, 13, 4, 4, 4, 17, 23, 4, 30, 5, 7, 10, 7, {65,78,71}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Dutch/Latin/Curacao
+ { 72, 66, 211, 0, 0, 16, 16, 6, 1, 0, 2, 3, 4, 5, 10, 16, 17, 16, 17, 113, 394, 10, 0, 5096, 5096, 5154, 5154, 5174, 5174, 168, 168, 0, 5, 22, 169, 936, 15, 58, 1217, 1270, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 58, 58, 20, 20, 13, 13, 4, 4, 4, 17, 23, 4, 30, 5, 7, 10, 12, {65,78,71}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Dutch/Latin/Sint Maarten
+ { 72, 66, 223, 0, 0, 16, 16, 6, 1, 0, 2, 3, 4, 5, 10, 16, 17, 16, 17, 113, 394, 10, 0, 5096, 5096, 5154, 5154, 5174, 5174, 168, 168, 0, 5, 22, 10, 966, 15, 58, 1217, 1282, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 58, 58, 20, 20, 13, 13, 4, 4, 4, 17, 23, 1, 17, 5, 7, 10, 8, {83,82,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Dutch/Latin/Suriname
+ { 73, 134, 27, 314, 314, 314, 314, 6, 0, 1, 2, 67, 4, 5, 10, 14, 15, 16, 17, 756, 103, 225, 255, 5187, 5187, 5265, 5265, 5298, 5298, 185, 191, 0, 5, 22, 173, 983, 2, 0, 1290, 1296, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 30, 10, 30, 22, 78, 78, 33, 33, 26, 26, 5, 6, 4, 17, 23, 3, 8, 4, 0, 6, 5, {66,84,78}, 2, 1, 7, 6, 7, 1, 2, 3 }, // Dzongkha/Tibetan/Bhutan
+ { 74, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 5324, 5324, 5387, 5387, 5414, 5414, 190, 197, 0, 5, 22, 176, 991, 2, 9, 1301, 1307, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 63, 63, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 17, 4, 6, 6, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Embu/Latin/Kenya
+ { 75, 66, 248, 0, 0, 323, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 567, 23, 38, 0, 0, 56, 56, 83, 83, 0, 0, 0, 5, 22, 10, 1008, 2, 9, 1312, 964, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 9, 4, 6, 16, 13, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/United States
+ { 75, 28, 248, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 5427, 5427, 5511, 5511, 5559, 5559, 192, 199, 0, 5, 22, 10, 0, 15, 0, 1328, 1338, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 84, 84, 48, 48, 20, 20, 4, 4, 4, 17, 23, 1, 0, 5, 0, 10, 25, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Deseret/United States
+ { 75, 66, 5, 0, 0, 323, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 567, 23, 38, 0, 0, 56, 56, 83, 83, 0, 0, 0, 5, 22, 10, 1008, 2, 9, 1321, 1363, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 9, 4, 6, 7, 14, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/American Samoa
+ { 75, 66, 8, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1017, 2, 9, 1321, 1377, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 21, 4, 6, 7, 8, {88,67,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Anguilla
+ { 75, 66, 10, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1017, 2, 9, 1321, 1385, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 21, 4, 6, 7, 17, {88,67,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Antigua and Barbuda
+ { 75, 66, 15, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 6, 14, 15, 16, 17, 113, 129, 23, 38, 0, 0, 56, 56, 83, 5579, 82, 203, 0, 5, 22, 10, 1038, 2, 9, 1402, 1402, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 6, 15, 7, 56, 56, 27, 27, 13, 24, 2, 2, 5, 17, 23, 1, 17, 4, 6, 18, 9, {65,85,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Australia
+ { 75, 66, 16, 0, 0, 333, 333, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 22, 83, 15, 0, 1321, 1420, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 0, 7, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Austria
+ { 75, 66, 18, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1055, 2, 9, 1321, 1427, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 15, 4, 6, 7, 7, {66,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Bahamas
+ { 75, 66, 21, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1070, 2, 9, 1321, 1434, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 16, 4, 6, 7, 8, {66,66,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Barbados
+ { 75, 66, 23, 0, 0, 333, 333, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 78, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 22, 83, 4, 0, 1321, 1442, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 0, 7, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Belgium
+ { 75, 66, 24, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 786, 78, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1086, 2, 9, 1321, 1449, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 13, 4, 6, 7, 6, {66,90,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Belize
+ { 75, 66, 26, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1099, 2, 9, 1321, 1455, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 16, 4, 6, 7, 7, {66,77,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Bermuda
+ { 75, 66, 30, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 786, 78, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 153, 1115, 2, 9, 1321, 1462, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 14, 4, 6, 7, 8, {66,87,80}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Botswana
+ { 75, 66, 33, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 179, 1008, 2, 9, 1321, 1470, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 9, 4, 6, 7, 30, {85,83,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/British Indian Ocean Territory
+ { 75, 66, 34, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 179, 1008, 2, 9, 1321, 1500, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 9, 4, 6, 7, 22, {85,83,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/British Virgin Islands
+ { 75, 66, 38, 0, 0, 323, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 567, 10, 0, 0, 0, 56, 56, 83, 83, 0, 0, 0, 5, 22, 182, 1129, 2, 9, 1321, 1522, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 15, 4, 6, 7, 7, {66,73,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // English/Latin/Burundi
+ { 75, 66, 40, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 11, 1144, 2, 9, 1321, 1529, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 4, 25, 4, 6, 7, 8, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // English/Latin/Cameroon
+ { 75, 66, 41, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 103, 23, 38, 0, 0, 56, 56, 83, 83, 168, 168, 0, 5, 22, 10, 1169, 2, 9, 1537, 1553, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 10, 15, 7, 56, 56, 27, 27, 13, 13, 4, 4, 5, 17, 23, 1, 15, 4, 6, 16, 6, {67,65,68}, 2, 0, 7, 6, 7, 1, 3, 3 }, // English/Latin/Canada
+ { 75, 66, 45, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1184, 2, 9, 1321, 1559, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 21, 4, 6, 7, 14, {75,89,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Cayman Islands
+ { 75, 66, 51, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1038, 2, 9, 1321, 1573, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 17, 4, 6, 7, 16, {65,85,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Christmas Island
+ { 75, 66, 53, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1038, 2, 9, 1321, 1589, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 17, 4, 6, 7, 23, {65,85,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Cocos Islands
+ { 75, 66, 58, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1205, 2, 9, 1321, 1612, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 18, 4, 6, 7, 12, {78,90,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Cook Islands
+ { 75, 66, 63, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 22, 83, 2, 9, 1321, 1624, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 4, 6, 7, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Cyprus
+ { 75, 66, 65, 0, 0, 333, 333, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 212, 212, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 160, 1223, 4, 0, 1321, 1630, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 12, 5, 0, 7, 7, {68,75,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // English/Latin/Denmark
+ { 75, 66, 66, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 179, 1008, 2, 9, 1321, 1637, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 9, 4, 6, 7, 12, {85,83,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Diego Garcia
+ { 75, 66, 68, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1017, 2, 9, 1321, 1649, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 21, 4, 6, 7, 8, {88,67,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Dominica
+ { 75, 66, 74, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 6, 1235, 2, 9, 1321, 1657, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 14, 4, 6, 7, 7, {69,82,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Eritrea
+ { 75, 66, 76, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 155, 1249, 2, 9, 1321, 1664, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 15, 4, 6, 7, 8, {83,90,76}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Eswatini
+ { 75, 66, 78, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 0, 0, 4, 0, 1321, 1672, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 0, 0, 5, 0, 7, 6, {0,0,0}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Europe
+ { 75, 66, 80, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 94, 1264, 2, 9, 1321, 1678, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 22, 4, 6, 7, 16, {70,75,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Falkland Islands
+ { 75, 66, 82, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1286, 2, 9, 1321, 1694, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 13, 4, 6, 7, 4, {70,74,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Fiji
+ { 75, 66, 83, 0, 0, 333, 333, 6, 1, 9, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 213, 213, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 22, 83, 4, 0, 1321, 1698, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 4, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 0, 7, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Finland
+ { 75, 66, 89, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 185, 1299, 2, 9, 1321, 1705, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 14, 4, 6, 7, 6, {71,77,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Gambia
+ { 75, 66, 91, 0, 0, 333, 333, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 22, 83, 4, 0, 1321, 1711, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 0, 7, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Germany
+ { 75, 66, 92, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 15, 1313, 2, 9, 1321, 1718, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 13, 4, 6, 7, 5, {71,72,83}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Ghana
+ { 75, 66, 93, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 94, 1326, 2, 9, 1321, 1723, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 15, 4, 6, 7, 9, {71,73,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Gibraltar
+ { 75, 66, 96, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1017, 2, 9, 1321, 1732, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 21, 4, 6, 7, 7, {88,67,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Grenada
+ { 75, 66, 98, 0, 0, 323, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 567, 23, 38, 0, 0, 56, 56, 83, 83, 0, 0, 0, 5, 22, 10, 1008, 2, 9, 1321, 1739, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 9, 4, 6, 7, 4, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Guam
+ { 75, 66, 100, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 94, 1341, 2, 9, 1321, 1743, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 8, 4, 6, 7, 8, {71,66,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Guernsey
+ { 75, 66, 103, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1349, 2, 9, 1321, 1751, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 16, 4, 6, 7, 6, {71,89,68}, 2, 0, 1, 6, 7, 1, 3, 3 }, // English/Latin/Guyana
+ { 75, 66, 107, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 129, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 142, 1365, 2, 9, 1321, 1757, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 16, 4, 6, 7, 19, {72,75,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Hong Kong
+ { 75, 66, 110, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 804, 78, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 120, 1381, 2, 9, 1321, 1478, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 12, 4, 6, 7, 5, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // English/Latin/India
+ { 75, 66, 111, 0, 0, 333, 333, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 212, 212, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 186, 1393, 2, 9, 1321, 1776, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 2, 17, 4, 6, 7, 9, {73,68,82}, 2, 0, 7, 6, 7, 1, 3, 3 }, // English/Latin/Indonesia
+ { 75, 66, 114, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 113, 186, 10, 0, 0, 0, 56, 56, 83, 83, 168, 168, 0, 5, 22, 22, 83, 2, 9, 1321, 1785, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 56, 56, 27, 27, 13, 13, 4, 4, 5, 17, 23, 1, 4, 4, 6, 7, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Ireland
+ { 75, 66, 115, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 94, 1341, 2, 9, 1321, 1792, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 8, 4, 6, 7, 11, {71,66,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Isle of Man
+ { 75, 66, 116, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 11, 1, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 48, 1410, 2, 9, 1321, 1803, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 4, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 18, 4, 6, 7, 6, {73,76,83}, 2, 1, 7, 5, 6, 1, 3, 3 }, // English/Latin/Israel
+ { 75, 66, 119, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 129, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1428, 2, 9, 1321, 1809, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 15, 4, 6, 7, 7, {74,77,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Jamaica
+ { 75, 66, 121, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 94, 1341, 2, 9, 1321, 1816, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 8, 4, 6, 7, 6, {71,66,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Jersey
+ { 75, 66, 124, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 176, 1443, 2, 9, 1321, 1307, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 15, 4, 6, 7, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Kenya
+ { 75, 66, 125, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1038, 2, 9, 1321, 1822, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 17, 4, 6, 7, 8, {65,85,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Kiribati
+ { 75, 66, 133, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 9, 1458, 2, 9, 1321, 1830, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 18, 4, 6, 7, 7, {90,65,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Lesotho
+ { 75, 66, 134, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1476, 2, 9, 1321, 1837, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 15, 4, 6, 7, 7, {76,82,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Liberia
+ { 75, 66, 139, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 151, 1491, 2, 9, 1321, 1844, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 4, 15, 4, 6, 7, 15, {77,79,80}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Macao
+ { 75, 66, 141, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 188, 1506, 2, 9, 1321, 1859, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 2, 15, 4, 6, 7, 10, {77,71,65}, 0, 0, 1, 6, 7, 1, 3, 3 }, // English/Latin/Madagascar
+ { 75, 66, 142, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 190, 1521, 2, 9, 1321, 1869, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 2, 15, 4, 6, 7, 6, {77,87,75}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Malawi
+ { 75, 66, 143, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 192, 1536, 2, 9, 1321, 1875, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 2, 17, 4, 6, 7, 8, {77,89,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Malaysia
+ { 75, 66, 144, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 113, 283, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 194, 1553, 15, 0, 1321, 1883, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 6, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 2, 17, 5, 0, 7, 8, {77,86,82}, 2, 1, 5, 6, 7, 1, 3, 3 }, // English/Latin/Maldives
+ { 75, 66, 146, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 22, 83, 2, 9, 1321, 1891, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 4, 6, 7, 5, {69,85,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Malta
+ { 75, 66, 147, 0, 0, 323, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 567, 23, 38, 0, 0, 56, 56, 83, 83, 0, 0, 0, 5, 22, 10, 1008, 2, 9, 1321, 1896, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 9, 4, 6, 7, 16, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Marshall Islands
+ { 75, 66, 150, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 196, 1570, 2, 9, 1321, 1912, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 2, 15, 4, 6, 7, 9, {77,85,82}, 2, 0, 1, 6, 7, 1, 3, 3 }, // English/Latin/Mauritius
+ { 75, 66, 153, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 179, 1008, 2, 9, 1321, 1921, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 9, 4, 6, 7, 10, {85,83,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Micronesia
+ { 75, 66, 158, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1017, 2, 9, 1321, 1931, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 21, 4, 6, 7, 10, {88,67,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Montserrat
+ { 75, 66, 162, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1585, 2, 9, 1321, 1941, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 15, 4, 6, 7, 7, {78,65,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Namibia
+ { 75, 66, 163, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1038, 2, 9, 1321, 1948, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 17, 4, 6, 7, 5, {65,85,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Nauru
+ { 75, 66, 165, 0, 0, 333, 333, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 22, 83, 15, 58, 1321, 1953, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 7, 7, 11, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Netherlands
+ { 75, 66, 167, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1205, 2, 9, 1321, 1964, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 18, 4, 6, 7, 11, {78,90,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/New Zealand
+ { 75, 66, 169, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 124, 1600, 2, 9, 1321, 1975, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 14, 4, 6, 7, 7, {78,71,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Nigeria
+ { 75, 66, 171, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1205, 2, 9, 1321, 1982, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 18, 4, 6, 7, 4, {78,90,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Niue
+ { 75, 66, 172, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1038, 2, 9, 1321, 1986, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 17, 4, 6, 7, 14, {65,85,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Norfolk Island
+ { 75, 66, 173, 0, 0, 323, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 567, 23, 38, 0, 0, 56, 56, 83, 83, 0, 0, 0, 5, 22, 10, 1008, 2, 9, 1321, 2000, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 9, 4, 6, 7, 24, {85,83,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Northern Mariana Islands
+ { 75, 66, 178, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 196, 1614, 2, 9, 1321, 2024, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 2, 15, 4, 6, 7, 8, {80,75,82}, 2, 0, 7, 6, 7, 1, 3, 3 }, // English/Latin/Pakistan
+ { 75, 66, 179, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 179, 1008, 2, 9, 1321, 2032, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 9, 4, 6, 7, 5, {85,83,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Palau
+ { 75, 66, 182, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 134, 1629, 2, 9, 1321, 2037, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 22, 4, 6, 7, 16, {80,71,75}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Papua New Guinea
+ { 75, 66, 185, 0, 0, 323, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 567, 23, 38, 0, 0, 56, 56, 83, 83, 0, 0, 0, 5, 22, 146, 685, 2, 9, 1321, 2053, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 15, 4, 6, 7, 11, {80,72,80}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Philippines
+ { 75, 66, 186, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1205, 2, 9, 1321, 2064, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 18, 4, 6, 7, 16, {78,90,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Pitcairn
+ { 75, 66, 189, 0, 0, 323, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 567, 23, 38, 0, 0, 56, 56, 83, 83, 0, 0, 0, 5, 22, 10, 1008, 2, 9, 1321, 2080, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 9, 4, 6, 7, 11, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Puerto Rico
+ { 75, 66, 194, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 198, 1651, 2, 9, 1321, 2091, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 2, 13, 4, 6, 7, 6, {82,87,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // English/Latin/Rwanda
+ { 75, 66, 196, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 94, 1664, 2, 9, 1321, 2097, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 15, 4, 6, 7, 9, {83,72,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Saint Helena
+ { 75, 66, 197, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1017, 2, 9, 1321, 2106, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 21, 4, 6, 7, 16, {88,67,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Saint Kitts and Nevis
+ { 75, 66, 198, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1017, 2, 9, 1321, 2122, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 21, 4, 6, 7, 8, {88,67,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Saint Lucia
+ { 75, 66, 201, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1017, 2, 9, 1321, 2130, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 21, 4, 6, 7, 27, {88,67,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Saint Vincent and Grenadines
+ { 75, 66, 202, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 200, 1679, 2, 9, 1321, 1372, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 11, 4, 6, 7, 5, {87,83,84}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Samoa
+ { 75, 66, 208, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 203, 1690, 2, 9, 1321, 2157, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 2, 17, 4, 6, 7, 10, {83,67,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Seychelles
+ { 75, 66, 209, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 18, 1707, 2, 9, 1321, 2167, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 2, 20, 4, 6, 7, 12, {83,76,69}, 2, 0, 1, 6, 7, 1, 3, 3 }, // English/Latin/Sierra Leone
+ { 75, 66, 210, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 129, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1727, 2, 9, 1321, 2179, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 16, 4, 6, 7, 9, {83,71,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Singapore
+ { 75, 66, 211, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 169, 1743, 2, 9, 1321, 2188, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 4, 29, 4, 6, 7, 12, {65,78,71}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Sint Maarten
+ { 75, 66, 213, 0, 0, 333, 333, 6, 1, 0, 2, 3, 4, 5, 6, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 22, 83, 4, 20, 1321, 2200, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 7, 7, 8, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Slovenia
+ { 75, 66, 214, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1772, 2, 9, 1321, 2208, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 22, 4, 6, 7, 15, {83,66,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Solomon Islands
+ { 75, 66, 216, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 786, 821, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 9, 1458, 2, 9, 1321, 2223, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 18, 4, 6, 7, 12, {90,65,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/South Africa
+ { 75, 66, 219, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 94, 1794, 2, 9, 1321, 2235, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 20, 4, 6, 7, 11, {83,83,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/South Sudan
+ { 75, 66, 222, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 0, 1814, 2, 9, 1321, 2246, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 0, 14, 4, 6, 7, 5, {83,68,71}, 2, 1, 6, 5, 6, 1, 3, 3 }, // English/Latin/Sudan
+ { 75, 66, 225, 0, 0, 333, 333, 6, 1, 9, 2, 3, 4, 5, 63, 14, 15, 16, 17, 0, 103, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 160, 1828, 4, 0, 1321, 2251, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 2, 13, 5, 0, 7, 6, {83,69,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // English/Latin/Sweden
+ { 75, 66, 226, 0, 0, 333, 333, 6, 0, 17, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 49, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 0, 1841, 15, 65, 1321, 2257, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 0, 11, 5, 5, 7, 11, {67,72,70}, 2, 0, 1, 6, 7, 1, 3, 3 }, // English/Latin/Switzerland
+ { 75, 66, 230, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 121, 1852, 2, 9, 1321, 2268, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 18, 4, 6, 7, 8, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // English/Latin/Tanzania
+ { 75, 66, 234, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1205, 2, 9, 1321, 2276, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 18, 4, 6, 7, 7, {78,90,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Tokelau
+ { 75, 66, 235, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 205, 1870, 2, 9, 1321, 2283, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 2, 14, 4, 6, 7, 5, {84,79,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Tonga
+ { 75, 66, 236, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1884, 2, 9, 1321, 2288, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 24, 4, 6, 7, 17, {84,84,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Trinidad and Tobago
+ { 75, 66, 241, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 179, 1008, 2, 9, 1321, 2305, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 9, 4, 6, 7, 22, {85,83,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Turks and Caicos Islands
+ { 75, 66, 242, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 10, 1038, 2, 9, 1321, 2327, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 17, 4, 6, 7, 6, {65,85,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Tuvalu
+ { 75, 66, 243, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 147, 1908, 2, 9, 1321, 983, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 16, 4, 6, 7, 6, {85,71,88}, 0, 0, 1, 7, 7, 1, 3, 3 }, // English/Latin/Uganda
+ { 75, 66, 245, 0, 0, 323, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 1924, 2, 9, 1321, 2333, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 0, 27, 4, 6, 7, 20, {65,69,68}, 2, 1, 6, 6, 7, 1, 3, 3 }, // English/Latin/United Arab Emirates
+ { 75, 66, 246, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 113, 186, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 94, 1951, 2, 9, 2353, 2368, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 13, 4, 6, 15, 14, {71,66,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/United Kingdom
+ { 75, 66, 247, 0, 0, 323, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 567, 23, 38, 0, 0, 56, 56, 83, 83, 0, 0, 0, 5, 22, 10, 1008, 2, 9, 1321, 2382, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 9, 4, 6, 7, 21, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/United States Outlying Islands
+ { 75, 66, 249, 0, 0, 323, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 567, 23, 38, 0, 0, 56, 56, 83, 83, 0, 0, 0, 5, 22, 10, 1008, 2, 9, 1321, 2403, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 9, 4, 6, 7, 19, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/United States Virgin Islands
+ { 75, 66, 252, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 207, 1964, 2, 9, 1321, 2422, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 2, 12, 4, 6, 7, 7, {86,85,86}, 0, 0, 1, 6, 7, 1, 3, 3 }, // English/Latin/Vanuatu
+ { 75, 66, 258, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 0, 0, 2, 9, 1321, 2429, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 0, 0, 4, 6, 7, 5, {0,0,0}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/world
+ { 75, 66, 260, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 134, 1976, 2, 9, 1321, 635, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 14, 4, 6, 7, 6, {90,77,87}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Latin/Zambia
+ { 75, 66, 261, 0, 0, 333, 333, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 786, 129, 10, 0, 0, 0, 56, 56, 83, 83, 82, 203, 0, 5, 22, 179, 1008, 2, 9, 1321, 2434, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 3, 9, 4, 6, 7, 8, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // English/Latin/Zimbabwe
+ { 75, 115, 246, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 5603, 5603, 5690, 5690, 5731, 5731, 196, 205, 0, 5, 22, 94, 0, 15, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 87, 87, 41, 41, 20, 20, 4, 4, 4, 17, 23, 1, 0, 5, 0, 0, 0, {71,66,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // English/Shavian/United Kingdom
+ { 76, 27, 193, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 5751, 5811, 5892, 5892, 83, 83, 0, 0, 0, 5, 22, 133, 0, 15, 0, 2442, 2453, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 60, 81, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 11, 13, {82,85,66}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Erzya/Cyrillic/Russia
+ { 77, 66, 258, 0, 0, 342, 342, 6, 1, 9, 2, 3, 4, 5, 10, 14, 15, 16, 17, 831, 105, 10, 0, 5919, 5919, 5969, 5969, 5989, 5989, 200, 209, 316, 5, 22, 0, 0, 4, 0, 2466, 2475, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 31, 8, 13, 5, 50, 50, 20, 20, 13, 13, 3, 3, 6, 17, 23, 0, 0, 5, 0, 9, 5, {0,0,0}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Esperanto/Latin/world
+ { 78, 66, 75, 0, 0, 351, 351, 6, 1, 9, 2, 3, 48, 5, 63, 13, 14, 18, 16, 404, 49, 10, 0, 6002, 6002, 6064, 6064, 6064, 6064, 0, 0, 322, 5, 22, 22, 405, 4, 20, 2480, 2485, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 18, 8, 13, 5, 62, 62, 13, 13, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 5, 5, {69,85,82}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Estonian/Latin/Estonia
+ { 79, 66, 92, 0, 0, 359, 370, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 862, 567, 277, 277, 6077, 6077, 6120, 6120, 6147, 6147, 203, 212, 0, 5, 22, 15, 1990, 2, 9, 2490, 2496, 6, 6, 11, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 6, 20, 12, 43, 43, 27, 27, 13, 13, 3, 5, 4, 17, 23, 3, 10, 4, 6, 6, 12, {71,72,83}, 2, 1, 1, 6, 7, 3, 3, 3 }, // Ewe/Latin/Ghana
+ { 79, 66, 233, 0, 0, 359, 370, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 862, 567, 10, 0, 6077, 6077, 6120, 6120, 6147, 6147, 203, 212, 0, 5, 22, 127, 2000, 2, 9, 2490, 2508, 6, 6, 11, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 6, 13, 5, 43, 43, 27, 27, 13, 13, 3, 5, 4, 17, 23, 5, 33, 4, 6, 6, 11, {88,79,70}, 0, 0, 1, 6, 7, 3, 3, 3 }, // Ewe/Latin/Togo
+ { 80, 66, 40, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 14, 15, 113, 129, 10, 0, 6160, 6160, 6244, 6244, 6273, 6273, 206, 217, 0, 5, 22, 11, 2033, 4, 0, 2519, 2525, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 84, 84, 29, 29, 13, 13, 7, 9, 4, 17, 23, 4, 16, 5, 0, 6, 7, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Ewondo/Latin/Cameroon
+ { 81, 66, 81, 0, 0, 380, 289, 6, 1, 0, 2, 3, 48, 5, 10, 14, 15, 16, 17, 404, 49, 10, 0, 6286, 6286, 6359, 6386, 6420, 6420, 0, 0, 328, 5, 22, 160, 2049, 4, 20, 2532, 2540, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 73, 73, 27, 34, 13, 13, 2, 2, 3, 17, 23, 2, 11, 5, 7, 8, 7, {68,75,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Faroese/Latin/Faroe Islands
+ { 81, 66, 65, 0, 0, 380, 289, 6, 1, 0, 2, 3, 48, 5, 10, 14, 15, 16, 17, 404, 49, 10, 0, 6286, 6286, 6359, 6386, 6420, 6420, 0, 0, 328, 5, 22, 160, 2049, 4, 20, 2532, 1161, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 73, 73, 27, 34, 13, 13, 2, 2, 3, 17, 23, 3, 11, 5, 7, 8, 7, {68,75,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Faroese/Latin/Denmark
+ { 83, 66, 185, 0, 0, 389, 398, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 567, 23, 38, 6433, 6433, 6487, 6487, 6487, 6487, 0, 0, 0, 5, 22, 146, 2060, 2, 9, 2547, 826, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 54, 54, 27, 27, 27, 27, 2, 2, 5, 17, 23, 1, 17, 4, 6, 8, 9, {80,72,80}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Filipino/Latin/Philippines
+ { 84, 66, 83, 0, 0, 351, 351, 6, 1, 9, 2, 3, 48, 5, 10, 15, 15, 17, 17, 698, 885, 213, 213, 6514, 6580, 6660, 6660, 6680, 6680, 213, 226, 331, 336, 353, 22, 405, 4, 0, 2555, 2560, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 12, 4, 66, 80, 20, 20, 13, 13, 3, 3, 5, 17, 23, 1, 4, 5, 0, 5, 5, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Finnish/Latin/Finland
+ { 85, 66, 84, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 22, 405, 4, 20, 2565, 2573, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 8, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/France
+ { 85, 66, 4, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 23, 38, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 209, 2077, 4, 20, 2565, 2579, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 15, 7, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 2, 14, 5, 7, 8, 7, {68,90,68}, 2, 1, 6, 5, 6, 1, 3, 3 }, // French/Latin/Algeria
+ { 85, 66, 23, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 79, 297, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 22, 405, 4, 20, 2565, 2586, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 7, 26, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 8, 8, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Belgium
+ { 85, 66, 25, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 127, 2091, 4, 20, 2565, 2594, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 5, 17, 5, 7, 8, 5, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Benin
+ { 85, 66, 37, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 127, 2091, 4, 20, 2565, 2599, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 5, 17, 5, 7, 8, 12, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Burkina Faso
+ { 85, 66, 38, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 182, 2108, 4, 20, 2565, 1522, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 3, 15, 5, 7, 8, 7, {66,73,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Burundi
+ { 85, 66, 40, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 216, 229, 376, 232, 249, 11, 2123, 4, 20, 2565, 1209, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 5, 4, 6, 17, 23, 4, 16, 5, 7, 8, 8, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Cameroon
+ { 85, 66, 41, 0, 0, 406, 406, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 15, 14, 113, 103, 323, 323, 6693, 6693, 6744, 6744, 6778, 6778, 168, 168, 376, 232, 249, 10, 2139, 4, 20, 2611, 1553, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 27, 9, 51, 51, 34, 34, 13, 13, 4, 4, 6, 17, 23, 1, 15, 5, 7, 17, 6, {67,65,68}, 2, 0, 7, 6, 7, 1, 3, 3 }, // French/Latin/Canada
+ { 85, 66, 46, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 11, 2123, 4, 20, 2565, 2628, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 4, 16, 5, 7, 8, 25, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Central African Republic
+ { 85, 66, 48, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 23, 38, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 11, 2123, 4, 20, 2565, 2653, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 15, 7, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 4, 16, 5, 7, 8, 5, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Chad
+ { 85, 66, 55, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 12, 2154, 4, 20, 2565, 2658, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 2, 14, 5, 7, 8, 7, {75,77,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Comoros
+ { 85, 66, 56, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 11, 2123, 4, 20, 2565, 2665, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 4, 16, 5, 7, 8, 17, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Congo - Brazzaville
+ { 85, 66, 57, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 11, 2168, 4, 20, 2565, 2682, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 2, 15, 5, 7, 8, 14, {67,68,70}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Congo - Kinshasa
+ { 85, 66, 67, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 23, 38, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 3, 2183, 4, 20, 2565, 2696, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 15, 7, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 3, 16, 5, 7, 8, 8, {68,74,70}, 0, 0, 6, 6, 7, 1, 3, 3 }, // French/Latin/Djibouti
+ { 85, 66, 73, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 11, 2123, 4, 20, 2565, 2704, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 4, 16, 5, 7, 8, 18, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Equatorial Guinea
+ { 85, 66, 85, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 22, 405, 4, 20, 2565, 2722, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 8, 16, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/French Guiana
+ { 85, 66, 86, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 211, 2199, 4, 20, 2565, 2738, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 4, 9, 5, 7, 8, 19, {88,80,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/French Polynesia
+ { 85, 66, 88, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 11, 2123, 4, 20, 2565, 2757, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 4, 16, 5, 7, 8, 5, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Gabon
+ { 85, 66, 97, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 22, 405, 4, 20, 2565, 2762, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 8, 10, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Guadeloupe
+ { 85, 66, 102, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 215, 2208, 4, 20, 2565, 2704, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 2, 13, 5, 7, 8, 6, {71,78,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Guinea
+ { 85, 66, 104, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 15, 2221, 4, 20, 2565, 2772, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 16, 5, 7, 8, 5, {72,84,71}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Haiti
+ { 85, 66, 118, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 127, 2091, 4, 20, 2565, 2777, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 5, 17, 5, 7, 8, 13, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Ivory Coast
+ { 85, 66, 138, 0, 0, 406, 406, 6, 1, 0, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 22, 405, 4, 20, 2565, 2790, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 8, 10, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Luxembourg
+ { 85, 66, 141, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 188, 2237, 4, 20, 2565, 1859, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 2, 15, 5, 7, 8, 10, {77,71,65}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Madagascar
+ { 85, 66, 145, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 127, 2091, 4, 20, 2565, 547, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 5, 17, 5, 7, 8, 4, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Mali
+ { 85, 66, 148, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 22, 405, 4, 20, 2565, 2800, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 8, 10, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Martinique
+ { 85, 66, 149, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 23, 38, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 217, 2252, 4, 20, 2565, 2810, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 15, 7, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 2, 19, 5, 7, 8, 10, {77,82,85}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Mauritania
+ { 85, 66, 150, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 196, 2271, 4, 20, 2565, 2820, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 2, 18, 5, 7, 8, 7, {77,85,82}, 2, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Mauritius
+ { 85, 66, 151, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 22, 405, 4, 20, 2565, 2827, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 8, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Mayotte
+ { 85, 66, 155, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 22, 405, 4, 20, 2565, 2834, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 8, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Monaco
+ { 85, 66, 159, 0, 0, 406, 406, 6, 1, 0, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 168, 168, 376, 232, 249, 0, 2289, 4, 20, 2565, 2840, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 4, 4, 6, 17, 23, 0, 15, 5, 7, 8, 5, {77,65,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Morocco
+ { 85, 66, 166, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 211, 2199, 4, 20, 2565, 2845, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 4, 9, 5, 7, 8, 18, {88,80,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/New Caledonia
+ { 85, 66, 170, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 127, 2091, 4, 20, 2565, 1975, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 5, 17, 5, 7, 8, 5, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Niger
+ { 85, 66, 191, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 22, 405, 4, 20, 2565, 2863, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 8, 10, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Reunion
+ { 85, 66, 194, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 198, 2304, 4, 20, 2565, 2091, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 2, 14, 5, 7, 8, 6, {82,87,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Rwanda
+ { 85, 66, 195, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 22, 405, 4, 20, 2565, 2873, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 8, 16, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Saint Barthelemy
+ { 85, 66, 199, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 22, 405, 4, 20, 2565, 2889, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 8, 12, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Saint Martin
+ { 85, 66, 200, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 22, 405, 4, 20, 2565, 2901, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 1, 4, 5, 7, 8, 24, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Saint Pierre and Miquelon
+ { 85, 66, 206, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 127, 2091, 4, 20, 2565, 2925, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 5, 17, 5, 7, 8, 7, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Senegal
+ { 85, 66, 208, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 203, 2318, 4, 20, 2565, 2157, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 2, 21, 5, 7, 8, 10, {83,67,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // French/Latin/Seychelles
+ { 85, 66, 226, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 19, 20, 0, 49, 350, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 0, 2339, 4, 20, 2932, 2947, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 17, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 0, 12, 5, 7, 15, 6, {67,72,70}, 2, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Switzerland
+ { 85, 66, 227, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 23, 38, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 219, 2351, 4, 20, 2565, 2953, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 15, 7, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 2, 14, 5, 7, 8, 5, {83,89,80}, 0, 0, 6, 5, 6, 1, 3, 3 }, // French/Latin/Syria
+ { 85, 66, 233, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 127, 2091, 4, 20, 2565, 2508, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 5, 17, 5, 7, 8, 4, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Togo
+ { 85, 66, 238, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 23, 38, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 221, 2365, 4, 20, 2565, 2958, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 15, 7, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 2, 14, 5, 7, 8, 7, {84,78,68}, 3, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Tunisia
+ { 85, 66, 252, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 23, 38, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 207, 2379, 4, 20, 2565, 2422, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 15, 7, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 2, 14, 5, 7, 8, 7, {86,85,86}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Vanuatu
+ { 85, 66, 256, 0, 0, 406, 406, 6, 1, 68, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 186, 10, 0, 6693, 6693, 6744, 6744, 6778, 6778, 0, 0, 376, 232, 249, 211, 2199, 4, 20, 2565, 2965, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 51, 51, 34, 34, 13, 13, 2, 2, 6, 17, 23, 4, 9, 5, 7, 8, 16, {88,80,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // French/Latin/Wallis and Futuna
+ { 86, 66, 117, 0, 0, 414, 414, 6, 1, 0, 2, 3, 4, 5, 10, 16, 17, 14, 15, 893, 78, 10, 0, 6791, 6791, 6840, 6840, 6778, 6778, 5, 128, 0, 5, 22, 22, 405, 15, 0, 2981, 2987, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 13, 5, 49, 49, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 4, 5, 0, 6, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Friulian/Latin/Italy
+ { 87, 66, 206, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 13, 15, 18, 17, 113, 129, 10, 0, 6867, 6867, 6925, 6925, 6952, 6952, 221, 233, 0, 5, 22, 127, 2393, 4, 0, 2993, 2999, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 58, 58, 27, 27, 13, 13, 6, 7, 4, 17, 23, 5, 19, 5, 0, 6, 8, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Latin/Senegal
+ { 87, 1, 37, 421, 421, 427, 436, 444, 0, 69, 2, 70, 4, 5, 72, 14, 15, 16, 17, 920, 283, 10, 0, 6965, 6965, 7083, 7083, 7135, 7135, 227, 240, 382, 394, 22, 223, 2412, 15, 0, 3007, 3017, 6, 6, 9, 8, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 17, 8, 13, 5,118,118, 52, 52, 22, 22, 4, 4, 12, 27, 23, 6, 51, 5, 0, 10, 25, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Adlam/Burkina Faso
+ { 87, 1, 40, 421, 421, 427, 436, 444, 0, 69, 2, 70, 4, 5, 72, 14, 15, 16, 17, 920, 283, 10, 0, 6965, 6965, 7083, 7083, 7135, 7135, 227, 240, 382, 394, 22, 229, 2463, 15, 0, 3007, 3042, 6, 6, 9, 8, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 17, 8, 13, 5,118,118, 52, 52, 22, 22, 4, 4, 12, 27, 23, 8, 44, 5, 0, 10, 16, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Adlam/Cameroon
+ { 87, 1, 89, 421, 421, 427, 436, 444, 0, 69, 2, 70, 4, 5, 72, 14, 15, 16, 17, 920, 283, 61, 76, 6965, 6965, 7083, 7083, 7135, 7135, 227, 240, 382, 394, 22, 185, 2507, 15, 0, 3007, 3058, 6, 6, 9, 8, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 17, 8, 15, 7,118,118, 52, 52, 22, 22, 4, 4, 12, 27, 23, 1, 29, 5, 0, 10, 14, {71,77,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Fulah/Adlam/Gambia
+ { 87, 1, 92, 421, 421, 427, 436, 444, 0, 69, 2, 70, 4, 5, 72, 14, 15, 16, 17, 920, 283, 61, 76, 6965, 6965, 7083, 7083, 7135, 7135, 227, 240, 382, 394, 22, 15, 2536, 15, 0, 3007, 3072, 6, 6, 9, 8, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 17, 8, 15, 7,118,118, 52, 52, 22, 22, 4, 4, 12, 27, 23, 3, 23, 5, 0, 10, 8, {71,72,83}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Fulah/Adlam/Ghana
+ { 87, 1, 101, 421, 421, 427, 436, 444, 0, 69, 2, 70, 4, 5, 72, 14, 15, 16, 17, 920, 283, 10, 0, 6965, 6965, 7083, 7083, 7135, 7135, 227, 240, 382, 394, 22, 223, 2412, 15, 0, 3007, 3080, 6, 6, 9, 8, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 17, 8, 13, 5,118,118, 52, 52, 22, 22, 4, 4, 12, 27, 23, 6, 51, 5, 0, 10, 23, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Adlam/Guinea-Bissau
+ { 87, 1, 102, 421, 421, 427, 436, 444, 0, 69, 2, 70, 4, 5, 72, 14, 15, 16, 17, 920, 283, 10, 0, 6965, 6965, 7083, 7083, 7135, 7135, 227, 240, 382, 394, 22, 215, 2559, 15, 0, 3007, 3080, 6, 6, 9, 8, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 17, 8, 13, 5,118,118, 52, 52, 22, 22, 4, 4, 12, 27, 23, 2, 25, 5, 0, 10, 8, {71,78,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Adlam/Guinea
+ { 87, 1, 134, 421, 421, 427, 436, 444, 0, 69, 2, 70, 4, 5, 72, 14, 15, 16, 17, 920, 283, 61, 76, 6965, 6965, 7083, 7083, 7135, 7135, 227, 240, 382, 394, 22, 10, 2584, 15, 0, 3007, 3103, 6, 6, 9, 8, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 17, 8, 15, 7,118,118, 52, 52, 22, 22, 4, 4, 12, 27, 23, 1, 31, 5, 0, 10, 18, {76,82,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Fulah/Adlam/Liberia
+ { 87, 1, 149, 421, 421, 427, 436, 444, 0, 69, 2, 70, 4, 5, 72, 14, 15, 16, 17, 920, 283, 61, 76, 6965, 6965, 7083, 7083, 7135, 7135, 227, 240, 382, 394, 22, 217, 2615, 15, 0, 3007, 3121, 6, 6, 9, 8, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 17, 8, 15, 7,118,118, 52, 52, 22, 22, 4, 4, 12, 27, 23, 2, 37, 5, 0, 10, 16, {77,82,85}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Fulah/Adlam/Mauritania
+ { 87, 1, 169, 421, 421, 427, 436, 444, 0, 69, 2, 70, 4, 5, 72, 14, 15, 16, 17, 920, 283, 10, 0, 6965, 6965, 7083, 7083, 7135, 7135, 227, 240, 382, 394, 22, 124, 2652, 15, 0, 3007, 3137, 6, 6, 9, 8, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 17, 8, 13, 5,118,118, 52, 52, 22, 22, 4, 4, 12, 27, 23, 1, 33, 5, 0, 10, 18, {78,71,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Fulah/Adlam/Nigeria
+ { 87, 1, 170, 421, 421, 427, 436, 444, 0, 69, 2, 70, 4, 5, 72, 14, 15, 16, 17, 920, 283, 10, 0, 6965, 6965, 7083, 7083, 7135, 7135, 227, 240, 382, 394, 22, 223, 2412, 15, 0, 3007, 3155, 6, 6, 9, 8, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 17, 8, 13, 5,118,118, 52, 52, 22, 22, 4, 4, 12, 27, 23, 6, 51, 5, 0, 10, 12, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Adlam/Niger
+ { 87, 1, 206, 421, 421, 427, 436, 444, 0, 69, 2, 70, 4, 5, 72, 14, 15, 16, 17, 920, 283, 10, 0, 6965, 6965, 7083, 7083, 7135, 7135, 227, 240, 382, 394, 22, 223, 2412, 15, 0, 3007, 3167, 6, 6, 9, 8, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 17, 8, 13, 5,118,118, 52, 52, 22, 22, 4, 4, 12, 27, 23, 6, 51, 5, 0, 10, 16, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Adlam/Senegal
+ { 87, 1, 209, 421, 421, 427, 436, 444, 0, 69, 2, 70, 4, 5, 72, 14, 15, 16, 17, 920, 283, 61, 76, 6965, 6965, 7083, 7083, 7135, 7135, 227, 240, 382, 394, 22, 18, 2685, 15, 0, 3007, 3183, 6, 6, 9, 8, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 17, 8, 15, 7,118,118, 52, 52, 22, 22, 4, 4, 12, 27, 23, 2, 33, 5, 0, 10, 14, {83,76,69}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Adlam/Sierra Leone
+ { 87, 66, 37, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 13, 15, 18, 17, 113, 129, 10, 0, 6867, 6867, 6925, 6925, 6952, 6952, 221, 233, 0, 5, 22, 127, 2393, 4, 0, 2993, 3197, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 58, 58, 27, 27, 13, 13, 6, 7, 4, 17, 23, 5, 19, 5, 0, 6, 14, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Latin/Burkina Faso
+ { 87, 66, 40, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 13, 15, 18, 17, 113, 129, 10, 0, 6867, 6867, 6925, 6925, 6952, 6952, 221, 233, 0, 5, 22, 11, 2718, 4, 0, 2993, 3211, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 58, 58, 27, 27, 13, 13, 6, 7, 4, 17, 23, 4, 18, 5, 0, 6, 8, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Latin/Cameroon
+ { 87, 66, 89, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 13, 15, 18, 17, 113, 129, 23, 38, 6867, 6867, 6925, 6925, 6952, 6952, 221, 233, 0, 5, 22, 185, 2736, 4, 0, 2993, 3219, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 15, 7, 58, 58, 27, 27, 13, 13, 6, 7, 4, 17, 23, 1, 13, 5, 0, 6, 6, {71,77,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Fulah/Latin/Gambia
+ { 87, 66, 92, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 13, 15, 18, 17, 113, 129, 23, 38, 6867, 6867, 6925, 6925, 6952, 6952, 221, 233, 0, 5, 22, 15, 0, 4, 0, 2993, 3225, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 15, 7, 58, 58, 27, 27, 13, 13, 6, 7, 4, 17, 23, 3, 0, 5, 0, 6, 5, {71,72,83}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Fulah/Latin/Ghana
+ { 87, 66, 101, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 13, 15, 18, 17, 113, 129, 10, 0, 6867, 6867, 6925, 6925, 6952, 6952, 221, 233, 0, 5, 22, 127, 2393, 4, 0, 2993, 3230, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 58, 58, 27, 27, 13, 13, 6, 7, 4, 17, 23, 5, 19, 5, 0, 6, 12, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Latin/Guinea-Bissau
+ { 87, 66, 102, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 13, 15, 18, 17, 113, 129, 10, 0, 6867, 6867, 6925, 6925, 6952, 6952, 221, 233, 0, 5, 22, 215, 0, 4, 0, 2993, 3230, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 58, 58, 27, 27, 13, 13, 6, 7, 4, 17, 23, 2, 0, 5, 0, 6, 4, {71,78,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Latin/Guinea
+ { 87, 66, 134, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 13, 15, 18, 17, 113, 129, 23, 38, 6867, 6867, 6925, 6925, 6952, 6952, 221, 233, 0, 5, 22, 10, 2749, 4, 0, 2993, 3242, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 15, 7, 58, 58, 27, 27, 13, 13, 6, 7, 4, 17, 23, 1, 16, 5, 0, 6, 9, {76,82,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Fulah/Latin/Liberia
+ { 87, 66, 149, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 13, 15, 18, 17, 113, 129, 23, 38, 6867, 6867, 6925, 6925, 6952, 6952, 221, 233, 0, 5, 22, 217, 2765, 4, 0, 2993, 3251, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 15, 7, 58, 58, 27, 27, 13, 13, 6, 7, 4, 17, 23, 2, 15, 5, 0, 6, 8, {77,82,85}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Fulah/Latin/Mauritania
+ { 87, 66, 169, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 13, 15, 18, 17, 113, 129, 10, 0, 6867, 6867, 6925, 6925, 6952, 6952, 221, 233, 0, 5, 22, 124, 2780, 4, 0, 2993, 3259, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 58, 58, 27, 27, 13, 13, 6, 7, 4, 17, 23, 1, 16, 5, 0, 6, 9, {78,71,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Fulah/Latin/Nigeria
+ { 87, 66, 170, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 13, 15, 18, 17, 113, 129, 10, 0, 6867, 6867, 6925, 6925, 6952, 6952, 221, 233, 0, 5, 22, 127, 2393, 4, 0, 2993, 3268, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 58, 58, 27, 27, 13, 13, 6, 7, 4, 17, 23, 5, 19, 5, 0, 6, 6, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Latin/Niger
+ { 87, 66, 209, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 13, 15, 18, 17, 113, 129, 23, 38, 6867, 6867, 6925, 6925, 6952, 6952, 221, 233, 0, 5, 22, 18, 2796, 4, 0, 2993, 3274, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 15, 7, 58, 58, 27, 27, 13, 13, 6, 7, 4, 17, 23, 2, 18, 5, 0, 6, 11, {83,76,69}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Fulah/Latin/Sierra Leone
+ { 88, 66, 246, 0, 0, 445, 445, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 937, 186, 10, 0, 7157, 7157, 7225, 7225, 7252, 7252, 3, 135, 421, 5, 22, 94, 2814, 2, 9, 3285, 3293, 6, 6, 10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 10, 13, 5, 68, 68, 27, 27, 13, 13, 1, 1, 6, 17, 23, 1, 15, 4, 6, 8, 22, {71,66,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Gaelic/Latin/United Kingdom
+ { 89, 66, 92, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 567, 23, 38, 7265, 7265, 7297, 7297, 7323, 7323, 0, 0, 0, 5, 22, 15, 50, 2, 9, 3315, 1718, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 32, 32, 26, 26, 13, 13, 2, 2, 4, 17, 23, 3, 10, 4, 6, 2, 5, {71,72,83}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Ga/Latin/Ghana
+ { 90, 66, 220, 0, 0, 414, 414, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 78, 10, 0, 7336, 7336, 7384, 7384, 1185, 7418, 168, 168, 0, 5, 22, 22, 405, 4, 0, 3317, 455, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 13, 5, 48, 48, 34, 34, 13, 20, 4, 4, 5, 17, 23, 1, 4, 5, 0, 6, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Galician/Latin/Spain
+ { 91, 66, 243, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 7438, 7438, 7503, 7503, 7530, 7530, 0, 0, 0, 5, 22, 147, 2829, 0, 0, 3323, 3330, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 65, 65, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 19, 4, 0, 7, 7, {85,71,88}, 0, 0, 1, 7, 7, 1, 3, 3 }, // Ganda/Latin/Uganda
+ { 92, 33, 77, 0, 0, 0, 0, 6, 0, 74, 2, 3, 4, 5, 10, 14, 15, 16, 17, 985, 78, 61, 76, 7543, 7543, 7543, 7543, 7571, 7571, 0, 0, 0, 5, 22, 0, 105, 15, 0, 3337, 143, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 8, 15, 7, 28, 28, 28, 28, 13, 13, 2, 2, 4, 17, 23, 0, 9, 5, 0, 4, 5, {69,84,66}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Geez/Ethiopic/Ethiopia
+ { 92, 33, 74, 0, 0, 0, 0, 6, 0, 74, 2, 3, 4, 5, 10, 14, 15, 16, 17, 985, 78, 61, 76, 7543, 7543, 7543, 7543, 7571, 7571, 0, 0, 0, 5, 22, 6, 0, 15, 0, 3337, 671, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 8, 15, 7, 28, 28, 28, 28, 13, 13, 2, 2, 4, 17, 23, 3, 0, 5, 0, 4, 4, {69,82,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Geez/Ethiopic/Eritrea
+ { 93, 35, 90, 0, 0, 455, 455, 6, 1, 9, 2, 3, 4, 5, 10, 13, 14, 11, 12, 1008, 49, 10, 0, 7584, 7584, 7645, 7645, 7672, 7672, 0, 0, 427, 432, 22, 0, 2848, 4, 0, 3341, 3348, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 8, 13, 5, 61, 61, 27, 27, 13, 13, 2, 2, 5, 29, 23, 1, 12, 5, 0, 7, 10, {71,69,76}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Georgian/Georgian/Georgia
+ { 94, 66, 91, 0, 0, 463, 463, 6, 1, 0, 2, 3, 4, 5, 10, 13, 14, 18, 16, 404, 49, 10, 0, 7685, 7685, 7744, 7764, 4510, 4510, 0, 0, 461, 5, 22, 22, 83, 4, 0, 3358, 3365, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 59, 59, 20, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 0, 7, 11, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // German/Latin/Germany
+ { 94, 66, 16, 0, 0, 463, 463, 6, 1, 9, 2, 3, 4, 5, 10, 13, 14, 18, 16, 404, 49, 10, 0, 7685, 7685, 7744, 7764, 4510, 4510, 0, 0, 461, 5, 22, 22, 83, 15, 0, 3376, 3376, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 59, 59, 20, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 0, 24, 10, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // German/Latin/Austria
+ { 94, 66, 23, 0, 0, 463, 463, 6, 1, 0, 2, 3, 4, 5, 10, 13, 14, 18, 16, 404, 49, 10, 0, 7685, 7685, 7744, 7764, 4510, 4510, 0, 0, 461, 5, 22, 22, 83, 4, 0, 3358, 3400, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 59, 59, 20, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 0, 7, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // German/Latin/Belgium
+ { 94, 66, 117, 0, 0, 463, 463, 6, 1, 0, 2, 3, 4, 5, 10, 13, 14, 18, 16, 404, 49, 10, 0, 7685, 7685, 7744, 7764, 4510, 4510, 0, 0, 461, 5, 22, 22, 83, 4, 0, 3358, 3407, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 59, 59, 20, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 0, 7, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // German/Latin/Italy
+ { 94, 66, 136, 0, 0, 463, 463, 6, 0, 17, 2, 3, 4, 5, 10, 13, 14, 18, 16, 404, 49, 10, 0, 7685, 7685, 7744, 7764, 4510, 4510, 0, 0, 461, 5, 22, 0, 2860, 15, 0, 3358, 3414, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 59, 59, 20, 27, 13, 13, 2, 2, 5, 17, 23, 0, 17, 5, 0, 7, 13, {67,72,70}, 2, 0, 1, 6, 7, 1, 3, 3 }, // German/Latin/Liechtenstein
+ { 94, 66, 138, 0, 0, 463, 463, 6, 1, 0, 2, 3, 4, 5, 10, 13, 14, 18, 16, 404, 49, 10, 0, 7685, 7685, 7744, 7764, 4510, 4510, 0, 0, 461, 5, 22, 22, 83, 4, 0, 3358, 3427, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 59, 59, 20, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 0, 7, 9, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // German/Latin/Luxembourg
+ { 94, 66, 226, 0, 0, 463, 463, 6, 0, 17, 2, 3, 4, 5, 10, 13, 14, 18, 16, 404, 49, 10, 0, 7685, 7685, 7744, 7764, 4510, 4510, 0, 0, 461, 5, 22, 0, 2860, 15, 65, 3436, 3436, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 59, 59, 20, 27, 13, 13, 2, 2, 5, 17, 23, 0, 17, 5, 5, 21, 7, {67,72,70}, 2, 0, 1, 6, 7, 1, 3, 3 }, // German/Latin/Switzerland
+ { 96, 39, 94, 0, 0, 472, 472, 6, 1, 0, 2, 3, 4, 5, 6, 11, 12, 14, 15, 113, 129, 23, 38, 7791, 7791, 7845, 7845, 7872, 7872, 231, 244, 0, 5, 22, 22, 2877, 4, 0, 3457, 3465, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 6, 15, 7, 54, 54, 27, 27, 13, 13, 4, 4, 4, 17, 23, 1, 4, 5, 0, 8, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Greek/Greek/Greece
+ { 96, 39, 63, 0, 0, 472, 472, 6, 1, 0, 2, 3, 4, 5, 6, 11, 12, 14, 15, 113, 129, 23, 38, 7791, 7791, 7845, 7845, 7872, 7872, 231, 244, 0, 5, 22, 22, 2877, 4, 0, 3457, 3471, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 6, 15, 7, 54, 54, 27, 27, 13, 13, 4, 4, 4, 17, 23, 1, 4, 5, 0, 8, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Greek/Greek/Cyprus
+ { 97, 66, 183, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 7885, 7885, 7885, 7885, 83, 83, 0, 0, 0, 5, 22, 237, 0, 15, 0, 3477, 3484, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 53, 53, 53, 53, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 7, 8, {80,89,71}, 0, 0, 7, 6, 7, 1, 3, 3 }, // Guarani/Latin/Paraguay
+ { 98, 40, 110, 0, 0, 481, 481, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 265, 129, 367, 383, 7938, 7938, 7990, 7990, 8021, 8021, 0, 0, 466, 5, 22, 120, 2881, 2, 9, 3492, 3499, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 16, 8, 52, 52, 31, 31, 18, 18, 2, 2, 4, 17, 23, 1, 13, 4, 6, 7, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Gujarati/Gujarati/India
+ { 99, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 8039, 8039, 8100, 8100, 8127, 8127, 235, 248, 0, 5, 22, 176, 991, 2, 9, 3503, 1307, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 61, 61, 27, 27, 13, 13, 6, 3, 4, 17, 23, 3, 17, 4, 6, 8, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Gusii/Latin/Kenya
+ { 101, 66, 169, 0, 0, 490, 499, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 804, 129, 10, 0, 8140, 8140, 8191, 8191, 8218, 8218, 241, 251, 0, 470, 511, 124, 2894, 15, 0, 3511, 3259, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 13, 5, 51, 51, 27, 27, 13, 13, 6, 5, 5, 41, 47, 1, 15, 5, 0, 5, 8, {78,71,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Hausa/Latin/Nigeria
+ { 101, 4, 169, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 8231, 8231, 8287, 8287, 83, 83, 0, 0, 0, 5, 22, 124, 2909, 15, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 30, 30, 13, 13, 2, 2, 4, 17, 23, 1, 6, 5, 0, 0, 0, {78,71,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Hausa/Arabic/Nigeria
+ { 101, 4, 222, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 8231, 8231, 8287, 8287, 83, 83, 0, 0, 0, 5, 22, 0, 0, 15, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 56, 56, 30, 30, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 0, 0, {83,68,71}, 2, 1, 6, 5, 6, 1, 3, 3 }, // Hausa/Arabic/Sudan
+ { 101, 66, 92, 0, 0, 490, 499, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 804, 129, 23, 38, 8140, 8140, 8191, 8191, 8218, 8218, 241, 251, 0, 470, 511, 15, 2915, 15, 0, 3511, 3225, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 15, 7, 51, 51, 27, 27, 13, 13, 6, 5, 5, 41, 47, 3, 13, 5, 0, 5, 4, {71,72,83}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Hausa/Latin/Ghana
+ { 101, 66, 170, 0, 0, 490, 499, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 804, 129, 10, 0, 8140, 8140, 8191, 8191, 8218, 8218, 241, 251, 0, 470, 511, 127, 2928, 15, 0, 3511, 3516, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 13, 5, 51, 51, 27, 27, 13, 13, 6, 5, 5, 41, 47, 5, 29, 5, 0, 5, 5, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Hausa/Latin/Niger
+ { 102, 66, 248, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 129, 23, 38, 8317, 8317, 8373, 8373, 83, 83, 0, 0, 0, 5, 22, 10, 0, 2, 9, 3521, 3535, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 15, 7, 56, 56, 20, 20, 13, 13, 2, 2, 4, 17, 23, 1, 0, 4, 6, 14, 19, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Hawaiian/Latin/United States
+ { 103, 47, 116, 0, 0, 507, 507, 6, 0, 1, 2, 3, 35, 37, 10, 15, 15, 17, 17, 1027, 885, 11, 1, 8393, 8393, 8457, 8457, 8502, 8502, 247, 256, 558, 5, 22, 48, 2957, 70, 77, 3554, 3559, 6, 6, 6, 6, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 18, 8, 12, 4, 64, 64, 45, 45, 20, 20, 6, 5, 4, 17, 23, 1, 7, 7, 9, 5, 5, {73,76,83}, 2, 1, 7, 5, 6, 1, 3, 3 }, // Hebrew/Hebrew/Israel
+ { 105, 29, 110, 0, 0, 513, 522, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 129, 61, 76, 8522, 8522, 8574, 8574, 8605, 8605, 82, 203, 562, 5, 22, 120, 2964, 2, 0, 3564, 664, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 15, 7, 52, 52, 31, 31, 18, 18, 2, 2, 4, 17, 23, 1, 12, 4, 0, 6, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Hindi/Devanagari/India
+ { 105, 66, 110, 0, 0, 530, 540, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 804, 186, 23, 38, 8623, 8623, 8689, 8689, 8727, 8727, 0, 0, 0, 5, 22, 120, 1381, 2, 0, 3570, 1478, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 66, 66, 38, 38, 21, 21, 2, 2, 5, 17, 23, 1, 12, 4, 0, 13, 5, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Hindi/Latin/India
+ { 107, 66, 108, 0, 0, 549, 549, 6, 1, 9, 2, 3, 4, 5, 10, 13, 15, 12, 11, 1045, 1064, 11, 1, 8748, 8748, 8799, 8799, 8817, 8817, 253, 261, 566, 5, 22, 238, 2976, 4, 0, 3583, 3589, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 13, 12, 4, 51, 51, 18, 18, 16, 16, 3, 3, 4, 17, 23, 2, 13, 5, 0, 6, 12, {72,85,70}, 2, 0, 1, 6, 7, 2, 3, 3 }, // Hungarian/Latin/Hungary
+ { 108, 66, 109, 0, 0, 289, 289, 6, 1, 0, 2, 3, 4, 5, 10, 13, 14, 18, 16, 404, 885, 10, 0, 8833, 8833, 8913, 8913, 8947, 8947, 256, 264, 570, 5, 22, 160, 2989, 4, 0, 3601, 3609, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 80, 80, 34, 34, 13, 13, 4, 4, 4, 17, 23, 3, 13, 5, 0, 8, 6, {73,83,75}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Icelandic/Latin/Iceland
+ { 109, 66, 258, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 15, 0, 3615, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 3, 0, {0,0,0}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Ido/Latin/world
+ { 110, 66, 169, 0, 0, 557, 566, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 129, 10, 0, 8960, 8960, 9013, 9013, 83, 83, 260, 268, 0, 5, 22, 124, 3002, 2, 9, 3618, 3622, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 13, 5, 53, 53, 28, 28, 13, 13, 7, 7, 4, 17, 23, 1, 5, 4, 6, 4, 8, {78,71,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Igbo/Latin/Nigeria
+ { 111, 66, 83, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 14, 15, 16, 17, 1077, 885, 213, 213, 9041, 9110, 9182, 9182, 83, 9209, 267, 275, 0, 5, 22, 22, 405, 4, 0, 3630, 3641, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 12, 4, 69, 72, 27, 27, 13, 13, 3, 3, 4, 17, 23, 1, 4, 5, 0, 11, 5, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Inari Sami/Latin/Finland
+ { 112, 66, 111, 0, 0, 574, 584, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 786, 78, 212, 212, 9222, 9222, 9264, 9264, 9291, 9291, 0, 0, 0, 5, 22, 186, 3007, 2, 0, 1776, 1776, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 42, 42, 27, 27, 13, 13, 2, 2, 4, 17, 23, 2, 16, 4, 0, 9, 9, {73,68,82}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Indonesian/Latin/Indonesia
+ { 114, 66, 258, 0, 0, 414, 414, 6, 1, 0, 2, 3, 4, 5, 10, 16, 17, 14, 15, 1095, 394, 10, 0, 9304, 9304, 9360, 9360, 9387, 9387, 0, 0, 0, 5, 22, 0, 0, 15, 58, 3646, 3657, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 26, 10, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 5, 17, 23, 0, 0, 5, 7, 11, 5, {0,0,0}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Interlingua/Latin/world
+ { 115, 66, 75, 0, 0, 0, 414, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 14, 15, 113, 180, 10, 0, 9400, 9400, 9451, 9451, 9485, 9485, 270, 278, 574, 232, 249, 22, 405, 15, 86, 3662, 3673, 6, 6, 6, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 6, 13, 5, 51, 51, 34, 34, 13, 13, 9, 8, 7, 17, 23, 1, 4, 5, 6, 11, 7, {69,85,82}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Interlingue/Latin/Estonia
+ { 116, 18, 41, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 1121, 61, 76, 9498, 9498, 9498, 9498, 83, 83, 0, 0, 0, 5, 22, 240, 0, 15, 0, 3680, 3686, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 10, 15, 7, 54, 54, 54, 54, 13, 13, 2, 2, 4, 17, 23, 3, 0, 5, 0, 6, 4, {67,65,68}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Inuktitut/Canadian Aboriginal/Canada
+ { 116, 66, 41, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 240, 0, 15, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 0, 5, 0, 0, 0, {67,65,68}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Inuktitut/Latin/Canada
+ { 118, 66, 114, 0, 0, 445, 445, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 113, 186, 10, 0, 9552, 9552, 9626, 9626, 9662, 9662, 279, 286, 581, 5, 22, 22, 83, 2, 9, 3690, 3697, 6, 6, 10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 74, 74, 36, 36, 13, 13, 4, 4, 6, 17, 23, 1, 4, 4, 6, 7, 4, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Irish/Latin/Ireland
+ { 118, 66, 246, 0, 0, 445, 445, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 113, 186, 10, 0, 9552, 9552, 9626, 9626, 9662, 9662, 279, 286, 581, 5, 22, 94, 3023, 2, 9, 3690, 3701, 6, 6, 10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 74, 74, 36, 36, 13, 13, 4, 4, 6, 17, 23, 1, 14, 4, 6, 7, 19, {71,66,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Irish/Latin/United Kingdom
+ { 119, 66, 117, 0, 0, 414, 414, 6, 1, 0, 2, 3, 4, 5, 10, 11, 12, 14, 15, 113, 78, 10, 0, 9675, 9675, 9731, 9731, 4694, 4694, 0, 0, 0, 5, 22, 22, 405, 4, 0, 3720, 3728, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 4, 5, 0, 8, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Italian/Latin/Italy
+ { 119, 66, 203, 0, 0, 414, 414, 6, 1, 0, 2, 3, 4, 5, 10, 11, 12, 14, 15, 113, 78, 10, 0, 9675, 9675, 9731, 9731, 4694, 4694, 0, 0, 0, 5, 22, 22, 405, 4, 0, 3720, 3734, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 4, 5, 0, 8, 10, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Italian/Latin/San Marino
+ { 119, 66, 226, 0, 0, 414, 414, 6, 0, 17, 2, 3, 4, 5, 10, 11, 12, 19, 20, 0, 49, 10, 0, 9675, 9675, 9731, 9731, 4694, 4694, 0, 0, 0, 5, 22, 0, 3037, 15, 65, 3720, 3744, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 15, 5, 5, 8, 8, {67,72,70}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Italian/Latin/Switzerland
+ { 119, 66, 253, 0, 0, 414, 414, 6, 1, 0, 2, 3, 4, 5, 10, 11, 12, 14, 15, 113, 78, 10, 0, 9675, 9675, 9731, 9731, 4694, 4694, 0, 0, 0, 5, 22, 22, 405, 4, 0, 3720, 3752, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 4, 5, 0, 8, 18, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Italian/Latin/Vatican City
+ { 120, 53, 120, 183, 183, 183, 183, 6, 0, 1, 2, 3, 4, 5, 10, 51, 52, 53, 54, 513, 821, 391, 1, 9758, 9758, 9785, 9785, 9785, 9785, 283, 290, 587, 590, 22, 145, 3052, 2, 9, 3770, 3770, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 10, 13, 4, 27, 27, 13, 13, 13, 13, 2, 2, 3, 17, 23, 1, 3, 4, 6, 3, 2, {74,80,89}, 0, 0, 7, 6, 7, 1, 3, 3 }, // Japanese/Japanese/Japan
+ { 121, 66, 111, 0, 0, 593, 603, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 394, 10, 0, 9798, 9798, 9838, 9838, 9866, 9866, 285, 292, 607, 5, 22, 186, 3007, 15, 0, 3773, 3777, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 40, 40, 28, 28, 13, 13, 4, 5, 4, 17, 23, 2, 16, 5, 0, 4, 9, {73,68,82}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Javanese/Latin/Indonesia
+ { 122, 66, 169, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 137, 155, 10, 0, 9879, 9879, 9922, 9922, 83, 83, 0, 0, 0, 5, 22, 124, 3055, 15, 0, 3786, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 43, 43, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 7, 5, 0, 4, 0, {78,71,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Jju/Latin/Nigeria
+ { 123, 66, 206, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 14, 15, 113, 129, 10, 0, 9949, 9949, 9998, 9998,10025,10025, 0, 0, 0, 5, 22, 127, 3062, 4, 0, 3790, 3795, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 49, 49, 27, 27, 13, 13, 2, 2, 4, 17, 23, 5, 16, 5, 0, 5, 7, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Jola-Fonyi/Latin/Senegal
+ { 124, 66, 43, 0, 0, 143, 143, 6, 1, 9, 2, 3, 4, 5, 10, 14, 15, 16, 17, 1131, 186, 10, 0,10038,10038,10110,10110,10137,10137, 82, 203, 0, 5, 22, 243, 3078, 4, 20, 3802, 3814, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 10, 13, 5, 72, 72, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 18, 5, 7, 12, 10, {67,86,69}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Kabuverdianu/Latin/Cape Verde
+ { 125, 66, 4, 0, 0, 612, 620, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 14, 15, 113, 129, 23, 38,10150,10183,10233,10260,10289,10302, 289, 297, 611, 618, 22, 209, 3096, 0, 0, 3824, 3833, 6, 6, 8, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 15, 7, 33, 50, 27, 29, 13, 13, 7, 9, 7, 21, 23, 2, 14, 4, 0, 9, 8, {68,90,68}, 2, 1, 6, 5, 6, 1, 3, 3 }, // Kabyle/Latin/Algeria
+ { 126, 66, 40, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 10, 11, 12, 19, 20, 86, 1158, 10, 0,10315,10315,10315,10315,10368,10368, 0, 0, 0, 5, 22, 11, 3110, 15, 0, 3841, 3845, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 53, 53, 53, 53, 20, 20, 2, 2, 4, 17, 23, 4, 9, 5, 0, 4, 7, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Kako/Latin/Cameroon
+ { 127, 66, 95, 0, 0, 627, 627, 6, 1, 0, 2, 3, 48, 5, 63, 12, 11, 20, 19, 86, 103, 212, 212,10388,10388,10485,10485,10512,10512, 0, 0, 0, 5, 22, 160, 3119, 2, 92, 3852, 3863, 6, 6, 11, 11, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 17, 10, 13, 5, 97, 97, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 19, 4, 5, 11, 16, {68,75,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Kalaallisut/Latin/Greenland
+ { 128, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0,10525,10525,10577,10577,10604,10604, 296, 306, 0, 5, 22, 176, 3138, 2, 9, 3879, 3887, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 52, 52, 27, 27, 13, 13, 6, 10, 4, 17, 23, 3, 19, 4, 6, 8, 12, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Kalenjin/Latin/Kenya
+ { 129, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0,10617,10617,10690,10690,10717,10717, 302, 316, 0, 5, 22, 176, 3157, 2, 9, 3899, 1307, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 73, 73, 27, 27, 13, 13, 9, 7, 4, 17, 23, 3, 16, 4, 6, 7, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Kamba/Latin/Kenya
+ { 130, 56, 110, 0, 0, 638, 650, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 129, 367, 383,10730,10730,10783,10783,10815,10815, 311, 323, 639, 647, 22, 120, 3173, 2, 9, 3906, 3911, 6, 6, 12, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 16, 8, 53, 53, 32, 32, 19, 19, 9, 7, 8, 35, 23, 1, 13, 4, 6, 5, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Kannada/Kannada/India
+ { 132, 4, 110, 661, 661, 667, 677, 67, 21, 22, 23, 40, 35, 41, 44, 14, 15, 16, 17, 549, 567, 61, 76,10834,10834,10885,10885,10934,10934, 320, 330, 0, 5, 22, 120, 3186, 2, 0, 3915, 3920, 6, 6, 10, 9, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 18, 6, 15, 7, 51, 51, 49, 49, 13, 13, 6, 6, 4, 17, 23, 1, 16, 4, 0, 5, 9, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Kashmiri/Arabic/India
+ { 132, 29, 110, 0, 0, 686, 695, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 129, 127, 127,10947,10996,10947,11045,11092,11092, 326, 336, 0, 5, 22, 120, 3202, 15, 0, 3929, 3934, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 15, 7, 49, 49, 49, 47, 13, 13, 5, 5, 4, 17, 23, 1, 11, 5, 0, 5, 10, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Kashmiri/Devanagari/India
+ { 133, 27, 123, 0, 0, 0, 703, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 14, 15, 1168, 49, 10, 0,11105,11105,11160,11160,11180,11180, 0, 0, 196, 682, 699, 244, 3213, 4, 0, 3944, 3954, 6, 6, 6, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 8, 13, 5, 55, 55, 20, 20, 13, 13, 2, 2, 4, 17, 23, 1, 17, 5, 0, 10, 9, {75,90,84}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Kazakh/Cyrillic/Kazakhstan
+ { 134, 66, 40, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 11, 0, 15, 0, 3963, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 4, 0, 5, 0, 6, 0, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Kenyang/Latin/Cameroon
+ { 135, 60, 39, 0, 0, 713, 722, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 113, 129, 61, 76,11193,11238,11284,11284,11323,11323, 0, 0, 722, 5, 22, 245, 3230, 0, 45, 3969, 3974, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 6, 15, 7, 45, 46, 39, 39, 13, 13, 2, 2, 2, 17, 23, 1, 11, 4, 6, 5, 7, {75,72,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Khmer/Khmer/Cambodia
+ { 136, 66, 99, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 246, 0, 15, 0, 3981, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 7, 0, {71,84,81}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Kiche/Latin/Guatemala
+ { 137, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0,11336,11336,11398,11398,11425,11425, 331, 341, 0, 5, 22, 176, 3241, 2, 9, 3988, 1307, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 62, 62, 27, 27, 13, 13, 6, 8, 4, 17, 23, 3, 16, 4, 6, 6, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Kikuyu/Latin/Kenya
+ { 138, 66, 194, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 10, 11, 12, 16, 17, 163, 103, 10, 0,11438,11438,11521,11521, 83, 83, 0, 0, 0, 5, 22, 198, 0, 15, 0, 3994, 4005, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 83, 83, 34, 34, 13, 13, 2, 2, 4, 17, 23, 2, 0, 5, 0, 11, 8, {82,87,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Kinyarwanda/Latin/Rwanda
+ { 141, 29, 110, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 113, 283, 61, 76,11555,11555,11555,11555,11605,11623, 337, 349, 724, 5, 22, 120, 2964, 2, 9, 4013, 664, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 6, 15, 7, 50, 50, 50, 50, 18, 19, 4, 4, 4, 17, 23, 1, 12, 4, 6, 6, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Konkani/Devanagari/India
+ { 142, 63, 218, 0, 0, 731, 731, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 1190, 1208, 404, 127,11642,11642,11669,11669,11669,11669, 341, 353, 728, 5, 22, 247, 3257, 2, 9, 4019, 4022, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 9, 16, 7, 27, 27, 13, 13, 13, 13, 2, 2, 3, 17, 23, 1, 6, 4, 6, 3, 4, {75,82,87}, 0, 0, 7, 6, 7, 1, 3, 3 }, // Korean/Korean/South Korea
+ { 142, 63, 50, 0, 0, 731, 731, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 1190, 1208, 169, 0,11642,11642,11669,11669,11669,11669, 341, 353, 728, 5, 22, 248, 3263, 2, 9, 4019, 4026, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 9, 13, 5, 27, 27, 13, 13, 13, 13, 2, 2, 3, 17, 23, 3, 6, 4, 6, 3, 2, {67,78,89}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Korean/Korean/China
+ { 142, 63, 174, 0, 0, 731, 731, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 1190, 1208, 404, 127,11642,11642,11669,11669,11669,11669, 341, 353, 728, 5, 22, 247, 3269, 2, 9, 4019, 4028, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 9, 16, 7, 27, 27, 13, 13, 13, 13, 2, 2, 3, 17, 23, 1, 16, 4, 6, 3, 11, {75,80,87}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Korean/Korean/North Korea
+ { 144, 66, 145, 0, 0, 0, 0, 6, 0, 9, 2, 3, 4, 5, 10, 14, 15, 16, 17, 113, 129, 10, 0,11682,11682,11735,11735,11762,11762, 343, 355, 0, 5, 22, 127, 3285, 0, 0, 4039, 4054, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 53, 53, 27, 27, 13, 13, 6, 6, 4, 17, 23, 5, 16, 4, 0, 15, 5, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Koyraboro Senni/Latin/Mali
+ { 145, 66, 145, 0, 0, 0, 0, 6, 0, 9, 2, 3, 4, 5, 10, 14, 15, 16, 17, 113, 129, 10, 0,11775,11775,11827,11827,11762,11762, 343, 355, 0, 5, 22, 127, 3285, 0, 0, 4059, 4054, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 52, 52, 27, 27, 13, 13, 6, 6, 4, 17, 23, 5, 16, 4, 0, 11, 5, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Koyra Chiini/Latin/Mali
+ { 146, 66, 134, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 23, 38, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 10, 0, 15, 0, 4070, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 6, 0, {76,82,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Kpelle/Latin/Liberia
+ { 146, 66, 102, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 215, 0, 15, 0, 4070, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 2, 0, 5, 0, 6, 0, {71,78,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Kpelle/Latin/Guinea
+ { 148, 66, 239, 0, 0, 738, 738, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 1217, 49, 10, 0,11854,11854,11896,11896,11923,11923, 349, 361, 0, 5, 22, 126, 3301, 4, 20, 4076, 4092, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 10, 13, 5, 42, 42, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 12, 5, 7, 16, 7, {84,82,89}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Kurdish/Latin/Turkey
+ { 149, 66, 40, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 13, 15, 11, 12, 113, 129, 10, 0,11936,11936,12024,12024,12053,12053, 351, 363, 0, 5, 22, 11, 3313, 4, 0, 4099, 4105, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 88, 88, 29, 29, 13, 13, 4, 4, 4, 17, 23, 4, 13, 5, 0, 6, 7, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Kwasio/Latin/Cameroon
+ { 150, 27, 128, 0, 0, 745, 745, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 13, 14, 1244, 129, 10, 0,12066,12066,12122,12122,12159,12159, 355, 367, 196, 731, 22, 251, 3326, 4, 0, 4112, 4120, 6, 6, 10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 6, 13, 5, 56, 56, 37, 37, 13, 13, 5, 14, 4, 18, 23, 3, 15, 5, 0, 8, 10, {75,71,83}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Kyrgyz/Cyrillic/Kyrgyzstan
+ { 151, 66, 248, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 567, 23, 38,12172,12172,12172,12172, 83,12258, 0, 0, 0, 5, 22, 10, 0, 15, 0, 4130, 4142, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 86, 86, 86, 86, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 12, 22, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Lakota/Latin/United States
+ { 152, 66, 230, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 15, 15, 17, 17, 0, 186, 10, 0,12271,12271,12333,12333,12368,12368, 360, 381, 0, 5, 22, 121, 3341, 15, 0, 4164, 4172, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 62, 62, 35, 35, 13, 13, 3, 3, 4, 17, 23, 3, 22, 5, 0, 8, 9, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Langi/Latin/Tanzania
+ { 153, 65, 129, 0, 0, 0, 755, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 1267, 129, 420, 1,12381,12381,12437,12437,12472,12472, 363, 384, 0, 5, 22, 254, 3363, 2, 65, 4181, 4181, 6, 6, 6, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 8, 27, 4, 56, 56, 35, 35, 16, 16, 8, 8, 4, 17, 23, 1, 7, 4, 5, 3, 3, {76,65,75}, 0, 0, 7, 6, 7, 1, 3, 3 }, // Lao/Lao/Laos
+ { 154, 66, 253, 0, 0, 406, 406, 6, 1, 9, 2, 3, 4, 5, 10, 14, 15, 16, 17, 1286, 1309, 10, 0,12488,12488,12572,12572, 83, 83, 0, 0, 0, 5, 22, 22, 83, 15, 0, 4184, 4190, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 8, 13, 5, 84, 84, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 4, 5, 0, 6, 16, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Latin/Latin/Vatican City
+ { 155, 66, 131, 0, 0, 267, 267, 6, 1, 9, 2, 3, 4, 5, 10, 14, 15, 16, 17, 1317, 49, 10, 0,12599,12670,12741,12791,12841,12841, 371, 392, 749, 5, 22, 22, 3370, 4, 0, 4206, 4214, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 26, 8, 13, 5, 71, 71, 50, 50, 13, 13, 14, 11, 5, 17, 23, 1, 4, 5, 0, 8, 7, {69,85,82}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Latvian/Latin/Latvia
+ { 158, 66, 57, 0, 0, 764, 764, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 113, 129, 10, 0,12854,12854,12953,12953,12980,12980, 385, 403, 0, 5, 22, 11, 3374, 4, 0, 4221, 4228, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 99, 99, 27, 27, 13, 13, 8, 6, 4, 17, 23, 2, 16, 5, 0, 7, 30, {67,68,70}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Lingala/Latin/Congo - Kinshasa
+ { 158, 66, 7, 0, 0, 764, 764, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 113, 129, 10, 0,12854,12854,12953,12953,12980,12980, 385, 403, 0, 5, 22, 255, 3390, 4, 0, 4221, 4258, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 99, 99, 27, 27, 13, 13, 8, 6, 4, 17, 23, 2, 16, 5, 0, 7, 6, {65,79,65}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Lingala/Latin/Angola
+ { 158, 66, 46, 0, 0, 764, 764, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 113, 129, 10, 0,12854,12854,12953,12953,12980,12980, 385, 403, 0, 5, 22, 11, 3406, 4, 0, 4221, 4264, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 99, 99, 27, 27, 13, 13, 8, 6, 4, 17, 23, 4, 16, 5, 0, 7, 26, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Lingala/Latin/Central African Republic
+ { 158, 66, 56, 0, 0, 764, 764, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 113, 129, 10, 0,12854,12854,12953,12953,12980,12980, 385, 403, 0, 5, 22, 11, 3406, 4, 0, 4221, 4290, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 99, 99, 27, 27, 13, 13, 8, 6, 4, 17, 23, 4, 16, 5, 0, 7, 5, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Lingala/Latin/Congo - Brazzaville
+ { 160, 66, 137, 0, 0, 773, 773, 6, 1, 9, 2, 3, 48, 5, 63, 13, 14, 13, 14, 1343, 103, 10, 0,12993,12993,13081,13081,13101,13101, 393, 409, 754, 5, 22, 22, 3422, 4, 0, 4295, 4303, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 27, 10, 13, 5, 88, 88, 20, 20, 13, 13, 9, 6, 6, 17, 23, 1, 5, 5, 0, 8, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Lithuanian/Latin/Lithuania
+ { 161, 66, 258, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 15, 0, 4310, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 11, 0, {0,0,0}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Lojban/Latin/world
+ { 162, 66, 91, 0, 0, 781, 781, 6, 1, 0, 2, 3, 4, 5, 10, 13, 14, 18, 16, 404, 180, 11, 1,13114,13114,13166,13166,13193,13193, 402, 415, 0, 5, 22, 22, 405, 4, 0, 4321, 4335, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 4, 52, 52, 27, 27, 13, 13, 9, 10, 4, 17, 23, 1, 4, 5, 0, 14, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Lower Sorbian/Latin/Germany
+ { 163, 66, 91, 0, 0, 267, 267, 6, 1, 0, 2, 3, 4, 5, 10, 13, 14, 18, 16, 1370, 50, 447, 469,13206,13206,13270,13270, 4510, 4510, 0, 0, 0, 5, 22, 22, 83, 4, 0, 4341, 4355, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 7, 22, 10, 64, 64, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 4, 5, 0, 14, 11, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Low German/Latin/Germany
+ { 163, 66, 165, 0, 0, 267, 267, 6, 1, 0, 2, 3, 4, 5, 10, 13, 14, 18, 16, 1370, 50, 447, 469,13206,13206,13270,13270, 4510, 4510, 0, 0, 0, 5, 22, 22, 83, 4, 0, 4341, 4366, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 7, 22, 10, 64, 64, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 4, 5, 0, 14, 12, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Low German/Latin/Netherlands
+ { 164, 66, 57, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 113, 129, 10, 0,13297,13297,13346,13346,13373,13373, 411, 425, 0, 5, 22, 11, 3427, 0, 0, 4378, 4386, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 49, 49, 27, 27, 13, 13, 5, 6, 4, 17, 23, 2, 17, 4, 0, 8, 16, {67,68,70}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Luba-Katanga/Latin/Congo - Kinshasa
+ { 165, 66, 225, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 160, 0, 15, 0, 4402, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 2, 0, 5, 0, 15, 0, {83,69,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Lule Sami/Latin/Sweden
+ { 165, 66, 175, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 160, 0, 15, 0, 4402, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 2, 0, 5, 0, 15, 0, {78,79,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Lule Sami/Latin/Norway
+ { 166, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0,13386,13386,13454,13454,13481,13481, 416, 431, 0, 5, 22, 176, 3444, 0, 0, 4417, 1307, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 68, 68, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 16, 4, 0, 6, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Luo/Latin/Kenya
+ { 167, 66, 138, 0, 0, 788, 788, 6, 1, 0, 2, 3, 4, 5, 10, 13, 14, 18, 16, 404, 49, 10, 0,13494,13494,13558,13585, 4510, 4510, 418, 433, 461, 5, 22, 22, 83, 4, 0, 4423, 4423, 6, 6, 10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 64, 64, 27, 34, 13, 13, 5, 8, 5, 17, 23, 1, 4, 5, 0, 14, 10, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Luxembourgish/Latin/Luxembourg
+ { 168, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 13, 14, 18, 16, 0, 186, 10, 0,13619,13619,13693,13693, 83, 83, 168, 168, 0, 5, 22, 176, 3460, 2, 97, 4437, 1307, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 74, 74, 20, 20, 13, 13, 4, 4, 4, 17, 23, 3, 16, 4, 6, 7, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Luyia/Latin/Kenya
+ { 169, 27, 140, 0, 0, 150, 150, 6, 1, 0, 2, 3, 4, 5, 10, 13, 14, 18, 16, 0, 180, 10, 0,13713,13713,13766,13766, 3069, 3069, 423, 441, 760, 5, 22, 257, 3476, 4, 0, 4444, 4454, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 13, 5, 53, 53, 34, 34, 13, 13, 7, 5, 5, 17, 23, 4, 16, 5, 0, 10, 18, {77,75,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Macedonian/Cyrillic/Macedonia
+ { 170, 66, 230, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0,13800,13800,13861,13861, 1284, 1284, 430, 446, 0, 5, 22, 121, 3492, 2, 0, 4472, 2268, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 61, 61, 27, 27, 13, 13, 5, 9, 4, 17, 23, 3, 20, 4, 0, 9, 8, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Machame/Latin/Tanzania
+ { 171, 29, 110, 0, 0, 513, 522, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 129, 61, 76,13888,13888, 8574, 8574, 8605, 8605, 88, 83, 0, 5, 22, 120, 2964, 15, 0, 4481, 664, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 15, 7, 63, 63, 31, 31, 18, 18, 3, 4, 4, 17, 23, 1, 12, 5, 0, 6, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Maithili/Devanagari/India
+ { 172, 66, 160, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0,13951,13951,14009,14009,14036,14036, 435, 455, 0, 5, 22, 261, 0, 15, 0, 4487, 4492, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 58, 58, 27, 27, 13, 13, 8, 10, 4, 17, 23, 3, 0, 5, 0, 5, 10, {77,90,78}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Makhuwa-Meetto/Latin/Mozambique
+ { 173, 66, 230, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0,14049,14049,14181,14181,14208,14208, 443, 465, 0, 5, 22, 121, 3492, 2, 9, 4502, 2268, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5,132,132, 27, 27, 13, 13, 4, 5, 4, 17, 23, 3, 20, 4, 6, 10, 8, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Makonde/Latin/Tanzania
+ { 174, 66, 141, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 11, 12, 14, 15, 113, 103, 10, 0,14221,14221,14280,14280,14313,14313, 0, 0, 0, 5, 22, 188, 1515, 2, 0, 4512, 4520, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 59, 59, 33, 33, 13, 13, 2, 2, 4, 17, 23, 2, 6, 4, 0, 8, 12, {77,71,65}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Malagasy/Latin/Madagascar
+ { 175, 74, 110, 0, 0, 798, 811, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 1393, 129, 61, 76,14326,14402,14477,14477,14517,14538, 0, 0, 765, 771, 22, 120, 3512, 2, 9, 4532, 4538, 6, 6, 13, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 76, 75, 40, 40, 21, 20, 2, 2, 6, 27, 23, 1, 11, 4, 6, 6, 6, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Malayalam/Malayalam/India
+ { 176, 66, 143, 0, 0, 584, 584, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 79, 23, 38,14558,14558,14600,14600,14627,14627, 447, 470, 749, 5, 22, 192, 3523, 2, 9, 4544, 1875, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 7, 15, 7, 42, 42, 27, 27, 13, 13, 2, 3, 4, 17, 23, 2, 16, 4, 6, 6, 8, {77,89,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Malay/Latin/Malaysia
+ { 176, 4, 35, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 10, 15, 14, 17, 16, 91, 79, 61, 76,14640,14640,14640,14640, 83, 83, 0, 0, 0, 5, 22, 10, 3539, 2, 9, 4550, 4560, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 7, 15, 7, 34, 34, 34, 34, 13, 13, 2, 2, 4, 17, 23, 1, 10, 4, 6, 10, 5, {66,78,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Malay/Arabic/Brunei
+ { 176, 4, 143, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 15, 14, 17, 16, 196, 79, 61, 76,14640,14640,14640,14640, 83, 83, 0, 0, 0, 5, 22, 192, 3549, 2, 9, 4550, 4565, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 7, 15, 7, 34, 34, 34, 34, 13, 13, 2, 2, 4, 17, 23, 2, 13, 4, 6, 10, 6, {77,89,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Malay/Arabic/Malaysia
+ { 176, 66, 35, 0, 0, 584, 584, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 91, 79, 23, 38,14558,14558,14600,14600,14627,14627, 447, 470, 749, 5, 22, 10, 3562, 2, 9, 4544, 4571, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 7, 15, 7, 42, 42, 27, 27, 13, 13, 2, 3, 4, 17, 23, 1, 12, 4, 6, 6, 6, {66,78,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Malay/Latin/Brunei
+ { 176, 66, 111, 0, 0, 584, 584, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 786, 78, 212, 212,14558,14558,14600,14600,14627,14627, 447, 470, 749, 5, 22, 186, 3007, 2, 0, 4544, 1776, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 42, 42, 27, 27, 13, 13, 2, 3, 4, 17, 23, 2, 16, 4, 0, 6, 9, {73,68,82}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Malay/Latin/Indonesia
+ { 176, 66, 210, 0, 0, 584, 584, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 79, 23, 38,14558,14558,14600,14600,14627,14627, 447, 470, 749, 5, 22, 10, 3574, 2, 9, 4544, 4577, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 7, 15, 7, 42, 42, 27, 27, 13, 13, 2, 3, 4, 17, 23, 1, 15, 4, 6, 6, 9, {83,71,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Malay/Latin/Singapore
+ { 177, 66, 146, 0, 0, 823, 831, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 1411, 186, 10, 0,14674,14674,14736,14736,14763,14783, 0, 0, 0, 5, 22, 22, 3589, 2, 0, 4586, 1891, 6, 6, 8, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 10, 13, 5, 62, 62, 27, 27, 20, 19, 2, 2, 4, 17, 23, 1, 4, 4, 0, 5, 5, {69,85,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Maltese/Latin/Malta
+ { 179, 9, 110, 0, 0, 838, 838, 6, 0, 1, 2, 39, 4, 5, 10, 14, 15, 16, 17, 1434, 129, 61, 76,14802,14802,14802,14802,14860,14885, 449, 473, 0, 5, 22, 120, 3593, 15, 0, 4591, 4599, 6, 6, 11, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 58, 58, 58, 58, 25, 29, 4, 5, 4, 17, 23, 1, 14, 5, 0, 8, 8, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Manipuri/Bangla/India
+ { 179, 78, 110, 0, 0, 0, 0, 6, 0, 1, 2, 75, 4, 5, 10, 14, 15, 16, 17, 265, 283, 479, 494, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 120, 0, 15, 0, 4607, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 15, 8, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 7, 0, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Manipuri/Meitei Mayek/India
+ { 180, 66, 115, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 86, 78, 10, 0,14914,14914,14970,14970, 83, 83, 168, 168, 0, 5, 22, 94, 0, 2, 0, 4614, 4619, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 13, 5, 56, 56, 29, 29, 13, 13, 4, 4, 4, 17, 23, 1, 0, 4, 0, 5, 12, {71,66,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Manx/Latin/Isle of Man
+ { 181, 66, 167, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 394, 23, 38,14999,14999,15046,15046,15073,15073, 0, 0, 0, 5, 22, 10, 3607, 15, 0, 4631, 4636, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 47, 47, 27, 27, 15, 15, 2, 2, 4, 17, 23, 1, 15, 5, 0, 5, 8, {78,90,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Maori/Latin/New Zealand
+ { 182, 66, 49, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 10, 0, 15, 0, 4644, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 10, 0, {67,76,80}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Mapuche/Latin/Chile
+ { 183, 29, 110, 0, 0, 849, 849, 6, 0, 1, 2, 49, 4, 5, 10, 14, 15, 16, 17, 265, 129, 61, 76,15088,15088,15140,15140, 8605, 8605, 0, 0, 562, 5, 22, 120, 2964, 2, 9, 4654, 664, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 52, 52, 31, 31, 18, 18, 2, 2, 4, 17, 23, 1, 12, 4, 6, 5, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Marathi/Devanagari/India
+ { 185, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0,15171,15171,13861,13861,14208,14208, 453, 478, 0, 5, 22, 176, 3622, 2, 9, 1275, 1307, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 57, 57, 27, 27, 13, 13, 9, 6, 4, 17, 23, 3, 18, 4, 6, 3, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Masai/Latin/Kenya
+ { 185, 66, 230, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0,15171,15171,13861,13861,14208,14208, 453, 478, 0, 5, 22, 121, 3640, 2, 9, 1275, 4659, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 57, 57, 27, 27, 13, 13, 9, 6, 4, 17, 23, 3, 21, 4, 6, 3, 8, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Masai/Latin/Tanzania
+ { 186, 4, 112, 0, 0, 0, 0, 67, 21, 22, 23, 40, 35, 41, 44, 11, 12, 19, 20, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 798, 802, 22, 0, 3661, 15, 0, 4667, 4674, 6, 6, 6, 6, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 39, 23, 0, 10, 5, 0, 7, 5, {73,82,82}, 0, 0, 6, 5, 5, 1, 3, 3 }, // Mazanderani/Arabic/Iran
+ { 188, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0,15228,15228,15278,15278,15305,15305, 462, 484, 0, 5, 22, 176, 991, 2, 9, 4679, 1307, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 50, 50, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 17, 4, 6, 6, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Meru/Latin/Kenya
+ { 189, 66, 40, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 137, 103, 10, 0,15318,15318,15318,15318,15366,15366, 0, 0, 0, 5, 22, 11, 3671, 15, 0, 4685, 4690, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 10, 13, 5, 48, 48, 48, 48, 20, 20, 2, 2, 4, 17, 23, 4, 5, 5, 0, 5, 7, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Meta/Latin/Cameroon
+ { 190, 66, 41, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 23, 38, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 240, 0, 15, 0, 4697, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 0, 5, 0, 11, 0, {67,65,68}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Mohawk/Latin/Canada
+ { 191, 27, 156, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 1452, 596, 98, 0,15386,15428,15470,15470,15470,15470, 464, 486, 196, 841, 22, 264, 3676, 15, 0, 4708, 4714, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 35, 10, 15, 5, 42, 42, 20, 20, 20, 20, 4, 4, 4, 17, 23, 1, 13, 5, 0, 6, 6, {77,78,84}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Mongolian/Cyrillic/Mongolia
+ { 191, 83, 50, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 248, 3689, 15, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 4, 5, 0, 0, 0, {67,78,89}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Mongolian/Mongolian/China
+ { 191, 83, 156, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 1487, 596, 98, 0,15490,15490,15532,15555,15578,15578, 468, 490, 0, 5, 22, 264, 3693, 2, 0, 4720, 4720, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 36, 10, 15, 5, 42, 42, 23, 23, 23, 22, 4, 5, 4, 17, 23, 1, 8, 4, 0, 6, 6, {77,78,84}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Mongolian/Mongolian/Mongolia
+ { 192, 66, 150, 0, 0, 0, 0, 6, 0, 9, 2, 3, 4, 5, 10, 14, 15, 16, 17, 113, 129, 10, 0,15601,15601,15648,15648,15674,15674, 0, 0, 0, 5, 22, 196, 3701, 15, 0, 4726, 4740, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 47, 47, 26, 26, 13, 13, 2, 2, 4, 17, 23, 2, 14, 5, 0, 14, 5, {77,85,82}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Morisyen/Latin/Mauritius
+ { 193, 66, 40, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 10, 11, 12, 14, 15, 113, 129, 10, 0,15687,15687,15760,15760,15787,15787, 472, 495, 0, 5, 22, 11, 3715, 2, 9, 4745, 4751, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 73, 73, 27, 27, 13, 13, 5, 5, 4, 17, 23, 4, 10, 4, 6, 6, 7, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Mundang/Latin/Cameroon
+ { 194, 66, 248, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 567, 23, 38,15800,15800,15800,15800, 83, 83, 0, 0, 0, 5, 22, 10, 0, 15, 0, 4758, 964, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7,106,106,106,106, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 7, 13, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Muscogee/Latin/United States
+ { 195, 66, 162, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38,15906,15906,15997,15997,16019,16019, 477, 500, 0, 5, 22, 10, 3725, 2, 0, 4765, 4778, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 91, 91, 22, 22, 13, 13, 7, 5, 4, 17, 23, 1, 15, 4, 0, 13, 8, {78,65,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Nama/Latin/Namibia
+ { 197, 66, 248, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 179, 0, 15, 0, 4786, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 0, 5, 0, 11, 0, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Navajo/Latin/United States
+ { 199, 29, 164, 858, 0, 863, 863, 6, 0, 1, 2, 49, 4, 5, 10, 14, 15, 16, 17, 163, 344, 10, 0,16032,16032,16085,16085,16117,16117, 484, 505, 562, 858, 22, 265, 3740, 15, 0, 4797, 4797, 5, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 13, 5, 53, 53, 32, 32, 17, 17, 9, 7, 4, 19, 23, 4, 14, 5, 0, 6, 5, {78,80,82}, 2, 1, 7, 6, 7, 1, 2, 3 }, // Nepali/Devanagari/Nepal
+ { 199, 29, 110, 858, 0, 863, 863, 6, 0, 1, 2, 49, 4, 5, 10, 14, 15, 16, 17, 163, 344, 61, 76,16032,16032,16085,16085,16117,16117, 484, 505, 562, 858, 22, 120, 3754, 15, 0, 4797, 664, 5, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 15, 7, 53, 53, 32, 32, 17, 17, 9, 7, 4, 19, 23, 1, 14, 5, 0, 6, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Nepali/Devanagari/India
+ { 201, 66, 40, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 10, 11, 12, 14, 15, 1523, 78, 10, 0,16134,16134,16134,16134, 83, 83, 493, 512, 0, 5, 22, 11, 3768, 15, 0, 4803, 4819, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 32, 8, 13, 5,110,110,110,110, 13, 13, 9, 8, 4, 17, 23, 4, 9, 5, 0, 16, 7, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Ngiemboon/Latin/Cameroon
+ { 202, 66, 40, 870, 870, 881, 897, 6, 1, 0, 2, 3, 4, 5, 10, 11, 12, 19, 20, 137, 103, 10, 0,16244,16244,16244,16244,16303,16303, 502, 520, 0, 5, 22, 11, 3777, 15, 0, 4826, 4831, 11, 11, 16, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 10, 13, 5, 59, 59, 59, 59, 24, 24, 8, 13, 4, 17, 23, 4, 5, 5, 0, 5, 7, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Ngomba/Latin/Cameroon
+ { 203, 66, 169, 0, 0, 906, 915, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0,16327,16327,16378,16378, 83, 83, 510, 533, 877, 5, 22, 124, 3782, 2, 0, 4838, 4852, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 51, 51, 32, 32, 13, 13, 9, 8, 8, 17, 23, 1, 14, 4, 0, 14, 8, {78,71,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Nigerian Pidgin/Latin/Nigeria
+ { 204, 90, 102, 0, 0, 0, 0, 6, 0, 76, 2, 77, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0,16410,16410,16470,16502,16536,16536, 519, 541, 0, 5, 22, 269, 3796, 15, 0, 4860, 4863, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 60, 60, 32, 34, 13, 13, 1, 1, 4, 17, 23, 1, 22, 5, 0, 3, 6, {71,78,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Nko/Nko/Guinea
+ { 205, 4, 112, 0, 0, 0, 0, 67, 21, 22, 23, 40, 35, 41, 44, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 15, 0, 4869, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 11, 0, {73,82,82}, 0, 0, 6, 5, 5, 1, 3, 3 }, // Northern Luri/Arabic/Iran
+ { 205, 4, 113, 0, 0, 0, 0, 67, 21, 22, 23, 40, 35, 41, 44, 14, 15, 16, 17, 163, 103, 61, 76, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 43, 0, 15, 0, 4869, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 17, 10, 15, 7, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 5, 0, 5, 0, 11, 0, {73,81,68}, 0, 0, 6, 5, 6, 1, 3, 3 }, // Northern Luri/Arabic/Iraq
+ { 206, 66, 175, 0, 0, 351, 351, 6, 1, 9, 2, 3, 48, 5, 78, 15, 15, 17, 17, 163, 103, 10, 0,16549,16549,16623,16623,16655,16655, 520, 542, 0, 5, 22, 160, 3818, 4, 0, 4880, 4895, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 17, 10, 13, 5, 74, 74, 32, 32, 13, 13, 11, 13, 4, 17, 23, 2, 14, 5, 0, 15, 5, {78,79,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Northern Sami/Latin/Norway
+ { 206, 66, 83, 0, 0, 351, 351, 6, 1, 9, 2, 3, 48, 5, 78, 15, 15, 17, 17, 113, 49, 10, 0,16668,16668,16737,16737,16757,16757, 531, 185, 0, 5, 22, 22, 405, 4, 0, 4880, 4900, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 16, 10, 13, 5, 69, 69, 20, 20, 13, 13, 2, 2, 4, 17, 23, 1, 4, 5, 0, 15, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Northern Sami/Latin/Finland
+ { 206, 66, 225, 0, 0, 351, 351, 6, 1, 9, 2, 3, 48, 5, 78, 15, 15, 17, 17, 163, 103, 10, 0,16549,16549,16623,16623,16655,16655, 520, 542, 0, 5, 22, 160, 3832, 4, 0, 4880, 4906, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 17, 10, 13, 5, 74, 74, 32, 32, 13, 13, 11, 13, 4, 17, 23, 2, 14, 5, 0, 15, 6, {83,69,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Northern Sami/Latin/Sweden
+ { 207, 66, 216, 0, 0, 0, 0, 6, 0, 9, 2, 3, 4, 5, 10, 16, 17, 14, 15, 163, 103, 10, 0,16770,16770,16833,16833,16859,16859, 0, 0, 0, 5, 22, 9, 0, 2, 0, 4912, 4928, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 63, 63, 26, 26, 13, 13, 2, 2, 4, 17, 23, 1, 0, 4, 0, 16, 12, {90,65,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Northern Sotho/Latin/South Africa
+ { 208, 66, 261, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0,16872,16872,16921,16921,16948,16948, 0, 0, 0, 5, 22, 179, 3846, 2, 9, 4940, 2434, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 49, 49, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 17, 4, 6, 10, 8, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // North Ndebele/Latin/Zimbabwe
+ { 209, 66, 175, 0, 0, 289, 289, 6, 1, 9, 2, 3, 48, 5, 10, 11, 12, 16, 17, 698, 49, 10, 0, 4788, 4788,16961,16961, 4874, 4874, 168, 168, 0, 5, 22, 160, 3863, 15, 58, 4950, 4962, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 50, 50, 34, 34, 13, 13, 4, 4, 4, 17, 23, 2, 13, 5, 7, 12, 5, {78,79,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Norwegian Bokmal/Latin/Norway
+ { 209, 66, 224, 0, 0, 289, 289, 6, 1, 9, 2, 3, 48, 5, 10, 11, 12, 16, 17, 698, 49, 10, 0, 4788, 4788,16961,16961, 4874, 4874, 168, 168, 0, 5, 22, 160, 3863, 15, 58, 4950, 4967, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 50, 50, 34, 34, 13, 13, 4, 4, 4, 17, 23, 2, 13, 5, 7, 12, 21, {78,79,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Norwegian Bokmal/Latin/Svalbard and Jan Mayen
+ { 210, 66, 175, 0, 0, 289, 289, 6, 1, 9, 2, 3, 48, 5, 10, 11, 12, 16, 17, 698, 49, 502, 0,16995,16995,17045,17072, 4874, 4874, 533, 555, 0, 5, 22, 160, 3863, 4, 0, 4988, 5001, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 19, 5, 50, 50, 27, 27, 13, 13, 4, 4, 4, 17, 23, 2, 13, 5, 0, 13, 5, {78,79,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Norwegian Nynorsk/Latin/Norway
+ { 211, 66, 219, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 113, 187, 521, 38,17099,17099,17177,17177,17214,17214, 537, 559, 0, 5, 22, 94, 0, 2, 9, 5006, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 9, 15, 7, 78, 78, 37, 37, 13, 13, 2, 2, 4, 17, 23, 1, 0, 4, 6, 9, 0, {83,83,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Nuer/Latin/South Sudan
+ { 212, 66, 142, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 23, 38,17227,17227,17293,17293, 83, 83, 0, 0, 0, 5, 22, 0, 1521, 15, 0, 5015, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 66, 66, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 15, 5, 0, 6, 0, {77,87,75}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Nyanja/Latin/Malawi
+ { 213, 66, 243, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 4053, 4053, 4126, 4126, 4153, 4153, 0, 0, 0, 5, 22, 147, 805, 2, 0, 5021, 983, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 73, 73, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 19, 4, 0, 10, 6, {85,71,88}, 0, 0, 1, 7, 7, 1, 3, 3 }, // Nyankole/Latin/Uganda
+ { 214, 66, 84, 0, 0, 414, 414, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 11, 12, 1555, 79, 10, 536,17320,17320,17320,17320,17376,17376, 0, 0, 376, 232, 249, 22, 405, 0, 45, 5031, 807, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 7, 13, 6, 56, 56, 56, 56, 20, 20, 2, 2, 6, 17, 23, 1, 4, 4, 6, 7, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Occitan/Latin/France
+ { 214, 66, 220, 0, 0, 414, 414, 6, 0, 1, 2, 3, 4, 5, 10, 11, 12, 14, 15, 958, 79, 99, 1,17396,17396,17453,17453,17480,17480, 0, 0, 376, 232, 249, 22, 405, 0, 0, 5031, 5038, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 7, 14, 4, 57, 57, 27, 27, 13, 13, 2, 2, 6, 17, 23, 1, 4, 4, 0, 7, 7, {69,85,82}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Occitan/Latin/Spain
+ { 215, 91, 110, 0, 0, 923, 931, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 567, 61, 76,17493,17493,17546,17546,17578,17578, 0, 0, 885, 5, 22, 120, 3876, 2, 9, 5045, 5050, 6, 6, 8, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 53, 53, 32, 32, 17, 17, 2, 2, 5, 17, 23, 1, 12, 4, 6, 5, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Odia/Odia/India
+ { 220, 66, 77, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 78, 23, 38,17595,17595,17649,17649, 83, 83, 539, 561, 0, 5, 22, 1, 3888, 2, 0, 5054, 5060, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 15, 7, 54, 54, 27, 27, 13, 13, 2, 2, 4, 17, 23, 2, 17, 4, 0, 6, 10, {69,84,66}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Oromo/Latin/Ethiopia
+ { 220, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 78, 10, 0,17595,17595,17649,17649,17676,17676, 539, 561, 0, 5, 22, 176, 0, 2, 0, 5054, 5070, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 54, 54, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 0, 4, 0, 6, 8, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Oromo/Latin/Kenya
+ { 221, 101, 248, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 567, 61, 76,17689,17689,17689,17689, 83,17869, 0, 0, 0, 5, 22, 10, 0, 15, 0, 5078, 964, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7,180,180,180,180, 13, 20, 2, 2, 4, 17, 23, 1, 0, 5, 0, 12, 13, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Osage/Osage/United States
+ { 222, 27, 90, 0, 0, 938, 938, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 13, 14, 1576, 49, 10, 0,17889,17949,18009,18036,18063,18063, 541, 563, 0, 5, 22, 0, 3905, 15, 0, 5090, 5094, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 8, 13, 5, 60, 60, 27, 27, 13, 13, 15, 15, 4, 17, 23, 1, 3, 5, 0, 4, 11, {71,69,76}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Ossetic/Cyrillic/Georgia
+ { 222, 27, 193, 0, 0, 938, 938, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 13, 14, 1576, 49, 10, 0,17889,17949,18009,18036,18063,18063, 541, 563, 0, 5, 22, 133, 3908, 15, 0, 5090, 5105, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 8, 13, 5, 60, 60, 27, 27, 13, 13, 15, 15, 4, 17, 23, 1, 3, 5, 0, 4, 6, {82,85,66}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Ossetic/Cyrillic/Russia
+ { 226, 66, 62, 0, 0, 143, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 394, 10, 0,18076,18076,18076,18076,18138,18138, 0, 0, 0, 5, 22, 0, 3911, 15, 0, 5111, 5121, 6, 6, 7, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 62, 62, 62, 62, 20, 20, 2, 2, 4, 17, 23, 0, 6, 5, 0, 10, 6, {65,78,71}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Papiamento/Latin/Curacao
+ { 226, 66, 13, 0, 0, 143, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 394, 10, 0,18076,18076,18076,18076,18138,18138, 0, 0, 0, 5, 22, 0, 3917, 15, 0, 5111, 1227, 6, 6, 7, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 62, 62, 62, 62, 20, 20, 2, 2, 4, 17, 23, 0, 15, 5, 0, 10, 5, {65,87,71}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Papiamento/Latin/Aruba
+ { 227, 4, 1, 661, 661, 947, 956, 67, 21, 22, 23, 40, 35, 41, 44, 14, 15, 16, 17, 1599, 505, 99, 1,18158,18158,18158,18158, 83, 83, 556, 578, 890, 5, 22, 270, 3932, 2, 9, 5127, 5131, 6, 6, 9, 8, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 20, 8, 14, 4, 38, 38, 38, 38, 13, 13, 4, 4, 5, 17, 23, 1, 6, 4, 6, 4, 9, {65,70,78}, 0, 0, 6, 4, 5, 1, 3, 3 }, // Pashto/Arabic/Afghanistan
+ { 227, 4, 178, 661, 661, 947, 956, 67, 21, 22, 23, 40, 35, 41, 44, 14, 15, 16, 17, 1599, 505, 61, 76,18158,18158,18158,18158, 83, 83, 556, 578, 890, 5, 22, 196, 3938, 2, 9, 5127, 5140, 6, 6, 9, 8, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 20, 8, 15, 7, 38, 38, 38, 38, 13, 13, 4, 4, 5, 17, 23, 2, 15, 4, 6, 4, 7, {80,75,82}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Pashto/Arabic/Pakistan
+ { 228, 4, 112, 964, 964, 971, 979, 67, 21, 22, 23, 40, 82, 37, 44, 11, 12, 19, 20, 113, 505, 99, 1,18196,18196,18196,18196,18244,18244, 560, 582, 798, 5, 22, 271, 3953, 103, 109, 5147, 4674, 7, 7, 8, 7, 1, 1, 1, 1, 1, 2, 2, 4, 1, 1, 1, 1, 16, 8, 14, 4, 48, 48, 48, 48, 13, 13, 9, 8, 4, 17, 23, 4, 10, 6, 8, 5, 5, {73,82,82}, 0, 0, 6, 5, 5, 1, 3, 3 }, // Persian/Arabic/Iran
+ { 228, 4, 1, 964, 964, 971, 979, 67, 21, 22, 23, 40, 82, 37, 44, 11, 12, 19, 20, 113, 505, 99, 1,18196,18196,18196,18196,18244,18244, 560, 582, 798, 5, 22, 270, 3963, 15, 109, 5152, 5131, 7, 7, 8, 7, 1, 1, 1, 1, 1, 2, 2, 4, 1, 1, 1, 1, 16, 8, 14, 4, 48, 48, 48, 48, 13, 13, 9, 8, 4, 17, 23, 1, 16, 5, 8, 3, 9, {65,70,78}, 0, 0, 6, 4, 5, 1, 3, 3 }, // Persian/Arabic/Afghanistan
+ { 230, 66, 187, 0, 0, 143, 143, 6, 1, 9, 2, 3, 4, 5, 10, 13, 15, 11, 12, 0, 50, 10, 0,18257,18257,18315,18315,18348,18361, 0, 0, 311, 5, 22, 275, 3979, 4, 20, 5155, 5161, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 9, 13, 5, 58, 58, 33, 33, 13, 13, 2, 2, 5, 17, 23, 2, 12, 5, 7, 6, 6, {80,76,78}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Polish/Latin/Poland
+ { 231, 66, 32, 0, 0, 414, 414, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 186, 10, 0,18374,18374,18452,18452,18486,18486, 0, 0, 0, 5, 22, 9, 3991, 15, 0, 5167, 5176, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 10, 13, 5, 78, 78, 34, 34, 13, 13, 2, 2, 5, 17, 23, 2, 15, 5, 0, 9, 6, {66,82,76}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Portuguese/Latin/Brazil
+ { 231, 66, 7, 0, 0, 414, 414, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 14, 15, 958, 78, 10, 0,18374,18374,18499,18499,18486,18486, 569, 590, 0, 5, 22, 255, 4006, 4, 20, 5167, 5182, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 13, 5, 78, 78, 48, 48, 13, 13, 8, 8, 5, 17, 23, 2, 15, 5, 7, 9, 6, {65,79,65}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Portuguese/Latin/Angola
+ { 231, 66, 43, 0, 0, 414, 414, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 14, 15, 958, 78, 10, 0,18374,18374,18499,18499,18486,18486, 569, 590, 0, 5, 22, 243, 4021, 4, 20, 5167, 5188, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 13, 5, 78, 78, 48, 48, 13, 13, 8, 8, 5, 17, 23, 1, 20, 5, 7, 9, 10, {67,86,69}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Portuguese/Latin/Cape Verde
+ { 231, 66, 73, 0, 0, 414, 414, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 14, 15, 958, 78, 10, 0,18374,18374,18499,18499,18486,18486, 569, 590, 0, 5, 22, 11, 4041, 4, 20, 5167, 5198, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 13, 5, 78, 78, 48, 48, 13, 13, 8, 8, 5, 17, 23, 4, 17, 5, 7, 9, 16, {88,65,70}, 0, 0, 1, 6, 7, 2, 3, 3 }, // Portuguese/Latin/Equatorial Guinea
+ { 231, 66, 101, 0, 0, 414, 414, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 14, 15, 958, 78, 10, 0,18374,18374,18499,18499,18486,18486, 569, 590, 0, 5, 22, 127, 4058, 4, 20, 5167, 5214, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 13, 5, 78, 78, 48, 48, 13, 13, 8, 8, 5, 17, 23, 5, 18, 5, 7, 9, 12, {88,79,70}, 0, 0, 1, 6, 7, 2, 3, 3 }, // Portuguese/Latin/Guinea-Bissau
+ { 231, 66, 138, 0, 0, 414, 414, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 14, 15, 958, 78, 10, 0,18374,18374,18499,18499,18486,18486, 569, 590, 0, 5, 22, 22, 405, 4, 20, 5167, 5226, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 13, 5, 78, 78, 48, 48, 13, 13, 8, 8, 5, 17, 23, 1, 4, 5, 7, 9, 10, {69,85,82}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Portuguese/Latin/Luxembourg
+ { 231, 66, 139, 0, 0, 414, 414, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 14, 15, 958, 78, 23, 38,18374,18374,18499,18499,18486,18486, 569, 590, 0, 5, 22, 151, 4076, 4, 20, 5167, 5236, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 15, 7, 78, 78, 48, 48, 13, 13, 8, 8, 5, 17, 23, 4, 15, 5, 7, 9, 19, {77,79,80}, 2, 1, 7, 6, 7, 2, 3, 3 }, // Portuguese/Latin/Macao
+ { 231, 66, 160, 0, 0, 414, 414, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 14, 15, 958, 78, 10, 0,18374,18374,18499,18499,18486,18486, 569, 590, 0, 5, 22, 261, 4091, 4, 20, 5167, 5255, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 13, 5, 78, 78, 48, 48, 13, 13, 8, 8, 5, 17, 23, 3, 19, 5, 7, 9, 10, {77,90,78}, 2, 1, 7, 6, 7, 2, 3, 3 }, // Portuguese/Latin/Mozambique
+ { 231, 66, 188, 0, 0, 414, 414, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 14, 15, 958, 78, 10, 0,18374,18374,18499,18499,18486,18486, 569, 590, 0, 5, 22, 22, 405, 4, 20, 5265, 5282, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 13, 5, 78, 78, 48, 48, 13, 13, 8, 8, 5, 17, 23, 1, 4, 5, 7, 17, 8, {69,85,82}, 2, 1, 7, 6, 7, 2, 3, 3 }, // Portuguese/Latin/Portugal
+ { 231, 66, 204, 0, 0, 414, 414, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 14, 15, 958, 78, 10, 0,18374,18374,18499,18499,18486,18486, 569, 590, 0, 5, 22, 277, 4110, 4, 20, 5167, 5290, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 13, 5, 78, 78, 48, 48, 13, 13, 8, 8, 5, 17, 23, 2, 28, 5, 7, 9, 19, {83,84,78}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Portuguese/Latin/Sao Tome and Principe
+ { 231, 66, 226, 0, 0, 414, 414, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 14, 15, 958, 78, 10, 0,18374,18374,18499,18499,18486,18486, 569, 590, 0, 5, 22, 0, 4138, 4, 20, 5167, 5309, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 13, 5, 78, 78, 48, 48, 13, 13, 8, 8, 5, 17, 23, 0, 12, 5, 7, 9, 5, {67,72,70}, 2, 0, 1, 6, 7, 2, 3, 3 }, // Portuguese/Latin/Switzerland
+ { 231, 66, 232, 0, 0, 414, 414, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 14, 15, 958, 78, 10, 0,18374,18374,18499,18499,18486,18486, 569, 590, 0, 5, 22, 179, 4150, 4, 20, 5167, 5314, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 13, 5, 78, 78, 48, 48, 13, 13, 8, 8, 5, 17, 23, 3, 24, 5, 7, 9, 11, {85,83,68}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Portuguese/Latin/Timor-Leste
+ { 232, 66, 187, 0, 0, 986, 986, 6, 1, 9, 2, 3, 4, 5, 10, 13, 14, 13, 14, 1619, 49, 10, 0,18547,18547,18615,18615,18642,18642, 577, 598, 0, 5, 22, 275, 0, 4, 0, 5325, 5334, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 13, 5, 68, 68, 27, 27, 13, 13, 10, 14, 4, 17, 23, 2, 0, 5, 0, 9, 4, {80,76,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Prussian/Latin/Poland
+ { 233, 41, 110, 0, 0, 994, 994, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 129, 61, 76,18655,18655,18711,18711,18746,18746, 587, 612, 895, 5, 22, 120, 4174, 15, 0, 5338, 5344, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 15, 7, 56, 56, 35, 35, 22, 22, 6, 6, 4, 17, 23, 1, 11, 5, 0, 6, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Punjabi/Gurmukhi/India
+ { 233, 4, 178, 0, 0, 0, 0, 67, 21, 22, 23, 40, 35, 41, 44, 14, 15, 16, 17, 786, 186, 61, 76,18768,18768,18768,18768, 83, 83, 0, 0, 0, 5, 22, 78, 4185, 15, 0, 5348, 5140, 6, 6, 6, 6, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 18, 10, 15, 7, 36, 36, 36, 36, 13, 13, 2, 2, 4, 17, 23, 1, 6, 5, 0, 6, 7, {80,75,82}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Punjabi/Arabic/Pakistan
+ { 234, 66, 184, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 265, 129, 23, 38,18804,18804,18856,18856,18883,18883, 168, 168, 0, 5, 22, 279, 4191, 15, 0, 5354, 5362, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 52, 52, 27, 27, 13, 13, 4, 4, 4, 17, 23, 2, 11, 5, 0, 8, 4, {80,69,78}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Quechua/Latin/Peru
+ { 234, 66, 28, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 265, 129, 23, 38,18804,18804,18856,18856,18883,18883, 168, 168, 0, 5, 22, 281, 4202, 15, 0, 5354, 5366, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 52, 52, 27, 27, 13, 13, 4, 4, 4, 17, 23, 2, 9, 5, 0, 8, 7, {66,79,66}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Quechua/Latin/Bolivia
+ { 234, 66, 70, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 265, 129, 23, 38,18804,18804,18856,18856,18883,18883, 168, 168, 0, 5, 22, 10, 4211, 15, 0, 5354, 5373, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 52, 52, 27, 27, 13, 13, 4, 4, 4, 17, 23, 1, 15, 5, 0, 8, 7, {85,83,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Quechua/Latin/Ecuador
+ { 235, 66, 192, 0, 0, 1003, 1003, 6, 1, 0, 2, 3, 4, 5, 10, 13, 15, 11, 12, 0, 49, 10, 0,18896,18896,18943,18943, 6778, 6778, 168, 168, 899, 5, 22, 283, 4226, 4, 20, 5380, 5386, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 47, 47, 33, 33, 13, 13, 4, 4, 4, 17, 23, 3, 12, 5, 7, 6, 7, {82,79,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Romanian/Latin/Romania
+ { 235, 66, 154, 0, 0, 1003, 1003, 6, 1, 0, 2, 3, 4, 5, 10, 13, 15, 11, 12, 0, 49, 10, 0,18896,18896,18976,18976,19003,19003, 168, 168, 899, 5, 22, 18, 4238, 4, 20, 5380, 5393, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 47, 47, 27, 27, 15, 15, 4, 4, 4, 17, 23, 1, 15, 5, 7, 6, 17, {77,68,76}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Romanian/Latin/Moldova
+ { 236, 66, 226, 0, 0, 414, 414, 6, 0, 17, 2, 3, 48, 5, 10, 11, 12, 19, 20, 1646, 394, 10, 0,19018,19018,19073,19073,19095,19095, 0, 0, 0, 5, 22, 0, 4253, 4, 0, 5410, 5419, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 8, 13, 5, 55, 55, 22, 22, 13, 13, 2, 2, 5, 17, 23, 0, 13, 5, 0, 9, 6, {67,72,70}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Romansh/Latin/Switzerland
+ { 237, 66, 230, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0,19108,19108,19172,19172,14208,14208, 593, 618, 0, 5, 22, 121, 4266, 2, 0, 5425, 2268, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 64, 64, 28, 28, 13, 13, 8, 7, 4, 17, 23, 3, 18, 4, 0, 9, 8, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Rombo/Latin/Tanzania
+ { 238, 66, 38, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 10, 15, 15, 17, 17, 113, 129, 10, 0,19200,19200,19288,19288, 83, 83, 601, 625, 0, 5, 22, 182, 4284, 0, 0, 5434, 5442, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 88, 88, 33, 33, 13, 13, 5, 5, 4, 17, 23, 3, 20, 4, 0, 8, 8, {66,73,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Rundi/Latin/Burundi
+ { 239, 27, 193, 0, 0, 150, 150, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 13, 14, 350, 49, 10, 0,19321,19321,19382,19382,19402,19402, 0, 0, 196, 841, 22, 133, 4304, 4, 0, 5450, 5457, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 10, 13, 5, 61, 61, 20, 20, 13, 13, 2, 2, 5, 17, 23, 1, 16, 5, 0, 7, 6, {82,85,66}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Russian/Cyrillic/Russia
+ { 239, 27, 22, 0, 0, 150, 150, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 13, 14, 350, 49, 10, 0,19321,19321,19382,19382,19402,19402, 0, 0, 196, 841, 22, 1, 4320, 4, 0, 5450, 618, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 10, 13, 5, 61, 61, 20, 20, 13, 13, 2, 2, 5, 17, 23, 2, 17, 5, 0, 7, 8, {66,89,78}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Russian/Cyrillic/Belarus
+ { 239, 27, 123, 0, 0, 150, 150, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 13, 14, 350, 49, 10, 0,19321,19321,19382,19382,19402,19402, 0, 0, 196, 841, 22, 244, 4337, 4, 0, 5450, 5463, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 10, 13, 5, 61, 61, 20, 20, 13, 13, 2, 2, 5, 17, 23, 1, 15, 5, 0, 7, 9, {75,90,84}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Russian/Cyrillic/Kazakhstan
+ { 239, 27, 128, 0, 0, 150, 150, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 13, 14, 350, 49, 10, 0,19321,19321,19382,19382,19402,19402, 0, 0, 196, 841, 22, 251, 4352, 4, 0, 5450, 5472, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 10, 13, 5, 61, 61, 20, 20, 13, 13, 2, 2, 5, 17, 23, 3, 14, 5, 0, 7, 8, {75,71,83}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Russian/Cyrillic/Kyrgyzstan
+ { 239, 27, 154, 0, 0, 150, 150, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 13, 14, 350, 49, 10, 0,19321,19321,19382,19382,19402,19402, 0, 0, 196, 841, 22, 18, 4366, 4, 0, 5450, 5480, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 10, 13, 5, 61, 61, 20, 20, 13, 13, 2, 2, 5, 17, 23, 1, 14, 5, 0, 7, 7, {77,68,76}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Russian/Cyrillic/Moldova
+ { 239, 27, 244, 0, 0, 150, 150, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 13, 14, 350, 49, 10, 0,19321,19321,19382,19382,19402,19402, 0, 0, 196, 841, 22, 286, 4380, 4, 0, 5450, 5487, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 10, 13, 5, 61, 61, 20, 20, 13, 13, 2, 2, 5, 17, 23, 1, 17, 5, 0, 7, 7, {85,65,72}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Russian/Cyrillic/Ukraine
+ { 240, 66, 230, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0,13800,13800,13861,13861, 1284, 1284, 430, 446, 0, 5, 22, 121, 3492, 0, 0, 5494, 2268, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 61, 61, 27, 27, 13, 13, 5, 9, 4, 17, 23, 3, 20, 4, 0, 6, 8, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Rwa/Latin/Tanzania
+ { 241, 66, 74, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 59, 78, 23, 38,19415,19415,19470,19470,19497,19497, 0, 0, 0, 5, 22, 6, 0, 2, 0, 5500, 34, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 8, 15, 7, 55, 55, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 0, 4, 0, 4, 7, {69,82,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Saho/Latin/Eritrea
+ { 242, 27, 193, 0, 0, 1011, 1011, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 13, 14, 1669, 344, 10, 0,19510,19510,19580,19580,19600,19600, 606, 630, 903, 908, 22, 133, 4397, 4, 0, 5504, 5513, 6, 6, 11, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 30, 6, 13, 5, 70, 70, 20, 20, 13, 13, 2, 2, 5, 17, 23, 1, 20, 5, 0, 9, 9, {82,85,66}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Sakha/Cyrillic/Russia
+ { 243, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0,19613,19613,19717,19717,19744,19744, 608, 632, 0, 5, 22, 176, 4417, 2, 9, 5522, 1307, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5,104,104, 27, 27, 13, 13, 7, 5, 4, 17, 23, 3, 18, 4, 6, 8, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Samburu/Latin/Kenya
+ { 245, 66, 46, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 10, 11, 12, 14, 15, 113, 129, 10, 0,19757,19757,19822,19822,19849,19849, 615, 637, 0, 5, 22, 11, 4435, 2, 65, 5530, 5535, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 65, 65, 27, 27, 13, 13, 2, 2, 4, 17, 23, 4, 18, 4, 5, 5, 22, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Sango/Latin/Central African Republic
+ { 246, 66, 230, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0,19862,19862,19921,19921,19948,19948, 617, 639, 0, 5, 22, 121, 4453, 0, 0, 5557, 5566, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 59, 59, 27, 27, 13, 13, 9, 9, 4, 17, 23, 3, 18, 4, 0, 9, 9, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Sangu/Latin/Tanzania
+ { 247, 29, 110, 0, 0, 1022, 1032, 6, 0, 1, 2, 49, 4, 5, 10, 14, 15, 16, 17, 0, 129, 61, 76,19961,19961, 8574, 8574, 8605, 8605, 484, 505, 0, 5, 22, 120, 4471, 15, 0, 5575, 5587, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 15, 7, 66, 66, 31, 31, 18, 18, 9, 7, 4, 17, 23, 1, 15, 5, 0, 12, 5, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Sanskrit/Devanagari/India
+ { 248, 93, 110, 0, 0, 0, 0, 6, 0, 1, 2, 84, 4, 5, 10, 14, 15, 16, 17, 0, 129, 61, 76,20027,20027,20068,20068,20093,20093, 626, 648, 0, 5, 22, 120, 4486, 15, 0, 5592, 5599, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 15, 7, 41, 41, 25, 25, 13, 13, 5, 5, 4, 17, 23, 1, 16, 5, 0, 7, 6, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Santali/Ol Chiki/India
+ { 248, 29, 110, 0, 0, 0, 0, 6, 0, 1, 2, 49, 4, 5, 10, 14, 15, 16, 17, 0, 129, 61, 76, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 120, 0, 15, 0, 5605, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 15, 7, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 8, 0, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Santali/Devanagari/India
+ { 249, 66, 117, 0, 0, 414, 414, 6, 1, 0, 2, 3, 4, 5, 10, 11, 12, 14, 15, 1699, 186, 10, 0,20106,20106,20160,20160,20187,20187, 0, 0, 0, 5, 22, 22, 4502, 4, 0, 5613, 813, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 31, 10, 13, 5, 54, 54, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 0, 5, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Sardinian/Latin/Italy
+ { 251, 66, 160, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 129, 10, 0,20200,20200,20254,20254,20281,20281, 0, 0, 0, 5, 22, 261, 4506, 0, 0, 5618, 5255, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 13, 5, 54, 54, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 21, 4, 0, 4, 10, {77,90,78}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Sena/Latin/Mozambique
+ { 252, 27, 207, 0, 0, 150, 150, 6, 1, 0, 2, 3, 4, 5, 10, 13, 14, 16, 16, 404, 454, 10, 0,20294,20294,20345,20345, 2891, 2891, 0, 0, 925, 5, 22, 0, 4527, 4, 20, 5622, 5628, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 7, 13, 5, 51, 51, 27, 27, 13, 13, 2, 2, 7, 17, 23, 0, 12, 5, 7, 6, 6, {82,83,68}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Serbian/Cyrillic/Serbia
+ { 252, 27, 29, 0, 0, 150, 150, 6, 1, 0, 2, 3, 4, 5, 10, 13, 14, 16, 16, 404, 454, 10, 0, 2809, 2809, 2864, 2864, 2891, 2891, 104, 653, 925, 5, 22, 137, 4539, 4, 20, 5622, 713, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 7, 13, 5, 55, 55, 27, 27, 13, 13, 11, 8, 7, 17, 23, 2, 40, 5, 7, 6, 19, {66,65,77}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Serbian/Cyrillic/Bosnia and Herzegovina
+ { 252, 27, 126, 0, 0, 150, 150, 6, 1, 0, 2, 3, 4, 5, 10, 13, 14, 16, 16, 404, 454, 10, 0,20294,20294,20345,20345, 2891, 2891, 0, 0, 925, 5, 22, 22, 4579, 4, 20, 5622, 5634, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 7, 13, 5, 51, 51, 27, 27, 13, 13, 2, 2, 7, 17, 23, 1, 4, 5, 7, 6, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Serbian/Cyrillic/Kosovo
+ { 252, 27, 157, 0, 0, 150, 150, 6, 1, 0, 2, 3, 4, 5, 10, 13, 14, 16, 16, 404, 454, 10, 0,20372,20372,20345,20345, 2891, 2891, 104, 653, 925, 5, 22, 22, 4579, 4, 20, 5622, 5640, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 7, 13, 5, 54, 54, 27, 27, 13, 13, 11, 8, 7, 17, 23, 1, 4, 5, 7, 6, 9, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Serbian/Cyrillic/Montenegro
+ { 252, 66, 29, 0, 0, 143, 143, 6, 1, 0, 2, 3, 4, 5, 10, 13, 14, 16, 16, 404, 454, 10, 0, 2699, 2699, 2756, 2756, 2783, 2783, 631, 661, 218, 5, 22, 135, 597, 4, 20, 5649, 686, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 7, 13, 5, 57, 57, 27, 27, 13, 13, 11, 8, 7, 17, 23, 2, 40, 5, 7, 6, 19, {66,65,77}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Serbian/Latin/Bosnia and Herzegovina
+ { 252, 66, 126, 0, 0, 143, 143, 6, 1, 0, 2, 3, 4, 5, 10, 13, 14, 16, 16, 404, 454, 10, 0,20426,20426,20479,20479, 2783, 2783, 0, 0, 218, 5, 22, 22, 4583, 4, 20, 5649, 5655, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 7, 13, 5, 53, 53, 27, 27, 13, 13, 2, 2, 7, 17, 23, 1, 4, 5, 7, 6, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Serbian/Latin/Kosovo
+ { 252, 66, 157, 0, 0, 143, 143, 6, 1, 0, 2, 3, 4, 5, 10, 13, 14, 16, 16, 404, 454, 10, 0,20506,20506,20479,20479, 2783, 2783, 631, 661, 218, 5, 22, 22, 4583, 4, 20, 5649, 5661, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 7, 13, 5, 56, 56, 27, 27, 13, 13, 11, 8, 7, 17, 23, 1, 4, 5, 7, 6, 9, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Serbian/Latin/Montenegro
+ { 252, 66, 207, 0, 0, 143, 143, 6, 1, 0, 2, 3, 4, 5, 10, 13, 14, 16, 16, 404, 454, 10, 0,20426,20426,20479,20479, 2783, 2783, 0, 0, 218, 5, 22, 0, 4587, 4, 20, 5649, 5670, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 7, 13, 5, 53, 53, 27, 27, 13, 13, 2, 2, 7, 17, 23, 0, 12, 5, 7, 6, 6, {82,83,68}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Serbian/Latin/Serbia
+ { 253, 66, 230, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0,20562,20562,20624,20624,20651,20651, 642, 669, 0, 5, 22, 121, 4599, 0, 0, 5676, 2268, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 62, 62, 27, 27, 13, 13, 5, 8, 4, 17, 23, 3, 20, 4, 0, 9, 8, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Shambala/Latin/Tanzania
+ { 254, 66, 261, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 15, 15, 17, 17, 163, 103, 10, 0,20664,20664,20718,20718,20745,20745, 0, 0, 0, 5, 22, 179, 4619, 2, 9, 5685, 2434, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 54, 54, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 15, 4, 6, 8, 8, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Shona/Latin/Zimbabwe
+ { 255, 141, 50, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0,20758,20758,20785,20785,20805,20805, 647, 677, 0, 5, 22, 150, 0, 15, 0, 5693, 5696, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 20, 20, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 3, 2, {67,78,89}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Sichuan Yi/Yi/China
+ { 256, 66, 117, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0,20818,20818,20818,20818, 83, 83, 0, 0, 0, 5, 22, 22, 0, 15, 0, 5698, 3728, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 62, 62, 62, 62, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 9, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Sicilian/Latin/Italy
+ { 257, 66, 77, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 59, 78, 23, 38,20880,20880,20930,20930,20957,20957, 0, 0, 0, 5, 22, 1, 0, 2, 0, 5707, 5718, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 8, 15, 7, 50, 50, 27, 27, 13, 13, 2, 2, 4, 17, 23, 2, 0, 4, 0, 11, 11, {69,84,66}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Sidamo/Latin/Ethiopia
+ { 258, 66, 187, 0, 0, 143, 143, 6, 1, 9, 2, 3, 4, 5, 10, 13, 15, 12, 11, 0, 49, 10, 0,20970,20970,21030,21030,13193,13193, 649, 679, 311, 5, 22, 275, 0, 15, 0, 5729, 5161, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 60, 60, 27, 27, 13, 13, 11, 11, 5, 17, 23, 2, 0, 5, 0, 7, 6, {80,76,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Silesian/Latin/Poland
+ { 259, 4, 178, 0, 0, 1041, 1049, 67, 21, 22, 23, 25, 26, 28, 59, 14, 15, 16, 17, 549, 103, 61, 76,21057,21057,21057,21057,21091,21091, 660, 690, 932, 938, 22, 196, 4634, 4, 0, 5736, 5740, 6, 6, 8, 7, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 18, 10, 15, 7, 34, 34, 34, 34, 30, 30, 11, 11, 6, 25, 23, 2, 12, 5, 0, 4, 7, {80,75,82}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Sindhi/Arabic/Pakistan
+ { 259, 29, 110, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 567, 61, 76,21121,21148,21189,21211,21239,21239, 671, 701, 0, 5, 22, 120, 4646, 15, 0, 5747, 664, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 27, 41, 22, 28, 20, 20, 8, 6, 4, 17, 23, 1, 17, 5, 0, 6, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Sindhi/Devanagari/India
+ { 260, 119, 221, 0, 0, 1056, 1065, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 212, 212,21259,21259,21320,21320,21358,21358, 679, 707, 963, 968, 22, 287, 4663, 2, 9, 5753, 5758, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 61, 61, 38, 38, 18, 18, 5, 4, 5, 42, 23, 3, 17, 4, 6, 5, 11, {76,75,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Sinhala/Sinhala/Sri Lanka
+ { 261, 66, 83, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 22, 0, 15, 0, 5769, 5779, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 10, 12, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Skolt Sami/Latin/Finland
+ { 262, 66, 212, 0, 0, 781, 282, 6, 1, 9, 2, 3, 4, 5, 6, 13, 14, 18, 16, 698, 423, 11, 1,21376,21376,21427,21427,21447,21447, 0, 0, 311, 5, 22, 22, 405, 4, 20, 5791, 5801, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 4, 51, 51, 20, 20, 13, 13, 2, 2, 5, 17, 23, 1, 4, 5, 7, 10, 9, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Slovak/Latin/Slovakia
+ { 263, 66, 213, 0, 0, 1073, 1073, 6, 1, 0, 2, 3, 48, 5, 6, 13, 14, 18, 16, 404, 423, 10, 0,21460,21460,21511,21511,21545,21545, 172, 711, 50, 5, 22, 22, 4680, 4, 20, 5810, 5821, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 51, 51, 34, 34, 13, 13, 4, 4, 4, 17, 23, 1, 4, 5, 7, 11, 9, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Slovenian/Latin/Slovenia
+ { 264, 66, 243, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0,21558,21558,21622,21622,21656,21656, 684, 715, 0, 5, 22, 147, 2829, 4, 0, 5830, 3330, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 64, 64, 34, 34, 13, 13, 6, 6, 4, 17, 23, 3, 19, 5, 0, 7, 7, {85,71,88}, 0, 0, 1, 7, 7, 1, 3, 3 }, // Soga/Latin/Uganda
+ { 265, 66, 215, 0, 0, 1081, 1081, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 78, 23, 38,21669,21669,21715,21715,21746,21746, 690, 721, 1010, 1016, 22, 93, 4684, 2, 9, 5837, 5845, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 15, 7, 46, 46, 31, 31, 14, 14, 2, 2, 6, 17, 23, 1, 20, 4, 6, 8, 10, {83,79,83}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Somali/Latin/Somalia
+ { 265, 66, 67, 0, 0, 1081, 1081, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 78, 23, 38,21669,21669,21715,21715,21746,21746, 690, 721, 1010, 1016, 22, 3, 4704, 2, 9, 5837, 5855, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 15, 7, 46, 46, 31, 31, 14, 14, 2, 2, 6, 17, 23, 3, 13, 4, 6, 8, 7, {68,74,70}, 0, 0, 6, 6, 7, 1, 3, 3 }, // Somali/Latin/Djibouti
+ { 265, 66, 77, 0, 0, 1081, 1081, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 78, 23, 38,21669,21669,21715,21715,21746,21746, 690, 721, 1010, 1016, 22, 1, 4717, 2, 9, 5837, 5862, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 15, 7, 46, 46, 31, 31, 14, 14, 2, 2, 6, 17, 23, 2, 15, 4, 6, 8, 8, {69,84,66}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Somali/Latin/Ethiopia
+ { 265, 66, 124, 0, 0, 1081, 1081, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 78, 10, 0,21669,21669,21715,21715,21746,21746, 690, 721, 1010, 1016, 22, 176, 4732, 2, 9, 5837, 1307, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 46, 46, 31, 31, 14, 14, 2, 2, 6, 17, 23, 3, 15, 4, 6, 8, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Somali/Latin/Kenya
+ { 266, 4, 112, 0, 0, 0, 0, 67, 21, 22, 23, 25, 26, 28, 59, 11, 12, 19, 20, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 4, 0, 5870, 0, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 11, 0, {73,82,82}, 0, 0, 6, 5, 5, 1, 3, 3 }, // Southern Kurdish/Arabic/Iran
+ { 266, 4, 113, 0, 0, 0, 0, 67, 21, 22, 23, 25, 26, 28, 59, 11, 12, 19, 20, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 4, 0, 5870, 0, 6, 6, 6, 6, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 11, 0, {73,81,68}, 0, 0, 6, 5, 6, 1, 3, 3 }, // Southern Kurdish/Arabic/Iraq
+ { 267, 66, 225, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 160, 0, 15, 0, 5881, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 2, 0, 5, 0, 19, 0, {83,69,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Southern Sami/Latin/Sweden
+ { 267, 66, 175, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 160, 0, 15, 0, 5881, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 2, 0, 5, 0, 19, 0, {78,79,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Southern Sami/Latin/Norway
+ { 268, 66, 216, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 16, 17, 14, 15, 163, 103, 10, 0,21760,21760,21820,21820, 83, 83, 0, 0, 0, 5, 22, 9, 0, 2, 0, 4912, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 60, 60, 26, 26, 13, 13, 2, 2, 4, 17, 23, 1, 0, 4, 0, 7, 0, {90,65,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Southern Sotho/Latin/South Africa
+ { 268, 66, 133, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 16, 17, 14, 15, 163, 103, 23, 38,21760,21760,21820,21820, 83, 83, 0, 0, 0, 5, 22, 9, 0, 2, 0, 4912, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 60, 60, 26, 26, 13, 13, 2, 2, 4, 17, 23, 1, 0, 4, 0, 7, 0, {90,65,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Southern Sotho/Latin/Lesotho
+ { 269, 66, 216, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 16, 17, 14, 15, 163, 103, 10, 0,21846,21846,21911,21911, 83, 83, 0, 0, 0, 5, 22, 9, 0, 2, 0, 4940, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 65, 65, 26, 26, 13, 13, 2, 2, 4, 17, 23, 1, 0, 4, 0, 10, 0, {90,65,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // South Ndebele/Latin/South Africa
+ { 270, 66, 220, 0, 0, 68, 68, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 129, 99, 1,21937,21937,21989,21989,18883,18883, 132, 128, 0, 5, 22, 22, 405, 4, 0, 5900, 455, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 14, 4, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 4, 5, 0, 17, 6, {69,85,82}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Spanish/Latin/Spain
+ { 270, 66, 11, 0, 0, 68, 68, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 129, 23, 38,21937,21937,21989,21989, 6778, 6778, 132, 128, 0, 5, 22, 10, 4747, 15, 58, 5900, 5917, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 15, 7, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 14, 5, 7, 7, 9, {65,82,83}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Spanish/Latin/Argentina
+ { 270, 66, 24, 0, 0, 68, 68, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 129, 10, 0,21937,21937,21989,21989, 6778, 6778, 168, 168, 0, 5, 22, 10, 4761, 2, 0, 5900, 5926, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 13, 5, 52, 52, 27, 27, 13, 13, 4, 4, 5, 17, 23, 1, 14, 4, 0, 7, 6, {66,90,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Belize
+ { 270, 66, 28, 0, 0, 68, 68, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 129, 23, 38,21937,21937,21989,21989, 6778, 6778, 132, 128, 0, 5, 22, 281, 4775, 2, 0, 5900, 5366, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 15, 7, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 2, 9, 4, 0, 7, 7, {66,79,66}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Spanish/Latin/Bolivia
+ { 270, 66, 32, 0, 0, 68, 68, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 129, 10, 0,21937,21937,21989,21989, 6778, 6778, 168, 168, 0, 5, 22, 9, 4784, 2, 0, 5900, 5176, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 13, 5, 52, 52, 27, 27, 13, 13, 4, 4, 5, 17, 23, 2, 14, 4, 0, 7, 6, {66,82,76}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Brazil
+ { 270, 66, 42, 0, 0, 68, 68, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 129, 99, 1,21937,21937,21989,21989,18883,18883, 132, 128, 0, 5, 22, 22, 405, 4, 0, 5900, 5932, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 14, 4, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 4, 5, 0, 7, 8, {69,85,82}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Spanish/Latin/Canary Islands
+ { 270, 66, 47, 0, 0, 68, 68, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 129, 99, 1,21937,21937,21989,21989,18883,18883, 132, 128, 0, 5, 22, 22, 405, 4, 0, 5900, 5940, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 14, 4, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 4, 5, 0, 7, 15, {69,85,82}, 2, 1, 1, 6, 7, 2, 3, 3 }, // Spanish/Latin/Ceuta and Melilla
+ { 270, 66, 49, 0, 0, 68, 68, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 394, 23, 38,21937,21937,21989,21989, 6778, 6778, 132, 128, 0, 5, 22, 10, 4798, 2, 65, 5900, 5955, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 15, 7, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 12, 4, 5, 7, 5, {67,76,80}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Spanish/Latin/Chile
+ { 270, 66, 54, 0, 0, 68, 68, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 79, 23, 38,21937,21937,21989,21989, 9387,22016, 132, 128, 0, 5, 22, 10, 4810, 15, 0, 5900, 5960, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 7, 15, 7, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 15, 5, 0, 7, 8, {67,79,80}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Colombia
+ { 270, 66, 59, 0, 0, 68, 68, 6, 1, 9, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 129, 23, 38,21937,21937,21989,21989, 6778, 6778, 132, 128, 0, 5, 22, 290, 4825, 2, 0, 5900, 5968, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 15, 7, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 19, 4, 0, 7, 10, {67,82,67}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Spanish/Latin/Costa Rica
+ { 270, 66, 61, 0, 0, 68, 68, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 129, 23, 38,21937,21937,21989,21989, 6778, 6778, 168, 168, 0, 5, 22, 10, 4844, 2, 0, 5900, 5978, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 15, 7, 52, 52, 27, 27, 13, 13, 4, 4, 5, 17, 23, 1, 11, 4, 0, 7, 4, {67,85,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Spanish/Latin/Cuba
+ { 270, 66, 69, 0, 0, 68, 68, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 129, 23, 38,21937,21937,21989,21989, 6778, 6778, 132, 128, 0, 5, 22, 291, 4855, 2, 9, 5900, 5982, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 15, 7, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 3, 15, 4, 6, 7, 20, {68,79,80}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Dominican Republic
+ { 270, 66, 70, 0, 0, 68, 68, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 129, 23, 38,21937,21937,21989,21989, 6778, 6778, 132, 128, 0, 5, 22, 10, 4870, 2, 65, 5900, 5373, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 15, 7, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 20, 4, 5, 7, 7, {85,83,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Spanish/Latin/Ecuador
+ { 270, 66, 72, 0, 0, 68, 68, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 129, 23, 38,21937,21937,21989,21989, 6778, 6778, 132, 128, 0, 5, 22, 10, 4870, 2, 0, 5900, 6002, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 15, 7, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 20, 4, 0, 7, 11, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/El Salvador
+ { 270, 66, 73, 0, 0, 68, 68, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 129, 99, 1,21937,21937,21989,21989,18883,18883, 132, 128, 0, 5, 22, 11, 4890, 2, 0, 5900, 6013, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 14, 4, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 4, 28, 4, 0, 7, 17, {88,65,70}, 0, 0, 1, 6, 7, 2, 3, 3 }, // Spanish/Latin/Equatorial Guinea
+ { 270, 66, 99, 0, 0, 68, 68, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 79, 23, 38,21937,21937,21989,21989, 6778, 6778, 132, 128, 0, 5, 22, 246, 4918, 2, 0, 5900, 6030, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 7, 15, 7, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 7, 4, 0, 7, 9, {71,84,81}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Guatemala
+ { 270, 66, 106, 0, 0, 68, 68, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 1730, 129, 23, 38,21937,21937,21989,21989, 6778, 6778, 132, 128, 0, 5, 22, 18, 4925, 2, 0, 5900, 6039, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 15, 7, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 17, 4, 0, 7, 8, {72,78,76}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Honduras
+ { 270, 66, 130, 0, 0, 68, 68, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 129, 23, 38,21937,21937,21989,21989, 6778, 6778, 168, 168, 0, 5, 22, 0, 0, 2, 0, 6047, 6070, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 15, 7, 52, 52, 27, 27, 13, 13, 4, 4, 5, 17, 23, 0, 0, 4, 0, 23, 13, {0,0,0}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Spanish/Latin/Latin America
+ { 270, 66, 152, 0, 0, 68, 68, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 78, 23, 38,21937,21937,21989,21989, 6778, 6778, 168, 168, 0, 5, 22, 10, 4942, 2, 0, 6083, 6100, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 15, 7, 52, 52, 27, 27, 13, 13, 4, 4, 5, 17, 23, 1, 13, 4, 0, 17, 6, {77,88,78}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Mexico
+ { 270, 66, 168, 0, 0, 68, 68, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 129, 23, 38,21937,21937,21989,21989, 6778, 6778, 132, 128, 0, 5, 22, 294, 4955, 2, 0, 5900, 6106, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 15, 7, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 2, 20, 4, 0, 7, 9, {78,73,79}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Nicaragua
+ { 270, 66, 181, 0, 0, 68, 68, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 1121, 23, 38,21937,21937,21989,21989, 6778, 6778, 132, 128, 0, 5, 22, 296, 4975, 2, 0, 5900, 6115, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 15, 7, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 3, 15, 4, 0, 7, 6, {80,65,66}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Panama
+ { 270, 66, 183, 0, 0, 68, 68, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 129, 23, 38,21937,21937,21989,21989, 6778, 6778, 132, 128, 0, 5, 22, 299, 4990, 15, 86, 5900, 6121, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 15, 7, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 3, 17, 5, 6, 7, 8, {80,89,71}, 0, 0, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Paraguay
+ { 270, 66, 184, 0, 0, 68, 68, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 79, 23, 38,21937,21937,21989,21989, 6778, 6778, 132, 128, 0, 5, 22, 279, 5007, 15, 0, 5900, 5362, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 7, 15, 7, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 2, 11, 5, 0, 7, 4, {80,69,78}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Peru
+ { 270, 66, 185, 0, 0, 68, 68, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 129, 23, 38,21937,21937,21989,21989,18883,18883, 132, 128, 0, 5, 22, 146, 5018, 4, 0, 5900, 6129, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 15, 7, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 13, 5, 0, 7, 9, {80,72,80}, 2, 1, 7, 6, 7, 2, 3, 3 }, // Spanish/Latin/Philippines
+ { 270, 66, 189, 0, 0, 68, 68, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 1121, 23, 38,21937,21937,21989,21989, 6778, 6778, 132, 128, 0, 5, 22, 10, 4870, 2, 0, 5900, 2080, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 15, 7, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 20, 4, 0, 7, 11, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Puerto Rico
+ { 270, 66, 248, 0, 0, 68, 68, 6, 0, 1, 2, 3, 4, 5, 10, 11, 12, 14, 15, 958, 129, 23, 38,21937,21937,21989,21989, 6778, 6778, 168, 168, 0, 5, 22, 10, 4870, 2, 0, 5900, 6138, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 15, 7, 52, 52, 27, 27, 13, 13, 4, 4, 5, 17, 23, 1, 20, 4, 0, 7, 14, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/United States
+ { 270, 66, 250, 0, 0, 68, 68, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 129, 23, 38,21937,21937,21989,21989, 6778, 6778, 132, 128, 0, 5, 22, 10, 5031, 15, 58, 5900, 6152, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 15, 7, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 1, 13, 5, 7, 7, 7, {85,89,85}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Spanish/Latin/Uruguay
+ { 270, 66, 254, 0, 0, 68, 68, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 958, 129, 23, 38,21937,21937,21989,21989, 6778, 6778, 132, 128, 0, 5, 22, 302, 5044, 2, 65, 5900, 6159, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 6, 15, 7, 52, 52, 27, 27, 13, 13, 5, 5, 5, 17, 23, 4, 16, 4, 5, 7, 9, {86,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Spanish/Latin/Venezuela
+ { 271, 135, 159, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 13, 15, 113, 129, 10, 0,22029,22029,22076,22076, 83, 83, 692, 723, 0, 5, 22, 0, 5060, 0, 0, 6168, 6176, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 47, 47, 29, 29, 13, 13, 6, 8, 4, 17, 23, 0, 14, 4, 0, 8, 6, {77,65,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Standard Moroccan Tamazight/Tifinagh/Morocco
+ { 272, 66, 111, 0, 0, 1090, 1103, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 129, 213, 213,22105,22105,22148,22148, 9291, 9291, 0, 0, 0, 5, 22, 186, 5074, 2, 0, 6182, 1776, 6, 6, 13, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 12, 4, 43, 43, 27, 27, 13, 13, 2, 2, 4, 17, 23, 2, 15, 4, 0, 10, 9, {73,68,82}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Sundanese/Latin/Indonesia
+ { 273, 66, 230, 0, 0, 566, 566, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 1198, 1198, 1198, 1198, 83, 83, 0, 0, 749, 1033, 22, 121, 3492, 15, 0, 6192, 2268, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 59, 59, 59, 59, 13, 13, 2, 2, 5, 51, 23, 3, 20, 5, 0, 9, 8, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Swahili/Latin/Tanzania
+ { 273, 66, 57, 0, 0, 566, 566, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 1198, 1198, 1198, 1198, 83, 83, 0, 0, 749, 1033, 22, 11, 5089, 15, 0, 6192, 6201, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 59, 59, 59, 59, 13, 13, 2, 2, 5, 51, 23, 2, 16, 5, 0, 9, 32, {67,68,70}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Swahili/Latin/Congo - Kinshasa
+ { 273, 66, 124, 0, 0, 566, 566, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 1198, 1198, 1198, 1198, 83, 83, 0, 0, 749, 1033, 22, 176, 991, 15, 0, 6192, 1307, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 59, 59, 59, 59, 13, 13, 2, 2, 5, 51, 23, 3, 17, 5, 0, 9, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Swahili/Latin/Kenya
+ { 273, 66, 243, 0, 0, 566, 566, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0, 1198, 1198, 1198, 1198, 83, 83, 0, 0, 749, 1033, 22, 147, 5105, 15, 0, 6192, 983, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 59, 59, 59, 59, 13, 13, 2, 2, 5, 51, 23, 3, 18, 5, 0, 9, 6, {85,71,88}, 0, 0, 1, 7, 7, 1, 3, 3 }, // Swahili/Latin/Uganda
+ { 274, 66, 216, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 16, 17, 14, 15, 163, 103, 10, 0,22175,22175,22242,22242, 83, 83, 0, 0, 0, 5, 22, 9, 0, 2, 0, 6233, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 67, 67, 26, 26, 13, 13, 2, 2, 4, 17, 23, 1, 0, 4, 0, 7, 0, {90,65,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Swati/Latin/South Africa
+ { 274, 66, 76, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 16, 17, 14, 15, 163, 103, 23, 38,22175,22175,22242,22242, 83, 83, 0, 0, 0, 5, 22, 155, 0, 2, 0, 6233, 6240, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 67, 67, 26, 26, 13, 13, 2, 2, 4, 17, 23, 1, 0, 4, 0, 7, 8, {83,90,76}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Swati/Latin/Eswatini
+ { 275, 66, 225, 0, 0, 1115, 1115, 6, 1, 9, 2, 3, 48, 5, 63, 15, 15, 17, 17, 113, 103, 10, 0,22268,22268,22317,22317, 4874, 4874, 698, 731, 0, 5, 22, 160, 5123, 4, 0, 6248, 6255, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 16, 10, 13, 5, 49, 49, 28, 28, 13, 13, 2, 2, 4, 17, 23, 2, 12, 5, 0, 7, 7, {83,69,75}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Swedish/Latin/Sweden
+ { 275, 66, 2, 0, 0, 1115, 1115, 6, 1, 9, 2, 3, 48, 5, 63, 15, 15, 17, 17, 113, 103, 10, 0,22268,22268,22317,22317, 4874, 4874, 698, 731, 0, 5, 22, 22, 405, 4, 0, 6248, 6262, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 16, 10, 13, 5, 49, 49, 28, 28, 13, 13, 2, 2, 4, 17, 23, 1, 4, 5, 0, 7, 5, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Swedish/Latin/Aland Islands
+ { 275, 66, 83, 0, 0, 1115, 1115, 6, 1, 9, 2, 3, 48, 5, 63, 15, 15, 17, 17, 113, 103, 10, 0,22268,22268,22317,22317, 4874, 4874, 698, 731, 0, 5, 22, 22, 405, 4, 0, 6248, 1698, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 16, 10, 13, 5, 49, 49, 28, 28, 13, 13, 2, 2, 4, 17, 23, 1, 4, 5, 0, 7, 7, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Swedish/Latin/Finland
+ { 276, 66, 226, 0, 0, 463, 463, 6, 0, 17, 2, 3, 48, 5, 10, 11, 12, 19, 20, 404, 49, 10, 0,22345,22345,22407,22407, 4510, 4510, 700, 733, 0, 5, 22, 0, 5135, 4, 0, 6267, 6267, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 62, 62, 27, 27, 13, 13, 12, 11, 4, 17, 23, 0, 16, 5, 0, 16, 7, {67,72,70}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Swiss German/Latin/Switzerland
+ { 276, 66, 84, 0, 0, 463, 463, 6, 0, 17, 2, 3, 48, 5, 10, 11, 12, 19, 20, 404, 49, 10, 0,22345,22345,22407,22407, 4510, 4510, 700, 733, 0, 5, 22, 22, 83, 4, 0, 6267, 6283, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 62, 62, 27, 27, 13, 13, 12, 11, 4, 17, 23, 1, 4, 5, 0, 16, 10, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Swiss German/Latin/France
+ { 276, 66, 136, 0, 0, 463, 463, 6, 0, 17, 2, 3, 48, 5, 10, 11, 12, 19, 20, 404, 49, 10, 0,22345,22345,22407,22407, 4510, 4510, 700, 733, 0, 5, 22, 0, 5135, 4, 0, 6267, 6293, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 62, 62, 27, 27, 13, 13, 12, 11, 4, 17, 23, 0, 16, 5, 0, 16, 13, {67,72,70}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Swiss German/Latin/Liechtenstein
+ { 277, 123, 113, 1124, 1124, 1124, 1124, 6, 0, 1, 2, 3, 4, 5, 10, 15, 14, 17, 16, 1757, 395, 61, 76,22434,22434,22486,22486,22515,22515, 712, 744, 1084, 5, 22, 0, 0, 15, 0, 6306, 6312, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 9, 15, 7, 52, 52, 29, 29, 13, 13, 4, 4, 4, 17, 23, 0, 0, 5, 0, 6, 4, {73,81,68}, 0, 0, 6, 5, 6, 1, 3, 3 }, // Syriac/Syriac/Iraq
+ { 277, 123, 227, 1124, 1124, 1124, 1124, 6, 0, 1, 2, 3, 4, 5, 10, 15, 14, 17, 16, 1757, 395, 61, 76,22434,22434,22486,22486,22515,22515, 712, 744, 1084, 5, 22, 99, 0, 15, 0, 6306, 6316, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 9, 15, 7, 52, 52, 29, 29, 13, 13, 4, 4, 4, 17, 23, 5, 0, 5, 0, 6, 5, {83,89,80}, 0, 0, 6, 5, 6, 1, 3, 3 }, // Syriac/Syriac/Syria
+ { 278, 135, 159, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 13, 15, 113, 129, 10, 0,22528,22528,22076,22076, 83, 83, 692, 723, 0, 5, 22, 0, 5060, 0, 0, 6321, 6176, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 46, 46, 29, 29, 13, 13, 6, 8, 4, 17, 23, 0, 14, 4, 0, 7, 6, {77,65,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Tachelhit/Tifinagh/Morocco
+ { 278, 66, 159, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 13, 15, 113, 129, 10, 0,22574,22574,22621,22621, 83, 83, 716, 748, 0, 5, 22, 0, 5151, 0, 0, 6328, 6338, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 47, 47, 29, 29, 13, 13, 6, 8, 4, 17, 23, 0, 14, 4, 0, 10, 6, {77,65,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Tachelhit/Latin/Morocco
+ { 280, 127, 255, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 306, 0, 15, 0, 6344, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 4, 0, {86,78,68}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Tai Dam/Tai Viet/Vietnam
+ { 281, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0,22650,22650,22754,22754,22781,22781, 722, 756, 0, 5, 22, 176, 991, 2, 9, 6348, 1307, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5,104,104, 27, 27, 13, 13, 10, 10, 4, 17, 23, 3, 17, 4, 6, 7, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Taita/Latin/Kenya
+ { 282, 27, 229, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 12, 11, 16, 17, 786, 78, 10, 0,22794,22794,22848,22848,22875,22875, 0, 0, 0, 5, 22, 307, 5165, 4, 0, 6355, 6361, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 54, 54, 27, 27, 13, 13, 2, 2, 4, 17, 23, 4, 6, 5, 0, 6, 10, {84,74,83}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Tajik/Cyrillic/Tajikistan
+ { 283, 129, 110, 0, 0, 1130, 1130, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 265, 129, 127, 127,22888,22888,22936,22936,22974,22974, 0, 766, 1088, 5, 22, 120, 5171, 2, 9, 6371, 6376, 6, 6, 13, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 48, 48, 38, 38, 19, 19, 2, 8, 7, 17, 23, 1, 13, 4, 6, 5, 7, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Tamil/Tamil/India
+ { 283, 129, 143, 0, 0, 1130, 1130, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 265, 129, 127, 127,22888,22888,22936,22936,22974,22974, 0, 766, 1088, 5, 22, 192, 5184, 2, 9, 6371, 6383, 6, 6, 13, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 48, 48, 38, 38, 19, 19, 2, 8, 7, 17, 23, 2, 17, 4, 6, 5, 7, {77,89,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Tamil/Tamil/Malaysia
+ { 283, 129, 210, 0, 0, 1130, 1130, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 265, 129, 127, 127,22888,22888,22936,22936,22974,22974, 0, 766, 1088, 5, 22, 10, 5201, 2, 9, 6371, 6390, 6, 6, 13, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 48, 48, 38, 38, 19, 19, 2, 8, 7, 17, 23, 1, 17, 4, 6, 5, 11, {83,71,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Tamil/Tamil/Singapore
+ { 283, 129, 221, 0, 0, 1130, 1130, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 265, 129, 10, 0,22888,22888,22936,22936,22974,22974, 0, 766, 1088, 5, 22, 311, 5218, 2, 9, 6371, 6401, 6, 6, 13, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 13, 5, 48, 48, 38, 38, 19, 19, 2, 8, 7, 17, 23, 3, 13, 4, 6, 5, 6, {76,75,82}, 2, 1, 1, 6, 7, 1, 2, 3 }, // Tamil/Tamil/Sri Lanka
+ { 284, 66, 228, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 137, 103, 23, 38,22993,22993,23164,23164,23191,23191, 0, 0, 0, 5, 22, 314, 5231, 15, 0, 6407, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 10, 15, 7,171,171, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 11, 5, 0, 12, 0, {84,87,68}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Taroko/Latin/Taiwan
+ { 285, 66, 170, 0, 0, 0, 0, 6, 0, 9, 2, 3, 4, 5, 10, 14, 15, 16, 17, 113, 129, 10, 0,11682,11682,11735,11735,11762,11762, 732, 774, 0, 5, 22, 127, 3285, 0, 0, 6419, 6432, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 53, 53, 27, 27, 13, 13, 8, 10, 4, 17, 23, 5, 16, 4, 0, 13, 5, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Tasawaq/Latin/Niger
+ { 286, 27, 193, 0, 0, 1143, 1143, 6, 1, 9, 2, 3, 4, 5, 10, 14, 15, 16, 17, 1775, 49, 11, 1,23204,23204,23259,23259,23294,23294, 0, 0, 0, 5, 22, 133, 5242, 4, 0, 6437, 5457, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 10, 12, 4, 55, 55, 35, 35, 13, 13, 2, 2, 4, 17, 23, 1, 11, 5, 0, 5, 6, {82,85,66}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Tatar/Cyrillic/Russia
+ { 287, 131, 110, 0, 0, 1152, 1152, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 1798, 394, 61, 76,23307,23307,23366,23366,23397,23397, 0, 0, 1095, 1102, 22, 120, 5253, 2, 9, 6442, 6448, 6, 6, 11, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 15, 7, 59, 59, 31, 31, 17, 17, 2, 2, 7, 29, 23, 1, 14, 4, 6, 6, 8, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Telugu/Telugu/India
+ { 288, 66, 243, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0,23414,23414,23482,23482,23509,23509, 740, 784, 0, 5, 22, 147, 5267, 2, 9, 6456, 983, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 68, 68, 27, 27, 13, 13, 9, 6, 4, 17, 23, 3, 21, 4, 6, 6, 6, {85,71,88}, 0, 0, 1, 7, 7, 1, 3, 3 }, // Teso/Latin/Uganda
+ { 288, 66, 124, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0,23414,23414,23482,23482,23509,23509, 740, 784, 0, 5, 22, 176, 5288, 2, 9, 6456, 6462, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 68, 68, 27, 27, 13, 13, 9, 6, 4, 17, 23, 3, 20, 4, 6, 6, 5, {75,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Teso/Latin/Kenya
+ { 289, 133, 231, 24, 24, 1163, 1171, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 1816, 129, 542, 0,23522,23522,23589,23589,23611,23611, 749, 790, 1131, 5, 22, 317, 5308, 2, 9, 6467, 6467, 5, 5, 8, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 6, 31, 5, 67, 67, 22, 22, 15, 15, 10, 10, 4, 17, 23, 1, 3, 4, 6, 3, 3, {84,72,66}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Thai/Thai/Thailand
+ { 290, 134, 50, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 1835, 103, 10, 0,23626,23626,23704,23704,23754,23754, 759, 800, 0, 5, 22, 150, 5311, 15, 0, 6470, 6478, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 10, 13, 5, 78, 78, 50, 50, 26, 26, 7, 8, 4, 17, 23, 1, 6, 5, 0, 8, 6, {67,78,89}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Tibetan/Tibetan/China
+ { 290, 134, 110, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 1835, 103, 61, 76,23626,23626,23704,23704,23754,23754, 759, 800, 0, 5, 22, 120, 5317, 15, 0, 6470, 6484, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 10, 15, 7, 78, 78, 50, 50, 26, 26, 7, 8, 4, 17, 23, 1, 12, 5, 0, 8, 7, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Tibetan/Tibetan/India
+ { 291, 33, 74, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 1858, 78, 61, 76,23780,23780,23820,23820,23846,23846, 0, 0, 0, 5, 22, 6, 0, 2, 0, 6491, 671, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 8, 15, 7, 40, 40, 26, 26, 13, 13, 2, 2, 4, 17, 23, 3, 0, 4, 0, 3, 4, {69,82,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Tigre/Ethiopic/Eritrea
+ { 292, 33, 77, 38, 38, 1178, 1178, 6, 0, 1, 2, 3, 4, 5, 10, 11, 12, 14, 15, 1879, 78, 61, 76,23859,23859,23887,23887,23907,23907, 766, 808, 0, 5, 22, 1, 112, 2, 0, 6494, 143, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 15, 7, 28, 28, 20, 20, 13, 13, 4, 4, 4, 17, 23, 2, 2, 4, 0, 4, 5, {69,84,66}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Tigrinya/Ethiopic/Ethiopia
+ { 292, 33, 74, 38, 38, 1178, 1178, 6, 0, 1, 2, 3, 4, 5, 10, 16, 17, 14, 15, 1879, 78, 61, 76,23859,23859,23887,23887,23907,23907, 766, 808, 0, 5, 22, 6, 5329, 2, 0, 6494, 671, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 15, 7, 28, 28, 20, 20, 13, 13, 4, 4, 4, 17, 23, 3, 3, 4, 0, 4, 4, {69,82,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Tigrinya/Ethiopic/Eritrea
+ { 294, 66, 182, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 787, 78, 573, 589,23920,23920,23964,23964, 83, 83, 0, 0, 0, 5, 22, 0, 0, 4, 0, 6498, 6507, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 16, 8, 44, 44, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 9, 13, {80,71,75}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Tok Pisin/Latin/Papua New Guinea
+ { 295, 66, 235, 1185, 1185, 1185, 1185, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 113, 129, 23, 38,23991,23991,24050,24050,24078,24078, 770, 812, 1135, 1140, 1199, 205, 5332, 15, 0, 6520, 2283, 8, 8, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 6, 15, 7, 59, 59, 28, 28, 13, 13, 10, 6, 5, 59, 65, 2, 17, 5, 0, 13, 5, {84,79,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Tongan/Latin/Tonga
+ { 296, 66, 216, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 16, 17, 14, 15, 163, 103, 10, 0,24091,24091,24162,24162, 83, 83, 0, 0, 0, 5, 22, 9, 0, 15, 0, 6533, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 71, 71, 26, 26, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 8, 0, {90,65,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Tsonga/Latin/South Africa
+ { 297, 66, 216, 0, 0, 0, 0, 6, 0, 9, 2, 3, 4, 5, 10, 16, 17, 14, 15, 163, 103, 10, 0,24188,24188,24251,24251, 83, 83, 0, 0, 0, 5, 22, 9, 0, 2, 0, 6541, 6549, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 63, 63, 31, 31, 13, 13, 2, 2, 4, 17, 23, 1, 0, 4, 0, 8, 13, {90,65,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Tswana/Latin/South Africa
+ { 297, 66, 30, 0, 0, 0, 0, 6, 0, 9, 2, 3, 4, 5, 10, 16, 17, 14, 15, 163, 103, 10, 0,24188,24188,24251,24251, 83, 83, 0, 0, 0, 5, 22, 153, 0, 2, 0, 6541, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 63, 63, 31, 31, 13, 13, 2, 2, 4, 17, 23, 1, 0, 4, 0, 8, 0, {66,87,80}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Tswana/Latin/Botswana
+ { 298, 66, 239, 0, 0, 1193, 1193, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 1896, 50, 10, 0,24282,24282,24335,24335,24362,24362, 780, 818, 185, 5, 22, 126, 5349, 2, 9, 6562, 6568, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 9, 13, 5, 53, 53, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 11, 4, 6, 6, 7, {84,82,89}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Turkish/Latin/Turkey
+ { 298, 66, 63, 0, 0, 1193, 1193, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 1896, 50, 23, 38,24282,24282,24335,24335,24362,24362, 780, 818, 185, 5, 22, 22, 83, 2, 9, 6562, 6575, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 9, 15, 7, 53, 53, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 4, 4, 6, 6, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Turkish/Latin/Cyprus
+ { 299, 66, 240, 0, 0, 1201, 1201, 6, 1, 9, 2, 3, 4, 5, 10, 14, 15, 14, 15, 1896, 49, 10, 0,24375,24428,24481,24508,24535,24535, 782, 820, 1264, 5, 22, 0, 5360, 4, 0, 6581, 6593, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 10, 13, 5, 53, 53, 27, 27, 13, 13, 13, 14, 4, 17, 23, 0, 14, 5, 0, 12, 12, {84,77,84}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Turkmen/Latin/Turkmenistan
+ { 301, 66, 169, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 137, 155, 10, 0,24548,24548,24589,24589, 83, 83, 0, 0, 0, 5, 22, 124, 5374, 15, 0, 6605, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 41, 41, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 4, 5, 0, 5, 0, {78,71,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Tyap/Latin/Nigeria
+ { 303, 27, 244, 0, 0, 117, 117, 6, 1, 9, 2, 3, 4, 5, 85, 11, 12, 13, 14, 1912, 49, 10, 0,24616,24671, 3049, 3049, 4289, 4289, 795, 834, 1268, 841, 22, 286, 5378, 4, 0, 6610, 6620, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 8, 13, 5, 55, 55, 20, 20, 13, 13, 2, 2, 5, 17, 23, 1, 17, 5, 0, 10, 7, {85,65,72}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Ukrainian/Cyrillic/Ukraine
+ { 304, 66, 91, 0, 0, 781, 781, 6, 1, 0, 2, 3, 4, 5, 10, 13, 14, 18, 16, 404, 180, 11, 597,24726,24726,24778,24778,24805,24805, 402, 836, 1273, 5, 22, 22, 405, 4, 0, 6627, 6642, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 12, 12, 52, 52, 27, 27, 13, 13, 9, 9, 5, 17, 23, 1, 4, 5, 0, 15, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Upper Sorbian/Latin/Germany
+ { 305, 4, 178, 661, 661, 1209, 1219, 6, 0, 1, 2, 3, 35, 37, 10, 15, 14, 17, 16, 1934, 129, 61, 76,24818,24818,24818,24818, 83, 83, 0, 0, 1278, 1282, 22, 196, 5395, 2, 9, 6648, 5140, 6, 6, 10, 9, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 18, 6, 15, 7, 35, 35, 35, 35, 13, 13, 2, 2, 4, 20, 23, 2, 14, 4, 6, 4, 7, {80,75,82}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Urdu/Arabic/Pakistan
+ { 305, 4, 110, 661, 661, 1209, 1219, 6, 21, 22, 2, 40, 35, 41, 44, 15, 14, 17, 16, 1934, 129, 61, 76,24818,24818,24818,24818, 83, 83, 0, 0, 1278, 1282, 22, 120, 5409, 2, 9, 6648, 6652, 6, 6, 10, 9, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 18, 6, 15, 7, 35, 35, 35, 35, 13, 13, 2, 2, 4, 20, 23, 1, 12, 4, 6, 4, 5, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Urdu/Arabic/India
+ { 306, 4, 50, 0, 0, 323, 333, 6, 0, 1, 2, 3, 4, 5, 10, 12, 11, 20, 19, 1952, 103, 10, 0,24853,24853,24907,24907,24927,24927, 797, 845, 0, 5, 22, 145, 5421, 2, 9, 6657, 6665, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 54, 54, 20, 20, 13, 13, 12, 12, 4, 17, 23, 1, 11, 4, 6, 8, 5, {67,78,89}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Uyghur/Arabic/China
+ { 307, 66, 251, 0, 0, 1228, 1228, 6, 1, 9, 2, 3, 4, 5, 10, 14, 15, 17, 16, 1969, 78, 99, 0,24940,24940,25000,25000,25031,25031, 360, 857, 185, 5, 22, 318, 5432, 2, 9, 6670, 6676, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 14, 5, 60, 60, 31, 31, 13, 13, 2, 2, 4, 17, 23, 4, 17, 4, 6, 6, 11, {85,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Uzbek/Latin/Uzbekistan
+ { 307, 4, 1, 0, 0, 0, 0, 67, 21, 22, 23, 40, 35, 41, 44, 14, 15, 16, 17, 1987, 505, 99, 1,18196,18196,25044,25044, 83, 83, 0, 0, 0, 5, 22, 270, 3963, 4, 0, 6687, 5131, 6, 6, 6, 6, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 33, 8, 14, 4, 48, 48, 20, 20, 13, 13, 2, 2, 4, 17, 23, 1, 6, 5, 0, 6, 9, {65,70,78}, 0, 0, 6, 4, 5, 1, 3, 3 }, // Uzbek/Arabic/Afghanistan
+ { 307, 27, 251, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 14, 15, 16, 17, 1008, 78, 98, 0,25064,25064,25116,25116,25143,25143, 809, 859, 0, 5, 22, 322, 5449, 4, 0, 6693, 6700, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 8, 15, 5, 52, 52, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 14, 5, 0, 7, 10, {85,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Uzbek/Cyrillic/Uzbekistan
+ { 308, 139, 134, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 61, 76,25156,25156,25156,25156, 83, 83, 0, 0, 0, 5, 22, 10, 5463, 2, 9, 6710, 6712, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 29, 29, 29, 29, 13, 13, 2, 2, 4, 17, 23, 1, 8, 4, 6, 2, 4, {76,82,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Vai/Vai/Liberia
+ { 308, 66, 134, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38,25185,25185,25185,25185, 83, 83, 0, 0, 0, 5, 22, 10, 5471, 2, 9, 6716, 6719, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 47, 47, 47, 47, 13, 13, 2, 2, 4, 17, 23, 1, 13, 4, 6, 3, 8, {76,82,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Vai/Latin/Liberia
+ { 309, 66, 216, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 16, 17, 14, 15, 163, 103, 10, 0,25232,25232,25301,25301, 83, 83, 0, 0, 0, 5, 22, 9, 0, 2, 0, 6727, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 69, 69, 26, 26, 13, 13, 2, 2, 4, 17, 23, 1, 0, 4, 0, 9, 0, {90,65,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Venda/Latin/South Africa
+ { 310, 66, 255, 0, 0, 1236, 1236, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 265, 129, 10, 0,25327,25327,25381,25381,25413,25413, 811, 861, 0, 5, 22, 306, 5484, 4, 0, 6736, 6746, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 13, 5, 54, 54, 32, 32, 20, 20, 2, 2, 4, 17, 23, 1, 13, 5, 0, 10, 8, {86,78,68}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Vietnamese/Latin/Vietnam
+ { 311, 66, 258, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 2020, 103, 10, 0,25433,25433,25475,25495,25522,25522, 0, 0, 0, 5, 22, 0, 0, 15, 0, 6754, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 10, 13, 5, 42, 42, 20, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 7, 0, {0,0,0}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Volapuk/Latin/world
+ { 312, 66, 230, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0,13800,13800,13861,13861, 1284, 1284, 430, 446, 0, 5, 22, 121, 3492, 2, 0, 6761, 2268, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 61, 61, 27, 27, 13, 13, 5, 9, 4, 17, 23, 3, 20, 4, 0, 8, 8, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Vunjo/Latin/Tanzania
+ { 313, 66, 23, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 22, 0, 15, 0, 6769, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 5, 0, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Walloon/Latin/Belgium
+ { 314, 66, 226, 0, 0, 463, 463, 6, 1, 17, 2, 3, 4, 5, 10, 11, 12, 19, 20, 404, 103, 10, 0,25535,25535,25587,25587,25614,25614, 0, 0, 0, 5, 22, 0, 0, 15, 0, 6774, 6780, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 10, 13, 5, 52, 52, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 6, 6, {67,72,70}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Walser/Latin/Switzerland
+ { 315, 66, 15, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 241, 0, 15, 0, 6786, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 2, 0, 5, 0, 8, 0, {65,85,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Warlpiri/Latin/Australia
+ { 316, 66, 246, 0, 0, 1244, 1255, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 78, 10, 0,25627,25627,25703,25731,25760,25760, 813, 863, 1302, 5, 22, 94, 5497, 2, 9, 6794, 6801, 6, 6, 11, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 13, 5, 76, 76, 28, 29, 14, 14, 2, 2, 7, 17, 23, 1, 12, 4, 6, 7, 16, {71,66,80}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Welsh/Latin/United Kingdom
+ { 317, 4, 178, 661, 661, 971, 979, 67, 21, 22, 23, 40, 35, 41, 44, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 196, 5509, 15, 0, 6817, 0, 6, 6, 8, 7, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 2, 13, 5, 0, 14, 0, {80,75,82}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Western Balochi/Arabic/Pakistan
+ { 317, 4, 1, 661, 661, 971, 979, 67, 21, 22, 23, 40, 35, 41, 44, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 270, 5522, 15, 0, 6817, 0, 6, 6, 8, 7, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 17, 5, 0, 14, 0, {65,70,78}, 0, 0, 6, 4, 5, 1, 3, 3 }, // Western Balochi/Arabic/Afghanistan
+ { 317, 4, 112, 661, 661, 971, 979, 67, 21, 22, 23, 40, 35, 41, 44, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 271, 5539, 15, 0, 6817, 0, 6, 6, 8, 7, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 4, 11, 5, 0, 14, 0, {73,82,82}, 0, 0, 6, 5, 5, 1, 3, 3 }, // Western Balochi/Arabic/Iran
+ { 317, 4, 176, 661, 661, 971, 979, 67, 21, 22, 23, 40, 35, 41, 44, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 15, 0, 6817, 6831, 6, 6, 8, 7, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 14, 5, {79,77,82}, 3, 0, 6, 5, 6, 1, 3, 3 }, // Western Balochi/Arabic/Oman
+ { 317, 4, 245, 661, 661, 971, 979, 67, 21, 22, 23, 40, 35, 41, 44, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 0, 0, 15, 0, 6817, 6836, 6, 6, 8, 7, 1, 1, 1, 1, 1, 3, 3, 4, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 0, 0, 5, 0, 14, 19, {65,69,68}, 2, 1, 6, 6, 7, 1, 3, 3 }, // Western Balochi/Arabic/United Arab Emirates
+ { 318, 66, 165, 0, 0, 16, 16, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 113, 394, 10, 0,25774,25774,25827,25827, 83, 83, 0, 0, 0, 5, 22, 22, 83, 15, 58, 6855, 6860, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 53, 53, 20, 20, 13, 13, 2, 2, 4, 17, 23, 1, 4, 5, 7, 5, 8, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Western Frisian/Latin/Netherlands
+ { 319, 33, 77, 0, 0, 0, 0, 6, 0, 17, 2, 3, 4, 5, 10, 14, 15, 16, 17, 2043, 78, 61, 76,25847,25847,25847,25847,25873,25873, 0, 0, 0, 5, 22, 1, 105, 2, 0, 6868, 143, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 22, 8, 15, 7, 26, 26, 26, 26, 13, 13, 2, 2, 4, 17, 23, 2, 9, 4, 0, 5, 5, {69,84,66}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Wolaytta/Ethiopic/Ethiopia
+ { 320, 66, 206, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 2065, 394, 10, 0,25886,25886,25935,25935,25935,25935, 732, 865, 0, 5, 22, 127, 5550, 15, 0, 6873, 2999, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 49, 49, 27, 27, 27, 27, 3, 3, 4, 17, 23, 5, 29, 5, 0, 5, 8, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Wolof/Latin/Senegal
+ { 321, 66, 216, 0, 0, 0, 0, 6, 0, 9, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 567, 10, 0,25962,25962,26022,26049,26078,26098, 0, 0, 0, 5, 22, 9, 5579, 2, 0, 6878, 6886, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 13, 5, 60, 60, 27, 29, 20, 21, 2, 2, 4, 17, 23, 1, 25, 4, 0, 8, 15, {90,65,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Xhosa/Latin/South Africa
+ { 322, 66, 40, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 11, 12, 113, 129, 10, 0,26119,26119,26189,26189,26209,26209, 815, 868, 0, 5, 22, 11, 0, 4, 20, 6901, 6907, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 70, 70, 20, 20, 13, 13, 8, 8, 4, 17, 23, 4, 0, 5, 7, 6, 7, {88,65,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Yangben/Latin/Cameroon
+ { 323, 47, 244, 0, 0, 1265, 1265, 6, 0, 1, 2, 3, 4, 5, 10, 15, 15, 17, 17, 2082, 78, 10, 0,26222,26222,26222,26222, 83, 83, 823, 876, 0, 5, 22, 286, 0, 15, 0, 6914, 6920, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 8, 13, 5, 53, 53, 53, 53, 13, 13, 11, 10, 4, 17, 23, 1, 0, 5, 0, 6, 9, {85,65,72}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Yiddish/Hebrew/Ukraine
+ { 324, 66, 169, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 2101, 129, 10, 1,26275,26318,26386,26386,26418,26418, 834, 886, 1309, 1320, 22, 124, 5604, 2, 9, 6929, 6939, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 3, 43, 68, 32, 32, 13, 13, 5, 5, 11, 37, 23, 1, 14, 4, 6, 10, 8, {78,71,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Yoruba/Latin/Nigeria
+ { 324, 66, 25, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 2101, 129, 10, 1,26431,26474,26542,26542,26574,26574, 839, 891, 1357, 1320, 22, 127, 5618, 2, 9, 6929, 6947, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 3, 43, 68, 32, 32, 13, 13, 5, 5, 11, 37, 23, 5, 26, 4, 6, 10, 6, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Yoruba/Latin/Benin
+ { 325, 66, 170, 0, 0, 0, 0, 6, 0, 9, 2, 3, 4, 5, 10, 14, 15, 16, 17, 113, 129, 10, 0,26587,26587,11735,11735,26639,26639, 732, 774, 0, 5, 22, 127, 3285, 0, 0, 6953, 6432, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 52, 52, 27, 27, 13, 13, 8, 10, 4, 17, 23, 5, 16, 4, 0, 10, 5, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Zarma/Latin/Niger
+ { 326, 66, 50, 0, 0, 1274, 1274, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0,26652,26652,26652,26652, 83, 83, 844, 896, 0, 5, 22, 150, 5644, 15, 0, 6963, 6972, 6, 6, 11, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 89, 89, 89, 89, 13, 13, 7, 12, 4, 17, 23, 1, 10, 5, 0, 9, 8, {67,78,89}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Zhuang/Latin/China
+ { 327, 66, 216, 0, 0, 1285, 1294, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 549, 567, 10, 0,26741,26741,26814,26814,26841,26841, 0, 0, 0, 5, 22, 9, 5654, 2, 9, 6980, 6987, 6, 6, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 13, 5, 73, 73, 27, 27, 13, 13, 2, 2, 5, 17, 23, 1, 20, 4, 6, 7, 17, {90,65,82}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Zulu/Latin/South Africa
+ { 328, 66, 32, 0, 0, 1302, 1302, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 2117, 186, 10, 0,26854,26854,26940,26940,26974,26974, 0, 0, 1368, 5, 22, 9, 5674, 15, 0, 7004, 7011, 6, 6, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 10, 13, 5, 86, 86, 34, 34, 20, 20, 2, 2, 7, 17, 23, 2, 12, 5, 0, 7, 6, {66,82,76}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Kaingang/Latin/Brazil
+ { 329, 66, 32, 0, 0, 1311, 1311, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 10, 0,26994,26994,27058,27058,27085,27085, 0, 0, 1375, 5, 22, 9, 5686, 15, 0, 7017, 7025, 6, 6, 10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 64, 64, 27, 27, 13, 13, 2, 2, 8, 17, 23, 2, 15, 5, 0, 8, 6, {66,82,76}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Nheengatu/Latin/Brazil
+ { 329, 66, 54, 0, 0, 1311, 1311, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38,26994,26994,27058,27058,27085,27085, 132, 128, 1375, 5, 22, 10, 5701, 15, 0, 7031, 7038, 6, 6, 10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 64, 64, 27, 27, 13, 13, 5, 5, 8, 17, 23, 1, 17, 5, 0, 7, 8, {67,79,80}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Nheengatu/Latin/Colombia
+ { 329, 66, 254, 0, 0, 1311, 1311, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 186, 23, 38,26994,26994,27058,27058,27085,27085, 132, 128, 1375, 5, 22, 302, 5718, 15, 0, 7031, 7046, 6, 6, 10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 64, 64, 27, 27, 13, 13, 5, 5, 8, 17, 23, 4, 22, 5, 0, 7, 9, {86,69,83}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Nheengatu/Latin/Venezuela
+ { 330, 29, 110, 0, 0, 0, 0, 6, 0, 1, 2, 49, 4, 5, 10, 14, 15, 16, 17, 163, 103, 61, 76,27098,27098,27098,27098, 83, 83, 851, 83, 0, 5, 22, 120, 0, 15, 0, 7055, 664, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 54, 54, 54, 54, 13, 13, 4, 4, 4, 17, 23, 1, 0, 5, 0, 8, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Haryanvi/Devanagari/India
+ { 331, 66, 91, 0, 0, 915, 915, 6, 1, 0, 2, 3, 4, 5, 10, 14, 15, 16, 17, 404, 78, 10, 0,27152,27152,27208,27208, 83, 83, 0, 0, 0, 5, 22, 22, 83, 15, 0, 7063, 7073, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 8, 13, 5, 56, 56, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 4, 5, 0, 10, 9, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Northern Frisian/Latin/Germany
+ { 332, 29, 110, 0, 0, 0, 0, 6, 0, 1, 2, 49, 4, 5, 10, 14, 15, 16, 17, 163, 103, 61, 76, 8522, 8522, 8522, 8522, 83, 83, 855, 908, 0, 5, 22, 120, 0, 15, 0, 7082, 664, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 52, 52, 52, 52, 13, 13, 5, 4, 4, 17, 23, 1, 0, 5, 0, 9, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 3, 3 }, // Rajasthani/Devanagari/India
+ { 333, 27, 193, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 133, 0, 15, 0, 7091, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 12, 0, {82,85,66}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Moksha/Cyrillic/Russia
+ { 334, 66, 258, 0, 0, 0, 0, 6, 1, 9, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0,27235,27235,27235,27235, 83, 83, 860, 912, 0, 5, 22, 0, 0, 2, 0, 7103, 7112, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 90, 90, 90, 90, 13, 13, 12, 12, 4, 17, 23, 0, 0, 4, 0, 9, 6, {0,0,0}, 2, 1, 1, 6, 7, 1, 2, 2 }, // Toki Pona/Latin/world
+ { 335, 66, 214, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0,27325,27325,27325,27325, 83, 83, 0, 0, 0, 5, 22, 10, 0, 15, 0, 7118, 7123, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 46, 46, 46, 46, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 5, 13, {83,66,68}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Pijin/Latin/Solomon Islands
+ { 336, 66, 169, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 124, 0, 15, 0, 7136, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 5, 0, {78,71,78}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Obolo/Latin/Nigeria
+ { 337, 4, 178, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 265, 129, 367, 383,27371,27371,27417,27417, 83, 83, 0, 0, 0, 5, 22, 196, 5395, 15, 0, 7141, 5140, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 16, 8, 46, 46, 24, 24, 13, 13, 2, 2, 4, 17, 23, 2, 13, 5, 0, 5, 7, {80,75,82}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Baluchi/Arabic/Pakistan
+ { 337, 66, 178, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 265, 129, 573, 589,27441,27441,27511,27511, 83, 83, 0, 0, 0, 5, 22, 196, 5740, 15, 0, 7146, 7153, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 16, 8, 70, 70, 26, 26, 13, 13, 2, 2, 4, 17, 23, 2, 14, 5, 0, 7, 8, {80,75,82}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Baluchi/Latin/Pakistan
+ { 338, 66, 117, 0, 0, 414, 414, 6, 1, 0, 2, 3, 4, 5, 10, 11, 12, 14, 15, 2140, 78, 10, 0,27537,27537,27591,27591,27625,27625, 0, 0, 0, 5, 22, 22, 405, 4, 20, 7161, 3728, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 8, 13, 5, 54, 54, 34, 34, 13, 13, 2, 2, 4, 17, 23, 1, 4, 5, 7, 6, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Ligurian/Latin/Italy
+ { 339, 142, 161, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 10, 1, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 134, 0, 15, 0, 7167, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 13, 4, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 18, 0, {77,77,75}, 0, 0, 7, 6, 7, 1, 3, 3 }, // Rohingya/Hanifi/Myanmar
+ { 339, 142, 20, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 163, 103, 61, 76, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 132, 0, 15, 0, 7167, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 15, 7, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 18, 0, {66,68,84}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Rohingya/Hanifi/Bangladesh
+ { 340, 4, 178, 1321, 1321, 1326, 1335, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 1934, 129, 61, 76,27638,27638,27638,27638,27695,27695, 0, 0, 1278, 1282, 22, 196, 5395, 15, 0, 7185, 5140, 5, 5, 9, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 6, 15, 7, 57, 57, 57, 57, 13, 13, 2, 2, 4, 20, 23, 2, 14, 5, 0, 7, 7, {80,75,82}, 2, 0, 7, 6, 7, 1, 3, 3 }, // Torwali/Arabic/Pakistan
+ { 341, 66, 25, 0, 0, 566, 566, 6, 1, 9, 2, 3, 4, 5, 10, 11, 12, 14, 15, 2161, 2178, 10, 0,27708,27708,27766,27766,27800,27800, 872, 924, 0, 5, 22, 127, 5754, 15, 86, 7192, 7203, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 8, 13, 5, 58, 58, 34, 34, 20, 20, 13, 13, 4, 17, 23, 5, 33, 5, 6, 11, 5, {88,79,70}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Anii/Latin/Benin
+ { 342, 29, 110, 0, 0, 1343, 1353, 6, 0, 1, 2, 3, 4, 5, 10, 14, 15, 16, 17, 0, 129, 61, 76,27820,27820,27872,27872,27905,27905, 885, 937, 0, 5, 22, 120, 5787, 2, 0, 7208, 664, 6, 6, 10, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 6, 15, 7, 52, 52, 33, 33, 18, 18, 6, 11, 4, 17, 23, 1, 14, 4, 0, 7, 4, {73,78,82}, 2, 1, 7, 7, 7, 1, 2, 3 }, // Kangri/Devanagari/India
+ { 343, 66, 117, 0, 0, 414, 414, 6, 1, 68, 2, 3, 4, 5, 10, 14, 15, 16, 17, 113, 78, 10, 0,27923,27923,27967,27967,27625,27625, 0, 0, 0, 5, 22, 155, 405, 117, 0, 7215, 3728, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 8, 13, 5, 44, 44, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 4, 5, 0, 6, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Venetian/Latin/Italy
{ 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, 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, 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,0,0}, 0, 0, 0, 0, 0, 0, 0, 0 } // trailing zeros
};
-static const char16_t list_pattern_part_data[] = {
-0x25, 0x31, 0x2c, 0x20, 0x25, 0x32, 0x3b, 0x25, 0x31, 0x20, 0x65, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x64, 0x68,
-0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x1363, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x12a5, 0x1293, 0x20, 0x25, 0x32, 0x25,
-0x31, 0x20, 0x12a5, 0x1293, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x648, 0x25, 0x32, 0x61b, 0x25, 0x31, 0x20, 0x587, 0x20, 0x25,
-0x32, 0x25, 0x31, 0x20, 0x986, 0x9f0, 0x9c1, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x79, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20,
-0x76, 0x259, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x98f, 0x9ac, 0x982, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x65, 0x74, 0x61,
-0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x456, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x69, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20,
-0x438, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x68, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x2d, 0x20, 0x25, 0x32, 0x25,
-0x31, 0x1014, 0x103e, 0x1004, 0x1037, 0x103a, 0x20, 0x25, 0x32, 0x104a, 0x25, 0x31, 0x3001, 0x25, 0x32, 0x25, 0x31, 0x540c, 0x25, 0x32,
-0x25, 0x31, 0x2c, 0x20, 0x75, 0x67, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x75, 0x67, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20,
-0xd804, 0xdd03, 0xd804, 0xdd33, 0xd804, 0xdd03, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x13a0, 0x13b4, 0x20, 0x25, 0x32, 0x25, 0x31,
-0x20, 0x13a0, 0x13b4, 0x20, 0x25, 0x32, 0x25, 0x31, 0x548c, 0x25, 0x32, 0x25, 0x31, 0x53ca, 0x25, 0x32, 0x25, 0x31, 0x20, 0x75,
-0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6f, 0x67, 0x20, 0x25, 0x32, 0x25,
-0x31, 0x2c, 0x20, 0x924, 0x947, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x924, 0x947, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xf51,
-0xf44, 0xf0b, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x6e,
-0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6b, 0x61, 0x6a, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6a, 0x61, 0x20, 0x25,
-0x32, 0x25, 0x31, 0x2c, 0x20, 0x6b, 0x70, 0x6c, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6b, 0x70, 0x6c, 0x65, 0x20,
-0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x61, 0x74, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x74, 0x20, 0x25, 0x32, 0x25,
-0x31, 0x20, 0x65, 0x74, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2e41, 0x20, 0x25, 0x32,
-0x25, 0x31, 0x20, 0xd83a, 0xdd2b, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x67, 0x75, 0x73, 0x20, 0x25, 0x32, 0x25, 0x31,
-0x20, 0x10d3, 0x10d0, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x75, 0x6e, 0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x3ba, 0x3b1,
-0x3b9, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xa85, 0xaa8, 0xac7, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x64, 0x61, 0x20,
-0x25, 0x32, 0x25, 0x31, 0x20, 0x64, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x5d5, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20,
-0x914, 0x930, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x914, 0x930, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xe9, 0x73, 0x20, 0x25,
-0x32, 0x25, 0x31, 0x2c, 0x20, 0x6e, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6e, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31,
-0x2c, 0x20, 0x64, 0x61, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x64, 0x61, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c,
-0x20, 0x6c, 0x61, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6c, 0x61, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20,
-0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x61, 0x6d, 0x6d, 0x61, 0x20,
-0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0xcae, 0xca4, 0xccd, 0xca4, 0xcc1, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xcae, 0xca4, 0xccd,
-0xca4, 0xcc1, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x436, 0x4d9, 0x43d, 0x435, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x1793, 0x17b7,
-0x1784, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x1793, 0x17b7, 0x1784, 0x200b, 0x25, 0x32, 0x25, 0x31, 0x20, 0xbc0f, 0x20, 0x25, 0x32,
-0x25, 0x31, 0x20, 0xfb, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x436, 0x430, 0x43d, 0x430, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20,
-0xec1, 0xea5, 0xeb0, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6d, 0x70, 0xe9, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x69, 0x72,
-0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x28, 0x6e, 0x29, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x25, 0x32, 0x20,
-0xd0e, 0xd28, 0xd4d, 0xd28, 0xd3f, 0xd35, 0x25, 0x31, 0x20, 0xd15, 0xd42, 0xd1f, 0xd3e, 0xd24, 0xd46, 0x20, 0x25, 0x32, 0x25, 0x31,
-0x2c, 0x20, 0x75, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x75, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x985, 0x9ae, 0x9b8, 0x9c1,
-0x982, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x906, 0x923, 0x93f, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x25, 0x32, 0x25, 0x31,
-0x20, 0x930, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x14b, 0x301, 0x67, 0x25b, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20,
-0x1e3f, 0x62, 0x25b, 0x6e, 0x20, 0x14b, 0x301, 0x67, 0x25b, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x70, 0x254, 0x70, 0x20, 0x25,
-0x32, 0x25, 0x31, 0x2c, 0x20, 0x61, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31,
-0x2c, 0x20, 0xb13, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xb13, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x4d5, 0x43c, 0x4d5, 0x20,
-0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, 0x627, 0x648, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20,
-0x627, 0x648, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x200f, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, 0x648, 0x20, 0x25, 0x32,
-0x25, 0x31, 0x20, 0x648, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xa05, 0xa24, 0xa47, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x219,
-0x69, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x443, 0x43e, 0x43d, 0x43d, 0x430, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x924,
-0x925, 0x93e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x924, 0x925, 0x93e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, 0x6fd, 0x20,
-0x25, 0x32, 0x25, 0x31, 0x20, 0x6fd, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0xdc3, 0xdc4, 0x20, 0x25, 0x32, 0x25, 0x31,
-0x20, 0xdc3, 0xdc4, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0xa0, 0x25, 0x32, 0x25, 0x31, 0x20, 0x69, 0x6e, 0x20, 0x25,
-0x32, 0x25, 0x31, 0x20, 0x69, 0x79, 0x6f, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x73, 0x61, 0x72, 0x65, 0x6e, 0x67,
-0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x73, 0x61, 0x72, 0x65, 0x6e, 0x67, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6f, 0x63,
-0x68, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xbae, 0xbb1, 0xbcd, 0xbb1, 0xbc1, 0xbae, 0xbcd, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20,
-0x4bb, 0x4d9, 0x43c, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xc2e, 0xc30, 0xc3f, 0xc2f, 0xc41, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20,
-0x25, 0x32, 0x25, 0x31, 0x20, 0xe41, 0xe25, 0xe30, 0x25, 0x32, 0x25, 0x31, 0xe41, 0xe25, 0xe30, 0x25, 0x32, 0x25, 0x31, 0x1295,
-0x20, 0x25, 0x32, 0x1295, 0x25, 0x31, 0x20, 0x6d, 0x6f, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x76, 0x65, 0x20, 0x25, 0x32,
-0x25, 0x31, 0x20, 0x77, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, 0x627, 0x648, 0x631, 0x20, 0x25, 0x32, 0x25, 0x31,
-0x20, 0x627, 0x648, 0x631, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x76, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x76, 0xe0,
-0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x61, 0x28, 0x63, 0x29, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x28, 0x63,
-0x29, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x5d0, 0x5d5, 0x5df, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x6e, 0x65, 0x2d,
-0x25, 0x32, 0x25, 0x31, 0x20, 0x6e, 0x65, 0x2d, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6b, 0x61, 0x72, 0x20, 0x25, 0x32, 0x25,
-0x31, 0x20, 0x61, 0x73, 0x75, 0xed, 0x20, 0x25, 0x32
+static constexpr char16_t list_pattern_part_data[] = {
+0x25, 0x31, 0x2c, 0x20, 0x25, 0x32, 0x3b, 0x25, 0x31, 0x2d, 0x438, 0x20,
+0x25, 0x32, 0x2d, 0x438, 0x25, 0x31, 0x20, 0x65, 0x6e, 0x20, 0x25, 0x32,
+0x25, 0x31, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x64, 0x68, 0x65, 0x20,
+0x25, 0x32, 0x25, 0x31, 0x1363, 0x20, 0x25, 0x32, 0x25, 0x31, 0x1363, 0x20,
+0x12a5, 0x1293, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x12a5, 0x1293, 0x20, 0x25,
+0x32, 0x25, 0x31, 0x20, 0x648, 0x25, 0x32, 0x61b, 0x25, 0x31, 0x20, 0x79,
+0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x587, 0x20, 0x25, 0x32, 0x25, 0x31,
+0x20, 0x986, 0x9f0, 0x9c1, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x76, 0x259,
+0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x98f, 0x9ac, 0x982, 0x20, 0x25, 0x32,
+0x25, 0x31, 0x20, 0x65, 0x74, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20,
+0x456, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x906, 0x930, 0x94b, 0x20,
+0x25, 0x32, 0x25, 0x31, 0x20, 0x906, 0x930, 0x94b, 0x20, 0x25, 0x32, 0x25,
+0x31, 0x20, 0x69, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x438, 0x20, 0x25,
+0x32, 0x25, 0x31, 0x20, 0x68, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20,
+0x2d, 0x20, 0x25, 0x32, 0x25, 0x31, 0x1014, 0x103e, 0x1004, 0x1037, 0x103a, 0x20,
+0x25, 0x32, 0x104a, 0x25, 0x31, 0x3001, 0x25, 0x32, 0x25, 0x31, 0x540c, 0x25,
+0x32, 0x25, 0x31, 0x2c, 0x20, 0x75, 0x67, 0x20, 0x25, 0x32, 0x25, 0x31,
+0x20, 0x75, 0x67, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xd804, 0xdd03, 0xd804,
+0xdd33, 0xd804, 0xdd03, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x13a0, 0x13b4,
+0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x13a0, 0x13b4, 0x20, 0x25, 0x32, 0x25,
+0x31, 0x548c, 0x25, 0x32, 0x25, 0x31, 0x53ca, 0x25, 0x32, 0x25, 0x31, 0x20,
+0x438, 0x486, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x442, 0x430, 0x442, 0x430,
+0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x75, 0x6e, 0x20, 0x25, 0x32, 0x25,
+0x31, 0x20, 0xe8, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0xa0, 0x25,
+0x32, 0x25, 0x31, 0x20, 0x6f, 0x67, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c,
+0x20, 0x924, 0x947, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x924, 0x947, 0x20,
+0x25, 0x32, 0x25, 0x31, 0x20, 0xf51, 0xf44, 0xf0b, 0x20, 0x25, 0x32, 0x25,
+0x31, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20,
+0x61, 0x6e, 0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6b, 0x61, 0x6a,
+0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6a, 0x61, 0x20, 0x25, 0x32, 0x25,
+0x31, 0x2c, 0x20, 0x6b, 0x70, 0x6c, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31,
+0x20, 0x6b, 0x70, 0x6c, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20,
+0x6f, 0x67, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x61, 0x74, 0x20,
+0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x74, 0x20, 0x25, 0x32, 0x25, 0x31,
+0x20, 0x65, 0x74, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x65, 0x20, 0x25,
+0x32, 0x25, 0x31, 0x2e41, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2e41, 0x20, 0xd83a,
+0xdd2b, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xd83a, 0xdd2b, 0x20, 0x25, 0x32,
+0x204f, 0x25, 0x31, 0x20, 0x61, 0x67, 0x75, 0x73, 0x20, 0x25, 0x32, 0x25,
+0x31, 0x20, 0x10d3, 0x10d0, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x75, 0x6e,
+0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x3ba, 0x3b1, 0x3b9, 0x20, 0x25,
+0x32, 0x25, 0x31, 0x20, 0xa85, 0xaa8, 0xac7, 0x20, 0x25, 0x32, 0x25, 0x31,
+0x2c, 0x20, 0x64, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x64, 0x61,
+0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x5d5, 0x25, 0x32, 0x25, 0x31, 0x2c,
+0x20, 0x914, 0x930, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x914, 0x930, 0x20,
+0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x61, 0x75, 0x72, 0x20, 0x25, 0x32,
+0x25, 0x31, 0x20, 0x61, 0x75, 0x72, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20,
+0xe9, 0x73, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x6e, 0x61, 0x20,
+0x25, 0x32, 0x25, 0x31, 0x20, 0x6e, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31,
+0x2c, 0x20, 0x64, 0x61, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x64,
+0x61, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x6c, 0x61, 0x6e,
+0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6c, 0x61, 0x6e, 0x20, 0x25, 0x32,
+0x25, 0x31, 0x2c, 0x20, 0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x64,
+0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x61, 0x6d, 0x6d, 0x61, 0x20,
+0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0xcae, 0xca4, 0xccd, 0xca4, 0xcc1, 0x20,
+0x25, 0x32, 0x25, 0x31, 0x20, 0xcae, 0xca4, 0xccd, 0xca4, 0xcc1, 0x20, 0x25,
+0x32, 0x25, 0x31, 0x60c, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, 0x62a,
+0x655, 0x6c1, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x62a, 0x655, 0x6c1, 0x20,
+0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x924, 0x93f, 0x20, 0x25, 0x32, 0x25,
+0x31, 0x20, 0x924, 0x93f, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x436, 0x4d9,
+0x43d, 0x435, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x1793, 0x17b7, 0x1784, 0x20,
+0x25, 0x32, 0x25, 0x31, 0x20, 0x1793, 0x17b7, 0x1784, 0x200b, 0x25, 0x32, 0x25,
+0x31, 0x20, 0xbc0f, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xfb, 0x20, 0x25,
+0x32, 0x25, 0x31, 0x20, 0x436, 0x430, 0x43d, 0x430, 0x20, 0x25, 0x32, 0x25,
+0x31, 0x20, 0xec1, 0xea5, 0xeb0, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6d,
+0x70, 0xe9, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x69, 0x72, 0x20, 0x25,
+0x32, 0x25, 0x31, 0x20, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61,
+0x28, 0x6e, 0x29, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x25, 0x32,
+0x20, 0xd0e, 0xd28, 0xd4d, 0xd28, 0xd3f, 0xd35, 0x25, 0x31, 0x20, 0xd15, 0xd42,
+0xd1f, 0xd3e, 0xd24, 0xd46, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x75,
+0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x75, 0x20, 0x25, 0x32, 0x25, 0x31,
+0x20, 0x985, 0x9ae, 0x9b8, 0x9c1, 0x982, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20,
+0x906, 0x923, 0x93f, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x25, 0x32, 0x25,
+0x31, 0x20, 0x930, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x14b, 0x301,
+0x67, 0x25b, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x1e3f, 0x62, 0x25b,
+0x6e, 0x20, 0x14b, 0x301, 0x67, 0x25b, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20,
+0x70, 0x254, 0x70, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x61, 0x6e,
+0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x6e, 0x20, 0x25, 0x32, 0x25,
+0x31, 0x2c, 0x20, 0xb13, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xb13, 0x20,
+0x25, 0x32, 0x25, 0x31, 0x20, 0x4d5, 0x43c, 0x4d5, 0x20, 0x25, 0x32, 0x25,
+0x31, 0x60c, 0x20, 0x627, 0x648, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x627,
+0x648, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x200f, 0x20, 0x25, 0x32, 0x25,
+0x31, 0x60c, 0x20, 0x648, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x648, 0x20,
+0x25, 0x32, 0x25, 0x31, 0x20, 0x62, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31,
+0x20, 0xa05, 0xa24, 0xa47, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x219, 0x69,
+0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x443, 0x43e, 0x43d, 0x43d, 0x430, 0x20,
+0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x924, 0x925, 0x93e, 0x20, 0x25, 0x32,
+0x25, 0x31, 0x20, 0x924, 0x925, 0x93e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c,
+0x20, 0x6fd, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6fd, 0x20, 0x25, 0x32,
+0x25, 0x31, 0x2c, 0x20, 0xdc3, 0xdc4, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20,
+0xdc3, 0xdc4, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x69, 0x6e, 0x20, 0x25,
+0x32, 0x25, 0x31, 0x20, 0x69, 0x79, 0x6f, 0x20, 0x25, 0x32, 0x25, 0x31,
+0x2c, 0x20, 0x73, 0x61, 0x72, 0x65, 0x6e, 0x67, 0x20, 0x25, 0x32, 0x25,
+0x31, 0x20, 0x73, 0x61, 0x72, 0x65, 0x6e, 0x67, 0x20, 0x25, 0x32, 0x25,
+0x31, 0x20, 0x6f, 0x63, 0x68, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x718,
+0x25, 0x32, 0x25, 0x31, 0x20, 0xbae, 0xbb1, 0xbcd, 0xbb1, 0xbc1, 0xbae, 0xbcd,
+0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x4bb, 0x4d9, 0x43c, 0x20, 0x25, 0x32,
+0x25, 0x31, 0x20, 0xc2e, 0xc30, 0xc3f, 0xc2f, 0xc41, 0x20, 0x25, 0x32, 0x25,
+0x31, 0x20, 0xe41, 0xe25, 0xe30, 0x25, 0x32, 0x25, 0x31, 0xe41, 0xe25, 0xe30,
+0x25, 0x32, 0x25, 0x31, 0x1295, 0x20, 0x25, 0x32, 0x1295, 0x25, 0x31, 0x20,
+0x6d, 0x6f, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x76, 0x65, 0x20, 0x25,
+0x32, 0x25, 0x31, 0x20, 0x77, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c,
+0x20, 0x627, 0x648, 0x631, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x627, 0x648,
+0x631, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x76, 0x61, 0x20, 0x25, 0x32,
+0x25, 0x31, 0x20, 0x76, 0xe0, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20,
+0x61, 0x28, 0x63, 0x29, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x28,
+0x63, 0x29, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x5d0, 0x5d5, 0x5df, 0x20,
+0x25, 0x32, 0x25, 0x31, 0x20, 0x63, 0x61, 0x65, 0x75, 0x71, 0x20, 0x25,
+0x32, 0x25, 0x31, 0x2c, 0x20, 0x6e, 0x65, 0x2d, 0x25, 0x32, 0x25, 0x31,
+0x20, 0x6e, 0x65, 0x2d, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6b, 0x61, 0x72,
+0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x73, 0x75, 0xed, 0x20, 0x25,
+0x32, 0x25, 0x31, 0x60c, 0x25, 0x32, 0x25, 0x31, 0x20, 0x60c, 0x622, 0x6ba,
+0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x622, 0x6ba, 0x20, 0x25, 0x32, 0x25,
+0x31, 0x2c, 0x20, 0x915, 0x928, 0x947, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20,
+0x915, 0x928, 0x947, 0x20, 0x25, 0x32
};
-static const char16_t single_character_data[] = {
-0x2e, 0x2c, 0x25, 0x30, 0x2d, 0x2b, 0x65, 0x22, 0x27, 0x45, 0x201c, 0x201d, 0x2018, 0x2019, 0xa0, 0x201e, 0x201a, 0xab, 0xbb, 0x2039,
-0x203a, 0x66b, 0x66c, 0x66a, 0x61c, 0x660, 0x61c, 0x2d, 0x61c, 0x2b, 0x627, 0x633, 0x200e, 0x25, 0x200e, 0x200e, 0x2d, 0x200e, 0x2b, 0x9e6,
-0x2212, 0x1040, 0x300c, 0x300d, 0x300e, 0x300f, 0x200f, 0x2d, 0x200f, 0x2b, 0xd804, 0xdd36, 0xd7, 0x31, 0x30, 0x5e, 0xf20, 0x202f, 0x2e41, 0xd83a,
-0xdd50, 0x6f0, 0x200e, 0x2b, 0x200e, 0xd7, 0x6f1, 0x6f0, 0x5e, 0x966, 0xb7, 0x31, 0x30, 0x5e, 0x200e, 0x2212, 0x1c50, 0x415
+static constexpr char16_t single_character_data[] = {
+0x2e, 0x2c, 0x25, 0x30, 0x2d, 0x2b, 0x65, 0x22, 0x27, 0xa0, 0x45, 0xab,
+0xbb, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2039, 0x203a, 0x66b, 0x66c, 0x66a,
+0x61c, 0x660, 0x61c, 0x2d, 0x61c, 0x2b, 0x623, 0x633, 0x200e, 0x25, 0x200e, 0x200e,
+0x2d, 0x200e, 0x2b, 0x9e6, 0x6f0, 0x200e, 0x2b, 0x200e, 0xd7, 0x6f1, 0x6f0, 0x5e,
+0x2212, 0x966, 0x1040, 0x300c, 0x300d, 0x300e, 0x300f, 0x200f, 0x2d, 0x200f, 0x2b, 0x627,
+0x633, 0xd804, 0xdd36, 0xd7, 0x31, 0x30, 0x5e, 0xf20, 0x202f, 0x2e41, 0xd83a, 0xdd50,
+0xd83a, 0xdd09, 0x12c8, 0xabf0, 0x60c, 0x7c0, 0xb7, 0x31, 0x30, 0x5e, 0x200e, 0x2212,
+0x1c50, 0x415
};
-static const char16_t date_format_data[] = {
-0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x20, 0x4d,
-0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x2c, 0x20,
-0x64, 0x64, 0x64, 0x64, 0x79, 0x79, 0x79, 0x79, 0x2d, 0x4d, 0x4d, 0x2d, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x20, 0x64,
-0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x20, 0x64, 0x20, 0x4d, 0x4d,
-0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x2f, 0x4d, 0x2f, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c,
-0x20, 0x79, 0x79, 0x79, 0x79, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x64, 0x79, 0x79, 0x2f, 0x4d, 0x4d, 0x2f, 0x64,
-0x64, 0x64, 0x2e, 0x4d, 0x2e, 0x79, 0x79, 0x64, 0x64, 0x2f, 0x4d, 0x4d, 0x2f, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64,
-0x64, 0x60c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x200f, 0x2f, 0x4d, 0x200f, 0x2f,
-0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x20, 0x569, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x2c, 0x20,
-0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2e, 0x4d, 0x4d, 0x2e, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20,
-0x4d, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x2d, 0x4d, 0x2d, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64,
-0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x64, 0x65, 0x27, 0x20, 0x79, 0x79, 0x79, 0x79,
-0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x79, 0x79, 0x79,
-0x79, 0x28, 0x27, 0x65, 0x27, 0x29, 0x27, 0x6b, 0x6f, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x27, 0x72, 0x65, 0x6e, 0x27,
-0x20, 0x64, 0x28, 0x27, 0x61, 0x27, 0x29, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x79, 0x79, 0x2f, 0x4d, 0x2f, 0x64, 0x64,
-0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x20, 0x27, 0x433, 0x27,
-0x2e, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x4d,
-0x2f, 0x64, 0x2f, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79,
-0x79, 0x79, 0x79, 0x2e, 0x64, 0x2e, 0x20, 0x4d, 0x2e, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x64, 0x64, 0x64, 0x64, 0x2c,
-0x20, 0x64, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x64, 0x2e, 0x4d, 0x2e, 0x79,
-0x79, 0x2e, 0x64, 0x2e, 0x4d, 0x4d, 0x2e, 0x79, 0x79, 0x20, 0x27, 0x433, 0x27, 0x2e, 0x79, 0x79, 0x79, 0x79, 0x2d, 0x20,
-0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x2d, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2d, 0x4d, 0x4d, 0x2d, 0x79, 0x79,
-0x79, 0x79, 0x79, 0x79, 0x5e74, 0x4d, 0x6708, 0x64, 0x65e5, 0x20, 0x64, 0x64, 0x64, 0x64, 0x79, 0x79, 0x79, 0x79, 0x2f, 0x4d,
-0x2f, 0x64, 0x79, 0x79, 0x79, 0x79, 0x5e74, 0x4d, 0x6708, 0x64, 0x65e5, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c,
-0x20, 0x27, 0x64, 0xe4, 0x27, 0x20, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64,
-0x2e, 0x20, 0x4d, 0x4d, 0x2e, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x64, 0x2e, 0x20, 0x4d, 0x2e, 0x20, 0x79, 0x79, 0x2e,
-0x64, 0x64, 0x64, 0x64, 0x20, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64,
-0x64, 0x20, 0x27, 0x64, 0x65, 0x6e, 0x27, 0x20, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79,
-0x64, 0x64, 0x2e, 0x4d, 0x4d, 0x2e, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x2c, 0x20, 0x4d,
-0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf63,
-0xf7c, 0xf0b, 0x79, 0x79, 0x79, 0x79, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0xf5a, 0xf7a, 0xf66, 0xf0b, 0x64, 0x64, 0x64, 0x64,
-0x64, 0x64, 0x2c, 0x20, 0x64, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79,
-0x2f, 0x4d, 0x4d, 0x2f, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x2d, 0x27, 0x61, 0x27, 0x20, 0x27, 0x64,
-0x65, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x4d, 0x4d,
-0x4d, 0x4d, 0x20, 0x64, 0x20, 0x27, 0x6c, 0x69, 0x61, 0x27, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x2e, 0x4d, 0x2e, 0x79,
-0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x20, 0x64, 0x20, 0x27, 0x64, 0x69, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20,
-0x27, 0x64, 0x61, 0x6c, 0x27, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d,
-0x4d, 0x2e41, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x27, 0x6d, 0x68, 0x27, 0x20, 0x4d,
-0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x27, 0x64, 0x65, 0x27,
-0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x64, 0x65, 0x27, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c,
-0x20, 0x64, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x20, 0x64,
-0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x5d1,
-0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20,
-0x64, 0x2e, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x20, 0x4d, 0x4d, 0x2e, 0x20, 0x64, 0x64,
-0x2e, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x2e, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64,
-0x64, 0x64, 0x64, 0x20, 0x27, 0x6c, 0x65, 0x27, 0x20, 0x64, 0x20, 0x27, 0x64, 0x65, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d,
-0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x27, 0x64, 0x69, 0x27, 0x20, 0x4d, 0x4d,
-0x4d, 0x4d, 0x20, 0x27, 0x64, 0x69, 0x27, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x2f, 0x4d, 0x4d, 0x20, 0x79, 0x79,
-0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x20, 0x27, 0x436, 0x27, 0x2e, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x2c, 0x20,
-0x64, 0x64, 0x64, 0x64, 0x79, 0x79, 0x79, 0x79, 0xb144, 0x20, 0x4d, 0xc6d4, 0x20, 0x64, 0xc77c, 0x20, 0x64, 0x64, 0x64, 0x64,
-0x79, 0x79, 0x2e, 0x20, 0x4d, 0x2e, 0x20, 0x64, 0x2e, 0x79, 0x79, 0x79, 0x79, 0x2d, 0x27, 0x436, 0x27, 0x2e, 0x2c, 0x20,
-0x64, 0x2d, 0x4d, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x20, 0xe97, 0xeb5, 0x20,
-0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x79, 0x79, 0x79,
-0x79, 0x2e, 0x20, 0x27, 0x67, 0x61, 0x64, 0x61, 0x27, 0x20, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x79, 0x79, 0x79,
-0x79, 0x20, 0x27, 0x6d, 0x27, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x20, 0x27, 0x64, 0x27, 0x2e, 0x2c, 0x20,
-0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x27, 0x64, 0x65, 0x27, 0x20, 0x64, 0x2e, 0x20, 0x4d, 0x4d,
-0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x2c, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x2c,
-0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x27, 0x74, 0x61, 0x27, 0x2019, 0x20, 0x4d,
-0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79,
-0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x79, 0x79, 0x79, 0x79, 0x20, 0x27, 0x43e, 0x43d, 0x44b, 0x27, 0x20, 0x4d, 0x4d, 0x4d,
-0x4d, 0x27, 0x44b, 0x43d, 0x27, 0x20, 0x64, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x20, 0x27, 0x433, 0x430, 0x440, 0x430, 0x433,
-0x27, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x4d, 0x4d, 0x2e, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x20, 0x2c, 0x20, 0x27, 0x6c,
-0x79, 0x25b, 0x27, 0x30c, 0x2bc, 0x20, 0x64, 0x20, 0x27, 0x6e, 0x61, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79,
-0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79,
-0x79, 0x20, 0x27, 0x430, 0x437, 0x27, 0x64, 0x64, 0x64, 0x64, 0x20, 0x62f, 0x20, 0x79, 0x79, 0x79, 0x79, 0x20, 0x62f, 0x20,
-0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x27, 0x69, 0x6c, 0x73, 0x27, 0x20, 0x64, 0x20,
-0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x20, 0x27, 0x441, 0x44b, 0x43b, 0x27, 0x20,
-0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x20, 0x27, 0x43a, 0x4af, 0x43d, 0x44d, 0x27, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64,
-0x20, 0x27, 0x64, 0x65, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x64, 0x65, 0x27, 0x20, 0x27, 0x73, 0x75, 0x27,
-0x20, 0x79, 0x79, 0x79, 0x79, 0x2c, 0x20, 0x27, 0x64, 0x65, 0x27, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64,
-0x20, 0x64, 0x64, 0x20, 0x27, 0x64, 0x65, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x64, 0x65, 0x27, 0x20, 0x79,
-0x79, 0x79, 0x79, 0x4d, 0x4d, 0x2f, 0x64, 0x64, 0x2f, 0x79, 0x79, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79,
-0x79, 0x79, 0x79, 0x20, 0x27, 0x435, 0x43b, 0x27, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x4d, 0x4d, 0x4d,
-0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0xe17, 0xe35, 0xe48, 0x20,
-0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x20, 0x4d, 0x4d, 0x4d, 0x4d,
-0xf60, 0xf72, 0xf0b, 0xf5a, 0xf7a, 0xf66, 0xf0b, 0x64, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x1363, 0x20,
-0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79,
-0x79, 0x79, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20,
-0x79, 0x79, 0x79, 0x79, 0x20, 0x27, 0x440, 0x27, 0x2e, 0x64, 0x64, 0x64, 0x64, 0x60c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d,
-0x4d, 0x60c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x20, 0x64, 0x2d, 0x4d, 0x4d, 0x4d, 0x4d, 0x60c, 0x20,
-0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x2d, 0x4d, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79,
-0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x20, 0x646, 0x686, 0x6cc, 0x20, 0x6cc, 0x6cc, 0x644, 0x20, 0x64, 0x20, 0x646, 0x686, 0x6cc,
-0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x64, 0x64, 0x64, 0x20, 0x6a9, 0x648, 0x646, 0x6cc, 0x64, 0x64, 0x64, 0x64, 0x2c,
-0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x5d8,
-0x5df, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d,
-0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x27, 0x6e, 0x65, 0x27, 0x20,
-0x4d, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79
+static constexpr char16_t date_format_data[] = {
+0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d,
+0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x20, 0x79,
+0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d,
+0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x20, 0x27, 0x448, 0x27,
+0x2e, 0x64, 0x64, 0x2e, 0x4d, 0x4d, 0x2e, 0x79, 0x79, 0x79, 0x79, 0x64,
+0x64, 0x64, 0x64, 0x2c, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x64,
+0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x2f, 0x4d, 0x4d, 0x2f,
+0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x20, 0x64, 0x64, 0x20, 0x4d, 0x4d,
+0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x2d,
+0x4d, 0x4d, 0x2d, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x20, 0x64, 0x20,
+0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x2f, 0x4d,
+0x2f, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x79,
+0x79, 0x79, 0x79, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x64, 0x79,
+0x79, 0x2f, 0x4d, 0x4d, 0x2f, 0x64, 0x64, 0x79, 0x79, 0x79, 0x79, 0x20,
+0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64,
+0x64, 0x2e, 0x4d, 0x2e, 0x79, 0x79, 0x64, 0x64, 0x2f, 0x4d, 0x4d, 0x2f,
+0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x60c, 0x20, 0x64, 0x20,
+0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x200f, 0x2f,
+0x4d, 0x200f, 0x2f, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c,
+0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x64, 0x65, 0x27,
+0x20, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x20, 0x569, 0x2e,
+0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x2c, 0x20, 0x64, 0x64, 0x64,
+0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d,
+0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x2d, 0x4d, 0x2d, 0x79,
+0x79, 0x79, 0x79, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79,
+0x79, 0x79, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x79, 0x79, 0x79, 0x79,
+0x28, 0x27, 0x65, 0x27, 0x29, 0x27, 0x6b, 0x6f, 0x27, 0x20, 0x4d, 0x4d,
+0x4d, 0x4d, 0x27, 0x72, 0x65, 0x6e, 0x27, 0x20, 0x64, 0x28, 0x27, 0x61,
+0x27, 0x29, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x79, 0x79, 0x2f, 0x4d,
+0x2f, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d,
+0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x202f, 0x27, 0x433, 0x27, 0x2e,
+0x64, 0x64, 0x64, 0x64, 0x1361, 0x20, 0x64, 0x64, 0x20, 0x4d, 0x4d, 0x4d,
+0x4d, 0x20, 0x130d, 0x122d, 0x130b, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64,
+0x2d, 0x4d, 0x4d, 0x2d, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64,
+0x2c, 0x20, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79,
+0x79, 0x79, 0x2e, 0x64, 0x2e, 0x20, 0x4d, 0x2e, 0x20, 0x79, 0x79, 0x79,
+0x79, 0x2e, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x64, 0x2e, 0x20,
+0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x64, 0x2e,
+0x4d, 0x2e, 0x79, 0x79, 0x2e, 0x64, 0x2e, 0x4d, 0x4d, 0x2e, 0x79, 0x79,
+0x202f, 0x27, 0x433, 0x27, 0x2e, 0x79, 0x79, 0x79, 0x79, 0x104a, 0x20, 0x4d,
+0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x104a, 0x20, 0x64, 0x64, 0x64, 0x64, 0x79,
+0x79, 0x79, 0x79, 0x5e74, 0x4d, 0x6708, 0x64, 0x65e5, 0x20, 0x64, 0x64, 0x64,
+0x64, 0x79, 0x79, 0x79, 0x79, 0x2f, 0x4d, 0x2f, 0x64, 0x79, 0x79, 0x79,
+0x79, 0x5e74, 0x4d, 0x6708, 0x64, 0x65e5, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64,
+0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27,
+0x64, 0x65, 0x6c, 0x27, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64,
+0x64, 0x2c, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x2c, 0x20, 0x79,
+0x79, 0x79, 0x79, 0x4d, 0x2f, 0x64, 0x2f, 0x79, 0x79, 0x64, 0x64, 0x64,
+0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x43b,
+0x27, 0x2e, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x79, 0x79, 0x79, 0x79,
+0x2e, 0x4d, 0x4d, 0x2e, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20,
+0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x202f,
+0x27, 0x4ab, 0x27, 0x2e, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x27, 0x64,
+0xe4, 0x27, 0x20, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79,
+0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x20, 0x64, 0x20, 0x4d, 0x4d,
+0x4d, 0x4d, 0x20, 0x27, 0x64, 0x69, 0x27, 0x20, 0x27, 0x75, 0x27, 0x20,
+0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x2e, 0x20,
+0x79, 0x79, 0x79, 0x79, 0x2e, 0x64, 0x2e, 0x20, 0x4d, 0x2e, 0x20, 0x79,
+0x79, 0x2e, 0x64, 0x64, 0x64, 0x64, 0x20, 0x64, 0x2e, 0x20, 0x4d, 0x4d,
+0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x20,
+0x27, 0x64, 0x65, 0x6e, 0x27, 0x20, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d,
+0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20,
+0x64, 0x2c, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79,
+0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf63,
+0xf7c, 0xf0b, 0x79, 0x79, 0x79, 0x79, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20,
+0xf5a, 0xf7a, 0xf66, 0xf0b, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20,
+0x64, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79,
+0x64, 0x64, 0x64, 0x64, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x2c,
+0x20, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x2f, 0x4d, 0x4d,
+0x2f, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x27, 0x6c, 0x61,
+0x27, 0x20, 0x64, 0x2d, 0x27, 0x61, 0x27, 0x20, 0x27, 0x64, 0x65, 0x27,
+0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64,
+0x64, 0x64, 0x2c, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x20, 0x27,
+0x6c, 0x69, 0x61, 0x27, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x2e, 0x4d,
+0x2e, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x20, 0x64, 0x20,
+0x27, 0x64, 0x69, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x64,
+0x61, 0x6c, 0x27, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64,
+0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x2e41, 0x20, 0x79, 0x79, 0x79,
+0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x27, 0x6d, 0x68, 0x27,
+0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64,
+0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x27, 0x64, 0x65, 0x27, 0x20, 0x4d,
+0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x64, 0x65, 0x27, 0x20, 0x79, 0x79, 0x79,
+0x79, 0x64, 0x64, 0x64, 0x64, 0x1365, 0x20, 0x64, 0x64, 0x20, 0x4d, 0x4d,
+0x4d, 0x4d, 0x20, 0x1218, 0x12d3, 0x120d, 0x1275, 0x20, 0x79, 0x79, 0x79, 0x79,
+0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x64, 0x20, 0x4d, 0x4d, 0x4d,
+0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c,
+0x20, 0x64, 0x20, 0x5d1, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79,
+0x79, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20,
+0x64, 0x2e, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x79, 0x79, 0x79, 0x79,
+0x2e, 0x20, 0x4d, 0x4d, 0x2e, 0x20, 0x64, 0x64, 0x2e, 0x64, 0x64, 0x64,
+0x64, 0x2c, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x2e, 0x20, 0x79,
+0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x20, 0x27, 0x6c, 0x65, 0x27,
+0x20, 0x64, 0x20, 0x27, 0x64, 0x65, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d,
+0x20, 0x79, 0x79, 0x79, 0x79, 0x4d, 0x4d, 0x2f, 0x64, 0x64, 0x2f, 0x79,
+0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x27,
+0x64, 0x69, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x64, 0x69,
+0x27, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x2f, 0x4d, 0x4d, 0x20,
+0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x202f, 0x27, 0x436, 0x27,
+0x2e, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x64, 0x64,
+0x64, 0x64, 0x79, 0x79, 0x79, 0x79, 0xb144, 0x20, 0x4d, 0x4d, 0x4d, 0x4d,
+0x20, 0x64, 0xc77c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x79, 0x79, 0x2e, 0x20,
+0x4d, 0x2e, 0x20, 0x64, 0x2e, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64,
+0x27, 0xea, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x27, 0x61, 0x27, 0x20,
+0x79, 0x79, 0x79, 0x79, 0x27, 0x61, 0x6e, 0x27, 0x79, 0x79, 0x79, 0x79,
+0x2d, 0x27, 0x436, 0x27, 0x2e, 0x2c, 0x20, 0x64, 0x2d, 0x4d, 0x4d, 0x4d,
+0x4d, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x20,
+0xe97, 0xeb5, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79,
+0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x27, 0x64, 0x69, 0x65,
+0x27, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79,
+0x79, 0x64, 0x20, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64,
+0x64, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x20, 0x27, 0x67, 0x61,
+0x64, 0x61, 0x27, 0x20, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x79,
+0x79, 0x79, 0x79, 0x20, 0x27, 0x6d, 0x27, 0x2e, 0x20, 0x4d, 0x4d, 0x4d,
+0x4d, 0x20, 0x64, 0x20, 0x27, 0x64, 0x27, 0x2e, 0x2c, 0x20, 0x64, 0x64,
+0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x27, 0x64, 0x65, 0x27,
+0x20, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79,
+0x79, 0x79, 0x79, 0x79, 0x79, 0x2c, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20,
+0x64, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c,
+0x20, 0x64, 0x20, 0x27, 0x74, 0x61, 0x27, 0x2019, 0x20, 0x4d, 0x4d, 0x4d,
+0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64,
+0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64,
+0x79, 0x79, 0x79, 0x79, 0x202f, 0x27, 0x43e, 0x43d, 0x44b, 0x27, 0x20, 0x4d,
+0x4d, 0x4d, 0x4d, 0x27, 0x44b, 0x43d, 0x27, 0x20, 0x64, 0x2c, 0x20, 0x64,
+0x64, 0x64, 0x64, 0x20, 0x27, 0x433, 0x430, 0x440, 0x430, 0x433, 0x27, 0x79,
+0x79, 0x79, 0x79, 0x20, 0x1823, 0x1828, 0x20, 0x180e, 0x180e, 0x180e, 0x1824, 0x20,
+0x4d, 0x4d, 0x4d, 0x4d, 0x180e, 0x180e, 0x1822, 0x1822, 0x1828, 0x64, 0x2e, 0x20,
+0x64, 0x64, 0x64, 0x64, 0x20, 0x180b, 0x182d, 0x1820, 0x1837, 0x1820, 0x182d, 0x64,
+0x64, 0x64, 0x64, 0x20, 0x2c, 0x20, 0x27, 0x6c, 0x79, 0x25b, 0x27, 0x30c,
+0x2bc, 0x20, 0x64, 0x20, 0x27, 0x6e, 0x61, 0x27, 0x20, 0x4d, 0x4d, 0x4d,
+0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x20,
+0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x64, 0x65, 0x27, 0x20,
+0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20,
+0x4d, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x202f, 0x27,
+0x430, 0x437, 0x27, 0x64, 0x64, 0x64, 0x64, 0x20, 0x62f, 0x20, 0x79, 0x79,
+0x79, 0x79, 0x20, 0x62f, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x64,
+0x64, 0x64, 0x64, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x20, 0x27, 0x6d,
+0x65, 0x74, 0x74, 0x61, 0x73, 0x27, 0x20, 0x64, 0x2e, 0x20, 0x4d, 0x4d,
+0x4d, 0x4d, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x27, 0x69, 0x6c, 0x73,
+0x27, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79,
+0x79, 0x79, 0x79, 0x79, 0x79, 0x202f, 0x27, 0x441, 0x44b, 0x43b, 0x27, 0x20,
+0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x20, 0x27, 0x43a, 0x4af, 0x43d, 0x44d,
+0x27, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x20,
+0x64, 0x20, 0x27, 0x64, 0x65, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20,
+0x27, 0x64, 0x65, 0x27, 0x20, 0x27, 0x73, 0x75, 0x27, 0x20, 0x79, 0x79,
+0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x20, 0x64, 0x64, 0x20, 0x27, 0x64,
+0x65, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x64, 0x65, 0x27,
+0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x60c, 0x20, 0x64,
+0x20, 0x712, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64,
+0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x202f,
+0x27, 0x435, 0x43b, 0x27, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c,
+0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2c, 0x20,
+0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0xe17, 0xe35, 0xe48, 0x20,
+0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x79,
+0x79, 0x79, 0x79, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0xf60, 0xf72, 0xf0b, 0xf5a,
+0xf7a, 0xf66, 0xf0b, 0x64, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64,
+0x64, 0x64, 0x1361, 0x20, 0x64, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20,
+0x12ee, 0x121d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x1363,
+0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79,
+0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x20,
+0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20,
+0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x202f, 0x27, 0x440,
+0x27, 0x2e, 0x64, 0x64, 0x64, 0x64, 0x60c, 0x20, 0x64, 0x20, 0x4d, 0x4d,
+0x4d, 0x4d, 0x60c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79,
+0x20, 0x64, 0x2d, 0x4d, 0x4d, 0x4d, 0x4d, 0x60c, 0x20, 0x64, 0x64, 0x64,
+0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x2d, 0x4d, 0x4d, 0x4d,
+0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x20,
+0x646, 0x686, 0x6cc, 0x20, 0x6cc, 0x6cc, 0x644, 0x20, 0x64, 0x20, 0x646, 0x686,
+0x6cc, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x64, 0x64, 0x64, 0x20,
+0x6a9, 0x648, 0x646, 0x6cc, 0x79, 0x79, 0x79, 0x79, 0x20, 0x4d, 0x4d, 0x4d,
+0x4d, 0x27, 0x61, 0x27, 0x20, 0x27, 0x64, 0x27, 0x2e, 0x20, 0x64, 0x27,
+0x69, 0x64, 0x27, 0x64, 0x64, 0x64, 0x64, 0x1365, 0x20, 0x64, 0x64, 0x20,
+0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x130b, 0x120b, 0x1233, 0x20, 0x79, 0x79, 0x79,
+0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d,
+0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20,
+0x64, 0x5d8, 0x5df, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79,
+0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d,
+0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64,
+0x20, 0x27, 0x6e, 0x65, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x2c, 0x20,
+0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x20, 0x64, 0x20, 0x4d,
+0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x64, 0x6f, 0x27, 0x20, 0x79, 0x79, 0x79,
+0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20,
+0x64, 0x20, 0x79, 0x79, 0x79, 0x79, 0x4d, 0x2f, 0x64, 0x2f, 0x79, 0x79,
+0x79, 0x79
};
-static const char16_t time_format_data[] = {
-0x48, 0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x74, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x41, 0x50,
-0x20, 0x74, 0x68, 0x3a, 0x6d, 0x6d, 0x20, 0x41, 0x50, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x41, 0x50, 0x2c,
-0x20, 0x74, 0x41, 0x50, 0x20, 0x68, 0x2e, 0x6d, 0x6d, 0x2e, 0x73, 0x73, 0x20, 0x74, 0x48, 0x48, 0x3a, 0x6d, 0x6d, 0x3a,
-0x73, 0x73, 0x20, 0x28, 0x74, 0x29, 0x48, 0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x2c, 0x20, 0x74, 0x48, 0x3a, 0x6d,
-0x6d, 0x3a, 0x73, 0x73, 0x20, 0x27, 0x447, 0x27, 0x2e, 0x20, 0x74, 0x48, 0x3a, 0x6d, 0x6d, 0x20, 0x27, 0x447, 0x27, 0x2e,
-0x74, 0x20, 0x48, 0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x41, 0x50, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20,
-0x5b, 0x74, 0x5d, 0x74, 0x20, 0x41, 0x50, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x42, 0x68, 0x3a, 0x6d, 0x6d, 0x3a,
-0x73, 0x73, 0x20, 0x5b, 0x74, 0x5d, 0x48, 0x48, 0x2e, 0x6d, 0x6d, 0x2e, 0x73, 0x73, 0x20, 0x74, 0xf46, 0xf74, 0xf0b, 0xf5a,
-0xf7c, 0xf51, 0xf0b, 0x20, 0x68, 0x20, 0xf66, 0xf90, 0xf62, 0xf0b, 0xf58, 0xf0b, 0x20, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x41,
-0x50, 0x20, 0x74, 0xf46, 0xf74, 0xf0b, 0xf5a, 0xf7c, 0xf51, 0xf0b, 0x20, 0x68, 0x20, 0xf66, 0xf90, 0xf62, 0xf0b, 0xf58, 0xf0b, 0x20,
-0x6d, 0x6d, 0x20, 0x41, 0x50, 0x48, 0x2d, 0x27, 0x61, 0x27, 0x20, 0x27, 0x68, 0x6f, 0x72, 0x6f, 0x27, 0x20, 0x27, 0x6b,
-0x61, 0x6a, 0x27, 0x20, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x74, 0x41, 0x50, 0x20, 0x27, 0x67, 0x61, 0x27, 0x20, 0x68, 0x3a,
-0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x74, 0x48, 0x20, 0x27, 0x68, 0x27, 0x20, 0x6d, 0x6d, 0x20, 0x27, 0x6d, 0x69, 0x6e,
-0x27, 0x20, 0x73, 0x73, 0x20, 0x27, 0x73, 0x27, 0x20, 0x74, 0x48, 0x48, 0x20, 0x27, 0x68, 0x27, 0x20, 0x6d, 0x6d, 0x20,
-0x27, 0x6d, 0x69, 0x6e, 0x27, 0x20, 0x73, 0x73, 0x20, 0x27, 0x73, 0x27, 0x20, 0x74, 0x48, 0x48, 0x2e, 0x6d, 0x6d, 0x3a,
-0x73, 0x73, 0x20, 0x27, 0x68, 0x27, 0x20, 0x74, 0x68, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x41, 0x50, 0x20,
-0x74, 0x68, 0x68, 0x3a, 0x6d, 0x6d, 0x20, 0x41, 0x50, 0x48, 0x6642, 0x6d, 0x6d, 0x5206, 0x73, 0x73, 0x79d2, 0x20, 0x74, 0x41,
-0x50, 0x20, 0x68, 0xc2dc, 0x20, 0x6d, 0xbd84, 0x20, 0x73, 0xcd08, 0x20, 0x74, 0x41, 0x50, 0x20, 0x68, 0x3a, 0x6d, 0x6d, 0x48,
-0x20, 0xec2, 0xea1, 0xe87, 0x20, 0x6d, 0x20, 0xe99, 0xeb2, 0xe97, 0xeb5, 0x20, 0x73, 0x73, 0x20, 0xea7, 0xeb4, 0xe99, 0xeb2, 0xe97,
-0xeb5, 0x20, 0x74, 0x27, 0x4b, 0x6c, 0x6f, 0x63, 0x6b, 0x27, 0x20, 0x48, 0x2e, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x28,
-0x74, 0x29, 0x27, 0x4b, 0x6c, 0x27, 0x2e, 0x20, 0x48, 0x2e, 0x6d, 0x6d, 0x27, 0x6b, 0x6c, 0x27, 0x2e, 0x20, 0x48, 0x48,
-0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x74, 0x74, 0x20, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x41, 0x50,
-0x41, 0x50, 0x20, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x74, 0x48, 0x20, 0xe19, 0xe32, 0xe2c, 0xe34, 0xe01, 0xe32,
-0x20, 0x6d, 0x6d, 0x20, 0xe19, 0xe32, 0xe17, 0xe35, 0x20, 0x73, 0x73, 0x20, 0xe27, 0xe34, 0xe19, 0xe32, 0xe17, 0xe35, 0x20, 0x74,
-0x48, 0x3a, 0x6d, 0x6d, 0x20, 0x27, 0x68, 0x6f, 0x64, 0x17a, 0x27, 0x2e
+static constexpr char16_t time_format_data[] = {
+0x48, 0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x74, 0x48, 0x48,
+0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x74, 0x74, 0x74, 0x74, 0x68,
+0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x202f, 0x41, 0x70, 0x20, 0x74, 0x74,
+0x74, 0x74, 0x68, 0x3a, 0x6d, 0x6d, 0x202f, 0x41, 0x70, 0x68, 0x3a, 0x6d,
+0x6d, 0x3a, 0x73, 0x73, 0x202f, 0x41, 0x70, 0x2c, 0x20, 0x74, 0x74, 0x74,
+0x74, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x41, 0x70, 0x20,
+0x74, 0x74, 0x74, 0x74, 0x68, 0x3a, 0x6d, 0x6d, 0x20, 0x41, 0x70, 0x41,
+0x70, 0x20, 0x68, 0x2e, 0x6d, 0x6d, 0x2e, 0x73, 0x73, 0x20, 0x74, 0x74,
+0x74, 0x74, 0x48, 0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x28,
+0x74, 0x74, 0x74, 0x74, 0x29, 0x48, 0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73,
+0x73, 0x2c, 0x20, 0x74, 0x74, 0x74, 0x74, 0x41, 0x70, 0x20, 0x68, 0x3a,
+0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x74, 0x74, 0x74, 0x74, 0x41, 0x70,
+0x20, 0x928, 0x93f, 0x20, 0x68, 0x3a, 0x6d, 0x6d, 0x48, 0x3a, 0x6d, 0x6d,
+0x3a, 0x73, 0x73, 0x20, 0x27, 0x447, 0x27, 0x2e, 0x20, 0x74, 0x74, 0x74,
+0x74, 0x74, 0x74, 0x74, 0x74, 0x20, 0x48, 0x48, 0x3a, 0x6d, 0x6d, 0x3a,
+0x73, 0x73, 0x41, 0x70, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20,
+0x5b, 0x74, 0x74, 0x74, 0x74, 0x5d, 0x74, 0x74, 0x74, 0x74, 0x20, 0x41,
+0x70, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x48, 0x48, 0x2e, 0x6d,
+0x6d, 0x2e, 0x73, 0x73, 0x20, 0x74, 0x74, 0x74, 0x74, 0xf46, 0xf74, 0xf0b,
+0xf5a, 0xf7c, 0xf51, 0xf0b, 0x20, 0x68, 0x20, 0xf66, 0xf90, 0xf62, 0xf0b, 0xf58,
+0xf0b, 0x20, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x41, 0x70, 0x20, 0x74,
+0x74, 0x74, 0x74, 0xf46, 0xf74, 0xf0b, 0xf5a, 0xf7c, 0xf51, 0xf0b, 0x20, 0x68,
+0x20, 0xf66, 0xf90, 0xf62, 0xf0b, 0xf58, 0xf0b, 0x20, 0x6d, 0x6d, 0x20, 0x41,
+0x70, 0x41, 0x70, 0x20, 0x27, 0x67, 0x61, 0x27, 0x20, 0x68, 0x3a, 0x6d,
+0x6d, 0x3a, 0x73, 0x73, 0x20, 0x74, 0x74, 0x74, 0x74, 0x48, 0x20, 0x27,
+0x68, 0x27, 0x20, 0x6d, 0x6d, 0x20, 0x27, 0x6d, 0x69, 0x6e, 0x27, 0x20,
+0x73, 0x73, 0x20, 0x27, 0x73, 0x27, 0x20, 0x74, 0x74, 0x74, 0x74, 0x48,
+0x48, 0x20, 0x27, 0x68, 0x27, 0x20, 0x6d, 0x6d, 0x20, 0x27, 0x6d, 0x69,
+0x6e, 0x27, 0x20, 0x73, 0x73, 0x20, 0x27, 0x73, 0x27, 0x20, 0x74, 0x74,
+0x74, 0x74, 0x48, 0x48, 0x2e, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x27,
+0x68, 0x27, 0x20, 0x74, 0x74, 0x74, 0x74, 0x68, 0x68, 0x3a, 0x6d, 0x6d,
+0x3a, 0x73, 0x73, 0x20, 0x41, 0x70, 0x20, 0x74, 0x74, 0x74, 0x74, 0x68,
+0x68, 0x3a, 0x6d, 0x6d, 0x20, 0x41, 0x70, 0x48, 0x6642, 0x6d, 0x6d, 0x5206,
+0x73, 0x73, 0x79d2, 0x20, 0x74, 0x74, 0x74, 0x74, 0x41, 0x70, 0x20, 0x68,
+0xc2dc, 0x20, 0x6d, 0xbd84, 0x20, 0x73, 0xcd08, 0x20, 0x74, 0x74, 0x74, 0x74,
+0x48, 0x20, 0xec2, 0xea1, 0xe87, 0x20, 0x6d, 0x20, 0xe99, 0xeb2, 0xe97, 0xeb5,
+0x20, 0x73, 0x73, 0x20, 0xea7, 0xeb4, 0xe99, 0xeb2, 0xe97, 0xeb5, 0x20, 0x74,
+0x74, 0x74, 0x74, 0x27, 0x4b, 0x6c, 0x6f, 0x63, 0x6b, 0x27, 0x20, 0x48,
+0x2e, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x28, 0x74, 0x74, 0x74, 0x74,
+0x29, 0x27, 0x4b, 0x6c, 0x27, 0x2e, 0x20, 0x48, 0x2e, 0x6d, 0x6d, 0x68,
+0x2e, 0x6d, 0x6d, 0x2e, 0x73, 0x73, 0x20, 0x41, 0x70, 0x20, 0x74, 0x74,
+0x74, 0x74, 0x68, 0x2e, 0x6d, 0x6d, 0x2e, 0x20, 0x41, 0x70, 0x27, 0x6b,
+0x6c, 0x27, 0x2e, 0x20, 0x48, 0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73,
+0x20, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x20, 0x68, 0x3a,
+0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x202f, 0x41, 0x70, 0x48, 0x27, 0x68, 0x27,
+0x6d, 0x6d, 0x48, 0x20, 0xe19, 0xe32, 0xe2c, 0xe34, 0xe01, 0xe32, 0x20, 0x6d,
+0x6d, 0x20, 0xe19, 0xe32, 0xe17, 0xe35, 0x20, 0x73, 0x73, 0x20, 0xe27, 0xe34,
+0xe19, 0xe32, 0xe17, 0xe35, 0x20, 0x74, 0x74, 0x74, 0x74, 0x68, 0x68, 0x3a,
+0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x202f, 0x41, 0x70, 0x20, 0x74, 0x74, 0x74,
+0x74, 0x68, 0x68, 0x3a, 0x6d, 0x6d, 0x202f, 0x41, 0x70, 0x48, 0x3a, 0x6d,
+0x6d, 0x20, 0x27, 0x68, 0x6f, 0x64, 0x17a, 0x27, 0x2e
};
-static const char16_t days_data[] = {
-0x53, 0x75, 0x6e, 0x64, 0x61, 0x79, 0x3b, 0x4d, 0x6f, 0x6e, 0x64, 0x61, 0x79, 0x3b, 0x54, 0x75, 0x65, 0x73, 0x64, 0x61,
-0x79, 0x3b, 0x57, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x64, 0x61, 0x79, 0x3b, 0x54, 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, 0x79,
-0x3b, 0x46, 0x72, 0x69, 0x64, 0x61, 0x79, 0x3b, 0x53, 0x61, 0x74, 0x75, 0x72, 0x64, 0x61, 0x79, 0x53, 0x75, 0x6e, 0x3b,
-0x4d, 0x6f, 0x6e, 0x3b, 0x54, 0x75, 0x65, 0x3b, 0x57, 0x65, 0x64, 0x3b, 0x54, 0x68, 0x75, 0x3b, 0x46, 0x72, 0x69, 0x3b,
-0x53, 0x61, 0x74, 0x53, 0x3b, 0x4d, 0x3b, 0x54, 0x3b, 0x57, 0x3b, 0x54, 0x3b, 0x46, 0x3b, 0x53, 0x37, 0x3b, 0x31, 0x3b,
-0x32, 0x3b, 0x33, 0x3b, 0x34, 0x3b, 0x35, 0x3b, 0x36, 0x53, 0x6f, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x4d, 0x61, 0x61, 0x6e,
-0x64, 0x61, 0x67, 0x3b, 0x44, 0x69, 0x6e, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x57, 0x6f, 0x65, 0x6e, 0x73, 0x64, 0x61, 0x67,
-0x3b, 0x44, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x64, 0x61, 0x67, 0x3b, 0x56, 0x72, 0x79, 0x64, 0x61, 0x67, 0x3b, 0x53, 0x61,
-0x74, 0x65, 0x72, 0x64, 0x61, 0x67, 0x53, 0x6f, 0x2e, 0x3b, 0x4d, 0x61, 0x2e, 0x3b, 0x44, 0x69, 0x2e, 0x3b, 0x57, 0x6f,
-0x2e, 0x3b, 0x44, 0x6f, 0x2e, 0x3b, 0x56, 0x72, 0x2e, 0x3b, 0x53, 0x61, 0x2e, 0x53, 0x3b, 0x4d, 0x3b, 0x44, 0x3b, 0x57,
-0x3b, 0x44, 0x3b, 0x56, 0x3b, 0x53, 0x74, 0x73, 0x75, 0x294, 0x6e, 0x74, 0x73, 0x268, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75,
-0x6b, 0x70, 0xe0, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, 0x67, 0x68, 0x254, 0x65, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, 0x74,
-0x254, 0x300, 0x6d, 0x6c, 0xf2, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, 0x6d, 0xe8, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, 0x67,
-0x68, 0x268, 0x302, 0x6d, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x6e, 0x64, 0x7a, 0x268, 0x6b, 0x254, 0x294, 0x254, 0x6e, 0x74, 0x73,
-0x3b, 0x6b, 0x70, 0x61, 0x3b, 0x67, 0x68, 0x254, 0x3b, 0x74, 0x254, 0x6d, 0x3b, 0x75, 0x6d, 0x65, 0x3b, 0x67, 0x68, 0x268,
-0x3b, 0x64, 0x7a, 0x6b, 0x6e, 0x3b, 0x6b, 0x3b, 0x67, 0x3b, 0x74, 0x3b, 0x75, 0x3b, 0x67, 0x3b, 0x64, 0x4b, 0x77, 0x65,
-0x73, 0x69, 0x64, 0x61, 0x3b, 0x44, 0x77, 0x6f, 0x77, 0x64, 0x61, 0x3b, 0x42, 0x65, 0x6e, 0x61, 0x64, 0x61, 0x3b, 0x57,
-0x75, 0x6b, 0x75, 0x64, 0x61, 0x3b, 0x59, 0x61, 0x77, 0x64, 0x61, 0x3b, 0x46, 0x69, 0x64, 0x61, 0x3b, 0x4d, 0x65, 0x6d,
-0x65, 0x6e, 0x65, 0x64, 0x61, 0x4b, 0x77, 0x65, 0x3b, 0x44, 0x77, 0x6f, 0x3b, 0x42, 0x65, 0x6e, 0x3b, 0x57, 0x75, 0x6b,
-0x3b, 0x59, 0x61, 0x77, 0x3b, 0x46, 0x69, 0x61, 0x3b, 0x4d, 0x65, 0x6d, 0x4b, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x57, 0x3b,
-0x59, 0x3b, 0x46, 0x3b, 0x4d, 0x65, 0x20, 0x64, 0x69, 0x65, 0x6c, 0x3b, 0x65, 0x20, 0x68, 0xeb, 0x6e, 0xeb, 0x3b, 0x65,
-0x20, 0x6d, 0x61, 0x72, 0x74, 0xeb, 0x3b, 0x65, 0x20, 0x6d, 0xeb, 0x72, 0x6b, 0x75, 0x72, 0xeb, 0x3b, 0x65, 0x20, 0x65,
-0x6e, 0x6a, 0x74, 0x65, 0x3b, 0x65, 0x20, 0x70, 0x72, 0x65, 0x6d, 0x74, 0x65, 0x3b, 0x65, 0x20, 0x73, 0x68, 0x74, 0x75,
-0x6e, 0xeb, 0x64, 0x69, 0x65, 0x3b, 0x68, 0xeb, 0x6e, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d, 0xeb, 0x72, 0x3b, 0x65, 0x6e,
-0x6a, 0x3b, 0x70, 0x72, 0x65, 0x3b, 0x73, 0x68, 0x74, 0x44, 0x69, 0x65, 0x3b, 0x48, 0xeb, 0x6e, 0x3b, 0x4d, 0x61, 0x72,
-0x3b, 0x4d, 0xeb, 0x72, 0x3b, 0x45, 0x6e, 0x6a, 0x3b, 0x50, 0x72, 0x65, 0x3b, 0x53, 0x68, 0x74, 0x64, 0x3b, 0x68, 0x3b,
-0x6d, 0x3b, 0x6d, 0x3b, 0x65, 0x3b, 0x70, 0x3b, 0x73, 0x68, 0x12a5, 0x1211, 0x12f5, 0x3b, 0x1230, 0x129e, 0x3b, 0x121b, 0x12ad, 0x1230,
-0x129e, 0x3b, 0x1228, 0x1261, 0x12d5, 0x3b, 0x1210, 0x1219, 0x1235, 0x3b, 0x12d3, 0x122d, 0x1265, 0x3b, 0x1245, 0x12f3, 0x121c, 0x12a5, 0x1211, 0x12f5,
-0x3b, 0x1230, 0x129e, 0x3b, 0x121b, 0x12ad, 0x1230, 0x3b, 0x1228, 0x1261, 0x12d5, 0x3b, 0x1210, 0x1219, 0x1235, 0x3b, 0x12d3, 0x122d, 0x1265, 0x3b,
-0x1245, 0x12f3, 0x121c, 0x12a5, 0x3b, 0x1230, 0x3b, 0x121b, 0x3b, 0x1228, 0x3b, 0x1210, 0x3b, 0x12d3, 0x3b, 0x1245, 0x627, 0x644, 0x623, 0x62d,
-0x62f, 0x3b, 0x627, 0x644, 0x627, 0x62b, 0x646, 0x64a, 0x646, 0x3b, 0x627, 0x644, 0x62b, 0x644, 0x627, 0x62b, 0x627, 0x621, 0x3b, 0x627,
-0x644, 0x623, 0x631, 0x628, 0x639, 0x627, 0x621, 0x3b, 0x627, 0x644, 0x62e, 0x645, 0x64a, 0x633, 0x3b, 0x627, 0x644, 0x62c, 0x645, 0x639,
-0x629, 0x3b, 0x627, 0x644, 0x633, 0x628, 0x62a, 0x62d, 0x3b, 0x646, 0x3b, 0x62b, 0x3b, 0x631, 0x3b, 0x62e, 0x3b, 0x62c, 0x3b, 0x633,
-0x56f, 0x56b, 0x580, 0x561, 0x56f, 0x56b, 0x3b, 0x565, 0x580, 0x56f, 0x578, 0x582, 0x577, 0x561, 0x562, 0x569, 0x56b, 0x3b, 0x565, 0x580,
-0x565, 0x584, 0x577, 0x561, 0x562, 0x569, 0x56b, 0x3b, 0x579, 0x578, 0x580, 0x565, 0x584, 0x577, 0x561, 0x562, 0x569, 0x56b, 0x3b, 0x570,
-0x56b, 0x576, 0x563, 0x577, 0x561, 0x562, 0x569, 0x56b, 0x3b, 0x578, 0x582, 0x580, 0x562, 0x561, 0x569, 0x3b, 0x577, 0x561, 0x562, 0x561,
-0x569, 0x56f, 0x56b, 0x580, 0x3b, 0x565, 0x580, 0x56f, 0x3b, 0x565, 0x580, 0x584, 0x3b, 0x579, 0x580, 0x584, 0x3b, 0x570, 0x576, 0x563,
-0x3b, 0x578, 0x582, 0x580, 0x3b, 0x577, 0x562, 0x569, 0x53f, 0x3b, 0x535, 0x3b, 0x535, 0x3b, 0x549, 0x3b, 0x540, 0x3b, 0x548, 0x3b,
-0x547, 0x9a6, 0x9c7, 0x993, 0x9ac, 0x9be, 0x9f0, 0x3b, 0x9b8, 0x9cb, 0x9ae, 0x9ac, 0x9be, 0x9f0, 0x3b, 0x9ae, 0x999, 0x9cd, 0x997, 0x9b2,
-0x9ac, 0x9be, 0x9f0, 0x3b, 0x9ac, 0x9c1, 0x9a7, 0x9ac, 0x9be, 0x9f0, 0x3b, 0x9ac, 0x9c3, 0x9b9, 0x9b8, 0x9cd, 0x9aa, 0x9a4, 0x9bf, 0x9ac,
-0x9be, 0x9f0, 0x3b, 0x9b6, 0x9c1, 0x995, 0x9cd, 0x9f0, 0x9ac, 0x9be, 0x9f0, 0x3b, 0x9b6, 0x9a8, 0x9bf, 0x9ac, 0x9be, 0x9f0, 0x9a6, 0x9c7,
-0x993, 0x3b, 0x9b8, 0x9cb, 0x9ae, 0x3b, 0x9ae, 0x999, 0x9cd, 0x997, 0x9b2, 0x3b, 0x9ac, 0x9c1, 0x9a7, 0x3b, 0x9ac, 0x9c3, 0x9b9, 0x3b,
-0x9b6, 0x9c1, 0x995, 0x9cd, 0x9f0, 0x3b, 0x9b6, 0x9a8, 0x9bf, 0x9a6, 0x3b, 0x9b8, 0x3b, 0x9ae, 0x3b, 0x9ac, 0x3b, 0x9ac, 0x3b, 0x9b6,
-0x3b, 0x9b6, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x6c, 0x6c, 0x75, 0x6e, 0x65, 0x73, 0x3b, 0x6d, 0x61, 0x72,
-0x74, 0x65, 0x73, 0x3b, 0x6d, 0x69, 0xe9, 0x72, 0x63, 0x6f, 0x6c, 0x65, 0x73, 0x3b, 0x78, 0x75, 0x65, 0x76, 0x65, 0x73,
-0x3b, 0x76, 0x69, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x75, 0x64, 0x6f, 0x6d, 0x3b, 0x6c,
-0x6c, 0x75, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d, 0x69, 0xe9, 0x3b, 0x78, 0x75, 0x65, 0x3b, 0x76, 0x69, 0x65, 0x3b, 0x73,
-0xe1, 0x62, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x58, 0x3b, 0x56, 0x3b, 0x53, 0x4a, 0x75, 0x6d, 0x61, 0x70,
-0x69, 0x6c, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65,
-0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49,
-0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x4a, 0x70, 0x69, 0x3b, 0x4a, 0x74,
-0x74, 0x3b, 0x4a, 0x6e, 0x6e, 0x3b, 0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x6d, 0x3b, 0x4a, 0x6d,
-0x6f, 0x4a, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x4a, 0x62, 0x61, 0x7a, 0x61, 0x72, 0x3b,
-0x62, 0x61, 0x7a, 0x61, 0x72, 0x20, 0x65, 0x72, 0x74, 0x259, 0x73, 0x69, 0x3b, 0xe7, 0x259, 0x72, 0x15f, 0x259, 0x6e, 0x62,
-0x259, 0x20, 0x61, 0x78, 0x15f, 0x61, 0x6d, 0x131, 0x3b, 0xe7, 0x259, 0x72, 0x15f, 0x259, 0x6e, 0x62, 0x259, 0x3b, 0x63, 0xfc,
-0x6d, 0x259, 0x20, 0x61, 0x78, 0x15f, 0x61, 0x6d, 0x131, 0x3b, 0x63, 0xfc, 0x6d, 0x259, 0x3b, 0x15f, 0x259, 0x6e, 0x62, 0x259,
-0x42, 0x2e, 0x3b, 0x42, 0x2e, 0x45, 0x2e, 0x3b, 0xc7, 0x2e, 0x41, 0x2e, 0x3b, 0xc7, 0x2e, 0x3b, 0x43, 0x2e, 0x41, 0x2e,
-0x3b, 0x43, 0x2e, 0x3b, 0x15e, 0x2e, 0x42, 0x2e, 0x3b, 0x42, 0x2e, 0x65, 0x2e, 0x3b, 0xc7, 0x2e, 0x61, 0x2e, 0x3b, 0xc7,
-0x2e, 0x3b, 0x43, 0x2e, 0x61, 0x2e, 0x3b, 0x43, 0x2e, 0x3b, 0x15e, 0x2e, 0x431, 0x430, 0x437, 0x430, 0x440, 0x3b, 0x431, 0x430,
-0x437, 0x430, 0x440, 0x20, 0x435, 0x440, 0x442, 0x4d9, 0x441, 0x438, 0x3b, 0x447, 0x4d9, 0x440, 0x448, 0x4d9, 0x43d, 0x431, 0x4d9, 0x20,
-0x430, 0x445, 0x448, 0x430, 0x43c, 0x44b, 0x3b, 0x447, 0x4d9, 0x440, 0x448, 0x4d9, 0x43d, 0x431, 0x4d9, 0x3b, 0x4b9, 0x4af, 0x43c, 0x4d9,
-0x20, 0x430, 0x445, 0x448, 0x430, 0x43c, 0x44b, 0x3b, 0x4b9, 0x4af, 0x43c, 0x4d9, 0x3b, 0x448, 0x4d9, 0x43d, 0x431, 0x4d9, 0x411, 0x2e,
-0x3b, 0x411, 0x2e, 0x415, 0x2e, 0x3b, 0x427, 0x2e, 0x410, 0x2e, 0x3b, 0x427, 0x2e, 0x3b, 0x4b8, 0x2e, 0x410, 0x2e, 0x3b, 0x4b8,
-0x2e, 0x3b, 0x428, 0x2e, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x1dd, 0x3b, 0x6c, 0x1dd, 0x6e, 0x64, 0xed, 0x3b, 0x6d, 0x61, 0x61,
-0x64, 0xed, 0x3b, 0x6d, 0x25b, 0x6b, 0x72, 0x25b, 0x64, 0xed, 0x3b, 0x6a, 0x1dd, 0x1dd, 0x64, 0xed, 0x3b, 0x6a, 0xfa, 0x6d,
-0x62, 0xe1, 0x3b, 0x73, 0x61, 0x6d, 0x64, 0xed, 0x73, 0x254, 0x301, 0x6e, 0x3b, 0x6c, 0x1dd, 0x6e, 0x3b, 0x6d, 0x61, 0x61,
-0x3b, 0x6d, 0x25b, 0x6b, 0x3b, 0x6a, 0x1dd, 0x1dd, 0x3b, 0x6a, 0xfa, 0x6d, 0x3b, 0x73, 0x61, 0x6d, 0x73, 0x3b, 0x6c, 0x3b,
-0x6d, 0x3b, 0x6d, 0x3b, 0x6a, 0x3b, 0x6a, 0x3b, 0x73, 0x6b, 0x61, 0x72, 0x69, 0x3b, 0x6e, 0x74, 0x25b, 0x6e, 0x25b, 0x3b,
-0x74, 0x61, 0x72, 0x61, 0x74, 0x61, 0x3b, 0x61, 0x72, 0x61, 0x62, 0x61, 0x3b, 0x61, 0x6c, 0x61, 0x6d, 0x69, 0x73, 0x61,
-0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x73, 0x69, 0x62, 0x69, 0x72, 0x69, 0x6b, 0x61, 0x72, 0x3b, 0x6e, 0x74, 0x25b, 0x3b,
-0x74, 0x61, 0x72, 0x3b, 0x61, 0x72, 0x61, 0x3b, 0x61, 0x6c, 0x61, 0x3b, 0x6a, 0x75, 0x6d, 0x3b, 0x73, 0x69, 0x62, 0x4b,
-0x3b, 0x4e, 0x3b, 0x54, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x4a, 0x3b, 0x53, 0x9b0, 0x9ac, 0x9bf, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9b8,
-0x9cb, 0x9ae, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9ae, 0x999, 0x9cd, 0x997, 0x9b2, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9ac, 0x9c1, 0x9a7, 0x9ac, 0x9be,
-0x9b0, 0x3b, 0x9ac, 0x9c3, 0x9b9, 0x9b8, 0x9cd, 0x9aa, 0x9a4, 0x9bf, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9b6, 0x9c1, 0x995, 0x9cd, 0x9b0, 0x9ac,
-0x9be, 0x9b0, 0x3b, 0x9b6, 0x9a8, 0x9bf, 0x9ac, 0x9be, 0x9b0, 0x9b0, 0x9ac, 0x9bf, 0x3b, 0x9b8, 0x9cb, 0x9ae, 0x3b, 0x9ae, 0x999, 0x9cd,
-0x997, 0x9b2, 0x3b, 0x9ac, 0x9c1, 0x9a7, 0x3b, 0x9ac, 0x9c3, 0x9b9, 0x9b8, 0x9cd, 0x9aa, 0x9a4, 0x9bf, 0x3b, 0x9b6, 0x9c1, 0x995, 0x9cd,
-0x9b0, 0x3b, 0x9b6, 0x9a8, 0x9bf, 0x9b0, 0x3b, 0x9b8, 0x9cb, 0x3b, 0x9ae, 0x3b, 0x9ac, 0x9c1, 0x3b, 0x9ac, 0x9c3, 0x3b, 0x9b6, 0x9c1,
-0x3b, 0x9b6, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6e, 0x254, 0x302, 0x79, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6e, 0x6a, 0x61,
-0x14b, 0x67, 0x75, 0x6d, 0x62, 0x61, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0xfb, 0x6d, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20,
-0x14b, 0x67, 0xea, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6d, 0x62, 0x254, 0x6b, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6b,
-0x254, 0x254, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6a, 0xf4, 0x6e, 0x6e, 0x254, 0x79, 0x3b, 0x6e, 0x6a, 0x61, 0x3b, 0x75,
-0x75, 0x6d, 0x3b, 0x14b, 0x67, 0x65, 0x3b, 0x6d, 0x62, 0x254, 0x3b, 0x6b, 0x254, 0x254, 0x3b, 0x6a, 0x6f, 0x6e, 0x6e, 0x3b,
-0x6e, 0x3b, 0x75, 0x3b, 0x14b, 0x3b, 0x6d, 0x3b, 0x6b, 0x3b, 0x6a, 0x69, 0x67, 0x61, 0x6e, 0x64, 0x65, 0x61, 0x3b, 0x61,
-0x73, 0x74, 0x65, 0x6c, 0x65, 0x68, 0x65, 0x6e, 0x61, 0x3b, 0x61, 0x73, 0x74, 0x65, 0x61, 0x72, 0x74, 0x65, 0x61, 0x3b,
-0x61, 0x73, 0x74, 0x65, 0x61, 0x7a, 0x6b, 0x65, 0x6e, 0x61, 0x3b, 0x6f, 0x73, 0x74, 0x65, 0x67, 0x75, 0x6e, 0x61, 0x3b,
-0x6f, 0x73, 0x74, 0x69, 0x72, 0x61, 0x6c, 0x61, 0x3b, 0x6c, 0x61, 0x72, 0x75, 0x6e, 0x62, 0x61, 0x74, 0x61, 0x69, 0x67,
-0x2e, 0x3b, 0x61, 0x6c, 0x2e, 0x3b, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x7a, 0x2e, 0x3b, 0x6f, 0x67, 0x2e, 0x3b, 0x6f, 0x72,
-0x2e, 0x3b, 0x6c, 0x72, 0x2e, 0x49, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x4f, 0x3b, 0x4f, 0x3b, 0x4c, 0x43d, 0x44f,
-0x434, 0x437, 0x435, 0x43b, 0x44f, 0x3b, 0x43f, 0x430, 0x43d, 0x44f, 0x434, 0x437, 0x435, 0x43b, 0x430, 0x43a, 0x3b, 0x430, 0x45e, 0x442,
-0x43e, 0x440, 0x430, 0x43a, 0x3b, 0x441, 0x435, 0x440, 0x430, 0x434, 0x430, 0x3b, 0x447, 0x430, 0x446, 0x432, 0x435, 0x440, 0x3b, 0x43f,
-0x44f, 0x442, 0x43d, 0x456, 0x446, 0x430, 0x3b, 0x441, 0x443, 0x431, 0x43e, 0x442, 0x430, 0x43d, 0x434, 0x3b, 0x43f, 0x43d, 0x3b, 0x430,
-0x45e, 0x3b, 0x441, 0x440, 0x3b, 0x447, 0x446, 0x3b, 0x43f, 0x442, 0x3b, 0x441, 0x431, 0x43d, 0x3b, 0x43f, 0x3b, 0x430, 0x3b, 0x441,
-0x3b, 0x447, 0x3b, 0x43f, 0x3b, 0x441, 0x50, 0x61, 0x20, 0x4d, 0x75, 0x6c, 0x75, 0x6e, 0x67, 0x75, 0x3b, 0x50, 0x61, 0x6c,
-0x69, 0x63, 0x68, 0x69, 0x6d, 0x6f, 0x3b, 0x50, 0x61, 0x6c, 0x69, 0x63, 0x68, 0x69, 0x62, 0x75, 0x6c, 0x69, 0x3b, 0x50,
-0x61, 0x6c, 0x69, 0x63, 0x68, 0x69, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x50, 0x61, 0x6c, 0x69, 0x63, 0x68, 0x69, 0x6e, 0x65,
-0x3b, 0x50, 0x61, 0x6c, 0x69, 0x63, 0x68, 0x69, 0x73, 0x61, 0x6e, 0x6f, 0x3b, 0x50, 0x61, 0x63, 0x68, 0x69, 0x62, 0x65,
-0x6c, 0x75, 0x73, 0x68, 0x69, 0x70, 0x61, 0x20, 0x6d, 0x75, 0x6c, 0x75, 0x6e, 0x67, 0x75, 0x3b, 0x70, 0x61, 0x20, 0x73,
-0x68, 0x61, 0x68, 0x75, 0x76, 0x69, 0x6c, 0x75, 0x68, 0x61, 0x3b, 0x70, 0x61, 0x20, 0x68, 0x69, 0x76, 0x69, 0x6c, 0x69,
-0x3b, 0x70, 0x61, 0x20, 0x68, 0x69, 0x64, 0x61, 0x74, 0x75, 0x3b, 0x70, 0x61, 0x20, 0x68, 0x69, 0x74, 0x61, 0x79, 0x69,
-0x3b, 0x70, 0x61, 0x20, 0x68, 0x69, 0x68, 0x61, 0x6e, 0x75, 0x3b, 0x70, 0x61, 0x20, 0x73, 0x68, 0x61, 0x68, 0x75, 0x6c,
-0x65, 0x6d, 0x62, 0x65, 0x6c, 0x61, 0x4d, 0x75, 0x6c, 0x3b, 0x56, 0x69, 0x6c, 0x3b, 0x48, 0x69, 0x76, 0x3b, 0x48, 0x69,
-0x64, 0x3b, 0x48, 0x69, 0x74, 0x3b, 0x48, 0x69, 0x68, 0x3b, 0x4c, 0x65, 0x6d, 0x4d, 0x3b, 0x4a, 0x3b, 0x48, 0x3b, 0x48,
-0x3b, 0x48, 0x3b, 0x57, 0x3b, 0x4a, 0x930, 0x92c, 0x93f, 0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x92e, 0x92c, 0x93e, 0x930, 0x3b, 0x92e,
-0x902, 0x917, 0x932, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x941, 0x926, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x93f, 0x938, 0x925, 0x93f, 0x92c,
-0x93e, 0x930, 0x3b, 0x938, 0x941, 0x916, 0x941, 0x930, 0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x941, 0x928, 0x93f, 0x92c, 0x93e, 0x930, 0x930,
-0x92c, 0x93f, 0x3b, 0x938, 0x92e, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x3b, 0x92c, 0x941, 0x926, 0x3b, 0x92c, 0x93f, 0x938, 0x925, 0x93f,
-0x3b, 0x938, 0x941, 0x916, 0x941, 0x930, 0x3b, 0x938, 0x941, 0x928, 0x93f, 0x930, 0x3b, 0x938, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941,
-0x3b, 0x92c, 0x93f, 0x3b, 0x938, 0x941, 0x3b, 0x938, 0x941, 0x6e, 0x65, 0x64, 0x6a, 0x65, 0x6c, 0x6a, 0x61, 0x3b, 0x70, 0x6f,
-0x6e, 0x65, 0x64, 0x6a, 0x65, 0x6c, 0x6a, 0x61, 0x6b, 0x3b, 0x75, 0x74, 0x6f, 0x72, 0x61, 0x6b, 0x3b, 0x73, 0x72, 0x69,
-0x6a, 0x65, 0x64, 0x61, 0x3b, 0x10d, 0x65, 0x74, 0x76, 0x72, 0x74, 0x61, 0x6b, 0x3b, 0x70, 0x65, 0x74, 0x61, 0x6b, 0x3b,
-0x73, 0x75, 0x62, 0x6f, 0x74, 0x61, 0x6e, 0x65, 0x64, 0x3b, 0x70, 0x6f, 0x6e, 0x3b, 0x75, 0x74, 0x6f, 0x3b, 0x73, 0x72,
-0x69, 0x3b, 0x10d, 0x65, 0x74, 0x3b, 0x70, 0x65, 0x74, 0x3b, 0x73, 0x75, 0x62, 0x6e, 0x3b, 0x70, 0x3b, 0x75, 0x3b, 0x73,
-0x3b, 0x10d, 0x3b, 0x70, 0x3b, 0x73, 0x4e, 0x3b, 0x50, 0x3b, 0x55, 0x3b, 0x53, 0x3b, 0x10c, 0x3b, 0x50, 0x3b, 0x53, 0x43d,
-0x435, 0x434, 0x458, 0x435, 0x459, 0x430, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x458, 0x435, 0x459, 0x430, 0x43a, 0x3b, 0x443, 0x442,
-0x43e, 0x440, 0x430, 0x43a, 0x3b, 0x441, 0x440, 0x438, 0x458, 0x435, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x440, 0x442, 0x430,
-0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x430, 0x43a, 0x3b, 0x441, 0x443, 0x431, 0x43e, 0x442, 0x430, 0x43d, 0x435, 0x434, 0x3b, 0x43f, 0x43e,
-0x43d, 0x3b, 0x443, 0x442, 0x43e, 0x3b, 0x441, 0x440, 0x438, 0x3b, 0x447, 0x435, 0x442, 0x3b, 0x43f, 0x435, 0x442, 0x3b, 0x441, 0x443,
-0x431, 0x43d, 0x3b, 0x43f, 0x3b, 0x443, 0x3b, 0x441, 0x3b, 0x447, 0x3b, 0x43f, 0x3b, 0x441, 0x53, 0x75, 0x6c, 0x3b, 0x4c, 0x75,
-0x6e, 0x3b, 0x4d, 0x65, 0x75, 0x72, 0x7a, 0x68, 0x3b, 0x4d, 0x65, 0x72, 0x63, 0x2bc, 0x68, 0x65, 0x72, 0x3b, 0x59, 0x61,
-0x6f, 0x75, 0x3b, 0x47, 0x77, 0x65, 0x6e, 0x65, 0x72, 0x3b, 0x53, 0x61, 0x64, 0x6f, 0x72, 0x6e, 0x53, 0x75, 0x6c, 0x3b,
-0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x65, 0x75, 0x2e, 0x3b, 0x4d, 0x65, 0x72, 0x2e, 0x3b, 0x59, 0x61, 0x6f, 0x75, 0x3b, 0x47,
-0x77, 0x65, 0x2e, 0x3b, 0x53, 0x61, 0x64, 0x2e, 0x53, 0x75, 0x3b, 0x4c, 0x3b, 0x4d, 0x7a, 0x3b, 0x4d, 0x63, 0x3b, 0x59,
-0x3b, 0x47, 0x3b, 0x53, 0x61, 0x43d, 0x435, 0x434, 0x435, 0x43b, 0x44f, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x435, 0x43b, 0x43d,
-0x438, 0x43a, 0x3b, 0x432, 0x442, 0x43e, 0x440, 0x43d, 0x438, 0x43a, 0x3b, 0x441, 0x440, 0x44f, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442,
-0x432, 0x44a, 0x440, 0x442, 0x44a, 0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x44a, 0x43a, 0x3b, 0x441, 0x44a, 0x431, 0x43e, 0x442, 0x430, 0x43d,
-0x434, 0x3b, 0x43f, 0x43d, 0x3b, 0x432, 0x442, 0x3b, 0x441, 0x440, 0x3b, 0x447, 0x442, 0x3b, 0x43f, 0x442, 0x3b, 0x441, 0x431, 0x43d,
-0x3b, 0x43f, 0x3b, 0x432, 0x3b, 0x441, 0x3b, 0x447, 0x3b, 0x43f, 0x3b, 0x441, 0x1010, 0x1014, 0x1004, 0x103a, 0x1039, 0x1002, 0x1014, 0x103d,
-0x1031, 0x3b, 0x1010, 0x1014, 0x1004, 0x103a, 0x1039, 0x101c, 0x102c, 0x3b, 0x1021, 0x1004, 0x103a, 0x1039, 0x1002, 0x102b, 0x3b, 0x1017, 0x102f, 0x1012,
-0x1039, 0x1013, 0x101f, 0x1030, 0x1038, 0x3b, 0x1000, 0x103c, 0x102c, 0x101e, 0x1015, 0x1010, 0x1031, 0x1038, 0x3b, 0x101e, 0x1031, 0x102c, 0x1000, 0x103c,
-0x102c, 0x3b, 0x1005, 0x1014, 0x1031, 0x1010, 0x3b, 0x1010, 0x3b, 0x1021, 0x3b, 0x1017, 0x3b, 0x1000, 0x3b, 0x101e, 0x3b, 0x1005, 0x661f, 0x671f,
-0x65e5, 0x3b, 0x661f, 0x671f, 0x4e00, 0x3b, 0x661f, 0x671f, 0x4e8c, 0x3b, 0x661f, 0x671f, 0x4e09, 0x3b, 0x661f, 0x671f, 0x56db, 0x3b, 0x661f, 0x671f,
-0x4e94, 0x3b, 0x661f, 0x671f, 0x516d, 0x65e5, 0x3b, 0x4e00, 0x3b, 0x4e8c, 0x3b, 0x4e09, 0x3b, 0x56db, 0x3b, 0x4e94, 0x3b, 0x516d, 0x5468, 0x65e5,
-0x3b, 0x5468, 0x4e00, 0x3b, 0x5468, 0x4e8c, 0x3b, 0x5468, 0x4e09, 0x3b, 0x5468, 0x56db, 0x3b, 0x5468, 0x4e94, 0x3b, 0x5468, 0x516d, 0x64, 0x69,
-0x75, 0x6d, 0x65, 0x6e, 0x67, 0x65, 0x3b, 0x64, 0x69, 0x6c, 0x6c, 0x75, 0x6e, 0x73, 0x3b, 0x64, 0x69, 0x6d, 0x61, 0x72,
-0x74, 0x73, 0x3b, 0x64, 0x69, 0x6d, 0x65, 0x63, 0x72, 0x65, 0x73, 0x3b, 0x64, 0x69, 0x6a, 0x6f, 0x75, 0x73, 0x3b, 0x64,
-0x69, 0x76, 0x65, 0x6e, 0x64, 0x72, 0x65, 0x73, 0x3b, 0x64, 0x69, 0x73, 0x73, 0x61, 0x62, 0x74, 0x65, 0x64, 0x67, 0x2e,
-0x3b, 0x64, 0x6c, 0x2e, 0x3b, 0x64, 0x74, 0x2e, 0x3b, 0x64, 0x63, 0x2e, 0x3b, 0x64, 0x6a, 0x2e, 0x3b, 0x64, 0x76, 0x2e,
-0x3b, 0x64, 0x73, 0x2e, 0x64, 0x67, 0x3b, 0x64, 0x6c, 0x3b, 0x64, 0x74, 0x3b, 0x64, 0x63, 0x3b, 0x64, 0x6a, 0x3b, 0x64,
-0x76, 0x3b, 0x64, 0x73, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x4c, 0x75, 0x6e, 0x65, 0x73, 0x3b, 0x4d, 0x61,
-0x72, 0x74, 0x65, 0x73, 0x3b, 0x4d, 0x69, 0x79, 0x65, 0x72, 0x6b, 0x75, 0x6c, 0x65, 0x73, 0x3b, 0x48, 0x75, 0x77, 0x65,
-0x62, 0x65, 0x73, 0x3b, 0x42, 0x69, 0x79, 0x65, 0x72, 0x6e, 0x65, 0x73, 0x3b, 0x53, 0x61, 0x62, 0x61, 0x64, 0x6f, 0x44,
-0x6f, 0x6d, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x4d, 0x69, 0x79, 0x3b, 0x48, 0x75, 0x77, 0x3b, 0x42,
-0x69, 0x79, 0x3b, 0x53, 0x61, 0x62, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x48, 0x3b, 0x42, 0x3b, 0x53, 0x41,
-0x73, 0x61, 0x6d, 0x61, 0x73, 0x3b, 0x41, 0x79, 0x6e, 0x61, 0x73, 0x3b, 0x41, 0x73, 0x69, 0x6e, 0x61, 0x73, 0x3b, 0x41,
-0x6b, 0x72, 0x61, 0x73, 0x3b, 0x41, 0x6b, 0x77, 0x61, 0x73, 0x3b, 0x41, 0x73, 0x69, 0x6d, 0x77, 0x61, 0x73, 0x3b, 0x41,
-0x73, 0x69, 0x1e0d, 0x79, 0x61, 0x73, 0x41, 0x73, 0x61, 0x3b, 0x41, 0x79, 0x6e, 0x3b, 0x41, 0x73, 0x6e, 0x3b, 0x41, 0x6b,
-0x72, 0x3b, 0x41, 0x6b, 0x77, 0x3b, 0x41, 0x73, 0x6d, 0x3b, 0x41, 0x73, 0x1e0d, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41,
-0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x6cc, 0x6d5, 0x6a9, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x62f, 0x648, 0x648, 0x634, 0x6d5,
-0x645, 0x645, 0x6d5, 0x3b, 0x633, 0x6ce, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x686, 0x648, 0x627, 0x631, 0x634, 0x6d5, 0x645, 0x645,
-0x6d5, 0x3b, 0x67e, 0x6ce, 0x646, 0x62c, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x6be, 0x6d5, 0x6cc, 0x646, 0x6cc, 0x3b, 0x634, 0x6d5,
-0x645, 0x645, 0x6d5, 0x6cc, 0x3b, 0x62f, 0x3b, 0x633, 0x3b, 0x686, 0x3b, 0x67e, 0x3b, 0x6be, 0x3b, 0x634, 0xd804, 0xdd22, 0xd804, 0xdd27,
-0xd804, 0xdd1d, 0xd804, 0xdd28, 0xd804, 0xdd1d, 0xd804, 0xdd22, 0xd804, 0xdd34, 0x3b, 0xd804, 0xdd25, 0xd804, 0xdd27, 0xd804, 0xdd1f, 0xd804, 0xdd34, 0xd804,
-0xdd1d, 0xd804, 0xdd22, 0xd804, 0xdd34, 0x3b, 0xd804, 0xdd1f, 0xd804, 0xdd27, 0xd804, 0xdd01, 0xd804, 0xdd09, 0xd804, 0xdd27, 0xd804, 0xdd23, 0xd804, 0xdd34,
-0xd804, 0xdd1d, 0xd804, 0xdd22, 0xd804, 0xdd34, 0x3b, 0xd804, 0xdd1d, 0xd804, 0xdd2a, 0xd804, 0xdd16, 0xd804, 0xdd34, 0xd804, 0xdd1d, 0xd804, 0xdd22, 0xd804,
-0xdd34, 0x3b, 0xd804, 0xdd1d, 0xd804, 0xdd33, 0xd804, 0xdd22, 0xd804, 0xdd28, 0xd804, 0xdd25, 0xd804, 0xdd2a, 0xd804, 0xdd1b, 0xd804, 0xdd34, 0xd804, 0xdd1d,
-0xd804, 0xdd22, 0xd804, 0xdd34, 0x3b, 0xd804, 0xdd25, 0xd804, 0xdd2a, 0xd804, 0xdd07, 0xd804, 0xdd34, 0xd804, 0xdd07, 0xd804, 0xdd2e, 0xd804, 0xdd22, 0xd804,
-0xdd34, 0xd804, 0xdd1d, 0xd804, 0xdd22, 0xd804, 0xdd34, 0x3b, 0xd804, 0xdd25, 0xd804, 0xdd27, 0xd804, 0xdd1a, 0xd804, 0xdd28, 0xd804, 0xdd1d, 0xd804, 0xdd22,
-0xd804, 0xdd34, 0xd804, 0xdd22, 0xd804, 0xdd27, 0xd804, 0xdd1d, 0xd804, 0xdd28, 0x3b, 0xd804, 0xdd25, 0xd804, 0xdd27, 0xd804, 0xdd1f, 0xd804, 0xdd34, 0x3b,
-0xd804, 0xdd1f, 0xd804, 0xdd27, 0xd804, 0xdd01, 0xd804, 0xdd09, 0xd804, 0xdd27, 0xd804, 0xdd23, 0xd804, 0xdd34, 0x3b, 0xd804, 0xdd1d, 0xd804, 0xdd2a, 0xd804,
-0xdd16, 0xd804, 0xdd34, 0x3b, 0xd804, 0xdd1d, 0xd804, 0xdd33, 0xd804, 0xdd22, 0xd804, 0xdd28, 0xd804, 0xdd25, 0xd804, 0xdd2a, 0xd804, 0xdd1b, 0xd804, 0xdd34,
-0x3b, 0xd804, 0xdd25, 0xd804, 0xdd2a, 0xd804, 0xdd07, 0xd804, 0xdd34, 0xd804, 0xdd07, 0xd804, 0xdd2e, 0xd804, 0xdd22, 0xd804, 0xdd34, 0x3b, 0xd804, 0xdd25,
-0xd804, 0xdd27, 0xd804, 0xdd1a, 0xd804, 0xdd28, 0xd804, 0xdd22, 0xd804, 0xdd27, 0x3b, 0xd804, 0xdd25, 0xd804, 0xdd27, 0x3b, 0xd804, 0xdd1f, 0xd804, 0xdd27,
-0x3b, 0xd804, 0xdd1d, 0xd804, 0xdd2a, 0x3b, 0xd804, 0xdd1d, 0xd804, 0xdd33, 0xd804, 0xdd22, 0xd804, 0xdd28, 0x3b, 0xd804, 0xdd25, 0xd804, 0xdd2a, 0x3b,
-0xd804, 0xdd25, 0xd804, 0xdd27, 0x43a, 0x4c0, 0x438, 0x440, 0x430, 0x3b, 0x43e, 0x440, 0x448, 0x43e, 0x442, 0x3b, 0x448, 0x438, 0x43d, 0x430,
-0x440, 0x430, 0x3b, 0x43a, 0x445, 0x430, 0x430, 0x440, 0x430, 0x3b, 0x435, 0x430, 0x440, 0x430, 0x3b, 0x43f, 0x4c0, 0x435, 0x440, 0x430,
-0x441, 0x43a, 0x430, 0x3b, 0x448, 0x443, 0x43e, 0x442, 0x43a, 0x4c0, 0x438, 0x3b, 0x43e, 0x440, 0x3b, 0x448, 0x438, 0x3b, 0x43a, 0x445,
-0x430, 0x3b, 0x435, 0x430, 0x3b, 0x43f, 0x4c0, 0x435, 0x3b, 0x448, 0x443, 0x43e, 0x43a, 0x4c0, 0x3b, 0x43e, 0x3b, 0x448, 0x3b, 0x43a,
-0x445, 0x3b, 0x435, 0x3b, 0x43f, 0x4c0, 0x3b, 0x448, 0x13a4, 0x13be, 0x13d9, 0x13d3, 0x13c6, 0x13cd, 0x13ac, 0x3b, 0x13a4, 0x13be, 0x13d9, 0x13d3,
-0x13c9, 0x13c5, 0x13af, 0x3b, 0x13d4, 0x13b5, 0x13c1, 0x13a2, 0x13a6, 0x3b, 0x13e6, 0x13a2, 0x13c1, 0x13a2, 0x13a6, 0x3b, 0x13c5, 0x13a9, 0x13c1, 0x13a2,
-0x13a6, 0x3b, 0x13e7, 0x13be, 0x13a9, 0x13b6, 0x13cd, 0x13d7, 0x3b, 0x13a4, 0x13be, 0x13d9, 0x13d3, 0x13c8, 0x13d5, 0x13be, 0x13c6, 0x13cd, 0x13ac, 0x3b,
-0x13c9, 0x13c5, 0x13af, 0x3b, 0x13d4, 0x13b5, 0x13c1, 0x3b, 0x13e6, 0x13a2, 0x13c1, 0x3b, 0x13c5, 0x13a9, 0x13c1, 0x3b, 0x13e7, 0x13be, 0x13a9, 0x3b,
-0x13c8, 0x13d5, 0x13be, 0x13c6, 0x3b, 0x13c9, 0x3b, 0x13d4, 0x3b, 0x13e6, 0x3b, 0x13c5, 0x3b, 0x13e7, 0x3b, 0x13a4, 0x53, 0x61, 0x6e, 0x64,
-0x65, 0x3b, 0x4f, 0x72, 0x77, 0x6f, 0x6b, 0x75, 0x62, 0x61, 0x6e, 0x7a, 0x61, 0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6b, 0x61,
-0x62, 0x69, 0x72, 0x69, 0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x61, 0x74, 0x75, 0x3b, 0x4f, 0x72, 0x77,
-0x61, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6b, 0x61, 0x74, 0x61, 0x61, 0x6e, 0x6f, 0x3b, 0x4f, 0x72,
-0x77, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x61, 0x67, 0x61, 0x53, 0x41, 0x4e, 0x3b, 0x4f, 0x52, 0x4b, 0x3b, 0x4f, 0x4b, 0x42,
-0x3b, 0x4f, 0x4b, 0x53, 0x3b, 0x4f, 0x4b, 0x4e, 0x3b, 0x4f, 0x4b, 0x54, 0x3b, 0x4f, 0x4d, 0x4b, 0x53, 0x3b, 0x4b, 0x3b,
-0x52, 0x3b, 0x53, 0x3b, 0x4e, 0x3b, 0x54, 0x3b, 0x4d, 0x9031, 0x65e5, 0x3b, 0x9031, 0x4e00, 0x3b, 0x9031, 0x4e8c, 0x3b, 0x9031, 0x4e09,
-0x3b, 0x9031, 0x56db, 0x3b, 0x9031, 0x4e94, 0x3b, 0x9031, 0x516d, 0x53, 0x75, 0x6e, 0x6e, 0x64, 0x61, 0x61, 0x63, 0x68, 0x3b, 0x4d,
-0x6f, 0x68, 0x6e, 0x64, 0x61, 0x61, 0x63, 0x68, 0x3b, 0x44, 0x69, 0x6e, 0x6e, 0x73, 0x64, 0x61, 0x61, 0x63, 0x68, 0x3b,
-0x4d, 0x65, 0x74, 0x77, 0x6f, 0x63, 0x68, 0x3b, 0x44, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x64, 0x61, 0x61, 0x63, 0x68,
-0x3b, 0x46, 0x72, 0x69, 0x69, 0x64, 0x61, 0x61, 0x63, 0x68, 0x3b, 0x53, 0x61, 0x6d, 0x73, 0x64, 0x61, 0x61, 0x63, 0x68,
-0x53, 0x75, 0x2e, 0x3b, 0x4d, 0x6f, 0x2e, 0x3b, 0x44, 0x69, 0x2e, 0x3b, 0x4d, 0x65, 0x2e, 0x3b, 0x44, 0x75, 0x2e, 0x3b,
-0x46, 0x72, 0x2e, 0x3b, 0x53, 0x61, 0x2e, 0x53, 0x3b, 0x4d, 0x3b, 0x44, 0x3b, 0x4d, 0x3b, 0x44, 0x3b, 0x46, 0x3b, 0x53,
-0x64, 0x79, 0x20, 0x53, 0x75, 0x6c, 0x3b, 0x64, 0x79, 0x20, 0x4c, 0x75, 0x6e, 0x3b, 0x64, 0x79, 0x20, 0x4d, 0x65, 0x75,
-0x72, 0x74, 0x68, 0x3b, 0x64, 0x79, 0x20, 0x4d, 0x65, 0x72, 0x68, 0x65, 0x72, 0x3b, 0x64, 0x79, 0x20, 0x59, 0x6f, 0x77,
-0x3b, 0x64, 0x79, 0x20, 0x47, 0x77, 0x65, 0x6e, 0x65, 0x72, 0x3b, 0x64, 0x79, 0x20, 0x53, 0x61, 0x64, 0x6f, 0x72, 0x6e,
-0x53, 0x75, 0x6c, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x74, 0x68, 0x3b, 0x4d, 0x68, 0x72, 0x3b, 0x59, 0x6f, 0x77, 0x3b,
-0x47, 0x77, 0x65, 0x3b, 0x53, 0x61, 0x64, 0x6e, 0x65, 0x64, 0x11b, 0x6c, 0x65, 0x3b, 0x70, 0x6f, 0x6e, 0x64, 0x11b, 0x6c,
-0xed, 0x3b, 0xfa, 0x74, 0x65, 0x72, 0xfd, 0x3b, 0x73, 0x74, 0x159, 0x65, 0x64, 0x61, 0x3b, 0x10d, 0x74, 0x76, 0x72, 0x74,
-0x65, 0x6b, 0x3b, 0x70, 0xe1, 0x74, 0x65, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x6e, 0x65, 0x3b, 0x70, 0x6f,
-0x3b, 0xfa, 0x74, 0x3b, 0x73, 0x74, 0x3b, 0x10d, 0x74, 0x3b, 0x70, 0xe1, 0x3b, 0x73, 0x6f, 0x4e, 0x3b, 0x50, 0x3b, 0xda,
-0x3b, 0x53, 0x3b, 0x10c, 0x3b, 0x50, 0x3b, 0x53, 0x73, 0xf8, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x6d, 0x61, 0x6e, 0x64, 0x61,
-0x67, 0x3b, 0x74, 0x69, 0x72, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x6f, 0x6e, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x6f, 0x72,
-0x73, 0x64, 0x61, 0x67, 0x3b, 0x66, 0x72, 0x65, 0x64, 0x61, 0x67, 0x3b, 0x6c, 0xf8, 0x72, 0x64, 0x61, 0x67, 0x73, 0xf8,
-0x6e, 0x3b, 0x6d, 0x61, 0x6e, 0x3b, 0x74, 0x69, 0x72, 0x3b, 0x6f, 0x6e, 0x73, 0x3b, 0x74, 0x6f, 0x72, 0x3b, 0x66, 0x72,
-0x65, 0x3b, 0x6c, 0xf8, 0x72, 0x73, 0xf8, 0x6e, 0x2e, 0x3b, 0x6d, 0x61, 0x6e, 0x2e, 0x3b, 0x74, 0x69, 0x72, 0x2e, 0x3b,
-0x6f, 0x6e, 0x73, 0x2e, 0x3b, 0x74, 0x6f, 0x72, 0x2e, 0x3b, 0x66, 0x72, 0x65, 0x2e, 0x3b, 0x6c, 0xf8, 0x72, 0x2e, 0x53,
-0x3b, 0x4d, 0x3b, 0x54, 0x3b, 0x4f, 0x3b, 0x54, 0x3b, 0x46, 0x3b, 0x4c, 0x910, 0x924, 0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x94b,
-0x92e, 0x92c, 0x93e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x941, 0x927, 0x92c, 0x93e, 0x930, 0x3b,
-0x92c, 0x940, 0x930, 0x92c, 0x93e, 0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x92c, 0x93e, 0x930, 0x3b, 0x936, 0x928, 0x93f, 0x92c,
-0x93e, 0x930, 0x910, 0x924, 0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x94b, 0x92e, 0x92c, 0x93e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x92c,
-0x93e, 0x930, 0x3b, 0x92c, 0x941, 0x927, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x940, 0x930, 0x92c, 0x93e, 0x930, 0x3b, 0x936, 0x941, 0x915,
-0x94d, 0x930, 0x92c, 0x93e, 0x930, 0x3b, 0x936, 0x928, 0x940, 0x92c, 0x93e, 0x930, 0x910, 0x924, 0x3b, 0x938, 0x94b, 0x92e, 0x3b, 0x92e,
-0x902, 0x917, 0x932, 0x3b, 0x92c, 0x941, 0x927, 0x3b, 0x92c, 0x940, 0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x3b, 0x936, 0x928,
-0x93f, 0x910, 0x3b, 0x938, 0x94b, 0x3b, 0x92e, 0x2e, 0x3b, 0x92c, 0x941, 0x2e, 0x3b, 0x92c, 0x940, 0x2e, 0x3b, 0x936, 0x941, 0x2e,
-0x3b, 0x936, 0x2e, 0x910, 0x2e, 0x3b, 0x938, 0x94b, 0x2e, 0x3b, 0x92e, 0x2e, 0x3b, 0x92c, 0x941, 0x2e, 0x3b, 0x92c, 0x940, 0x2e,
-0x3b, 0x936, 0x941, 0x2e, 0x3b, 0x936, 0x2e, 0xe9, 0x74, 0x69, 0x3b, 0x6d, 0x254, 0x301, 0x73, 0xfa, 0x3b, 0x6b, 0x77, 0x61,
-0x73, 0xfa, 0x3b, 0x6d, 0x75, 0x6b, 0x254, 0x301, 0x73, 0xfa, 0x3b, 0x14b, 0x67, 0x69, 0x73, 0xfa, 0x3b, 0x257, 0xf3, 0x6e,
-0x25b, 0x73, 0xfa, 0x3b, 0x65, 0x73, 0x61, 0x253, 0x61, 0x73, 0xfa, 0xe9, 0x74, 0x3b, 0x6d, 0x254, 0x301, 0x73, 0x3b, 0x6b,
-0x77, 0x61, 0x3b, 0x6d, 0x75, 0x6b, 0x3b, 0x14b, 0x67, 0x69, 0x3b, 0x257, 0xf3, 0x6e, 0x3b, 0x65, 0x73, 0x61, 0x65, 0x3b,
-0x6d, 0x3b, 0x6b, 0x3b, 0x6d, 0x3b, 0x14b, 0x3b, 0x257, 0x3b, 0x65, 0x7a, 0x6f, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x6d, 0x61,
-0x61, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x64, 0x69, 0x6e, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x77, 0x6f, 0x65, 0x6e, 0x73, 0x64,
-0x61, 0x67, 0x3b, 0x64, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x64, 0x61, 0x67, 0x3b, 0x76, 0x72, 0x69, 0x6a, 0x64, 0x61, 0x67,
-0x3b, 0x7a, 0x61, 0x74, 0x65, 0x72, 0x64, 0x61, 0x67, 0x7a, 0x6f, 0x3b, 0x6d, 0x61, 0x3b, 0x64, 0x69, 0x3b, 0x77, 0x6f,
-0x3b, 0x64, 0x6f, 0x3b, 0x76, 0x72, 0x3b, 0x7a, 0x61, 0x5a, 0x3b, 0x4d, 0x3b, 0x44, 0x3b, 0x57, 0x3b, 0x44, 0x3b, 0x56,
-0x3b, 0x5a, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf58, 0xf72, 0xf42, 0xf0b,
-0xf51, 0xf58, 0xf62, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf63, 0xfb7, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b,
-0xf55, 0xf74, 0xf62, 0xf0b, 0xf56, 0xf74, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf54, 0xf0b, 0xf66, 0xf44, 0xf66, 0xf0b, 0x3b, 0xf42,
-0xf5f, 0xf60, 0xf0b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf49, 0xf72, 0xf0b, 0xf58, 0xf0b,
-0xf5f, 0xfb3, 0xf0b, 0x3b, 0xf58, 0xf72, 0xf62, 0xf0b, 0x3b, 0xf63, 0xfb7, 0xf42, 0xf0b, 0x3b, 0xf55, 0xf74, 0xf62, 0xf0b, 0x3b, 0xf66,
-0xf44, 0xf66, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0xf0b, 0x3b, 0xf49, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0x3b, 0xf58, 0xf72, 0xf62, 0x3b,
-0xf63, 0xfb7, 0xf42, 0x3b, 0xf55, 0xf74, 0xf62, 0x3b, 0xf66, 0xf44, 0xfb6, 0x3b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0x3b, 0xf49, 0xf72, 0x4b,
-0x69, 0x75, 0x6d, 0x69, 0x61, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4e, 0x6a, 0x75, 0x6d,
-0x61, 0x69, 0x6e, 0x65, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x72, 0x61, 0x6d, 0x69,
-0x74, 0x68, 0x69, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4e, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x74, 0x68,
-0x69, 0x69, 0x4b, 0x6d, 0x61, 0x3b, 0x54, 0x61, 0x74, 0x3b, 0x49, 0x6e, 0x65, 0x3b, 0x54, 0x61, 0x6e, 0x3b, 0x41, 0x72,
-0x6d, 0x3b, 0x4d, 0x61, 0x61, 0x3b, 0x4e, 0x4d, 0x4d, 0x4b, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x41, 0x3b, 0x4d,
-0x3b, 0x4e, 0x53, 0x75, 0x2e, 0x3b, 0x4d, 0x2e, 0x3b, 0x54, 0x75, 0x2e, 0x3b, 0x57, 0x2e, 0x3b, 0x54, 0x68, 0x2e, 0x3b,
-0x46, 0x2e, 0x3b, 0x53, 0x61, 0x2e, 0x64, 0x69, 0x6d, 0x61, 0x6e, 0x109, 0x6f, 0x3b, 0x6c, 0x75, 0x6e, 0x64, 0x6f, 0x3b,
-0x6d, 0x61, 0x72, 0x64, 0x6f, 0x3b, 0x6d, 0x65, 0x72, 0x6b, 0x72, 0x65, 0x64, 0x6f, 0x3b, 0x135, 0x61, 0x16d, 0x64, 0x6f,
-0x3b, 0x76, 0x65, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x6f, 0x3b, 0x73, 0x61, 0x62, 0x61, 0x74, 0x6f, 0x64, 0x69, 0x3b, 0x6c,
-0x75, 0x3b, 0x6d, 0x61, 0x3b, 0x6d, 0x65, 0x3b, 0x135, 0x61, 0x3b, 0x76, 0x65, 0x3b, 0x73, 0x61, 0x44, 0x3b, 0x4c, 0x3b,
-0x4d, 0x3b, 0x4d, 0x3b, 0x134, 0x3b, 0x56, 0x3b, 0x53, 0x50, 0xfc, 0x68, 0x61, 0x70, 0xe4, 0x65, 0x76, 0x3b, 0x45, 0x73,
-0x6d, 0x61, 0x73, 0x70, 0xe4, 0x65, 0x76, 0x3b, 0x54, 0x65, 0x69, 0x73, 0x69, 0x70, 0xe4, 0x65, 0x76, 0x3b, 0x4b, 0x6f,
-0x6c, 0x6d, 0x61, 0x70, 0xe4, 0x65, 0x76, 0x3b, 0x4e, 0x65, 0x6c, 0x6a, 0x61, 0x70, 0xe4, 0x65, 0x76, 0x3b, 0x52, 0x65,
-0x65, 0x64, 0x65, 0x3b, 0x4c, 0x61, 0x75, 0x70, 0xe4, 0x65, 0x76, 0x50, 0x3b, 0x45, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x4e,
-0x3b, 0x52, 0x3b, 0x4c, 0x6b, 0x254, 0x73, 0x69, 0x256, 0x61, 0x3b, 0x64, 0x7a, 0x6f, 0x256, 0x61, 0x3b, 0x62, 0x6c, 0x61,
-0x256, 0x61, 0x3b, 0x6b, 0x75, 0x256, 0x61, 0x3b, 0x79, 0x61, 0x77, 0x6f, 0x256, 0x61, 0x3b, 0x66, 0x69, 0x256, 0x61, 0x3b,
-0x6d, 0x65, 0x6d, 0x6c, 0x65, 0x256, 0x61, 0x6b, 0x254, 0x73, 0x3b, 0x64, 0x7a, 0x6f, 0x3b, 0x62, 0x6c, 0x61, 0x3b, 0x6b,
-0x75, 0x256, 0x3b, 0x79, 0x61, 0x77, 0x3b, 0x66, 0x69, 0x256, 0x3b, 0x6d, 0x65, 0x6d, 0x6b, 0x3b, 0x64, 0x3b, 0x62, 0x3b,
-0x6b, 0x3b, 0x79, 0x3b, 0x66, 0x3b, 0x6d, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x3b, 0x6d, 0x254, 0x301, 0x6e, 0x64, 0x69,
-0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x259, 0x6c, 0xfa, 0x20, 0x6d, 0x259, 0x301, 0x62, 0x25b, 0x30c, 0x3b,
-0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x259, 0x6c, 0xfa, 0x20, 0x6d, 0x259, 0x301, 0x6c, 0x25b, 0x301, 0x3b, 0x73,
-0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x259, 0x6c, 0xfa, 0x20, 0x6d, 0x259, 0x301, 0x6e, 0x79, 0x69, 0x3b, 0x66, 0xfa,
-0x6c, 0x61, 0x64, 0xe9, 0x3b, 0x73, 0xe9, 0x72, 0x61, 0x64, 0xe9, 0x73, 0x254, 0x301, 0x6e, 0x3b, 0x6d, 0x254, 0x301, 0x6e,
-0x3b, 0x73, 0x6d, 0x62, 0x3b, 0x73, 0x6d, 0x6c, 0x3b, 0x73, 0x6d, 0x6e, 0x3b, 0x66, 0xfa, 0x6c, 0x3b, 0x73, 0xe9, 0x72,
-0x73, 0x3b, 0x6d, 0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x66, 0x3b, 0x73, 0x73, 0x75, 0x6e, 0x6e, 0x75, 0x64, 0x61,
-0x67, 0x75, 0x72, 0x3b, 0x6d, 0xe1, 0x6e, 0x61, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x74, 0xfd, 0x73, 0x64, 0x61, 0x67,
-0x75, 0x72, 0x3b, 0x6d, 0x69, 0x6b, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x68, 0xf3, 0x73, 0x64, 0x61, 0x67, 0x75,
-0x72, 0x3b, 0x66, 0x72, 0xed, 0x67, 0x67, 0x6a, 0x61, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x6c, 0x65, 0x79, 0x67, 0x61,
-0x72, 0x64, 0x61, 0x67, 0x75, 0x72, 0x73, 0x75, 0x6e, 0x3b, 0x6d, 0xe1, 0x6e, 0x3b, 0x74, 0xfd, 0x73, 0x3b, 0x6d, 0x69,
-0x6b, 0x3b, 0x68, 0xf3, 0x73, 0x3b, 0x66, 0x72, 0xed, 0x3b, 0x6c, 0x65, 0x79, 0x73, 0x75, 0x6e, 0x2e, 0x3b, 0x6d, 0xe1,
-0x6e, 0x2e, 0x3b, 0x74, 0xfd, 0x73, 0x2e, 0x3b, 0x6d, 0x69, 0x6b, 0x2e, 0x3b, 0x68, 0xf3, 0x73, 0x2e, 0x3b, 0x66, 0x72,
-0xed, 0x2e, 0x3b, 0x6c, 0x65, 0x79, 0x2e, 0x53, 0x3b, 0x4d, 0x3b, 0x54, 0x3b, 0x4d, 0x3b, 0x48, 0x3b, 0x46, 0x3b, 0x4c,
-0x4c, 0x69, 0x6e, 0x67, 0x67, 0x6f, 0x3b, 0x4c, 0x75, 0x6e, 0x65, 0x73, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b,
-0x4d, 0x69, 0x79, 0x65, 0x72, 0x6b, 0x75, 0x6c, 0x65, 0x73, 0x3b, 0x48, 0x75, 0x77, 0x65, 0x62, 0x65, 0x73, 0x3b, 0x42,
-0x69, 0x79, 0x65, 0x72, 0x6e, 0x65, 0x73, 0x3b, 0x53, 0x61, 0x62, 0x61, 0x64, 0x6f, 0x4c, 0x69, 0x6e, 0x3b, 0x4c, 0x75,
-0x6e, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x4d, 0x69, 0x79, 0x3b, 0x48, 0x75, 0x77, 0x3b, 0x42, 0x69, 0x79, 0x3b, 0x53, 0x61,
-0x62, 0x73, 0x75, 0x6e, 0x6e, 0x75, 0x6e, 0x74, 0x61, 0x69, 0x3b, 0x6d, 0x61, 0x61, 0x6e, 0x61, 0x6e, 0x74, 0x61, 0x69,
-0x3b, 0x74, 0x69, 0x69, 0x73, 0x74, 0x61, 0x69, 0x3b, 0x6b, 0x65, 0x73, 0x6b, 0x69, 0x76, 0x69, 0x69, 0x6b, 0x6b, 0x6f,
-0x3b, 0x74, 0x6f, 0x72, 0x73, 0x74, 0x61, 0x69, 0x3b, 0x70, 0x65, 0x72, 0x6a, 0x61, 0x6e, 0x74, 0x61, 0x69, 0x3b, 0x6c,
-0x61, 0x75, 0x61, 0x6e, 0x74, 0x61, 0x69, 0x73, 0x75, 0x6e, 0x6e, 0x75, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x61, 0x3b, 0x6d,
-0x61, 0x61, 0x6e, 0x61, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x61, 0x3b, 0x74, 0x69, 0x69, 0x73, 0x74, 0x61, 0x69, 0x6e, 0x61,
-0x3b, 0x6b, 0x65, 0x73, 0x6b, 0x69, 0x76, 0x69, 0x69, 0x6b, 0x6b, 0x6f, 0x6e, 0x61, 0x3b, 0x74, 0x6f, 0x72, 0x73, 0x74,
-0x61, 0x69, 0x6e, 0x61, 0x3b, 0x70, 0x65, 0x72, 0x6a, 0x61, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x61, 0x3b, 0x6c, 0x61, 0x75,
-0x61, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x61, 0x73, 0x75, 0x3b, 0x6d, 0x61, 0x3b, 0x74, 0x69, 0x3b, 0x6b, 0x65, 0x3b, 0x74,
-0x6f, 0x3b, 0x70, 0x65, 0x3b, 0x6c, 0x61, 0x53, 0x3b, 0x4d, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x54, 0x3b, 0x50, 0x3b, 0x4c,
-0x64, 0x69, 0x6d, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x3b, 0x6c, 0x75, 0x6e, 0x64, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x64, 0x69,
-0x3b, 0x6d, 0x65, 0x72, 0x63, 0x72, 0x65, 0x64, 0x69, 0x3b, 0x6a, 0x65, 0x75, 0x64, 0x69, 0x3b, 0x76, 0x65, 0x6e, 0x64,
-0x72, 0x65, 0x64, 0x69, 0x3b, 0x73, 0x61, 0x6d, 0x65, 0x64, 0x69, 0x64, 0x69, 0x6d, 0x2e, 0x3b, 0x6c, 0x75, 0x6e, 0x2e,
-0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x6d, 0x65, 0x72, 0x2e, 0x3b, 0x6a, 0x65, 0x75, 0x2e, 0x3b, 0x76, 0x65, 0x6e, 0x2e,
-0x3b, 0x73, 0x61, 0x6d, 0x2e, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x56, 0x3b, 0x53, 0x64, 0x6f,
-0x6d, 0x65, 0x6e, 0x69, 0x65, 0x3b, 0x6c, 0x75, 0x6e, 0x69, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x61, 0x72, 0x73, 0x3b,
-0x6d, 0x69, 0x65, 0x72, 0x63, 0x75, 0x73, 0x3b, 0x6a, 0x6f, 0x69, 0x62, 0x65, 0x3b, 0x76, 0x69, 0x6e, 0x61, 0x72, 0x73,
-0x3b, 0x73, 0x61, 0x62, 0x69, 0x64, 0x65, 0x64, 0x6f, 0x6d, 0x3b, 0x6c, 0x75, 0x6e, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d,
-0x69, 0x65, 0x3b, 0x6a, 0x6f, 0x69, 0x3b, 0x76, 0x69, 0x6e, 0x3b, 0x73, 0x61, 0x62, 0x64, 0x65, 0x77, 0x6f, 0x3b, 0x61,
-0x61, 0x253, 0x6e, 0x64, 0x65, 0x3b, 0x6d, 0x61, 0x77, 0x62, 0x61, 0x61, 0x72, 0x65, 0x3b, 0x6e, 0x6a, 0x65, 0x73, 0x6c,
-0x61, 0x61, 0x72, 0x65, 0x3b, 0x6e, 0x61, 0x61, 0x73, 0x61, 0x61, 0x6e, 0x64, 0x65, 0x3b, 0x6d, 0x61, 0x77, 0x6e, 0x64,
-0x65, 0x3b, 0x68, 0x6f, 0x6f, 0x72, 0x65, 0x2d, 0x62, 0x69, 0x69, 0x72, 0x64, 0x65, 0x77, 0x3b, 0x61, 0x61, 0x253, 0x3b,
-0x6d, 0x61, 0x77, 0x3b, 0x6e, 0x6a, 0x65, 0x3b, 0x6e, 0x61, 0x61, 0x3b, 0x6d, 0x77, 0x64, 0x3b, 0x68, 0x62, 0x69, 0x64,
-0x3b, 0x61, 0x3b, 0x6d, 0x3b, 0x6e, 0x3b, 0x6e, 0x3b, 0x6d, 0x3b, 0x68, 0xd83a, 0xdd08, 0xd83a, 0xdd2b, 0xd83a, 0xdd2c, 0xd83a, 0xdd26,
-0xd83a, 0xdd2d, 0xd83a, 0xdd2a, 0xd83a, 0xdd46, 0xd83a, 0xdd2b, 0x3b, 0xd83a, 0xdd00, 0xd83a, 0xdd44, 0xd83a, 0xdd29, 0xd83a, 0xdd35, 0xd83a, 0xdd32, 0xd83a,
-0xdd4b, 0xd83a, 0xdd23, 0xd83a, 0xdd2b, 0x3b, 0xd83a, 0xdd03, 0xd83a, 0xdd22, 0xd83a, 0xdd31, 0xd83a, 0xdd26, 0xd83a, 0xdd22, 0xd83a, 0xdd44, 0xd83a, 0xdd2a,
-0xd83a, 0xdd2b, 0x3b, 0xd83a, 0xdd10, 0xd83a, 0xdd36, 0xd83a, 0xdd2b, 0xd83a, 0xdd27, 0xd83a, 0xdd24, 0xd83a, 0xdd22, 0xd83a, 0xdd44, 0xd83a, 0xdd2a, 0xd83a,
-0xdd2b, 0x3b, 0xd83a, 0xdd10, 0xd83a, 0xdd22, 0xd83a, 0xdd44, 0xd83a, 0xdd27, 0xd83a, 0xdd22, 0xd83a, 0xdd44, 0xd83a, 0xdd32, 0xd83a, 0xdd23, 0xd83a, 0xdd2b,
-0x3b, 0xd83a, 0xdd03, 0xd83a, 0xdd22, 0xd83a, 0xdd31, 0xd83a, 0xdd32, 0xd83a, 0xdd23, 0xd83a, 0xdd2b, 0x3b, 0xd83a, 0xdd16, 0xd83a, 0xdd2e, 0xd83a, 0xdd2a,
-0xd83a, 0xdd26, 0xd83a, 0xdd2d, 0xd83a, 0xdd2a, 0xd83a, 0xdd46, 0xd83a, 0xdd2b, 0xd83a, 0xdd08, 0xd83a, 0xdd2b, 0xd83a, 0xdd2c, 0x3b, 0xd83a, 0xdd00, 0xd83a,
-0xdd44, 0xd83a, 0xdd29, 0xd83a, 0xdd35, 0x3b, 0xd83a, 0xdd03, 0xd83a, 0xdd22, 0xd83a, 0xdd26, 0x3b, 0xd83a, 0xdd14, 0xd83a, 0xdd2b, 0xd83a, 0xdd27, 0x3b,
-0xd83a, 0xdd10, 0xd83a, 0xdd22, 0xd83a, 0xdd44, 0xd83a, 0xdd27, 0x3b, 0xd83a, 0xdd03, 0xd83a, 0xdd22, 0xd83a, 0xdd23, 0x3b, 0xd83a, 0xdd16, 0xd83a, 0xdd2e,
-0xd83a, 0xdd2a, 0xd83a, 0xdd08, 0x3b, 0xd83a, 0xdd00, 0xd83a, 0xdd44, 0x3b, 0xd83a, 0xdd03, 0x3b, 0xd83a, 0xdd14, 0x3b, 0xd83a, 0xdd10, 0x3b, 0xd83a,
-0xdd03, 0x3b, 0xd83a, 0xdd16, 0x44, 0x69, 0x44, 0xf2, 0x6d, 0x68, 0x6e, 0x61, 0x69, 0x63, 0x68, 0x3b, 0x44, 0x69, 0x4c, 0x75,
-0x61, 0x69, 0x6e, 0x3b, 0x44, 0x69, 0x4d, 0xe0, 0x69, 0x72, 0x74, 0x3b, 0x44, 0x69, 0x43, 0x69, 0x61, 0x64, 0x61, 0x69,
-0x6e, 0x3b, 0x44, 0x69, 0x61, 0x72, 0x44, 0x61, 0x6f, 0x69, 0x6e, 0x3b, 0x44, 0x69, 0x68, 0x41, 0x6f, 0x69, 0x6e, 0x65,
-0x3b, 0x44, 0x69, 0x53, 0x61, 0x74, 0x68, 0x61, 0x69, 0x72, 0x6e, 0x65, 0x44, 0x69, 0x44, 0x3b, 0x44, 0x69, 0x4c, 0x3b,
-0x44, 0x69, 0x4d, 0x3b, 0x44, 0x69, 0x43, 0x3b, 0x44, 0x69, 0x61, 0x3b, 0x44, 0x69, 0x68, 0x3b, 0x44, 0x69, 0x53, 0x44,
-0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x43, 0x3b, 0x41, 0x3b, 0x48, 0x3b, 0x53, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b,
-0x4c, 0x75, 0x6e, 0x73, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x4d, 0xe9, 0x72, 0x63, 0x6f, 0x72, 0x65, 0x73,
-0x3b, 0x58, 0x6f, 0x76, 0x65, 0x73, 0x3b, 0x56, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x3b, 0x53, 0xe1, 0x62, 0x61, 0x64, 0x6f,
-0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x6c, 0x75, 0x6e, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b,
-0x6d, 0xe9, 0x72, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x3b, 0x78, 0x6f, 0x76, 0x65, 0x73, 0x3b, 0x76, 0x65, 0x6e, 0x72, 0x65,
-0x73, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x44, 0x6f, 0x6d, 0x2e, 0x3b, 0x4c, 0x75, 0x6e, 0x73, 0x3b, 0x4d, 0x61,
-0x72, 0x2e, 0x3b, 0x4d, 0xe9, 0x72, 0x2e, 0x3b, 0x58, 0x6f, 0x76, 0x2e, 0x3b, 0x56, 0x65, 0x6e, 0x2e, 0x3b, 0x53, 0xe1,
-0x62, 0x2e, 0x64, 0x6f, 0x6d, 0x2e, 0x3b, 0x6c, 0x75, 0x6e, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x6d, 0xe9, 0x72,
-0x2e, 0x3b, 0x78, 0x6f, 0x76, 0x2e, 0x3b, 0x76, 0x65, 0x6e, 0x2e, 0x3b, 0x73, 0xe1, 0x62, 0x2e, 0x64, 0x2e, 0x3b, 0x6c,
-0x2e, 0x3b, 0x6d, 0x2e, 0x3b, 0x6d, 0x2e, 0x3b, 0x78, 0x2e, 0x3b, 0x76, 0x2e, 0x3b, 0x73, 0x2e, 0x53, 0x61, 0x62, 0x62,
-0x69, 0x69, 0x74, 0x69, 0x3b, 0x42, 0x61, 0x6c, 0x61, 0x7a, 0x61, 0x3b, 0x4c, 0x77, 0x61, 0x6b, 0x75, 0x62, 0x69, 0x72,
-0x69, 0x3b, 0x4c, 0x77, 0x61, 0x6b, 0x75, 0x73, 0x61, 0x74, 0x75, 0x3b, 0x4c, 0x77, 0x61, 0x6b, 0x75, 0x6e, 0x61, 0x3b,
-0x4c, 0x77, 0x61, 0x6b, 0x75, 0x74, 0x61, 0x61, 0x6e, 0x6f, 0x3b, 0x4c, 0x77, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x61, 0x67,
-0x61, 0x53, 0x61, 0x62, 0x3b, 0x42, 0x61, 0x6c, 0x3b, 0x4c, 0x77, 0x32, 0x3b, 0x4c, 0x77, 0x33, 0x3b, 0x4c, 0x77, 0x34,
-0x3b, 0x4c, 0x77, 0x35, 0x3b, 0x4c, 0x77, 0x36, 0x53, 0x3b, 0x42, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b,
-0x4c, 0x10d9, 0x10d5, 0x10d8, 0x10e0, 0x10d0, 0x3b, 0x10dd, 0x10e0, 0x10e8, 0x10d0, 0x10d1, 0x10d0, 0x10d7, 0x10d8, 0x3b, 0x10e1, 0x10d0, 0x10db, 0x10e8,
-0x10d0, 0x10d1, 0x10d0, 0x10d7, 0x10d8, 0x3b, 0x10dd, 0x10d7, 0x10ee, 0x10e8, 0x10d0, 0x10d1, 0x10d0, 0x10d7, 0x10d8, 0x3b, 0x10ee, 0x10e3, 0x10d7, 0x10e8,
-0x10d0, 0x10d1, 0x10d0, 0x10d7, 0x10d8, 0x3b, 0x10de, 0x10d0, 0x10e0, 0x10d0, 0x10e1, 0x10d9, 0x10d4, 0x10d5, 0x10d8, 0x3b, 0x10e8, 0x10d0, 0x10d1, 0x10d0,
-0x10d7, 0x10d8, 0x10d9, 0x10d5, 0x10d8, 0x3b, 0x10dd, 0x10e0, 0x10e8, 0x3b, 0x10e1, 0x10d0, 0x10db, 0x3b, 0x10dd, 0x10d7, 0x10ee, 0x3b, 0x10ee, 0x10e3,
-0x10d7, 0x3b, 0x10de, 0x10d0, 0x10e0, 0x3b, 0x10e8, 0x10d0, 0x10d1, 0x10d9, 0x3b, 0x10dd, 0x3b, 0x10e1, 0x3b, 0x10dd, 0x3b, 0x10ee, 0x3b, 0x10de,
-0x3b, 0x10e8, 0x53, 0x6f, 0x6e, 0x6e, 0x74, 0x61, 0x67, 0x3b, 0x4d, 0x6f, 0x6e, 0x74, 0x61, 0x67, 0x3b, 0x44, 0x69, 0x65,
-0x6e, 0x73, 0x74, 0x61, 0x67, 0x3b, 0x4d, 0x69, 0x74, 0x74, 0x77, 0x6f, 0x63, 0x68, 0x3b, 0x44, 0x6f, 0x6e, 0x6e, 0x65,
-0x72, 0x73, 0x74, 0x61, 0x67, 0x3b, 0x46, 0x72, 0x65, 0x69, 0x74, 0x61, 0x67, 0x3b, 0x53, 0x61, 0x6d, 0x73, 0x74, 0x61,
-0x67, 0x53, 0x6f, 0x3b, 0x4d, 0x6f, 0x3b, 0x44, 0x69, 0x3b, 0x4d, 0x69, 0x3b, 0x44, 0x6f, 0x3b, 0x46, 0x72, 0x3b, 0x53,
-0x61, 0x53, 0x6f, 0x2e, 0x3b, 0x4d, 0x6f, 0x2e, 0x3b, 0x44, 0x69, 0x2e, 0x3b, 0x4d, 0x69, 0x2e, 0x3b, 0x44, 0x6f, 0x2e,
-0x3b, 0x46, 0x72, 0x2e, 0x3b, 0x53, 0x61, 0x2e, 0x39a, 0x3c5, 0x3c1, 0x3b9, 0x3b1, 0x3ba, 0x3ae, 0x3b, 0x394, 0x3b5, 0x3c5, 0x3c4,
-0x3ad, 0x3c1, 0x3b1, 0x3b, 0x3a4, 0x3c1, 0x3af, 0x3c4, 0x3b7, 0x3b, 0x3a4, 0x3b5, 0x3c4, 0x3ac, 0x3c1, 0x3c4, 0x3b7, 0x3b, 0x3a0, 0x3ad,
-0x3bc, 0x3c0, 0x3c4, 0x3b7, 0x3b, 0x3a0, 0x3b1, 0x3c1, 0x3b1, 0x3c3, 0x3ba, 0x3b5, 0x3c5, 0x3ae, 0x3b, 0x3a3, 0x3ac, 0x3b2, 0x3b2, 0x3b1,
-0x3c4, 0x3bf, 0x39a, 0x3c5, 0x3c1, 0x3b, 0x394, 0x3b5, 0x3c5, 0x3b, 0x3a4, 0x3c1, 0x3af, 0x3b, 0x3a4, 0x3b5, 0x3c4, 0x3b, 0x3a0, 0x3ad,
-0x3bc, 0x3b, 0x3a0, 0x3b1, 0x3c1, 0x3b, 0x3a3, 0x3ac, 0x3b2, 0x39a, 0x3b, 0x394, 0x3b, 0x3a4, 0x3b, 0x3a4, 0x3b, 0x3a0, 0x3b, 0x3a0,
-0x3b, 0x3a3, 0xab0, 0xab5, 0xabf, 0xab5, 0xabe, 0xab0, 0x3b, 0xab8, 0xacb, 0xaae, 0xab5, 0xabe, 0xab0, 0x3b, 0xaae, 0xa82, 0xa97, 0xab3,
-0xab5, 0xabe, 0xab0, 0x3b, 0xaac, 0xac1, 0xaa7, 0xab5, 0xabe, 0xab0, 0x3b, 0xa97, 0xac1, 0xab0, 0xac1, 0xab5, 0xabe, 0xab0, 0x3b, 0xab6,
-0xac1, 0xa95, 0xacd, 0xab0, 0xab5, 0xabe, 0xab0, 0x3b, 0xab6, 0xaa8, 0xabf, 0xab5, 0xabe, 0xab0, 0xab0, 0xab5, 0xabf, 0x3b, 0xab8, 0xacb,
-0xaae, 0x3b, 0xaae, 0xa82, 0xa97, 0xab3, 0x3b, 0xaac, 0xac1, 0xaa7, 0x3b, 0xa97, 0xac1, 0xab0, 0xac1, 0x3b, 0xab6, 0xac1, 0xa95, 0xacd,
-0xab0, 0x3b, 0xab6, 0xaa8, 0xabf, 0xab0, 0x3b, 0xab8, 0xacb, 0x3b, 0xaae, 0xa82, 0x3b, 0xaac, 0xac1, 0x3b, 0xa97, 0xac1, 0x3b, 0xab6,
-0xac1, 0x3b, 0xab6, 0x43, 0x68, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x72, 0x69, 0x3b, 0x43, 0x68, 0x75, 0x6d, 0x61, 0x74, 0x61,
-0x74, 0x6f, 0x3b, 0x43, 0x68, 0x75, 0x6d, 0x61, 0x69, 0x6e, 0x65, 0x3b, 0x43, 0x68, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e,
-0x6f, 0x3b, 0x41, 0x72, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x63, 0x68, 0x75, 0x6d, 0x61, 0x3b, 0x45, 0x73, 0x61,
-0x62, 0x61, 0x74, 0x6f, 0x43, 0x70, 0x72, 0x3b, 0x43, 0x74, 0x74, 0x3b, 0x43, 0x6d, 0x6e, 0x3b, 0x43, 0x6d, 0x74, 0x3b,
-0x41, 0x72, 0x73, 0x3b, 0x49, 0x63, 0x6d, 0x3b, 0x45, 0x73, 0x74, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x41,
-0x3b, 0x49, 0x3b, 0x45, 0x4c, 0x61, 0x68, 0x61, 0x64, 0x69, 0x3b, 0x4c, 0x69, 0x74, 0x69, 0x6e, 0x69, 0x6e, 0x3b, 0x54,
-0x61, 0x6c, 0x61, 0x74, 0x61, 0x3b, 0x4c, 0x61, 0x72, 0x61, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73,
-0x3b, 0x4a, 0x75, 0x6d, 0x6d, 0x61, 0x2bc, 0x61, 0x3b, 0x41, 0x73, 0x61, 0x62, 0x61, 0x72, 0x4c, 0x61, 0x68, 0x3b, 0x4c,
-0x69, 0x74, 0x3b, 0x54, 0x61, 0x6c, 0x3b, 0x4c, 0x61, 0x72, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x41,
-0x73, 0x61, 0x4c, 0x3b, 0x4c, 0x3b, 0x54, 0x3b, 0x4c, 0x3b, 0x41, 0x3b, 0x4a, 0x3b, 0x41, 0x4c, 0x101, 0x70, 0x75, 0x6c,
-0x65, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6b, 0x61, 0x68, 0x69, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6c, 0x75, 0x61, 0x3b, 0x50,
-0x6f, 0x2bb, 0x61, 0x6b, 0x6f, 0x6c, 0x75, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x68, 0x101, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6c,
-0x69, 0x6d, 0x61, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6f, 0x6e, 0x6f, 0x4c, 0x50, 0x3b, 0x50, 0x31, 0x3b, 0x50, 0x32, 0x3b,
-0x50, 0x33, 0x3b, 0x50, 0x34, 0x3b, 0x50, 0x35, 0x3b, 0x50, 0x36, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5e8, 0x5d0, 0x5e9, 0x5d5, 0x5df,
-0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5e9, 0x5e0, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5e9, 0x5dc, 0x5d9, 0x5e9, 0x5d9, 0x3b, 0x5d9,
-0x5d5, 0x5dd, 0x20, 0x5e8, 0x5d1, 0x5d9, 0x5e2, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d7, 0x5de, 0x5d9, 0x5e9, 0x5d9, 0x3b, 0x5d9,
-0x5d5, 0x5dd, 0x20, 0x5e9, 0x5d9, 0x5e9, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5e9, 0x5d1, 0x5ea, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d0,
-0x5f3, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d1, 0x5f3, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d2, 0x5f3, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20,
-0x5d3, 0x5f3, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d4, 0x5f3, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d5, 0x5f3, 0x3b, 0x5e9, 0x5d1, 0x5ea,
-0x5d0, 0x5f3, 0x3b, 0x5d1, 0x5f3, 0x3b, 0x5d2, 0x5f3, 0x3b, 0x5d3, 0x5f3, 0x3b, 0x5d4, 0x5f3, 0x3b, 0x5d5, 0x5f3, 0x3b, 0x5e9, 0x5f3,
-0x930, 0x935, 0x93f, 0x935, 0x93e, 0x930, 0x3b, 0x938, 0x94b, 0x92e, 0x935, 0x93e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x935, 0x93e,
-0x930, 0x3b, 0x92c, 0x941, 0x927, 0x935, 0x93e, 0x930, 0x3b, 0x917, 0x941, 0x930, 0x941, 0x935, 0x93e, 0x930, 0x3b, 0x936, 0x941, 0x915,
-0x94d, 0x930, 0x935, 0x93e, 0x930, 0x3b, 0x936, 0x928, 0x93f, 0x935, 0x93e, 0x930, 0x930, 0x935, 0x93f, 0x3b, 0x938, 0x94b, 0x92e, 0x3b,
-0x92e, 0x902, 0x917, 0x932, 0x3b, 0x92c, 0x941, 0x927, 0x3b, 0x917, 0x941, 0x930, 0x941, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x3b,
-0x936, 0x928, 0x93f, 0x930, 0x3b, 0x938, 0x94b, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, 0x3b, 0x917, 0x941, 0x3b, 0x936, 0x941, 0x3b,
-0x936, 0x76, 0x61, 0x73, 0xe1, 0x72, 0x6e, 0x61, 0x70, 0x3b, 0x68, 0xe9, 0x74, 0x66, 0x151, 0x3b, 0x6b, 0x65, 0x64, 0x64,
-0x3b, 0x73, 0x7a, 0x65, 0x72, 0x64, 0x61, 0x3b, 0x63, 0x73, 0xfc, 0x74, 0xf6, 0x72, 0x74, 0xf6, 0x6b, 0x3b, 0x70, 0xe9,
-0x6e, 0x74, 0x65, 0x6b, 0x3b, 0x73, 0x7a, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x56, 0x3b, 0x48, 0x3b, 0x4b, 0x3b, 0x53, 0x7a,
-0x65, 0x3b, 0x43, 0x73, 0x3b, 0x50, 0x3b, 0x53, 0x7a, 0x6f, 0x56, 0x3b, 0x48, 0x3b, 0x4b, 0x3b, 0x53, 0x7a, 0x3b, 0x43,
-0x73, 0x3b, 0x50, 0x3b, 0x53, 0x7a, 0x73, 0x75, 0x6e, 0x6e, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x6d, 0xe1, 0x6e,
-0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0xfe, 0x72, 0x69, 0xf0, 0x6a, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x6d,
-0x69, 0xf0, 0x76, 0x69, 0x6b, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x66, 0x69, 0x6d, 0x6d, 0x74, 0x75, 0x64, 0x61,
-0x67, 0x75, 0x72, 0x3b, 0x66, 0xf6, 0x73, 0x74, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x6c, 0x61, 0x75, 0x67, 0x61,
-0x72, 0x64, 0x61, 0x67, 0x75, 0x72, 0x73, 0x75, 0x6e, 0x2e, 0x3b, 0x6d, 0xe1, 0x6e, 0x2e, 0x3b, 0xfe, 0x72, 0x69, 0x2e,
-0x3b, 0x6d, 0x69, 0xf0, 0x2e, 0x3b, 0x66, 0x69, 0x6d, 0x2e, 0x3b, 0x66, 0xf6, 0x73, 0x2e, 0x3b, 0x6c, 0x61, 0x75, 0x2e,
-0x53, 0x3b, 0x4d, 0x3b, 0xde, 0x3b, 0x4d, 0x3b, 0x46, 0x3b, 0x46, 0x3b, 0x4c, 0x53, 0x1ecd, 0x6e, 0x64, 0x65, 0x65, 0x3b,
-0x4d, 0x1ecd, 0x6e, 0x64, 0x65, 0x3b, 0x54, 0x69, 0x75, 0x7a, 0x64, 0x65, 0x65, 0x3b, 0x57, 0x65, 0x6e, 0x65, 0x7a, 0x64,
-0x65, 0x65, 0x3b, 0x54, 0x1ecd, 0x1ecd, 0x7a, 0x64, 0x65, 0x65, 0x3b, 0x46, 0x72, 0x61, 0x1ecb, 0x64, 0x65, 0x65, 0x3b, 0x53,
-0x61, 0x74, 0x1ecd, 0x64, 0x65, 0x65, 0x53, 0x1ecd, 0x6e, 0x3b, 0x4d, 0x1ecd, 0x6e, 0x3b, 0x54, 0x69, 0x75, 0x3b, 0x57, 0x65,
-0x6e, 0x3b, 0x54, 0x1ecd, 0x1ecd, 0x3b, 0x46, 0x72, 0x61, 0x1ecb, 0x3b, 0x53, 0x61, 0x74, 0x70, 0x61, 0x73, 0x65, 0x70, 0x65,
-0x69, 0x76, 0x69, 0x3b, 0x76, 0x75, 0x6f, 0x73, 0x73, 0x61, 0x72, 0x67, 0xe2, 0x3b, 0x6d, 0x61, 0x6a, 0x65, 0x62, 0x61,
-0x72, 0x67, 0xe2, 0x3b, 0x6b, 0x6f, 0x73, 0x6b, 0x6f, 0x6b, 0x6b, 0x6f, 0x3b, 0x74, 0x75, 0x6f, 0x72, 0xe2, 0x73, 0x74,
-0xe2, 0x68, 0x3b, 0x76, 0xe1, 0x73, 0x74, 0x75, 0x70, 0x70, 0x65, 0x69, 0x76, 0x69, 0x3b, 0x6c, 0xe1, 0x76, 0x75, 0x72,
-0x64, 0xe2, 0x68, 0x70, 0x61, 0x73, 0x65, 0x70, 0x65, 0x65, 0x69, 0x76, 0x69, 0x3b, 0x76, 0x75, 0x6f, 0x73, 0x73, 0x61,
-0x61, 0x72, 0x67, 0xe2, 0x3b, 0x6d, 0x61, 0x6a, 0x65, 0x62, 0x61, 0x61, 0x72, 0x67, 0xe2, 0x3b, 0x6b, 0x6f, 0x73, 0x6b,
-0x6f, 0x68, 0x6f, 0x3b, 0x74, 0x75, 0x6f, 0x72, 0xe2, 0x73, 0x74, 0x75, 0x76, 0x3b, 0x76, 0xe1, 0x73, 0x74, 0x75, 0x70,
-0x70, 0x65, 0x65, 0x69, 0x76, 0x69, 0x3b, 0x6c, 0xe1, 0x76, 0x75, 0x72, 0x64, 0x75, 0x76, 0x70, 0x61, 0x73, 0x3b, 0x76,
-0x75, 0x6f, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6b, 0x6f, 0x73, 0x3b, 0x74, 0x75, 0x6f, 0x3b, 0x76, 0xe1, 0x73, 0x3b, 0x6c,
-0xe1, 0x76, 0x70, 0x3b, 0x56, 0x3b, 0x4d, 0x3b, 0x4b, 0x3b, 0x54, 0x3b, 0x56, 0x3b, 0x4c, 0x4d, 0x69, 0x6e, 0x67, 0x67,
-0x75, 0x3b, 0x53, 0x65, 0x6e, 0x69, 0x6e, 0x3b, 0x53, 0x65, 0x6c, 0x61, 0x73, 0x61, 0x3b, 0x52, 0x61, 0x62, 0x75, 0x3b,
-0x4b, 0x61, 0x6d, 0x69, 0x73, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x3b, 0x53, 0x61, 0x62, 0x74, 0x75, 0x4d, 0x69, 0x6e,
-0x3b, 0x53, 0x65, 0x6e, 0x3b, 0x53, 0x65, 0x6c, 0x3b, 0x52, 0x61, 0x62, 0x3b, 0x4b, 0x61, 0x6d, 0x3b, 0x4a, 0x75, 0x6d,
-0x3b, 0x53, 0x61, 0x62, 0x4d, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x52, 0x3b, 0x4b, 0x3b, 0x4a, 0x3b, 0x53, 0x64, 0x6f, 0x6d,
-0x69, 0x6e, 0x69, 0x63, 0x61, 0x3b, 0x6c, 0x75, 0x6e, 0x65, 0x64, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x64, 0x69,
-0x3b, 0x6d, 0x65, 0x72, 0x63, 0x75, 0x72, 0x69, 0x64, 0x69, 0x3b, 0x6a, 0x6f, 0x76, 0x65, 0x64, 0x69, 0x3b, 0x76, 0x65,
-0x6e, 0x65, 0x72, 0x64, 0x69, 0x3b, 0x73, 0x61, 0x62, 0x62, 0x61, 0x74, 0x6f, 0x64, 0x6f, 0x6d, 0x3b, 0x6c, 0x75, 0x6e,
-0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d, 0x65, 0x72, 0x3b, 0x6a, 0x6f, 0x76, 0x3b, 0x76, 0x65, 0x6e, 0x3b, 0x73, 0x61, 0x62,
-0x64, 0x3b, 0x6c, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x6a, 0x3b, 0x76, 0x3b, 0x73, 0x44, 0xe9, 0x20, 0x44, 0x6f, 0x6d, 0x68,
-0x6e, 0x61, 0x69, 0x67, 0x68, 0x3b, 0x44, 0xe9, 0x20, 0x4c, 0x75, 0x61, 0x69, 0x6e, 0x3b, 0x44, 0xe9, 0x20, 0x4d, 0xe1,
-0x69, 0x72, 0x74, 0x3b, 0x44, 0xe9, 0x20, 0x43, 0xe9, 0x61, 0x64, 0x61, 0x6f, 0x69, 0x6e, 0x3b, 0x44, 0xe9, 0x61, 0x72,
-0x64, 0x61, 0x6f, 0x69, 0x6e, 0x3b, 0x44, 0xe9, 0x20, 0x68, 0x41, 0x6f, 0x69, 0x6e, 0x65, 0x3b, 0x44, 0xe9, 0x20, 0x53,
-0x61, 0x74, 0x68, 0x61, 0x69, 0x72, 0x6e, 0x44, 0x6f, 0x6d, 0x68, 0x3b, 0x4c, 0x75, 0x61, 0x6e, 0x3b, 0x4d, 0xe1, 0x69,
-0x72, 0x74, 0x3b, 0x43, 0xe9, 0x61, 0x64, 0x3b, 0x44, 0xe9, 0x61, 0x72, 0x3b, 0x41, 0x6f, 0x69, 0x6e, 0x65, 0x3b, 0x53,
-0x61, 0x74, 0x68, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x43, 0x3b, 0x44, 0x3b, 0x41, 0x3b, 0x53, 0x64, 0x6f, 0x6d, 0x65,
-0x6e, 0x69, 0x63, 0x61, 0x3b, 0x6c, 0x75, 0x6e, 0x65, 0x64, 0xec, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x64, 0xec, 0x3b,
-0x6d, 0x65, 0x72, 0x63, 0x6f, 0x6c, 0x65, 0x64, 0xec, 0x3b, 0x67, 0x69, 0x6f, 0x76, 0x65, 0x64, 0xec, 0x3b, 0x76, 0x65,
-0x6e, 0x65, 0x72, 0x64, 0xec, 0x3b, 0x73, 0x61, 0x62, 0x61, 0x74, 0x6f, 0x64, 0x6f, 0x6d, 0x3b, 0x6c, 0x75, 0x6e, 0x3b,
-0x6d, 0x61, 0x72, 0x3b, 0x6d, 0x65, 0x72, 0x3b, 0x67, 0x69, 0x6f, 0x3b, 0x76, 0x65, 0x6e, 0x3b, 0x73, 0x61, 0x62, 0x44,
-0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x56, 0x3b, 0x53, 0x65e5, 0x66dc, 0x65e5, 0x3b, 0x6708, 0x66dc, 0x65e5, 0x3b,
-0x706b, 0x66dc, 0x65e5, 0x3b, 0x6c34, 0x66dc, 0x65e5, 0x3b, 0x6728, 0x66dc, 0x65e5, 0x3b, 0x91d1, 0x66dc, 0x65e5, 0x3b, 0x571f, 0x66dc, 0x65e5, 0x65e5,
-0x3b, 0x6708, 0x3b, 0x706b, 0x3b, 0x6c34, 0x3b, 0x6728, 0x3b, 0x91d1, 0x3b, 0x571f, 0x41, 0x68, 0x61, 0x64, 0x3b, 0x53, 0x65, 0x6e,
-0x69, 0x6e, 0x3b, 0x53, 0x65, 0x6c, 0x61, 0x73, 0x61, 0x3b, 0x52, 0x61, 0x62, 0x75, 0x3b, 0x4b, 0x61, 0x6d, 0x69, 0x73,
-0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x3b, 0x53, 0x61, 0x62, 0x74, 0x75, 0x41, 0x68, 0x61, 0x64, 0x3b, 0x53, 0x65, 0x6e,
-0x3b, 0x53, 0x65, 0x6c, 0x3b, 0x52, 0x61, 0x62, 0x3b, 0x4b, 0x61, 0x6d, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x53, 0x61, 0x62,
-0x41, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x52, 0x3b, 0x4b, 0x3b, 0x4a, 0x3b, 0x53, 0x44, 0x69, 0x6d, 0x61, 0x73, 0x3b, 0x54,
-0x65, 0x6e, 0x65, 0x14b, 0x3b, 0x54, 0x61, 0x6c, 0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x72, 0x62, 0x61, 0x79, 0x3b,
-0x41, 0x72, 0x61, 0x6d, 0x69, 0x73, 0x61, 0x79, 0x3b, 0x41, 0x72, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x53, 0x69, 0x62, 0x69,
-0x74, 0x69, 0x44, 0x69, 0x6d, 0x3b, 0x54, 0x65, 0x6e, 0x3b, 0x54, 0x61, 0x6c, 0x3b, 0x41, 0x6c, 0x61, 0x3b, 0x41, 0x72,
-0x61, 0x3b, 0x41, 0x72, 0x6a, 0x3b, 0x53, 0x69, 0x62, 0x44, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41,
-0x3b, 0x53, 0x64, 0x75, 0x6d, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x73, 0x69, 0x67, 0x75, 0x6e, 0x64, 0x61, 0x2d, 0x66, 0x65,
-0x72, 0x61, 0x3b, 0x74, 0x65, 0x72, 0x73, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x6b, 0x75, 0x61, 0x72, 0x74, 0x61,
-0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x6b, 0x69, 0x6e, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x73, 0x65, 0x73,
-0x74, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x75, 0x64, 0x75, 0x6d, 0x3b, 0x73, 0x69,
-0x67, 0x3b, 0x74, 0x65, 0x72, 0x3b, 0x6b, 0x75, 0x61, 0x3b, 0x6b, 0x69, 0x6e, 0x3b, 0x73, 0x65, 0x73, 0x3b, 0x73, 0x61,
-0x62, 0x44, 0x3b, 0x53, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x53, 0x3b, 0x53, 0x41, 0x63, 0x65, 0x72, 0x3b, 0x41,
-0x72, 0x69, 0x6d, 0x3b, 0x41, 0x72, 0x61, 0x6d, 0x3b, 0x41, 0x68, 0x61, 0x64, 0x3b, 0x41, 0x6d, 0x68, 0x61, 0x64, 0x3b,
-0x53, 0x65, 0x6d, 0x3b, 0x53, 0x65, 0x64, 0x59, 0x61, 0x6e, 0x61, 0x73, 0x73, 0x3b, 0x53, 0x61, 0x6e, 0x61, 0x73, 0x73,
-0x3b, 0x4b, 0x72, 0x61, 0x1e0d, 0x61, 0x73, 0x73, 0x3b, 0x4b, 0x75, 0x1e93, 0x61, 0x73, 0x73, 0x3b, 0x53, 0x61, 0x6d, 0x61,
-0x73, 0x73, 0x3b, 0x53, 0x1e0d, 0x69, 0x73, 0x61, 0x73, 0x73, 0x3b, 0x53, 0x61, 0x79, 0x61, 0x73, 0x73, 0x59, 0x61, 0x6e,
-0x3b, 0x53, 0x61, 0x6e, 0x3b, 0x4b, 0x72, 0x61, 0x1e0d, 0x3b, 0x4b, 0x75, 0x1e93, 0x3b, 0x53, 0x61, 0x6d, 0x3b, 0x53, 0x1e0d,
-0x69, 0x73, 0x3b, 0x53, 0x61, 0x79, 0x59, 0x3b, 0x53, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x53, 0x43,
-0x3b, 0x52, 0x3b, 0x52, 0x3b, 0x48, 0x3b, 0x4d, 0x3b, 0x53, 0x3b, 0x53, 0x73, 0x254, 0x6e, 0x64, 0x69, 0x3b, 0x6c, 0x75,
-0x6e, 0x64, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x64, 0x69, 0x3b, 0x6d, 0x25b, 0x72, 0x6b, 0x25b, 0x72, 0x25b, 0x64, 0x69, 0x3b,
-0x79, 0x65, 0x64, 0x69, 0x3b, 0x76, 0x61, 0x14b, 0x64, 0x25b, 0x72, 0x25b, 0x64, 0x69, 0x3b, 0x6d, 0x254, 0x6e, 0x254, 0x20,
-0x73, 0x254, 0x6e, 0x64, 0x69, 0x73, 0x6f, 0x3b, 0x6c, 0x75, 0x3b, 0x6d, 0x61, 0x3b, 0x6d, 0x25b, 0x3b, 0x79, 0x65, 0x3b,
-0x76, 0x61, 0x3b, 0x6d, 0x73, 0x73, 0x61, 0x70, 0x61, 0x61, 0x74, 0x3b, 0x61, 0x74, 0x61, 0x61, 0x73, 0x69, 0x6e, 0x6e,
-0x67, 0x6f, 0x72, 0x6e, 0x65, 0x71, 0x3b, 0x6d, 0x61, 0x72, 0x6c, 0x75, 0x6e, 0x6e, 0x67, 0x6f, 0x72, 0x6e, 0x65, 0x71,
-0x3b, 0x70, 0x69, 0x6e, 0x67, 0x61, 0x73, 0x75, 0x6e, 0x6e, 0x67, 0x6f, 0x72, 0x6e, 0x65, 0x71, 0x3b, 0x73, 0x69, 0x73,
-0x61, 0x6d, 0x61, 0x6e, 0x6e, 0x67, 0x6f, 0x72, 0x6e, 0x65, 0x71, 0x3b, 0x74, 0x61, 0x6c, 0x6c, 0x69, 0x6d, 0x61, 0x6e,
-0x6e, 0x67, 0x6f, 0x72, 0x6e, 0x65, 0x71, 0x3b, 0x61, 0x72, 0x66, 0x69, 0x6e, 0x69, 0x6e, 0x6e, 0x67, 0x6f, 0x72, 0x6e,
-0x65, 0x71, 0x73, 0x61, 0x70, 0x3b, 0x61, 0x74, 0x61, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x70, 0x69, 0x6e, 0x3b, 0x73, 0x69,
-0x73, 0x3b, 0x74, 0x61, 0x6c, 0x3b, 0x61, 0x72, 0x66, 0x53, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x50, 0x3b, 0x53, 0x3b, 0x54,
-0x3b, 0x41, 0x4b, 0x6f, 0x74, 0x69, 0x73, 0x61, 0x70, 0x3b, 0x4b, 0x6f, 0x74, 0x61, 0x61, 0x69, 0x3b, 0x4b, 0x6f, 0x61,
-0x65, 0x6e, 0x67, 0x2019, 0x3b, 0x4b, 0x6f, 0x73, 0x6f, 0x6d, 0x6f, 0x6b, 0x3b, 0x4b, 0x6f, 0x61, 0x6e, 0x67, 0x2019, 0x77,
-0x61, 0x6e, 0x3b, 0x4b, 0x6f, 0x6d, 0x75, 0x75, 0x74, 0x3b, 0x4b, 0x6f, 0x6c, 0x6f, 0x4b, 0x74, 0x73, 0x3b, 0x4b, 0x6f,
-0x74, 0x3b, 0x4b, 0x6f, 0x6f, 0x3b, 0x4b, 0x6f, 0x73, 0x3b, 0x4b, 0x6f, 0x61, 0x3b, 0x4b, 0x6f, 0x6d, 0x3b, 0x4b, 0x6f,
-0x6c, 0x54, 0x3b, 0x54, 0x3b, 0x4f, 0x3b, 0x53, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4c, 0x57, 0x61, 0x20, 0x6b, 0x79, 0x75,
-0x6d, 0x77, 0x61, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x77, 0x61, 0x6d, 0x62, 0x129, 0x6c, 0x129, 0x6c, 0x79, 0x61, 0x3b, 0x57,
-0x61, 0x20, 0x6b, 0x65, 0x6c, 0x129, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x61, 0x74, 0x61, 0x74, 0x169, 0x3b, 0x57, 0x61, 0x20,
-0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x57, 0x61, 0x20, 0x74, 0x68,
-0x61, 0x6e, 0x74, 0x68, 0x61, 0x74, 0x169, 0x57, 0x6b, 0x79, 0x3b, 0x57, 0x6b, 0x77, 0x3b, 0x57, 0x6b, 0x6c, 0x3b, 0x57,
-0x74, 0x169, 0x3b, 0x57, 0x6b, 0x6e, 0x3b, 0x57, 0x74, 0x6e, 0x3b, 0x57, 0x74, 0x68, 0x59, 0x3b, 0x57, 0x3b, 0x45, 0x3b,
-0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0xcad, 0xcbe, 0xca8, 0xcc1, 0xcb5, 0xcbe, 0xcb0, 0x3b, 0xcb8, 0xccb, 0xcae, 0xcb5, 0xcbe,
-0xcb0, 0x3b, 0xcae, 0xc82, 0xc97, 0xcb3, 0xcb5, 0xcbe, 0xcb0, 0x3b, 0xcac, 0xcc1, 0xca7, 0xcb5, 0xcbe, 0xcb0, 0x3b, 0xc97, 0xcc1, 0xcb0,
-0xcc1, 0xcb5, 0xcbe, 0xcb0, 0x3b, 0xcb6, 0xcc1, 0xc95, 0xccd, 0xcb0, 0xcb5, 0xcbe, 0xcb0, 0x3b, 0xcb6, 0xca8, 0xcbf, 0xcb5, 0xcbe, 0xcb0,
-0xcad, 0xcbe, 0xca8, 0xcc1, 0x3b, 0xcb8, 0xccb, 0xcae, 0x3b, 0xcae, 0xc82, 0xc97, 0xcb3, 0x3b, 0xcac, 0xcc1, 0xca7, 0x3b, 0xc97, 0xcc1,
-0xcb0, 0xcc1, 0x3b, 0xcb6, 0xcc1, 0xc95, 0xccd, 0xcb0, 0x3b, 0xcb6, 0xca8, 0xcbf, 0xcad, 0xcbe, 0x3b, 0xcb8, 0xccb, 0x3b, 0xcae, 0xc82,
-0x3b, 0xcac, 0xcc1, 0x3b, 0xc97, 0xcc1, 0x3b, 0xcb6, 0xcc1, 0x3b, 0xcb6, 0x627, 0x64e, 0x62a, 0x6be, 0x648, 0x627, 0x631, 0x3b, 0x698,
-0x654, 0x646, 0x62f, 0x631, 0x655, 0x631, 0x648, 0x627, 0x631, 0x3b, 0x628, 0x6c6, 0x645, 0x648, 0x627, 0x631, 0x3b, 0x628, 0x648, 0x62f,
-0x648, 0x627, 0x631, 0x3b, 0x628, 0x631, 0x620, 0x633, 0x648, 0x627, 0x631, 0x3b, 0x62c, 0x64f, 0x645, 0x6c1, 0x3b, 0x628, 0x679, 0x648,
-0x627, 0x631, 0x622, 0x62a, 0x6be, 0x648, 0x627, 0x631, 0x3b, 0x698, 0x654, 0x646, 0x62f, 0x655, 0x631, 0x648, 0x627, 0x631, 0x3b, 0x628,
-0x6c6, 0x645, 0x648, 0x627, 0x631, 0x3b, 0x628, 0x648, 0x62f, 0x648, 0x627, 0x631, 0x3b, 0x628, 0x631, 0x620, 0x633, 0x648, 0x627, 0x631,
-0x3b, 0x62c, 0x64f, 0x645, 0x6c1, 0x3b, 0x628, 0x679, 0x648, 0x627, 0x631, 0x627, 0x3b, 0x698, 0x3b, 0x628, 0x3b, 0x628, 0x3b, 0x628,
-0x3b, 0x62c, 0x3b, 0x628, 0x436, 0x435, 0x43a, 0x441, 0x435, 0x43d, 0x431, 0x456, 0x3b, 0x434, 0x4af, 0x439, 0x441, 0x435, 0x43d, 0x431,
-0x456, 0x3b, 0x441, 0x435, 0x439, 0x441, 0x435, 0x43d, 0x431, 0x456, 0x3b, 0x441, 0x4d9, 0x440, 0x441, 0x435, 0x43d, 0x431, 0x456, 0x3b,
-0x431, 0x435, 0x439, 0x441, 0x435, 0x43d, 0x431, 0x456, 0x3b, 0x436, 0x4b1, 0x43c, 0x430, 0x3b, 0x441, 0x435, 0x43d, 0x431, 0x456, 0x436,
-0x441, 0x3b, 0x434, 0x441, 0x3b, 0x441, 0x441, 0x3b, 0x441, 0x440, 0x3b, 0x431, 0x441, 0x3b, 0x436, 0x43c, 0x3b, 0x441, 0x431, 0x416,
-0x3b, 0x414, 0x3b, 0x421, 0x3b, 0x421, 0x3b, 0x411, 0x3b, 0x416, 0x3b, 0x421, 0x17a2, 0x17b6, 0x1791, 0x17b7, 0x178f, 0x17d2, 0x1799, 0x3b,
-0x1785, 0x1793, 0x17d2, 0x1791, 0x3b, 0x17a2, 0x1784, 0x17d2, 0x1782, 0x17b6, 0x179a, 0x3b, 0x1796, 0x17bb, 0x1792, 0x3b, 0x1796, 0x17d2, 0x179a, 0x17a0,
-0x179f, 0x17d2, 0x1794, 0x178f, 0x17b7, 0x17cd, 0x3b, 0x179f, 0x17bb, 0x1780, 0x17d2, 0x179a, 0x3b, 0x179f, 0x17c5, 0x179a, 0x17cd, 0x17a2, 0x17b6, 0x1791,
-0x17b7, 0x178f, 0x17d2, 0x1799, 0x3b, 0x1785, 0x17d0, 0x1793, 0x17d2, 0x1791, 0x3b, 0x17a2, 0x1784, 0x17d2, 0x1782, 0x17b6, 0x179a, 0x3b, 0x1796, 0x17bb,
-0x1792, 0x3b, 0x1796, 0x17d2, 0x179a, 0x17a0, 0x179f, 0x17d2, 0x1794, 0x178f, 0x17b7, 0x17cd, 0x3b, 0x179f, 0x17bb, 0x1780, 0x17d2, 0x179a, 0x3b, 0x179f,
-0x17c5, 0x179a, 0x17cd, 0x17a2, 0x17b6, 0x1791, 0x17b7, 0x178f, 0x17d2, 0x1799, 0x3b, 0x1785, 0x1793, 0x17d2, 0x1791, 0x3b, 0x17a2, 0x1784, 0x17d2, 0x1782,
-0x17b6, 0x179a, 0x3b, 0x1796, 0x17bb, 0x1792, 0x3b, 0x1796, 0x17d2, 0x179a, 0x17a0, 0x3b, 0x179f, 0x17bb, 0x1780, 0x17d2, 0x179a, 0x3b, 0x179f, 0x17c5,
-0x179a, 0x17cd, 0x17a2, 0x3b, 0x1785, 0x3b, 0x17a2, 0x3b, 0x1796, 0x3b, 0x1796, 0x3b, 0x179f, 0x3b, 0x179f, 0x4b, 0x69, 0x75, 0x6d, 0x69,
-0x61, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x169, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x69, 0x6e, 0x65,
-0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x61, 0x3b, 0x41, 0x72, 0x61, 0x6d, 0x69, 0x74, 0x68, 0x69, 0x3b,
-0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x74, 0x68, 0x69, 0x4b, 0x4d, 0x41,
-0x3b, 0x4e, 0x54, 0x54, 0x3b, 0x4e, 0x4d, 0x4e, 0x3b, 0x4e, 0x4d, 0x54, 0x3b, 0x41, 0x52, 0x54, 0x3b, 0x4e, 0x4d, 0x41,
-0x3b, 0x4e, 0x4d, 0x4d, 0x4b, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x41, 0x3b, 0x4e, 0x3b, 0x4e, 0x4b, 0x75, 0x20,
-0x63, 0x79, 0x75, 0x6d, 0x77, 0x65, 0x72, 0x75, 0x3b, 0x4b, 0x75, 0x77, 0x61, 0x20, 0x6d, 0x62, 0x65, 0x72, 0x65, 0x3b,
-0x4b, 0x75, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x62, 0x69, 0x72, 0x69, 0x3b, 0x4b, 0x75, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74,
-0x61, 0x74, 0x75, 0x3b, 0x4b, 0x75, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x65, 0x3b, 0x4b, 0x75, 0x77, 0x61, 0x20, 0x67,
-0x61, 0x74, 0x61, 0x6e, 0x75, 0x3b, 0x4b, 0x75, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x75,
-0x63, 0x79, 0x75, 0x2e, 0x3b, 0x6d, 0x62, 0x65, 0x2e, 0x3b, 0x6b, 0x61, 0x62, 0x2e, 0x3b, 0x67, 0x74, 0x75, 0x2e, 0x3b,
-0x6b, 0x61, 0x6e, 0x2e, 0x3b, 0x67, 0x6e, 0x75, 0x2e, 0x3b, 0x67, 0x6e, 0x64, 0x2e, 0x906, 0x92f, 0x924, 0x93e, 0x930, 0x3b,
-0x938, 0x94b, 0x92e, 0x93e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x933, 0x93e, 0x930, 0x3b, 0x92c, 0x941, 0x927, 0x935, 0x93e, 0x930, 0x3b,
-0x92c, 0x93f, 0x930, 0x947, 0x938, 0x94d, 0x924, 0x93e, 0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x93e, 0x930, 0x3b, 0x936, 0x947,
-0x928, 0x935, 0x93e, 0x930, 0x906, 0x3b, 0x938, 0x94b, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, 0x3b, 0x92c, 0x3b, 0x936, 0x941, 0x3b,
-0x936, 0x947, 0x906, 0x3b, 0x938, 0x94b, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, 0x3b, 0x92c, 0x93f, 0x3b, 0x936, 0x941, 0x3b, 0x936,
-0x947, 0xc77c, 0xc694, 0xc77c, 0x3b, 0xc6d4, 0xc694, 0xc77c, 0x3b, 0xd654, 0xc694, 0xc77c, 0x3b, 0xc218, 0xc694, 0xc77c, 0x3b, 0xbaa9, 0xc694, 0xc77c,
-0x3b, 0xae08, 0xc694, 0xc77c, 0x3b, 0xd1a0, 0xc694, 0xc77c, 0xc77c, 0x3b, 0xc6d4, 0x3b, 0xd654, 0x3b, 0xc218, 0x3b, 0xbaa9, 0x3b, 0xae08, 0x3b,
-0xd1a0, 0x41, 0x6c, 0x68, 0x61, 0x64, 0x69, 0x3b, 0x41, 0x74, 0x69, 0x6e, 0x6e, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x6c, 0x61,
-0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x72, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x69, 0x73, 0x61,
-0x3b, 0x41, 0x6c, 0x7a, 0x75, 0x6d, 0x61, 0x3b, 0x41, 0x73, 0x69, 0x62, 0x74, 0x69, 0x41, 0x6c, 0x68, 0x3b, 0x41, 0x74,
-0x69, 0x3b, 0x41, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x3b, 0x41, 0x6c, 0x6d, 0x3b, 0x41, 0x6c, 0x7a, 0x3b, 0x41, 0x73,
-0x69, 0x48, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x53, 0x41, 0x6c, 0x68, 0x61, 0x64, 0x69,
-0x3b, 0x41, 0x74, 0x69, 0x6e, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x6c, 0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x72, 0x62,
-0x61, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x69, 0x73, 0x61, 0x3b, 0x41, 0x6c, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x41,
-0x73, 0x73, 0x61, 0x62, 0x64, 0x75, 0x41, 0x6c, 0x68, 0x3b, 0x41, 0x74, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x3b, 0x41, 0x6c,
-0x61, 0x3b, 0x41, 0x6c, 0x6d, 0x3b, 0x41, 0x6c, 0x6a, 0x3b, 0x41, 0x73, 0x73, 0x79, 0x65, 0x6b, 0x15f, 0x65, 0x6d, 0x3b,
-0x64, 0x75, 0x15f, 0x65, 0x6d, 0x3b, 0x73, 0xea, 0x15f, 0x65, 0x6d, 0x3b, 0xe7, 0x61, 0x72, 0x15f, 0x65, 0x6d, 0x3b, 0x70,
-0xea, 0x6e, 0x63, 0x15f, 0x65, 0x6d, 0x3b, 0xee, 0x6e, 0x3b, 0x15f, 0x65, 0x6d, 0xee, 0x79, 0x15f, 0x3b, 0x64, 0x15f, 0x3b,
-0x73, 0x15f, 0x3b, 0xe7, 0x15f, 0x3b, 0x70, 0x15f, 0x3b, 0xee, 0x6e, 0x3b, 0x15f, 0x59, 0x3b, 0x44, 0x3b, 0x53, 0x3b, 0xc7,
-0x3b, 0x50, 0x3b, 0xce, 0x3b, 0x15e, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x3b, 0x6d, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x3b,
-0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x61, 0x66, 0xfa, 0x20, 0x6d, 0xe1, 0x62, 0x61, 0x3b, 0x73, 0x254, 0x301,
-0x6e, 0x64, 0x254, 0x20, 0x6d, 0x61, 0x66, 0xfa, 0x20, 0x6d, 0xe1, 0x6c, 0x61, 0x6c, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64,
-0x254, 0x20, 0x6d, 0x61, 0x66, 0xfa, 0x20, 0x6d, 0xe1, 0x6e, 0x61, 0x3b, 0x6d, 0x61, 0x62, 0xe1, 0x67, 0xe1, 0x20, 0x6d,
-0xe1, 0x20, 0x73, 0x75, 0x6b, 0x75, 0x6c, 0x3b, 0x73, 0xe1, 0x73, 0x61, 0x64, 0x69, 0x73, 0x254, 0x301, 0x6e, 0x3b, 0x6d,
-0x254, 0x301, 0x6e, 0x3b, 0x73, 0x6d, 0x62, 0x3b, 0x73, 0x6d, 0x6c, 0x3b, 0x73, 0x6d, 0x6e, 0x3b, 0x6d, 0x62, 0x73, 0x3b,
-0x73, 0x61, 0x73, 0x73, 0x3b, 0x6d, 0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x6d, 0x3b, 0x73, 0x436, 0x435, 0x43a, 0x448,
-0x435, 0x43c, 0x431, 0x438, 0x3b, 0x434, 0x4af, 0x439, 0x448, 0x4e9, 0x43c, 0x431, 0x4af, 0x3b, 0x448, 0x435, 0x439, 0x448, 0x435, 0x43c,
-0x431, 0x438, 0x3b, 0x448, 0x430, 0x440, 0x448, 0x435, 0x43c, 0x431, 0x438, 0x3b, 0x431, 0x435, 0x439, 0x448, 0x435, 0x43c, 0x431, 0x438,
-0x3b, 0x436, 0x443, 0x43c, 0x430, 0x3b, 0x438, 0x448, 0x435, 0x43c, 0x431, 0x438, 0x436, 0x435, 0x43a, 0x2e, 0x3b, 0x434, 0x4af, 0x439,
-0x2e, 0x3b, 0x448, 0x435, 0x439, 0x448, 0x2e, 0x3b, 0x448, 0x430, 0x440, 0x448, 0x2e, 0x3b, 0x431, 0x435, 0x439, 0x448, 0x2e, 0x3b,
-0x436, 0x443, 0x43c, 0x430, 0x3b, 0x438, 0x448, 0x43c, 0x2e, 0x416, 0x3b, 0x414, 0x3b, 0x428, 0x3b, 0x428, 0x3b, 0x411, 0x3b, 0x416,
-0x3b, 0x418, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x77, 0x61, 0x6b, 0x21f, 0x61, 0x14b, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74,
-0x75, 0x77, 0x61, 0x14b, 0x17e, 0x69, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x6e, 0x75, 0x14b, 0x70, 0x61, 0x3b, 0x41,
-0x14b, 0x70, 0xe9, 0x74, 0x75, 0x79, 0x61, 0x6d, 0x6e, 0x69, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x74, 0x6f, 0x70,
-0x61, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x7a, 0x61, 0x70, 0x74, 0x61, 0x14b, 0x3b, 0x4f, 0x77, 0xe1, 0x14b, 0x67,
-0x79, 0x75, 0x17e, 0x61, 0x17e, 0x61, 0x70, 0x69, 0x41, 0x3b, 0x57, 0x3b, 0x4e, 0x3b, 0x59, 0x3b, 0x54, 0x3b, 0x5a, 0x3b,
-0x4f, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0xed, 0x69, 0x72, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0xe1, 0x74, 0x75, 0x3b,
-0x4a, 0x75, 0x6d, 0x61, 0xed, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0xe1, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c,
-0x61, 0x6d, 0xed, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0xe1, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0xf3,
-0x6f, 0x73, 0x69, 0x50, 0xed, 0x69, 0x6c, 0x69, 0x3b, 0x54, 0xe1, 0x61, 0x74, 0x75, 0x3b, 0xcd, 0x6e, 0x65, 0x3b, 0x54,
-0xe1, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x6d, 0x3b, 0x4d, 0xf3, 0x6f, 0x73, 0x69, 0x50, 0x3b,
-0x54, 0x3b, 0x45, 0x3b, 0x4f, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x4d, 0xea7, 0xeb1, 0xe99, 0xead, 0xeb2, 0xe97, 0xeb4, 0xe94, 0x3b,
-0xea7, 0xeb1, 0xe99, 0xe88, 0xeb1, 0xe99, 0x3b, 0xea7, 0xeb1, 0xe99, 0xead, 0xeb1, 0xe87, 0xe84, 0xeb2, 0xe99, 0x3b, 0xea7, 0xeb1, 0xe99,
-0xe9e, 0xeb8, 0xe94, 0x3b, 0xea7, 0xeb1, 0xe99, 0xe9e, 0xeb0, 0xeab, 0xeb1, 0xe94, 0x3b, 0xea7, 0xeb1, 0xe99, 0xeaa, 0xeb8, 0xe81, 0x3b,
-0xea7, 0xeb1, 0xe99, 0xec0, 0xeaa, 0xebb, 0xeb2, 0xead, 0xeb2, 0xe97, 0xeb4, 0xe94, 0x3b, 0xe88, 0xeb1, 0xe99, 0x3b, 0xead, 0xeb1, 0xe87,
-0xe84, 0xeb2, 0xe99, 0x3b, 0xe9e, 0xeb8, 0xe94, 0x3b, 0xe9e, 0xeb0, 0xeab, 0xeb1, 0xe94, 0x3b, 0xeaa, 0xeb8, 0xe81, 0x3b, 0xec0, 0xeaa,
-0xebb, 0xeb2, 0xead, 0xeb2, 0x3b, 0xe88, 0x3b, 0xead, 0x3b, 0xe9e, 0x3b, 0xe9e, 0xeab, 0x3b, 0xeaa, 0xeb8, 0x3b, 0xeaa, 0x53, 0x76,
-0x113, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x50, 0x69, 0x72, 0x6d, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x4f, 0x74,
-0x72, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x54, 0x72, 0x65, 0x161, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x43, 0x65, 0x74,
-0x75, 0x72, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x50, 0x69, 0x65, 0x6b, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b,
-0x53, 0x65, 0x73, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x73, 0x76, 0x113, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x70,
-0x69, 0x72, 0x6d, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x6f, 0x74, 0x72, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x74, 0x72,
-0x65, 0x161, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x63, 0x65, 0x74, 0x75, 0x72, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b,
-0x70, 0x69, 0x65, 0x6b, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x73, 0x65, 0x73, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61,
-0x53, 0x76, 0x113, 0x74, 0x64, 0x2e, 0x3b, 0x50, 0x69, 0x72, 0x6d, 0x64, 0x2e, 0x3b, 0x4f, 0x74, 0x72, 0x64, 0x2e, 0x3b,
-0x54, 0x72, 0x65, 0x161, 0x64, 0x2e, 0x3b, 0x43, 0x65, 0x74, 0x75, 0x72, 0x74, 0x64, 0x2e, 0x3b, 0x50, 0x69, 0x65, 0x6b,
-0x74, 0x64, 0x2e, 0x3b, 0x53, 0x65, 0x73, 0x74, 0x64, 0x2e, 0x73, 0x76, 0x113, 0x74, 0x64, 0x2e, 0x3b, 0x70, 0x69, 0x72,
-0x6d, 0x64, 0x2e, 0x3b, 0x6f, 0x74, 0x72, 0x64, 0x2e, 0x3b, 0x74, 0x72, 0x65, 0x161, 0x64, 0x2e, 0x3b, 0x63, 0x65, 0x74,
-0x75, 0x72, 0x74, 0x64, 0x2e, 0x3b, 0x70, 0x69, 0x65, 0x6b, 0x74, 0x64, 0x2e, 0x3b, 0x73, 0x65, 0x73, 0x74, 0x64, 0x2e,
-0x53, 0x3b, 0x50, 0x3b, 0x4f, 0x3b, 0x54, 0x3b, 0x43, 0x3b, 0x50, 0x3b, 0x53, 0x65, 0x79, 0x65, 0x6e, 0x67, 0x61, 0x3b,
-0x6d, 0x6f, 0x6b, 0x254, 0x6c, 0x254, 0x20, 0x6d, 0x77, 0x61, 0x20, 0x79, 0x61, 0x6d, 0x62, 0x6f, 0x3b, 0x6d, 0x6f, 0x6b,
-0x254, 0x6c, 0x254, 0x20, 0x6d, 0x77, 0x61, 0x20, 0x6d, 0xed, 0x62, 0x61, 0x6c, 0xe9, 0x3b, 0x6d, 0x6f, 0x6b, 0x254, 0x6c,
-0x254, 0x20, 0x6d, 0x77, 0x61, 0x20, 0x6d, 0xed, 0x73, 0xe1, 0x74, 0x6f, 0x3b, 0x6d, 0x6f, 0x6b, 0x254, 0x6c, 0x254, 0x20,
-0x79, 0x61, 0x20, 0x6d, 0xed, 0x6e, 0xe9, 0x69, 0x3b, 0x6d, 0x6f, 0x6b, 0x254, 0x6c, 0x254, 0x20, 0x79, 0x61, 0x20, 0x6d,
-0xed, 0x74, 0xe1, 0x6e, 0x6f, 0x3b, 0x6d, 0x70, 0x254, 0x301, 0x73, 0x254, 0x65, 0x79, 0x65, 0x3b, 0x79, 0x62, 0x6f, 0x3b,
-0x6d, 0x62, 0x6c, 0x3b, 0x6d, 0x73, 0x74, 0x3b, 0x6d, 0x69, 0x6e, 0x3b, 0x6d, 0x74, 0x6e, 0x3b, 0x6d, 0x70, 0x73, 0x65,
-0x3b, 0x79, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x70, 0x73, 0x65, 0x6b, 0x6d, 0x61, 0x64, 0x69, 0x65,
-0x6e, 0x69, 0x73, 0x3b, 0x70, 0x69, 0x72, 0x6d, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73, 0x3b, 0x61, 0x6e, 0x74, 0x72,
-0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73, 0x3b, 0x74, 0x72, 0x65, 0x10d, 0x69, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73,
-0x3b, 0x6b, 0x65, 0x74, 0x76, 0x69, 0x72, 0x74, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73, 0x3b, 0x70, 0x65, 0x6e, 0x6b,
-0x74, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73, 0x3b, 0x161, 0x65, 0x161, 0x74, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73,
-0x73, 0x6b, 0x3b, 0x70, 0x72, 0x3b, 0x61, 0x6e, 0x3b, 0x74, 0x72, 0x3b, 0x6b, 0x74, 0x3b, 0x70, 0x6e, 0x3b, 0x161, 0x74,
-0x53, 0x3b, 0x50, 0x3b, 0x41, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x50, 0x3b, 0x160, 0x6e, 0x6a, 0x65, 0x17a, 0x65, 0x6c, 0x61,
-0x3b, 0x70, 0xf3, 0x6e, 0x6a, 0x65, 0x17a, 0x65, 0x6c, 0x65, 0x3b, 0x77, 0x61, 0x142, 0x74, 0x6f, 0x72, 0x61, 0x3b, 0x73,
-0x72, 0x6a, 0x6f, 0x64, 0x61, 0x3b, 0x73, 0x74, 0x77, 0xf3, 0x72, 0x74, 0x6b, 0x3b, 0x70, 0x11b, 0x74, 0x6b, 0x3b, 0x73,
-0x6f, 0x62, 0x6f, 0x74, 0x61, 0x6e, 0x6a, 0x65, 0x3b, 0x70, 0xf3, 0x6e, 0x3b, 0x77, 0x61, 0x142, 0x3b, 0x73, 0x72, 0x6a,
-0x3b, 0x73, 0x74, 0x77, 0x3b, 0x70, 0x11b, 0x74, 0x3b, 0x73, 0x6f, 0x62, 0x6e, 0x3b, 0x70, 0x3b, 0x77, 0x3b, 0x73, 0x3b,
-0x73, 0x3b, 0x70, 0x3b, 0x73, 0x53, 0xfc, 0x6e, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x4d, 0x61, 0x61, 0x6e, 0x64, 0x61, 0x67,
-0x3b, 0x44, 0x69, 0x6e, 0x67, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x4d, 0x69, 0x64, 0x64, 0x65, 0x77, 0x65, 0x6b, 0x65, 0x6e,
-0x3b, 0x44, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x46, 0x72, 0x65, 0x65, 0x64, 0x61, 0x67, 0x3b,
-0x53, 0xfc, 0x6e, 0x6e, 0x61, 0x76, 0x65, 0x6e, 0x64, 0x53, 0xfc, 0x2e, 0x3b, 0x4d, 0x61, 0x2e, 0x3b, 0x44, 0x69, 0x2e,
-0x3b, 0x4d, 0x69, 0x2e, 0x3b, 0x44, 0x75, 0x2e, 0x3b, 0x46, 0x72, 0x2e, 0x3b, 0x53, 0x61, 0x2e, 0x4c, 0x75, 0x6d, 0x69,
-0x6e, 0x67, 0x75, 0x3b, 0x4e, 0x6b, 0x6f, 0x64, 0x79, 0x61, 0x3b, 0x4e, 0x64, 0xe0, 0x61, 0x79, 0xe0, 0x3b, 0x4e, 0x64,
-0x61, 0x6e, 0x67, 0xf9, 0x3b, 0x4e, 0x6a, 0xf2, 0x77, 0x61, 0x3b, 0x4e, 0x67, 0xf2, 0x76, 0x79, 0x61, 0x3b, 0x4c, 0x75,
-0x62, 0x69, 0x6e, 0x67, 0x75, 0x4c, 0x75, 0x6d, 0x3b, 0x4e, 0x6b, 0x6f, 0x3b, 0x4e, 0x64, 0x79, 0x3b, 0x4e, 0x64, 0x67,
-0x3b, 0x4e, 0x6a, 0x77, 0x3b, 0x4e, 0x67, 0x76, 0x3b, 0x4c, 0x75, 0x62, 0x4c, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b,
-0x4e, 0x3b, 0x4e, 0x3b, 0x4c, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x6c, 0x3b, 0x57, 0x75, 0x6f, 0x6b, 0x20, 0x54, 0x69,
-0x63, 0x68, 0x3b, 0x54, 0x69, 0x63, 0x68, 0x20, 0x41, 0x72, 0x69, 0x79, 0x6f, 0x3b, 0x54, 0x69, 0x63, 0x68, 0x20, 0x41,
-0x64, 0x65, 0x6b, 0x3b, 0x54, 0x69, 0x63, 0x68, 0x20, 0x41, 0x6e, 0x67, 0x2019, 0x77, 0x65, 0x6e, 0x3b, 0x54, 0x69, 0x63,
-0x68, 0x20, 0x41, 0x62, 0x69, 0x63, 0x68, 0x3b, 0x4e, 0x67, 0x65, 0x73, 0x6f, 0x4a, 0x4d, 0x50, 0x3b, 0x57, 0x55, 0x54,
-0x3b, 0x54, 0x41, 0x52, 0x3b, 0x54, 0x41, 0x44, 0x3b, 0x54, 0x41, 0x4e, 0x3b, 0x54, 0x41, 0x42, 0x3b, 0x4e, 0x47, 0x53,
-0x4a, 0x3b, 0x57, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x4e, 0x53, 0x6f, 0x6e, 0x6e, 0x64, 0x65, 0x67,
-0x3b, 0x4d, 0xe9, 0x69, 0x6e, 0x64, 0x65, 0x67, 0x3b, 0x44, 0xeb, 0x6e, 0x73, 0x63, 0x68, 0x64, 0x65, 0x67, 0x3b, 0x4d,
-0xeb, 0x74, 0x74, 0x77, 0x6f, 0x63, 0x68, 0x3b, 0x44, 0x6f, 0x6e, 0x6e, 0x65, 0x73, 0x63, 0x68, 0x64, 0x65, 0x67, 0x3b,
-0x46, 0x72, 0x65, 0x69, 0x64, 0x65, 0x67, 0x3b, 0x53, 0x61, 0x6d, 0x73, 0x63, 0x68, 0x64, 0x65, 0x67, 0x53, 0x6f, 0x6e,
-0x3b, 0x4d, 0xe9, 0x69, 0x3b, 0x44, 0xeb, 0x6e, 0x3b, 0x4d, 0xeb, 0x74, 0x3b, 0x44, 0x6f, 0x6e, 0x3b, 0x46, 0x72, 0x65,
-0x3b, 0x53, 0x61, 0x6d, 0x53, 0x6f, 0x6e, 0x2e, 0x3b, 0x4d, 0xe9, 0x69, 0x2e, 0x3b, 0x44, 0xeb, 0x6e, 0x2e, 0x3b, 0x4d,
-0xeb, 0x74, 0x2e, 0x3b, 0x44, 0x6f, 0x6e, 0x2e, 0x3b, 0x46, 0x72, 0x65, 0x2e, 0x3b, 0x53, 0x61, 0x6d, 0x2e, 0x4a, 0x75,
-0x6d, 0x61, 0x70, 0x69, 0x72, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61,
-0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x4d, 0x75, 0x72, 0x77, 0x61, 0x20, 0x77,
-0x61, 0x20, 0x4b, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4d, 0x75, 0x72, 0x77, 0x61, 0x20, 0x77, 0x61, 0x20, 0x4b, 0x61, 0x74,
-0x61, 0x6e, 0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x4a, 0x32, 0x3b, 0x4a, 0x33, 0x3b, 0x4a, 0x34,
-0x3b, 0x4a, 0x35, 0x3b, 0x41, 0x6c, 0x3b, 0x49, 0x6a, 0x3b, 0x4a, 0x31, 0x43d, 0x435, 0x434, 0x435, 0x43b, 0x430, 0x3b, 0x43f,
-0x43e, 0x43d, 0x435, 0x434, 0x435, 0x43b, 0x43d, 0x438, 0x43a, 0x3b, 0x432, 0x442, 0x43e, 0x440, 0x43d, 0x438, 0x43a, 0x3b, 0x441, 0x440,
-0x435, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x440, 0x442, 0x43e, 0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x43e, 0x43a, 0x3b, 0x441,
-0x430, 0x431, 0x43e, 0x442, 0x430, 0x43d, 0x435, 0x434, 0x2e, 0x3b, 0x43f, 0x43e, 0x43d, 0x2e, 0x3b, 0x432, 0x442, 0x43e, 0x2e, 0x3b,
-0x441, 0x440, 0x435, 0x2e, 0x3b, 0x447, 0x435, 0x442, 0x2e, 0x3b, 0x43f, 0x435, 0x442, 0x2e, 0x3b, 0x441, 0x430, 0x431, 0x2e, 0x4a,
-0x75, 0x6d, 0x61, 0x70, 0x69, 0x6c, 0x79, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x75, 0x3b, 0x4a,
-0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x75, 0x3b, 0x41, 0x6c, 0x68, 0x61,
-0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69,
-0x4a, 0x70, 0x69, 0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6e, 0x6e, 0x3b, 0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x6c, 0x68, 0x3b,
-0x49, 0x6a, 0x75, 0x3b, 0x4a, 0x6d, 0x6f, 0x930, 0x935, 0x93f, 0x20, 0x926, 0x93f, 0x928, 0x3b, 0x938, 0x94b, 0x92e, 0x20, 0x926,
-0x93f, 0x928, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x20, 0x926, 0x93f, 0x928, 0x3b, 0x92c, 0x941, 0x927, 0x20, 0x926, 0x93f, 0x928, 0x3b,
-0x92c, 0x943, 0x939, 0x938, 0x94d, 0x92a, 0x924, 0x93f, 0x20, 0x926, 0x93f, 0x928, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x20, 0x926,
-0x93f, 0x928, 0x3b, 0x936, 0x928, 0x93f, 0x20, 0x926, 0x93f, 0x928, 0x53, 0x61, 0x62, 0x61, 0x74, 0x6f, 0x3b, 0x4a, 0x75, 0x6d,
-0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61,
-0x6e, 0x6f, 0x3b, 0x41, 0x72, 0x61, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b,
-0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x53, 0x61, 0x62, 0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6e, 0x6e, 0x3b,
-0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x72, 0x61, 0x3b, 0x49, 0x6a, 0x75, 0x3b, 0x4a, 0x6d, 0x6f, 0x53, 0x3b, 0x4a, 0x3b, 0x4a,
-0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x4a, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x70, 0x69,
-0x6c, 0x69, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4c, 0x69,
-0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x63, 0x68, 0x69, 0x3b, 0x4c, 0x69, 0x64, 0x75,
-0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x6e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20,
-0x6c, 0x79, 0x61, 0x6e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x6c, 0x69, 0x6e, 0x6a, 0x69, 0x3b, 0x4c,
-0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x6e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x6d,
-0x61, 0x76, 0x69, 0x6c, 0x69, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x69, 0x74, 0x61, 0x6e, 0x64, 0x69,
-0x4c, 0x6c, 0x32, 0x3b, 0x4c, 0x6c, 0x33, 0x3b, 0x4c, 0x6c, 0x34, 0x3b, 0x4c, 0x6c, 0x35, 0x3b, 0x4c, 0x6c, 0x36, 0x3b,
-0x4c, 0x6c, 0x37, 0x3b, 0x4c, 0x6c, 0x31, 0x32, 0x3b, 0x33, 0x3b, 0x34, 0x3b, 0x35, 0x3b, 0x36, 0x3b, 0x37, 0x3b, 0x31,
-0x41, 0x6c, 0x61, 0x68, 0x61, 0x64, 0x79, 0x3b, 0x41, 0x6c, 0x61, 0x74, 0x73, 0x69, 0x6e, 0x61, 0x69, 0x6e, 0x79, 0x3b,
-0x54, 0x61, 0x6c, 0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x72, 0x6f, 0x62, 0x69, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x6b,
-0x61, 0x6d, 0x69, 0x73, 0x79, 0x3b, 0x5a, 0x6f, 0x6d, 0x61, 0x3b, 0x41, 0x73, 0x61, 0x62, 0x6f, 0x74, 0x73, 0x79, 0x41,
-0x6c, 0x61, 0x68, 0x3b, 0x41, 0x6c, 0x61, 0x74, 0x73, 0x3b, 0x54, 0x61, 0x6c, 0x3b, 0x41, 0x6c, 0x61, 0x72, 0x3b, 0x41,
-0x6c, 0x61, 0x6b, 0x3b, 0x5a, 0x6f, 0x6d, 0x3b, 0x41, 0x73, 0x61, 0x62, 0x41, 0x3b, 0x41, 0x3b, 0x54, 0x3b, 0x41, 0x3b,
-0x41, 0x3b, 0x5a, 0x3b, 0x41, 0xd1e, 0xd3e, 0xd2f, 0xd31, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd24, 0xd3f, 0xd19, 0xd4d, 0xd15,
-0xd33, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd1a, 0xd4a, 0xd35, 0xd4d, 0xd35, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd2c, 0xd41,
-0xd27, 0xd28, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd35, 0xd4d, 0xd2f, 0xd3e, 0xd34, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd35,
-0xd46, 0xd33, 0xd4d, 0xd33, 0xd3f, 0xd2f, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd36, 0xd28, 0xd3f, 0xd2f, 0xd3e, 0xd34, 0xd4d, 0x200c,
-0xd1a, 0xd1e, 0xd3e, 0xd2f, 0xd31, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd24, 0xd3f, 0xd19, 0xd4d, 0xd15, 0xd33, 0xd3e, 0xd34, 0xd4d,
-0x200c, 0xd1a, 0x3b, 0xd1a, 0xd4a, 0xd35, 0xd4d, 0xd35, 0xd3e, 0xd34, 0xd4d, 0xd1a, 0x3b, 0xd2c, 0xd41, 0xd27, 0xd28, 0xd3e, 0xd34, 0xd4d,
-0x200c, 0xd1a, 0x3b, 0xd35, 0xd4d, 0xd2f, 0xd3e, 0xd34, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd35, 0xd46, 0xd33, 0xd4d, 0xd33, 0xd3f,
-0xd2f, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd36, 0xd28, 0xd3f, 0xd2f, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0xd1e, 0xd3e, 0xd2f, 0xd7c,
-0x3b, 0xd24, 0xd3f, 0xd19, 0xd4d, 0xd15, 0xd7e, 0x3b, 0xd1a, 0xd4a, 0xd35, 0xd4d, 0xd35, 0x3b, 0xd2c, 0xd41, 0xd27, 0xd7b, 0x3b, 0xd35,
-0xd4d, 0xd2f, 0xd3e, 0xd34, 0xd02, 0x3b, 0xd35, 0xd46, 0xd33, 0xd4d, 0xd33, 0xd3f, 0x3b, 0xd36, 0xd28, 0xd3f, 0xd1e, 0xd3e, 0x3b, 0xd24,
-0xd3f, 0x3b, 0xd1a, 0xd4a, 0x3b, 0xd2c, 0xd41, 0x3b, 0xd35, 0xd4d, 0xd2f, 0xd3e, 0x3b, 0xd35, 0xd46, 0x3b, 0xd36, 0xd1e, 0x3b, 0xd24,
-0xd3f, 0x3b, 0xd1a, 0xd4a, 0x3b, 0xd2c, 0xd41, 0x3b, 0xd35, 0xd4d, 0xd2f, 0xd3e, 0x3b, 0xd35, 0xd46, 0x3b, 0xd36, 0x41, 0x68, 0x61,
-0x64, 0x3b, 0x49, 0x73, 0x6e, 0x69, 0x6e, 0x3b, 0x53, 0x65, 0x6c, 0x61, 0x73, 0x61, 0x3b, 0x52, 0x61, 0x62, 0x75, 0x3b,
-0x4b, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x74, 0x3b, 0x53, 0x61, 0x62, 0x74, 0x75, 0x41,
-0x68, 0x64, 0x3b, 0x49, 0x73, 0x6e, 0x3b, 0x53, 0x65, 0x6c, 0x3b, 0x52, 0x61, 0x62, 0x3b, 0x4b, 0x68, 0x61, 0x3b, 0x4a,
-0x75, 0x6d, 0x3b, 0x53, 0x61, 0x62, 0x41, 0x3b, 0x49, 0x3b, 0x53, 0x3b, 0x52, 0x3b, 0x4b, 0x3b, 0x4a, 0x3b, 0x53, 0x49,
-0x6c, 0x2d, 0x126, 0x61, 0x64, 0x64, 0x3b, 0x49, 0x74, 0x2d, 0x54, 0x6e, 0x65, 0x6a, 0x6e, 0x3b, 0x49, 0x74, 0x2d, 0x54,
-0x6c, 0x69, 0x65, 0x74, 0x61, 0x3b, 0x4c, 0x2d, 0x45, 0x72, 0x62, 0x67, 0x127, 0x61, 0x3b, 0x49, 0x6c, 0x2d, 0x126, 0x61,
-0x6d, 0x69, 0x73, 0x3b, 0x49, 0x6c, 0x2d, 0x120, 0x69, 0x6d, 0x67, 0x127, 0x61, 0x3b, 0x49, 0x73, 0x2d, 0x53, 0x69, 0x62,
-0x74, 0x126, 0x61, 0x64, 0x3b, 0x54, 0x6e, 0x65, 0x3b, 0x54, 0x6c, 0x69, 0x3b, 0x45, 0x72, 0x62, 0x3b, 0x126, 0x61, 0x6d,
-0x3b, 0x120, 0x69, 0x6d, 0x3b, 0x53, 0x69, 0x62, 0x126, 0x64, 0x3b, 0x54, 0x6e, 0x3b, 0x54, 0x6c, 0x3b, 0x45, 0x72, 0x3b,
-0x126, 0x6d, 0x3b, 0x120, 0x6d, 0x3b, 0x53, 0x62, 0x126, 0x64, 0x3b, 0x54, 0x3b, 0x54, 0x6c, 0x3b, 0x45, 0x72, 0x3b, 0x126,
-0x6d, 0x3b, 0x120, 0x6d, 0x3b, 0x53, 0x62, 0x9a8, 0x9cb, 0x982, 0x9ae, 0x9be, 0x987, 0x99c, 0x9bf, 0x982, 0x3b, 0x9a8, 0x9bf, 0x982,
-0x9a5, 0x9cc, 0x995, 0x9be, 0x9ac, 0x9be, 0x3b, 0x9b2, 0x9c8, 0x9ac, 0x9be, 0x995, 0x9aa, 0x9cb, 0x995, 0x9aa, 0x9be, 0x3b, 0x9af, 0x9bc,
-0x9c1, 0x9ae, 0x9b6, 0x995, 0x9c8, 0x9b6, 0x9be, 0x3b, 0x9b6, 0x997, 0x9cb, 0x9b2, 0x9b6, 0x9c7, 0x9a8, 0x3b, 0x987, 0x9b0, 0x9be, 0x987,
-0x3b, 0x9a5, 0x9be, 0x982, 0x99c, 0x9a8, 0x9cb, 0x3b, 0x9a8, 0x9bf, 0x982, 0x3b, 0x9b2, 0x9c8, 0x3b, 0x9af, 0x9bc, 0x9c1, 0x9ae, 0x3b,
-0x9b6, 0x997, 0x3b, 0x987, 0x9b0, 0x9be, 0x3b, 0x9a5, 0x9be, 0x982, 0x9a8, 0x9cb, 0x982, 0x3b, 0x9a8, 0x9bf, 0x982, 0x3b, 0x9b2, 0x9c8,
-0x9ac, 0x9be, 0x3b, 0x9af, 0x9bc, 0x9c1, 0x9ae, 0x3b, 0x9b6, 0x997, 0x9cb, 0x3b, 0x987, 0x9b0, 0x9be, 0x3b, 0x9a5, 0x9be, 0x982, 0x4a,
-0x65, 0x64, 0x6f, 0x6f, 0x6e, 0x65, 0x65, 0x3b, 0x4a, 0x65, 0x6c, 0x68, 0x65, 0x69, 0x6e, 0x3b, 0x4a, 0x65, 0x6d, 0x61,
-0x79, 0x72, 0x74, 0x3b, 0x4a, 0x65, 0x72, 0x63, 0x65, 0x61, 0x6e, 0x3b, 0x4a, 0x65, 0x72, 0x64, 0x65, 0x69, 0x6e, 0x3b,
-0x4a, 0x65, 0x68, 0x65, 0x69, 0x6e, 0x65, 0x79, 0x3b, 0x4a, 0x65, 0x73, 0x61, 0x72, 0x6e, 0x4a, 0x65, 0x64, 0x3b, 0x4a,
-0x65, 0x6c, 0x3b, 0x4a, 0x65, 0x6d, 0x3b, 0x4a, 0x65, 0x72, 0x63, 0x3b, 0x4a, 0x65, 0x72, 0x64, 0x3b, 0x4a, 0x65, 0x68,
-0x3b, 0x4a, 0x65, 0x73, 0x52, 0x101, 0x74, 0x61, 0x70, 0x75, 0x3b, 0x52, 0x101, 0x68, 0x69, 0x6e, 0x61, 0x3b, 0x52, 0x101,
-0x74, 0x16b, 0x3b, 0x52, 0x101, 0x61, 0x70, 0x61, 0x3b, 0x52, 0x101, 0x70, 0x61, 0x72, 0x65, 0x3b, 0x52, 0x101, 0x6d, 0x65,
-0x72, 0x65, 0x3b, 0x52, 0x101, 0x68, 0x6f, 0x72, 0x6f, 0x69, 0x54, 0x61, 0x70, 0x3b, 0x48, 0x69, 0x6e, 0x3b, 0x54, 0x16b,
-0x3b, 0x41, 0x70, 0x61, 0x3b, 0x50, 0x61, 0x72, 0x3b, 0x4d, 0x65, 0x72, 0x3b, 0x48, 0x6f, 0x72, 0x54, 0x3b, 0x48, 0x3b,
-0x54, 0x3b, 0x41, 0x3b, 0x50, 0x3b, 0x4d, 0x3b, 0x48, 0x930, 0x935, 0x93f, 0x935, 0x93e, 0x930, 0x3b, 0x938, 0x94b, 0x92e, 0x935,
-0x93e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x933, 0x935, 0x93e, 0x930, 0x3b, 0x92c, 0x941, 0x927, 0x935, 0x93e, 0x930, 0x3b, 0x917, 0x941,
-0x930, 0x941, 0x935, 0x93e, 0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x935, 0x93e, 0x930, 0x3b, 0x936, 0x928, 0x93f, 0x935, 0x93e,
-0x930, 0x930, 0x935, 0x93f, 0x3b, 0x938, 0x94b, 0x92e, 0x3b, 0x92e, 0x902, 0x917, 0x933, 0x3b, 0x92c, 0x941, 0x927, 0x3b, 0x917, 0x941,
-0x930, 0x941, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x3b, 0x936, 0x928, 0x93f, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0xed, 0x6c, 0xed,
-0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0xe1, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d,
-0x61, 0x74, 0xe1, 0x6e, 0x254, 0x3b, 0x41, 0x6c, 0x61, 0xe1, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0xe1, 0x61,
-0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0xf3, 0x73, 0x69, 0x4b, 0x69, 0x75, 0x6d, 0x69, 0x61, 0x3b, 0x4d, 0x75, 0x72, 0x61,
-0x6d, 0x75, 0x6b, 0x6f, 0x3b, 0x57, 0x61, 0x69, 0x72, 0x69, 0x3b, 0x57, 0x65, 0x74, 0x68, 0x61, 0x74, 0x75, 0x3b, 0x57,
-0x65, 0x6e, 0x61, 0x3b, 0x57, 0x65, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x4b,
-0x49, 0x55, 0x3b, 0x4d, 0x52, 0x41, 0x3b, 0x57, 0x41, 0x49, 0x3b, 0x57, 0x45, 0x54, 0x3b, 0x57, 0x45, 0x4e, 0x3b, 0x57,
-0x54, 0x4e, 0x3b, 0x4a, 0x55, 0x4d, 0x4b, 0x3b, 0x4d, 0x3b, 0x57, 0x3b, 0x57, 0x3b, 0x57, 0x3b, 0x57, 0x3b, 0x4a, 0x41,
-0x6e, 0x65, 0x67, 0x20, 0x31, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x32, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x33, 0x3b,
-0x41, 0x6e, 0x65, 0x67, 0x20, 0x34, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x35, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x36,
-0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x37, 0x41, 0x31, 0x3b, 0x41, 0x32, 0x3b, 0x41, 0x33, 0x3b, 0x41, 0x34, 0x3b, 0x41,
-0x35, 0x3b, 0x41, 0x36, 0x3b, 0x41, 0x37, 0x41d, 0x44f, 0x43c, 0x3b, 0x414, 0x430, 0x432, 0x430, 0x430, 0x3b, 0x41c, 0x44f, 0x433,
-0x43c, 0x430, 0x440, 0x3b, 0x41b, 0x445, 0x430, 0x433, 0x432, 0x430, 0x3b, 0x41f, 0x4af, 0x440, 0x44d, 0x432, 0x3b, 0x411, 0x430, 0x430,
-0x441, 0x430, 0x43d, 0x3b, 0x411, 0x44f, 0x43c, 0x431, 0x430, 0x43d, 0x44f, 0x43c, 0x3b, 0x434, 0x430, 0x432, 0x430, 0x430, 0x3b, 0x43c,
-0x44f, 0x433, 0x43c, 0x430, 0x440, 0x3b, 0x43b, 0x445, 0x430, 0x433, 0x432, 0x430, 0x3b, 0x43f, 0x4af, 0x440, 0x44d, 0x432, 0x3b, 0x431,
-0x430, 0x430, 0x441, 0x430, 0x43d, 0x3b, 0x431, 0x44f, 0x43c, 0x431, 0x430, 0x41d, 0x44f, 0x3b, 0x414, 0x430, 0x3b, 0x41c, 0x44f, 0x3b,
-0x41b, 0x445, 0x3b, 0x41f, 0x4af, 0x3b, 0x411, 0x430, 0x3b, 0x411, 0x44f, 0x64, 0x69, 0x6d, 0x61, 0x6e, 0x73, 0x3b, 0x6c, 0x69,
-0x6e, 0x64, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x64, 0x69, 0x3b, 0x6d, 0x65, 0x72, 0x6b, 0x72, 0x65, 0x64, 0x69, 0x3b, 0x7a,
-0x65, 0x64, 0x69, 0x3b, 0x76, 0x61, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x69, 0x3b, 0x73, 0x61, 0x6d, 0x64, 0x69, 0x64, 0x69,
-0x6d, 0x3b, 0x6c, 0x69, 0x6e, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d, 0x65, 0x72, 0x3b, 0x7a, 0x65, 0x3b, 0x76, 0x61, 0x6e,
-0x3b, 0x73, 0x61, 0x6d, 0x64, 0x3b, 0x6c, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x7a, 0x3b, 0x76, 0x3b, 0x73, 0x43, 0x6f, 0x6d,
-0x2019, 0x79, 0x61, 0x6b, 0x6b, 0x65, 0x3b, 0x43, 0x6f, 0x6d, 0x6c, 0x61, 0x61, 0x257, 0x69, 0x69, 0x3b, 0x43, 0x6f, 0x6d,
-0x7a, 0x79, 0x69, 0x69, 0x257, 0x69, 0x69, 0x3b, 0x43, 0x6f, 0x6d, 0x6b, 0x6f, 0x6c, 0x6c, 0x65, 0x3b, 0x43, 0x6f, 0x6d,
-0x6b, 0x61, 0x6c, 0x64, 0x1dd, 0x253, 0x6c, 0x69, 0x69, 0x3b, 0x43, 0x6f, 0x6d, 0x67, 0x61, 0x69, 0x73, 0x75, 0x75, 0x3b,
-0x43, 0x6f, 0x6d, 0x7a, 0x79, 0x65, 0x253, 0x73, 0x75, 0x75, 0x43, 0x79, 0x61, 0x3b, 0x43, 0x6c, 0x61, 0x3b, 0x43, 0x7a,
-0x69, 0x3b, 0x43, 0x6b, 0x6f, 0x3b, 0x43, 0x6b, 0x61, 0x3b, 0x43, 0x67, 0x61, 0x3b, 0x43, 0x7a, 0x65, 0x59, 0x3b, 0x4c,
-0x3b, 0x5a, 0x3b, 0x4f, 0x3b, 0x41, 0x3b, 0x47, 0x3b, 0x45, 0x53, 0x6f, 0x6e, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65,
-0x73, 0x3b, 0x4d, 0x61, 0x6e, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x44, 0x65, 0x6e, 0x73, 0x74, 0x61,
-0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x57, 0x75, 0x6e, 0x73, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b,
-0x44, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x46, 0x72, 0x61, 0x69, 0x74,
-0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x53, 0x61, 0x74, 0x65, 0x72, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65,
-0x73, 0x53, 0x6f, 0x6e, 0x3b, 0x4d, 0x61, 0x3b, 0x44, 0x65, 0x3b, 0x57, 0x75, 0x3b, 0x44, 0x6f, 0x3b, 0x46, 0x72, 0x3b,
-0x53, 0x61, 0x74, 0x53, 0x3b, 0x4d, 0x3b, 0x45, 0x3b, 0x57, 0x3b, 0x44, 0x3b, 0x46, 0x3b, 0x41, 0x906, 0x907, 0x924, 0x92c,
-0x93e, 0x930, 0x3b, 0x938, 0x94b, 0x92e, 0x92c, 0x93e, 0x930, 0x3b, 0x92e, 0x919, 0x94d, 0x917, 0x932, 0x92c, 0x93e, 0x930, 0x3b, 0x92c,
-0x941, 0x927, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x93f, 0x939, 0x93f, 0x92c, 0x93e, 0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x92c,
-0x93e, 0x930, 0x3b, 0x936, 0x928, 0x93f, 0x92c, 0x93e, 0x930, 0x906, 0x907, 0x924, 0x3b, 0x938, 0x94b, 0x92e, 0x3b, 0x92e, 0x919, 0x94d,
-0x917, 0x932, 0x3b, 0x92c, 0x941, 0x927, 0x3b, 0x92c, 0x93f, 0x939, 0x93f, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x3b, 0x936, 0x928,
-0x93f, 0x906, 0x3b, 0x938, 0x94b, 0x3b, 0x92e, 0x3b, 0x92c, 0x941, 0x3b, 0x92c, 0x93f, 0x3b, 0x936, 0x941, 0x3b, 0x936, 0x6c, 0x79,
-0x25b, 0x2bc, 0x25b, 0x301, 0x20, 0x73, 0x1e85, 0xed, 0x14b, 0x74, 0xe8, 0x3b, 0x6d, 0x76, 0x66, 0xf2, 0x20, 0x6c, 0x79, 0x25b,
-0x30c, 0x2bc, 0x3b, 0x6d, 0x62, 0x254, 0x301, 0x254, 0x6e, 0x74, 0xe8, 0x20, 0x6d, 0x76, 0x66, 0xf2, 0x20, 0x6c, 0x79, 0x25b,
-0x30c, 0x2bc, 0x3b, 0x74, 0x73, 0xe8, 0x74, 0x73, 0x25b, 0x300, 0x25b, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x6d, 0x62,
-0x254, 0x301, 0x254, 0x6e, 0x74, 0xe8, 0x20, 0x74, 0x73, 0x65, 0x74, 0x73, 0x25b, 0x300, 0x25b, 0x20, 0x6c, 0x79, 0x25b, 0x30c,
-0x2bc, 0x3b, 0x6d, 0x76, 0x66, 0xf2, 0x20, 0x6d, 0xe0, 0x67, 0x61, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x6d, 0xe0,
-0x67, 0x61, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x53, 0x254, 0x301, 0x6e, 0x64, 0x69, 0x3b, 0x4d, 0x254, 0x301, 0x6e, 0x64,
-0x69, 0x3b, 0xc1, 0x70, 0x74, 0x61, 0x20, 0x4d, 0x254, 0x301, 0x6e, 0x64, 0x69, 0x3b, 0x57, 0x25b, 0x301, 0x6e, 0x25b, 0x73,
-0x25b, 0x64, 0x25b, 0x3b, 0x54, 0x254, 0x301, 0x73, 0x25b, 0x64, 0x25b, 0x3b, 0x46, 0x25b, 0x6c, 0xe2, 0x79, 0x25b, 0x64, 0x25b,
-0x3b, 0x53, 0xe1, 0x73, 0x69, 0x64, 0x25b, 0x53, 0x254, 0x301, 0x3b, 0x4d, 0x254, 0x301, 0x3b, 0xc1, 0x4d, 0x3b, 0x57, 0x25b,
-0x301, 0x3b, 0x54, 0x254, 0x301, 0x3b, 0x46, 0x25b, 0x3b, 0x53, 0xe1, 0x53, 0x1ecd, 0x301, 0x6e, 0x64, 0xe8, 0x3b, 0x4d, 0x1ecd,
-0x301, 0x6e, 0x64, 0xe8, 0x3b, 0x54, 0x69, 0xfa, 0x7a, 0x64, 0xe8, 0x3b, 0x57, 0x1eb9, 0x301, 0x6e, 0x1eb9, 0x301, 0x7a, 0x64,
-0xe8, 0x3b, 0x54, 0x1ecd, 0x301, 0x7a, 0x64, 0xe8, 0x3b, 0x46, 0x72, 0x61, 0xed, 0x64, 0xe8, 0x3b, 0x53, 0xe1, 0x74, 0x1ecd,
-0x64, 0xe8, 0x53, 0x1ecd, 0x301, 0x6e, 0x3b, 0x4d, 0x1ecd, 0x301, 0x6e, 0x3b, 0x54, 0x69, 0xfa, 0x3b, 0x57, 0x1eb9, 0x301, 0x6e,
-0x3b, 0x54, 0x1ecd, 0x301, 0x7a, 0x3b, 0x46, 0x72, 0x61, 0xed, 0x3b, 0x53, 0xe1, 0x74, 0x73, 0x6f, 0x74, 0x6e, 0x61, 0x62,
-0x65, 0x61, 0x69, 0x76, 0x69, 0x3b, 0x76, 0x75, 0x6f, 0x73, 0x73, 0xe1, 0x72, 0x67, 0x61, 0x3b, 0x6d, 0x61, 0x14b, 0x14b,
-0x65, 0x62, 0xe1, 0x72, 0x67, 0x61, 0x3b, 0x67, 0x61, 0x73, 0x6b, 0x61, 0x76, 0x61, 0x68, 0x6b, 0x6b, 0x75, 0x3b, 0x64,
-0x75, 0x6f, 0x72, 0x61, 0x73, 0x64, 0x61, 0x74, 0x3b, 0x62, 0x65, 0x61, 0x72, 0x6a, 0x61, 0x64, 0x61, 0x74, 0x3b, 0x6c,
-0xe1, 0x76, 0x76, 0x61, 0x72, 0x64, 0x61, 0x74, 0x73, 0x6f, 0x74, 0x6e, 0x3b, 0x76, 0x75, 0x6f, 0x73, 0x3b, 0x6d, 0x61,
-0x14b, 0x3b, 0x67, 0x61, 0x73, 0x6b, 0x3b, 0x64, 0x75, 0x6f, 0x72, 0x3b, 0x62, 0x65, 0x61, 0x72, 0x3b, 0x6c, 0xe1, 0x76,
-0x53, 0x3b, 0x56, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x4c, 0x73, 0x6f, 0x74, 0x6e, 0x61, 0x62, 0x65,
-0x61, 0x69, 0x76, 0x69, 0x3b, 0x6d, 0xe1, 0x6e, 0x6e, 0x6f, 0x64, 0x61, 0x74, 0x3b, 0x64, 0x69, 0x73, 0x64, 0x61, 0x74,
-0x3b, 0x67, 0x61, 0x73, 0x6b, 0x61, 0x76, 0x61, 0x68, 0x6b, 0x6b, 0x75, 0x3b, 0x64, 0x75, 0x6f, 0x72, 0x61, 0x73, 0x74,
-0x61, 0x74, 0x3b, 0x62, 0x65, 0x61, 0x72, 0x6a, 0x61, 0x64, 0x61, 0x74, 0x3b, 0x6c, 0xe1, 0x76, 0x76, 0x6f, 0x72, 0x64,
-0x61, 0x74, 0x73, 0x6f, 0x3b, 0x6d, 0xe1, 0x3b, 0x64, 0x69, 0x3b, 0x67, 0x61, 0x3b, 0x64, 0x75, 0x3b, 0x62, 0x65, 0x3b,
-0x6c, 0xe1, 0x53, 0x3b, 0x4d, 0x3b, 0x44, 0x3b, 0x47, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x4c, 0x53, 0x6f, 0x6e, 0x74, 0x6f,
-0x3b, 0x4d, 0x76, 0x75, 0x6c, 0x6f, 0x3b, 0x53, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x3b, 0x53, 0x69, 0x74, 0x68, 0x61, 0x74,
-0x68, 0x75, 0x3b, 0x53, 0x69, 0x6e, 0x65, 0x3b, 0x53, 0x69, 0x68, 0x6c, 0x61, 0x6e, 0x75, 0x3b, 0x4d, 0x67, 0x71, 0x69,
-0x62, 0x65, 0x6c, 0x6f, 0x53, 0x6f, 0x6e, 0x3b, 0x4d, 0x76, 0x75, 0x3b, 0x53, 0x69, 0x62, 0x3b, 0x53, 0x69, 0x74, 0x3b,
-0x53, 0x69, 0x6e, 0x3b, 0x53, 0x69, 0x68, 0x3b, 0x4d, 0x67, 0x71, 0x53, 0x3b, 0x4d, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x53,
-0x3b, 0x53, 0x3b, 0x4d, 0x73, 0xf8, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x6d, 0xe5, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x79,
-0x73, 0x64, 0x61, 0x67, 0x3b, 0x6f, 0x6e, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x6f, 0x72, 0x73, 0x64, 0x61, 0x67, 0x3b,
-0x66, 0x72, 0x65, 0x64, 0x61, 0x67, 0x3b, 0x6c, 0x61, 0x75, 0x72, 0x64, 0x61, 0x67, 0x73, 0xf8, 0x6e, 0x3b, 0x6d, 0xe5,
-0x6e, 0x3b, 0x74, 0x79, 0x73, 0x3b, 0x6f, 0x6e, 0x73, 0x3b, 0x74, 0x6f, 0x72, 0x3b, 0x66, 0x72, 0x65, 0x3b, 0x6c, 0x61,
-0x75, 0x73, 0xf8, 0x2e, 0x3b, 0x6d, 0xe5, 0x2e, 0x3b, 0x74, 0x79, 0x2e, 0x3b, 0x6f, 0x6e, 0x2e, 0x3b, 0x74, 0x6f, 0x2e,
-0x3b, 0x66, 0x72, 0x2e, 0x3b, 0x6c, 0x61, 0x2e, 0x43, 0xe4, 0x14b, 0x20, 0x6b, 0x75, 0x254, 0x74, 0x68, 0x3b, 0x4a, 0x69,
-0x65, 0x63, 0x20, 0x6c, 0x61, 0x331, 0x74, 0x3b, 0x52, 0x25b, 0x77, 0x20, 0x6c, 0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x44, 0x69,
-0x254, 0x331, 0x6b, 0x20, 0x6c, 0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x14a, 0x75, 0x61, 0x61, 0x6e, 0x20, 0x6c, 0xe4, 0x74, 0x6e,
-0x69, 0x3b, 0x44, 0x68, 0x69, 0x65, 0x65, 0x63, 0x20, 0x6c, 0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x42, 0xe4, 0x6b, 0x25b, 0x6c,
-0x20, 0x6c, 0xe4, 0x74, 0x6e, 0x69, 0x43, 0xe4, 0x14b, 0x3b, 0x4a, 0x69, 0x65, 0x63, 0x3b, 0x52, 0x25b, 0x77, 0x3b, 0x44,
-0x69, 0x254, 0x331, 0x6b, 0x3b, 0x14a, 0x75, 0x61, 0x61, 0x6e, 0x3b, 0x44, 0x68, 0x69, 0x65, 0x65, 0x63, 0x3b, 0x42, 0xe4,
-0x6b, 0x25b, 0x6c, 0x43, 0x3b, 0x4a, 0x3b, 0x52, 0x3b, 0x44, 0x3b, 0x14a, 0x3b, 0x44, 0x3b, 0x42, 0xb30, 0xb2c, 0xb3f, 0xb2c,
-0xb3e, 0xb30, 0x3b, 0xb38, 0xb4b, 0xb2e, 0xb2c, 0xb3e, 0xb30, 0x3b, 0xb2e, 0xb19, 0xb4d, 0xb17, 0xb33, 0xb2c, 0xb3e, 0xb30, 0x3b, 0xb2c,
-0xb41, 0xb27, 0xb2c, 0xb3e, 0xb30, 0x3b, 0xb17, 0xb41, 0xb30, 0xb41, 0xb2c, 0xb3e, 0xb30, 0x3b, 0xb36, 0xb41, 0xb15, 0xb4d, 0xb30, 0xb2c,
-0xb3e, 0xb30, 0x3b, 0xb36, 0xb28, 0xb3f, 0xb2c, 0xb3e, 0xb30, 0xb30, 0xb2c, 0xb3f, 0x3b, 0xb38, 0xb4b, 0xb2e, 0x3b, 0xb2e, 0xb19, 0xb4d,
-0xb17, 0xb33, 0x3b, 0xb2c, 0xb41, 0xb27, 0x3b, 0xb17, 0xb41, 0xb30, 0xb41, 0x3b, 0xb36, 0xb41, 0xb15, 0xb4d, 0xb30, 0x3b, 0xb36, 0xb28,
-0xb3f, 0xb30, 0x3b, 0xb38, 0xb4b, 0x3b, 0xb2e, 0x3b, 0xb2c, 0xb41, 0x3b, 0xb17, 0xb41, 0x3b, 0xb36, 0xb41, 0x3b, 0xb36, 0x44, 0x69,
-0x6c, 0x62, 0x61, 0x74, 0x61, 0x3b, 0x57, 0x69, 0x69, 0x78, 0x61, 0x74, 0x61, 0x3b, 0x51, 0x69, 0x62, 0x78, 0x61, 0x74,
-0x61, 0x3b, 0x52, 0x6f, 0x6f, 0x62, 0x69, 0x69, 0x3b, 0x4b, 0x61, 0x6d, 0x69, 0x69, 0x73, 0x61, 0x3b, 0x4a, 0x69, 0x6d,
-0x61, 0x61, 0x74, 0x61, 0x3b, 0x53, 0x61, 0x6e, 0x62, 0x61, 0x74, 0x61, 0x44, 0x69, 0x6c, 0x3b, 0x57, 0x69, 0x78, 0x3b,
-0x51, 0x69, 0x62, 0x3b, 0x52, 0x6f, 0x62, 0x3b, 0x4b, 0x61, 0x6d, 0x3b, 0x4a, 0x69, 0x6d, 0x3b, 0x53, 0x61, 0x6e, 0x44,
-0x3b, 0x57, 0x3b, 0x51, 0x3b, 0x52, 0x3b, 0x4b, 0x3b, 0x4a, 0x3b, 0x53, 0x425, 0x443, 0x44b, 0x446, 0x430, 0x443, 0x431, 0x43e,
-0x43d, 0x3b, 0x41a, 0x44a, 0x443, 0x44b, 0x440, 0x438, 0x441, 0x4d5, 0x440, 0x3b, 0x414, 0x44b, 0x446, 0x446, 0x4d5, 0x433, 0x3b, 0x4d4,
-0x440, 0x442, 0x44b, 0x446, 0x446, 0x4d5, 0x433, 0x3b, 0x426, 0x44b, 0x43f, 0x43f, 0x4d5, 0x440, 0x4d5, 0x43c, 0x3b, 0x41c, 0x430, 0x439,
-0x440, 0x4d5, 0x43c, 0x431, 0x43e, 0x43d, 0x3b, 0x421, 0x430, 0x431, 0x430, 0x442, 0x445, 0x443, 0x44b, 0x446, 0x430, 0x443, 0x431, 0x43e,
-0x43d, 0x3b, 0x43a, 0x44a, 0x443, 0x44b, 0x440, 0x438, 0x441, 0x4d5, 0x440, 0x3b, 0x434, 0x44b, 0x446, 0x446, 0x4d5, 0x433, 0x3b, 0x4d5,
-0x440, 0x442, 0x44b, 0x446, 0x446, 0x4d5, 0x433, 0x3b, 0x446, 0x44b, 0x43f, 0x43f, 0x4d5, 0x440, 0x4d5, 0x43c, 0x3b, 0x43c, 0x430, 0x439,
-0x440, 0x4d5, 0x43c, 0x431, 0x43e, 0x43d, 0x3b, 0x441, 0x430, 0x431, 0x430, 0x442, 0x425, 0x446, 0x431, 0x3b, 0x41a, 0x440, 0x441, 0x3b,
-0x414, 0x446, 0x433, 0x3b, 0x4d4, 0x440, 0x442, 0x3b, 0x426, 0x43f, 0x440, 0x3b, 0x41c, 0x440, 0x431, 0x3b, 0x421, 0x431, 0x442, 0x445,
-0x446, 0x431, 0x3b, 0x43a, 0x440, 0x441, 0x3b, 0x434, 0x446, 0x433, 0x3b, 0x4d5, 0x440, 0x442, 0x3b, 0x446, 0x43f, 0x440, 0x3b, 0x43c,
-0x440, 0x431, 0x3b, 0x441, 0x431, 0x442, 0x425, 0x3b, 0x41a, 0x3b, 0x414, 0x3b, 0x4d4, 0x3b, 0x426, 0x3b, 0x41c, 0x3b, 0x421, 0x64a,
-0x648, 0x646, 0x6cd, 0x3b, 0x62f, 0x648, 0x646, 0x6cd, 0x3b, 0x62f, 0x631, 0x6d0, 0x646, 0x6cd, 0x3b, 0x685, 0x644, 0x631, 0x646, 0x6cd,
-0x3b, 0x67e, 0x64a, 0x646, 0x681, 0x646, 0x6cd, 0x3b, 0x62c, 0x645, 0x639, 0x647, 0x3b, 0x627, 0x648, 0x646, 0x6cd, 0x6cc, 0x6a9, 0x634,
-0x646, 0x628, 0x647, 0x3b, 0x62f, 0x648, 0x634, 0x646, 0x628, 0x647, 0x3b, 0x633, 0x647, 0x200c, 0x634, 0x646, 0x628, 0x647, 0x3b, 0x686,
-0x647, 0x627, 0x631, 0x634, 0x646, 0x628, 0x647, 0x3b, 0x67e, 0x646, 0x62c, 0x634, 0x646, 0x628, 0x647, 0x3b, 0x62c, 0x645, 0x639, 0x647,
-0x3b, 0x634, 0x646, 0x628, 0x647, 0x6cc, 0x3b, 0x62f, 0x3b, 0x633, 0x3b, 0x686, 0x3b, 0x67e, 0x3b, 0x62c, 0x3b, 0x634, 0x6e, 0x69,
-0x65, 0x64, 0x7a, 0x69, 0x65, 0x6c, 0x61, 0x3b, 0x70, 0x6f, 0x6e, 0x69, 0x65, 0x64, 0x7a, 0x69, 0x61, 0x142, 0x65, 0x6b,
-0x3b, 0x77, 0x74, 0x6f, 0x72, 0x65, 0x6b, 0x3b, 0x15b, 0x72, 0x6f, 0x64, 0x61, 0x3b, 0x63, 0x7a, 0x77, 0x61, 0x72, 0x74,
-0x65, 0x6b, 0x3b, 0x70, 0x69, 0x105, 0x74, 0x65, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x6e, 0x69, 0x65, 0x64,
-0x7a, 0x2e, 0x3b, 0x70, 0x6f, 0x6e, 0x2e, 0x3b, 0x77, 0x74, 0x2e, 0x3b, 0x15b, 0x72, 0x2e, 0x3b, 0x63, 0x7a, 0x77, 0x2e,
-0x3b, 0x70, 0x74, 0x2e, 0x3b, 0x73, 0x6f, 0x62, 0x2e, 0x4e, 0x3b, 0x50, 0x3b, 0x57, 0x3b, 0x15a, 0x3b, 0x43, 0x3b, 0x50,
-0x3b, 0x53, 0x6e, 0x3b, 0x70, 0x3b, 0x77, 0x3b, 0x15b, 0x3b, 0x63, 0x3b, 0x70, 0x3b, 0x73, 0x64, 0x6f, 0x6d, 0x69, 0x6e,
-0x67, 0x6f, 0x3b, 0x73, 0x65, 0x67, 0x75, 0x6e, 0x64, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x74, 0x65, 0x72,
-0xe7, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x71, 0x75, 0x61, 0x72, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72,
-0x61, 0x3b, 0x71, 0x75, 0x69, 0x6e, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x73, 0x65, 0x78, 0x74, 0x61,
-0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x64, 0x6f, 0x6d, 0x2e, 0x3b, 0x73, 0x65,
-0x67, 0x2e, 0x3b, 0x74, 0x65, 0x72, 0x2e, 0x3b, 0x71, 0x75, 0x61, 0x2e, 0x3b, 0x71, 0x75, 0x69, 0x2e, 0x3b, 0x73, 0x65,
-0x78, 0x2e, 0x3b, 0x73, 0xe1, 0x62, 0x2e, 0x44, 0x3b, 0x53, 0x3b, 0x54, 0x3b, 0x51, 0x3b, 0x51, 0x3b, 0x53, 0x3b, 0x53,
-0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x73, 0x65, 0x67, 0x75, 0x6e, 0x64, 0x61, 0x3b, 0x74, 0x65, 0x72, 0xe7,
-0x61, 0x3b, 0x71, 0x75, 0x61, 0x72, 0x74, 0x61, 0x3b, 0x71, 0x75, 0x69, 0x6e, 0x74, 0x61, 0x3b, 0x73, 0x65, 0x78, 0x74,
-0x61, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0xa10, 0xa24, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa38, 0xa4b, 0xa2e, 0xa35, 0xa3e, 0xa30,
-0x3b, 0xa2e, 0xa70, 0xa17, 0xa32, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa2c, 0xa41, 0xa71, 0xa27, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa35, 0xa40, 0xa30,
-0xa35, 0xa3e, 0xa30, 0x3b, 0xa38, 0xa3c, 0xa41, 0xa71, 0xa15, 0xa30, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa38, 0xa3c, 0xa28, 0xa3f, 0xa71, 0xa1a,
-0xa30, 0xa35, 0xa3e, 0xa30, 0xa10, 0xa24, 0x3b, 0xa38, 0xa4b, 0xa2e, 0x3b, 0xa2e, 0xa70, 0xa17, 0xa32, 0x3b, 0xa2c, 0xa41, 0xa71, 0xa27,
-0x3b, 0xa35, 0xa40, 0xa30, 0x3b, 0xa38, 0xa3c, 0xa41, 0xa71, 0xa15, 0xa30, 0x3b, 0xa38, 0xa3c, 0xa28, 0xa3f, 0xa71, 0xa1a, 0xa30, 0xa10,
-0x3b, 0xa38, 0xa4b, 0x3b, 0xa2e, 0xa70, 0x3b, 0xa2c, 0xa41, 0xa71, 0x3b, 0xa35, 0xa40, 0x3b, 0xa38, 0xa3c, 0xa41, 0xa71, 0x3b, 0xa38,
-0xa3c, 0x627, 0x62a, 0x648, 0x627, 0x631, 0x3b, 0x67e, 0x6cc, 0x631, 0x3b, 0x645, 0x646, 0x6af, 0x644, 0x3b, 0x628, 0x64f, 0x62f, 0x6be,
-0x3b, 0x62c, 0x645, 0x639, 0x631, 0x627, 0x62a, 0x3b, 0x62c, 0x645, 0x639, 0x6c1, 0x3b, 0x6c1, 0x641, 0x62a, 0x6c1, 0x44, 0x6f, 0x6d,
-0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x4c, 0x75, 0x6e, 0x65, 0x73, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x4d, 0x69,
-0xe9, 0x72, 0x63, 0x6f, 0x6c, 0x65, 0x73, 0x3b, 0x4a, 0x75, 0x65, 0x76, 0x65, 0x73, 0x3b, 0x56, 0x69, 0x65, 0x72, 0x6e,
-0x65, 0x73, 0x3b, 0x53, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x44, 0x6f, 0x6d, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x72,
-0x3b, 0x4d, 0x69, 0xe9, 0x3b, 0x4a, 0x75, 0x65, 0x3b, 0x56, 0x69, 0x65, 0x3b, 0x53, 0x61, 0x62, 0x44, 0x3b, 0x4c, 0x3b,
-0x4d, 0x3b, 0x58, 0x3b, 0x4a, 0x3b, 0x56, 0x3b, 0x53, 0x64, 0x75, 0x6d, 0x69, 0x6e, 0x69, 0x63, 0x103, 0x3b, 0x6c, 0x75,
-0x6e, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x21b, 0x69, 0x3b, 0x6d, 0x69, 0x65, 0x72, 0x63, 0x75, 0x72, 0x69, 0x3b, 0x6a, 0x6f,
-0x69, 0x3b, 0x76, 0x69, 0x6e, 0x65, 0x72, 0x69, 0x3b, 0x73, 0xe2, 0x6d, 0x62, 0x103, 0x74, 0x103, 0x64, 0x75, 0x6d, 0x2e,
-0x3b, 0x6c, 0x75, 0x6e, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x6d, 0x69, 0x65, 0x2e, 0x3b, 0x6a, 0x6f, 0x69, 0x3b,
-0x76, 0x69, 0x6e, 0x2e, 0x3b, 0x73, 0xe2, 0x6d, 0x2e, 0x44, 0x75, 0x6d, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x72,
-0x3b, 0x4d, 0x69, 0x65, 0x3b, 0x4a, 0x6f, 0x69, 0x3b, 0x56, 0x69, 0x6e, 0x3b, 0x53, 0xe2, 0x6d, 0x44, 0x3b, 0x4c, 0x3b,
-0x4d, 0x61, 0x3b, 0x4d, 0x69, 0x3b, 0x4a, 0x3b, 0x56, 0x3b, 0x53, 0x64, 0x75, 0x6d, 0x65, 0x6e, 0x67, 0x69, 0x61, 0x3b,
-0x67, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x73, 0x64, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x64, 0x69, 0x3b, 0x6d, 0x65, 0x73, 0x65,
-0x6d, 0x6e, 0x61, 0x3b, 0x67, 0x69, 0x65, 0x76, 0x67, 0x69, 0x61, 0x3b, 0x76, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x64, 0x69,
-0x3b, 0x73, 0x6f, 0x6e, 0x64, 0x61, 0x64, 0x75, 0x3b, 0x67, 0x6c, 0x69, 0x3b, 0x6d, 0x61, 0x3b, 0x6d, 0x65, 0x3b, 0x67,
-0x69, 0x65, 0x3b, 0x76, 0x65, 0x3b, 0x73, 0x6f, 0x44, 0x3b, 0x47, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x56, 0x3b,
-0x53, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x6c, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75,
-0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b,
-0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x49, 0x6a, 0x75, 0x6d,
-0x61, 0x6d, 0x6f, 0x73, 0x69, 0x49, 0x6a, 0x70, 0x3b, 0x49, 0x6a, 0x74, 0x3b, 0x49, 0x6a, 0x6e, 0x3b, 0x49, 0x6a, 0x74,
-0x6e, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x75, 0x3b, 0x49, 0x6a, 0x6d, 0x4b, 0x75, 0x20, 0x77, 0x2019, 0x69, 0x6e,
-0x64, 0x77, 0x69, 0x3b, 0x4b, 0x75, 0x20, 0x77, 0x61, 0x20, 0x6d, 0x62, 0x65, 0x72, 0x65, 0x3b, 0x4b, 0x75, 0x20, 0x77,
-0x61, 0x20, 0x6b, 0x61, 0x62, 0x69, 0x72, 0x69, 0x3b, 0x4b, 0x75, 0x20, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x74,
-0x75, 0x3b, 0x4b, 0x75, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x65, 0x3b, 0x4b, 0x75, 0x20, 0x77, 0x61, 0x20, 0x67,
-0x61, 0x74, 0x61, 0x6e, 0x75, 0x3b, 0x4b, 0x75, 0x20, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x74,
-0x75, 0x63, 0x75, 0x2e, 0x3b, 0x6d, 0x62, 0x65, 0x2e, 0x3b, 0x6b, 0x61, 0x62, 0x2e, 0x3b, 0x67, 0x74, 0x75, 0x2e, 0x3b,
-0x6b, 0x61, 0x6e, 0x2e, 0x3b, 0x67, 0x6e, 0x75, 0x2e, 0x3b, 0x67, 0x6e, 0x64, 0x2e, 0x432, 0x43e, 0x441, 0x43a, 0x440, 0x435,
-0x441, 0x435, 0x43d, 0x44c, 0x435, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x435, 0x43b, 0x44c, 0x43d, 0x438, 0x43a, 0x3b, 0x432, 0x442,
-0x43e, 0x440, 0x43d, 0x438, 0x43a, 0x3b, 0x441, 0x440, 0x435, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x435, 0x440, 0x433, 0x3b,
-0x43f, 0x44f, 0x442, 0x43d, 0x438, 0x446, 0x430, 0x3b, 0x441, 0x443, 0x431, 0x431, 0x43e, 0x442, 0x430, 0x432, 0x441, 0x3b, 0x43f, 0x43d,
-0x3b, 0x432, 0x442, 0x3b, 0x441, 0x440, 0x3b, 0x447, 0x442, 0x3b, 0x43f, 0x442, 0x3b, 0x441, 0x431, 0x412, 0x3b, 0x41f, 0x3b, 0x412,
-0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x41f, 0x3b, 0x421, 0x431, 0x430, 0x441, 0x43a, 0x44b, 0x4bb, 0x44b, 0x430, 0x43d, 0x43d, 0x44c, 0x430,
-0x3b, 0x431, 0x44d, 0x43d, 0x438, 0x434, 0x438, 0x44d, 0x43d, 0x43d, 0x44c, 0x438, 0x43a, 0x3b, 0x43e, 0x43f, 0x442, 0x443, 0x43e, 0x440,
-0x443, 0x43d, 0x43d, 0x44c, 0x443, 0x43a, 0x3b, 0x441, 0x44d, 0x440, 0x44d, 0x434, 0x44d, 0x3b, 0x447, 0x44d, 0x43f, 0x43f, 0x438, 0x44d,
-0x440, 0x3b, 0x411, 0x44d, 0x44d, 0x442, 0x438, 0x4a5, 0x441, 0x44d, 0x3b, 0x441, 0x443, 0x431, 0x443, 0x43e, 0x442, 0x430, 0x431, 0x441,
-0x3b, 0x431, 0x43d, 0x3b, 0x43e, 0x43f, 0x3b, 0x441, 0x44d, 0x3b, 0x447, 0x43f, 0x3b, 0x431, 0x44d, 0x3b, 0x441, 0x431, 0x411, 0x3b,
-0x411, 0x3b, 0x41e, 0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x411, 0x3b, 0x421, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65,
-0x20, 0x61, 0x72, 0x65, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x6b, 0x75, 0x6e, 0x69, 0x3b,
-0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x6f, 0x6e, 0x67, 0x2019, 0x77, 0x61, 0x6e, 0x3b, 0x4d, 0x64,
-0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x69, 0x6e, 0x65, 0x74, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20,
-0x65, 0x65, 0x20, 0x69, 0x6c, 0x65, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x73, 0x61, 0x70,
-0x61, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x6b, 0x77, 0x65, 0x41, 0x72, 0x65, 0x3b, 0x4b,
-0x75, 0x6e, 0x3b, 0x4f, 0x6e, 0x67, 0x3b, 0x49, 0x6e, 0x65, 0x3b, 0x49, 0x6c, 0x65, 0x3b, 0x53, 0x61, 0x70, 0x3b, 0x4b,
-0x77, 0x65, 0x41, 0x3b, 0x4b, 0x3b, 0x4f, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x53, 0x3b, 0x4b, 0x42, 0x69, 0x6b, 0x75, 0x61,
-0x2d, 0xf4, 0x6b, 0x6f, 0x3b, 0x42, 0xef, 0x6b, 0x75, 0x61, 0x2d, 0xfb, 0x73, 0x65, 0x3b, 0x42, 0xef, 0x6b, 0x75, 0x61,
-0x2d, 0x70, 0x74, 0xe2, 0x3b, 0x42, 0xef, 0x6b, 0x75, 0x61, 0x2d, 0x75, 0x73, 0xef, 0xf6, 0x3b, 0x42, 0xef, 0x6b, 0x75,
-0x61, 0x2d, 0x6f, 0x6b, 0xfc, 0x3b, 0x4c, 0xe2, 0x70, 0xf4, 0x73, 0xf6, 0x3b, 0x4c, 0xe2, 0x79, 0x65, 0x6e, 0x67, 0x61,
-0x42, 0x6b, 0x31, 0x3b, 0x42, 0x6b, 0x32, 0x3b, 0x42, 0x6b, 0x33, 0x3b, 0x42, 0x6b, 0x34, 0x3b, 0x42, 0x6b, 0x35, 0x3b,
-0x4c, 0xe2, 0x70, 0x3b, 0x4c, 0xe2, 0x79, 0x4b, 0x3b, 0x53, 0x3b, 0x54, 0x3b, 0x53, 0x3b, 0x4b, 0x3b, 0x50, 0x3b, 0x59,
-0x4d, 0x75, 0x6c, 0x75, 0x6e, 0x67, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d,
-0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x61, 0x68, 0x61, 0x6d,
-0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x4d,
-0x75, 0x6c, 0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6e, 0x6e, 0x3b, 0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49,
-0x6a, 0x75, 0x3b, 0x4a, 0x6d, 0x6f, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x4a, 0x930,
-0x935, 0x93f, 0x935, 0x93e, 0x938, 0x930, 0x903, 0x3b, 0x938, 0x94b, 0x92e, 0x935, 0x93e, 0x938, 0x930, 0x903, 0x3b, 0x92e, 0x902, 0x917,
-0x932, 0x935, 0x93e, 0x938, 0x930, 0x903, 0x3b, 0x92c, 0x941, 0x927, 0x935, 0x93e, 0x938, 0x930, 0x903, 0x3b, 0x917, 0x941, 0x930, 0x941,
-0x935, 0x93e, 0x938, 0x930, 0x3a, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x935, 0x93e, 0x938, 0x930, 0x903, 0x3b, 0x936, 0x928, 0x93f,
-0x935, 0x93e, 0x938, 0x930, 0x903, 0x1c65, 0x1c64, 0x1c78, 0x1c5c, 0x1c6e, 0x3b, 0x1c5a, 0x1c5b, 0x1c6e, 0x3b, 0x1c75, 0x1c5f, 0x1c5e, 0x1c6e, 0x3b,
-0x1c65, 0x1c5f, 0x1c79, 0x1c5c, 0x1c69, 0x1c71, 0x3b, 0x1c65, 0x1c5f, 0x1c79, 0x1c68, 0x1c6b, 0x1c64, 0x3b, 0x1c61, 0x1c5f, 0x1c79, 0x1c68, 0x1c69, 0x1c62,
-0x3b, 0x1c67, 0x1c69, 0x1c66, 0x1c69, 0x1c62, 0x1c65, 0x1c64, 0x1c78, 0x3b, 0x1c5a, 0x1c5b, 0x3b, 0x1c75, 0x1c5f, 0x3b, 0x1c65, 0x1c5f, 0x1c79, 0x3b,
-0x1c65, 0x1c5f, 0x1c79, 0x1c68, 0x3b, 0x1c61, 0x1c5f, 0x1c79, 0x3b, 0x1c67, 0x1c69, 0x1c65, 0x3b, 0x1c5a, 0x3b, 0x1c75, 0x3b, 0x1c65, 0x3b, 0x1c65,
-0x3b, 0x1c61, 0x3b, 0x1c67, 0x64, 0x6f, 0x6d, 0xec, 0x6e, 0x69, 0x67, 0x61, 0x3b, 0x6c, 0x75, 0x6e, 0x69, 0x73, 0x3b, 0x6d,
-0x61, 0x72, 0x74, 0x69, 0x73, 0x3b, 0x6d, 0xe8, 0x72, 0x63, 0x75, 0x72, 0x69, 0x73, 0x3b, 0x67, 0x69, 0xf2, 0x62, 0x69,
-0x61, 0x3b, 0x63, 0x68, 0x65, 0x6e, 0xe0, 0x62, 0x75, 0x72, 0x61, 0x3b, 0x73, 0xe0, 0x62, 0x61, 0x64, 0x75, 0x64, 0x6f,
-0x6d, 0x3b, 0x6c, 0x75, 0x6e, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d, 0xe8, 0x72, 0x3b, 0x67, 0x69, 0xf2, 0x3b, 0x63, 0x68,
-0x65, 0x3b, 0x73, 0xe0, 0x62, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x43, 0x3b, 0x53, 0x44, 0x69,
-0x6d, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x43, 0x68, 0x69, 0x70, 0x6f, 0x73, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x70, 0x69, 0x72,
-0x69, 0x3b, 0x43, 0x68, 0x69, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x43, 0x68, 0x69, 0x6e, 0x61, 0x69, 0x3b, 0x43, 0x68, 0x69,
-0x73, 0x68, 0x61, 0x6e, 0x75, 0x3b, 0x53, 0x61, 0x62, 0x75, 0x64, 0x75, 0x44, 0x69, 0x6d, 0x3b, 0x50, 0x6f, 0x73, 0x3b,
-0x50, 0x69, 0x72, 0x3b, 0x54, 0x61, 0x74, 0x3b, 0x4e, 0x61, 0x69, 0x3b, 0x53, 0x68, 0x61, 0x3b, 0x53, 0x61, 0x62, 0x44,
-0x3b, 0x50, 0x3b, 0x43, 0x3b, 0x54, 0x3b, 0x4e, 0x3b, 0x53, 0x3b, 0x53, 0x43d, 0x435, 0x434, 0x435, 0x459, 0x430, 0x3b, 0x43f,
-0x43e, 0x43d, 0x435, 0x434, 0x435, 0x459, 0x430, 0x43a, 0x3b, 0x443, 0x442, 0x43e, 0x440, 0x430, 0x43a, 0x3b, 0x441, 0x440, 0x435, 0x434,
-0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x440, 0x442, 0x430, 0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x430, 0x43a, 0x3b, 0x441, 0x443, 0x431,
-0x43e, 0x442, 0x430, 0x43d, 0x435, 0x434, 0x3b, 0x43f, 0x43e, 0x43d, 0x3b, 0x443, 0x442, 0x43e, 0x3b, 0x441, 0x440, 0x435, 0x3b, 0x447,
-0x435, 0x442, 0x3b, 0x43f, 0x435, 0x442, 0x3b, 0x441, 0x443, 0x431, 0x43d, 0x435, 0x434, 0x458, 0x435, 0x459, 0x430, 0x3b, 0x43f, 0x43e,
-0x43d, 0x435, 0x434, 0x435, 0x459, 0x430, 0x43a, 0x3b, 0x443, 0x442, 0x43e, 0x440, 0x430, 0x43a, 0x3b, 0x441, 0x440, 0x438, 0x458, 0x435,
-0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x440, 0x442, 0x430, 0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x430, 0x43a, 0x3b, 0x441, 0x443,
-0x431, 0x43e, 0x442, 0x430, 0x6e, 0x65, 0x64, 0x3b, 0x70, 0x6f, 0x6e, 0x3b, 0x75, 0x74, 0x6f, 0x3b, 0x73, 0x72, 0x65, 0x3b,
-0x10d, 0x65, 0x74, 0x3b, 0x70, 0x65, 0x74, 0x3b, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, 0x3b, 0x70,
-0x6f, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, 0x6b, 0x3b, 0x75, 0x74, 0x6f, 0x72, 0x61, 0x6b, 0x3b, 0x73, 0x72, 0x65,
-0x64, 0x61, 0x3b, 0x10d, 0x65, 0x74, 0x76, 0x72, 0x74, 0x61, 0x6b, 0x3b, 0x70, 0x65, 0x74, 0x61, 0x6b, 0x3b, 0x73, 0x75,
-0x62, 0x6f, 0x74, 0x61, 0x6e, 0x65, 0x64, 0x6a, 0x65, 0x6c, 0x6a, 0x61, 0x3b, 0x70, 0x6f, 0x6e, 0x65, 0x64, 0x65, 0x6c,
-0x6a, 0x61, 0x6b, 0x3b, 0x75, 0x74, 0x6f, 0x72, 0x61, 0x6b, 0x3b, 0x73, 0x72, 0x69, 0x6a, 0x65, 0x64, 0x61, 0x3b, 0x10d,
-0x65, 0x74, 0x76, 0x72, 0x74, 0x61, 0x6b, 0x3b, 0x70, 0x65, 0x74, 0x61, 0x6b, 0x3b, 0x73, 0x75, 0x62, 0x6f, 0x74, 0x61,
-0x4a, 0x75, 0x6d, 0x61, 0x61, 0x70, 0x69, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a,
-0x75, 0x6d, 0x61, 0x61, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x68,
-0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x6d, 0x6f,
-0x73, 0x69, 0x4a, 0x70, 0x69, 0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6d, 0x6e, 0x3b, 0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x6c,
-0x68, 0x3b, 0x49, 0x6a, 0x75, 0x3b, 0x4a, 0x6d, 0x6f, 0x32, 0x3b, 0x33, 0x3b, 0x34, 0x3b, 0x35, 0x3b, 0x41, 0x3b, 0x49,
-0x3b, 0x31, 0x53, 0x76, 0x6f, 0x6e, 0x64, 0x6f, 0x3b, 0x4d, 0x75, 0x76, 0x68, 0x75, 0x72, 0x6f, 0x3b, 0x43, 0x68, 0x69,
-0x70, 0x69, 0x72, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x43, 0x68, 0x69, 0x6e, 0x61, 0x3b, 0x43,
-0x68, 0x69, 0x73, 0x68, 0x61, 0x6e, 0x75, 0x3b, 0x4d, 0x75, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x53, 0x76, 0x6f, 0x3b,
-0x4d, 0x75, 0x76, 0x3b, 0x43, 0x68, 0x70, 0x3b, 0x43, 0x68, 0x74, 0x3b, 0x43, 0x68, 0x6e, 0x3b, 0x43, 0x68, 0x73, 0x3b,
-0x4d, 0x75, 0x67, 0x53, 0x3b, 0x4d, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x4d, 0xa46d, 0xa18f, 0xa44d, 0x3b,
-0xa18f, 0xa282, 0xa2cd, 0x3b, 0xa18f, 0xa282, 0xa44d, 0x3b, 0xa18f, 0xa282, 0xa315, 0x3b, 0xa18f, 0xa282, 0xa1d6, 0x3b, 0xa18f, 0xa282, 0xa26c, 0x3b,
-0xa18f, 0xa282, 0xa0d8, 0xa46d, 0xa18f, 0x3b, 0xa18f, 0xa2cd, 0x3b, 0xa18f, 0xa44d, 0x3b, 0xa18f, 0xa315, 0x3b, 0xa18f, 0xa1d6, 0x3b, 0xa18f, 0xa26c,
-0x3b, 0xa18f, 0xa0d8, 0xa18f, 0x3b, 0xa2cd, 0x3b, 0xa44d, 0x3b, 0xa315, 0x3b, 0xa1d6, 0x3b, 0xa26c, 0x3b, 0xa0d8, 0x622, 0x686, 0x631, 0x3b,
-0x633, 0x648, 0x645, 0x631, 0x3b, 0x627, 0x6b1, 0x627, 0x631, 0x648, 0x3b, 0x627, 0x631, 0x628, 0x639, 0x3b, 0x62e, 0x645, 0x64a, 0x633,
-0x3b, 0x62c, 0x645, 0x639, 0x648, 0x3b, 0x687, 0x646, 0x687, 0x631, 0x622, 0x686, 0x631, 0x3b, 0x633, 0x648, 0x3b, 0x627, 0x6b1, 0x627,
-0x631, 0x648, 0x3b, 0x627, 0x631, 0x628, 0x639, 0x3b, 0x62e, 0x645, 0x3b, 0x62c, 0x645, 0x639, 0x648, 0x3b, 0x687, 0x646, 0x687, 0x631,
-0x906, 0x930, 0x94d, 0x924, 0x3b, 0x938, 0x942, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, 0x952, 0x927, 0x3b, 0x935, 0x93f, 0x938, 0x3b,
-0x91c, 0x941, 0x92e, 0x3b, 0x91b, 0x902, 0x91b, 0x906, 0x930, 0x94d, 0x924, 0x935, 0x93e, 0x930, 0x3b, 0x938, 0x942, 0x92e, 0x930, 0x3b,
-0x92e, 0x902, 0x917, 0x932, 0x941, 0x3b, 0x92c, 0x941, 0x952, 0x927, 0x930, 0x3b, 0x935, 0x93f, 0x938, 0x94d, 0x92a, 0x924, 0x3b, 0x91c,
-0x941, 0x92e, 0x94b, 0x3b, 0x91b, 0x902, 0x91b, 0x930, 0x906, 0x3b, 0x938, 0x942, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, 0x927, 0x3b,
-0x935, 0x93f, 0x938, 0x3b, 0x91c, 0x941, 0x3b, 0x91b, 0x902, 0x91b, 0x906, 0x930, 0x94d, 0x924, 0x3b, 0x938, 0x942, 0x3b, 0x92e, 0x902,
-0x917, 0x3b, 0x92c, 0x941, 0x952, 0x927, 0x3b, 0x935, 0x93f, 0x938, 0x3b, 0x91c, 0x941, 0x92e, 0x3b, 0x91b, 0x902, 0x91b, 0x906, 0x3b,
-0x938, 0x942, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, 0x952, 0x3b, 0x935, 0x93f, 0x3b, 0x91c, 0x941, 0x3b, 0x91b, 0x902, 0xd89, 0xdbb,
-0xdd2, 0xdaf, 0xdcf, 0x3b, 0xdc3, 0xdb3, 0xdd4, 0xdaf, 0xdcf, 0x3b, 0xd85, 0xd9f, 0xdc4, 0xdbb, 0xdd4, 0xdc0, 0xdcf, 0xdaf, 0xdcf, 0x3b,
-0xdb6, 0xdaf, 0xdcf, 0xdaf, 0xdcf, 0x3b, 0xdb6, 0xdca, 0x200d, 0xdbb, 0xdc4, 0xdc3, 0xdca, 0xdb4, 0xdad, 0xdd2, 0xdb1, 0xdca, 0xdaf, 0xdcf,
-0x3b, 0xdc3, 0xdd2, 0xd9a, 0xdd4, 0xdbb, 0xdcf, 0xdaf, 0xdcf, 0x3b, 0xdc3, 0xdd9, 0xdb1, 0xdc3, 0xdd4, 0xdbb, 0xdcf, 0xdaf, 0xdcf, 0xd89,
-0xdbb, 0xdd2, 0xdaf, 0xdcf, 0x3b, 0xdc3, 0xdb3, 0xdd4, 0xdaf, 0xdcf, 0x3b, 0xd85, 0xd9f, 0xdc4, 0x3b, 0xdb6, 0xdaf, 0xdcf, 0xdaf, 0xdcf,
-0x3b, 0xdb6, 0xdca, 0x200d, 0xdbb, 0xdc4, 0xdc3, 0xdca, 0x3b, 0xdc3, 0xdd2, 0xd9a, 0xdd4, 0x3b, 0xdc3, 0xdd9, 0xdb1, 0xd89, 0x3b, 0xdc3,
-0x3b, 0xd85, 0x3b, 0xdb6, 0x3b, 0xdb6, 0xdca, 0x200d, 0xdbb, 0x3b, 0xdc3, 0xdd2, 0x3b, 0xdc3, 0xdd9, 0x6e, 0x65, 0x64, 0x65, 0x13e,
-0x61, 0x3b, 0x70, 0x6f, 0x6e, 0x64, 0x65, 0x6c, 0x6f, 0x6b, 0x3b, 0x75, 0x74, 0x6f, 0x72, 0x6f, 0x6b, 0x3b, 0x73, 0x74,
-0x72, 0x65, 0x64, 0x61, 0x3b, 0x161, 0x74, 0x76, 0x72, 0x74, 0x6f, 0x6b, 0x3b, 0x70, 0x69, 0x61, 0x74, 0x6f, 0x6b, 0x3b,
-0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x6e, 0x65, 0x3b, 0x70, 0x6f, 0x3b, 0x75, 0x74, 0x3b, 0x73, 0x74, 0x3b, 0x161, 0x74,
-0x3b, 0x70, 0x69, 0x3b, 0x73, 0x6f, 0x6e, 0x3b, 0x70, 0x3b, 0x75, 0x3b, 0x73, 0x3b, 0x161, 0x3b, 0x70, 0x3b, 0x73, 0x6e,
-0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, 0x3b, 0x70, 0x6f, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x65, 0x6b, 0x3b, 0x74, 0x6f,
-0x72, 0x65, 0x6b, 0x3b, 0x73, 0x72, 0x65, 0x64, 0x61, 0x3b, 0x10d, 0x65, 0x74, 0x72, 0x74, 0x65, 0x6b, 0x3b, 0x70, 0x65,
-0x74, 0x65, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x6e, 0x65, 0x64, 0x2e, 0x3b, 0x70, 0x6f, 0x6e, 0x2e, 0x3b,
-0x74, 0x6f, 0x72, 0x2e, 0x3b, 0x73, 0x72, 0x65, 0x2e, 0x3b, 0x10d, 0x65, 0x74, 0x2e, 0x3b, 0x70, 0x65, 0x74, 0x2e, 0x3b,
-0x73, 0x6f, 0x62, 0x2e, 0x6e, 0x3b, 0x70, 0x3b, 0x74, 0x3b, 0x73, 0x3b, 0x10d, 0x3b, 0x70, 0x3b, 0x73, 0x53, 0x61, 0x62,
-0x69, 0x69, 0x74, 0x69, 0x3b, 0x42, 0x61, 0x6c, 0x61, 0x7a, 0x61, 0x3b, 0x4f, 0x77, 0x6f, 0x6b, 0x75, 0x62, 0x69, 0x6c,
-0x69, 0x3b, 0x4f, 0x77, 0x6f, 0x6b, 0x75, 0x73, 0x61, 0x74, 0x75, 0x3b, 0x4f, 0x6c, 0x6f, 0x6b, 0x75, 0x6e, 0x61, 0x3b,
-0x4f, 0x6c, 0x6f, 0x6b, 0x75, 0x74, 0x61, 0x61, 0x6e, 0x75, 0x3b, 0x4f, 0x6c, 0x6f, 0x6d, 0x75, 0x6b, 0x61, 0x61, 0x67,
-0x61, 0x53, 0x61, 0x62, 0x69, 0x3b, 0x42, 0x61, 0x6c, 0x61, 0x3b, 0x4b, 0x75, 0x62, 0x69, 0x3b, 0x4b, 0x75, 0x73, 0x61,
-0x3b, 0x4b, 0x75, 0x6e, 0x61, 0x3b, 0x4b, 0x75, 0x74, 0x61, 0x3b, 0x4d, 0x75, 0x6b, 0x61, 0x53, 0x3b, 0x42, 0x3b, 0x42,
-0x3b, 0x53, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4d, 0x41, 0x78, 0x61, 0x64, 0x3b, 0x49, 0x73, 0x6e, 0x69, 0x69, 0x6e, 0x3b,
-0x54, 0x61, 0x6c, 0x61, 0x61, 0x64, 0x6f, 0x3b, 0x41, 0x72, 0x62, 0x61, 0x63, 0x6f, 0x3b, 0x4b, 0x68, 0x61, 0x6d, 0x69,
-0x69, 0x73, 0x3b, 0x4a, 0x69, 0x6d, 0x63, 0x6f, 0x3b, 0x53, 0x61, 0x62, 0x74, 0x69, 0x41, 0x78, 0x64, 0x3b, 0x49, 0x73,
-0x6e, 0x3b, 0x54, 0x6c, 0x64, 0x6f, 0x3b, 0x41, 0x72, 0x62, 0x63, 0x3b, 0x4b, 0x68, 0x6d, 0x73, 0x3b, 0x4a, 0x6d, 0x63,
-0x3b, 0x53, 0x62, 0x74, 0x69, 0x41, 0x3b, 0x49, 0x3b, 0x54, 0x3b, 0x41, 0x3b, 0x4b, 0x68, 0x3b, 0x4a, 0x3b, 0x53, 0x64,
-0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x6c, 0x75, 0x6e, 0x65, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b,
-0x6d, 0x69, 0xe9, 0x72, 0x63, 0x6f, 0x6c, 0x65, 0x73, 0x3b, 0x6a, 0x75, 0x65, 0x76, 0x65, 0x73, 0x3b, 0x76, 0x69, 0x65,
-0x72, 0x6e, 0x65, 0x73, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x64, 0x6f, 0x6d, 0x3b, 0x6c, 0x75, 0x6e, 0x3b, 0x6d,
-0x61, 0x72, 0x3b, 0x6d, 0x69, 0xe9, 0x3b, 0x6a, 0x75, 0x65, 0x3b, 0x76, 0x69, 0x65, 0x3b, 0x73, 0xe1, 0x62, 0x2d30, 0x2d59,
-0x2d30, 0x2d4e, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d62, 0x2d4f, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4f, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d3d,
-0x2d55, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d3d, 0x2d61, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4e, 0x2d61, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59,
-0x2d49, 0x2d39, 0x2d62, 0x2d30, 0x2d59, 0x2d30, 0x2d59, 0x2d30, 0x3b, 0x2d30, 0x2d62, 0x2d4f, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x3b, 0x2d30, 0x2d3d, 0x2d55,
-0x3b, 0x2d30, 0x2d3d, 0x2d61, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4e, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d39, 0x4d, 0x69, 0x6e, 0x67, 0x67, 0x75,
-0x3b, 0x53, 0x65, 0x6e, 0xe9, 0x6e, 0x3b, 0x53, 0x61, 0x6c, 0x61, 0x73, 0x61, 0x3b, 0x52, 0x65, 0x62, 0x6f, 0x3b, 0x4b,
-0x65, 0x6d, 0x69, 0x73, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x68, 0x3b, 0x53, 0x61, 0x70, 0x74, 0x75, 0x4d, 0x6e, 0x67,
-0x3b, 0x53, 0x65, 0x6e, 0x3b, 0x53, 0x61, 0x6c, 0x3b, 0x52, 0x65, 0x62, 0x3b, 0x4b, 0x65, 0x6d, 0x3b, 0x4a, 0x75, 0x6d,
-0x3b, 0x53, 0x61, 0x70, 0x73, 0xf6, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x6d, 0xe5, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x69,
-0x73, 0x64, 0x61, 0x67, 0x3b, 0x6f, 0x6e, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x6f, 0x72, 0x73, 0x64, 0x61, 0x67, 0x3b,
-0x66, 0x72, 0x65, 0x64, 0x61, 0x67, 0x3b, 0x6c, 0xf6, 0x72, 0x64, 0x61, 0x67, 0x73, 0xf6, 0x6e, 0x3b, 0x6d, 0xe5, 0x6e,
-0x3b, 0x74, 0x69, 0x73, 0x3b, 0x6f, 0x6e, 0x73, 0x3b, 0x74, 0x6f, 0x72, 0x73, 0x3b, 0x66, 0x72, 0x65, 0x3b, 0x6c, 0xf6,
-0x72, 0x53, 0x75, 0x6e, 0x6e, 0x74, 0x69, 0x67, 0x3b, 0x4d, 0xe4, 0xe4, 0x6e, 0x74, 0x69, 0x67, 0x3b, 0x5a, 0x69, 0x69,
-0x73, 0x63, 0x68, 0x74, 0x69, 0x67, 0x3b, 0x4d, 0x69, 0x74, 0x74, 0x77, 0x75, 0x63, 0x68, 0x3b, 0x44, 0x75, 0x6e, 0x73,
-0x63, 0x68, 0x74, 0x69, 0x67, 0x3b, 0x46, 0x72, 0x69, 0x69, 0x74, 0x69, 0x67, 0x3b, 0x53, 0x61, 0x6d, 0x73, 0x63, 0x68,
-0x74, 0x69, 0x67, 0x53, 0x75, 0x2e, 0x3b, 0x4d, 0xe4, 0x2e, 0x3b, 0x5a, 0x69, 0x2e, 0x3b, 0x4d, 0x69, 0x2e, 0x3b, 0x44,
-0x75, 0x2e, 0x3b, 0x46, 0x72, 0x2e, 0x3b, 0x53, 0x61, 0x2e, 0x2d30, 0x2d59, 0x2d30, 0x2d4e, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d62, 0x2d4f,
-0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4f, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d3d, 0x2d55, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d3d, 0x2d61, 0x2d30,
-0x2d59, 0x3b, 0x2d59, 0x2d49, 0x2d4e, 0x2d61, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d39, 0x2d62, 0x2d30, 0x2d59, 0x61, 0x73, 0x61, 0x6d,
-0x61, 0x73, 0x3b, 0x61, 0x79, 0x6e, 0x61, 0x73, 0x3b, 0x61, 0x73, 0x69, 0x6e, 0x61, 0x73, 0x3b, 0x61, 0x6b, 0x1e5b, 0x61,
-0x73, 0x3b, 0x61, 0x6b, 0x77, 0x61, 0x73, 0x3b, 0x61, 0x73, 0x69, 0x6d, 0x77, 0x61, 0x73, 0x3b, 0x61, 0x73, 0x69, 0x1e0d,
-0x79, 0x61, 0x73, 0x61, 0x73, 0x61, 0x3b, 0x61, 0x79, 0x6e, 0x3b, 0x61, 0x73, 0x69, 0x3b, 0x61, 0x6b, 0x1e5b, 0x3b, 0x61,
-0x6b, 0x77, 0x3b, 0x61, 0x73, 0x69, 0x6d, 0x3b, 0x61, 0x73, 0x69, 0x1e0d, 0x49, 0x74, 0x75, 0x6b, 0x75, 0x20, 0x6a, 0x61,
-0x20, 0x6a, 0x75, 0x6d, 0x77, 0x61, 0x3b, 0x4b, 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x20, 0x6a, 0x69, 0x6d, 0x77,
-0x65, 0x72, 0x69, 0x3b, 0x4b, 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x20, 0x6b, 0x61, 0x77, 0x69, 0x3b, 0x4b, 0x75,
-0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x20, 0x6b, 0x61, 0x64, 0x61, 0x64, 0x75, 0x3b, 0x4b, 0x75, 0x72, 0x61, 0x6d, 0x75,
-0x6b, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x4b, 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x20, 0x6b, 0x61, 0x73,
-0x61, 0x6e, 0x75, 0x3b, 0x4b, 0x69, 0x66, 0x75, 0x6c, 0x61, 0x20, 0x6e, 0x67, 0x75, 0x77, 0x6f, 0x4a, 0x75, 0x6d, 0x3b,
-0x4a, 0x69, 0x6d, 0x3b, 0x4b, 0x61, 0x77, 0x3b, 0x4b, 0x61, 0x64, 0x3b, 0x4b, 0x61, 0x6e, 0x3b, 0x4b, 0x61, 0x73, 0x3b,
-0x4e, 0x67, 0x75, 0x4a, 0x3b, 0x4a, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4e, 0x42f, 0x43a, 0x448, 0x430,
-0x43d, 0x431, 0x435, 0x3b, 0x414, 0x443, 0x448, 0x430, 0x43d, 0x431, 0x435, 0x3b, 0x421, 0x435, 0x448, 0x430, 0x43d, 0x431, 0x435, 0x3b,
-0x427, 0x43e, 0x440, 0x448, 0x430, 0x43d, 0x431, 0x435, 0x3b, 0x41f, 0x430, 0x43d, 0x4b7, 0x448, 0x430, 0x43d, 0x431, 0x435, 0x3b, 0x4b6,
-0x443, 0x43c, 0x44a, 0x430, 0x3b, 0x428, 0x430, 0x43d, 0x431, 0x435, 0x42f, 0x448, 0x431, 0x3b, 0x414, 0x448, 0x431, 0x3b, 0x421, 0x448,
-0x431, 0x3b, 0x427, 0x448, 0x431, 0x3b, 0x41f, 0x448, 0x431, 0x3b, 0x4b6, 0x43c, 0x44a, 0x3b, 0x428, 0x43d, 0x431, 0x42f, 0x3b, 0x414,
-0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x41f, 0x3b, 0x4b6, 0x3b, 0x428, 0xb9e, 0xbbe, 0xbaf, 0xbbf, 0xbb1, 0xbc1, 0x3b, 0xba4, 0xbbf, 0xb99,
-0xbcd, 0xb95, 0xbb3, 0xbcd, 0x3b, 0xb9a, 0xbc6, 0xbb5, 0xbcd, 0xbb5, 0xbbe, 0xbaf, 0xbcd, 0x3b, 0xbaa, 0xbc1, 0xba4, 0xba9, 0xbcd, 0x3b,
-0xbb5, 0xbbf, 0xbaf, 0xbbe, 0xbb4, 0xba9, 0xbcd, 0x3b, 0xbb5, 0xbc6, 0xbb3, 0xbcd, 0xbb3, 0xbbf, 0x3b, 0xb9a, 0xba9, 0xbbf, 0xb9e, 0xbbe,
-0xbaf, 0xbbf, 0x2e, 0x3b, 0xba4, 0xbbf, 0xb99, 0xbcd, 0x2e, 0x3b, 0xb9a, 0xbc6, 0xbb5, 0xbcd, 0x2e, 0x3b, 0xbaa, 0xbc1, 0xba4, 0x2e,
-0x3b, 0xbb5, 0xbbf, 0xbaf, 0xbbe, 0x2e, 0x3b, 0xbb5, 0xbc6, 0xbb3, 0xbcd, 0x2e, 0x3b, 0xb9a, 0xba9, 0xbbf, 0xb9e, 0xbbe, 0x3b, 0xba4,
-0xbbf, 0x3b, 0xb9a, 0xbc6, 0x3b, 0xbaa, 0xbc1, 0x3b, 0xbb5, 0xbbf, 0x3b, 0xbb5, 0xbc6, 0x3b, 0xb9a, 0x44f, 0x43a, 0x448, 0x4d9, 0x43c,
-0x431, 0x435, 0x3b, 0x434, 0x4af, 0x448, 0x4d9, 0x43c, 0x431, 0x435, 0x3b, 0x441, 0x438, 0x448, 0x4d9, 0x43c, 0x431, 0x435, 0x3b, 0x447,
-0x4d9, 0x440, 0x448, 0x4d9, 0x43c, 0x431, 0x435, 0x3b, 0x43f, 0x4d9, 0x43d, 0x497, 0x435, 0x448, 0x4d9, 0x43c, 0x431, 0x435, 0x3b, 0x497,
-0x43e, 0x43c, 0x433, 0x430, 0x3b, 0x448, 0x438, 0x43c, 0x431, 0x4d9, 0x44f, 0x43a, 0x448, 0x2e, 0x3b, 0x434, 0x4af, 0x448, 0x2e, 0x3b,
-0x441, 0x438, 0x448, 0x2e, 0x3b, 0x447, 0x4d9, 0x440, 0x2e, 0x3b, 0x43f, 0x4d9, 0x43d, 0x497, 0x2e, 0x3b, 0x497, 0x43e, 0x43c, 0x2e,
-0x3b, 0x448, 0x438, 0x43c, 0x2e, 0x42f, 0x3b, 0x414, 0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x41f, 0x3b, 0x496, 0x3b, 0x428, 0xc06, 0xc26,
-0xc3f, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc38, 0xc4b, 0xc2e, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc2e, 0xc02, 0xc17, 0xc33, 0xc35, 0xc3e,
-0xc30, 0xc02, 0x3b, 0xc2c, 0xc41, 0xc27, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc17, 0xc41, 0xc30, 0xc41, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b,
-0xc36, 0xc41, 0xc15, 0xc4d, 0xc30, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc36, 0xc28, 0xc3f, 0xc35, 0xc3e, 0xc30, 0xc02, 0xc06, 0xc26, 0xc3f,
-0x3b, 0xc38, 0xc4b, 0xc2e, 0x3b, 0xc2e, 0xc02, 0xc17, 0xc33, 0x3b, 0xc2c, 0xc41, 0xc27, 0x3b, 0xc17, 0xc41, 0xc30, 0xc41, 0x3b, 0xc36,
-0xc41, 0xc15, 0xc4d, 0xc30, 0x3b, 0xc36, 0xc28, 0xc3f, 0xc06, 0x3b, 0xc38, 0xc4b, 0x3b, 0xc2e, 0x3b, 0xc2c, 0xc41, 0x3b, 0xc17, 0xc41,
-0x3b, 0xc36, 0xc41, 0x3b, 0xc36, 0x4e, 0x61, 0x6b, 0x61, 0x65, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x65,
-0x62, 0x61, 0x72, 0x61, 0x73, 0x61, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x61, 0x72, 0x65, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x75,
-0x6e, 0x69, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x75, 0x6e, 0x67, 0x2019, 0x6f, 0x6e, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x6b, 0x61,
-0x6e, 0x79, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x73, 0x61, 0x62, 0x69, 0x74, 0x69, 0x4a, 0x75, 0x6d, 0x3b, 0x42, 0x61, 0x72,
-0x3b, 0x41, 0x61, 0x72, 0x3b, 0x55, 0x6e, 0x69, 0x3b, 0x55, 0x6e, 0x67, 0x3b, 0x4b, 0x61, 0x6e, 0x3b, 0x53, 0x61, 0x62,
-0x4a, 0x3b, 0x42, 0x3b, 0x41, 0x3b, 0x55, 0x3b, 0x55, 0x3b, 0x4b, 0x3b, 0x53, 0xe27, 0xe31, 0xe19, 0xe2d, 0xe32, 0xe17, 0xe34,
-0xe15, 0xe22, 0xe4c, 0x3b, 0xe27, 0xe31, 0xe19, 0xe08, 0xe31, 0xe19, 0xe17, 0xe23, 0xe4c, 0x3b, 0xe27, 0xe31, 0xe19, 0xe2d, 0xe31, 0xe07,
-0xe04, 0xe32, 0xe23, 0x3b, 0xe27, 0xe31, 0xe19, 0xe1e, 0xe38, 0xe18, 0x3b, 0xe27, 0xe31, 0xe19, 0xe1e, 0xe24, 0xe2b, 0xe31, 0xe2a, 0xe1a,
-0xe14, 0xe35, 0x3b, 0xe27, 0xe31, 0xe19, 0xe28, 0xe38, 0xe01, 0xe23, 0xe4c, 0x3b, 0xe27, 0xe31, 0xe19, 0xe40, 0xe2a, 0xe32, 0xe23, 0xe4c,
-0xe2d, 0xe32, 0x2e, 0x3b, 0xe08, 0x2e, 0x3b, 0xe2d, 0x2e, 0x3b, 0xe1e, 0x2e, 0x3b, 0xe1e, 0xe24, 0x2e, 0x3b, 0xe28, 0x2e, 0x3b,
-0xe2a, 0x2e, 0xe2d, 0xe32, 0x3b, 0xe08, 0x3b, 0xe2d, 0x3b, 0xe1e, 0x3b, 0xe1e, 0xe24, 0x3b, 0xe28, 0x3b, 0xe2a, 0xf42, 0xf5f, 0xf60,
-0xf0b, 0xf49, 0xf72, 0xf0b, 0xf58, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60,
-0xf0b, 0xf58, 0xf72, 0xf42, 0xf0b, 0xf51, 0xf58, 0xf62, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf63, 0xfb7, 0xf42, 0xf0b, 0xf54, 0xf0b,
-0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf55, 0xf74, 0xf62, 0xf0b, 0xf56, 0xf74, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf54, 0xf0b, 0xf66,
-0xf44, 0xf66, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0xf0b, 0xf54, 0xf0b, 0xf49, 0xf72, 0xf0b, 0xf58, 0xf0b,
-0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0x3b, 0xf58, 0xf72, 0xf42, 0xf0b, 0xf51, 0xf58, 0xf62, 0xf0b, 0x3b, 0xf63, 0xfb7, 0xf42, 0xf0b,
-0xf54, 0xf0b, 0x3b, 0xf55, 0xf74, 0xf62, 0xf0b, 0xf56, 0xf74, 0xf0b, 0x3b, 0xf54, 0xf0b, 0xf66, 0xf44, 0xf66, 0xf0b, 0x3b, 0xf66, 0xfa4,
-0xf7a, 0xf53, 0xf0b, 0xf54, 0xf0b, 0xf49, 0xf72, 0x3b, 0xf5f, 0xfb3, 0x3b, 0xf58, 0xf72, 0xf42, 0x3b, 0xf63, 0xfb7, 0xf42, 0x3b, 0xf55,
-0xf74, 0xf62, 0x3b, 0xf66, 0xf44, 0xf66, 0x3b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0x1230, 0x1295, 0x1260, 0x1275, 0x3b, 0x1230, 0x1291, 0x12ed, 0x3b,
-0x1230, 0x1209, 0x1235, 0x3b, 0x1228, 0x1261, 0x12d5, 0x3b, 0x1213, 0x1219, 0x1235, 0x3b, 0x12d3, 0x122d, 0x1262, 0x3b, 0x1240, 0x12f3, 0x121d, 0x1230,
-0x1295, 0x3b, 0x1230, 0x1291, 0x3b, 0x1230, 0x1209, 0x3b, 0x1228, 0x1261, 0x3b, 0x1213, 0x1219, 0x3b, 0x12d3, 0x122d, 0x3b, 0x1240, 0x12f3, 0x1230,
-0x3b, 0x1230, 0x3b, 0x1230, 0x3b, 0x1228, 0x3b, 0x1213, 0x3b, 0x12d3, 0x3b, 0x1240, 0x53, 0x101, 0x70, 0x61, 0x74, 0x65, 0x3b, 0x4d,
-0x14d, 0x6e, 0x69, 0x74, 0x65, 0x3b, 0x54, 0x16b, 0x73, 0x69, 0x74, 0x65, 0x3b, 0x50, 0x75, 0x6c, 0x65, 0x6c, 0x75, 0x6c,
-0x75, 0x3b, 0x54, 0x75, 0x2bb, 0x61, 0x70, 0x75, 0x6c, 0x65, 0x6c, 0x75, 0x6c, 0x75, 0x3b, 0x46, 0x61, 0x6c, 0x61, 0x69,
-0x74, 0x65, 0x3b, 0x54, 0x6f, 0x6b, 0x6f, 0x6e, 0x61, 0x6b, 0x69, 0x53, 0x101, 0x70, 0x3b, 0x4d, 0x14d, 0x6e, 0x3b, 0x54,
-0x16b, 0x73, 0x3b, 0x50, 0x75, 0x6c, 0x3b, 0x54, 0x75, 0x2bb, 0x61, 0x3b, 0x46, 0x61, 0x6c, 0x3b, 0x54, 0x6f, 0x6b, 0x53,
-0x3b, 0x4d, 0x3b, 0x54, 0x3b, 0x50, 0x3b, 0x54, 0x3b, 0x46, 0x3b, 0x54, 0x50, 0x61, 0x7a, 0x61, 0x72, 0x3b, 0x50, 0x61,
-0x7a, 0x61, 0x72, 0x74, 0x65, 0x73, 0x69, 0x3b, 0x53, 0x61, 0x6c, 0x131, 0x3b, 0xc7, 0x61, 0x72, 0x15f, 0x61, 0x6d, 0x62,
-0x61, 0x3b, 0x50, 0x65, 0x72, 0x15f, 0x65, 0x6d, 0x62, 0x65, 0x3b, 0x43, 0x75, 0x6d, 0x61, 0x3b, 0x43, 0x75, 0x6d, 0x61,
-0x72, 0x74, 0x65, 0x73, 0x69, 0x50, 0x61, 0x7a, 0x3b, 0x50, 0x7a, 0x74, 0x3b, 0x53, 0x61, 0x6c, 0x3b, 0xc7, 0x61, 0x72,
-0x3b, 0x50, 0x65, 0x72, 0x3b, 0x43, 0x75, 0x6d, 0x3b, 0x43, 0x6d, 0x74, 0x50, 0x3b, 0x50, 0x3b, 0x53, 0x3b, 0xc7, 0x3b,
-0x50, 0x3b, 0x43, 0x3b, 0x43, 0xdd, 0x65, 0x6b, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x44, 0x75, 0x15f, 0x65, 0x6e, 0x62,
-0x65, 0x3b, 0x53, 0x69, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0xc7, 0x61, 0x72, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x50,
-0x65, 0x6e, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x41, 0x6e, 0x6e, 0x61, 0x3b, 0x15e, 0x65, 0x6e, 0x62, 0x65, 0xfd, 0x65,
-0x6b, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x64, 0x75, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x73, 0x69, 0x15f, 0x65, 0x6e,
-0x62, 0x65, 0x3b, 0xe7, 0x61, 0x72, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x70, 0x65, 0x6e, 0x15f, 0x65, 0x6e, 0x62, 0x65,
-0x3b, 0x61, 0x6e, 0x6e, 0x61, 0x3b, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0xdd, 0x65, 0x6b, 0x3b, 0x44, 0x75, 0x15f, 0x3b, 0x53,
-0x69, 0x15f, 0x3b, 0xc7, 0x61, 0x72, 0x3b, 0x50, 0x65, 0x6e, 0x3b, 0x41, 0x6e, 0x6e, 0x3b, 0x15e, 0x65, 0x6e, 0xfd, 0x65,
-0x6b, 0x3b, 0x64, 0x75, 0x15f, 0x3b, 0x73, 0x69, 0x15f, 0x3b, 0xe7, 0x61, 0x72, 0x3b, 0x70, 0x65, 0x6e, 0x3b, 0x61, 0x6e,
-0x6e, 0x3b, 0x15f, 0x65, 0x6e, 0xdd, 0x3b, 0x44, 0x3b, 0x53, 0x3b, 0xc7, 0x3b, 0x50, 0x3b, 0x41, 0x3b, 0x15e, 0x43d, 0x435,
-0x434, 0x456, 0x43b, 0x44f, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x456, 0x43b, 0x43e, 0x43a, 0x3b, 0x432, 0x456, 0x432, 0x442, 0x43e,
-0x440, 0x43e, 0x43a, 0x3b, 0x441, 0x435, 0x440, 0x435, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x435, 0x440, 0x3b, 0x43f, 0x2bc,
-0x44f, 0x442, 0x43d, 0x438, 0x446, 0x44f, 0x3b, 0x441, 0x443, 0x431, 0x43e, 0x442, 0x430, 0x41d, 0x3b, 0x41f, 0x3b, 0x412, 0x3b, 0x421,
-0x3b, 0x427, 0x3b, 0x41f, 0x3b, 0x421, 0x6e, 0x6a, 0x65, 0x64, 0x17a, 0x65, 0x6c, 0x61, 0x3b, 0x70, 0xf3, 0x6e, 0x64, 0x17a,
-0x65, 0x6c, 0x61, 0x3b, 0x77, 0x75, 0x74, 0x6f, 0x72, 0x61, 0x3b, 0x73, 0x72, 0x6a, 0x65, 0x64, 0x61, 0x3b, 0x161, 0x74,
-0x77, 0xf3, 0x72, 0x74, 0x6b, 0x3b, 0x70, 0x6a, 0x61, 0x74, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x6e, 0x6a,
-0x65, 0x3b, 0x70, 0xf3, 0x6e, 0x3b, 0x77, 0x75, 0x74, 0x3b, 0x73, 0x72, 0x6a, 0x3b, 0x161, 0x74, 0x77, 0x3b, 0x70, 0x6a,
-0x61, 0x3b, 0x73, 0x6f, 0x62, 0x6e, 0x3b, 0x70, 0x3b, 0x77, 0x3b, 0x73, 0x3b, 0x161, 0x3b, 0x70, 0x3b, 0x73, 0x627, 0x62a,
-0x648, 0x627, 0x631, 0x3b, 0x67e, 0x6cc, 0x631, 0x3b, 0x645, 0x646, 0x6af, 0x644, 0x3b, 0x628, 0x62f, 0x6be, 0x3b, 0x62c, 0x645, 0x639,
-0x631, 0x627, 0x62a, 0x3b, 0x62c, 0x645, 0x639, 0x6c1, 0x3b, 0x6c1, 0x641, 0x62a, 0x6c1, 0x64a, 0x6d5, 0x643, 0x634, 0x6d5, 0x646, 0x628,
-0x6d5, 0x3b, 0x62f, 0x6c8, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x633, 0x6d5, 0x64a, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x686,
-0x627, 0x631, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x67e, 0x6d5, 0x64a, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x62c, 0x6c8, 0x645,
-0x6d5, 0x3b, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x64a, 0x6d5, 0x3b, 0x62f, 0x6c8, 0x3b, 0x633, 0x6d5, 0x3b, 0x686, 0x627, 0x3b, 0x67e,
-0x6d5, 0x3b, 0x62c, 0x6c8, 0x3b, 0x634, 0x6d5, 0x64a, 0x3b, 0x62f, 0x3b, 0x633, 0x3b, 0x686, 0x3b, 0x67e, 0x3b, 0x62c, 0x3b, 0x634,
-0x79, 0x61, 0x6b, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x64, 0x75, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x73,
-0x65, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x63, 0x68, 0x6f, 0x72, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x70,
-0x61, 0x79, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61,
-0x59, 0x61, 0x6b, 0x3b, 0x44, 0x75, 0x73, 0x68, 0x3b, 0x53, 0x65, 0x73, 0x68, 0x3b, 0x43, 0x68, 0x6f, 0x72, 0x3b, 0x50,
-0x61, 0x79, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x53, 0x68, 0x61, 0x6e, 0x59, 0x3b, 0x44, 0x3b, 0x53, 0x3b, 0x43, 0x3b, 0x50,
-0x3b, 0x4a, 0x3b, 0x53, 0x6cc, 0x2e, 0x3b, 0x62f, 0x2e, 0x3b, 0x633, 0x2e, 0x3b, 0x686, 0x2e, 0x3b, 0x67e, 0x2e, 0x3b, 0x62c,
-0x2e, 0x3b, 0x634, 0x2e, 0x44f, 0x43a, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x434, 0x443, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b,
-0x441, 0x435, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x447, 0x43e, 0x440, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x43f, 0x430, 0x439,
-0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x436, 0x443, 0x43c, 0x430, 0x3b, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x44f, 0x43a, 0x448, 0x3b,
-0x434, 0x443, 0x448, 0x3b, 0x441, 0x435, 0x448, 0x3b, 0x447, 0x43e, 0x440, 0x3b, 0x43f, 0x430, 0x439, 0x3b, 0x436, 0x443, 0x43c, 0x3b,
-0x448, 0x430, 0x43d, 0x42f, 0x3b, 0x414, 0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x41f, 0x3b, 0x416, 0x3b, 0x428, 0xa55e, 0xa54c, 0xa535, 0x3b,
-0xa5f3, 0xa5e1, 0xa609, 0x3b, 0xa55a, 0xa55e, 0xa55a, 0x3b, 0xa549, 0xa55e, 0xa552, 0x3b, 0xa549, 0xa524, 0xa546, 0xa562, 0x3b, 0xa549, 0xa524, 0xa540,
-0xa56e, 0x3b, 0xa53b, 0xa52c, 0xa533, 0x6c, 0x61, 0x68, 0x61, 0x64, 0x69, 0x3b, 0x74, 0x25b, 0x25b, 0x6e, 0x25b, 0x25b, 0x3b, 0x74,
-0x61, 0x6c, 0x61, 0x74, 0x61, 0x3b, 0x61, 0x6c, 0x61, 0x62, 0x61, 0x3b, 0x61, 0x69, 0x6d, 0x69, 0x73, 0x61, 0x3b, 0x61,
-0x69, 0x6a, 0x69, 0x6d, 0x61, 0x3b, 0x73, 0x69, 0x253, 0x69, 0x74, 0x69, 0x43, 0x68, 0x1ee7, 0x20, 0x4e, 0x68, 0x1ead, 0x74,
-0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x48, 0x61, 0x69, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x42, 0x61, 0x3b, 0x54, 0x68, 0x1ee9, 0x20,
-0x54, 0x1b0, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x4e, 0x103, 0x6d, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x53, 0xe1, 0x75, 0x3b, 0x54,
-0x68, 0x1ee9, 0x20, 0x42, 0x1ea3, 0x79, 0x43, 0x4e, 0x3b, 0x54, 0x68, 0x20, 0x32, 0x3b, 0x54, 0x68, 0x20, 0x33, 0x3b, 0x54,
-0x68, 0x20, 0x34, 0x3b, 0x54, 0x68, 0x20, 0x35, 0x3b, 0x54, 0x68, 0x20, 0x36, 0x3b, 0x54, 0x68, 0x20, 0x37, 0x43, 0x4e,
-0x3b, 0x54, 0x32, 0x3b, 0x54, 0x33, 0x3b, 0x54, 0x34, 0x3b, 0x54, 0x35, 0x3b, 0x54, 0x36, 0x3b, 0x54, 0x37, 0x53, 0x75,
-0x6e, 0x6e, 0x74, 0x61, 0x67, 0x3b, 0x4d, 0xe4, 0x6e, 0x74, 0x61, 0x67, 0x3b, 0x5a, 0x69, 0x161, 0x74, 0x61, 0x67, 0x3b,
-0x4d, 0x69, 0x74, 0x74, 0x77, 0x75, 0x10d, 0x3b, 0x46, 0x72, 0xf3, 0x6e, 0x74, 0x61, 0x67, 0x3b, 0x46, 0x72, 0x69, 0x74,
-0x61, 0x67, 0x3b, 0x53, 0x61, 0x6d, 0x161, 0x74, 0x61, 0x67, 0x53, 0x75, 0x6e, 0x3b, 0x4d, 0xe4, 0x6e, 0x3b, 0x5a, 0x69,
-0x161, 0x3b, 0x4d, 0x69, 0x74, 0x3b, 0x46, 0x72, 0xf3, 0x3b, 0x46, 0x72, 0x69, 0x3b, 0x53, 0x61, 0x6d, 0x53, 0x3b, 0x4d,
-0x3b, 0x5a, 0x3b, 0x4d, 0x3b, 0x46, 0x3b, 0x46, 0x3b, 0x53, 0x44, 0x79, 0x64, 0x64, 0x20, 0x53, 0x75, 0x6c, 0x3b, 0x44,
-0x79, 0x64, 0x64, 0x20, 0x4c, 0x6c, 0x75, 0x6e, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x4d, 0x61, 0x77, 0x72, 0x74, 0x68,
-0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x4d, 0x65, 0x72, 0x63, 0x68, 0x65, 0x72, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x49,
-0x61, 0x75, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x47, 0x77, 0x65, 0x6e, 0x65, 0x72, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20,
-0x53, 0x61, 0x64, 0x77, 0x72, 0x6e, 0x53, 0x75, 0x6c, 0x3b, 0x4c, 0x6c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x77, 0x3b, 0x4d,
-0x65, 0x72, 0x3b, 0x49, 0x61, 0x75, 0x3b, 0x47, 0x77, 0x65, 0x3b, 0x53, 0x61, 0x64, 0x53, 0x75, 0x6c, 0x3b, 0x4c, 0x6c,
-0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x77, 0x3b, 0x4d, 0x65, 0x72, 0x3b, 0x49, 0x61, 0x75, 0x3b, 0x47, 0x77, 0x65, 0x6e, 0x3b,
-0x53, 0x61, 0x64, 0x53, 0x3b, 0x4c, 0x6c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x49, 0x3b, 0x47, 0x3b, 0x53, 0x73, 0x6e, 0x65,
-0x69, 0x6e, 0x3b, 0x6d, 0x6f, 0x61, 0x6e, 0x64, 0x65, 0x69, 0x3b, 0x74, 0x69, 0x69, 0x73, 0x64, 0x65, 0x69, 0x3b, 0x77,
-0x6f, 0x61, 0x6e, 0x73, 0x64, 0x65, 0x69, 0x3b, 0x74, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x73, 0x64, 0x65, 0x69, 0x3b, 0x66,
-0x72, 0x65, 0x65, 0x64, 0x3b, 0x73, 0x6e, 0x65, 0x6f, 0x6e, 0x73, 0x69, 0x3b, 0x6d, 0x6f, 0x3b, 0x74, 0x69, 0x3b, 0x77,
-0x6f, 0x3b, 0x74, 0x6f, 0x3b, 0x66, 0x72, 0x3b, 0x73, 0x6f, 0x44, 0x69, 0x62, 0xe9, 0x65, 0x72, 0x3b, 0x41, 0x6c, 0x74,
-0x69, 0x6e, 0x65, 0x3b, 0x54, 0x61, 0x6c, 0x61, 0x61, 0x74, 0x61, 0x3b, 0xc0, 0x6c, 0x61, 0x72, 0x62, 0x61, 0x3b, 0x41,
-0x6c, 0x78, 0x61, 0x6d, 0x69, 0x73, 0x3b, 0xc0, 0x6a, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x41, 0x73, 0x65, 0x65, 0x72, 0x44,
-0x69, 0x62, 0x3b, 0x41, 0x6c, 0x74, 0x3b, 0x54, 0x61, 0x6c, 0x3b, 0xc0, 0x6c, 0x61, 0x3b, 0x41, 0x6c, 0x78, 0x3b, 0xc0,
-0x6a, 0x6a, 0x3b, 0x41, 0x73, 0x65, 0x43, 0x61, 0x77, 0x65, 0x3b, 0x4d, 0x76, 0x75, 0x6c, 0x6f, 0x3b, 0x4c, 0x77, 0x65,
-0x73, 0x69, 0x62, 0x69, 0x6e, 0x69, 0x3b, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x74, 0x68, 0x61, 0x74, 0x68, 0x75, 0x3b, 0x4c,
-0x77, 0x65, 0x73, 0x69, 0x6e, 0x65, 0x3b, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x68, 0x6c, 0x61, 0x6e, 0x75, 0x3b, 0x4d, 0x67,
-0x71, 0x69, 0x62, 0x65, 0x6c, 0x6f, 0x43, 0x61, 0x77, 0x3b, 0x4d, 0x76, 0x75, 0x3b, 0x42, 0x69, 0x6e, 0x3b, 0x54, 0x68,
-0x61, 0x3b, 0x53, 0x69, 0x6e, 0x3b, 0x48, 0x6c, 0x61, 0x3b, 0x4d, 0x67, 0x71, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x69, 0x25b,
-0x3b, 0x6d, 0xf3, 0x6e, 0x64, 0x69, 0x65, 0x3b, 0x6d, 0x75, 0xe1, 0x6e, 0x79, 0xe1, 0x14b, 0x6d, 0xf3, 0x6e, 0x64, 0x69,
-0x65, 0x3b, 0x6d, 0x65, 0x74, 0xfa, 0x6b, 0x70, 0xed, 0xe1, 0x70, 0x25b, 0x3b, 0x6b, 0xfa, 0x70, 0xe9, 0x6c, 0x69, 0x6d,
-0x65, 0x74, 0xfa, 0x6b, 0x70, 0x69, 0x61, 0x70, 0x25b, 0x3b, 0x66, 0x65, 0x6c, 0xe9, 0x74, 0x65, 0x3b, 0x73, 0xe9, 0x73,
-0x65, 0x6c, 0xe9, 0x73, 0x64, 0x3b, 0x6d, 0x64, 0x3b, 0x6d, 0x77, 0x3b, 0x65, 0x74, 0x3b, 0x6b, 0x6c, 0x3b, 0x66, 0x6c,
-0x3b, 0x73, 0x73, 0x73, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x65, 0x3b, 0x6b, 0x3b, 0x66, 0x3b, 0x73, 0x5d6, 0x5d5, 0x5e0, 0x5d8,
-0x5d9, 0x5e7, 0x3b, 0x5de, 0x5d0, 0x5b8, 0x5e0, 0x5d8, 0x5d9, 0x5e7, 0x3b, 0x5d3, 0x5d9, 0x5e0, 0x5e1, 0x5d8, 0x5d9, 0x5e7, 0x3b, 0x5de,
-0x5d9, 0x5d8, 0x5d5, 0x5d5, 0x5d0, 0x5da, 0x3b, 0x5d3, 0x5d0, 0x5e0, 0x5e2, 0x5e8, 0x5e9, 0x5d8, 0x5d9, 0x5e7, 0x3b, 0x5e4, 0x5bf, 0x5e8,
-0x5f2, 0x5b7, 0x5d8, 0x5d9, 0x5e7, 0x3b, 0x5e9, 0x5d1, 0x5ea, 0xc0, 0xec, 0x6b, 0xfa, 0x3b, 0x41, 0x6a, 0xe9, 0x3b, 0xcc, 0x73,
-0x1eb9, 0x301, 0x67, 0x75, 0x6e, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x72, 0xfa, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x62, 0x1ecd, 0x3b,
-0x1eb8, 0x74, 0xec, 0x3b, 0xc0, 0x62, 0xe1, 0x6d, 0x1eb9, 0x301, 0x74, 0x61, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, 0xc0, 0xec, 0x6b,
-0xfa, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, 0x41, 0x6a, 0xe9, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, 0xcc, 0x73, 0x1eb9, 0x301,
-0x67, 0x75, 0x6e, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x72, 0xfa, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x62, 0x1ecd, 0x3b, 0x1ecc, 0x6a,
-0x1ecd, 0x301, 0x20, 0x1eb8, 0x74, 0xec, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, 0xc0, 0x62, 0xe1, 0x6d, 0x1eb9, 0x301, 0x74, 0x61,
-0xc0, 0xec, 0x6b, 0x3b, 0x41, 0x6a, 0x3b, 0xcc, 0x73, 0x1eb9, 0x301, 0x67, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x72, 0x3b, 0x1ecc,
-0x6a, 0x1ecd, 0x301, 0x62, 0x3b, 0x1eb8, 0x74, 0x3b, 0xc0, 0x62, 0xe1, 0x6d, 0xc0, 0x3b, 0x41, 0x3b, 0xcc, 0x3b, 0x1ecc, 0x3b,
-0x1ecc, 0x3b, 0x1eb8, 0x3b, 0xc0, 0xc0, 0xec, 0x6b, 0xfa, 0x3b, 0x41, 0x6a, 0xe9, 0x3b, 0xcc, 0x73, 0x25b, 0x301, 0x67, 0x75,
-0x6e, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x72, 0xfa, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x62, 0x254, 0x3b, 0x190, 0x74, 0xec, 0x3b,
-0xc0, 0x62, 0xe1, 0x6d, 0x25b, 0x301, 0x74, 0x61, 0x186, 0x6a, 0x254, 0x301, 0x20, 0xc0, 0xec, 0x6b, 0xfa, 0x3b, 0x186, 0x6a,
-0x254, 0x301, 0x20, 0x41, 0x6a, 0xe9, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x20, 0xcc, 0x73, 0x25b, 0x301, 0x67, 0x75, 0x6e, 0x3b,
-0x186, 0x6a, 0x254, 0x301, 0x72, 0xfa, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x62, 0x254, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x20, 0x190,
-0x74, 0xec, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x20, 0xc0, 0x62, 0xe1, 0x6d, 0x25b, 0x301, 0x74, 0x61, 0xc0, 0xec, 0x6b, 0x3b,
-0x41, 0x6a, 0x3b, 0xcc, 0x73, 0x25b, 0x301, 0x67, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x72, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x62,
-0x3b, 0x190, 0x74, 0x3b, 0xc0, 0x62, 0xe1, 0x6d, 0xc0, 0x3b, 0x41, 0x3b, 0xcc, 0x3b, 0x186, 0x3b, 0x186, 0x3b, 0x190, 0x3b,
-0xc0, 0x41, 0x6c, 0x68, 0x61, 0x64, 0x69, 0x3b, 0x41, 0x74, 0x69, 0x6e, 0x6e, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x6c, 0x61,
-0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x72, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b,
-0x41, 0x6c, 0x7a, 0x75, 0x6d, 0x61, 0x3b, 0x41, 0x73, 0x69, 0x62, 0x74, 0x69, 0x48, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x4c,
-0x3b, 0x4d, 0x3b, 0x5a, 0x3b, 0x53, 0x49, 0x53, 0x6f, 0x6e, 0x74, 0x6f, 0x3b, 0x55, 0x4d, 0x73, 0x6f, 0x6d, 0x62, 0x75,
-0x6c, 0x75, 0x6b, 0x6f, 0x3b, 0x55, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x3b, 0x55, 0x4c, 0x77, 0x65,
-0x73, 0x69, 0x74, 0x68, 0x61, 0x74, 0x68, 0x75, 0x3b, 0x55, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x6e, 0x65, 0x3b, 0x55, 0x4c,
-0x77, 0x65, 0x73, 0x69, 0x68, 0x6c, 0x61, 0x6e, 0x75, 0x3b, 0x55, 0x4d, 0x67, 0x71, 0x69, 0x62, 0x65, 0x6c, 0x6f, 0x53,
-0x6f, 0x6e, 0x3b, 0x4d, 0x73, 0x6f, 0x3b, 0x42, 0x69, 0x6c, 0x3b, 0x54, 0x68, 0x61, 0x3b, 0x53, 0x69, 0x6e, 0x3b, 0x48,
-0x6c, 0x61, 0x3b, 0x4d, 0x67, 0x71, 0x53, 0x3b, 0x4d, 0x3b, 0x42, 0x3b, 0x54, 0x3b, 0x53, 0x3b, 0x48, 0x3b, 0x4d, 0x6e,
-0x75, 0x6d, 0x129, 0x67, 0x67, 0x75, 0x3b, 0x70, 0x69, 0x72, 0x2d, 0x6b, 0x75, 0x72, 0xe3, 0x2d, 0x68, 0xe1, 0x3b, 0x72,
-0xe9, 0x67, 0x72, 0x65, 0x2d, 0x6b, 0x75, 0x72, 0xe3, 0x2d, 0x68, 0xe1, 0x3b, 0x74, 0x1ebd, 0x67, 0x74, 0x169, 0x2d, 0x6b,
-0x75, 0x72, 0xe3, 0x2d, 0x68, 0xe1, 0x3b, 0x76, 0x1ebd, 0x6e, 0x68, 0x6b, 0xe3, 0x67, 0x72, 0x61, 0x2d, 0x6b, 0x75, 0x72,
-0xe3, 0x2d, 0x68, 0xe1, 0x3b, 0x70, 0xe9, 0x6e, 0x6b, 0x61, 0x72, 0x2d, 0x6b, 0x75, 0x72, 0xe3, 0x2d, 0x68, 0xe1, 0x3b,
-0x73, 0x61, 0x76, 0x6e, 0x75, 0x6e, 0x75, 0x6d, 0x2e, 0x3b, 0x70, 0x69, 0x72, 0x2e, 0x3b, 0x72, 0xe9, 0x67, 0x2e, 0x3b,
-0x74, 0x1ebd, 0x67, 0x2e, 0x3b, 0x76, 0x1ebd, 0x6e, 0x2e, 0x3b, 0x70, 0xe9, 0x6e, 0x2e, 0x3b, 0x73, 0x61, 0x76, 0x2e, 0x4e,
-0x2e, 0x3b, 0x50, 0x2e, 0x3b, 0x52, 0x2e, 0x3b, 0x54, 0x2e, 0x3b, 0x56, 0x2e, 0x3b, 0x50, 0x2e, 0x3b, 0x53, 0x2e, 0x6d,
-0x69, 0x74, 0x75, 0xfa, 0x3b, 0x6d, 0x75, 0x72, 0x61, 0x6b, 0x69, 0x70, 0xed, 0x3b, 0x6d, 0x75, 0x72, 0x61, 0x6b, 0xed,
-0x2d, 0x6d, 0x75, 0x6b, 0x169, 0x69, 0x3b, 0x6d, 0x75, 0x72, 0x61, 0x6b, 0xed, 0x2d, 0x6d, 0x75, 0x73, 0x61, 0x70, 0xed,
-0x72, 0x69, 0x3b, 0x73, 0x75, 0x70, 0x61, 0x70, 0xe1, 0x3b, 0x79, 0x75, 0x6b, 0x75, 0x61, 0x6b, 0xfa, 0x3b, 0x73, 0x61,
-0x75, 0x72, 0xfa, 0x6d, 0x69, 0x74, 0x3b, 0x6d, 0x75, 0x72, 0x3b, 0x6d, 0x6d, 0x6b, 0x3b, 0x6d, 0x6d, 0x73, 0x3b, 0x73,
-0x75, 0x70, 0x3b, 0x79, 0x75, 0x6b, 0x3b, 0x73, 0x61, 0x75, 0x4d, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x53, 0x3b,
-0x59, 0x3b, 0x53
+static constexpr char16_t days_data[] = {
+0x53, 0x75, 0x6e, 0x64, 0x61, 0x79, 0x3b, 0x4d, 0x6f, 0x6e, 0x64, 0x61,
+0x79, 0x3b, 0x54, 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, 0x3b, 0x57, 0x65,
+0x64, 0x6e, 0x65, 0x73, 0x64, 0x61, 0x79, 0x3b, 0x54, 0x68, 0x75, 0x72,
+0x73, 0x64, 0x61, 0x79, 0x3b, 0x46, 0x72, 0x69, 0x64, 0x61, 0x79, 0x3b,
+0x53, 0x61, 0x74, 0x75, 0x72, 0x64, 0x61, 0x79, 0x53, 0x75, 0x6e, 0x3b,
+0x4d, 0x6f, 0x6e, 0x3b, 0x54, 0x75, 0x65, 0x3b, 0x57, 0x65, 0x64, 0x3b,
+0x54, 0x68, 0x75, 0x3b, 0x46, 0x72, 0x69, 0x3b, 0x53, 0x61, 0x74, 0x53,
+0x3b, 0x4d, 0x3b, 0x54, 0x3b, 0x57, 0x3b, 0x54, 0x3b, 0x46, 0x3b, 0x53,
+0x37, 0x3b, 0x31, 0x3b, 0x32, 0x3b, 0x33, 0x3b, 0x34, 0x3b, 0x35, 0x3b,
+0x36, 0x410, 0x43c, 0x4bd, 0x44b, 0x448, 0x430, 0x3b, 0x410, 0x448, 0x4d9, 0x430,
+0x445, 0x44c, 0x430, 0x3b, 0x410, 0x4a9, 0x430, 0x448, 0x430, 0x3b, 0x410, 0x445,
+0x430, 0x448, 0x430, 0x3b, 0x410, 0x525, 0x448, 0x44c, 0x430, 0x448, 0x430, 0x3b,
+0x410, 0x445, 0x4d9, 0x430, 0x448, 0x430, 0x3b, 0x410, 0x441, 0x430, 0x431, 0x448,
+0x430, 0x410, 0x43c, 0x3b, 0x410, 0x448, 0x4d9, 0x3b, 0x410, 0x4a9, 0x3b, 0x410,
+0x445, 0x3b, 0x410, 0x525, 0x3b, 0x410, 0x445, 0x4d9, 0x3b, 0x410, 0x441, 0x41c,
+0x3b, 0x428, 0x4d9, 0x3b, 0x4a8, 0x3b, 0x425, 0x3b, 0x524, 0x3b, 0x425, 0x4d9,
+0x3b, 0x421, 0x41, 0x63, 0x61, 0x61, 0x64, 0x61, 0x3b, 0x45, 0x74, 0x6c,
+0x65, 0x65, 0x6e, 0x69, 0x3b, 0x54, 0x61, 0x6c, 0x61, 0x61, 0x74, 0x61,
+0x3b, 0x41, 0x72, 0x62, 0x61, 0x71, 0x61, 0x3b, 0x4b, 0x61, 0x6d, 0x69,
+0x69, 0x73, 0x69, 0x3b, 0x47, 0x75, 0x6d, 0x71, 0x61, 0x74, 0x61, 0x3b,
+0x53, 0x61, 0x62, 0x74, 0x69, 0x41, 0x63, 0x61, 0x3b, 0x45, 0x74, 0x6c,
+0x3b, 0x54, 0x61, 0x6c, 0x3b, 0x41, 0x72, 0x62, 0x3b, 0x4b, 0x61, 0x6d,
+0x3b, 0x47, 0x75, 0x6d, 0x3b, 0x53, 0x61, 0x62, 0x41, 0x3b, 0x45, 0x3b,
+0x54, 0x3b, 0x41, 0x3b, 0x4b, 0x3b, 0x47, 0x3b, 0x53, 0x53, 0x6f, 0x6e,
+0x64, 0x61, 0x67, 0x3b, 0x4d, 0x61, 0x61, 0x6e, 0x64, 0x61, 0x67, 0x3b,
+0x44, 0x69, 0x6e, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x57, 0x6f, 0x65, 0x6e,
+0x73, 0x64, 0x61, 0x67, 0x3b, 0x44, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x64,
+0x61, 0x67, 0x3b, 0x56, 0x72, 0x79, 0x64, 0x61, 0x67, 0x3b, 0x53, 0x61,
+0x74, 0x65, 0x72, 0x64, 0x61, 0x67, 0x53, 0x6f, 0x2e, 0x3b, 0x4d, 0x61,
+0x2e, 0x3b, 0x44, 0x69, 0x2e, 0x3b, 0x57, 0x6f, 0x2e, 0x3b, 0x44, 0x6f,
+0x2e, 0x3b, 0x56, 0x72, 0x2e, 0x3b, 0x53, 0x61, 0x2e, 0x53, 0x3b, 0x4d,
+0x3b, 0x44, 0x3b, 0x57, 0x3b, 0x44, 0x3b, 0x56, 0x3b, 0x53, 0x74, 0x73,
+0x75, 0x294, 0x6e, 0x74, 0x73, 0x268, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75,
+0x6b, 0x70, 0xe0, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, 0x67, 0x68, 0x254,
+0x65, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, 0x74, 0x254, 0x300, 0x6d, 0x6c,
+0xf2, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, 0x6d, 0xe8, 0x3b, 0x74, 0x73,
+0x75, 0x294, 0x75, 0x67, 0x68, 0x268, 0x302, 0x6d, 0x3b, 0x74, 0x73, 0x75,
+0x294, 0x6e, 0x64, 0x7a, 0x268, 0x6b, 0x254, 0x294, 0x254, 0x6e, 0x74, 0x73,
+0x3b, 0x6b, 0x70, 0x61, 0x3b, 0x67, 0x68, 0x254, 0x3b, 0x74, 0x254, 0x6d,
+0x3b, 0x75, 0x6d, 0x65, 0x3b, 0x67, 0x68, 0x268, 0x3b, 0x64, 0x7a, 0x6b,
+0x6e, 0x3b, 0x6b, 0x3b, 0x67, 0x3b, 0x74, 0x3b, 0x75, 0x3b, 0x67, 0x3b,
+0x64, 0x4b, 0x77, 0x65, 0x73, 0x69, 0x64, 0x61, 0x3b, 0x44, 0x77, 0x6f,
+0x77, 0x64, 0x61, 0x3b, 0x42, 0x65, 0x6e, 0x61, 0x64, 0x61, 0x3b, 0x57,
+0x75, 0x6b, 0x75, 0x64, 0x61, 0x3b, 0x59, 0x61, 0x77, 0x64, 0x61, 0x3b,
+0x46, 0x69, 0x64, 0x61, 0x3b, 0x4d, 0x65, 0x6d, 0x65, 0x6e, 0x65, 0x64,
+0x61, 0x4b, 0x77, 0x65, 0x3b, 0x44, 0x77, 0x6f, 0x3b, 0x42, 0x65, 0x6e,
+0x3b, 0x57, 0x75, 0x6b, 0x3b, 0x59, 0x61, 0x77, 0x3b, 0x46, 0x69, 0x61,
+0x3b, 0x4d, 0x65, 0x6d, 0x4b, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x57, 0x3b,
+0x59, 0x3b, 0x46, 0x3b, 0x4d, 0x65, 0x20, 0x64, 0x69, 0x65, 0x6c, 0x3b,
+0x65, 0x20, 0x68, 0xeb, 0x6e, 0xeb, 0x3b, 0x65, 0x20, 0x6d, 0x61, 0x72,
+0x74, 0xeb, 0x3b, 0x65, 0x20, 0x6d, 0xeb, 0x72, 0x6b, 0x75, 0x72, 0xeb,
+0x3b, 0x65, 0x20, 0x65, 0x6e, 0x6a, 0x74, 0x65, 0x3b, 0x65, 0x20, 0x70,
+0x72, 0x65, 0x6d, 0x74, 0x65, 0x3b, 0x65, 0x20, 0x73, 0x68, 0x74, 0x75,
+0x6e, 0xeb, 0x64, 0x69, 0x65, 0x3b, 0x68, 0xeb, 0x6e, 0x3b, 0x6d, 0x61,
+0x72, 0x3b, 0x6d, 0xeb, 0x72, 0x3b, 0x65, 0x6e, 0x6a, 0x3b, 0x70, 0x72,
+0x65, 0x3b, 0x73, 0x68, 0x74, 0x64, 0x3b, 0x68, 0x3b, 0x6d, 0x3b, 0x6d,
+0x3b, 0x65, 0x3b, 0x70, 0x3b, 0x73, 0x68, 0x12a5, 0x1211, 0x12f5, 0x3b, 0x1230,
+0x129e, 0x3b, 0x121b, 0x12ad, 0x1230, 0x129e, 0x3b, 0x1228, 0x1261, 0x12d5, 0x3b, 0x1210,
+0x1219, 0x1235, 0x3b, 0x12d3, 0x122d, 0x1265, 0x3b, 0x1245, 0x12f3, 0x121c, 0x12a5, 0x1211,
+0x12f5, 0x3b, 0x1230, 0x129e, 0x3b, 0x121b, 0x12ad, 0x1230, 0x3b, 0x1228, 0x1261, 0x12d5,
+0x3b, 0x1210, 0x1219, 0x1235, 0x3b, 0x12d3, 0x122d, 0x1265, 0x3b, 0x1245, 0x12f3, 0x121c,
+0x12a5, 0x3b, 0x1230, 0x3b, 0x121b, 0x3b, 0x1228, 0x3b, 0x1210, 0x3b, 0x12d3, 0x3b,
+0x1245, 0x627, 0x644, 0x623, 0x62d, 0x62f, 0x3b, 0x627, 0x644, 0x627, 0x62b, 0x646,
+0x64a, 0x646, 0x3b, 0x627, 0x644, 0x62b, 0x644, 0x627, 0x62b, 0x627, 0x621, 0x3b,
+0x627, 0x644, 0x623, 0x631, 0x628, 0x639, 0x627, 0x621, 0x3b, 0x627, 0x644, 0x62e,
+0x645, 0x64a, 0x633, 0x3b, 0x627, 0x644, 0x62c, 0x645, 0x639, 0x629, 0x3b, 0x627,
+0x644, 0x633, 0x628, 0x62a, 0x62d, 0x3b, 0x646, 0x3b, 0x62b, 0x3b, 0x631, 0x3b,
+0x62e, 0x3b, 0x62c, 0x3b, 0x633, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x63, 0x68,
+0x65, 0x3b, 0x6c, 0x75, 0x6e, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x7a,
+0x3b, 0x6d, 0x69, 0x65, 0x72, 0x63, 0x72, 0x65, 0x73, 0x3b, 0x63, 0x68,
+0x75, 0x65, 0x76, 0x65, 0x73, 0x3b, 0x76, 0x69, 0x65, 0x72, 0x6e, 0x65,
+0x73, 0x3b, 0x73, 0x61, 0x62, 0x61, 0x64, 0x6f, 0x64, 0x6f, 0x6d, 0x3b,
+0x6c, 0x75, 0x6e, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d, 0x69, 0x65, 0x3b,
+0x63, 0x68, 0x75, 0x3b, 0x76, 0x69, 0x65, 0x3b, 0x73, 0x61, 0x62, 0x44,
+0x3b, 0x4c, 0x3b, 0x4d, 0x61, 0x3b, 0x4d, 0x69, 0x3b, 0x43, 0x68, 0x3b,
+0x56, 0x3b, 0x53, 0x56f, 0x56b, 0x580, 0x561, 0x56f, 0x56b, 0x3b, 0x565, 0x580,
+0x56f, 0x578, 0x582, 0x577, 0x561, 0x562, 0x569, 0x56b, 0x3b, 0x565, 0x580, 0x565,
+0x584, 0x577, 0x561, 0x562, 0x569, 0x56b, 0x3b, 0x579, 0x578, 0x580, 0x565, 0x584,
+0x577, 0x561, 0x562, 0x569, 0x56b, 0x3b, 0x570, 0x56b, 0x576, 0x563, 0x577, 0x561,
+0x562, 0x569, 0x56b, 0x3b, 0x578, 0x582, 0x580, 0x562, 0x561, 0x569, 0x3b, 0x577,
+0x561, 0x562, 0x561, 0x569, 0x56f, 0x56b, 0x580, 0x3b, 0x565, 0x580, 0x56f, 0x3b,
+0x565, 0x580, 0x584, 0x3b, 0x579, 0x580, 0x584, 0x3b, 0x570, 0x576, 0x563, 0x3b,
+0x578, 0x582, 0x580, 0x3b, 0x577, 0x562, 0x569, 0x53f, 0x3b, 0x535, 0x3b, 0x535,
+0x3b, 0x549, 0x3b, 0x540, 0x3b, 0x548, 0x3b, 0x547, 0x9a6, 0x9c7, 0x993, 0x9ac,
+0x9be, 0x9f0, 0x3b, 0x9b8, 0x9cb, 0x9ae, 0x9ac, 0x9be, 0x9f0, 0x3b, 0x9ae, 0x999,
+0x9cd, 0x997, 0x9b2, 0x9ac, 0x9be, 0x9f0, 0x3b, 0x9ac, 0x9c1, 0x9a7, 0x9ac, 0x9be,
+0x9f0, 0x3b, 0x9ac, 0x9c3, 0x9b9, 0x9b8, 0x9cd, 0x9aa, 0x9a4, 0x9bf, 0x9ac, 0x9be,
+0x9f0, 0x3b, 0x9b6, 0x9c1, 0x995, 0x9cd, 0x9f0, 0x9ac, 0x9be, 0x9f0, 0x3b, 0x9b6,
+0x9a8, 0x9bf, 0x9ac, 0x9be, 0x9f0, 0x9a6, 0x9c7, 0x993, 0x3b, 0x9b8, 0x9cb, 0x9ae,
+0x3b, 0x9ae, 0x999, 0x9cd, 0x997, 0x9b2, 0x3b, 0x9ac, 0x9c1, 0x9a7, 0x3b, 0x9ac,
+0x9c3, 0x9b9, 0x3b, 0x9b6, 0x9c1, 0x995, 0x9cd, 0x9f0, 0x3b, 0x9b6, 0x9a8, 0x9bf,
+0x9a6, 0x3b, 0x9b8, 0x3b, 0x9ae, 0x3b, 0x9ac, 0x3b, 0x9ac, 0x3b, 0x9b6, 0x3b,
+0x9b6, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x6c, 0x6c, 0x75,
+0x6e, 0x65, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x6d,
+0x69, 0xe9, 0x72, 0x63, 0x6f, 0x6c, 0x65, 0x73, 0x3b, 0x78, 0x75, 0x65,
+0x76, 0x65, 0x73, 0x3b, 0x76, 0x69, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x3b,
+0x73, 0xe1, 0x62, 0x61, 0x64, 0x75, 0x64, 0x6f, 0x6d, 0x3b, 0x6c, 0x6c,
+0x75, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d, 0x69, 0xe9, 0x3b, 0x78, 0x75,
+0x65, 0x3b, 0x76, 0x69, 0x65, 0x3b, 0x73, 0xe1, 0x62, 0x44, 0x3b, 0x4c,
+0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x58, 0x3b, 0x56, 0x3b, 0x53, 0x4a, 0x75,
+0x6d, 0x61, 0x70, 0x69, 0x6c, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74,
+0x61, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b,
+0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x68,
+0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61,
+0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x4a, 0x70, 0x69,
+0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6e, 0x6e, 0x3b, 0x4a, 0x74, 0x6e,
+0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x6d, 0x3b, 0x4a, 0x6d, 0x6f,
+0x4a, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x49, 0x3b,
+0x4a, 0x57, 0x61, 0x69, 0x20, 0x59, 0x6f, 0x6b, 0x61, 0x20, 0x42, 0x61,
+0x77, 0x61, 0x69, 0x3b, 0x57, 0x61, 0x69, 0x20, 0x54, 0x75, 0x6e, 0x67,
+0x61, 0x3b, 0x54, 0x6f, 0x6b, 0x69, 0x20, 0x47, 0x69, 0x74, 0x75, 0x6e,
+0x67, 0x3b, 0x54, 0x73, 0x61, 0x6d, 0x20, 0x4b, 0x61, 0x73, 0x75, 0x77,
+0x61, 0x3b, 0x57, 0x61, 0x69, 0x20, 0x4e, 0x61, 0x20, 0x4e, 0x61, 0x73,
+0x3b, 0x57, 0x61, 0x69, 0x20, 0x4e, 0x61, 0x20, 0x54, 0x69, 0x79, 0x6f,
+0x6e, 0x3b, 0x57, 0x61, 0x69, 0x20, 0x4e, 0x61, 0x20, 0x43, 0x68, 0x69,
+0x72, 0x69, 0x6d, 0x59, 0x6f, 0x6b, 0x3b, 0x54, 0x75, 0x6e, 0x67, 0x3b,
+0x47, 0x69, 0x74, 0x75, 0x6e, 0x67, 0x3b, 0x54, 0x73, 0x61, 0x6e, 0x3b,
+0x4e, 0x61, 0x73, 0x3b, 0x4e, 0x61, 0x74, 0x3b, 0x43, 0x68, 0x69, 0x72,
+0x62, 0x61, 0x7a, 0x61, 0x72, 0x3b, 0x62, 0x61, 0x7a, 0x61, 0x72, 0x20,
+0x65, 0x72, 0x74, 0x259, 0x73, 0x69, 0x3b, 0xe7, 0x259, 0x72, 0x15f, 0x259,
+0x6e, 0x62, 0x259, 0x20, 0x61, 0x78, 0x15f, 0x61, 0x6d, 0x131, 0x3b, 0xe7,
+0x259, 0x72, 0x15f, 0x259, 0x6e, 0x62, 0x259, 0x3b, 0x63, 0xfc, 0x6d, 0x259,
+0x20, 0x61, 0x78, 0x15f, 0x61, 0x6d, 0x131, 0x3b, 0x63, 0xfc, 0x6d, 0x259,
+0x3b, 0x15f, 0x259, 0x6e, 0x62, 0x259, 0x42, 0x2e, 0x3b, 0x42, 0x2e, 0x45,
+0x2e, 0x3b, 0xc7, 0x2e, 0x41, 0x2e, 0x3b, 0xc7, 0x2e, 0x3b, 0x43, 0x2e,
+0x41, 0x2e, 0x3b, 0x43, 0x2e, 0x3b, 0x15e, 0x2e, 0x42, 0x2e, 0x3b, 0x42,
+0x2e, 0x65, 0x2e, 0x3b, 0xc7, 0x2e, 0x61, 0x2e, 0x3b, 0xc7, 0x2e, 0x3b,
+0x43, 0x2e, 0x61, 0x2e, 0x3b, 0x43, 0x2e, 0x3b, 0x15e, 0x2e, 0x431, 0x430,
+0x437, 0x430, 0x440, 0x3b, 0x431, 0x430, 0x437, 0x430, 0x440, 0x20, 0x435, 0x440,
+0x442, 0x4d9, 0x441, 0x438, 0x3b, 0x447, 0x4d9, 0x440, 0x448, 0x4d9, 0x43d, 0x431,
+0x4d9, 0x20, 0x430, 0x445, 0x448, 0x430, 0x43c, 0x44b, 0x3b, 0x447, 0x4d9, 0x440,
+0x448, 0x4d9, 0x43d, 0x431, 0x4d9, 0x3b, 0x4b9, 0x4af, 0x43c, 0x4d9, 0x20, 0x430,
+0x445, 0x448, 0x430, 0x43c, 0x44b, 0x3b, 0x4b9, 0x4af, 0x43c, 0x4d9, 0x3b, 0x448,
+0x4d9, 0x43d, 0x431, 0x4d9, 0x411, 0x2e, 0x3b, 0x411, 0x2e, 0x415, 0x2e, 0x3b,
+0x427, 0x2e, 0x410, 0x2e, 0x3b, 0x427, 0x2e, 0x3b, 0x4b8, 0x2e, 0x410, 0x2e,
+0x3b, 0x4b8, 0x2e, 0x3b, 0x428, 0x2e, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x1dd,
+0x3b, 0x6c, 0x1dd, 0x6e, 0x64, 0xed, 0x3b, 0x6d, 0x61, 0x61, 0x64, 0xed,
+0x3b, 0x6d, 0x25b, 0x6b, 0x72, 0x25b, 0x64, 0xed, 0x3b, 0x6a, 0x1dd, 0x1dd,
+0x64, 0xed, 0x3b, 0x6a, 0xfa, 0x6d, 0x62, 0xe1, 0x3b, 0x73, 0x61, 0x6d,
+0x64, 0xed, 0x73, 0x254, 0x301, 0x6e, 0x3b, 0x6c, 0x1dd, 0x6e, 0x3b, 0x6d,
+0x61, 0x61, 0x3b, 0x6d, 0x25b, 0x6b, 0x3b, 0x6a, 0x1dd, 0x1dd, 0x3b, 0x6a,
+0xfa, 0x6d, 0x3b, 0x73, 0x61, 0x6d, 0x73, 0x3b, 0x6c, 0x3b, 0x6d, 0x3b,
+0x6d, 0x3b, 0x6a, 0x3b, 0x6a, 0x3b, 0x73, 0x6b, 0x61, 0x72, 0x69, 0x3b,
+0x6e, 0x74, 0x25b, 0x6e, 0x25b, 0x3b, 0x74, 0x61, 0x72, 0x61, 0x74, 0x61,
+0x3b, 0x61, 0x72, 0x61, 0x62, 0x61, 0x3b, 0x61, 0x6c, 0x61, 0x6d, 0x69,
+0x73, 0x61, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x73, 0x69, 0x62, 0x69,
+0x72, 0x69, 0x6b, 0x61, 0x72, 0x3b, 0x6e, 0x74, 0x25b, 0x3b, 0x74, 0x61,
+0x72, 0x3b, 0x61, 0x72, 0x61, 0x3b, 0x61, 0x6c, 0x61, 0x3b, 0x6a, 0x75,
+0x6d, 0x3b, 0x73, 0x69, 0x62, 0x4b, 0x3b, 0x4e, 0x3b, 0x54, 0x3b, 0x41,
+0x3b, 0x41, 0x3b, 0x4a, 0x3b, 0x53, 0x9b0, 0x9ac, 0x9bf, 0x9ac, 0x9be, 0x9b0,
+0x3b, 0x9b8, 0x9cb, 0x9ae, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9ae, 0x999, 0x9cd, 0x997,
+0x9b2, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9ac, 0x9c1, 0x9a7, 0x9ac, 0x9be, 0x9b0, 0x3b,
+0x9ac, 0x9c3, 0x9b9, 0x9b8, 0x9cd, 0x9aa, 0x9a4, 0x9bf, 0x9ac, 0x9be, 0x9b0, 0x3b,
+0x9b6, 0x9c1, 0x995, 0x9cd, 0x9b0, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9b6, 0x9a8, 0x9bf,
+0x9ac, 0x9be, 0x9b0, 0x9b0, 0x9ac, 0x9bf, 0x3b, 0x9b8, 0x9cb, 0x9ae, 0x3b, 0x9ae,
+0x999, 0x9cd, 0x997, 0x9b2, 0x3b, 0x9ac, 0x9c1, 0x9a7, 0x3b, 0x9ac, 0x9c3, 0x9b9,
+0x9b8, 0x9cd, 0x9aa, 0x9a4, 0x9bf, 0x3b, 0x9b6, 0x9c1, 0x995, 0x9cd, 0x9b0, 0x3b,
+0x9b6, 0x9a8, 0x9bf, 0x9b0, 0x3b, 0x9b8, 0x9cb, 0x3b, 0x9ae, 0x3b, 0x9ac, 0x9c1,
+0x3b, 0x9ac, 0x9c3, 0x3b, 0x9b6, 0x9c1, 0x3b, 0x9b6, 0x14b, 0x67, 0x77, 0xe0,
+0x20, 0x6e, 0x254, 0x302, 0x79, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6e,
+0x6a, 0x61, 0x14b, 0x67, 0x75, 0x6d, 0x62, 0x61, 0x3b, 0x14b, 0x67, 0x77,
+0xe0, 0x20, 0xfb, 0x6d, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x14b, 0x67,
+0xea, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6d, 0x62, 0x254, 0x6b, 0x3b,
+0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6b, 0x254, 0x254, 0x3b, 0x14b, 0x67, 0x77,
+0xe0, 0x20, 0x6a, 0xf4, 0x6e, 0x6e, 0x254, 0x79, 0x3b, 0x6e, 0x6a, 0x61,
+0x3b, 0x75, 0x75, 0x6d, 0x3b, 0x14b, 0x67, 0x65, 0x3b, 0x6d, 0x62, 0x254,
+0x3b, 0x6b, 0x254, 0x254, 0x3b, 0x6a, 0x6f, 0x6e, 0x6e, 0x3b, 0x6e, 0x3b,
+0x75, 0x3b, 0x14b, 0x3b, 0x6d, 0x3b, 0x6b, 0x3b, 0x6a, 0x69, 0x67, 0x61,
+0x6e, 0x64, 0x65, 0x61, 0x3b, 0x61, 0x73, 0x74, 0x65, 0x6c, 0x65, 0x68,
+0x65, 0x6e, 0x61, 0x3b, 0x61, 0x73, 0x74, 0x65, 0x61, 0x72, 0x74, 0x65,
+0x61, 0x3b, 0x61, 0x73, 0x74, 0x65, 0x61, 0x7a, 0x6b, 0x65, 0x6e, 0x61,
+0x3b, 0x6f, 0x73, 0x74, 0x65, 0x67, 0x75, 0x6e, 0x61, 0x3b, 0x6f, 0x73,
+0x74, 0x69, 0x72, 0x61, 0x6c, 0x61, 0x3b, 0x6c, 0x61, 0x72, 0x75, 0x6e,
+0x62, 0x61, 0x74, 0x61, 0x69, 0x67, 0x2e, 0x3b, 0x61, 0x6c, 0x2e, 0x3b,
+0x61, 0x72, 0x2e, 0x3b, 0x61, 0x7a, 0x2e, 0x3b, 0x6f, 0x67, 0x2e, 0x3b,
+0x6f, 0x72, 0x2e, 0x3b, 0x6c, 0x72, 0x2e, 0x49, 0x3b, 0x41, 0x3b, 0x41,
+0x3b, 0x41, 0x3b, 0x4f, 0x3b, 0x4f, 0x3b, 0x4c, 0x43d, 0x44f, 0x434, 0x437,
+0x435, 0x43b, 0x44f, 0x3b, 0x43f, 0x430, 0x43d, 0x44f, 0x434, 0x437, 0x435, 0x43b,
+0x430, 0x43a, 0x3b, 0x430, 0x45e, 0x442, 0x43e, 0x440, 0x430, 0x43a, 0x3b, 0x441,
+0x435, 0x440, 0x430, 0x434, 0x430, 0x3b, 0x447, 0x430, 0x446, 0x432, 0x435, 0x440,
+0x3b, 0x43f, 0x44f, 0x442, 0x43d, 0x456, 0x446, 0x430, 0x3b, 0x441, 0x443, 0x431,
+0x43e, 0x442, 0x430, 0x43d, 0x434, 0x3b, 0x43f, 0x43d, 0x3b, 0x430, 0x45e, 0x3b,
+0x441, 0x440, 0x3b, 0x447, 0x446, 0x3b, 0x43f, 0x442, 0x3b, 0x441, 0x431, 0x43d,
+0x3b, 0x43f, 0x3b, 0x430, 0x3b, 0x441, 0x3b, 0x447, 0x3b, 0x43f, 0x3b, 0x441,
+0x50, 0x61, 0x20, 0x4d, 0x75, 0x6c, 0x75, 0x6e, 0x67, 0x75, 0x3b, 0x50,
+0x61, 0x6c, 0x69, 0x63, 0x68, 0x69, 0x6d, 0x6f, 0x3b, 0x50, 0x61, 0x6c,
+0x69, 0x63, 0x68, 0x69, 0x62, 0x75, 0x6c, 0x69, 0x3b, 0x50, 0x61, 0x6c,
+0x69, 0x63, 0x68, 0x69, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x50, 0x61, 0x6c,
+0x69, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x3b, 0x50, 0x61, 0x6c, 0x69, 0x63,
+0x68, 0x69, 0x73, 0x61, 0x6e, 0x6f, 0x3b, 0x50, 0x61, 0x63, 0x68, 0x69,
+0x62, 0x65, 0x6c, 0x75, 0x73, 0x68, 0x69, 0x70, 0x61, 0x20, 0x6d, 0x75,
+0x6c, 0x75, 0x6e, 0x67, 0x75, 0x3b, 0x70, 0x61, 0x20, 0x73, 0x68, 0x61,
+0x68, 0x75, 0x76, 0x69, 0x6c, 0x75, 0x68, 0x61, 0x3b, 0x70, 0x61, 0x20,
+0x68, 0x69, 0x76, 0x69, 0x6c, 0x69, 0x3b, 0x70, 0x61, 0x20, 0x68, 0x69,
+0x64, 0x61, 0x74, 0x75, 0x3b, 0x70, 0x61, 0x20, 0x68, 0x69, 0x74, 0x61,
+0x79, 0x69, 0x3b, 0x70, 0x61, 0x20, 0x68, 0x69, 0x68, 0x61, 0x6e, 0x75,
+0x3b, 0x70, 0x61, 0x20, 0x73, 0x68, 0x61, 0x68, 0x75, 0x6c, 0x65, 0x6d,
+0x62, 0x65, 0x6c, 0x61, 0x4d, 0x75, 0x6c, 0x3b, 0x56, 0x69, 0x6c, 0x3b,
+0x48, 0x69, 0x76, 0x3b, 0x48, 0x69, 0x64, 0x3b, 0x48, 0x69, 0x74, 0x3b,
+0x48, 0x69, 0x68, 0x3b, 0x4c, 0x65, 0x6d, 0x4d, 0x3b, 0x4a, 0x3b, 0x48,
+0x3b, 0x48, 0x3b, 0x48, 0x3b, 0x57, 0x3b, 0x4a, 0x930, 0x92c, 0x940, 0x92c,
+0x93e, 0x930, 0x3b, 0x938, 0x94b, 0x92e, 0x92c, 0x93e, 0x930, 0x3b, 0x92e, 0x902,
+0x917, 0x932, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x941, 0x927, 0x92c, 0x93e, 0x930,
+0x3b, 0x92c, 0x943, 0x939, 0x938, 0x94d, 0x92a, 0x924, 0x93f, 0x92c, 0x93e, 0x930,
+0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x928,
+0x940, 0x91a, 0x930, 0x1230, 0x1295, 0x1260, 0x122d, 0x20, 0x1245, 0x12f3, 0x12c5, 0x3b,
+0x1230, 0x1291, 0x3b, 0x1230, 0x120a, 0x131d, 0x3b, 0x1208, 0x1313, 0x20, 0x12c8, 0x122a,
+0x20, 0x1208, 0x1265, 0x12cb, 0x3b, 0x12a3, 0x121d, 0x12f5, 0x3b, 0x12a3, 0x122d, 0x1265,
+0x3b, 0x1230, 0x1295, 0x1260, 0x122d, 0x20, 0x123d, 0x1313, 0x12c5, 0x1230, 0x2f, 0x1245,
+0x3b, 0x1230, 0x1291, 0x3b, 0x1230, 0x120a, 0x131d, 0x3b, 0x1208, 0x1313, 0x3b, 0x12a3,
+0x121d, 0x12f5, 0x3b, 0x12a3, 0x122d, 0x1265, 0x3b, 0x1230, 0x2f, 0x123d, 0x1230, 0x3b,
+0x1230, 0x3b, 0x1230, 0x3b, 0x1208, 0x3b, 0x12a3, 0x3b, 0x12a3, 0x3b, 0x1230, 0x930,
+0x92c, 0x93f, 0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x92e, 0x92c, 0x93e, 0x930, 0x3b,
+0x92e, 0x902, 0x917, 0x932, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x941, 0x927, 0x92c,
+0x93e, 0x930, 0x3b, 0x92c, 0x93f, 0x938, 0x94d, 0x925, 0x93f, 0x92c, 0x93e, 0x930,
+0x3b, 0x938, 0x941, 0x941, 0x916, 0x941, 0x930, 0x92c, 0x93e, 0x930, 0x3b, 0x938,
+0x928, 0x93f, 0x92c, 0x93e, 0x930, 0x930, 0x92c, 0x93f, 0x92c, 0x93e, 0x930, 0x3b,
+0x938, 0x92e, 0x92c, 0x93e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x92c, 0x93e,
+0x930, 0x3b, 0x92c, 0x941, 0x927, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x93f, 0x938,
+0x94d, 0x925, 0x93f, 0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x941, 0x916, 0x941, 0x930,
+0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x928, 0x93f, 0x92c, 0x93e, 0x930, 0x930, 0x92c,
+0x93f, 0x3b, 0x938, 0x92e, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x3b, 0x92c, 0x941,
+0x927, 0x3b, 0x92c, 0x93f, 0x938, 0x94d, 0x925, 0x93f, 0x3b, 0x938, 0x941, 0x916,
+0x941, 0x930, 0x3b, 0x938, 0x928, 0x93f, 0x930, 0x3b, 0x938, 0x3b, 0x92e, 0x902,
+0x3b, 0x92c, 0x941, 0x3b, 0x92c, 0x93f, 0x3b, 0x938, 0x941, 0x3b, 0x938, 0x6e,
+0x65, 0x64, 0x6a, 0x65, 0x6c, 0x6a, 0x61, 0x3b, 0x70, 0x6f, 0x6e, 0x65,
+0x64, 0x6a, 0x65, 0x6c, 0x6a, 0x61, 0x6b, 0x3b, 0x75, 0x74, 0x6f, 0x72,
+0x61, 0x6b, 0x3b, 0x73, 0x72, 0x69, 0x6a, 0x65, 0x64, 0x61, 0x3b, 0x10d,
+0x65, 0x74, 0x76, 0x72, 0x74, 0x61, 0x6b, 0x3b, 0x70, 0x65, 0x74, 0x61,
+0x6b, 0x3b, 0x73, 0x75, 0x62, 0x6f, 0x74, 0x61, 0x6e, 0x65, 0x64, 0x3b,
+0x70, 0x6f, 0x6e, 0x3b, 0x75, 0x74, 0x6f, 0x3b, 0x73, 0x72, 0x69, 0x3b,
+0x10d, 0x65, 0x74, 0x3b, 0x70, 0x65, 0x74, 0x3b, 0x73, 0x75, 0x62, 0x6e,
+0x3b, 0x70, 0x3b, 0x75, 0x3b, 0x73, 0x3b, 0x10d, 0x3b, 0x70, 0x3b, 0x73,
+0x4e, 0x3b, 0x50, 0x3b, 0x55, 0x3b, 0x53, 0x3b, 0x10c, 0x3b, 0x50, 0x3b,
+0x53, 0x43d, 0x435, 0x434, 0x458, 0x435, 0x459, 0x430, 0x3b, 0x43f, 0x43e, 0x43d,
+0x435, 0x434, 0x458, 0x435, 0x459, 0x430, 0x43a, 0x3b, 0x443, 0x442, 0x43e, 0x440,
+0x430, 0x43a, 0x3b, 0x441, 0x440, 0x438, 0x458, 0x435, 0x434, 0x430, 0x3b, 0x447,
+0x435, 0x442, 0x432, 0x440, 0x442, 0x430, 0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x430,
+0x43a, 0x3b, 0x441, 0x443, 0x431, 0x43e, 0x442, 0x430, 0x43d, 0x435, 0x434, 0x3b,
+0x43f, 0x43e, 0x43d, 0x3b, 0x443, 0x442, 0x43e, 0x3b, 0x441, 0x440, 0x438, 0x3b,
+0x447, 0x435, 0x442, 0x3b, 0x43f, 0x435, 0x442, 0x3b, 0x441, 0x443, 0x431, 0x43d,
+0x3b, 0x43f, 0x3b, 0x443, 0x3b, 0x441, 0x3b, 0x447, 0x3b, 0x43f, 0x3b, 0x441,
+0x53, 0x75, 0x6c, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x65, 0x75, 0x72,
+0x7a, 0x68, 0x3b, 0x4d, 0x65, 0x72, 0x63, 0x2bc, 0x68, 0x65, 0x72, 0x3b,
+0x59, 0x61, 0x6f, 0x75, 0x3b, 0x47, 0x77, 0x65, 0x6e, 0x65, 0x72, 0x3b,
+0x53, 0x61, 0x64, 0x6f, 0x72, 0x6e, 0x53, 0x75, 0x6c, 0x3b, 0x4c, 0x75,
+0x6e, 0x3b, 0x4d, 0x65, 0x75, 0x2e, 0x3b, 0x4d, 0x65, 0x72, 0x2e, 0x3b,
+0x59, 0x61, 0x6f, 0x75, 0x3b, 0x47, 0x77, 0x65, 0x2e, 0x3b, 0x53, 0x61,
+0x64, 0x2e, 0x53, 0x75, 0x3b, 0x4c, 0x3b, 0x4d, 0x7a, 0x3b, 0x4d, 0x63,
+0x3b, 0x59, 0x3b, 0x47, 0x3b, 0x53, 0x61, 0x43d, 0x435, 0x434, 0x435, 0x43b,
+0x44f, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x435, 0x43b, 0x43d, 0x438, 0x43a,
+0x3b, 0x432, 0x442, 0x43e, 0x440, 0x43d, 0x438, 0x43a, 0x3b, 0x441, 0x440, 0x44f,
+0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x44a, 0x440, 0x442, 0x44a, 0x43a,
+0x3b, 0x43f, 0x435, 0x442, 0x44a, 0x43a, 0x3b, 0x441, 0x44a, 0x431, 0x43e, 0x442,
+0x430, 0x43d, 0x434, 0x3b, 0x43f, 0x43d, 0x3b, 0x432, 0x442, 0x3b, 0x441, 0x440,
+0x3b, 0x447, 0x442, 0x3b, 0x43f, 0x442, 0x3b, 0x441, 0x431, 0x43d, 0x3b, 0x43f,
+0x3b, 0x432, 0x3b, 0x441, 0x3b, 0x447, 0x3b, 0x43f, 0x3b, 0x441, 0x1010, 0x1014,
+0x1004, 0x103a, 0x1039, 0x1002, 0x1014, 0x103d, 0x1031, 0x3b, 0x1010, 0x1014, 0x1004, 0x103a,
+0x1039, 0x101c, 0x102c, 0x3b, 0x1021, 0x1004, 0x103a, 0x1039, 0x1002, 0x102b, 0x3b, 0x1017,
+0x102f, 0x1012, 0x1039, 0x1013, 0x101f, 0x1030, 0x1038, 0x3b, 0x1000, 0x103c, 0x102c, 0x101e,
+0x1015, 0x1010, 0x1031, 0x1038, 0x3b, 0x101e, 0x1031, 0x102c, 0x1000, 0x103c, 0x102c, 0x3b,
+0x1005, 0x1014, 0x1031, 0x1010, 0x3b, 0x1010, 0x3b, 0x1021, 0x3b, 0x1017, 0x3b, 0x1000,
+0x3b, 0x101e, 0x3b, 0x1005, 0x661f, 0x671f, 0x65e5, 0x3b, 0x661f, 0x671f, 0x4e00, 0x3b,
+0x661f, 0x671f, 0x4e8c, 0x3b, 0x661f, 0x671f, 0x4e09, 0x3b, 0x661f, 0x671f, 0x56db, 0x3b,
+0x661f, 0x671f, 0x4e94, 0x3b, 0x661f, 0x671f, 0x516d, 0x65e5, 0x3b, 0x4e00, 0x3b, 0x4e8c,
+0x3b, 0x4e09, 0x3b, 0x56db, 0x3b, 0x4e94, 0x3b, 0x516d, 0x5468, 0x65e5, 0x3b, 0x5468,
+0x4e00, 0x3b, 0x5468, 0x4e8c, 0x3b, 0x5468, 0x4e09, 0x3b, 0x5468, 0x56db, 0x3b, 0x5468,
+0x4e94, 0x3b, 0x5468, 0x516d, 0x64, 0x69, 0x75, 0x6d, 0x65, 0x6e, 0x67, 0x65,
+0x3b, 0x64, 0x69, 0x6c, 0x6c, 0x75, 0x6e, 0x73, 0x3b, 0x64, 0x69, 0x6d,
+0x61, 0x72, 0x74, 0x73, 0x3b, 0x64, 0x69, 0x6d, 0x65, 0x63, 0x72, 0x65,
+0x73, 0x3b, 0x64, 0x69, 0x6a, 0x6f, 0x75, 0x73, 0x3b, 0x64, 0x69, 0x76,
+0x65, 0x6e, 0x64, 0x72, 0x65, 0x73, 0x3b, 0x64, 0x69, 0x73, 0x73, 0x61,
+0x62, 0x74, 0x65, 0x64, 0x67, 0x2e, 0x3b, 0x64, 0x6c, 0x2e, 0x3b, 0x64,
+0x74, 0x2e, 0x3b, 0x64, 0x63, 0x2e, 0x3b, 0x64, 0x6a, 0x2e, 0x3b, 0x64,
+0x76, 0x2e, 0x3b, 0x64, 0x73, 0x2e, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x67,
+0x6f, 0x3b, 0x4c, 0x75, 0x6e, 0x65, 0x73, 0x3b, 0x4d, 0x61, 0x72, 0x74,
+0x65, 0x73, 0x3b, 0x4d, 0x69, 0x79, 0x65, 0x72, 0x6b, 0x75, 0x6c, 0x65,
+0x73, 0x3b, 0x48, 0x75, 0x77, 0x65, 0x62, 0x65, 0x73, 0x3b, 0x42, 0x69,
+0x79, 0x65, 0x72, 0x6e, 0x65, 0x73, 0x3b, 0x53, 0x61, 0x62, 0x61, 0x64,
+0x6f, 0x44, 0x6f, 0x6d, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x72,
+0x3b, 0x4d, 0x69, 0x79, 0x3b, 0x48, 0x75, 0x77, 0x3b, 0x42, 0x69, 0x79,
+0x3b, 0x53, 0x61, 0x62, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b,
+0x48, 0x3b, 0x42, 0x3b, 0x53, 0x41, 0x73, 0x61, 0x6d, 0x61, 0x73, 0x3b,
+0x41, 0x79, 0x6e, 0x61, 0x73, 0x3b, 0x41, 0x73, 0x69, 0x6e, 0x61, 0x73,
+0x3b, 0x41, 0x6b, 0x72, 0x61, 0x73, 0x3b, 0x41, 0x6b, 0x77, 0x61, 0x73,
+0x3b, 0x41, 0x73, 0x69, 0x6d, 0x77, 0x61, 0x73, 0x3b, 0x41, 0x73, 0x69,
+0x1e0d, 0x79, 0x61, 0x73, 0x41, 0x73, 0x61, 0x3b, 0x41, 0x79, 0x6e, 0x3b,
+0x41, 0x73, 0x6e, 0x3b, 0x41, 0x6b, 0x72, 0x3b, 0x41, 0x6b, 0x77, 0x3b,
+0x41, 0x73, 0x6d, 0x3b, 0x41, 0x73, 0x1e0d, 0x41, 0x3b, 0x41, 0x3b, 0x41,
+0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x6cc, 0x6d5, 0x6a9, 0x634,
+0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x62f, 0x648, 0x648, 0x634, 0x6d5, 0x645, 0x645,
+0x6d5, 0x3b, 0x633, 0x6ce, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x686, 0x648,
+0x627, 0x631, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x67e, 0x6ce, 0x646, 0x62c,
+0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x6be, 0x6d5, 0x6cc, 0x646, 0x6cc, 0x3b,
+0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x6cc, 0x3b, 0x62f, 0x3b, 0x633, 0x3b, 0x686,
+0x3b, 0x67e, 0x3b, 0x6be, 0x3b, 0x634, 0xd804, 0xdd22, 0xd804, 0xdd27, 0xd804, 0xdd1d,
+0xd804, 0xdd28, 0xd804, 0xdd1d, 0xd804, 0xdd22, 0xd804, 0xdd34, 0x3b, 0xd804, 0xdd25, 0xd804,
+0xdd27, 0xd804, 0xdd1f, 0xd804, 0xdd34, 0xd804, 0xdd1d, 0xd804, 0xdd22, 0xd804, 0xdd34, 0x3b,
+0xd804, 0xdd1f, 0xd804, 0xdd27, 0xd804, 0xdd01, 0xd804, 0xdd09, 0xd804, 0xdd27, 0xd804, 0xdd23,
+0xd804, 0xdd34, 0xd804, 0xdd1d, 0xd804, 0xdd22, 0xd804, 0xdd34, 0x3b, 0xd804, 0xdd1d, 0xd804,
+0xdd2a, 0xd804, 0xdd16, 0xd804, 0xdd34, 0xd804, 0xdd1d, 0xd804, 0xdd22, 0xd804, 0xdd34, 0x3b,
+0xd804, 0xdd1d, 0xd804, 0xdd33, 0xd804, 0xdd22, 0xd804, 0xdd28, 0xd804, 0xdd25, 0xd804, 0xdd2a,
+0xd804, 0xdd1b, 0xd804, 0xdd34, 0xd804, 0xdd1d, 0xd804, 0xdd22, 0xd804, 0xdd34, 0x3b, 0xd804,
+0xdd25, 0xd804, 0xdd2a, 0xd804, 0xdd07, 0xd804, 0xdd34, 0xd804, 0xdd07, 0xd804, 0xdd2e, 0xd804,
+0xdd22, 0xd804, 0xdd34, 0xd804, 0xdd1d, 0xd804, 0xdd22, 0xd804, 0xdd34, 0x3b, 0xd804, 0xdd25,
+0xd804, 0xdd27, 0xd804, 0xdd1a, 0xd804, 0xdd28, 0xd804, 0xdd1d, 0xd804, 0xdd22, 0xd804, 0xdd34,
+0xd804, 0xdd22, 0xd804, 0xdd27, 0xd804, 0xdd1d, 0xd804, 0xdd28, 0x3b, 0xd804, 0xdd25, 0xd804,
+0xdd27, 0xd804, 0xdd1f, 0xd804, 0xdd34, 0x3b, 0xd804, 0xdd1f, 0xd804, 0xdd27, 0xd804, 0xdd01,
+0xd804, 0xdd09, 0xd804, 0xdd27, 0xd804, 0xdd23, 0xd804, 0xdd34, 0x3b, 0xd804, 0xdd1d, 0xd804,
+0xdd2a, 0xd804, 0xdd16, 0xd804, 0xdd34, 0x3b, 0xd804, 0xdd1d, 0xd804, 0xdd33, 0xd804, 0xdd22,
+0xd804, 0xdd28, 0xd804, 0xdd25, 0xd804, 0xdd2a, 0xd804, 0xdd1b, 0xd804, 0xdd34, 0x3b, 0xd804,
+0xdd25, 0xd804, 0xdd2a, 0xd804, 0xdd07, 0xd804, 0xdd34, 0xd804, 0xdd07, 0xd804, 0xdd2e, 0xd804,
+0xdd22, 0xd804, 0xdd34, 0x3b, 0xd804, 0xdd25, 0xd804, 0xdd27, 0xd804, 0xdd1a, 0xd804, 0xdd28,
+0xd804, 0xdd22, 0xd804, 0xdd27, 0x3b, 0xd804, 0xdd25, 0xd804, 0xdd27, 0x3b, 0xd804, 0xdd1f,
+0xd804, 0xdd27, 0x3b, 0xd804, 0xdd1d, 0xd804, 0xdd2a, 0x3b, 0xd804, 0xdd1d, 0xd804, 0xdd33,
+0xd804, 0xdd22, 0xd804, 0xdd28, 0x3b, 0xd804, 0xdd25, 0xd804, 0xdd2a, 0x3b, 0xd804, 0xdd25,
+0xd804, 0xdd27, 0x43a, 0x4c0, 0x438, 0x440, 0x430, 0x3b, 0x43e, 0x440, 0x448, 0x43e,
+0x442, 0x3b, 0x448, 0x438, 0x43d, 0x430, 0x440, 0x430, 0x3b, 0x43a, 0x445, 0x430,
+0x430, 0x440, 0x430, 0x3b, 0x435, 0x430, 0x440, 0x430, 0x3b, 0x43f, 0x4c0, 0x435,
+0x440, 0x430, 0x441, 0x43a, 0x430, 0x3b, 0x448, 0x443, 0x43e, 0x442, 0x43a, 0x4c0,
+0x438, 0x3b, 0x43e, 0x440, 0x3b, 0x448, 0x438, 0x3b, 0x43a, 0x445, 0x430, 0x3b,
+0x435, 0x430, 0x3b, 0x43f, 0x4c0, 0x435, 0x3b, 0x448, 0x443, 0x43e, 0x43a, 0x4c0,
+0x3b, 0x43e, 0x3b, 0x448, 0x3b, 0x43a, 0x445, 0x3b, 0x435, 0x3b, 0x43f, 0x4c0,
+0x3b, 0x448, 0x13a4, 0x13be, 0x13d9, 0x13d3, 0x13c6, 0x13cd, 0x13ac, 0x3b, 0x13a4, 0x13be,
+0x13d9, 0x13d3, 0x13c9, 0x13c5, 0x13af, 0x3b, 0x13d4, 0x13b5, 0x13c1, 0x13a2, 0x13a6, 0x3b,
+0x13e6, 0x13a2, 0x13c1, 0x13a2, 0x13a6, 0x3b, 0x13c5, 0x13a9, 0x13c1, 0x13a2, 0x13a6, 0x3b,
+0x13e7, 0x13be, 0x13a9, 0x13b6, 0x13cd, 0x13d7, 0x3b, 0x13a4, 0x13be, 0x13d9, 0x13d3, 0x13c8,
+0x13d5, 0x13be, 0x13c6, 0x13cd, 0x13ac, 0x3b, 0x13c9, 0x13c5, 0x13af, 0x3b, 0x13d4, 0x13b5,
+0x13c1, 0x3b, 0x13e6, 0x13a2, 0x13c1, 0x3b, 0x13c5, 0x13a9, 0x13c1, 0x3b, 0x13e7, 0x13be,
+0x13a9, 0x3b, 0x13c8, 0x13d5, 0x13be, 0x13c6, 0x3b, 0x13c9, 0x3b, 0x13d4, 0x3b, 0x13e6,
+0x3b, 0x13c5, 0x3b, 0x13e7, 0x3b, 0x13a4, 0x4e, 0x69, 0x74, 0x74, 0x61, 0x6b,
+0x20, 0x48, 0x6f, 0x6c, 0x6c, 0x6f, 0x2bc, 0x3b, 0x4d, 0x61, 0x6e, 0x74,
+0x69, 0x2bc, 0x3b, 0x43, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x2bc, 0x3b, 0x57,
+0x69, 0x6e, 0x73, 0x74, 0x69, 0x2bc, 0x3b, 0x53, 0x6f, 0x69, 0x73, 0x74,
+0x69, 0x2bc, 0x3b, 0x4e, 0x61, 0x6e, 0x6e, 0x61, 0x6c, 0x68, 0x63, 0x68,
+0x69, 0x66, 0x61, 0x2bc, 0x20, 0x4e, 0x69, 0x74, 0x74, 0x61, 0x6b, 0x3b,
+0x4e, 0x69, 0x74, 0x74, 0x61, 0x6b, 0x20, 0x48, 0x6f, 0x6c, 0x6c, 0x6f,
+0x2bc, 0x20, 0x4e, 0x61, 0x6b, 0x66, 0x69, 0x73, 0x68, 0x53, 0x61, 0x6e,
+0x64, 0x65, 0x3b, 0x4f, 0x72, 0x77, 0x6f, 0x6b, 0x75, 0x62, 0x61, 0x6e,
+0x7a, 0x61, 0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6b, 0x61, 0x62, 0x69, 0x72,
+0x69, 0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x61, 0x74,
+0x75, 0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x4f,
+0x72, 0x77, 0x61, 0x6b, 0x61, 0x74, 0x61, 0x61, 0x6e, 0x6f, 0x3b, 0x4f,
+0x72, 0x77, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x61, 0x67, 0x61, 0x53, 0x41,
+0x4e, 0x3b, 0x4f, 0x52, 0x4b, 0x3b, 0x4f, 0x4b, 0x42, 0x3b, 0x4f, 0x4b,
+0x53, 0x3b, 0x4f, 0x4b, 0x4e, 0x3b, 0x4f, 0x4b, 0x54, 0x3b, 0x4f, 0x4d,
+0x4b, 0x53, 0x3b, 0x4b, 0x3b, 0x52, 0x3b, 0x53, 0x3b, 0x4e, 0x3b, 0x54,
+0x3b, 0x4d, 0x9031, 0x65e5, 0x3b, 0x9031, 0x4e00, 0x3b, 0x9031, 0x4e8c, 0x3b, 0x9031,
+0x4e09, 0x3b, 0x9031, 0x56db, 0x3b, 0x9031, 0x4e94, 0x3b, 0x9031, 0x516d, 0x43d, 0x435,
+0x434, 0x463, 0x301, 0x43b, 0x467, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x463,
+0x301, 0x43b, 0x44c, 0x43d, 0x438, 0x43a, 0x44a, 0x3b, 0x432, 0x442, 0x43e, 0x301,
+0x440, 0x43d, 0x438, 0x43a, 0x44a, 0x3b, 0x441, 0x440, 0x435, 0x434, 0x430, 0x300,
+0x3b, 0x447, 0x435, 0x442, 0x432, 0x435, 0x440, 0x442, 0x43e, 0x301, 0x43a, 0x44a,
+0x3b, 0x43f, 0x467, 0x442, 0x43e, 0x301, 0x43a, 0x44a, 0x3b, 0x441, 0xa64b, 0x431,
+0x431, 0x461, 0x301, 0x442, 0x430, 0x43d, 0x434, 0x2de7, 0x487, 0x467, 0x3b, 0x43f,
+0x43d, 0x2de3, 0x435, 0x3b, 0x432, 0x442, 0x43e, 0x2dec, 0x487, 0x3b, 0x441, 0x440,
+0x2de3, 0x435, 0x3b, 0x447, 0x435, 0x2de6, 0x487, 0x3b, 0x43f, 0x467, 0x2de6, 0x487,
+0x3b, 0x441, 0xa64b, 0x2de0, 0x487, 0x41d, 0x3b, 0x41f, 0x3b, 0x412, 0x3b, 0x421,
+0x3b, 0x427, 0x3b, 0x41f, 0x3b, 0x421, 0x432, 0x44b, 0x440, 0x441, 0x430, 0x440,
+0x43d, 0x438, 0x43a, 0x443, 0x43d, 0x3b, 0x442, 0x443, 0x43d, 0x442, 0x438, 0x43a,
+0x443, 0x43d, 0x3b, 0x44b, 0x442, 0x43b, 0x430, 0x440, 0x438, 0x43a, 0x443, 0x43d,
+0x3b, 0x44e, 0x43d, 0x43a, 0x443, 0x43d, 0x3b, 0x43a, 0x4d7, 0x4ab, 0x43d, 0x435,
+0x440, 0x43d, 0x438, 0x43a, 0x443, 0x43d, 0x3b, 0x44d, 0x440, 0x43d, 0x435, 0x43a,
+0x443, 0x43d, 0x3b, 0x448, 0x4d1, 0x43c, 0x430, 0x442, 0x43a, 0x443, 0x43d, 0x432,
+0x44b, 0x440, 0x2e, 0x3b, 0x442, 0x443, 0x43d, 0x2e, 0x3b, 0x44b, 0x442, 0x43b,
+0x2e, 0x3b, 0x44e, 0x43d, 0x2e, 0x3b, 0x43a, 0x4d7, 0x4ab, 0x2e, 0x3b, 0x44d,
+0x440, 0x2e, 0x3b, 0x448, 0x4d1, 0x43c, 0x2e, 0x412, 0x3b, 0x422, 0x3b, 0x42b,
+0x3b, 0x42e, 0x3b, 0x41a, 0x3b, 0x42d, 0x3b, 0x428, 0x53, 0x75, 0x6e, 0x6e,
+0x64, 0x61, 0x61, 0x63, 0x68, 0x3b, 0x4d, 0x6f, 0x68, 0x6e, 0x64, 0x61,
+0x61, 0x63, 0x68, 0x3b, 0x44, 0x69, 0x6e, 0x6e, 0x73, 0x64, 0x61, 0x61,
+0x63, 0x68, 0x3b, 0x4d, 0x65, 0x74, 0x77, 0x6f, 0x63, 0x68, 0x3b, 0x44,
+0x75, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x64, 0x61, 0x61, 0x63, 0x68, 0x3b,
+0x46, 0x72, 0x69, 0x69, 0x64, 0x61, 0x61, 0x63, 0x68, 0x3b, 0x53, 0x61,
+0x6d, 0x73, 0x64, 0x61, 0x61, 0x63, 0x68, 0x53, 0x75, 0x2e, 0x3b, 0x4d,
+0x6f, 0x2e, 0x3b, 0x44, 0x69, 0x2e, 0x3b, 0x4d, 0x65, 0x2e, 0x3b, 0x44,
+0x75, 0x2e, 0x3b, 0x46, 0x72, 0x2e, 0x3b, 0x53, 0x61, 0x2e, 0x53, 0x3b,
+0x4d, 0x3b, 0x44, 0x3b, 0x4d, 0x3b, 0x44, 0x3b, 0x46, 0x3b, 0x53, 0x64,
+0x79, 0x20, 0x53, 0x75, 0x6c, 0x3b, 0x64, 0x79, 0x20, 0x4c, 0x75, 0x6e,
+0x3b, 0x64, 0x79, 0x20, 0x4d, 0x65, 0x75, 0x72, 0x74, 0x68, 0x3b, 0x64,
+0x79, 0x20, 0x4d, 0x65, 0x72, 0x68, 0x65, 0x72, 0x3b, 0x64, 0x79, 0x20,
+0x59, 0x6f, 0x77, 0x3b, 0x64, 0x79, 0x20, 0x47, 0x77, 0x65, 0x6e, 0x65,
+0x72, 0x3b, 0x64, 0x79, 0x20, 0x53, 0x61, 0x64, 0x6f, 0x72, 0x6e, 0x53,
+0x75, 0x6c, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x74, 0x68, 0x3b, 0x4d,
+0x68, 0x72, 0x3b, 0x59, 0x6f, 0x77, 0x3b, 0x47, 0x77, 0x65, 0x3b, 0x53,
+0x61, 0x64, 0x64, 0x75, 0x6d, 0x65, 0x6e, 0x69, 0x63, 0x61, 0x3b, 0x6c,
+0x75, 0x6e, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x69, 0x3b, 0x6d, 0x65,
+0x72, 0x63, 0x75, 0x72, 0x69, 0x3b, 0x67, 0x68, 0x6a, 0x6f, 0x76, 0x69,
+0x3b, 0x76, 0x65, 0x6e, 0x6e, 0x65, 0x72, 0x69, 0x3b, 0x73, 0x61, 0x62,
+0x62, 0x61, 0x74, 0x75, 0x64, 0x75, 0x6d, 0x2e, 0x3b, 0x6c, 0x75, 0x6e,
+0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x6d, 0x65, 0x72, 0x2e, 0x3b,
+0x67, 0x68, 0x6a, 0x2e, 0x3b, 0x76, 0x65, 0x6e, 0x2e, 0x3b, 0x73, 0x61,
+0x62, 0x2e, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x47, 0x3b,
+0x56, 0x3b, 0x53, 0x6e, 0x65, 0x64, 0x11b, 0x6c, 0x65, 0x3b, 0x70, 0x6f,
+0x6e, 0x64, 0x11b, 0x6c, 0xed, 0x3b, 0xfa, 0x74, 0x65, 0x72, 0xfd, 0x3b,
+0x73, 0x74, 0x159, 0x65, 0x64, 0x61, 0x3b, 0x10d, 0x74, 0x76, 0x72, 0x74,
+0x65, 0x6b, 0x3b, 0x70, 0xe1, 0x74, 0x65, 0x6b, 0x3b, 0x73, 0x6f, 0x62,
+0x6f, 0x74, 0x61, 0x6e, 0x65, 0x3b, 0x70, 0x6f, 0x3b, 0xfa, 0x74, 0x3b,
+0x73, 0x74, 0x3b, 0x10d, 0x74, 0x3b, 0x70, 0xe1, 0x3b, 0x73, 0x6f, 0x4e,
+0x3b, 0x50, 0x3b, 0xda, 0x3b, 0x53, 0x3b, 0x10c, 0x3b, 0x50, 0x3b, 0x53,
+0x73, 0xf8, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x6d, 0x61, 0x6e, 0x64, 0x61,
+0x67, 0x3b, 0x74, 0x69, 0x72, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x6f, 0x6e,
+0x73, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x6f, 0x72, 0x73, 0x64, 0x61, 0x67,
+0x3b, 0x66, 0x72, 0x65, 0x64, 0x61, 0x67, 0x3b, 0x6c, 0xf8, 0x72, 0x64,
+0x61, 0x67, 0x73, 0xf8, 0x6e, 0x2e, 0x3b, 0x6d, 0x61, 0x6e, 0x2e, 0x3b,
+0x74, 0x69, 0x72, 0x73, 0x2e, 0x3b, 0x6f, 0x6e, 0x73, 0x2e, 0x3b, 0x74,
+0x6f, 0x72, 0x73, 0x2e, 0x3b, 0x66, 0x72, 0x65, 0x2e, 0x3b, 0x6c, 0xf8,
+0x72, 0x2e, 0x53, 0x3b, 0x4d, 0x3b, 0x54, 0x3b, 0x4f, 0x3b, 0x54, 0x3b,
+0x46, 0x3b, 0x4c, 0x910, 0x924, 0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x94b, 0x92e,
+0x92c, 0x93e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x92c, 0x93e, 0x930, 0x3b,
+0x92c, 0x941, 0x927, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x940, 0x930, 0x92c, 0x93e,
+0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x92c, 0x93e, 0x930, 0x3b, 0x936,
+0x928, 0x93f, 0x92c, 0x93e, 0x930, 0x910, 0x924, 0x3b, 0x938, 0x94b, 0x92e, 0x3b,
+0x92e, 0x902, 0x917, 0x932, 0x3b, 0x92c, 0x941, 0x927, 0x3b, 0x92c, 0x940, 0x930,
+0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x3b, 0x936, 0x928, 0x93f, 0x910, 0x3b,
+0x938, 0x94b, 0x3b, 0x92e, 0x2e, 0x3b, 0x92c, 0x941, 0x2e, 0x3b, 0x92c, 0x940,
+0x2e, 0x3b, 0x936, 0x941, 0x2e, 0x3b, 0x936, 0x2e, 0x910, 0x2e, 0x3b, 0x938,
+0x94b, 0x2e, 0x3b, 0x92e, 0x2e, 0x3b, 0x92c, 0x941, 0x2e, 0x3b, 0x92c, 0x940,
+0x2e, 0x3b, 0x936, 0x941, 0x2e, 0x3b, 0x936, 0x2e, 0xe9, 0x74, 0x69, 0x3b,
+0x6d, 0x254, 0x301, 0x73, 0xfa, 0x3b, 0x6b, 0x77, 0x61, 0x73, 0xfa, 0x3b,
+0x6d, 0x75, 0x6b, 0x254, 0x301, 0x73, 0xfa, 0x3b, 0x14b, 0x67, 0x69, 0x73,
+0xfa, 0x3b, 0x257, 0xf3, 0x6e, 0x25b, 0x73, 0xfa, 0x3b, 0x65, 0x73, 0x61,
+0x253, 0x61, 0x73, 0xfa, 0xe9, 0x74, 0x3b, 0x6d, 0x254, 0x301, 0x73, 0x3b,
+0x6b, 0x77, 0x61, 0x3b, 0x6d, 0x75, 0x6b, 0x3b, 0x14b, 0x67, 0x69, 0x3b,
+0x257, 0xf3, 0x6e, 0x3b, 0x65, 0x73, 0x61, 0x65, 0x3b, 0x6d, 0x3b, 0x6b,
+0x3b, 0x6d, 0x3b, 0x14b, 0x3b, 0x257, 0x3b, 0x65, 0x7a, 0x6f, 0x6e, 0x64,
+0x61, 0x67, 0x3b, 0x6d, 0x61, 0x61, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x64,
+0x69, 0x6e, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x77, 0x6f, 0x65, 0x6e, 0x73,
+0x64, 0x61, 0x67, 0x3b, 0x64, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x64, 0x61,
+0x67, 0x3b, 0x76, 0x72, 0x69, 0x6a, 0x64, 0x61, 0x67, 0x3b, 0x7a, 0x61,
+0x74, 0x65, 0x72, 0x64, 0x61, 0x67, 0x7a, 0x6f, 0x3b, 0x6d, 0x61, 0x3b,
+0x64, 0x69, 0x3b, 0x77, 0x6f, 0x3b, 0x64, 0x6f, 0x3b, 0x76, 0x72, 0x3b,
+0x7a, 0x61, 0x5a, 0x3b, 0x4d, 0x3b, 0x44, 0x3b, 0x57, 0x3b, 0x44, 0x3b,
+0x56, 0x3b, 0x5a, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b,
+0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf58, 0xf72, 0xf42, 0xf0b, 0xf51, 0xf58, 0xf62,
+0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf63, 0xfb7, 0xf42, 0xf0b, 0xf54, 0xf0b,
+0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf55, 0xf74, 0xf62, 0xf0b, 0xf56, 0xf74, 0xf0b,
+0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf54, 0xf0b, 0xf66, 0xf44, 0xf66, 0xf0b, 0x3b,
+0xf42, 0xf5f, 0xf60, 0xf0b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0xf0b, 0xf54, 0xf0b, 0x3b,
+0xf42, 0xf5f, 0xf60, 0xf0b, 0xf49, 0xf72, 0xf0b, 0xf58, 0xf0b, 0xf5f, 0xfb3, 0xf0b,
+0x3b, 0xf58, 0xf72, 0xf62, 0xf0b, 0x3b, 0xf63, 0xfb7, 0xf42, 0xf0b, 0x3b, 0xf55,
+0xf74, 0xf62, 0xf0b, 0x3b, 0xf66, 0xf44, 0xf66, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xf7a,
+0xf53, 0xf0b, 0x3b, 0xf49, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0x3b, 0xf58, 0xf72, 0xf62,
+0x3b, 0xf63, 0xfb7, 0xf42, 0x3b, 0xf55, 0xf74, 0xf62, 0x3b, 0xf66, 0xf44, 0xfb6,
+0x3b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0x3b, 0xf49, 0xf72, 0x4b, 0x69, 0x75, 0x6d,
+0x69, 0x61, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75,
+0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x69, 0x6e, 0x65, 0x3b, 0x4e, 0x6a,
+0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x72, 0x61, 0x6d,
+0x69, 0x74, 0x68, 0x69, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b,
+0x4e, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x74, 0x68, 0x69, 0x69, 0x4b,
+0x6d, 0x61, 0x3b, 0x54, 0x61, 0x74, 0x3b, 0x49, 0x6e, 0x65, 0x3b, 0x54,
+0x61, 0x6e, 0x3b, 0x41, 0x72, 0x6d, 0x3b, 0x4d, 0x61, 0x61, 0x3b, 0x4e,
+0x4d, 0x4d, 0x4b, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x41, 0x3b,
+0x4d, 0x3b, 0x4e, 0xd801, 0xdc1d, 0xd801, 0xdc32, 0xd801, 0xdc4c, 0xd801, 0xdc3c, 0xd801,
+0xdc29, 0x3b, 0xd801, 0xdc23, 0xd801, 0xdc32, 0xd801, 0xdc4c, 0xd801, 0xdc3c, 0xd801, 0xdc29,
+0x3b, 0xd801, 0xdc13, 0xd801, 0xdc2d, 0xd801, 0xdc46, 0xd801, 0xdc3c, 0xd801, 0xdc29, 0x3b,
+0xd801, 0xdc0e, 0xd801, 0xdc2f, 0xd801, 0xdc4c, 0xd801, 0xdc46, 0xd801, 0xdc3c, 0xd801, 0xdc29,
+0x3b, 0xd801, 0xdc1b, 0xd801, 0xdc32, 0xd801, 0xdc49, 0xd801, 0xdc46, 0xd801, 0xdc3c, 0xd801,
+0xdc29, 0x3b, 0xd801, 0xdc19, 0xd801, 0xdc49, 0xd801, 0xdc34, 0xd801, 0xdc3c, 0xd801, 0xdc29,
+0x3b, 0xd801, 0xdc1d, 0xd801, 0xdc30, 0xd801, 0xdc3b, 0xd801, 0xdc32, 0xd801, 0xdc49, 0xd801,
+0xdc3c, 0xd801, 0xdc29, 0xd801, 0xdc1d, 0xd801, 0xdc32, 0xd801, 0xdc4c, 0x3b, 0xd801, 0xdc23,
+0xd801, 0xdc32, 0xd801, 0xdc4c, 0x3b, 0xd801, 0xdc13, 0xd801, 0xdc2d, 0xd801, 0xdc46, 0x3b,
+0xd801, 0xdc0e, 0xd801, 0xdc2f, 0xd801, 0xdc4c, 0x3b, 0xd801, 0xdc1b, 0xd801, 0xdc32, 0xd801,
+0xdc49, 0x3b, 0xd801, 0xdc19, 0xd801, 0xdc49, 0xd801, 0xdc34, 0x3b, 0xd801, 0xdc1d, 0xd801,
+0xdc30, 0xd801, 0xdc3b, 0xd801, 0xdc1d, 0x3b, 0xd801, 0xdc23, 0x3b, 0xd801, 0xdc13, 0x3b,
+0xd801, 0xdc0e, 0x3b, 0xd801, 0xdc1b, 0x3b, 0xd801, 0xdc19, 0x3b, 0xd801, 0xdc1d, 0x53,
+0x75, 0x2e, 0x3b, 0x4d, 0x2e, 0x3b, 0x54, 0x75, 0x2e, 0x3b, 0x57, 0x2e,
+0x3b, 0x54, 0x68, 0x2e, 0x3b, 0x46, 0x2e, 0x3b, 0x53, 0x61, 0x2e, 0xb7,
+0xd801, 0xdc55, 0xd801, 0xdc6d, 0xd801, 0xdc59, 0xd801, 0xdc5b, 0xd801, 0xdc71, 0x3b, 0xb7,
+0xd801, 0xdc65, 0xd801, 0xdc6d, 0xd801, 0xdc59, 0xd801, 0xdc5b, 0xd801, 0xdc71, 0x3b, 0xb7,
+0xd801, 0xdc51, 0xd801, 0xdc75, 0xd801, 0xdc5f, 0xd801, 0xdc5b, 0xd801, 0xdc71, 0x3b, 0xb7,
+0xd801, 0xdc62, 0xd801, 0xdc67, 0xd801, 0xdc59, 0xd801, 0xdc5f, 0xd801, 0xdc5b, 0xd801, 0xdc71,
+0x3b, 0xb7, 0xd801, 0xdc54, 0xd801, 0xdc7b, 0xd801, 0xdc5f, 0xd801, 0xdc5b, 0xd801, 0xdc71,
+0x3b, 0xb7, 0xd801, 0xdc53, 0xd801, 0xdc6e, 0xd801, 0xdc72, 0xd801, 0xdc5b, 0xd801, 0xdc71,
+0x3b, 0xb7, 0xd801, 0xdc55, 0xd801, 0xdc68, 0xd801, 0xdc5b, 0xd801, 0xdc7b, 0xd801, 0xdc5b,
+0xd801, 0xdc71, 0xb7, 0xd801, 0xdc55, 0xd801, 0xdc6d, 0x3b, 0xb7, 0xd801, 0xdc65, 0xd801,
+0xdc6d, 0x3b, 0xb7, 0xd801, 0xdc51, 0xd801, 0xdc75, 0x3b, 0xb7, 0xd801, 0xdc62, 0xd801,
+0xdc67, 0x3b, 0xb7, 0xd801, 0xdc54, 0xd801, 0xdc7b, 0x3b, 0xb7, 0xd801, 0xdc53, 0xd801,
+0xdc6e, 0x3b, 0xb7, 0xd801, 0xdc55, 0xd801, 0xdc68, 0xd801, 0xdc55, 0x3b, 0xd801, 0xdc65,
+0x3b, 0xd801, 0xdc51, 0x3b, 0xd801, 0xdc62, 0x3b, 0xd801, 0xdc54, 0x3b, 0xd801, 0xdc53,
+0x3b, 0xd801, 0xdc55, 0x442, 0x430, 0x440, 0x433, 0x43e, 0x447, 0x438, 0x3b, 0x430,
+0x442, 0x44f, 0x43d, 0x44c, 0x447, 0x438, 0x3b, 0x432, 0x430, 0x441, 0x442, 0x430,
+0x43d, 0x44c, 0x447, 0x438, 0x3b, 0x43a, 0x443, 0x43d, 0x448, 0x43a, 0x430, 0x447,
+0x438, 0x3b, 0x43a, 0x430, 0x43b, 0x43e, 0x43d, 0x44c, 0x447, 0x438, 0x3b, 0x441,
+0x44e, 0x43a, 0x43e, 0x43d, 0x44c, 0x447, 0x438, 0x3b, 0x448, 0x43b, 0x44f, 0x43c,
+0x43e, 0x447, 0x438, 0x442, 0x430, 0x440, 0x433, 0x43e, 0x447, 0x438, 0x441, 0x442,
+0x44d, 0x3b, 0x430, 0x442, 0x44f, 0x43d, 0x44c, 0x447, 0x438, 0x441, 0x442, 0x44d,
+0x3b, 0x432, 0x430, 0x441, 0x442, 0x430, 0x43d, 0x44c, 0x447, 0x438, 0x441, 0x442,
+0x44d, 0x3b, 0x43a, 0x443, 0x43d, 0x448, 0x43a, 0x430, 0x447, 0x438, 0x441, 0x442,
+0x44d, 0x3b, 0x43a, 0x430, 0x43b, 0x43e, 0x43d, 0x44c, 0x447, 0x438, 0x441, 0x442,
+0x44d, 0x3b, 0x441, 0x44e, 0x43a, 0x43e, 0x43d, 0x44c, 0x447, 0x438, 0x441, 0x442,
+0x44d, 0x3b, 0x448, 0x43b, 0x44f, 0x43c, 0x43e, 0x447, 0x438, 0x441, 0x442, 0x44d,
+0x442, 0x430, 0x440, 0x3b, 0x430, 0x442, 0x44f, 0x3b, 0x432, 0x430, 0x441, 0x3b,
+0x43a, 0x443, 0x43d, 0x3b, 0x43a, 0x430, 0x43b, 0x3b, 0x441, 0x44e, 0x43a, 0x3b,
+0x448, 0x43b, 0x44f, 0x64, 0x69, 0x6d, 0x61, 0x6e, 0x109, 0x6f, 0x3b, 0x6c,
+0x75, 0x6e, 0x64, 0x6f, 0x3b, 0x6d, 0x61, 0x72, 0x64, 0x6f, 0x3b, 0x6d,
+0x65, 0x72, 0x6b, 0x72, 0x65, 0x64, 0x6f, 0x3b, 0x135, 0x61, 0x16d, 0x64,
+0x6f, 0x3b, 0x76, 0x65, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x6f, 0x3b, 0x73,
+0x61, 0x62, 0x61, 0x74, 0x6f, 0x64, 0x69, 0x3b, 0x6c, 0x75, 0x3b, 0x6d,
+0x61, 0x3b, 0x6d, 0x65, 0x3b, 0x135, 0x61, 0x3b, 0x76, 0x65, 0x3b, 0x73,
+0x61, 0x64, 0x3b, 0x6c, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x135, 0x3b, 0x76,
+0x3b, 0x73, 0x70, 0xfc, 0x68, 0x61, 0x70, 0xe4, 0x65, 0x76, 0x3b, 0x65,
+0x73, 0x6d, 0x61, 0x73, 0x70, 0xe4, 0x65, 0x76, 0x3b, 0x74, 0x65, 0x69,
+0x73, 0x69, 0x70, 0xe4, 0x65, 0x76, 0x3b, 0x6b, 0x6f, 0x6c, 0x6d, 0x61,
+0x70, 0xe4, 0x65, 0x76, 0x3b, 0x6e, 0x65, 0x6c, 0x6a, 0x61, 0x70, 0xe4,
+0x65, 0x76, 0x3b, 0x72, 0x65, 0x65, 0x64, 0x65, 0x3b, 0x6c, 0x61, 0x75,
+0x70, 0xe4, 0x65, 0x76, 0x50, 0x3b, 0x45, 0x3b, 0x54, 0x3b, 0x4b, 0x3b,
+0x4e, 0x3b, 0x52, 0x3b, 0x4c, 0x6b, 0x254, 0x73, 0x69, 0x256, 0x61, 0x3b,
+0x64, 0x7a, 0x6f, 0x256, 0x61, 0x3b, 0x62, 0x6c, 0x61, 0x256, 0x61, 0x3b,
+0x6b, 0x75, 0x256, 0x61, 0x3b, 0x79, 0x61, 0x77, 0x6f, 0x256, 0x61, 0x3b,
+0x66, 0x69, 0x256, 0x61, 0x3b, 0x6d, 0x65, 0x6d, 0x6c, 0x65, 0x256, 0x61,
+0x6b, 0x254, 0x73, 0x3b, 0x64, 0x7a, 0x6f, 0x3b, 0x62, 0x6c, 0x61, 0x3b,
+0x6b, 0x75, 0x256, 0x3b, 0x79, 0x61, 0x77, 0x3b, 0x66, 0x69, 0x256, 0x3b,
+0x6d, 0x65, 0x6d, 0x6b, 0x3b, 0x64, 0x3b, 0x62, 0x3b, 0x6b, 0x3b, 0x79,
+0x3b, 0x66, 0x3b, 0x6d, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x3b, 0x6d,
+0x254, 0x301, 0x6e, 0x64, 0x69, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254,
+0x20, 0x6d, 0x259, 0x6c, 0xfa, 0x20, 0x6d, 0x259, 0x301, 0x62, 0x25b, 0x30c,
+0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x259, 0x6c, 0xfa,
+0x20, 0x6d, 0x259, 0x301, 0x6c, 0x25b, 0x301, 0x3b, 0x73, 0x254, 0x301, 0x6e,
+0x64, 0x254, 0x20, 0x6d, 0x259, 0x6c, 0xfa, 0x20, 0x6d, 0x259, 0x301, 0x6e,
+0x79, 0x69, 0x3b, 0x66, 0xfa, 0x6c, 0x61, 0x64, 0xe9, 0x3b, 0x73, 0xe9,
+0x72, 0x61, 0x64, 0xe9, 0x73, 0x254, 0x301, 0x6e, 0x3b, 0x6d, 0x254, 0x301,
+0x6e, 0x3b, 0x73, 0x6d, 0x62, 0x3b, 0x73, 0x6d, 0x6c, 0x3b, 0x73, 0x6d,
+0x6e, 0x3b, 0x66, 0xfa, 0x6c, 0x3b, 0x73, 0xe9, 0x72, 0x73, 0x3b, 0x6d,
+0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x66, 0x3b, 0x73, 0x73, 0x75,
+0x6e, 0x6e, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x6d, 0xe1, 0x6e,
+0x61, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x74, 0xfd, 0x73, 0x64, 0x61,
+0x67, 0x75, 0x72, 0x3b, 0x6d, 0x69, 0x6b, 0x75, 0x64, 0x61, 0x67, 0x75,
+0x72, 0x3b, 0x68, 0xf3, 0x73, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x66,
+0x72, 0xed, 0x67, 0x67, 0x6a, 0x61, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b,
+0x6c, 0x65, 0x79, 0x67, 0x61, 0x72, 0x64, 0x61, 0x67, 0x75, 0x72, 0x73,
+0x75, 0x6e, 0x3b, 0x6d, 0xe1, 0x6e, 0x3b, 0x74, 0xfd, 0x73, 0x3b, 0x6d,
+0x69, 0x6b, 0x3b, 0x68, 0xf3, 0x73, 0x3b, 0x66, 0x72, 0xed, 0x3b, 0x6c,
+0x65, 0x79, 0x73, 0x75, 0x6e, 0x2e, 0x3b, 0x6d, 0xe1, 0x6e, 0x2e, 0x3b,
+0x74, 0xfd, 0x73, 0x2e, 0x3b, 0x6d, 0x69, 0x6b, 0x2e, 0x3b, 0x68, 0xf3,
+0x73, 0x2e, 0x3b, 0x66, 0x72, 0xed, 0x2e, 0x3b, 0x6c, 0x65, 0x79, 0x2e,
+0x53, 0x3b, 0x4d, 0x3b, 0x54, 0x3b, 0x4d, 0x3b, 0x48, 0x3b, 0x46, 0x3b,
+0x4c, 0x4c, 0x69, 0x6e, 0x67, 0x67, 0x6f, 0x3b, 0x4c, 0x75, 0x6e, 0x65,
+0x73, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x4d, 0x69, 0x79,
+0x65, 0x72, 0x6b, 0x75, 0x6c, 0x65, 0x73, 0x3b, 0x48, 0x75, 0x77, 0x65,
+0x62, 0x65, 0x73, 0x3b, 0x42, 0x69, 0x79, 0x65, 0x72, 0x6e, 0x65, 0x73,
+0x3b, 0x53, 0x61, 0x62, 0x61, 0x64, 0x6f, 0x4c, 0x69, 0x6e, 0x3b, 0x4c,
+0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x4d, 0x69, 0x79, 0x3b, 0x48,
+0x75, 0x77, 0x3b, 0x42, 0x69, 0x79, 0x3b, 0x53, 0x61, 0x62, 0x73, 0x75,
+0x6e, 0x6e, 0x75, 0x6e, 0x74, 0x61, 0x69, 0x3b, 0x6d, 0x61, 0x61, 0x6e,
+0x61, 0x6e, 0x74, 0x61, 0x69, 0x3b, 0x74, 0x69, 0x69, 0x73, 0x74, 0x61,
+0x69, 0x3b, 0x6b, 0x65, 0x73, 0x6b, 0x69, 0x76, 0x69, 0x69, 0x6b, 0x6b,
+0x6f, 0x3b, 0x74, 0x6f, 0x72, 0x73, 0x74, 0x61, 0x69, 0x3b, 0x70, 0x65,
+0x72, 0x6a, 0x61, 0x6e, 0x74, 0x61, 0x69, 0x3b, 0x6c, 0x61, 0x75, 0x61,
+0x6e, 0x74, 0x61, 0x69, 0x73, 0x75, 0x6e, 0x6e, 0x75, 0x6e, 0x74, 0x61,
+0x69, 0x6e, 0x61, 0x3b, 0x6d, 0x61, 0x61, 0x6e, 0x61, 0x6e, 0x74, 0x61,
+0x69, 0x6e, 0x61, 0x3b, 0x74, 0x69, 0x69, 0x73, 0x74, 0x61, 0x69, 0x6e,
+0x61, 0x3b, 0x6b, 0x65, 0x73, 0x6b, 0x69, 0x76, 0x69, 0x69, 0x6b, 0x6b,
+0x6f, 0x6e, 0x61, 0x3b, 0x74, 0x6f, 0x72, 0x73, 0x74, 0x61, 0x69, 0x6e,
+0x61, 0x3b, 0x70, 0x65, 0x72, 0x6a, 0x61, 0x6e, 0x74, 0x61, 0x69, 0x6e,
+0x61, 0x3b, 0x6c, 0x61, 0x75, 0x61, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x61,
+0x73, 0x75, 0x3b, 0x6d, 0x61, 0x3b, 0x74, 0x69, 0x3b, 0x6b, 0x65, 0x3b,
+0x74, 0x6f, 0x3b, 0x70, 0x65, 0x3b, 0x6c, 0x61, 0x53, 0x3b, 0x4d, 0x3b,
+0x54, 0x3b, 0x4b, 0x3b, 0x54, 0x3b, 0x50, 0x3b, 0x4c, 0x64, 0x69, 0x6d,
+0x61, 0x6e, 0x63, 0x68, 0x65, 0x3b, 0x6c, 0x75, 0x6e, 0x64, 0x69, 0x3b,
+0x6d, 0x61, 0x72, 0x64, 0x69, 0x3b, 0x6d, 0x65, 0x72, 0x63, 0x72, 0x65,
+0x64, 0x69, 0x3b, 0x6a, 0x65, 0x75, 0x64, 0x69, 0x3b, 0x76, 0x65, 0x6e,
+0x64, 0x72, 0x65, 0x64, 0x69, 0x3b, 0x73, 0x61, 0x6d, 0x65, 0x64, 0x69,
+0x64, 0x69, 0x6d, 0x2e, 0x3b, 0x6c, 0x75, 0x6e, 0x2e, 0x3b, 0x6d, 0x61,
+0x72, 0x2e, 0x3b, 0x6d, 0x65, 0x72, 0x2e, 0x3b, 0x6a, 0x65, 0x75, 0x2e,
+0x3b, 0x76, 0x65, 0x6e, 0x2e, 0x3b, 0x73, 0x61, 0x6d, 0x2e, 0x44, 0x3b,
+0x4c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x56, 0x3b, 0x53, 0x64,
+0x6f, 0x6d, 0x65, 0x6e, 0x69, 0x65, 0x3b, 0x6c, 0x75, 0x6e, 0x69, 0x73,
+0x3b, 0x6d, 0x61, 0x72, 0x74, 0x61, 0x72, 0x73, 0x3b, 0x6d, 0x69, 0x65,
+0x72, 0x63, 0x75, 0x73, 0x3b, 0x6a, 0x6f, 0x69, 0x62, 0x65, 0x3b, 0x76,
+0x69, 0x6e, 0x61, 0x72, 0x73, 0x3b, 0x73, 0x61, 0x62, 0x69, 0x64, 0x65,
+0x64, 0x6f, 0x6d, 0x3b, 0x6c, 0x75, 0x6e, 0x3b, 0x6d, 0x61, 0x72, 0x3b,
+0x6d, 0x69, 0x65, 0x3b, 0x6a, 0x6f, 0x69, 0x3b, 0x76, 0x69, 0x6e, 0x3b,
+0x73, 0x61, 0x62, 0x64, 0x65, 0x77, 0x6f, 0x3b, 0x61, 0x61, 0x253, 0x6e,
+0x64, 0x65, 0x3b, 0x6d, 0x61, 0x77, 0x62, 0x61, 0x61, 0x72, 0x65, 0x3b,
+0x6e, 0x6a, 0x65, 0x73, 0x6c, 0x61, 0x61, 0x72, 0x65, 0x3b, 0x6e, 0x61,
+0x61, 0x73, 0x61, 0x61, 0x6e, 0x64, 0x65, 0x3b, 0x6d, 0x61, 0x77, 0x6e,
+0x64, 0x65, 0x3b, 0x68, 0x6f, 0x6f, 0x72, 0x65, 0x2d, 0x62, 0x69, 0x69,
+0x72, 0x64, 0x65, 0x77, 0x3b, 0x61, 0x61, 0x253, 0x3b, 0x6d, 0x61, 0x77,
+0x3b, 0x6e, 0x6a, 0x65, 0x3b, 0x6e, 0x61, 0x61, 0x3b, 0x6d, 0x77, 0x64,
+0x3b, 0x68, 0x62, 0x69, 0x64, 0x3b, 0x61, 0x3b, 0x6d, 0x3b, 0x6e, 0x3b,
+0x6e, 0x3b, 0x6d, 0x3b, 0x68, 0xd83a, 0xdd08, 0xd83a, 0xdd2b, 0xd83a, 0xdd2c, 0xd83a,
+0xdd26, 0xd83a, 0xdd2d, 0xd83a, 0xdd2a, 0xd83a, 0xdd46, 0xd83a, 0xdd2b, 0x3b, 0xd83a, 0xdd00,
+0xd83a, 0xdd44, 0xd83a, 0xdd29, 0xd83a, 0xdd35, 0xd83a, 0xdd32, 0xd83a, 0xdd4b, 0xd83a, 0xdd23,
+0xd83a, 0xdd2b, 0x3b, 0xd83a, 0xdd03, 0xd83a, 0xdd22, 0xd83a, 0xdd31, 0xd83a, 0xdd26, 0xd83a,
+0xdd22, 0xd83a, 0xdd44, 0xd83a, 0xdd2a, 0xd83a, 0xdd2b, 0x3b, 0xd83a, 0xdd10, 0xd83a, 0xdd36,
+0xd83a, 0xdd2b, 0xd83a, 0xdd27, 0xd83a, 0xdd24, 0xd83a, 0xdd22, 0xd83a, 0xdd44, 0xd83a, 0xdd2a,
+0xd83a, 0xdd2b, 0x3b, 0xd83a, 0xdd10, 0xd83a, 0xdd22, 0xd83a, 0xdd44, 0xd83a, 0xdd27, 0xd83a,
+0xdd22, 0xd83a, 0xdd44, 0xd83a, 0xdd32, 0xd83a, 0xdd23, 0xd83a, 0xdd2b, 0x3b, 0xd83a, 0xdd03,
+0xd83a, 0xdd22, 0xd83a, 0xdd31, 0xd83a, 0xdd32, 0xd83a, 0xdd23, 0xd83a, 0xdd2b, 0x3b, 0xd83a,
+0xdd16, 0xd83a, 0xdd2e, 0xd83a, 0xdd2a, 0xd83a, 0xdd26, 0xd83a, 0xdd2d, 0xd83a, 0xdd2a, 0xd83a,
+0xdd46, 0xd83a, 0xdd2b, 0xd83a, 0xdd08, 0xd83a, 0xdd2b, 0xd83a, 0xdd2c, 0x3b, 0xd83a, 0xdd00,
+0xd83a, 0xdd44, 0xd83a, 0xdd29, 0xd83a, 0xdd35, 0x3b, 0xd83a, 0xdd03, 0xd83a, 0xdd22, 0xd83a,
+0xdd26, 0x3b, 0xd83a, 0xdd14, 0xd83a, 0xdd2b, 0xd83a, 0xdd27, 0x3b, 0xd83a, 0xdd10, 0xd83a,
+0xdd22, 0xd83a, 0xdd44, 0xd83a, 0xdd27, 0x3b, 0xd83a, 0xdd03, 0xd83a, 0xdd22, 0xd83a, 0xdd23,
+0x3b, 0xd83a, 0xdd16, 0xd83a, 0xdd2e, 0xd83a, 0xdd2a, 0xd83a, 0xdd08, 0x3b, 0xd83a, 0xdd00,
+0xd83a, 0xdd44, 0x3b, 0xd83a, 0xdd03, 0x3b, 0xd83a, 0xdd14, 0x3b, 0xd83a, 0xdd10, 0x3b,
+0xd83a, 0xdd03, 0x3b, 0xd83a, 0xdd16, 0x44, 0x69, 0x44, 0xf2, 0x6d, 0x68, 0x6e,
+0x61, 0x69, 0x63, 0x68, 0x3b, 0x44, 0x69, 0x4c, 0x75, 0x61, 0x69, 0x6e,
+0x3b, 0x44, 0x69, 0x4d, 0xe0, 0x69, 0x72, 0x74, 0x3b, 0x44, 0x69, 0x43,
+0x69, 0x61, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x44, 0x69, 0x61, 0x72, 0x44,
+0x61, 0x6f, 0x69, 0x6e, 0x3b, 0x44, 0x69, 0x68, 0x41, 0x6f, 0x69, 0x6e,
+0x65, 0x3b, 0x44, 0x69, 0x53, 0x61, 0x74, 0x68, 0x61, 0x69, 0x72, 0x6e,
+0x65, 0x44, 0x69, 0x44, 0x3b, 0x44, 0x69, 0x4c, 0x3b, 0x44, 0x69, 0x4d,
+0x3b, 0x44, 0x69, 0x43, 0x3b, 0x44, 0x69, 0x61, 0x3b, 0x44, 0x69, 0x68,
+0x3b, 0x44, 0x69, 0x53, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x43, 0x3b,
+0x41, 0x3b, 0x48, 0x3b, 0x53, 0x48, 0x254, 0x67, 0x62, 0x61, 0x61, 0x3b,
+0x4a, 0x75, 0x3b, 0x4a, 0x75, 0x66, 0x254, 0x3b, 0x53, 0x68, 0x254, 0x3b,
+0x53, 0x6f, 0x6f, 0x3b, 0x53, 0x6f, 0x68, 0x61, 0x61, 0x3b, 0x48, 0x254,
+0x254, 0x48, 0x254, 0x67, 0x3b, 0x4a, 0x75, 0x3b, 0x4a, 0x75, 0x66, 0x3b,
+0x53, 0x68, 0x254, 0x3b, 0x53, 0x6f, 0x6f, 0x3b, 0x53, 0x6f, 0x68, 0x3b,
+0x48, 0x254, 0x254, 0x48, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x53, 0x3b, 0x53,
+0x3b, 0x53, 0x3b, 0x48, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b,
+0x6c, 0x75, 0x6e, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b,
+0x6d, 0xe9, 0x72, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x3b, 0x78, 0x6f, 0x76,
+0x65, 0x73, 0x3b, 0x76, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x3b, 0x73, 0xe1,
+0x62, 0x61, 0x64, 0x6f, 0x64, 0x6f, 0x6d, 0x2e, 0x3b, 0x6c, 0x75, 0x6e,
+0x73, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x6d, 0xe9, 0x72, 0x2e, 0x3b,
+0x78, 0x6f, 0x76, 0x2e, 0x3b, 0x76, 0x65, 0x6e, 0x2e, 0x3b, 0x73, 0xe1,
+0x62, 0x2e, 0x64, 0x2e, 0x3b, 0x6c, 0x2e, 0x3b, 0x6d, 0x2e, 0x3b, 0x6d,
+0x2e, 0x3b, 0x78, 0x2e, 0x3b, 0x76, 0x2e, 0x3b, 0x73, 0x2e, 0x53, 0x61,
+0x62, 0x62, 0x69, 0x69, 0x74, 0x69, 0x3b, 0x42, 0x61, 0x6c, 0x61, 0x7a,
+0x61, 0x3b, 0x4c, 0x77, 0x61, 0x6b, 0x75, 0x62, 0x69, 0x72, 0x69, 0x3b,
+0x4c, 0x77, 0x61, 0x6b, 0x75, 0x73, 0x61, 0x74, 0x75, 0x3b, 0x4c, 0x77,
+0x61, 0x6b, 0x75, 0x6e, 0x61, 0x3b, 0x4c, 0x77, 0x61, 0x6b, 0x75, 0x74,
+0x61, 0x61, 0x6e, 0x6f, 0x3b, 0x4c, 0x77, 0x61, 0x6d, 0x75, 0x6b, 0x61,
+0x61, 0x67, 0x61, 0x53, 0x61, 0x62, 0x3b, 0x42, 0x61, 0x6c, 0x3b, 0x4c,
+0x77, 0x32, 0x3b, 0x4c, 0x77, 0x33, 0x3b, 0x4c, 0x77, 0x34, 0x3b, 0x4c,
+0x77, 0x35, 0x3b, 0x4c, 0x77, 0x36, 0x53, 0x3b, 0x42, 0x3b, 0x4c, 0x3b,
+0x4c, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4c, 0x12a5, 0x1281, 0x12f5, 0x3b, 0x1230,
+0x1291, 0x12ed, 0x3b, 0x1220, 0x1209, 0x1235, 0x3b, 0x122b, 0x1265, 0x12d5, 0x3b, 0x1210,
+0x1219, 0x1235, 0x3b, 0x12d3, 0x122d, 0x1260, 0x3b, 0x1240, 0x12f3, 0x121a, 0x1275, 0x12a5,
+0x3b, 0x1230, 0x3b, 0x1220, 0x3b, 0x122b, 0x3b, 0x1210, 0x3b, 0x12d3, 0x3b, 0x1240,
+0x10d9, 0x10d5, 0x10d8, 0x10e0, 0x10d0, 0x3b, 0x10dd, 0x10e0, 0x10e8, 0x10d0, 0x10d1, 0x10d0,
+0x10d7, 0x10d8, 0x3b, 0x10e1, 0x10d0, 0x10db, 0x10e8, 0x10d0, 0x10d1, 0x10d0, 0x10d7, 0x10d8,
+0x3b, 0x10dd, 0x10d7, 0x10ee, 0x10e8, 0x10d0, 0x10d1, 0x10d0, 0x10d7, 0x10d8, 0x3b, 0x10ee,
+0x10e3, 0x10d7, 0x10e8, 0x10d0, 0x10d1, 0x10d0, 0x10d7, 0x10d8, 0x3b, 0x10de, 0x10d0, 0x10e0,
+0x10d0, 0x10e1, 0x10d9, 0x10d4, 0x10d5, 0x10d8, 0x3b, 0x10e8, 0x10d0, 0x10d1, 0x10d0, 0x10d7,
+0x10d8, 0x10d9, 0x10d5, 0x10d8, 0x3b, 0x10dd, 0x10e0, 0x10e8, 0x3b, 0x10e1, 0x10d0, 0x10db,
+0x3b, 0x10dd, 0x10d7, 0x10ee, 0x3b, 0x10ee, 0x10e3, 0x10d7, 0x3b, 0x10de, 0x10d0, 0x10e0,
+0x3b, 0x10e8, 0x10d0, 0x10d1, 0x10d9, 0x3b, 0x10dd, 0x3b, 0x10e1, 0x3b, 0x10dd, 0x3b,
+0x10ee, 0x3b, 0x10de, 0x3b, 0x10e8, 0x53, 0x6f, 0x6e, 0x6e, 0x74, 0x61, 0x67,
+0x3b, 0x4d, 0x6f, 0x6e, 0x74, 0x61, 0x67, 0x3b, 0x44, 0x69, 0x65, 0x6e,
+0x73, 0x74, 0x61, 0x67, 0x3b, 0x4d, 0x69, 0x74, 0x74, 0x77, 0x6f, 0x63,
+0x68, 0x3b, 0x44, 0x6f, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x74, 0x61, 0x67,
+0x3b, 0x46, 0x72, 0x65, 0x69, 0x74, 0x61, 0x67, 0x3b, 0x53, 0x61, 0x6d,
+0x73, 0x74, 0x61, 0x67, 0x53, 0x6f, 0x3b, 0x4d, 0x6f, 0x3b, 0x44, 0x69,
+0x3b, 0x4d, 0x69, 0x3b, 0x44, 0x6f, 0x3b, 0x46, 0x72, 0x3b, 0x53, 0x61,
+0x53, 0x6f, 0x2e, 0x3b, 0x4d, 0x6f, 0x2e, 0x3b, 0x44, 0x69, 0x2e, 0x3b,
+0x4d, 0x69, 0x2e, 0x3b, 0x44, 0x6f, 0x2e, 0x3b, 0x46, 0x72, 0x2e, 0x3b,
+0x53, 0x61, 0x2e, 0x39a, 0x3c5, 0x3c1, 0x3b9, 0x3b1, 0x3ba, 0x3ae, 0x3b, 0x394,
+0x3b5, 0x3c5, 0x3c4, 0x3ad, 0x3c1, 0x3b1, 0x3b, 0x3a4, 0x3c1, 0x3af, 0x3c4, 0x3b7,
+0x3b, 0x3a4, 0x3b5, 0x3c4, 0x3ac, 0x3c1, 0x3c4, 0x3b7, 0x3b, 0x3a0, 0x3ad, 0x3bc,
+0x3c0, 0x3c4, 0x3b7, 0x3b, 0x3a0, 0x3b1, 0x3c1, 0x3b1, 0x3c3, 0x3ba, 0x3b5, 0x3c5,
+0x3ae, 0x3b, 0x3a3, 0x3ac, 0x3b2, 0x3b2, 0x3b1, 0x3c4, 0x3bf, 0x39a, 0x3c5, 0x3c1,
+0x3b, 0x394, 0x3b5, 0x3c5, 0x3b, 0x3a4, 0x3c1, 0x3af, 0x3b, 0x3a4, 0x3b5, 0x3c4,
+0x3b, 0x3a0, 0x3ad, 0x3bc, 0x3b, 0x3a0, 0x3b1, 0x3c1, 0x3b, 0x3a3, 0x3ac, 0x3b2,
+0x39a, 0x3b, 0x394, 0x3b, 0x3a4, 0x3b, 0x3a4, 0x3b, 0x3a0, 0x3b, 0x3a0, 0x3b,
+0x3a3, 0x41, 0x72, 0x61, 0x74, 0x65, 0x129, 0x3b, 0x41, 0x72, 0x61, 0x6b,
+0xf5, 0x69, 0x3b, 0x41, 0x72, 0x61, 0x61, 0x70, 0x79, 0x3b, 0x41, 0x72,
+0x61, 0x72, 0x75, 0x6e, 0x64, 0x79, 0x3b, 0x41, 0x72, 0x61, 0x70, 0x6f,
+0x3b, 0x41, 0x72, 0x61, 0x70, 0x6f, 0x74, 0x65, 0x129, 0x3b, 0x41, 0x72,
+0x61, 0x70, 0x6f, 0x6b, 0xf5, 0x69, 0xab0, 0xab5, 0xabf, 0xab5, 0xabe, 0xab0,
+0x3b, 0xab8, 0xacb, 0xaae, 0xab5, 0xabe, 0xab0, 0x3b, 0xaae, 0xa82, 0xa97, 0xab3,
+0xab5, 0xabe, 0xab0, 0x3b, 0xaac, 0xac1, 0xaa7, 0xab5, 0xabe, 0xab0, 0x3b, 0xa97,
+0xac1, 0xab0, 0xac1, 0xab5, 0xabe, 0xab0, 0x3b, 0xab6, 0xac1, 0xa95, 0xacd, 0xab0,
+0xab5, 0xabe, 0xab0, 0x3b, 0xab6, 0xaa8, 0xabf, 0xab5, 0xabe, 0xab0, 0xab0, 0xab5,
+0xabf, 0x3b, 0xab8, 0xacb, 0xaae, 0x3b, 0xaae, 0xa82, 0xa97, 0xab3, 0x3b, 0xaac,
+0xac1, 0xaa7, 0x3b, 0xa97, 0xac1, 0xab0, 0xac1, 0x3b, 0xab6, 0xac1, 0xa95, 0xacd,
+0xab0, 0x3b, 0xab6, 0xaa8, 0xabf, 0xab0, 0x3b, 0xab8, 0xacb, 0x3b, 0xaae, 0xa82,
+0x3b, 0xaac, 0xac1, 0x3b, 0xa97, 0xac1, 0x3b, 0xab6, 0xac1, 0x3b, 0xab6, 0x43,
+0x68, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x72, 0x69, 0x3b, 0x43, 0x68, 0x75,
+0x6d, 0x61, 0x74, 0x61, 0x74, 0x6f, 0x3b, 0x43, 0x68, 0x75, 0x6d, 0x61,
+0x69, 0x6e, 0x65, 0x3b, 0x43, 0x68, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e,
+0x6f, 0x3b, 0x41, 0x72, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x63,
+0x68, 0x75, 0x6d, 0x61, 0x3b, 0x45, 0x73, 0x61, 0x62, 0x61, 0x74, 0x6f,
+0x43, 0x70, 0x72, 0x3b, 0x43, 0x74, 0x74, 0x3b, 0x43, 0x6d, 0x6e, 0x3b,
+0x43, 0x6d, 0x74, 0x3b, 0x41, 0x72, 0x73, 0x3b, 0x49, 0x63, 0x6d, 0x3b,
+0x45, 0x73, 0x74, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x41,
+0x3b, 0x49, 0x3b, 0x45, 0x4c, 0x61, 0x68, 0x61, 0x64, 0x69, 0x3b, 0x4c,
+0x69, 0x74, 0x69, 0x6e, 0x69, 0x6e, 0x3b, 0x54, 0x61, 0x6c, 0x61, 0x74,
+0x61, 0x3b, 0x4c, 0x61, 0x72, 0x61, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x68,
+0x61, 0x6d, 0x69, 0x73, 0x3b, 0x4a, 0x75, 0x6d, 0x6d, 0x61, 0x2bc, 0x61,
+0x3b, 0x41, 0x73, 0x61, 0x62, 0x61, 0x72, 0x4c, 0x61, 0x68, 0x3b, 0x4c,
+0x69, 0x74, 0x3b, 0x54, 0x61, 0x6c, 0x3b, 0x4c, 0x61, 0x72, 0x3b, 0x41,
+0x6c, 0x68, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x41, 0x73, 0x61, 0x4c, 0x3b,
+0x4c, 0x3b, 0x54, 0x3b, 0x4c, 0x3b, 0x41, 0x3b, 0x4a, 0x3b, 0x41, 0x644,
+0x64e, 0x62d, 0x64e, 0x62f, 0x650, 0x3b, 0x644, 0x650, 0x62a, 0x650, 0x646, 0x650,
+0x646, 0x652, 0x3b, 0x62a, 0x64e, 0x644, 0x64e, 0x62a, 0x64e, 0x3b, 0x644, 0x64e,
+0x631, 0x64e, 0x628, 0x64e, 0x3b, 0x623, 0x64e, 0x644, 0x652, 0x62d, 0x64e, 0x645,
+0x650, 0x633, 0x652, 0x3b, 0x62c, 0x64f, 0x645, 0x64e, 0x639, 0x64e, 0x3b, 0x623,
+0x64e, 0x633, 0x64e, 0x628, 0x64e, 0x631, 0x652, 0x644, 0x64e, 0x62d, 0x3b, 0x644,
+0x650, 0x62a, 0x3b, 0x62a, 0x64e, 0x644, 0x3b, 0x644, 0x64e, 0x631, 0x3b, 0x623,
+0x64e, 0x644, 0x652, 0x62d, 0x3b, 0x62c, 0x64f, 0x645, 0x3b, 0x623, 0x64e, 0x633,
+0x64e, 0x4c, 0x101, 0x70, 0x75, 0x6c, 0x65, 0x3b, 0x50, 0x6f, 0x2bb, 0x61,
+0x6b, 0x61, 0x68, 0x69, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6c, 0x75, 0x61,
+0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6b, 0x6f, 0x6c, 0x75, 0x3b, 0x50, 0x6f,
+0x2bb, 0x61, 0x68, 0x101, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6c, 0x69, 0x6d,
+0x61, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6f, 0x6e, 0x6f, 0x4c, 0x50, 0x3b,
+0x50, 0x31, 0x3b, 0x50, 0x32, 0x3b, 0x50, 0x33, 0x3b, 0x50, 0x34, 0x3b,
+0x50, 0x35, 0x3b, 0x50, 0x36, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5e8, 0x5d0, 0x5e9,
+0x5d5, 0x5df, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5e9, 0x5e0, 0x5d9, 0x3b, 0x5d9,
+0x5d5, 0x5dd, 0x20, 0x5e9, 0x5dc, 0x5d9, 0x5e9, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dd,
+0x20, 0x5e8, 0x5d1, 0x5d9, 0x5e2, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d7,
+0x5de, 0x5d9, 0x5e9, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5e9, 0x5d9, 0x5e9,
+0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5e9, 0x5d1, 0x5ea, 0x5d9, 0x5d5, 0x5dd,
+0x20, 0x5d0, 0x5f3, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d1, 0x5f3, 0x3b, 0x5d9,
+0x5d5, 0x5dd, 0x20, 0x5d2, 0x5f3, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d3, 0x5f3,
+0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d4, 0x5f3, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20,
+0x5d5, 0x5f3, 0x3b, 0x5e9, 0x5d1, 0x5ea, 0x5d0, 0x5f3, 0x3b, 0x5d1, 0x5f3, 0x3b,
+0x5d2, 0x5f3, 0x3b, 0x5d3, 0x5f3, 0x3b, 0x5d4, 0x5f3, 0x3b, 0x5d5, 0x5f3, 0x3b,
+0x5e9, 0x5f3, 0x930, 0x935, 0x93f, 0x935, 0x93e, 0x930, 0x3b, 0x938, 0x94b, 0x92e,
+0x935, 0x93e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x935, 0x93e, 0x930, 0x3b,
+0x92c, 0x941, 0x927, 0x935, 0x93e, 0x930, 0x3b, 0x917, 0x941, 0x930, 0x941, 0x935,
+0x93e, 0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x935, 0x93e, 0x930, 0x3b,
+0x936, 0x928, 0x93f, 0x935, 0x93e, 0x930, 0x930, 0x935, 0x93f, 0x3b, 0x938, 0x94b,
+0x92e, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x3b, 0x92c, 0x941, 0x927, 0x3b, 0x917,
+0x941, 0x930, 0x941, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x3b, 0x936, 0x928,
+0x93f, 0x930, 0x3b, 0x938, 0x94b, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, 0x3b,
+0x917, 0x941, 0x3b, 0x936, 0x941, 0x3b, 0x936, 0x52, 0x61, 0x76, 0x69, 0x77,
+0x61, 0x61, 0x72, 0x3b, 0x53, 0x6f, 0x6d, 0x77, 0x61, 0x61, 0x72, 0x3b,
+0x4d, 0x61, 0x6e, 0x67, 0x61, 0x6c, 0x77, 0x61, 0x61, 0x72, 0x3b, 0x42,
+0x75, 0x64, 0x68, 0x77, 0x61, 0x61, 0x72, 0x3b, 0x47, 0x75, 0x72, 0x75,
+0x77, 0x61, 0x61, 0x72, 0x3b, 0x53, 0x68, 0x75, 0x6b, 0x72, 0x61, 0x77,
+0x61, 0x61, 0x72, 0x3b, 0x53, 0x68, 0x61, 0x6e, 0x69, 0x77, 0x61, 0x61,
+0x72, 0x52, 0x61, 0x76, 0x69, 0x3b, 0x53, 0x6f, 0x6d, 0x3b, 0x4d, 0x61,
+0x6e, 0x67, 0x61, 0x6c, 0x3b, 0x42, 0x75, 0x64, 0x68, 0x3b, 0x47, 0x75,
+0x72, 0x75, 0x3b, 0x53, 0x68, 0x75, 0x6b, 0x72, 0x61, 0x3b, 0x53, 0x68,
+0x61, 0x6e, 0x69, 0x52, 0x61, 0x3b, 0x53, 0x6f, 0x3b, 0x4d, 0x61, 0x3b,
+0x42, 0x75, 0x3b, 0x47, 0x75, 0x3b, 0x53, 0x68, 0x3b, 0x53, 0x68, 0x61,
+0x76, 0x61, 0x73, 0xe1, 0x72, 0x6e, 0x61, 0x70, 0x3b, 0x68, 0xe9, 0x74,
+0x66, 0x151, 0x3b, 0x6b, 0x65, 0x64, 0x64, 0x3b, 0x73, 0x7a, 0x65, 0x72,
+0x64, 0x61, 0x3b, 0x63, 0x73, 0xfc, 0x74, 0xf6, 0x72, 0x74, 0xf6, 0x6b,
+0x3b, 0x70, 0xe9, 0x6e, 0x74, 0x65, 0x6b, 0x3b, 0x73, 0x7a, 0x6f, 0x6d,
+0x62, 0x61, 0x74, 0x56, 0x3b, 0x48, 0x3b, 0x4b, 0x3b, 0x53, 0x7a, 0x65,
+0x3b, 0x43, 0x73, 0x3b, 0x50, 0x3b, 0x53, 0x7a, 0x6f, 0x56, 0x3b, 0x48,
+0x3b, 0x4b, 0x3b, 0x53, 0x7a, 0x3b, 0x43, 0x73, 0x3b, 0x50, 0x3b, 0x53,
+0x7a, 0x73, 0x75, 0x6e, 0x6e, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b,
+0x6d, 0xe1, 0x6e, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0xfe, 0x72,
+0x69, 0xf0, 0x6a, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x6d, 0x69,
+0xf0, 0x76, 0x69, 0x6b, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x66,
+0x69, 0x6d, 0x6d, 0x74, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x66,
+0xf6, 0x73, 0x74, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x6c, 0x61,
+0x75, 0x67, 0x61, 0x72, 0x64, 0x61, 0x67, 0x75, 0x72, 0x73, 0x75, 0x6e,
+0x2e, 0x3b, 0x6d, 0xe1, 0x6e, 0x2e, 0x3b, 0xfe, 0x72, 0x69, 0x2e, 0x3b,
+0x6d, 0x69, 0xf0, 0x2e, 0x3b, 0x66, 0x69, 0x6d, 0x2e, 0x3b, 0x66, 0xf6,
+0x73, 0x2e, 0x3b, 0x6c, 0x61, 0x75, 0x2e, 0x53, 0x3b, 0x4d, 0x3b, 0xde,
+0x3b, 0x4d, 0x3b, 0x46, 0x3b, 0x46, 0x3b, 0x4c, 0x53, 0x1ecd, 0x6e, 0x64,
+0x65, 0x65, 0x3b, 0x4d, 0x1ecd, 0x6e, 0x64, 0x65, 0x3b, 0x54, 0x69, 0x75,
+0x7a, 0x64, 0x65, 0x65, 0x3b, 0x57, 0x65, 0x6e, 0x65, 0x7a, 0x64, 0x65,
+0x65, 0x3b, 0x54, 0x1ecd, 0x1ecd, 0x7a, 0x64, 0x65, 0x65, 0x3b, 0x46, 0x72,
+0x61, 0x1ecb, 0x64, 0x65, 0x65, 0x3b, 0x53, 0x61, 0x74, 0x1ecd, 0x64, 0x65,
+0x65, 0x53, 0x1ecd, 0x6e, 0x3b, 0x4d, 0x1ecd, 0x6e, 0x3b, 0x54, 0x69, 0x75,
+0x3b, 0x57, 0x65, 0x6e, 0x3b, 0x54, 0x1ecd, 0x1ecd, 0x3b, 0x46, 0x72, 0x61,
+0x1ecb, 0x3b, 0x53, 0x61, 0x74, 0x70, 0x61, 0x73, 0x65, 0x70, 0x65, 0x69,
+0x76, 0x69, 0x3b, 0x76, 0x75, 0x6f, 0x73, 0x73, 0x61, 0x72, 0x67, 0xe2,
+0x3b, 0x6d, 0x61, 0x6a, 0x65, 0x62, 0x61, 0x72, 0x67, 0xe2, 0x3b, 0x6b,
+0x6f, 0x73, 0x6b, 0x6f, 0x6b, 0x6b, 0x6f, 0x3b, 0x74, 0x75, 0x6f, 0x72,
+0xe2, 0x73, 0x74, 0xe2, 0x68, 0x3b, 0x76, 0xe1, 0x73, 0x74, 0x75, 0x70,
+0x70, 0x65, 0x69, 0x76, 0x69, 0x3b, 0x6c, 0xe1, 0x76, 0x75, 0x72, 0x64,
+0xe2, 0x68, 0x70, 0x61, 0x73, 0x65, 0x70, 0x65, 0x65, 0x69, 0x76, 0x69,
+0x3b, 0x76, 0x75, 0x6f, 0x73, 0x73, 0x61, 0x61, 0x72, 0x67, 0xe2, 0x3b,
+0x6d, 0x61, 0x6a, 0x65, 0x62, 0x61, 0x61, 0x72, 0x67, 0xe2, 0x3b, 0x6b,
+0x6f, 0x73, 0x6b, 0x6f, 0x68, 0x6f, 0x3b, 0x74, 0x75, 0x6f, 0x72, 0xe2,
+0x73, 0x74, 0x75, 0x76, 0x3b, 0x76, 0xe1, 0x73, 0x74, 0x75, 0x70, 0x70,
+0x65, 0x65, 0x69, 0x76, 0x69, 0x3b, 0x6c, 0xe1, 0x76, 0x75, 0x72, 0x64,
+0x75, 0x76, 0x70, 0x61, 0x73, 0x3b, 0x76, 0x75, 0x6f, 0x3b, 0x6d, 0x61,
+0x6a, 0x3b, 0x6b, 0x6f, 0x73, 0x3b, 0x74, 0x75, 0x6f, 0x3b, 0x76, 0xe1,
+0x73, 0x3b, 0x6c, 0xe1, 0x76, 0x70, 0x3b, 0x56, 0x3b, 0x4d, 0x3b, 0x4b,
+0x3b, 0x54, 0x3b, 0x56, 0x3b, 0x4c, 0x4d, 0x69, 0x6e, 0x67, 0x67, 0x75,
+0x3b, 0x53, 0x65, 0x6e, 0x69, 0x6e, 0x3b, 0x53, 0x65, 0x6c, 0x61, 0x73,
+0x61, 0x3b, 0x52, 0x61, 0x62, 0x75, 0x3b, 0x4b, 0x61, 0x6d, 0x69, 0x73,
+0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x3b, 0x53, 0x61, 0x62, 0x74, 0x75,
+0x4d, 0x69, 0x6e, 0x3b, 0x53, 0x65, 0x6e, 0x3b, 0x53, 0x65, 0x6c, 0x3b,
+0x52, 0x61, 0x62, 0x3b, 0x4b, 0x61, 0x6d, 0x3b, 0x4a, 0x75, 0x6d, 0x3b,
+0x53, 0x61, 0x62, 0x4d, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x52, 0x3b, 0x4b,
+0x3b, 0x4a, 0x3b, 0x53, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x63, 0x61,
+0x3b, 0x6c, 0x75, 0x6e, 0x65, 0x64, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x74,
+0x65, 0x64, 0x69, 0x3b, 0x6d, 0x65, 0x72, 0x63, 0x75, 0x72, 0x69, 0x64,
+0x69, 0x3b, 0x6a, 0x6f, 0x76, 0x65, 0x64, 0x69, 0x3b, 0x76, 0x65, 0x6e,
+0x65, 0x72, 0x64, 0x69, 0x3b, 0x73, 0x61, 0x62, 0x62, 0x61, 0x74, 0x6f,
+0x64, 0x6f, 0x6d, 0x3b, 0x6c, 0x75, 0x6e, 0x3b, 0x6d, 0x61, 0x72, 0x3b,
+0x6d, 0x65, 0x72, 0x3b, 0x6a, 0x6f, 0x76, 0x3b, 0x76, 0x65, 0x6e, 0x3b,
+0x73, 0x61, 0x62, 0x64, 0x3b, 0x6c, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x6a,
+0x3b, 0x76, 0x3b, 0x73, 0x73, 0x6f, 0x6c, 0x65, 0x64, 0xed, 0x3b, 0x6c,
+0x75, 0x6e, 0x65, 0x64, 0xed, 0x3b, 0x6d, 0x61, 0x72, 0x64, 0xed, 0x3b,
+0x6d, 0x65, 0x72, 0x63, 0x75, 0x72, 0x64, 0xed, 0x3b, 0x6a, 0x6f, 0x76,
+0x65, 0x64, 0xed, 0x3b, 0x76, 0x65, 0x6e, 0x65, 0x72, 0x64, 0xed, 0x3b,
+0x73, 0x61, 0x74, 0x75, 0x72, 0x64, 0xed, 0x73, 0x6f, 0x6c, 0x2e, 0x3b,
+0x6c, 0x75, 0x6e, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x6d, 0x65,
+0x72, 0x2e, 0x3b, 0x6a, 0x6f, 0x76, 0x2e, 0x3b, 0x76, 0x65, 0x6e, 0x2e,
+0x3b, 0x73, 0x61, 0x74, 0x2e, 0x53, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d,
+0x3b, 0x4a, 0x3b, 0x56, 0x3b, 0x53, 0x14c8, 0x1466, 0x144f, 0x1591, 0x152d, 0x1585,
+0x3b, 0x14c7, 0x14a1, 0x1490, 0x153e, 0x152d, 0x1405, 0x3b, 0x14c7, 0x14a1, 0x1490, 0x153e,
+0x152d, 0x1405, 0x14d5, 0x1585, 0x146d, 0x3b, 0x1431, 0x1593, 0x1466, 0x14ef, 0x1585, 0x3b,
+0x14ef, 0x1455, 0x14bb, 0x14a5, 0x1585, 0x3b, 0x1455, 0x14ea, 0x14d5, 0x14bb, 0x14a5, 0x1405,
+0x1466, 0x3b, 0x14c8, 0x1466, 0x14f0, 0x1591, 0x152d, 0x14db, 0x1550, 0x14c2, 0x140a, 0x1585,
+0x44, 0xe9, 0x20, 0x44, 0x6f, 0x6d, 0x68, 0x6e, 0x61, 0x69, 0x67, 0x68,
+0x3b, 0x44, 0xe9, 0x20, 0x4c, 0x75, 0x61, 0x69, 0x6e, 0x3b, 0x44, 0xe9,
+0x20, 0x4d, 0xe1, 0x69, 0x72, 0x74, 0x3b, 0x44, 0xe9, 0x20, 0x43, 0xe9,
+0x61, 0x64, 0x61, 0x6f, 0x69, 0x6e, 0x3b, 0x44, 0xe9, 0x61, 0x72, 0x64,
+0x61, 0x6f, 0x69, 0x6e, 0x3b, 0x44, 0xe9, 0x20, 0x68, 0x41, 0x6f, 0x69,
+0x6e, 0x65, 0x3b, 0x44, 0xe9, 0x20, 0x53, 0x61, 0x74, 0x68, 0x61, 0x69,
+0x72, 0x6e, 0x44, 0x6f, 0x6d, 0x68, 0x3b, 0x4c, 0x75, 0x61, 0x6e, 0x3b,
+0x4d, 0xe1, 0x69, 0x72, 0x74, 0x3b, 0x43, 0xe9, 0x61, 0x64, 0x3b, 0x44,
+0xe9, 0x61, 0x72, 0x3b, 0x41, 0x6f, 0x69, 0x6e, 0x65, 0x3b, 0x53, 0x61,
+0x74, 0x68, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x43, 0x3b, 0x44, 0x3b,
+0x41, 0x3b, 0x53, 0x64, 0x6f, 0x6d, 0x65, 0x6e, 0x69, 0x63, 0x61, 0x3b,
+0x6c, 0x75, 0x6e, 0x65, 0x64, 0xec, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x65,
+0x64, 0xec, 0x3b, 0x6d, 0x65, 0x72, 0x63, 0x6f, 0x6c, 0x65, 0x64, 0xec,
+0x3b, 0x67, 0x69, 0x6f, 0x76, 0x65, 0x64, 0xec, 0x3b, 0x76, 0x65, 0x6e,
+0x65, 0x72, 0x64, 0xec, 0x3b, 0x73, 0x61, 0x62, 0x61, 0x74, 0x6f, 0x64,
+0x6f, 0x6d, 0x3b, 0x6c, 0x75, 0x6e, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d,
+0x65, 0x72, 0x3b, 0x67, 0x69, 0x6f, 0x3b, 0x76, 0x65, 0x6e, 0x3b, 0x73,
+0x61, 0x62, 0x65e5, 0x66dc, 0x65e5, 0x3b, 0x6708, 0x66dc, 0x65e5, 0x3b, 0x706b, 0x66dc,
+0x65e5, 0x3b, 0x6c34, 0x66dc, 0x65e5, 0x3b, 0x6728, 0x66dc, 0x65e5, 0x3b, 0x91d1, 0x66dc,
+0x65e5, 0x3b, 0x571f, 0x66dc, 0x65e5, 0x65e5, 0x3b, 0x6708, 0x3b, 0x706b, 0x3b, 0x6c34,
+0x3b, 0x6728, 0x3b, 0x91d1, 0x3b, 0x571f, 0x41, 0x68, 0x61, 0x64, 0x3b, 0x53,
+0x65, 0x6e, 0x69, 0x6e, 0x3b, 0x53, 0x65, 0x6c, 0x61, 0x73, 0x61, 0x3b,
+0x52, 0x61, 0x62, 0x75, 0x3b, 0x4b, 0x61, 0x6d, 0x69, 0x73, 0x3b, 0x4a,
+0x75, 0x6d, 0x61, 0x74, 0x3b, 0x53, 0x61, 0x62, 0x74, 0x75, 0x41, 0x68,
+0x61, 0x64, 0x3b, 0x53, 0x65, 0x6e, 0x3b, 0x53, 0x65, 0x6c, 0x3b, 0x52,
+0x61, 0x62, 0x3b, 0x4b, 0x61, 0x6d, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x53,
+0x61, 0x62, 0x41, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x52, 0x3b, 0x4b, 0x3b,
+0x4a, 0x3b, 0x53, 0x4c, 0x61, 0x64, 0x69, 0x3b, 0x4c, 0x69, 0x6e, 0x74,
+0x61, 0x6e, 0x69, 0x3b, 0x54, 0x61, 0x6c, 0x61, 0x74, 0x61, 0x3b, 0x4c,
+0x61, 0x72, 0x62, 0x61, 0x3b, 0x4c, 0x61, 0x6d, 0x69, 0x74, 0x3b, 0x4a,
+0x75, 0x6d, 0x61, 0x3b, 0x41, 0x73, 0x61, 0x62, 0x61, 0x72, 0x4c, 0x61,
+0x64, 0x3b, 0x4c, 0x69, 0x6e, 0x3b, 0x54, 0x61, 0x6c, 0x3b, 0x4c, 0x61,
+0x72, 0x3b, 0x4c, 0x61, 0x6d, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x41, 0x73,
+0x61, 0x44, 0x69, 0x6d, 0x61, 0x73, 0x3b, 0x54, 0x65, 0x6e, 0x65, 0x14b,
+0x3b, 0x54, 0x61, 0x6c, 0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x72,
+0x62, 0x61, 0x79, 0x3b, 0x41, 0x72, 0x61, 0x6d, 0x69, 0x73, 0x61, 0x79,
+0x3b, 0x41, 0x72, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x53, 0x69, 0x62, 0x69,
+0x74, 0x69, 0x44, 0x69, 0x6d, 0x3b, 0x54, 0x65, 0x6e, 0x3b, 0x54, 0x61,
+0x6c, 0x3b, 0x41, 0x6c, 0x61, 0x3b, 0x41, 0x72, 0x61, 0x3b, 0x41, 0x72,
+0x6a, 0x3b, 0x53, 0x69, 0x62, 0x44, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x41,
+0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x53, 0x64, 0x75, 0x6d, 0x69, 0x6e, 0x67,
+0x75, 0x3b, 0x73, 0x69, 0x67, 0x75, 0x6e, 0x64, 0x61, 0x2d, 0x66, 0x65,
+0x72, 0x61, 0x3b, 0x74, 0x65, 0x72, 0x73, 0x61, 0x2d, 0x66, 0x65, 0x72,
+0x61, 0x3b, 0x6b, 0x75, 0x61, 0x72, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x72,
+0x61, 0x3b, 0x6b, 0x69, 0x6e, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61,
+0x3b, 0x73, 0x65, 0x73, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b,
+0x73, 0xe1, 0x62, 0x61, 0x64, 0x75, 0x64, 0x75, 0x6d, 0x3b, 0x73, 0x69,
+0x67, 0x3b, 0x74, 0x65, 0x72, 0x3b, 0x6b, 0x75, 0x61, 0x3b, 0x6b, 0x69,
+0x6e, 0x3b, 0x73, 0x65, 0x73, 0x3b, 0x73, 0x61, 0x62, 0x44, 0x3b, 0x53,
+0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x53, 0x3b, 0x53, 0x41, 0x63,
+0x65, 0x72, 0x3b, 0x41, 0x72, 0x69, 0x6d, 0x3b, 0x41, 0x72, 0x61, 0x6d,
+0x3b, 0x41, 0x68, 0x61, 0x64, 0x3b, 0x41, 0x6d, 0x68, 0x61, 0x64, 0x3b,
+0x53, 0x65, 0x6d, 0x3b, 0x53, 0x65, 0x64, 0x59, 0x61, 0x6e, 0x61, 0x73,
+0x73, 0x3b, 0x53, 0x61, 0x6e, 0x61, 0x73, 0x73, 0x3b, 0x4b, 0x72, 0x61,
+0x1e0d, 0x61, 0x73, 0x73, 0x3b, 0x4b, 0x75, 0x1e93, 0x61, 0x73, 0x73, 0x3b,
+0x53, 0x61, 0x6d, 0x61, 0x73, 0x73, 0x3b, 0x53, 0x1e0d, 0x69, 0x73, 0x61,
+0x73, 0x73, 0x3b, 0x53, 0x61, 0x79, 0x61, 0x73, 0x73, 0x41, 0x63, 0x65,
+0x3b, 0x41, 0x72, 0x69, 0x3b, 0x41, 0x72, 0x61, 0x3b, 0x41, 0x68, 0x61,
+0x3b, 0x41, 0x6d, 0x68, 0x3b, 0x53, 0x65, 0x6d, 0x3b, 0x53, 0x65, 0x64,
+0x59, 0x61, 0x6e, 0x3b, 0x53, 0x61, 0x6e, 0x3b, 0x4b, 0x72, 0x61, 0x1e0d,
+0x3b, 0x4b, 0x75, 0x1e93, 0x3b, 0x53, 0x61, 0x6d, 0x3b, 0x53, 0x1e0d, 0x69,
+0x73, 0x3b, 0x53, 0x61, 0x79, 0x59, 0x3b, 0x53, 0x3b, 0x4b, 0x3b, 0x4b,
+0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x53, 0x43, 0x3b, 0x52, 0x3b, 0x52, 0x3b,
+0x48, 0x3b, 0x4d, 0x3b, 0x53, 0x3b, 0x53, 0x73, 0x254, 0x6e, 0x64, 0x69,
+0x3b, 0x6c, 0x75, 0x6e, 0x64, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x64, 0x69,
+0x3b, 0x6d, 0x25b, 0x72, 0x6b, 0x25b, 0x72, 0x25b, 0x64, 0x69, 0x3b, 0x79,
+0x65, 0x64, 0x69, 0x3b, 0x76, 0x61, 0x14b, 0x64, 0x25b, 0x72, 0x25b, 0x64,
+0x69, 0x3b, 0x6d, 0x254, 0x6e, 0x254, 0x20, 0x73, 0x254, 0x6e, 0x64, 0x69,
+0x73, 0x6f, 0x3b, 0x6c, 0x75, 0x3b, 0x6d, 0x61, 0x3b, 0x6d, 0x25b, 0x3b,
+0x79, 0x65, 0x3b, 0x76, 0x61, 0x3b, 0x6d, 0x73, 0x73, 0x61, 0x70, 0x61,
+0x61, 0x74, 0x3b, 0x61, 0x74, 0x61, 0x61, 0x73, 0x69, 0x6e, 0x6e, 0x67,
+0x6f, 0x72, 0x6e, 0x65, 0x71, 0x3b, 0x6d, 0x61, 0x72, 0x6c, 0x75, 0x6e,
+0x6e, 0x67, 0x6f, 0x72, 0x6e, 0x65, 0x71, 0x3b, 0x70, 0x69, 0x6e, 0x67,
+0x61, 0x73, 0x75, 0x6e, 0x6e, 0x67, 0x6f, 0x72, 0x6e, 0x65, 0x71, 0x3b,
+0x73, 0x69, 0x73, 0x61, 0x6d, 0x61, 0x6e, 0x6e, 0x67, 0x6f, 0x72, 0x6e,
+0x65, 0x71, 0x3b, 0x74, 0x61, 0x6c, 0x6c, 0x69, 0x6d, 0x61, 0x6e, 0x6e,
+0x67, 0x6f, 0x72, 0x6e, 0x65, 0x71, 0x3b, 0x61, 0x72, 0x66, 0x69, 0x6e,
+0x69, 0x6e, 0x6e, 0x67, 0x6f, 0x72, 0x6e, 0x65, 0x71, 0x73, 0x61, 0x70,
+0x3b, 0x61, 0x74, 0x61, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x70, 0x69, 0x6e,
+0x3b, 0x73, 0x69, 0x73, 0x3b, 0x74, 0x61, 0x6c, 0x3b, 0x61, 0x72, 0x66,
+0x53, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x50, 0x3b, 0x53, 0x3b, 0x54, 0x3b,
+0x41, 0x4b, 0x6f, 0x74, 0x69, 0x73, 0x61, 0x70, 0x3b, 0x4b, 0x6f, 0x74,
+0x61, 0x61, 0x69, 0x3b, 0x4b, 0x6f, 0x61, 0x65, 0x6e, 0x67, 0x2019, 0x3b,
+0x4b, 0x6f, 0x73, 0x6f, 0x6d, 0x6f, 0x6b, 0x3b, 0x4b, 0x6f, 0x61, 0x6e,
+0x67, 0x2019, 0x77, 0x61, 0x6e, 0x3b, 0x4b, 0x6f, 0x6d, 0x75, 0x75, 0x74,
+0x3b, 0x4b, 0x6f, 0x6c, 0x6f, 0x4b, 0x74, 0x73, 0x3b, 0x4b, 0x6f, 0x74,
+0x3b, 0x4b, 0x6f, 0x6f, 0x3b, 0x4b, 0x6f, 0x73, 0x3b, 0x4b, 0x6f, 0x61,
+0x3b, 0x4b, 0x6f, 0x6d, 0x3b, 0x4b, 0x6f, 0x6c, 0x54, 0x3b, 0x54, 0x3b,
+0x4f, 0x3b, 0x53, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4c, 0x57, 0x61, 0x20,
+0x6b, 0x79, 0x75, 0x6d, 0x77, 0x61, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x77,
+0x61, 0x6d, 0x62, 0x129, 0x6c, 0x129, 0x6c, 0x79, 0x61, 0x3b, 0x57, 0x61,
+0x20, 0x6b, 0x65, 0x6c, 0x129, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x61, 0x74,
+0x61, 0x74, 0x169, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x61, 0x3b,
+0x57, 0x61, 0x20, 0x6b, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x57, 0x61,
+0x20, 0x74, 0x68, 0x61, 0x6e, 0x74, 0x68, 0x61, 0x74, 0x169, 0x57, 0x6b,
+0x79, 0x3b, 0x57, 0x6b, 0x77, 0x3b, 0x57, 0x6b, 0x6c, 0x3b, 0x57, 0x74,
+0x169, 0x3b, 0x57, 0x6b, 0x6e, 0x3b, 0x57, 0x74, 0x6e, 0x3b, 0x57, 0x74,
+0x68, 0x59, 0x3b, 0x57, 0x3b, 0x45, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41,
+0x3b, 0x41, 0xcad, 0xcbe, 0xca8, 0xcc1, 0xcb5, 0xcbe, 0xcb0, 0x3b, 0xcb8, 0xccb,
+0xcae, 0xcb5, 0xcbe, 0xcb0, 0x3b, 0xcae, 0xc82, 0xc97, 0xcb3, 0xcb5, 0xcbe, 0xcb0,
+0x3b, 0xcac, 0xcc1, 0xca7, 0xcb5, 0xcbe, 0xcb0, 0x3b, 0xc97, 0xcc1, 0xcb0, 0xcc1,
+0xcb5, 0xcbe, 0xcb0, 0x3b, 0xcb6, 0xcc1, 0xc95, 0xccd, 0xcb0, 0xcb5, 0xcbe, 0xcb0,
+0x3b, 0xcb6, 0xca8, 0xcbf, 0xcb5, 0xcbe, 0xcb0, 0xcad, 0xcbe, 0xca8, 0xcc1, 0x3b,
+0xcb8, 0xccb, 0xcae, 0x3b, 0xcae, 0xc82, 0xc97, 0xcb3, 0x3b, 0xcac, 0xcc1, 0xca7,
+0x3b, 0xc97, 0xcc1, 0xcb0, 0xcc1, 0x3b, 0xcb6, 0xcc1, 0xc95, 0xccd, 0xcb0, 0x3b,
+0xcb6, 0xca8, 0xcbf, 0xcad, 0xcbe, 0x3b, 0xcb8, 0xccb, 0x3b, 0xcae, 0xc82, 0x3b,
+0xcac, 0xcc1, 0x3b, 0xc97, 0xcc1, 0x3b, 0xcb6, 0xcc1, 0x3b, 0xcb6, 0x627, 0x64e,
+0x62a, 0x6be, 0x648, 0x627, 0x631, 0x3b, 0x698, 0x654, 0x646, 0x62f, 0x631, 0x655,
+0x631, 0x648, 0x627, 0x631, 0x3b, 0x628, 0x6c6, 0x645, 0x648, 0x627, 0x631, 0x3b,
+0x628, 0x648, 0x62f, 0x648, 0x627, 0x631, 0x3b, 0x628, 0x631, 0x620, 0x633, 0x648,
+0x627, 0x631, 0x3b, 0x62c, 0x64f, 0x645, 0x6c1, 0x3b, 0x628, 0x679, 0x648, 0x627,
+0x631, 0x622, 0x62a, 0x6be, 0x648, 0x627, 0x631, 0x3b, 0x698, 0x654, 0x646, 0x62f,
+0x655, 0x631, 0x648, 0x627, 0x631, 0x3b, 0x628, 0x6c6, 0x645, 0x648, 0x627, 0x631,
+0x3b, 0x628, 0x648, 0x62f, 0x648, 0x627, 0x631, 0x3b, 0x628, 0x631, 0x620, 0x633,
+0x648, 0x627, 0x631, 0x3b, 0x62c, 0x64f, 0x645, 0x6c1, 0x3b, 0x628, 0x679, 0x648,
+0x627, 0x631, 0x627, 0x3b, 0x698, 0x3b, 0x628, 0x3b, 0x628, 0x3b, 0x628, 0x3b,
+0x62c, 0x3b, 0x628, 0x906, 0x925, 0x935, 0x93e, 0x930, 0x3b, 0x91a, 0x902, 0x926,
+0x93f, 0x930, 0x935, 0x93e, 0x930, 0x3b, 0x92c, 0x941, 0x935, 0x93e, 0x930, 0x3b,
+0x92c, 0x94b, 0x926, 0x935, 0x93e, 0x930, 0x3b, 0x92c, 0x94d, 0x930, 0x947, 0x938,
+0x935, 0x93e, 0x930, 0x3b, 0x91c, 0x941, 0x92e, 0x94d, 0x92e, 0x93e, 0x3b, 0x92c,
+0x91f, 0x935, 0x93e, 0x930, 0x906, 0x925, 0x935, 0x93e, 0x930, 0x3b, 0x91a, 0x93c,
+0x902, 0x926, 0x93f, 0x930, 0x935, 0x93e, 0x930, 0x3b, 0x92c, 0x94b, 0x92e, 0x935,
+0x93e, 0x930, 0x3b, 0x92c, 0x94b, 0x926, 0x935, 0x93e, 0x930, 0x3b, 0x92c, 0x94d,
+0x930, 0x947, 0x938, 0x935, 0x93e, 0x930, 0x3b, 0x91c, 0x941, 0x92e, 0x93e, 0x3b,
+0x92c, 0x91f, 0x935, 0x93e, 0x930, 0x906, 0x925, 0x935, 0x93e, 0x930, 0x3b, 0x91a,
+0x902, 0x926, 0x93f, 0x930, 0x935, 0x93e, 0x930, 0x3b, 0x92c, 0x941, 0x935, 0x93e,
+0x930, 0x3b, 0x92c, 0x94b, 0x926, 0x935, 0x93e, 0x930, 0x3b, 0x92c, 0x94d, 0x930,
+0x947, 0x938, 0x935, 0x93e, 0x930, 0x3b, 0x91c, 0x941, 0x92e, 0x93e, 0x3b, 0x92c,
+0x91f, 0x935, 0x93e, 0x930, 0x905, 0x3b, 0x91a, 0x3b, 0x92c, 0x3b, 0x92c, 0x3b,
+0x92c, 0x3b, 0x91c, 0x3b, 0x92c, 0x436, 0x435, 0x43a, 0x441, 0x435, 0x43d, 0x431,
+0x456, 0x3b, 0x434, 0x4af, 0x439, 0x441, 0x435, 0x43d, 0x431, 0x456, 0x3b, 0x441,
+0x435, 0x439, 0x441, 0x435, 0x43d, 0x431, 0x456, 0x3b, 0x441, 0x4d9, 0x440, 0x441,
+0x435, 0x43d, 0x431, 0x456, 0x3b, 0x431, 0x435, 0x439, 0x441, 0x435, 0x43d, 0x431,
+0x456, 0x3b, 0x436, 0x4b1, 0x43c, 0x430, 0x3b, 0x441, 0x435, 0x43d, 0x431, 0x456,
+0x436, 0x441, 0x3b, 0x434, 0x441, 0x3b, 0x441, 0x441, 0x3b, 0x441, 0x440, 0x3b,
+0x431, 0x441, 0x3b, 0x436, 0x43c, 0x3b, 0x441, 0x431, 0x416, 0x3b, 0x414, 0x3b,
+0x421, 0x3b, 0x421, 0x3b, 0x411, 0x3b, 0x416, 0x3b, 0x421, 0x17a2, 0x17b6, 0x1791,
+0x17b7, 0x178f, 0x17d2, 0x1799, 0x3b, 0x1785, 0x1793, 0x17d2, 0x1791, 0x3b, 0x17a2, 0x1784,
+0x17d2, 0x1782, 0x17b6, 0x179a, 0x3b, 0x1796, 0x17bb, 0x1792, 0x3b, 0x1796, 0x17d2, 0x179a,
+0x17a0, 0x179f, 0x17d2, 0x1794, 0x178f, 0x17b7, 0x17cd, 0x3b, 0x179f, 0x17bb, 0x1780, 0x17d2,
+0x179a, 0x3b, 0x179f, 0x17c5, 0x179a, 0x17cd, 0x17a2, 0x17b6, 0x1791, 0x17b7, 0x178f, 0x17d2,
+0x1799, 0x3b, 0x1785, 0x17d0, 0x1793, 0x17d2, 0x1791, 0x3b, 0x17a2, 0x1784, 0x17d2, 0x1782,
+0x17b6, 0x179a, 0x3b, 0x1796, 0x17bb, 0x1792, 0x3b, 0x1796, 0x17d2, 0x179a, 0x17a0, 0x179f,
+0x17d2, 0x1794, 0x178f, 0x17b7, 0x17cd, 0x3b, 0x179f, 0x17bb, 0x1780, 0x17d2, 0x179a, 0x3b,
+0x179f, 0x17c5, 0x179a, 0x17cd, 0x17a2, 0x17b6, 0x1791, 0x17b7, 0x178f, 0x17d2, 0x1799, 0x3b,
+0x1785, 0x1793, 0x17d2, 0x1791, 0x3b, 0x17a2, 0x1784, 0x17d2, 0x1782, 0x17b6, 0x179a, 0x3b,
+0x1796, 0x17bb, 0x1792, 0x3b, 0x1796, 0x17d2, 0x179a, 0x17a0, 0x3b, 0x179f, 0x17bb, 0x1780,
+0x17d2, 0x179a, 0x3b, 0x179f, 0x17c5, 0x179a, 0x17cd, 0x17a2, 0x3b, 0x1785, 0x3b, 0x17a2,
+0x3b, 0x1796, 0x3b, 0x1796, 0x3b, 0x179f, 0x3b, 0x179f, 0x4b, 0x69, 0x75, 0x6d,
+0x69, 0x61, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x169,
+0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x69, 0x6e, 0x65, 0x3b, 0x4e, 0x6a,
+0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x61, 0x3b, 0x41, 0x72, 0x61, 0x6d,
+0x69, 0x74, 0x68, 0x69, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b,
+0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x74, 0x68, 0x69, 0x4b, 0x4d,
+0x41, 0x3b, 0x4e, 0x54, 0x54, 0x3b, 0x4e, 0x4d, 0x4e, 0x3b, 0x4e, 0x4d,
+0x54, 0x3b, 0x41, 0x52, 0x54, 0x3b, 0x4e, 0x4d, 0x41, 0x3b, 0x4e, 0x4d,
+0x4d, 0x4b, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x41, 0x3b, 0x4e,
+0x3b, 0x4e, 0x4b, 0x75, 0x20, 0x63, 0x79, 0x75, 0x6d, 0x77, 0x65, 0x72,
+0x75, 0x3b, 0x4b, 0x75, 0x77, 0x61, 0x20, 0x6d, 0x62, 0x65, 0x72, 0x65,
+0x3b, 0x4b, 0x75, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x62, 0x69, 0x72, 0x69,
+0x3b, 0x4b, 0x75, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x74, 0x75,
+0x3b, 0x4b, 0x75, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x65, 0x3b, 0x4b,
+0x75, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x6e, 0x75, 0x3b, 0x4b,
+0x75, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x74,
+0x75, 0x63, 0x79, 0x75, 0x2e, 0x3b, 0x6d, 0x62, 0x65, 0x2e, 0x3b, 0x6b,
+0x61, 0x62, 0x2e, 0x3b, 0x67, 0x74, 0x75, 0x2e, 0x3b, 0x6b, 0x61, 0x6e,
+0x2e, 0x3b, 0x67, 0x6e, 0x75, 0x2e, 0x3b, 0x67, 0x6e, 0x64, 0x2e, 0x906,
+0x92f, 0x924, 0x93e, 0x930, 0x3b, 0x938, 0x94b, 0x92e, 0x93e, 0x930, 0x3b, 0x92e,
+0x902, 0x917, 0x933, 0x93e, 0x930, 0x3b, 0x92c, 0x941, 0x927, 0x935, 0x93e, 0x930,
+0x3b, 0x92c, 0x93f, 0x930, 0x947, 0x938, 0x94d, 0x924, 0x93e, 0x930, 0x3b, 0x936,
+0x941, 0x915, 0x94d, 0x930, 0x93e, 0x930, 0x3b, 0x936, 0x947, 0x928, 0x935, 0x93e,
+0x930, 0x906, 0x3b, 0x938, 0x94b, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, 0x3b,
+0x92c, 0x3b, 0x936, 0x941, 0x3b, 0x936, 0x947, 0x906, 0x3b, 0x938, 0x94b, 0x3b,
+0x92e, 0x902, 0x3b, 0x92c, 0x941, 0x3b, 0x92c, 0x93f, 0x3b, 0x936, 0x941, 0x3b,
+0x936, 0x947, 0xc77c, 0xc694, 0xc77c, 0x3b, 0xc6d4, 0xc694, 0xc77c, 0x3b, 0xd654, 0xc694,
+0xc77c, 0x3b, 0xc218, 0xc694, 0xc77c, 0x3b, 0xbaa9, 0xc694, 0xc77c, 0x3b, 0xae08, 0xc694,
+0xc77c, 0x3b, 0xd1a0, 0xc694, 0xc77c, 0xc77c, 0x3b, 0xc6d4, 0x3b, 0xd654, 0x3b, 0xc218,
+0x3b, 0xbaa9, 0x3b, 0xae08, 0x3b, 0xd1a0, 0x41, 0x6c, 0x68, 0x61, 0x64, 0x69,
+0x3b, 0x41, 0x74, 0x69, 0x6e, 0x6e, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x6c,
+0x61, 0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x72, 0x62, 0x61, 0x3b,
+0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x69, 0x73, 0x61, 0x3b, 0x41, 0x6c,
+0x7a, 0x75, 0x6d, 0x61, 0x3b, 0x41, 0x73, 0x69, 0x62, 0x74, 0x69, 0x41,
+0x6c, 0x68, 0x3b, 0x41, 0x74, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x3b, 0x41,
+0x6c, 0x61, 0x3b, 0x41, 0x6c, 0x6d, 0x3b, 0x41, 0x6c, 0x7a, 0x3b, 0x41,
+0x73, 0x69, 0x48, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b,
+0x4c, 0x3b, 0x53, 0x41, 0x6c, 0x68, 0x61, 0x64, 0x69, 0x3b, 0x41, 0x74,
+0x69, 0x6e, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x6c, 0x61, 0x74, 0x61, 0x3b,
+0x41, 0x6c, 0x61, 0x72, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d,
+0x69, 0x69, 0x73, 0x61, 0x3b, 0x41, 0x6c, 0x6a, 0x75, 0x6d, 0x61, 0x3b,
+0x41, 0x73, 0x73, 0x61, 0x62, 0x64, 0x75, 0x41, 0x6c, 0x68, 0x3b, 0x41,
+0x74, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x3b, 0x41,
+0x6c, 0x6d, 0x3b, 0x41, 0x6c, 0x6a, 0x3b, 0x41, 0x73, 0x73, 0x79, 0x65,
+0x6b, 0x15f, 0x65, 0x6d, 0x3b, 0x64, 0x75, 0x15f, 0x65, 0x6d, 0x3b, 0x73,
+0xea, 0x15f, 0x65, 0x6d, 0x3b, 0xe7, 0x61, 0x72, 0x15f, 0x65, 0x6d, 0x3b,
+0x70, 0xea, 0x6e, 0x63, 0x15f, 0x65, 0x6d, 0x3b, 0xee, 0x6e, 0xee, 0x3b,
+0x15f, 0x65, 0x6d, 0xee, 0x79, 0x15f, 0x6d, 0x3b, 0x64, 0x15f, 0x6d, 0x3b,
+0x73, 0x15f, 0x6d, 0x3b, 0xe7, 0x15f, 0x6d, 0x3b, 0x70, 0x15f, 0x6d, 0x3b,
+0xee, 0x6e, 0xee, 0x3b, 0x15f, 0x65, 0x6d, 0x59, 0x3b, 0x44, 0x3b, 0x53,
+0x3b, 0xc7, 0x3b, 0x50, 0x3b, 0xce, 0x3b, 0x15e, 0x73, 0x254, 0x301, 0x6e,
+0x64, 0x254, 0x3b, 0x6d, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x3b, 0x73, 0x254,
+0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x61, 0x66, 0xfa, 0x20, 0x6d, 0xe1,
+0x62, 0x61, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x61,
+0x66, 0xfa, 0x20, 0x6d, 0xe1, 0x6c, 0x61, 0x6c, 0x3b, 0x73, 0x254, 0x301,
+0x6e, 0x64, 0x254, 0x20, 0x6d, 0x61, 0x66, 0xfa, 0x20, 0x6d, 0xe1, 0x6e,
+0x61, 0x3b, 0x6d, 0x61, 0x62, 0xe1, 0x67, 0xe1, 0x20, 0x6d, 0xe1, 0x20,
+0x73, 0x75, 0x6b, 0x75, 0x6c, 0x3b, 0x73, 0xe1, 0x73, 0x61, 0x64, 0x69,
+0x73, 0x254, 0x301, 0x6e, 0x3b, 0x6d, 0x254, 0x301, 0x6e, 0x3b, 0x73, 0x6d,
+0x62, 0x3b, 0x73, 0x6d, 0x6c, 0x3b, 0x73, 0x6d, 0x6e, 0x3b, 0x6d, 0x62,
+0x73, 0x3b, 0x73, 0x61, 0x73, 0x73, 0x3b, 0x6d, 0x3b, 0x73, 0x3b, 0x73,
+0x3b, 0x73, 0x3b, 0x6d, 0x3b, 0x73, 0x436, 0x435, 0x43a, 0x448, 0x435, 0x43c,
+0x431, 0x438, 0x3b, 0x434, 0x4af, 0x439, 0x448, 0x4e9, 0x43c, 0x431, 0x4af, 0x3b,
+0x448, 0x435, 0x439, 0x448, 0x435, 0x43c, 0x431, 0x438, 0x3b, 0x448, 0x430, 0x440,
+0x448, 0x435, 0x43c, 0x431, 0x438, 0x3b, 0x431, 0x435, 0x439, 0x448, 0x435, 0x43c,
+0x431, 0x438, 0x3b, 0x436, 0x443, 0x43c, 0x430, 0x3b, 0x438, 0x448, 0x435, 0x43c,
+0x431, 0x438, 0x436, 0x435, 0x43a, 0x2e, 0x3b, 0x434, 0x4af, 0x439, 0x2e, 0x3b,
+0x448, 0x435, 0x439, 0x448, 0x2e, 0x3b, 0x448, 0x430, 0x440, 0x448, 0x2e, 0x3b,
+0x431, 0x435, 0x439, 0x448, 0x2e, 0x3b, 0x436, 0x443, 0x43c, 0x430, 0x3b, 0x438,
+0x448, 0x43c, 0x2e, 0x416, 0x3b, 0x414, 0x3b, 0x428, 0x3b, 0x428, 0x3b, 0x411,
+0x3b, 0x416, 0x3b, 0x418, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x77, 0x61,
+0x6b, 0x21f, 0x61, 0x14b, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x77,
+0x61, 0x14b, 0x17e, 0x69, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x6e,
+0x75, 0x14b, 0x70, 0x61, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x79,
+0x61, 0x6d, 0x6e, 0x69, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x74,
+0x6f, 0x70, 0x61, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x7a, 0x61,
+0x70, 0x74, 0x61, 0x14b, 0x3b, 0x4f, 0x77, 0xe1, 0x14b, 0x67, 0x79, 0x75,
+0x17e, 0x61, 0x17e, 0x61, 0x70, 0x69, 0x41, 0x3b, 0x57, 0x3b, 0x4e, 0x3b,
+0x59, 0x3b, 0x54, 0x3b, 0x5a, 0x3b, 0x4f, 0x4a, 0x75, 0x6d, 0x61, 0x70,
+0xed, 0x69, 0x72, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0xe1, 0x74,
+0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0xed, 0x6e, 0x65, 0x3b, 0x4a, 0x75,
+0x6d, 0x61, 0x74, 0xe1, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x61, 0x6d,
+0xed, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0xe1, 0x61, 0x3b,
+0x4a, 0x75, 0x6d, 0x61, 0x6d, 0xf3, 0x6f, 0x73, 0x69, 0x50, 0xed, 0x69,
+0x6c, 0x69, 0x3b, 0x54, 0xe1, 0x61, 0x74, 0x75, 0x3b, 0xcd, 0x6e, 0x65,
+0x3b, 0x54, 0xe1, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49,
+0x6a, 0x6d, 0x3b, 0x4d, 0xf3, 0x6f, 0x73, 0x69, 0x50, 0x3b, 0x54, 0x3b,
+0x45, 0x3b, 0x4f, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x4d, 0xea7, 0xeb1, 0xe99,
+0xead, 0xeb2, 0xe97, 0xeb4, 0xe94, 0x3b, 0xea7, 0xeb1, 0xe99, 0xe88, 0xeb1, 0xe99,
+0x3b, 0xea7, 0xeb1, 0xe99, 0xead, 0xeb1, 0xe87, 0xe84, 0xeb2, 0xe99, 0x3b, 0xea7,
+0xeb1, 0xe99, 0xe9e, 0xeb8, 0xe94, 0x3b, 0xea7, 0xeb1, 0xe99, 0xe9e, 0xeb0, 0xeab,
+0xeb1, 0xe94, 0x3b, 0xea7, 0xeb1, 0xe99, 0xeaa, 0xeb8, 0xe81, 0x3b, 0xea7, 0xeb1,
+0xe99, 0xec0, 0xeaa, 0xebb, 0xeb2, 0xead, 0xeb2, 0xe97, 0xeb4, 0xe94, 0x3b, 0xe88,
+0xeb1, 0xe99, 0x3b, 0xead, 0xeb1, 0xe87, 0xe84, 0xeb2, 0xe99, 0x3b, 0xe9e, 0xeb8,
+0xe94, 0x3b, 0xe9e, 0xeb0, 0xeab, 0xeb1, 0xe94, 0x3b, 0xeaa, 0xeb8, 0xe81, 0x3b,
+0xec0, 0xeaa, 0xebb, 0xeb2, 0xead, 0xeb2, 0x3b, 0xe88, 0x3b, 0xead, 0x3b, 0xe9e,
+0x3b, 0xe9e, 0xeab, 0x3b, 0xeaa, 0xeb8, 0x3b, 0xeaa, 0x64, 0x69, 0x65, 0x73,
+0x20, 0x53, 0x6f, 0x6c, 0x69, 0x73, 0x3b, 0x64, 0x69, 0x65, 0x73, 0x20,
+0x4c, 0x75, 0x6e, 0x61, 0x65, 0x3b, 0x64, 0x69, 0x65, 0x73, 0x20, 0x4d,
+0x61, 0x72, 0x74, 0x69, 0x73, 0x3b, 0x64, 0x69, 0x65, 0x73, 0x20, 0x4d,
+0x65, 0x72, 0x63, 0x75, 0x72, 0x69, 0x69, 0x3b, 0x64, 0x69, 0x65, 0x73,
+0x20, 0x49, 0x6f, 0x76, 0x69, 0x73, 0x3b, 0x64, 0x69, 0x65, 0x73, 0x20,
+0x56, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x73, 0x3b, 0x64, 0x69, 0x65, 0x73,
+0x20, 0x53, 0x61, 0x74, 0x75, 0x72, 0x6e, 0x69, 0x53, 0x6f, 0x6c, 0x3b,
+0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x4d, 0x65, 0x72, 0x3b,
+0x49, 0x6f, 0x76, 0x3b, 0x56, 0x65, 0x6e, 0x3b, 0x53, 0x61, 0x74, 0x53,
+0x76, 0x113, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x50, 0x69, 0x72,
+0x6d, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x4f, 0x74, 0x72, 0x64, 0x69,
+0x65, 0x6e, 0x61, 0x3b, 0x54, 0x72, 0x65, 0x161, 0x64, 0x69, 0x65, 0x6e,
+0x61, 0x3b, 0x43, 0x65, 0x74, 0x75, 0x72, 0x74, 0x64, 0x69, 0x65, 0x6e,
+0x61, 0x3b, 0x50, 0x69, 0x65, 0x6b, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61,
+0x3b, 0x53, 0x65, 0x73, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x73, 0x76,
+0x113, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x70, 0x69, 0x72, 0x6d,
+0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x6f, 0x74, 0x72, 0x64, 0x69, 0x65,
+0x6e, 0x61, 0x3b, 0x74, 0x72, 0x65, 0x161, 0x64, 0x69, 0x65, 0x6e, 0x61,
+0x3b, 0x63, 0x65, 0x74, 0x75, 0x72, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61,
+0x3b, 0x70, 0x69, 0x65, 0x6b, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b,
+0x73, 0x65, 0x73, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x53, 0x76, 0x113,
+0x74, 0x64, 0x2e, 0x3b, 0x50, 0x69, 0x72, 0x6d, 0x64, 0x2e, 0x3b, 0x4f,
+0x74, 0x72, 0x64, 0x2e, 0x3b, 0x54, 0x72, 0x65, 0x161, 0x64, 0x2e, 0x3b,
+0x43, 0x65, 0x74, 0x75, 0x72, 0x74, 0x64, 0x2e, 0x3b, 0x50, 0x69, 0x65,
+0x6b, 0x74, 0x64, 0x2e, 0x3b, 0x53, 0x65, 0x73, 0x74, 0x64, 0x2e, 0x73,
+0x76, 0x113, 0x74, 0x64, 0x2e, 0x3b, 0x70, 0x69, 0x72, 0x6d, 0x64, 0x2e,
+0x3b, 0x6f, 0x74, 0x72, 0x64, 0x2e, 0x3b, 0x74, 0x72, 0x65, 0x161, 0x64,
+0x2e, 0x3b, 0x63, 0x65, 0x74, 0x75, 0x72, 0x74, 0x64, 0x2e, 0x3b, 0x70,
+0x69, 0x65, 0x6b, 0x74, 0x64, 0x2e, 0x3b, 0x73, 0x65, 0x73, 0x74, 0x64,
+0x2e, 0x53, 0x3b, 0x50, 0x3b, 0x4f, 0x3b, 0x54, 0x3b, 0x43, 0x3b, 0x50,
+0x3b, 0x53, 0x65, 0x79, 0x65, 0x6e, 0x67, 0x61, 0x3b, 0x6d, 0x6f, 0x6b,
+0x254, 0x6c, 0x254, 0x20, 0x6d, 0x77, 0x61, 0x20, 0x79, 0x61, 0x6d, 0x62,
+0x6f, 0x3b, 0x6d, 0x6f, 0x6b, 0x254, 0x6c, 0x254, 0x20, 0x6d, 0x77, 0x61,
+0x20, 0x6d, 0xed, 0x62, 0x61, 0x6c, 0xe9, 0x3b, 0x6d, 0x6f, 0x6b, 0x254,
+0x6c, 0x254, 0x20, 0x6d, 0x77, 0x61, 0x20, 0x6d, 0xed, 0x73, 0xe1, 0x74,
+0x6f, 0x3b, 0x6d, 0x6f, 0x6b, 0x254, 0x6c, 0x254, 0x20, 0x79, 0x61, 0x20,
+0x6d, 0xed, 0x6e, 0xe9, 0x69, 0x3b, 0x6d, 0x6f, 0x6b, 0x254, 0x6c, 0x254,
+0x20, 0x79, 0x61, 0x20, 0x6d, 0xed, 0x74, 0xe1, 0x6e, 0x6f, 0x3b, 0x6d,
+0x70, 0x254, 0x301, 0x73, 0x254, 0x65, 0x79, 0x65, 0x3b, 0x79, 0x62, 0x6f,
+0x3b, 0x6d, 0x62, 0x6c, 0x3b, 0x6d, 0x73, 0x74, 0x3b, 0x6d, 0x69, 0x6e,
+0x3b, 0x6d, 0x74, 0x6e, 0x3b, 0x6d, 0x70, 0x73, 0x65, 0x3b, 0x79, 0x3b,
+0x6d, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x70, 0x73, 0x65, 0x6b,
+0x6d, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73, 0x3b, 0x70, 0x69, 0x72,
+0x6d, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73, 0x3b, 0x61, 0x6e, 0x74,
+0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73, 0x3b, 0x74, 0x72, 0x65,
+0x10d, 0x69, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73, 0x3b, 0x6b, 0x65,
+0x74, 0x76, 0x69, 0x72, 0x74, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73,
+0x3b, 0x70, 0x65, 0x6e, 0x6b, 0x74, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69,
+0x73, 0x3b, 0x161, 0x65, 0x161, 0x74, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69,
+0x73, 0x73, 0x6b, 0x3b, 0x70, 0x72, 0x3b, 0x61, 0x6e, 0x3b, 0x74, 0x72,
+0x3b, 0x6b, 0x74, 0x3b, 0x70, 0x6e, 0x3b, 0x161, 0x74, 0x53, 0x3b, 0x50,
+0x3b, 0x41, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x50, 0x3b, 0x160, 0x6e, 0x6a,
+0x65, 0x17a, 0x65, 0x6c, 0x61, 0x3b, 0x70, 0xf3, 0x6e, 0x6a, 0x65, 0x17a,
+0x65, 0x6c, 0x65, 0x3b, 0x77, 0x61, 0x142, 0x74, 0x6f, 0x72, 0x61, 0x3b,
+0x73, 0x72, 0x6a, 0x6f, 0x64, 0x61, 0x3b, 0x73, 0x74, 0x77, 0xf3, 0x72,
+0x74, 0x6b, 0x3b, 0x70, 0x11b, 0x74, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f,
+0x74, 0x61, 0x6e, 0x6a, 0x65, 0x3b, 0x70, 0xf3, 0x6e, 0x3b, 0x77, 0x61,
+0x142, 0x3b, 0x73, 0x72, 0x6a, 0x3b, 0x73, 0x74, 0x77, 0x3b, 0x70, 0x11b,
+0x74, 0x3b, 0x73, 0x6f, 0x62, 0x6e, 0x3b, 0x70, 0x3b, 0x77, 0x3b, 0x73,
+0x3b, 0x73, 0x3b, 0x70, 0x3b, 0x73, 0x53, 0xfc, 0x6e, 0x6e, 0x64, 0x61,
+0x67, 0x3b, 0x4d, 0x61, 0x61, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x44, 0x69,
+0x6e, 0x67, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x4d, 0x69, 0x64, 0x64, 0x65,
+0x77, 0x65, 0x6b, 0x65, 0x6e, 0x3b, 0x44, 0x75, 0x6e, 0x6e, 0x65, 0x72,
+0x73, 0x64, 0x61, 0x67, 0x3b, 0x46, 0x72, 0x65, 0x65, 0x64, 0x61, 0x67,
+0x3b, 0x53, 0xfc, 0x6e, 0x6e, 0x61, 0x76, 0x65, 0x6e, 0x64, 0x53, 0xfc,
+0x2e, 0x3b, 0x4d, 0x61, 0x2e, 0x3b, 0x44, 0x69, 0x2e, 0x3b, 0x4d, 0x69,
+0x2e, 0x3b, 0x44, 0x75, 0x2e, 0x3b, 0x46, 0x72, 0x2e, 0x3b, 0x53, 0x61,
+0x2e, 0x4c, 0x75, 0x6d, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x4e, 0x6b, 0x6f,
+0x64, 0x79, 0x61, 0x3b, 0x4e, 0x64, 0xe0, 0x61, 0x79, 0xe0, 0x3b, 0x4e,
+0x64, 0x61, 0x6e, 0x67, 0xf9, 0x3b, 0x4e, 0x6a, 0xf2, 0x77, 0x61, 0x3b,
+0x4e, 0x67, 0xf2, 0x76, 0x79, 0x61, 0x3b, 0x4c, 0x75, 0x62, 0x69, 0x6e,
+0x67, 0x75, 0x4c, 0x75, 0x6d, 0x3b, 0x4e, 0x6b, 0x6f, 0x3b, 0x4e, 0x64,
+0x79, 0x3b, 0x4e, 0x64, 0x67, 0x3b, 0x4e, 0x6a, 0x77, 0x3b, 0x4e, 0x67,
+0x76, 0x3b, 0x4c, 0x75, 0x62, 0x4c, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e,
+0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4c, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0x69,
+0x6c, 0x3b, 0x57, 0x75, 0x6f, 0x6b, 0x20, 0x54, 0x69, 0x63, 0x68, 0x3b,
+0x54, 0x69, 0x63, 0x68, 0x20, 0x41, 0x72, 0x69, 0x79, 0x6f, 0x3b, 0x54,
+0x69, 0x63, 0x68, 0x20, 0x41, 0x64, 0x65, 0x6b, 0x3b, 0x54, 0x69, 0x63,
+0x68, 0x20, 0x41, 0x6e, 0x67, 0x2019, 0x77, 0x65, 0x6e, 0x3b, 0x54, 0x69,
+0x63, 0x68, 0x20, 0x41, 0x62, 0x69, 0x63, 0x68, 0x3b, 0x4e, 0x67, 0x65,
+0x73, 0x6f, 0x4a, 0x4d, 0x50, 0x3b, 0x57, 0x55, 0x54, 0x3b, 0x54, 0x41,
+0x52, 0x3b, 0x54, 0x41, 0x44, 0x3b, 0x54, 0x41, 0x4e, 0x3b, 0x54, 0x41,
+0x42, 0x3b, 0x4e, 0x47, 0x53, 0x4a, 0x3b, 0x57, 0x3b, 0x54, 0x3b, 0x54,
+0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x4e, 0x53, 0x6f, 0x6e, 0x6e, 0x64, 0x65,
+0x67, 0x3b, 0x4d, 0xe9, 0x69, 0x6e, 0x64, 0x65, 0x67, 0x3b, 0x44, 0xeb,
+0x6e, 0x73, 0x63, 0x68, 0x64, 0x65, 0x67, 0x3b, 0x4d, 0xeb, 0x74, 0x74,
+0x77, 0x6f, 0x63, 0x68, 0x3b, 0x44, 0x6f, 0x6e, 0x6e, 0x65, 0x73, 0x63,
+0x68, 0x64, 0x65, 0x67, 0x3b, 0x46, 0x72, 0x65, 0x69, 0x64, 0x65, 0x67,
+0x3b, 0x53, 0x61, 0x6d, 0x73, 0x63, 0x68, 0x64, 0x65, 0x67, 0x53, 0x6f,
+0x6e, 0x3b, 0x4d, 0xe9, 0x69, 0x3b, 0x44, 0xeb, 0x6e, 0x3b, 0x4d, 0xeb,
+0x74, 0x3b, 0x44, 0x6f, 0x6e, 0x3b, 0x46, 0x72, 0x65, 0x3b, 0x53, 0x61,
+0x6d, 0x53, 0x6f, 0x6e, 0x2e, 0x3b, 0x4d, 0xe9, 0x69, 0x2e, 0x3b, 0x44,
+0xeb, 0x6e, 0x2e, 0x3b, 0x4d, 0xeb, 0x74, 0x2e, 0x3b, 0x44, 0x6f, 0x6e,
+0x2e, 0x3b, 0x46, 0x72, 0x65, 0x2e, 0x3b, 0x53, 0x61, 0x6d, 0x2e, 0x4a,
+0x75, 0x6d, 0x61, 0x70, 0x69, 0x72, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61,
+0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65,
+0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x4d, 0x75,
+0x72, 0x77, 0x61, 0x20, 0x77, 0x61, 0x20, 0x4b, 0x61, 0x6e, 0x6e, 0x65,
+0x3b, 0x4d, 0x75, 0x72, 0x77, 0x61, 0x20, 0x77, 0x61, 0x20, 0x4b, 0x61,
+0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73,
+0x69, 0x4a, 0x32, 0x3b, 0x4a, 0x33, 0x3b, 0x4a, 0x34, 0x3b, 0x4a, 0x35,
+0x3b, 0x41, 0x6c, 0x3b, 0x49, 0x6a, 0x3b, 0x4a, 0x31, 0x43d, 0x435, 0x434,
+0x435, 0x43b, 0x430, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x435, 0x43b, 0x43d,
+0x438, 0x43a, 0x3b, 0x432, 0x442, 0x43e, 0x440, 0x43d, 0x438, 0x43a, 0x3b, 0x441,
+0x440, 0x435, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x440, 0x442, 0x43e,
+0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x43e, 0x43a, 0x3b, 0x441, 0x430, 0x431, 0x43e,
+0x442, 0x430, 0x43d, 0x435, 0x434, 0x2e, 0x3b, 0x43f, 0x43e, 0x43d, 0x2e, 0x3b,
+0x432, 0x442, 0x43e, 0x2e, 0x3b, 0x441, 0x440, 0x435, 0x2e, 0x3b, 0x447, 0x435,
+0x442, 0x2e, 0x3b, 0x43f, 0x435, 0x442, 0x2e, 0x3b, 0x441, 0x430, 0x431, 0x2e,
+0x4a, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x6c, 0x79, 0x69, 0x3b, 0x4a, 0x75,
+0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61,
+0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x75,
+0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a,
+0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73,
+0x69, 0x4a, 0x70, 0x69, 0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6e, 0x6e,
+0x3b, 0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x75,
+0x3b, 0x4a, 0x6d, 0x6f, 0x930, 0x935, 0x93f, 0x20, 0x926, 0x93f, 0x928, 0x3b,
+0x938, 0x94b, 0x92e, 0x20, 0x926, 0x93f, 0x928, 0x3b, 0x92e, 0x902, 0x917, 0x932,
+0x20, 0x926, 0x93f, 0x928, 0x3b, 0x92c, 0x941, 0x927, 0x20, 0x926, 0x93f, 0x928,
+0x3b, 0x92c, 0x943, 0x939, 0x938, 0x94d, 0x92a, 0x924, 0x93f, 0x20, 0x926, 0x93f,
+0x928, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x20, 0x926, 0x93f, 0x928, 0x3b,
+0x936, 0x928, 0x93f, 0x20, 0x926, 0x93f, 0x928, 0x53, 0x61, 0x62, 0x61, 0x74,
+0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a,
+0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74,
+0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x72, 0x61, 0x68, 0x61, 0x6d, 0x69, 0x73,
+0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d,
+0x61, 0x6d, 0x6f, 0x73, 0x69, 0x53, 0x61, 0x62, 0x3b, 0x4a, 0x74, 0x74,
+0x3b, 0x4a, 0x6e, 0x6e, 0x3b, 0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x72, 0x61,
+0x3b, 0x49, 0x6a, 0x75, 0x3b, 0x4a, 0x6d, 0x6f, 0x53, 0x3b, 0x4a, 0x3b,
+0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x4a, 0x4c, 0x69, 0x64,
+0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x70, 0x69, 0x6c, 0x69, 0x3b,
+0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x74, 0x61,
+0x74, 0x75, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79,
+0x61, 0x6e, 0x63, 0x68, 0x65, 0x63, 0x68, 0x69, 0x3b, 0x4c, 0x69, 0x64,
+0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x6e, 0x6e, 0x79, 0x61, 0x6e,
+0x6f, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61,
+0x6e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x6c, 0x69,
+0x6e, 0x6a, 0x69, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c,
+0x79, 0x61, 0x6e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20,
+0x6d, 0x61, 0x76, 0x69, 0x6c, 0x69, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76,
+0x61, 0x20, 0x6c, 0x69, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x4c, 0x6c, 0x32,
+0x3b, 0x4c, 0x6c, 0x33, 0x3b, 0x4c, 0x6c, 0x34, 0x3b, 0x4c, 0x6c, 0x35,
+0x3b, 0x4c, 0x6c, 0x36, 0x3b, 0x4c, 0x6c, 0x37, 0x3b, 0x4c, 0x6c, 0x31,
+0x32, 0x3b, 0x33, 0x3b, 0x34, 0x3b, 0x35, 0x3b, 0x36, 0x3b, 0x37, 0x3b,
+0x31, 0x41, 0x6c, 0x61, 0x68, 0x61, 0x64, 0x79, 0x3b, 0x41, 0x6c, 0x61,
+0x74, 0x73, 0x69, 0x6e, 0x61, 0x69, 0x6e, 0x79, 0x3b, 0x54, 0x61, 0x6c,
+0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x72, 0x6f, 0x62, 0x69, 0x61,
+0x3b, 0x41, 0x6c, 0x61, 0x6b, 0x61, 0x6d, 0x69, 0x73, 0x79, 0x3b, 0x5a,
+0x6f, 0x6d, 0x61, 0x3b, 0x41, 0x73, 0x61, 0x62, 0x6f, 0x74, 0x73, 0x79,
+0x41, 0x6c, 0x61, 0x68, 0x3b, 0x41, 0x6c, 0x61, 0x74, 0x73, 0x3b, 0x54,
+0x61, 0x6c, 0x3b, 0x41, 0x6c, 0x61, 0x72, 0x3b, 0x41, 0x6c, 0x61, 0x6b,
+0x3b, 0x5a, 0x6f, 0x6d, 0x3b, 0x41, 0x73, 0x61, 0x62, 0x41, 0x3b, 0x41,
+0x3b, 0x54, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x5a, 0x3b, 0x41, 0xd1e, 0xd3e,
+0xd2f, 0xd31, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd24, 0xd3f, 0xd19, 0xd4d,
+0xd15, 0xd33, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd1a, 0xd4a, 0xd35, 0xd4d,
+0xd35, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd2c, 0xd41, 0xd27, 0xd28, 0xd3e,
+0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd35, 0xd4d, 0xd2f, 0xd3e, 0xd34, 0xd3e, 0xd34,
+0xd4d, 0x200c, 0xd1a, 0x3b, 0xd35, 0xd46, 0xd33, 0xd4d, 0xd33, 0xd3f, 0xd2f, 0xd3e,
+0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd36, 0xd28, 0xd3f, 0xd2f, 0xd3e, 0xd34, 0xd4d,
+0x200c, 0xd1a, 0xd1e, 0xd3e, 0xd2f, 0xd31, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b,
+0xd24, 0xd3f, 0xd19, 0xd4d, 0xd15, 0xd33, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b,
+0xd1a, 0xd4a, 0xd35, 0xd4d, 0xd35, 0xd3e, 0xd34, 0xd4d, 0xd1a, 0x3b, 0xd2c, 0xd41,
+0xd27, 0xd28, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd35, 0xd4d, 0xd2f, 0xd3e,
+0xd34, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd35, 0xd46, 0xd33, 0xd4d, 0xd33,
+0xd3f, 0xd2f, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd36, 0xd28, 0xd3f, 0xd2f,
+0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0xd1e, 0xd3e, 0xd2f, 0xd7c, 0x3b, 0xd24, 0xd3f,
+0xd19, 0xd4d, 0xd15, 0xd7e, 0x3b, 0xd1a, 0xd4a, 0xd35, 0xd4d, 0xd35, 0x3b, 0xd2c,
+0xd41, 0xd27, 0xd7b, 0x3b, 0xd35, 0xd4d, 0xd2f, 0xd3e, 0xd34, 0xd02, 0x3b, 0xd35,
+0xd46, 0xd33, 0xd4d, 0xd33, 0xd3f, 0x3b, 0xd36, 0xd28, 0xd3f, 0xd1e, 0xd3e, 0x3b,
+0xd24, 0xd3f, 0x3b, 0xd1a, 0xd4a, 0x3b, 0xd2c, 0xd41, 0x3b, 0xd35, 0xd4d, 0xd2f,
+0xd3e, 0x3b, 0xd35, 0xd46, 0x3b, 0xd36, 0xd1e, 0x3b, 0xd24, 0xd3f, 0x3b, 0xd1a,
+0xd4a, 0x3b, 0xd2c, 0xd41, 0x3b, 0xd35, 0xd4d, 0xd2f, 0xd3e, 0x3b, 0xd35, 0xd46,
+0x3b, 0xd36, 0x41, 0x68, 0x61, 0x64, 0x3b, 0x49, 0x73, 0x6e, 0x69, 0x6e,
+0x3b, 0x53, 0x65, 0x6c, 0x61, 0x73, 0x61, 0x3b, 0x52, 0x61, 0x62, 0x75,
+0x3b, 0x4b, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x3b, 0x4a, 0x75, 0x6d, 0x61,
+0x61, 0x74, 0x3b, 0x53, 0x61, 0x62, 0x74, 0x75, 0x41, 0x68, 0x64, 0x3b,
+0x49, 0x73, 0x6e, 0x3b, 0x53, 0x65, 0x6c, 0x3b, 0x52, 0x61, 0x62, 0x3b,
+0x4b, 0x68, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x53, 0x61, 0x62, 0x41,
+0x3b, 0x49, 0x3b, 0x53, 0x3b, 0x52, 0x3b, 0x4b, 0x3b, 0x4a, 0x3b, 0x53,
+0x627, 0x62d, 0x62f, 0x3b, 0x627, 0x62b, 0x646, 0x64a, 0x646, 0x3b, 0x62b, 0x644,
+0x627, 0x62b, 0x3b, 0x631, 0x627, 0x628, 0x648, 0x3b, 0x62e, 0x645, 0x64a, 0x633,
+0x3b, 0x62c, 0x645, 0x639, 0x629, 0x3b, 0x633, 0x628, 0x62a, 0x648, 0x49, 0x6c,
+0x2d, 0x126, 0x61, 0x64, 0x64, 0x3b, 0x49, 0x74, 0x2d, 0x54, 0x6e, 0x65,
+0x6a, 0x6e, 0x3b, 0x49, 0x74, 0x2d, 0x54, 0x6c, 0x69, 0x65, 0x74, 0x61,
+0x3b, 0x4c, 0x2d, 0x45, 0x72, 0x62, 0x67, 0x127, 0x61, 0x3b, 0x49, 0x6c,
+0x2d, 0x126, 0x61, 0x6d, 0x69, 0x73, 0x3b, 0x49, 0x6c, 0x2d, 0x120, 0x69,
+0x6d, 0x67, 0x127, 0x61, 0x3b, 0x49, 0x73, 0x2d, 0x53, 0x69, 0x62, 0x74,
+0x126, 0x61, 0x64, 0x3b, 0x54, 0x6e, 0x65, 0x3b, 0x54, 0x6c, 0x69, 0x3b,
+0x45, 0x72, 0x62, 0x3b, 0x126, 0x61, 0x6d, 0x3b, 0x120, 0x69, 0x6d, 0x3b,
+0x53, 0x69, 0x62, 0x126, 0x64, 0x3b, 0x54, 0x6e, 0x3b, 0x54, 0x6c, 0x3b,
+0x45, 0x72, 0x3b, 0x126, 0x6d, 0x3b, 0x120, 0x6d, 0x3b, 0x53, 0x62, 0x126,
+0x64, 0x3b, 0x54, 0x3b, 0x54, 0x6c, 0x3b, 0x45, 0x72, 0x3b, 0x126, 0x6d,
+0x3b, 0x120, 0x6d, 0x3b, 0x53, 0x62, 0x9a8, 0x9cb, 0x982, 0x9ae, 0x9be, 0x987,
+0x99c, 0x9bf, 0x982, 0x3b, 0x9a8, 0x9bf, 0x982, 0x9a5, 0x9cc, 0x995, 0x9be, 0x9ac,
+0x9be, 0x3b, 0x9b2, 0x9c8, 0x9ac, 0x9be, 0x995, 0x9aa, 0x9cb, 0x995, 0x9aa, 0x9be,
+0x3b, 0x9af, 0x9bc, 0x9c1, 0x9ae, 0x9b6, 0x995, 0x9c8, 0x9b6, 0x9be, 0x3b, 0x9b6,
+0x997, 0x9cb, 0x9b2, 0x9b6, 0x9c7, 0x9a8, 0x3b, 0x987, 0x9b0, 0x9be, 0x987, 0x3b,
+0x9a5, 0x9be, 0x982, 0x99c, 0x9a8, 0x9cb, 0x3b, 0x9a8, 0x9bf, 0x982, 0x3b, 0x9b2,
+0x9c8, 0x3b, 0x9af, 0x9bc, 0x9c1, 0x9ae, 0x3b, 0x9b6, 0x997, 0x3b, 0x987, 0x9b0,
+0x9be, 0x3b, 0x9a5, 0x9be, 0x982, 0x9a8, 0x9cb, 0x982, 0x3b, 0x9a8, 0x9bf, 0x982,
+0x3b, 0x9b2, 0x9c8, 0x9ac, 0x9be, 0x3b, 0x9af, 0x9bc, 0x9c1, 0x9ae, 0x3b, 0x9b6,
+0x997, 0x9cb, 0x3b, 0x987, 0x9b0, 0x9be, 0x3b, 0x9a5, 0x9be, 0x982, 0x4a, 0x65,
+0x64, 0x6f, 0x6f, 0x6e, 0x65, 0x65, 0x3b, 0x4a, 0x65, 0x6c, 0x68, 0x65,
+0x69, 0x6e, 0x3b, 0x4a, 0x65, 0x6d, 0x61, 0x79, 0x72, 0x74, 0x3b, 0x4a,
+0x65, 0x72, 0x63, 0x65, 0x61, 0x6e, 0x3b, 0x4a, 0x65, 0x72, 0x64, 0x65,
+0x69, 0x6e, 0x3b, 0x4a, 0x65, 0x68, 0x65, 0x69, 0x6e, 0x65, 0x79, 0x3b,
+0x4a, 0x65, 0x73, 0x61, 0x72, 0x6e, 0x4a, 0x65, 0x64, 0x3b, 0x4a, 0x65,
+0x6c, 0x3b, 0x4a, 0x65, 0x6d, 0x3b, 0x4a, 0x65, 0x72, 0x63, 0x3b, 0x4a,
+0x65, 0x72, 0x64, 0x3b, 0x4a, 0x65, 0x68, 0x3b, 0x4a, 0x65, 0x73, 0x52,
+0x101, 0x74, 0x61, 0x70, 0x75, 0x3b, 0x4d, 0x61, 0x6e, 0x65, 0x3b, 0x54,
+0x16b, 0x72, 0x65, 0x69, 0x3b, 0x57, 0x65, 0x6e, 0x65, 0x72, 0x65, 0x69,
+0x3b, 0x54, 0x101, 0x69, 0x74, 0x65, 0x3b, 0x50, 0x61, 0x72, 0x61, 0x69,
+0x72, 0x65, 0x3b, 0x52, 0x101, 0x68, 0x6f, 0x72, 0x6f, 0x69, 0x52, 0x101,
+0x74, 0x3b, 0x4d, 0x61, 0x6e, 0x3b, 0x54, 0x16b, 0x72, 0x3b, 0x57, 0x65,
+0x6e, 0x3b, 0x54, 0x101, 0x69, 0x3b, 0x50, 0x61, 0x72, 0x3b, 0x52, 0x101,
+0x68, 0x52, 0x74, 0x3b, 0x4d, 0x3b, 0x54, 0x3b, 0x57, 0x3b, 0x54, 0x3b,
+0x50, 0x3b, 0x52, 0x68, 0x930, 0x935, 0x93f, 0x935, 0x93e, 0x930, 0x3b, 0x938,
+0x94b, 0x92e, 0x935, 0x93e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x933, 0x935, 0x93e,
+0x930, 0x3b, 0x92c, 0x941, 0x927, 0x935, 0x93e, 0x930, 0x3b, 0x917, 0x941, 0x930,
+0x941, 0x935, 0x93e, 0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x935, 0x93e,
+0x930, 0x3b, 0x936, 0x928, 0x93f, 0x935, 0x93e, 0x930, 0x930, 0x935, 0x93f, 0x3b,
+0x938, 0x94b, 0x92e, 0x3b, 0x92e, 0x902, 0x917, 0x933, 0x3b, 0x92c, 0x941, 0x927,
+0x3b, 0x917, 0x941, 0x930, 0x941, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x3b,
+0x936, 0x928, 0x93f, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0xed, 0x6c, 0xed, 0x3b,
+0x4a, 0x75, 0x6d, 0x61, 0x74, 0xe1, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d,
+0x61, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0xe1, 0x6e, 0x254,
+0x3b, 0x41, 0x6c, 0x61, 0xe1, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x4a, 0x75,
+0x6d, 0xe1, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0xf3, 0x73, 0x69,
+0x4b, 0x69, 0x75, 0x6d, 0x69, 0x61, 0x3b, 0x4d, 0x75, 0x72, 0x61, 0x6d,
+0x75, 0x6b, 0x6f, 0x3b, 0x57, 0x61, 0x69, 0x72, 0x69, 0x3b, 0x57, 0x65,
+0x74, 0x68, 0x61, 0x74, 0x75, 0x3b, 0x57, 0x65, 0x6e, 0x61, 0x3b, 0x57,
+0x65, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f,
+0x73, 0x69, 0x4b, 0x49, 0x55, 0x3b, 0x4d, 0x52, 0x41, 0x3b, 0x57, 0x41,
+0x49, 0x3b, 0x57, 0x45, 0x54, 0x3b, 0x57, 0x45, 0x4e, 0x3b, 0x57, 0x54,
+0x4e, 0x3b, 0x4a, 0x55, 0x4d, 0x4b, 0x3b, 0x4d, 0x3b, 0x57, 0x3b, 0x57,
+0x3b, 0x57, 0x3b, 0x57, 0x3b, 0x4a, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x31,
+0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x32, 0x3b, 0x41, 0x6e, 0x65, 0x67,
+0x20, 0x33, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x34, 0x3b, 0x41, 0x6e,
+0x65, 0x67, 0x20, 0x35, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x36, 0x3b,
+0x41, 0x6e, 0x65, 0x67, 0x20, 0x37, 0x41, 0x31, 0x3b, 0x41, 0x32, 0x3b,
+0x41, 0x33, 0x3b, 0x41, 0x34, 0x3b, 0x41, 0x35, 0x3b, 0x41, 0x36, 0x3b,
+0x41, 0x37, 0x41d, 0x44f, 0x43c, 0x3b, 0x414, 0x430, 0x432, 0x430, 0x430, 0x3b,
+0x41c, 0x44f, 0x433, 0x43c, 0x430, 0x440, 0x3b, 0x41b, 0x445, 0x430, 0x433, 0x432,
+0x430, 0x3b, 0x41f, 0x4af, 0x440, 0x44d, 0x432, 0x3b, 0x411, 0x430, 0x430, 0x441,
+0x430, 0x43d, 0x3b, 0x411, 0x44f, 0x43c, 0x431, 0x430, 0x43d, 0x44f, 0x43c, 0x3b,
+0x434, 0x430, 0x432, 0x430, 0x430, 0x3b, 0x43c, 0x44f, 0x433, 0x43c, 0x430, 0x440,
+0x3b, 0x43b, 0x445, 0x430, 0x433, 0x432, 0x430, 0x3b, 0x43f, 0x4af, 0x440, 0x44d,
+0x432, 0x3b, 0x431, 0x430, 0x430, 0x441, 0x430, 0x43d, 0x3b, 0x431, 0x44f, 0x43c,
+0x431, 0x430, 0x41d, 0x44f, 0x3b, 0x414, 0x430, 0x3b, 0x41c, 0x44f, 0x3b, 0x41b,
+0x445, 0x3b, 0x41f, 0x4af, 0x3b, 0x411, 0x430, 0x3b, 0x411, 0x44f, 0x1828, 0x1822,
+0x182e, 0x180e, 0x1820, 0x3b, 0x1833, 0x1820, 0x1838, 0x1820, 0x3b, 0x182e, 0x1822, 0x1820,
+0x1820, 0x182e, 0x1820, 0x1837, 0x3b, 0x1840, 0x1820, 0x182d, 0x182a, 0x1820, 0x3b, 0x182b,
+0x1826, 0x1837, 0x182a, 0x1826, 0x3b, 0x182a, 0x1820, 0x1830, 0x1820, 0x1829, 0x3b, 0x182a,
+0x1822, 0x182e, 0x182a, 0x1820, 0x1828, 0x1822, 0x3b, 0x1833, 0x1820, 0x3b, 0x182e, 0x1822,
+0x182d, 0x3b, 0x1840, 0x1820, 0x3b, 0x182b, 0x1826, 0x1837, 0x3b, 0x182a, 0x1820, 0x3b,
+0x182a, 0x1822, 0x182e, 0x1828, 0x1822, 0x3b, 0x1832, 0x1820, 0x3b, 0x182e, 0x1822, 0x182d,
+0x3b, 0x1840, 0x1820, 0x3b, 0x182b, 0x1825, 0x1837, 0x3b, 0x182a, 0x1820, 0x3b, 0x182a,
+0x1822, 0x182e, 0x1828, 0x1822, 0x3b, 0x1833, 0x1820, 0x3b, 0x182e, 0x1822, 0x182d, 0x3b,
+0x1840, 0x1820, 0x3b, 0x182b, 0x1825, 0x1837, 0x3b, 0x182a, 0x1820, 0x3b, 0x182a, 0x1822,
+0x182e, 0x64, 0x69, 0x6d, 0x61, 0x6e, 0x73, 0x3b, 0x6c, 0x69, 0x6e, 0x64,
+0x69, 0x3b, 0x6d, 0x61, 0x72, 0x64, 0x69, 0x3b, 0x6d, 0x65, 0x72, 0x6b,
+0x72, 0x65, 0x64, 0x69, 0x3b, 0x7a, 0x65, 0x64, 0x69, 0x3b, 0x76, 0x61,
+0x6e, 0x64, 0x72, 0x65, 0x64, 0x69, 0x3b, 0x73, 0x61, 0x6d, 0x64, 0x69,
+0x64, 0x69, 0x6d, 0x3b, 0x6c, 0x69, 0x6e, 0x3b, 0x6d, 0x61, 0x72, 0x3b,
+0x6d, 0x65, 0x72, 0x3b, 0x7a, 0x65, 0x3b, 0x76, 0x61, 0x6e, 0x3b, 0x73,
+0x61, 0x6d, 0x64, 0x3b, 0x6c, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x7a, 0x3b,
+0x76, 0x3b, 0x73, 0x43, 0x6f, 0x6d, 0x2019, 0x79, 0x61, 0x6b, 0x6b, 0x65,
+0x3b, 0x43, 0x6f, 0x6d, 0x6c, 0x61, 0x61, 0x257, 0x69, 0x69, 0x3b, 0x43,
+0x6f, 0x6d, 0x7a, 0x79, 0x69, 0x69, 0x257, 0x69, 0x69, 0x3b, 0x43, 0x6f,
+0x6d, 0x6b, 0x6f, 0x6c, 0x6c, 0x65, 0x3b, 0x43, 0x6f, 0x6d, 0x6b, 0x61,
+0x6c, 0x64, 0x1dd, 0x253, 0x6c, 0x69, 0x69, 0x3b, 0x43, 0x6f, 0x6d, 0x67,
+0x61, 0x69, 0x73, 0x75, 0x75, 0x3b, 0x43, 0x6f, 0x6d, 0x7a, 0x79, 0x65,
+0x253, 0x73, 0x75, 0x75, 0x43, 0x79, 0x61, 0x3b, 0x43, 0x6c, 0x61, 0x3b,
+0x43, 0x7a, 0x69, 0x3b, 0x43, 0x6b, 0x6f, 0x3b, 0x43, 0x6b, 0x61, 0x3b,
+0x43, 0x67, 0x61, 0x3b, 0x43, 0x7a, 0x65, 0x59, 0x3b, 0x4c, 0x3b, 0x5a,
+0x3b, 0x4f, 0x3b, 0x41, 0x3b, 0x47, 0x3b, 0x45, 0x4e, 0x65, 0x74, 0x74,
+0x76, 0x20, 0x43, 0x61, 0x6b, 0x6f, 0x3b, 0x45, 0x6e, 0x68, 0x76, 0x74,
+0x65, 0x63, 0x65, 0x73, 0x6b, 0x76, 0x3b, 0x45, 0x6e, 0x68, 0x76, 0x74,
+0x65, 0x63, 0x65, 0x73, 0x6b, 0x76, 0x20, 0x45, 0x6e, 0x68, 0x76, 0x79,
+0x76, 0x74, 0x6b, 0x65, 0x3b, 0x45, 0x6e, 0x6e, 0x76, 0x72, 0x6b, 0x76,
+0x70, 0x76, 0x3b, 0x45, 0x6e, 0x6e, 0x76, 0x72, 0x6b, 0x76, 0x70, 0x76,
+0x20, 0x45, 0x6e, 0x68, 0x76, 0x79, 0x76, 0x74, 0x6b, 0x65, 0x3b, 0x4e,
+0x61, 0x6b, 0x20, 0x4f, 0x6b, 0x6b, 0x6f, 0x73, 0x6b, 0x76, 0x20, 0x4e,
+0x65, 0x74, 0x74, 0x76, 0x3b, 0x4e, 0x65, 0x74, 0x74, 0x76, 0x20, 0x43,
+0x61, 0x6b, 0x63, 0x75, 0x73, 0x65, 0x53, 0x6f, 0x6e, 0x74, 0x61, 0x78,
+0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x4d, 0x61, 0x6e, 0x74, 0x61, 0x78,
+0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x44, 0x65, 0x6e, 0x73, 0x74, 0x61,
+0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x57, 0x75, 0x6e, 0x73, 0x74,
+0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x44, 0x6f, 0x6e, 0x64,
+0x65, 0x72, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x46,
+0x72, 0x61, 0x69, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b,
+0x53, 0x61, 0x74, 0x65, 0x72, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65,
+0x73, 0x53, 0x6f, 0x6e, 0x3b, 0x4d, 0x61, 0x3b, 0x44, 0x65, 0x3b, 0x57,
+0x75, 0x3b, 0x44, 0x6f, 0x3b, 0x46, 0x72, 0x3b, 0x53, 0x61, 0x74, 0x53,
+0x3b, 0x4d, 0x3b, 0x45, 0x3b, 0x57, 0x3b, 0x44, 0x3b, 0x46, 0x3b, 0x41,
+0x906, 0x907, 0x924, 0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x94b, 0x92e, 0x92c, 0x93e,
+0x930, 0x3b, 0x92e, 0x919, 0x94d, 0x917, 0x932, 0x92c, 0x93e, 0x930, 0x3b, 0x92c,
+0x941, 0x927, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x93f, 0x939, 0x93f, 0x92c, 0x93e,
+0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x92c, 0x93e, 0x930, 0x3b, 0x936,
+0x928, 0x93f, 0x92c, 0x93e, 0x930, 0x906, 0x907, 0x924, 0x3b, 0x938, 0x94b, 0x92e,
+0x3b, 0x92e, 0x919, 0x94d, 0x917, 0x932, 0x3b, 0x92c, 0x941, 0x927, 0x3b, 0x92c,
+0x93f, 0x939, 0x93f, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x3b, 0x936, 0x928,
+0x93f, 0x906, 0x3b, 0x938, 0x94b, 0x3b, 0x92e, 0x3b, 0x92c, 0x941, 0x3b, 0x92c,
+0x93f, 0x3b, 0x936, 0x941, 0x3b, 0x936, 0x6c, 0x79, 0x25b, 0x2bc, 0x25b, 0x301,
+0x20, 0x73, 0x1e85, 0xed, 0x14b, 0x74, 0xe8, 0x3b, 0x6d, 0x76, 0x66, 0xf2,
+0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x6d, 0x62, 0x254, 0x301, 0x254,
+0x6e, 0x74, 0xe8, 0x20, 0x6d, 0x76, 0x66, 0xf2, 0x20, 0x6c, 0x79, 0x25b,
+0x30c, 0x2bc, 0x3b, 0x74, 0x73, 0xe8, 0x74, 0x73, 0x25b, 0x300, 0x25b, 0x20,
+0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x6d, 0x62, 0x254, 0x301, 0x254, 0x6e,
+0x74, 0xe8, 0x20, 0x74, 0x73, 0x65, 0x74, 0x73, 0x25b, 0x300, 0x25b, 0x20,
+0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x6d, 0x76, 0x66, 0xf2, 0x20, 0x6d,
+0xe0, 0x67, 0x61, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x6d, 0xe0,
+0x67, 0x61, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x53, 0x254, 0x301, 0x6e,
+0x64, 0x69, 0x3b, 0x4d, 0x254, 0x301, 0x6e, 0x64, 0x69, 0x3b, 0xc1, 0x70,
+0x74, 0x61, 0x20, 0x4d, 0x254, 0x301, 0x6e, 0x64, 0x69, 0x3b, 0x57, 0x25b,
+0x301, 0x6e, 0x25b, 0x73, 0x25b, 0x64, 0x25b, 0x3b, 0x54, 0x254, 0x301, 0x73,
+0x25b, 0x64, 0x25b, 0x3b, 0x46, 0x25b, 0x6c, 0xe2, 0x79, 0x25b, 0x64, 0x25b,
+0x3b, 0x53, 0xe1, 0x73, 0x69, 0x64, 0x25b, 0x53, 0x254, 0x301, 0x3b, 0x4d,
+0x254, 0x301, 0x3b, 0xc1, 0x4d, 0x3b, 0x57, 0x25b, 0x301, 0x3b, 0x54, 0x254,
+0x301, 0x3b, 0x46, 0x25b, 0x3b, 0x53, 0xe1, 0x53, 0x1ecd, 0x301, 0x6e, 0x64,
+0xe8, 0x3b, 0x4d, 0x1ecd, 0x301, 0x6e, 0x64, 0xe8, 0x3b, 0x54, 0x69, 0xfa,
+0x7a, 0x64, 0xe8, 0x3b, 0x57, 0x1eb9, 0x301, 0x6e, 0x1eb9, 0x301, 0x7a, 0x64,
+0xe8, 0x3b, 0x54, 0x1ecd, 0x301, 0x7a, 0x64, 0xe8, 0x3b, 0x46, 0x72, 0x61,
+0xed, 0x64, 0xe8, 0x3b, 0x53, 0xe1, 0x74, 0x1ecd, 0x64, 0xe8, 0x53, 0x1ecd,
+0x301, 0x6e, 0x3b, 0x4d, 0x1ecd, 0x301, 0x6e, 0x3b, 0x54, 0x69, 0xfa, 0x3b,
+0x57, 0x1eb9, 0x301, 0x6e, 0x3b, 0x54, 0x1ecd, 0x301, 0x7a, 0x3b, 0x46, 0x72,
+0x61, 0xed, 0x3b, 0x53, 0xe1, 0x74, 0x7de, 0x7ca, 0x7ef, 0x7d9, 0x7cc, 0x7df,
+0x7cf, 0x7f2, 0x3b, 0x7de, 0x7d0, 0x7ec, 0x7d3, 0x7ca, 0x7ec, 0x7df, 0x7cf, 0x7f2,
+0x3b, 0x7de, 0x7d0, 0x7ec, 0x7df, 0x7cf, 0x7f2, 0x3b, 0x7de, 0x7ce, 0x7e3, 0x7ce,
+0x7f2, 0x7df, 0x7cf, 0x7f2, 0x3b, 0x7d3, 0x7cc, 0x7df, 0x7cf, 0x7f2, 0x3b, 0x7db,
+0x7cc, 0x7ec, 0x7e3, 0x7cc, 0x7f2, 0x7ec, 0x7df, 0x7cf, 0x7f2, 0x3b, 0x7de, 0x7cd,
+0x7f2, 0x7d8, 0x7cd, 0x7df, 0x7cf, 0x7f2, 0x7de, 0x7ca, 0x7ef, 0x7d9, 0x3b, 0x7de,
+0x7d0, 0x7ec, 0x7d3, 0x3b, 0x7de, 0x7d0, 0x7ec, 0x7df, 0x3b, 0x7de, 0x7ce, 0x7e3,
+0x3b, 0x7d3, 0x7cc, 0x7df, 0x3b, 0x7db, 0x7cc, 0x7ec, 0x7e3, 0x3b, 0x7de, 0x7cd,
+0x7f2, 0x7d8, 0x7de, 0x7ca, 0x7ef, 0x7d9, 0x3b, 0x7de, 0x7d0, 0x7ec, 0x7d3, 0x3b,
+0x7de, 0x7d0, 0x7ec, 0x7df, 0x7cf, 0x7f2, 0x3b, 0x7de, 0x7ce, 0x7e3, 0x3b, 0x7d3,
+0x7cc, 0x7df, 0x3b, 0x7db, 0x7cc, 0x7ec, 0x7e3, 0x3b, 0x7de, 0x7cd, 0x7f2, 0x7d8,
+0x7de, 0x3b, 0x7de, 0x3b, 0x7de, 0x3b, 0x7de, 0x3b, 0x7d3, 0x3b, 0x7db, 0x3b,
+0x7de, 0x73, 0x6f, 0x74, 0x6e, 0x61, 0x62, 0x65, 0x61, 0x69, 0x76, 0x69,
+0x3b, 0x76, 0x75, 0x6f, 0x73, 0x73, 0xe1, 0x72, 0x67, 0x61, 0x3b, 0x6d,
+0x61, 0x14b, 0x14b, 0x65, 0x62, 0xe1, 0x72, 0x67, 0x61, 0x3b, 0x67, 0x61,
+0x73, 0x6b, 0x61, 0x76, 0x61, 0x68, 0x6b, 0x6b, 0x75, 0x3b, 0x64, 0x75,
+0x6f, 0x72, 0x61, 0x73, 0x64, 0x61, 0x74, 0x3b, 0x62, 0x65, 0x61, 0x72,
+0x6a, 0x61, 0x64, 0x61, 0x74, 0x3b, 0x6c, 0xe1, 0x76, 0x76, 0x61, 0x72,
+0x64, 0x61, 0x74, 0x73, 0x6f, 0x74, 0x6e, 0x3b, 0x76, 0x75, 0x6f, 0x73,
+0x3b, 0x6d, 0x61, 0x14b, 0x3b, 0x67, 0x61, 0x73, 0x6b, 0x3b, 0x64, 0x75,
+0x6f, 0x72, 0x3b, 0x62, 0x65, 0x61, 0x72, 0x3b, 0x6c, 0xe1, 0x76, 0x53,
+0x3b, 0x56, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x4c,
+0x73, 0x6f, 0x74, 0x6e, 0x61, 0x62, 0x65, 0x61, 0x69, 0x76, 0x69, 0x3b,
+0x6d, 0xe1, 0x6e, 0x6e, 0x6f, 0x64, 0x61, 0x74, 0x3b, 0x64, 0x69, 0x73,
+0x64, 0x61, 0x74, 0x3b, 0x67, 0x61, 0x73, 0x6b, 0x61, 0x76, 0x61, 0x68,
+0x6b, 0x6b, 0x75, 0x3b, 0x64, 0x75, 0x6f, 0x72, 0x61, 0x73, 0x74, 0x61,
+0x74, 0x3b, 0x62, 0x65, 0x61, 0x72, 0x6a, 0x61, 0x64, 0x61, 0x74, 0x3b,
+0x6c, 0xe1, 0x76, 0x76, 0x6f, 0x72, 0x64, 0x61, 0x74, 0x73, 0x6f, 0x3b,
+0x6d, 0xe1, 0x3b, 0x64, 0x69, 0x3b, 0x67, 0x61, 0x3b, 0x64, 0x75, 0x3b,
+0x62, 0x65, 0x3b, 0x6c, 0xe1, 0x53, 0x3b, 0x4d, 0x3b, 0x44, 0x3b, 0x47,
+0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x4c, 0x4c, 0x61, 0x6d, 0x6f, 0x72, 0x65,
+0x6e, 0x61, 0x3b, 0x4d, 0x75, 0x73, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67,
+0x6f, 0x3b, 0x4c, 0x61, 0x62, 0x6f, 0x62, 0x65, 0x64, 0x69, 0x3b, 0x4c,
+0x61, 0x62, 0x6f, 0x72, 0x61, 0x72, 0x6f, 0x3b, 0x4c, 0x61, 0x62, 0x6f,
+0x6e, 0x65, 0x3b, 0x4c, 0x61, 0x62, 0x6f, 0x68, 0x6c, 0x61, 0x6e, 0x6f,
+0x3b, 0x4d, 0x6f, 0x6b, 0x69, 0x62, 0x65, 0x6c, 0x6f, 0x4c, 0x61, 0x6d,
+0x3b, 0x4d, 0x6f, 0x73, 0x3b, 0x42, 0x65, 0x64, 0x3b, 0x52, 0x61, 0x72,
+0x3b, 0x4e, 0x65, 0x3b, 0x48, 0x6c, 0x61, 0x3b, 0x4d, 0x6f, 0x6b, 0x4c,
+0x3b, 0x4d, 0x3b, 0x42, 0x3b, 0x52, 0x3b, 0x4e, 0x3b, 0x48, 0x3b, 0x4d,
+0x53, 0x6f, 0x6e, 0x74, 0x6f, 0x3b, 0x4d, 0x76, 0x75, 0x6c, 0x6f, 0x3b,
+0x53, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x3b, 0x53, 0x69, 0x74, 0x68, 0x61,
+0x74, 0x68, 0x75, 0x3b, 0x53, 0x69, 0x6e, 0x65, 0x3b, 0x53, 0x69, 0x68,
+0x6c, 0x61, 0x6e, 0x75, 0x3b, 0x4d, 0x67, 0x71, 0x69, 0x62, 0x65, 0x6c,
+0x6f, 0x53, 0x6f, 0x6e, 0x3b, 0x4d, 0x76, 0x75, 0x3b, 0x53, 0x69, 0x62,
+0x3b, 0x53, 0x69, 0x74, 0x3b, 0x53, 0x69, 0x6e, 0x3b, 0x53, 0x69, 0x68,
+0x3b, 0x4d, 0x67, 0x71, 0x53, 0x3b, 0x4d, 0x3b, 0x53, 0x3b, 0x53, 0x3b,
+0x53, 0x3b, 0x53, 0x3b, 0x4d, 0x73, 0xf8, 0x6e, 0x2e, 0x3b, 0x6d, 0x61,
+0x6e, 0x2e, 0x3b, 0x74, 0x69, 0x72, 0x2e, 0x3b, 0x6f, 0x6e, 0x73, 0x2e,
+0x3b, 0x74, 0x6f, 0x72, 0x2e, 0x3b, 0x66, 0x72, 0x65, 0x2e, 0x3b, 0x6c,
+0xf8, 0x72, 0x2e, 0x73, 0xf8, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x6d, 0xe5,
+0x6e, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x79, 0x73, 0x64, 0x61, 0x67, 0x3b,
+0x6f, 0x6e, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x6f, 0x72, 0x73, 0x64,
+0x61, 0x67, 0x3b, 0x66, 0x72, 0x65, 0x64, 0x61, 0x67, 0x3b, 0x6c, 0x61,
+0x75, 0x72, 0x64, 0x61, 0x67, 0x73, 0xf8, 0x6e, 0x3b, 0x6d, 0xe5, 0x6e,
+0x3b, 0x74, 0x79, 0x73, 0x3b, 0x6f, 0x6e, 0x73, 0x3b, 0x74, 0x6f, 0x72,
+0x3b, 0x66, 0x72, 0x65, 0x3b, 0x6c, 0x61, 0x75, 0x73, 0xf8, 0x2e, 0x3b,
+0x6d, 0xe5, 0x2e, 0x3b, 0x74, 0x79, 0x2e, 0x3b, 0x6f, 0x6e, 0x2e, 0x3b,
+0x74, 0x6f, 0x2e, 0x3b, 0x66, 0x72, 0x2e, 0x3b, 0x6c, 0x61, 0x2e, 0x43,
+0xe4, 0x14b, 0x20, 0x6b, 0x75, 0x254, 0x74, 0x68, 0x3b, 0x4a, 0x69, 0x65,
+0x63, 0x20, 0x6c, 0x61, 0x331, 0x74, 0x3b, 0x52, 0x25b, 0x77, 0x20, 0x6c,
+0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x44, 0x69, 0x254, 0x331, 0x6b, 0x20, 0x6c,
+0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x14a, 0x75, 0x61, 0x61, 0x6e, 0x20, 0x6c,
+0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x44, 0x68, 0x69, 0x65, 0x65, 0x63, 0x20,
+0x6c, 0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x42, 0xe4, 0x6b, 0x25b, 0x6c, 0x20,
+0x6c, 0xe4, 0x74, 0x6e, 0x69, 0x43, 0xe4, 0x14b, 0x3b, 0x4a, 0x69, 0x65,
+0x63, 0x3b, 0x52, 0x25b, 0x77, 0x3b, 0x44, 0x69, 0x254, 0x331, 0x6b, 0x3b,
+0x14a, 0x75, 0x61, 0x61, 0x6e, 0x3b, 0x44, 0x68, 0x69, 0x65, 0x65, 0x63,
+0x3b, 0x42, 0xe4, 0x6b, 0x25b, 0x6c, 0x43, 0x3b, 0x4a, 0x3b, 0x52, 0x3b,
+0x44, 0x3b, 0x14a, 0x3b, 0x44, 0x3b, 0x42, 0x4c, 0x61, 0x6d, 0x75, 0x6c,
+0x75, 0x6e, 0x67, 0x75, 0x3b, 0x4c, 0x6f, 0x6c, 0x65, 0x6d, 0x62, 0x61,
+0x3b, 0x4c, 0x61, 0x63, 0x68, 0x69, 0x77, 0x69, 0x72, 0x69, 0x3b, 0x4c,
+0x61, 0x63, 0x68, 0x69, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4c, 0x61, 0x63,
+0x68, 0x69, 0x6e, 0x61, 0x79, 0x69, 0x3b, 0x4c, 0x61, 0x63, 0x68, 0x69,
+0x73, 0x61, 0x6e, 0x75, 0x3b, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x75, 0x6b,
+0x61, 0x4d, 0x75, 0x6c, 0x3b, 0x4c, 0x65, 0x6d, 0x3b, 0x57, 0x69, 0x72,
+0x3b, 0x54, 0x61, 0x74, 0x3b, 0x4e, 0x61, 0x69, 0x3b, 0x53, 0x61, 0x6e,
+0x3b, 0x57, 0x65, 0x72, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x67, 0x65, 0x3b,
+0x64, 0x69, 0x6c, 0x75, 0x6e, 0x73, 0x3b, 0x64, 0x69, 0x6d, 0x61, 0x72,
+0x73, 0x3b, 0x64, 0x69, 0x6d, 0xe8, 0x63, 0x72, 0x65, 0x73, 0x3b, 0x64,
+0x69, 0x6a, 0xf2, 0x75, 0x73, 0x3b, 0x64, 0x69, 0x76, 0x65, 0x6e, 0x64,
+0x72, 0x65, 0x73, 0x3b, 0x64, 0x69, 0x73, 0x73, 0x61, 0x62, 0x74, 0x65,
+0x44, 0x67, 0x3b, 0x44, 0x6c, 0x3b, 0x44, 0x6d, 0x3b, 0x44, 0x63, 0x3b,
+0x44, 0x6a, 0x3b, 0x44, 0x76, 0x3b, 0x44, 0x73, 0x64, 0x69, 0x6d, 0x65,
+0x6e, 0x67, 0x65, 0x3b, 0x64, 0x65, 0x6c, 0x75, 0x6e, 0x73, 0x3b, 0x64,
+0x69, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x64, 0x69, 0x6d, 0xe8, 0x72, 0x63,
+0x6c, 0x65, 0x73, 0x3b, 0x64, 0x69, 0x6a, 0x61, 0x75, 0x73, 0x3b, 0x64,
+0x69, 0x75, 0x65, 0x6e, 0x64, 0x72, 0x65, 0x73, 0x3b, 0x64, 0x69, 0x73,
+0x73, 0x61, 0x62, 0x74, 0x65, 0x64, 0x69, 0x6d, 0x3b, 0x64, 0x65, 0x6c,
+0x3b, 0x64, 0x6d, 0x61, 0x3b, 0x64, 0x6d, 0xe8, 0x3b, 0x64, 0x69, 0x6a,
+0x3b, 0x64, 0x69, 0x75, 0x3b, 0x64, 0x69, 0x73, 0x44, 0x3b, 0x4c, 0x3b,
+0x4d, 0x3b, 0x58, 0x3b, 0x4a, 0x3b, 0x55, 0x3b, 0x53, 0xb30, 0xb2c, 0xb3f,
+0xb2c, 0xb3e, 0xb30, 0x3b, 0xb38, 0xb4b, 0xb2e, 0xb2c, 0xb3e, 0xb30, 0x3b, 0xb2e,
+0xb19, 0xb4d, 0xb17, 0xb33, 0xb2c, 0xb3e, 0xb30, 0x3b, 0xb2c, 0xb41, 0xb27, 0xb2c,
+0xb3e, 0xb30, 0x3b, 0xb17, 0xb41, 0xb30, 0xb41, 0xb2c, 0xb3e, 0xb30, 0x3b, 0xb36,
+0xb41, 0xb15, 0xb4d, 0xb30, 0xb2c, 0xb3e, 0xb30, 0x3b, 0xb36, 0xb28, 0xb3f, 0xb2c,
+0xb3e, 0xb30, 0xb30, 0xb2c, 0xb3f, 0x3b, 0xb38, 0xb4b, 0xb2e, 0x3b, 0xb2e, 0xb19,
+0xb4d, 0xb17, 0xb33, 0x3b, 0xb2c, 0xb41, 0xb27, 0x3b, 0xb17, 0xb41, 0xb30, 0xb41,
+0x3b, 0xb36, 0xb41, 0xb15, 0xb4d, 0xb30, 0x3b, 0xb36, 0xb28, 0xb3f, 0xb30, 0x3b,
+0xb38, 0xb4b, 0x3b, 0xb2e, 0x3b, 0xb2c, 0xb41, 0x3b, 0xb17, 0xb41, 0x3b, 0xb36,
+0xb41, 0x3b, 0xb36, 0x44, 0x69, 0x6c, 0x62, 0x61, 0x74, 0x61, 0x3b, 0x57,
+0x69, 0x69, 0x78, 0x61, 0x74, 0x61, 0x3b, 0x51, 0x69, 0x62, 0x78, 0x61,
+0x74, 0x61, 0x3b, 0x52, 0x6f, 0x6f, 0x62, 0x69, 0x69, 0x3b, 0x4b, 0x61,
+0x6d, 0x69, 0x69, 0x73, 0x61, 0x3b, 0x4a, 0x69, 0x6d, 0x61, 0x61, 0x74,
+0x61, 0x3b, 0x53, 0x61, 0x6e, 0x62, 0x61, 0x74, 0x61, 0x44, 0x69, 0x6c,
+0x3b, 0x57, 0x69, 0x78, 0x3b, 0x51, 0x69, 0x62, 0x3b, 0x52, 0x6f, 0x62,
+0x3b, 0x4b, 0x61, 0x6d, 0x3b, 0x4a, 0x69, 0x6d, 0x3b, 0x53, 0x61, 0x6e,
+0x44, 0x3b, 0x57, 0x3b, 0x51, 0x3b, 0x52, 0x3b, 0x4b, 0x3b, 0x4a, 0x3b,
+0x53, 0xd801, 0xdcb9, 0xd801, 0xdcd8, 0x358, 0xd801, 0xdcec, 0xd801, 0xdcd8, 0x20, 0xd801,
+0xdccf, 0xd801, 0xdcd8, 0xd801, 0xdce4, 0xd801, 0xdcd8, 0x358, 0xd801, 0xdcf0, 0xd801, 0xdcd8,
+0xd801, 0xdce4, 0xd801, 0xdce3, 0x3b, 0xd801, 0xdcb9, 0xd801, 0xdcd8, 0x358, 0xd801, 0xdcec,
+0xd801, 0xdcd8, 0x20, 0xd801, 0xdcc4, 0xd801, 0xdcd8, 0xd801, 0xdce1, 0xd801, 0xdcdb, 0x358,
+0xd801, 0xdce7, 0xd801, 0xdce3, 0x3b, 0xd801, 0xdcb9, 0xd801, 0xdcd8, 0x358, 0xd801, 0xdcec,
+0xd801, 0xdcd8, 0x20, 0xd801, 0xdccf, 0xd801, 0xdcdf, 0xd801, 0xdcf5, 0xd801, 0xdcea, 0x358,
+0xd801, 0xdcec, 0xd801, 0xdcd8, 0x3b, 0xd801, 0xdcb9, 0xd801, 0xdcd8, 0x358, 0xd801, 0xdcec,
+0xd801, 0xdcd8, 0x20, 0xd801, 0xdccf, 0xd801, 0xdcdf, 0xd801, 0xdcf5, 0xd801, 0xdcd8, 0xd801,
+0xdcdc, 0xd801, 0xdce3, 0x3b, 0xd801, 0xdcb9, 0xd801, 0xdcd8, 0x358, 0xd801, 0xdcec, 0xd801,
+0xdcd8, 0x20, 0xd801, 0xdccf, 0xd801, 0xdcdf, 0xd801, 0xdcf0, 0xd801, 0xdcea, 0xd801, 0xdcec,
+0xd801, 0xdcd8, 0x3b, 0xd801, 0xdcb9, 0xd801, 0xdcd8, 0x358, 0xd801, 0xdcec, 0xd801, 0xdcd8,
+0x20, 0xd801, 0xdcc8, 0xd801, 0xdcd8, 0x20, 0xd801, 0xdcf5, 0xd801, 0xdcd8, 0xd801, 0xdcf2,
+0xd801, 0xdcd8, 0x20, 0xd801, 0xdcfb, 0xd801, 0xdce3, 0x358, 0x3b, 0xd801, 0xdcb9, 0xd801,
+0xdcd8, 0x358, 0xd801, 0xdcec, 0xd801, 0xdcd8, 0x20, 0xd801, 0xdcc2, 0xd801, 0xdce4, 0xd801,
+0xdcd8, 0xd801, 0xdcf8, 0xd801, 0xdcdf, 0x20, 0xd801, 0xdce3, 0x358, 0xd801, 0xdce4, 0xd801,
+0xdcdf, 0xd801, 0xdccf, 0x3b, 0xd801, 0xdcc4, 0x3b, 0xd801, 0xdccd, 0x3b, 0xd801, 0xdcb4,
+0x3b, 0xd801, 0xdcc8, 0x3b, 0xd801, 0xdcca, 0x3b, 0xd801, 0xdcf8, 0x425, 0x443, 0x44b,
+0x446, 0x430, 0x443, 0x431, 0x43e, 0x43d, 0x3b, 0x41a, 0x44a, 0x443, 0x44b, 0x440,
+0x438, 0x441, 0x4d5, 0x440, 0x3b, 0x414, 0x44b, 0x446, 0x446, 0x4d5, 0x433, 0x3b,
+0x4d4, 0x440, 0x442, 0x44b, 0x446, 0x446, 0x4d5, 0x433, 0x3b, 0x426, 0x44b, 0x43f,
+0x43f, 0x4d5, 0x440, 0x4d5, 0x43c, 0x3b, 0x41c, 0x430, 0x439, 0x440, 0x4d5, 0x43c,
+0x431, 0x43e, 0x43d, 0x3b, 0x421, 0x430, 0x431, 0x430, 0x442, 0x445, 0x443, 0x44b,
+0x446, 0x430, 0x443, 0x431, 0x43e, 0x43d, 0x3b, 0x43a, 0x44a, 0x443, 0x44b, 0x440,
+0x438, 0x441, 0x4d5, 0x440, 0x3b, 0x434, 0x44b, 0x446, 0x446, 0x4d5, 0x433, 0x3b,
+0x4d5, 0x440, 0x442, 0x44b, 0x446, 0x446, 0x4d5, 0x433, 0x3b, 0x446, 0x44b, 0x43f,
+0x43f, 0x4d5, 0x440, 0x4d5, 0x43c, 0x3b, 0x43c, 0x430, 0x439, 0x440, 0x4d5, 0x43c,
+0x431, 0x43e, 0x43d, 0x3b, 0x441, 0x430, 0x431, 0x430, 0x442, 0x425, 0x446, 0x431,
+0x3b, 0x41a, 0x440, 0x441, 0x3b, 0x414, 0x446, 0x433, 0x3b, 0x4d4, 0x440, 0x442,
+0x3b, 0x426, 0x43f, 0x440, 0x3b, 0x41c, 0x440, 0x431, 0x3b, 0x421, 0x431, 0x442,
+0x445, 0x446, 0x431, 0x3b, 0x43a, 0x440, 0x441, 0x3b, 0x434, 0x446, 0x433, 0x3b,
+0x4d5, 0x440, 0x442, 0x3b, 0x446, 0x43f, 0x440, 0x3b, 0x43c, 0x440, 0x431, 0x3b,
+0x441, 0x431, 0x442, 0x425, 0x3b, 0x41a, 0x3b, 0x414, 0x3b, 0x4d4, 0x3b, 0x426,
+0x3b, 0x41c, 0x3b, 0x421, 0x64, 0x6a, 0x61, 0x64, 0x75, 0x6d, 0x69, 0x6e,
+0x67, 0x75, 0x3b, 0x64, 0x6a, 0x61, 0x6c, 0x75, 0x6e, 0x61, 0x3b, 0x64,
+0x6a, 0x61, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x64, 0x6a, 0x61, 0x72, 0x61,
+0x73, 0x6f, 0x6e, 0x3b, 0x64, 0x6a, 0x61, 0x77, 0x65, 0x70, 0x73, 0x3b,
+0x64, 0x6a, 0x61, 0x62, 0x69, 0xe8, 0x72, 0x6e, 0xe8, 0x3b, 0x64, 0x6a,
+0x61, 0x73, 0x61, 0x62, 0x72, 0x61, 0x64, 0x64, 0x3b, 0x64, 0x6c, 0x3b,
+0x64, 0x6d, 0x3b, 0x64, 0x72, 0x3b, 0x64, 0x77, 0x3b, 0x64, 0x62, 0x3b,
+0x64, 0x73, 0x64a, 0x648, 0x646, 0x6cd, 0x3b, 0x62f, 0x648, 0x646, 0x6cd, 0x3b,
+0x62f, 0x631, 0x6d0, 0x646, 0x6cd, 0x3b, 0x685, 0x644, 0x631, 0x646, 0x6cd, 0x3b,
+0x67e, 0x64a, 0x646, 0x681, 0x646, 0x6cd, 0x3b, 0x62c, 0x645, 0x639, 0x647, 0x3b,
+0x627, 0x648, 0x646, 0x6cd, 0x6cc, 0x6a9, 0x634, 0x646, 0x628, 0x647, 0x3b, 0x62f,
+0x648, 0x634, 0x646, 0x628, 0x647, 0x3b, 0x633, 0x647, 0x200c, 0x634, 0x646, 0x628,
+0x647, 0x3b, 0x686, 0x647, 0x627, 0x631, 0x634, 0x646, 0x628, 0x647, 0x3b, 0x67e,
+0x646, 0x62c, 0x634, 0x646, 0x628, 0x647, 0x3b, 0x62c, 0x645, 0x639, 0x647, 0x3b,
+0x634, 0x646, 0x628, 0x647, 0x6cc, 0x3b, 0x62f, 0x3b, 0x633, 0x3b, 0x686, 0x3b,
+0x67e, 0x3b, 0x62c, 0x3b, 0x634, 0x6e, 0x69, 0x65, 0x64, 0x7a, 0x69, 0x65,
+0x6c, 0x61, 0x3b, 0x70, 0x6f, 0x6e, 0x69, 0x65, 0x64, 0x7a, 0x69, 0x61,
+0x142, 0x65, 0x6b, 0x3b, 0x77, 0x74, 0x6f, 0x72, 0x65, 0x6b, 0x3b, 0x15b,
+0x72, 0x6f, 0x64, 0x61, 0x3b, 0x63, 0x7a, 0x77, 0x61, 0x72, 0x74, 0x65,
+0x6b, 0x3b, 0x70, 0x69, 0x105, 0x74, 0x65, 0x6b, 0x3b, 0x73, 0x6f, 0x62,
+0x6f, 0x74, 0x61, 0x6e, 0x69, 0x65, 0x64, 0x7a, 0x2e, 0x3b, 0x70, 0x6f,
+0x6e, 0x2e, 0x3b, 0x77, 0x74, 0x2e, 0x3b, 0x15b, 0x72, 0x2e, 0x3b, 0x63,
+0x7a, 0x77, 0x2e, 0x3b, 0x70, 0x74, 0x2e, 0x3b, 0x73, 0x6f, 0x62, 0x2e,
+0x4e, 0x3b, 0x50, 0x3b, 0x57, 0x3b, 0x15a, 0x3b, 0x43, 0x3b, 0x50, 0x3b,
+0x53, 0x6e, 0x3b, 0x70, 0x3b, 0x77, 0x3b, 0x15b, 0x3b, 0x63, 0x3b, 0x70,
+0x3b, 0x73, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x73, 0x65,
+0x67, 0x75, 0x6e, 0x64, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b,
+0x74, 0x65, 0x72, 0xe7, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b,
+0x71, 0x75, 0x61, 0x72, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61,
+0x3b, 0x71, 0x75, 0x69, 0x6e, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72,
+0x61, 0x3b, 0x73, 0x65, 0x78, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72,
+0x61, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x64, 0x6f, 0x6d, 0x2e,
+0x3b, 0x73, 0x65, 0x67, 0x2e, 0x3b, 0x74, 0x65, 0x72, 0x2e, 0x3b, 0x71,
+0x75, 0x61, 0x2e, 0x3b, 0x71, 0x75, 0x69, 0x2e, 0x3b, 0x73, 0x65, 0x78,
+0x2e, 0x3b, 0x73, 0xe1, 0x62, 0x2e, 0x44, 0x3b, 0x53, 0x3b, 0x54, 0x3b,
+0x51, 0x3b, 0x51, 0x3b, 0x53, 0x3b, 0x53, 0x64, 0x6f, 0x6d, 0x69, 0x6e,
+0x67, 0x6f, 0x3b, 0x73, 0x65, 0x67, 0x75, 0x6e, 0x64, 0x61, 0x3b, 0x74,
+0x65, 0x72, 0xe7, 0x61, 0x3b, 0x71, 0x75, 0x61, 0x72, 0x74, 0x61, 0x3b,
+0x71, 0x75, 0x69, 0x6e, 0x74, 0x61, 0x3b, 0x73, 0x65, 0x78, 0x74, 0x61,
+0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x6e, 0x61, 0x64, 0x12b, 0x6c,
+0x69, 0x3b, 0x70, 0x61, 0x6e, 0x61, 0x64, 0x12b, 0x6c, 0x69, 0x3b, 0x77,
+0x69, 0x73, 0x61, 0x73, 0x12b, 0x64, 0x69, 0x73, 0x3b, 0x70, 0x75, 0x73,
+0x73, 0x69, 0x73, 0x61, 0x77, 0x61, 0x69, 0x74, 0x69, 0x3b, 0x6b, 0x65,
+0x74, 0x77, 0x69, 0x72, 0x74, 0x69, 0x6b, 0x73, 0x3b, 0x70, 0x113, 0x6e,
+0x74, 0x6e, 0x69, 0x6b, 0x73, 0x3b, 0x73, 0x61, 0x62, 0x61, 0x74, 0x74,
+0x69, 0x6b, 0x61, 0x6e, 0x61, 0x64, 0x3b, 0x70, 0x61, 0x6e, 0x3b, 0x77,
+0x69, 0x73, 0x3b, 0x70, 0x75, 0x73, 0x3b, 0x6b, 0x65, 0x74, 0x3b, 0x70,
+0x113, 0x6e, 0x3b, 0x73, 0x61, 0x62, 0x4e, 0x3b, 0x50, 0x3b, 0x57, 0x3b,
+0x50, 0x3b, 0x4b, 0x3b, 0x50, 0x3b, 0x53, 0xa10, 0xa24, 0xa35, 0xa3e, 0xa30,
+0x3b, 0xa38, 0xa4b, 0xa2e, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa2e, 0xa70, 0xa17, 0xa32,
+0xa35, 0xa3e, 0xa30, 0x3b, 0xa2c, 0xa41, 0xa71, 0xa27, 0xa35, 0xa3e, 0xa30, 0x3b,
+0xa35, 0xa40, 0xa30, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa38, 0xa3c, 0xa41, 0xa71, 0xa15,
+0xa30, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa38, 0xa3c, 0xa28, 0xa3f, 0xa71, 0xa1a, 0xa30,
+0xa35, 0xa3e, 0xa30, 0xa10, 0xa24, 0x3b, 0xa38, 0xa4b, 0xa2e, 0x3b, 0xa2e, 0xa70,
+0xa17, 0xa32, 0x3b, 0xa2c, 0xa41, 0xa71, 0xa27, 0x3b, 0xa35, 0xa40, 0xa30, 0x3b,
+0xa38, 0xa3c, 0xa41, 0xa71, 0xa15, 0xa30, 0x3b, 0xa38, 0xa3c, 0xa28, 0xa3f, 0xa71,
+0xa1a, 0xa30, 0xa10, 0x3b, 0xa38, 0xa4b, 0x3b, 0xa2e, 0xa70, 0x3b, 0xa2c, 0xa41,
+0xa71, 0x3b, 0xa35, 0xa40, 0x3b, 0xa38, 0xa3c, 0xa41, 0xa71, 0x3b, 0xa38, 0xa3c,
+0x627, 0x62a, 0x648, 0x627, 0x631, 0x3b, 0x67e, 0x6cc, 0x631, 0x3b, 0x645, 0x646,
+0x6af, 0x644, 0x3b, 0x628, 0x64f, 0x62f, 0x6be, 0x3b, 0x62c, 0x645, 0x639, 0x631,
+0x627, 0x62a, 0x3b, 0x62c, 0x645, 0x639, 0x6c1, 0x3b, 0x6c1, 0x641, 0x62a, 0x6c1,
+0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x4c, 0x75, 0x6e, 0x65,
+0x73, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x4d, 0x69, 0xe9,
+0x72, 0x63, 0x6f, 0x6c, 0x65, 0x73, 0x3b, 0x4a, 0x75, 0x65, 0x76, 0x65,
+0x73, 0x3b, 0x56, 0x69, 0x65, 0x72, 0x6e, 0x65, 0x73, 0x3b, 0x53, 0xe1,
+0x62, 0x61, 0x64, 0x6f, 0x44, 0x6f, 0x6d, 0x3b, 0x4c, 0x75, 0x6e, 0x3b,
+0x4d, 0x61, 0x72, 0x3b, 0x4d, 0x69, 0xe9, 0x3b, 0x4a, 0x75, 0x65, 0x3b,
+0x56, 0x69, 0x65, 0x3b, 0x53, 0x61, 0x62, 0x44, 0x3b, 0x4c, 0x3b, 0x4d,
+0x3b, 0x58, 0x3b, 0x4a, 0x3b, 0x56, 0x3b, 0x53, 0x64, 0x75, 0x6d, 0x69,
+0x6e, 0x69, 0x63, 0x103, 0x3b, 0x6c, 0x75, 0x6e, 0x69, 0x3b, 0x6d, 0x61,
+0x72, 0x21b, 0x69, 0x3b, 0x6d, 0x69, 0x65, 0x72, 0x63, 0x75, 0x72, 0x69,
+0x3b, 0x6a, 0x6f, 0x69, 0x3b, 0x76, 0x69, 0x6e, 0x65, 0x72, 0x69, 0x3b,
+0x73, 0xe2, 0x6d, 0x62, 0x103, 0x74, 0x103, 0x64, 0x75, 0x6d, 0x2e, 0x3b,
+0x6c, 0x75, 0x6e, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x6d, 0x69,
+0x65, 0x2e, 0x3b, 0x6a, 0x6f, 0x69, 0x3b, 0x76, 0x69, 0x6e, 0x2e, 0x3b,
+0x73, 0xe2, 0x6d, 0x2e, 0x44, 0x75, 0x6d, 0x3b, 0x4c, 0x75, 0x6e, 0x3b,
+0x4d, 0x61, 0x72, 0x3b, 0x4d, 0x69, 0x65, 0x3b, 0x4a, 0x6f, 0x69, 0x3b,
+0x56, 0x69, 0x6e, 0x3b, 0x53, 0xe2, 0x6d, 0x44, 0x3b, 0x4c, 0x3b, 0x4d,
+0x61, 0x3b, 0x4d, 0x69, 0x3b, 0x4a, 0x3b, 0x56, 0x3b, 0x53, 0x64, 0x75,
+0x6d, 0x65, 0x6e, 0x67, 0x69, 0x61, 0x3b, 0x67, 0x6c, 0x69, 0x6e, 0x64,
+0x65, 0x73, 0x64, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x64, 0x69, 0x3b, 0x6d,
+0x65, 0x73, 0x65, 0x6d, 0x6e, 0x61, 0x3b, 0x67, 0x69, 0x65, 0x76, 0x67,
+0x69, 0x61, 0x3b, 0x76, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x64, 0x69, 0x3b,
+0x73, 0x6f, 0x6e, 0x64, 0x61, 0x64, 0x75, 0x3b, 0x67, 0x6c, 0x69, 0x3b,
+0x6d, 0x61, 0x3b, 0x6d, 0x65, 0x3b, 0x67, 0x69, 0x65, 0x3b, 0x76, 0x65,
+0x3b, 0x73, 0x6f, 0x44, 0x3b, 0x47, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x47,
+0x3b, 0x56, 0x3b, 0x53, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x6c,
+0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b,
+0x49, 0x6a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x49, 0x6a, 0x75,
+0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d,
+0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x49,
+0x6a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x49, 0x6a, 0x70, 0x3b,
+0x49, 0x6a, 0x74, 0x3b, 0x49, 0x6a, 0x6e, 0x3b, 0x49, 0x6a, 0x74, 0x6e,
+0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x75, 0x3b, 0x49, 0x6a, 0x6d,
+0x4b, 0x75, 0x20, 0x77, 0x2019, 0x69, 0x6e, 0x64, 0x77, 0x69, 0x3b, 0x4b,
+0x75, 0x20, 0x77, 0x61, 0x20, 0x6d, 0x62, 0x65, 0x72, 0x65, 0x3b, 0x4b,
+0x75, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x62, 0x69, 0x72, 0x69, 0x3b,
+0x4b, 0x75, 0x20, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x74, 0x75,
+0x3b, 0x4b, 0x75, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x65, 0x3b,
+0x4b, 0x75, 0x20, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x6e, 0x75,
+0x3b, 0x4b, 0x75, 0x20, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x6e,
+0x64, 0x61, 0x74, 0x75, 0x63, 0x75, 0x2e, 0x3b, 0x6d, 0x62, 0x65, 0x2e,
+0x3b, 0x6b, 0x61, 0x62, 0x2e, 0x3b, 0x67, 0x74, 0x75, 0x2e, 0x3b, 0x6b,
+0x61, 0x6e, 0x2e, 0x3b, 0x67, 0x6e, 0x75, 0x2e, 0x3b, 0x67, 0x6e, 0x64,
+0x2e, 0x432, 0x43e, 0x441, 0x43a, 0x440, 0x435, 0x441, 0x435, 0x43d, 0x44c, 0x435,
+0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x435, 0x43b, 0x44c, 0x43d, 0x438, 0x43a,
+0x3b, 0x432, 0x442, 0x43e, 0x440, 0x43d, 0x438, 0x43a, 0x3b, 0x441, 0x440, 0x435,
+0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x435, 0x440, 0x433, 0x3b, 0x43f,
+0x44f, 0x442, 0x43d, 0x438, 0x446, 0x430, 0x3b, 0x441, 0x443, 0x431, 0x431, 0x43e,
+0x442, 0x430, 0x432, 0x441, 0x3b, 0x43f, 0x43d, 0x3b, 0x432, 0x442, 0x3b, 0x441,
+0x440, 0x3b, 0x447, 0x442, 0x3b, 0x43f, 0x442, 0x3b, 0x441, 0x431, 0x412, 0x3b,
+0x41f, 0x3b, 0x412, 0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x41f, 0x3b, 0x421, 0x4e,
+0x61, 0x62, 0x61, 0x20, 0x53, 0x61, 0x6d, 0x62, 0x61, 0x74, 0x3b, 0x53,
+0x61, 0x6e, 0x69, 0x3b, 0x53, 0x61, 0x6c, 0x75, 0x73, 0x3b, 0x52, 0x61,
+0x62, 0x75, 0x71, 0x3b, 0x43, 0x61, 0x6d, 0x75, 0x73, 0x3b, 0x4a, 0x75,
+0x6d, 0x71, 0x61, 0x74, 0x61, 0x3b, 0x51, 0x75, 0x6e, 0x78, 0x61, 0x20,
+0x53, 0x61, 0x6d, 0x62, 0x61, 0x74, 0x4e, 0x61, 0x62, 0x3b, 0x53, 0x61,
+0x6e, 0x3b, 0x53, 0x61, 0x6c, 0x3b, 0x52, 0x61, 0x62, 0x3b, 0x43, 0x61,
+0x6d, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x51, 0x75, 0x6e, 0x4e, 0x3b, 0x53,
+0x3b, 0x53, 0x3b, 0x52, 0x3b, 0x43, 0x3b, 0x4a, 0x3b, 0x51, 0x431, 0x430,
+0x441, 0x43a, 0x44b, 0x4bb, 0x44b, 0x430, 0x43d, 0x43d, 0x44c, 0x430, 0x3b, 0x431,
+0x44d, 0x43d, 0x438, 0x434, 0x438, 0x44d, 0x43d, 0x43d, 0x44c, 0x438, 0x43a, 0x3b,
+0x43e, 0x43f, 0x442, 0x443, 0x43e, 0x440, 0x443, 0x43d, 0x43d, 0x44c, 0x443, 0x43a,
+0x3b, 0x441, 0x44d, 0x440, 0x44d, 0x434, 0x44d, 0x3b, 0x447, 0x44d, 0x43f, 0x43f,
+0x438, 0x44d, 0x440, 0x3b, 0x411, 0x44d, 0x44d, 0x442, 0x438, 0x4a5, 0x441, 0x44d,
+0x3b, 0x441, 0x443, 0x431, 0x443, 0x43e, 0x442, 0x430, 0x431, 0x441, 0x3b, 0x431,
+0x43d, 0x3b, 0x43e, 0x43f, 0x3b, 0x441, 0x44d, 0x3b, 0x447, 0x43f, 0x3b, 0x431,
+0x44d, 0x3b, 0x441, 0x431, 0x411, 0x3b, 0x411, 0x3b, 0x41e, 0x3b, 0x421, 0x3b,
+0x427, 0x3b, 0x411, 0x3b, 0x421, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20,
+0x65, 0x65, 0x20, 0x61, 0x72, 0x65, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f,
+0x74, 0x20, 0x65, 0x65, 0x20, 0x6b, 0x75, 0x6e, 0x69, 0x3b, 0x4d, 0x64,
+0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x6f, 0x6e, 0x67, 0x2019,
+0x77, 0x61, 0x6e, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65,
+0x65, 0x20, 0x69, 0x6e, 0x65, 0x74, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f,
+0x74, 0x20, 0x65, 0x65, 0x20, 0x69, 0x6c, 0x65, 0x3b, 0x4d, 0x64, 0x65,
+0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x73, 0x61, 0x70, 0x61, 0x3b,
+0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x6b, 0x77,
+0x65, 0x41, 0x72, 0x65, 0x3b, 0x4b, 0x75, 0x6e, 0x3b, 0x4f, 0x6e, 0x67,
+0x3b, 0x49, 0x6e, 0x65, 0x3b, 0x49, 0x6c, 0x65, 0x3b, 0x53, 0x61, 0x70,
+0x3b, 0x4b, 0x77, 0x65, 0x41, 0x3b, 0x4b, 0x3b, 0x4f, 0x3b, 0x49, 0x3b,
+0x49, 0x3b, 0x53, 0x3b, 0x4b, 0x42, 0x69, 0x6b, 0x75, 0x61, 0x2d, 0xf4,
+0x6b, 0x6f, 0x3b, 0x42, 0xef, 0x6b, 0x75, 0x61, 0x2d, 0xfb, 0x73, 0x65,
+0x3b, 0x42, 0xef, 0x6b, 0x75, 0x61, 0x2d, 0x70, 0x74, 0xe2, 0x3b, 0x42,
+0xef, 0x6b, 0x75, 0x61, 0x2d, 0x75, 0x73, 0xef, 0xf6, 0x3b, 0x42, 0xef,
+0x6b, 0x75, 0x61, 0x2d, 0x6f, 0x6b, 0xfc, 0x3b, 0x4c, 0xe2, 0x70, 0xf4,
+0x73, 0xf6, 0x3b, 0x4c, 0xe2, 0x79, 0x65, 0x6e, 0x67, 0x61, 0x42, 0x6b,
+0x31, 0x3b, 0x42, 0x6b, 0x32, 0x3b, 0x42, 0x6b, 0x33, 0x3b, 0x42, 0x6b,
+0x34, 0x3b, 0x42, 0x6b, 0x35, 0x3b, 0x4c, 0xe2, 0x70, 0x3b, 0x4c, 0xe2,
+0x79, 0x4b, 0x3b, 0x53, 0x3b, 0x54, 0x3b, 0x53, 0x3b, 0x4b, 0x3b, 0x50,
+0x3b, 0x59, 0x4d, 0x75, 0x6c, 0x75, 0x6e, 0x67, 0x75, 0x3b, 0x4a, 0x75,
+0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e,
+0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b,
+0x41, 0x6c, 0x61, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a,
+0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73,
+0x69, 0x4d, 0x75, 0x6c, 0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6e, 0x6e,
+0x3b, 0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x75,
+0x3b, 0x4a, 0x6d, 0x6f, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b,
+0x41, 0x3b, 0x49, 0x3b, 0x4a, 0x930, 0x935, 0x93f, 0x935, 0x93e, 0x938, 0x930,
+0x903, 0x3b, 0x938, 0x94b, 0x92e, 0x935, 0x93e, 0x938, 0x930, 0x903, 0x3b, 0x92e,
+0x902, 0x917, 0x932, 0x935, 0x93e, 0x938, 0x930, 0x903, 0x3b, 0x92c, 0x941, 0x927,
+0x935, 0x93e, 0x938, 0x930, 0x903, 0x3b, 0x917, 0x941, 0x930, 0x941, 0x935, 0x93e,
+0x938, 0x930, 0x3a, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x935, 0x93e, 0x938,
+0x930, 0x903, 0x3b, 0x936, 0x928, 0x93f, 0x935, 0x93e, 0x938, 0x930, 0x903, 0x1c65,
+0x1c64, 0x1c78, 0x1c5c, 0x1c6e, 0x3b, 0x1c5a, 0x1c5b, 0x1c6e, 0x3b, 0x1c75, 0x1c5f, 0x1c5e,
+0x1c6e, 0x3b, 0x1c65, 0x1c5f, 0x1c79, 0x1c5c, 0x1c69, 0x1c71, 0x3b, 0x1c65, 0x1c5f, 0x1c79,
+0x1c68, 0x1c6b, 0x1c64, 0x3b, 0x1c61, 0x1c5f, 0x1c79, 0x1c68, 0x1c69, 0x1c62, 0x3b, 0x1c67,
+0x1c69, 0x1c66, 0x1c69, 0x1c62, 0x1c65, 0x1c64, 0x1c78, 0x3b, 0x1c5a, 0x1c5b, 0x3b, 0x1c75,
+0x1c5f, 0x3b, 0x1c65, 0x1c5f, 0x1c79, 0x3b, 0x1c65, 0x1c5f, 0x1c79, 0x1c68, 0x3b, 0x1c61,
+0x1c5f, 0x1c79, 0x3b, 0x1c67, 0x1c69, 0x1c65, 0x3b, 0x1c5a, 0x3b, 0x1c75, 0x3b, 0x1c65,
+0x3b, 0x1c65, 0x3b, 0x1c61, 0x3b, 0x1c67, 0x64, 0x6f, 0x6d, 0xec, 0x6e, 0x69,
+0x67, 0x61, 0x3b, 0x6c, 0x75, 0x6e, 0x69, 0x73, 0x3b, 0x6d, 0x61, 0x72,
+0x74, 0x69, 0x73, 0x3b, 0x6d, 0xe8, 0x72, 0x63, 0x75, 0x72, 0x69, 0x73,
+0x3b, 0x67, 0x69, 0xf2, 0x62, 0x69, 0x61, 0x3b, 0x63, 0x68, 0x65, 0x6e,
+0xe0, 0x62, 0x75, 0x72, 0x61, 0x3b, 0x73, 0xe0, 0x62, 0x61, 0x64, 0x75,
+0x64, 0x6f, 0x6d, 0x3b, 0x6c, 0x75, 0x6e, 0x3b, 0x6d, 0x61, 0x72, 0x3b,
+0x6d, 0xe8, 0x72, 0x3b, 0x67, 0x69, 0xf2, 0x3b, 0x63, 0x68, 0x65, 0x3b,
+0x73, 0xe0, 0x62, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x47,
+0x3b, 0x43, 0x3b, 0x53, 0x44, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x75, 0x3b,
+0x43, 0x68, 0x69, 0x70, 0x6f, 0x73, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x70,
+0x69, 0x72, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x74, 0x61, 0x74, 0x75, 0x3b,
+0x43, 0x68, 0x69, 0x6e, 0x61, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x73, 0x68,
+0x61, 0x6e, 0x75, 0x3b, 0x53, 0x61, 0x62, 0x75, 0x64, 0x75, 0x44, 0x69,
+0x6d, 0x3b, 0x50, 0x6f, 0x73, 0x3b, 0x50, 0x69, 0x72, 0x3b, 0x54, 0x61,
+0x74, 0x3b, 0x4e, 0x61, 0x69, 0x3b, 0x53, 0x68, 0x61, 0x3b, 0x53, 0x61,
+0x62, 0x44, 0x3b, 0x50, 0x3b, 0x43, 0x3b, 0x54, 0x3b, 0x4e, 0x3b, 0x53,
+0x3b, 0x53, 0x43d, 0x435, 0x434, 0x435, 0x459, 0x430, 0x3b, 0x43f, 0x43e, 0x43d,
+0x435, 0x434, 0x435, 0x459, 0x430, 0x43a, 0x3b, 0x443, 0x442, 0x43e, 0x440, 0x430,
+0x43a, 0x3b, 0x441, 0x440, 0x435, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432,
+0x440, 0x442, 0x430, 0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x430, 0x43a, 0x3b, 0x441,
+0x443, 0x431, 0x43e, 0x442, 0x430, 0x43d, 0x435, 0x434, 0x3b, 0x43f, 0x43e, 0x43d,
+0x3b, 0x443, 0x442, 0x43e, 0x3b, 0x441, 0x440, 0x435, 0x3b, 0x447, 0x435, 0x442,
+0x3b, 0x43f, 0x435, 0x442, 0x3b, 0x441, 0x443, 0x431, 0x43d, 0x435, 0x434, 0x458,
+0x435, 0x459, 0x430, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x435, 0x459, 0x430,
+0x43a, 0x3b, 0x443, 0x442, 0x43e, 0x440, 0x430, 0x43a, 0x3b, 0x441, 0x440, 0x438,
+0x458, 0x435, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x440, 0x442, 0x430,
+0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x430, 0x43a, 0x3b, 0x441, 0x443, 0x431, 0x43e,
+0x442, 0x430, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, 0x3b, 0x70, 0x6f,
+0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, 0x6b, 0x3b, 0x75, 0x74, 0x6f,
+0x72, 0x61, 0x6b, 0x3b, 0x73, 0x72, 0x65, 0x64, 0x61, 0x3b, 0x10d, 0x65,
+0x74, 0x76, 0x72, 0x74, 0x61, 0x6b, 0x3b, 0x70, 0x65, 0x74, 0x61, 0x6b,
+0x3b, 0x73, 0x75, 0x62, 0x6f, 0x74, 0x61, 0x6e, 0x65, 0x64, 0x3b, 0x70,
+0x6f, 0x6e, 0x3b, 0x75, 0x74, 0x6f, 0x3b, 0x73, 0x72, 0x65, 0x3b, 0x10d,
+0x65, 0x74, 0x3b, 0x70, 0x65, 0x74, 0x3b, 0x73, 0x75, 0x62, 0x6e, 0x65,
+0x64, 0x6a, 0x65, 0x6c, 0x6a, 0x61, 0x3b, 0x70, 0x6f, 0x6e, 0x65, 0x64,
+0x65, 0x6c, 0x6a, 0x61, 0x6b, 0x3b, 0x75, 0x74, 0x6f, 0x72, 0x61, 0x6b,
+0x3b, 0x73, 0x72, 0x69, 0x6a, 0x65, 0x64, 0x61, 0x3b, 0x10d, 0x65, 0x74,
+0x76, 0x72, 0x74, 0x61, 0x6b, 0x3b, 0x70, 0x65, 0x74, 0x61, 0x6b, 0x3b,
+0x73, 0x75, 0x62, 0x6f, 0x74, 0x61, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x70,
+0x69, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x74, 0x61, 0x74, 0x75,
+0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d,
+0x61, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d,
+0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a,
+0x75, 0x6d, 0x61, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x4a, 0x70, 0x69, 0x3b,
+0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6d, 0x6e, 0x3b, 0x4a, 0x74, 0x6e, 0x3b,
+0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x75, 0x3b, 0x4a, 0x6d, 0x6f, 0x32,
+0x3b, 0x33, 0x3b, 0x34, 0x3b, 0x35, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x31,
+0x53, 0x76, 0x6f, 0x6e, 0x64, 0x6f, 0x3b, 0x4d, 0x75, 0x76, 0x68, 0x75,
+0x72, 0x6f, 0x3b, 0x43, 0x68, 0x69, 0x70, 0x69, 0x72, 0x69, 0x3b, 0x43,
+0x68, 0x69, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x43, 0x68, 0x69, 0x6e, 0x61,
+0x3b, 0x43, 0x68, 0x69, 0x73, 0x68, 0x61, 0x6e, 0x75, 0x3b, 0x4d, 0x75,
+0x67, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x53, 0x76, 0x6f, 0x3b, 0x4d, 0x75,
+0x76, 0x3b, 0x43, 0x68, 0x70, 0x3b, 0x43, 0x68, 0x74, 0x3b, 0x43, 0x68,
+0x6e, 0x3b, 0x43, 0x68, 0x73, 0x3b, 0x4d, 0x75, 0x67, 0x53, 0x3b, 0x4d,
+0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x4d, 0xa46d, 0xa18f,
+0xa44d, 0x3b, 0xa18f, 0xa282, 0xa2cd, 0x3b, 0xa18f, 0xa282, 0xa44d, 0x3b, 0xa18f, 0xa282,
+0xa315, 0x3b, 0xa18f, 0xa282, 0xa1d6, 0x3b, 0xa18f, 0xa282, 0xa26c, 0x3b, 0xa18f, 0xa282,
+0xa0d8, 0xa46d, 0xa18f, 0x3b, 0xa18f, 0xa2cd, 0x3b, 0xa18f, 0xa44d, 0x3b, 0xa18f, 0xa315,
+0x3b, 0xa18f, 0xa1d6, 0x3b, 0xa18f, 0xa26c, 0x3b, 0xa18f, 0xa0d8, 0xa18f, 0x3b, 0xa2cd,
+0x3b, 0xa44d, 0x3b, 0xa315, 0x3b, 0xa1d6, 0x3b, 0xa26c, 0x3b, 0xa0d8, 0x64, 0x75,
+0x6d, 0xec, 0x6e, 0x69, 0x63, 0x61, 0x3b, 0x6c, 0x75, 0x6e, 0x6e, 0x69,
+0x64, 0xec, 0x61, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x69, 0x64, 0xec, 0x61,
+0x3b, 0x6d, 0x65, 0x72, 0x63, 0x75, 0x72, 0x69, 0x64, 0xec, 0x61, 0x3b,
+0x6a, 0x6f, 0x76, 0x69, 0x64, 0xec, 0x61, 0x3b, 0x76, 0x65, 0x6e, 0x6e,
+0x69, 0x64, 0xec, 0x61, 0x3b, 0x73, 0xe0, 0x62, 0x62, 0x61, 0x74, 0x75,
+0x53, 0x61, 0x6d, 0x62, 0x61, 0x74, 0x61, 0x3b, 0x53, 0x61, 0x6e, 0x79,
+0x6f, 0x3b, 0x4d, 0x61, 0x61, 0x6b, 0x69, 0x73, 0x61, 0x6e, 0x79, 0x6f,
+0x3b, 0x52, 0x6f, 0x6f, 0x77, 0x65, 0x3b, 0x48, 0x61, 0x6d, 0x75, 0x73,
+0x65, 0x3b, 0x41, 0x72, 0x62, 0x65, 0x3b, 0x51, 0x69, 0x64, 0x61, 0x61,
+0x6d, 0x65, 0x53, 0x61, 0x6d, 0x3b, 0x53, 0x61, 0x6e, 0x3b, 0x4d, 0x61,
+0x6b, 0x3b, 0x52, 0x6f, 0x77, 0x3b, 0x48, 0x61, 0x6d, 0x3b, 0x41, 0x72,
+0x62, 0x3b, 0x51, 0x69, 0x64, 0x53, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x52,
+0x3b, 0x48, 0x3b, 0x41, 0x3b, 0x51, 0x6e, 0x69, 0x79, 0x64, 0x7a, 0x69,
+0x65, 0x6c, 0x61, 0x3b, 0x70, 0x79, 0x144, 0x64, 0x7a, 0x69, 0x61, 0x142,
+0x65, 0x6b, 0x3b, 0x77, 0x74, 0x6f, 0x72, 0x65, 0x6b, 0x3b, 0x73, 0x74,
+0x72, 0x7a, 0x6f, 0x64, 0x61, 0x3b, 0x73, 0x7a, 0x74, 0x77, 0x6f, 0x72,
+0x74, 0x65, 0x6b, 0x3b, 0x70, 0x69, 0x14d, 0x6e, 0x74, 0x65, 0x6b, 0x3b,
+0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x6e, 0x69, 0x79, 0x3b, 0x70, 0x79,
+0x144, 0x3b, 0x77, 0x74, 0x6f, 0x3b, 0x73, 0x74, 0x72, 0x3b, 0x73, 0x7a,
+0x74, 0x3b, 0x70, 0x69, 0x14d, 0x3b, 0x73, 0x6f, 0x62, 0x622, 0x686, 0x631,
+0x3b, 0x633, 0x648, 0x645, 0x631, 0x3b, 0x627, 0x6b1, 0x627, 0x631, 0x648, 0x3b,
+0x627, 0x631, 0x628, 0x639, 0x3b, 0x62e, 0x645, 0x64a, 0x633, 0x3b, 0x62c, 0x645,
+0x639, 0x648, 0x3b, 0x687, 0x646, 0x687, 0x631, 0x622, 0x686, 0x631, 0x3b, 0x633,
+0x648, 0x3b, 0x627, 0x6b1, 0x627, 0x631, 0x648, 0x3b, 0x627, 0x631, 0x628, 0x639,
+0x3b, 0x62e, 0x645, 0x3b, 0x62c, 0x645, 0x639, 0x648, 0x3b, 0x687, 0x646, 0x687,
+0x631, 0x906, 0x930, 0x94d, 0x924, 0x3b, 0x938, 0x942, 0x3b, 0x92e, 0x902, 0x3b,
+0x92c, 0x941, 0x952, 0x927, 0x3b, 0x935, 0x93f, 0x938, 0x3b, 0x91c, 0x941, 0x92e,
+0x3b, 0x91b, 0x902, 0x91b, 0x906, 0x930, 0x94d, 0x924, 0x935, 0x93e, 0x930, 0x3b,
+0x938, 0x942, 0x92e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x941, 0x3b, 0x92c,
+0x941, 0x952, 0x927, 0x930, 0x3b, 0x935, 0x93f, 0x938, 0x94d, 0x92a, 0x924, 0x3b,
+0x91c, 0x941, 0x92e, 0x94b, 0x3b, 0x91b, 0x902, 0x91b, 0x930, 0x906, 0x3b, 0x938,
+0x942, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, 0x927, 0x3b, 0x935, 0x93f, 0x938,
+0x3b, 0x91c, 0x941, 0x3b, 0x91b, 0x902, 0x91b, 0x906, 0x930, 0x94d, 0x924, 0x3b,
+0x938, 0x942, 0x3b, 0x92e, 0x902, 0x917, 0x3b, 0x92c, 0x941, 0x952, 0x927, 0x3b,
+0x935, 0x93f, 0x938, 0x3b, 0x91c, 0x941, 0x92e, 0x3b, 0x91b, 0x902, 0x91b, 0x906,
+0x3b, 0x938, 0x942, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, 0x952, 0x3b, 0x935,
+0x93f, 0x3b, 0x91c, 0x941, 0x3b, 0x91b, 0x902, 0xd89, 0xdbb, 0xdd2, 0xdaf, 0xdcf,
+0x3b, 0xdc3, 0xdb3, 0xdd4, 0xdaf, 0xdcf, 0x3b, 0xd85, 0xd9f, 0xdc4, 0xdbb, 0xdd4,
+0xdc0, 0xdcf, 0xdaf, 0xdcf, 0x3b, 0xdb6, 0xdaf, 0xdcf, 0xdaf, 0xdcf, 0x3b, 0xdb6,
+0xdca, 0x200d, 0xdbb, 0xdc4, 0xdc3, 0xdca, 0xdb4, 0xdad, 0xdd2, 0xdb1, 0xdca, 0xdaf,
+0xdcf, 0x3b, 0xdc3, 0xdd2, 0xd9a, 0xdd4, 0xdbb, 0xdcf, 0xdaf, 0xdcf, 0x3b, 0xdc3,
+0xdd9, 0xdb1, 0xdc3, 0xdd4, 0xdbb, 0xdcf, 0xdaf, 0xdcf, 0xd89, 0xdbb, 0xdd2, 0xdaf,
+0xdcf, 0x3b, 0xdc3, 0xdb3, 0xdd4, 0xdaf, 0xdcf, 0x3b, 0xd85, 0xd9f, 0xdc4, 0x3b,
+0xdb6, 0xdaf, 0xdcf, 0xdaf, 0xdcf, 0x3b, 0xdb6, 0xdca, 0x200d, 0xdbb, 0xdc4, 0xdc3,
+0xdca, 0x3b, 0xdc3, 0xdd2, 0xd9a, 0xdd4, 0x3b, 0xdc3, 0xdd9, 0xdb1, 0xd89, 0x3b,
+0xdc3, 0x3b, 0xd85, 0x3b, 0xdb6, 0x3b, 0xdb6, 0xdca, 0x200d, 0xdbb, 0x3b, 0xdc3,
+0xdd2, 0x3b, 0xdc3, 0xdd9, 0x6e, 0x65, 0x64, 0x65, 0x13e, 0x61, 0x3b, 0x70,
+0x6f, 0x6e, 0x64, 0x65, 0x6c, 0x6f, 0x6b, 0x3b, 0x75, 0x74, 0x6f, 0x72,
+0x6f, 0x6b, 0x3b, 0x73, 0x74, 0x72, 0x65, 0x64, 0x61, 0x3b, 0x161, 0x74,
+0x76, 0x72, 0x74, 0x6f, 0x6b, 0x3b, 0x70, 0x69, 0x61, 0x74, 0x6f, 0x6b,
+0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x6e, 0x65, 0x3b, 0x70, 0x6f,
+0x3b, 0x75, 0x74, 0x3b, 0x73, 0x74, 0x3b, 0x161, 0x74, 0x3b, 0x70, 0x69,
+0x3b, 0x73, 0x6f, 0x6e, 0x3b, 0x70, 0x3b, 0x75, 0x3b, 0x73, 0x3b, 0x161,
+0x3b, 0x70, 0x3b, 0x73, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, 0x3b,
+0x70, 0x6f, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x65, 0x6b, 0x3b, 0x74,
+0x6f, 0x72, 0x65, 0x6b, 0x3b, 0x73, 0x72, 0x65, 0x64, 0x61, 0x3b, 0x10d,
+0x65, 0x74, 0x72, 0x74, 0x65, 0x6b, 0x3b, 0x70, 0x65, 0x74, 0x65, 0x6b,
+0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x6e, 0x65, 0x64, 0x2e, 0x3b,
+0x70, 0x6f, 0x6e, 0x2e, 0x3b, 0x74, 0x6f, 0x72, 0x2e, 0x3b, 0x73, 0x72,
+0x65, 0x2e, 0x3b, 0x10d, 0x65, 0x74, 0x2e, 0x3b, 0x70, 0x65, 0x74, 0x2e,
+0x3b, 0x73, 0x6f, 0x62, 0x2e, 0x6e, 0x3b, 0x70, 0x3b, 0x74, 0x3b, 0x73,
+0x3b, 0x10d, 0x3b, 0x70, 0x3b, 0x73, 0x53, 0x61, 0x62, 0x69, 0x69, 0x74,
+0x69, 0x3b, 0x42, 0x61, 0x6c, 0x61, 0x7a, 0x61, 0x3b, 0x4f, 0x77, 0x6f,
+0x6b, 0x75, 0x62, 0x69, 0x6c, 0x69, 0x3b, 0x4f, 0x77, 0x6f, 0x6b, 0x75,
+0x73, 0x61, 0x74, 0x75, 0x3b, 0x4f, 0x6c, 0x6f, 0x6b, 0x75, 0x6e, 0x61,
+0x3b, 0x4f, 0x6c, 0x6f, 0x6b, 0x75, 0x74, 0x61, 0x61, 0x6e, 0x75, 0x3b,
+0x4f, 0x6c, 0x6f, 0x6d, 0x75, 0x6b, 0x61, 0x61, 0x67, 0x61, 0x53, 0x61,
+0x62, 0x69, 0x3b, 0x42, 0x61, 0x6c, 0x61, 0x3b, 0x4b, 0x75, 0x62, 0x69,
+0x3b, 0x4b, 0x75, 0x73, 0x61, 0x3b, 0x4b, 0x75, 0x6e, 0x61, 0x3b, 0x4b,
+0x75, 0x74, 0x61, 0x3b, 0x4d, 0x75, 0x6b, 0x61, 0x53, 0x3b, 0x42, 0x3b,
+0x42, 0x3b, 0x53, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4d, 0x41, 0x78, 0x61,
+0x64, 0x3b, 0x49, 0x73, 0x6e, 0x69, 0x69, 0x6e, 0x3b, 0x54, 0x61, 0x6c,
+0x61, 0x61, 0x64, 0x6f, 0x3b, 0x41, 0x72, 0x62, 0x61, 0x63, 0x6f, 0x3b,
+0x4b, 0x68, 0x61, 0x6d, 0x69, 0x69, 0x73, 0x3b, 0x4a, 0x69, 0x6d, 0x63,
+0x6f, 0x3b, 0x53, 0x61, 0x62, 0x74, 0x69, 0x41, 0x78, 0x64, 0x3b, 0x49,
+0x73, 0x6e, 0x3b, 0x54, 0x6c, 0x64, 0x6f, 0x3b, 0x41, 0x72, 0x62, 0x63,
+0x3b, 0x4b, 0x68, 0x6d, 0x73, 0x3b, 0x4a, 0x6d, 0x63, 0x3b, 0x53, 0x62,
+0x74, 0x69, 0x41, 0x3b, 0x49, 0x3b, 0x54, 0x3b, 0x41, 0x3b, 0x4b, 0x68,
+0x3b, 0x4a, 0x3b, 0x53, 0x53, 0x6f, 0x6e, 0x74, 0x61, 0x68, 0x61, 0x3b,
+0x4d, 0x6d, 0x61, 0x6e, 0x74, 0x61, 0x68, 0x61, 0x3b, 0x4c, 0x61, 0x62,
+0x6f, 0x62, 0x65, 0x64, 0x69, 0x3b, 0x4c, 0x61, 0x62, 0x6f, 0x72, 0x61,
+0x72, 0x75, 0x3b, 0x4c, 0x61, 0x62, 0x6f, 0x6e, 0x65, 0x3b, 0x4c, 0x61,
+0x62, 0x6f, 0x68, 0x6c, 0x61, 0x6e, 0x65, 0x3b, 0x4d, 0x6f, 0x71, 0x65,
+0x62, 0x65, 0x6c, 0x6f, 0x53, 0x6f, 0x6e, 0x3b, 0x4d, 0x6d, 0x61, 0x3b,
+0x42, 0x65, 0x64, 0x3b, 0x52, 0x61, 0x72, 0x3b, 0x4e, 0x65, 0x3b, 0x48,
+0x6c, 0x61, 0x3b, 0x4d, 0x6f, 0x71, 0x75, 0x53, 0x6f, 0x6e, 0x74, 0x6f,
+0x3b, 0x75, 0x4d, 0x76, 0x75, 0x6c, 0x6f, 0x3b, 0x75, 0x4c, 0x65, 0x73,
+0x69, 0x62, 0x69, 0x6c, 0x69, 0x3b, 0x4c, 0x65, 0x73, 0x69, 0x74, 0x68,
+0x61, 0x74, 0x68, 0x75, 0x3b, 0x75, 0x4c, 0x65, 0x73, 0x69, 0x6e, 0x65,
+0x3b, 0x6e, 0x67, 0x6f, 0x4c, 0x65, 0x73, 0x69, 0x68, 0x6c, 0x61, 0x6e,
+0x75, 0x3b, 0x75, 0x6d, 0x47, 0x71, 0x69, 0x62, 0x65, 0x6c, 0x6f, 0x53,
+0x6f, 0x6e, 0x3b, 0x4d, 0x76, 0x75, 0x3b, 0x42, 0x69, 0x6c, 0x3b, 0x54,
+0x68, 0x61, 0x3b, 0x4e, 0x65, 0x3b, 0x48, 0x6c, 0x61, 0x3b, 0x47, 0x71,
+0x69, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x6c, 0x75, 0x6e,
+0x65, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x6d, 0x69,
+0xe9, 0x72, 0x63, 0x6f, 0x6c, 0x65, 0x73, 0x3b, 0x6a, 0x75, 0x65, 0x76,
+0x65, 0x73, 0x3b, 0x76, 0x69, 0x65, 0x72, 0x6e, 0x65, 0x73, 0x3b, 0x73,
+0xe1, 0x62, 0x61, 0x64, 0x6f, 0x64, 0x6f, 0x6d, 0x3b, 0x6c, 0x75, 0x6e,
+0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d, 0x69, 0xe9, 0x3b, 0x6a, 0x75, 0x65,
+0x3b, 0x76, 0x69, 0x65, 0x3b, 0x73, 0xe1, 0x62, 0x44, 0x3b, 0x4c, 0x3b,
+0x4d, 0x3b, 0x6d, 0x3b, 0x4a, 0x3b, 0x56, 0x3b, 0x53, 0x2d30, 0x2d59, 0x2d30,
+0x2d4e, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d62, 0x2d4f, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59,
+0x2d49, 0x2d4f, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d3d, 0x2d55, 0x2d30, 0x2d59, 0x3b, 0x2d30,
+0x2d3d, 0x2d61, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4e, 0x2d61, 0x2d30, 0x2d59,
+0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d39, 0x2d62, 0x2d30, 0x2d59, 0x2d30, 0x2d59, 0x2d30, 0x3b,
+0x2d30, 0x2d62, 0x2d4f, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x3b, 0x2d30, 0x2d3d, 0x2d55, 0x3b,
+0x2d30, 0x2d3d, 0x2d61, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4e, 0x3b, 0x2d30, 0x2d59, 0x2d49,
+0x2d39, 0x4d, 0x69, 0x6e, 0x67, 0x67, 0x75, 0x3b, 0x53, 0x65, 0x6e, 0xe9,
+0x6e, 0x3b, 0x53, 0x61, 0x6c, 0x61, 0x73, 0x61, 0x3b, 0x52, 0x65, 0x62,
+0x6f, 0x3b, 0x4b, 0x65, 0x6d, 0x69, 0x73, 0x3b, 0x4a, 0x75, 0x6d, 0x61,
+0x61, 0x68, 0x3b, 0x53, 0x61, 0x70, 0x74, 0x75, 0x4d, 0x6e, 0x67, 0x3b,
+0x53, 0x65, 0x6e, 0x3b, 0x53, 0x61, 0x6c, 0x3b, 0x52, 0x65, 0x62, 0x3b,
+0x4b, 0x65, 0x6d, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x53, 0x61, 0x70, 0x4c,
+0x69, 0x73, 0x6f, 0x6e, 0x74, 0x66, 0x6f, 0x3b, 0x75, 0x4d, 0x73, 0x6f,
+0x6d, 0x62, 0x75, 0x6c, 0x75, 0x6b, 0x6f, 0x3b, 0x4c, 0x65, 0x73, 0x69,
+0x62, 0x69, 0x6c, 0x69, 0x3b, 0x4c, 0x65, 0x73, 0x69, 0x74, 0x73, 0x61,
+0x74, 0x66, 0x75, 0x3b, 0x4c, 0x65, 0x73, 0x69, 0x6e, 0x65, 0x3b, 0x4c,
+0x65, 0x73, 0x69, 0x68, 0x6c, 0x61, 0x6e, 0x75, 0x3b, 0x75, 0x4d, 0x67,
+0x63, 0x69, 0x62, 0x65, 0x6c, 0x6f, 0x53, 0x6f, 0x6e, 0x3b, 0x4d, 0x73,
+0x6f, 0x3b, 0x42, 0x69, 0x6c, 0x3b, 0x54, 0x73, 0x61, 0x3b, 0x4e, 0x65,
+0x3b, 0x48, 0x6c, 0x61, 0x3b, 0x4d, 0x67, 0x63, 0x73, 0xf6, 0x6e, 0x64,
+0x61, 0x67, 0x3b, 0x6d, 0xe5, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x69,
+0x73, 0x64, 0x61, 0x67, 0x3b, 0x6f, 0x6e, 0x73, 0x64, 0x61, 0x67, 0x3b,
+0x74, 0x6f, 0x72, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x66, 0x72, 0x65, 0x64,
+0x61, 0x67, 0x3b, 0x6c, 0xf6, 0x72, 0x64, 0x61, 0x67, 0x73, 0xf6, 0x6e,
+0x3b, 0x6d, 0xe5, 0x6e, 0x3b, 0x74, 0x69, 0x73, 0x3b, 0x6f, 0x6e, 0x73,
+0x3b, 0x74, 0x6f, 0x72, 0x73, 0x3b, 0x66, 0x72, 0x65, 0x3b, 0x6c, 0xf6,
+0x72, 0x53, 0x75, 0x6e, 0x6e, 0x74, 0x69, 0x67, 0x3b, 0x4d, 0xe4, 0xe4,
+0x6e, 0x74, 0x69, 0x67, 0x3b, 0x5a, 0x69, 0x69, 0x73, 0x63, 0x68, 0x74,
+0x69, 0x67, 0x3b, 0x4d, 0x69, 0x74, 0x74, 0x77, 0x75, 0x63, 0x68, 0x3b,
+0x44, 0x75, 0x6e, 0x73, 0x63, 0x68, 0x74, 0x69, 0x67, 0x3b, 0x46, 0x72,
+0x69, 0x69, 0x74, 0x69, 0x67, 0x3b, 0x53, 0x61, 0x6d, 0x73, 0x63, 0x68,
+0x74, 0x69, 0x67, 0x53, 0x75, 0x2e, 0x3b, 0x4d, 0xe4, 0x2e, 0x3b, 0x5a,
+0x69, 0x2e, 0x3b, 0x4d, 0x69, 0x2e, 0x3b, 0x44, 0x75, 0x2e, 0x3b, 0x46,
+0x72, 0x2e, 0x3b, 0x53, 0x61, 0x2e, 0x71a, 0x715, 0x712, 0x72b, 0x712, 0x710,
+0x3b, 0x72c, 0x72a, 0x71d, 0x722, 0x712, 0x72b, 0x712, 0x710, 0x3b, 0x72c, 0x720,
+0x72c, 0x712, 0x72b, 0x712, 0x710, 0x3b, 0x710, 0x72a, 0x712, 0x725, 0x712, 0x72b,
+0x712, 0x710, 0x3b, 0x71a, 0x721, 0x72b, 0x712, 0x72b, 0x712, 0x710, 0x3b, 0x725,
+0x72a, 0x718, 0x712, 0x72c, 0x710, 0x3b, 0x72b, 0x712, 0x72c, 0x710, 0x71a, 0x715,
+0x3b, 0x72c, 0x72a, 0x71d, 0x722, 0x3b, 0x72c, 0x720, 0x72c, 0x3b, 0x710, 0x72a,
+0x712, 0x725, 0x3b, 0x71a, 0x721, 0x72b, 0x3b, 0x725, 0x72a, 0x718, 0x3b, 0x72b,
+0x712, 0x72c, 0x710, 0x71a, 0x3b, 0x72c, 0x3b, 0x72c, 0x3b, 0x710, 0x3b, 0x71a,
+0x3b, 0x725, 0x3b, 0x72b, 0x2d30, 0x2d59, 0x2d30, 0x2d4e, 0x2d30, 0x2d59, 0x3b, 0x2d30,
+0x2d62, 0x2d4f, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4f, 0x2d30, 0x2d59, 0x3b,
+0x2d30, 0x2d3d, 0x2d55, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d3d, 0x2d61, 0x2d30, 0x2d59, 0x3b,
+0x2d59, 0x2d49, 0x2d4e, 0x2d61, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d39, 0x2d62,
+0x2d30, 0x2d59, 0x61, 0x73, 0x61, 0x6d, 0x61, 0x73, 0x3b, 0x61, 0x79, 0x6e,
+0x61, 0x73, 0x3b, 0x61, 0x73, 0x69, 0x6e, 0x61, 0x73, 0x3b, 0x61, 0x6b,
+0x1e5b, 0x61, 0x73, 0x3b, 0x61, 0x6b, 0x77, 0x61, 0x73, 0x3b, 0x61, 0x73,
+0x69, 0x6d, 0x77, 0x61, 0x73, 0x3b, 0x61, 0x73, 0x69, 0x1e0d, 0x79, 0x61,
+0x73, 0x61, 0x73, 0x61, 0x3b, 0x61, 0x79, 0x6e, 0x3b, 0x61, 0x73, 0x69,
+0x3b, 0x61, 0x6b, 0x1e5b, 0x3b, 0x61, 0x6b, 0x77, 0x3b, 0x61, 0x73, 0x69,
+0x6d, 0x3b, 0x61, 0x73, 0x69, 0x1e0d, 0x49, 0x74, 0x75, 0x6b, 0x75, 0x20,
+0x6a, 0x61, 0x20, 0x6a, 0x75, 0x6d, 0x77, 0x61, 0x3b, 0x4b, 0x75, 0x72,
+0x61, 0x6d, 0x75, 0x6b, 0x61, 0x20, 0x6a, 0x69, 0x6d, 0x77, 0x65, 0x72,
+0x69, 0x3b, 0x4b, 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x20, 0x6b,
+0x61, 0x77, 0x69, 0x3b, 0x4b, 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61,
+0x20, 0x6b, 0x61, 0x64, 0x61, 0x64, 0x75, 0x3b, 0x4b, 0x75, 0x72, 0x61,
+0x6d, 0x75, 0x6b, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x4b, 0x75,
+0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x20, 0x6b, 0x61, 0x73, 0x61, 0x6e,
+0x75, 0x3b, 0x4b, 0x69, 0x66, 0x75, 0x6c, 0x61, 0x20, 0x6e, 0x67, 0x75,
+0x77, 0x6f, 0x4a, 0x75, 0x6d, 0x3b, 0x4a, 0x69, 0x6d, 0x3b, 0x4b, 0x61,
+0x77, 0x3b, 0x4b, 0x61, 0x64, 0x3b, 0x4b, 0x61, 0x6e, 0x3b, 0x4b, 0x61,
+0x73, 0x3b, 0x4e, 0x67, 0x75, 0x4a, 0x3b, 0x4a, 0x3b, 0x4b, 0x3b, 0x4b,
+0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4e, 0x42f, 0x43a, 0x448, 0x430, 0x43d, 0x431,
+0x435, 0x3b, 0x414, 0x443, 0x448, 0x430, 0x43d, 0x431, 0x435, 0x3b, 0x421, 0x435,
+0x448, 0x430, 0x43d, 0x431, 0x435, 0x3b, 0x427, 0x43e, 0x440, 0x448, 0x430, 0x43d,
+0x431, 0x435, 0x3b, 0x41f, 0x430, 0x43d, 0x4b7, 0x448, 0x430, 0x43d, 0x431, 0x435,
+0x3b, 0x4b6, 0x443, 0x43c, 0x44a, 0x430, 0x3b, 0x428, 0x430, 0x43d, 0x431, 0x435,
+0x42f, 0x448, 0x431, 0x3b, 0x414, 0x448, 0x431, 0x3b, 0x421, 0x448, 0x431, 0x3b,
+0x427, 0x448, 0x431, 0x3b, 0x41f, 0x448, 0x431, 0x3b, 0x4b6, 0x43c, 0x44a, 0x3b,
+0x428, 0x43d, 0x431, 0x42f, 0x3b, 0x414, 0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x41f,
+0x3b, 0x4b6, 0x3b, 0x428, 0xb9e, 0xbbe, 0xbaf, 0xbbf, 0xbb1, 0xbc1, 0x3b, 0xba4,
+0xbbf, 0xb99, 0xbcd, 0xb95, 0xbb3, 0xbcd, 0x3b, 0xb9a, 0xbc6, 0xbb5, 0xbcd, 0xbb5,
+0xbbe, 0xbaf, 0xbcd, 0x3b, 0xbaa, 0xbc1, 0xba4, 0xba9, 0xbcd, 0x3b, 0xbb5, 0xbbf,
+0xbaf, 0xbbe, 0xbb4, 0xba9, 0xbcd, 0x3b, 0xbb5, 0xbc6, 0xbb3, 0xbcd, 0xbb3, 0xbbf,
+0x3b, 0xb9a, 0xba9, 0xbbf, 0xb9e, 0xbbe, 0xbaf, 0xbbf, 0x2e, 0x3b, 0xba4, 0xbbf,
+0xb99, 0xbcd, 0x2e, 0x3b, 0xb9a, 0xbc6, 0xbb5, 0xbcd, 0x2e, 0x3b, 0xbaa, 0xbc1,
+0xba4, 0x2e, 0x3b, 0xbb5, 0xbbf, 0xbaf, 0xbbe, 0x2e, 0x3b, 0xbb5, 0xbc6, 0xbb3,
+0xbcd, 0x2e, 0x3b, 0xb9a, 0xba9, 0xbbf, 0xb9e, 0xbbe, 0x3b, 0xba4, 0xbbf, 0x3b,
+0xb9a, 0xbc6, 0x3b, 0xbaa, 0xbc1, 0x3b, 0xbb5, 0xbbf, 0x3b, 0xbb5, 0xbc6, 0x3b,
+0xb9a, 0x4a, 0x69, 0x79, 0x61, 0x78, 0x20, 0x73, 0x6e, 0x67, 0x61, 0x79,
+0x61, 0x6e, 0x3b, 0x74, 0x67, 0x4b, 0x69, 0x6e, 0x67, 0x61, 0x6c, 0x20,
+0x6a, 0x69, 0x79, 0x61, 0x78, 0x20, 0x69, 0x79, 0x61, 0x78, 0x20, 0x73,
+0x6e, 0x67, 0x61, 0x79, 0x61, 0x6e, 0x3b, 0x74, 0x67, 0x44, 0x68, 0x61,
+0x20, 0x6a, 0x69, 0x79, 0x61, 0x78, 0x20, 0x69, 0x79, 0x61, 0x78, 0x20,
+0x73, 0x6e, 0x67, 0x61, 0x79, 0x61, 0x6e, 0x3b, 0x74, 0x67, 0x54, 0x72,
+0x75, 0x20, 0x6a, 0x69, 0x79, 0x61, 0x78, 0x20, 0x69, 0x79, 0x61, 0x78,
+0x20, 0x73, 0x6e, 0x67, 0x61, 0x79, 0x61, 0x6e, 0x3b, 0x74, 0x67, 0x53,
+0x70, 0x61, 0x63, 0x20, 0x6a, 0x69, 0x79, 0x61, 0x78, 0x20, 0x69, 0x79,
+0x61, 0x78, 0x20, 0x73, 0x6e, 0x67, 0x61, 0x79, 0x61, 0x6e, 0x3b, 0x74,
+0x67, 0x52, 0x69, 0x6d, 0x61, 0x20, 0x6a, 0x69, 0x79, 0x61, 0x78, 0x20,
+0x69, 0x79, 0x61, 0x78, 0x20, 0x73, 0x6e, 0x67, 0x61, 0x79, 0x61, 0x6e,
+0x3b, 0x74, 0x67, 0x4d, 0x61, 0x74, 0x61, 0x72, 0x75, 0x20, 0x6a, 0x69,
+0x79, 0x61, 0x78, 0x20, 0x69, 0x79, 0x61, 0x78, 0x20, 0x73, 0x6e, 0x67,
+0x61, 0x79, 0x61, 0x6e, 0x45, 0x6d, 0x70, 0x3b, 0x4b, 0x69, 0x6e, 0x3b,
+0x44, 0x68, 0x61, 0x3b, 0x54, 0x72, 0x75, 0x3b, 0x53, 0x70, 0x61, 0x3b,
+0x52, 0x69, 0x6d, 0x3b, 0x4d, 0x61, 0x74, 0x45, 0x3b, 0x4b, 0x3b, 0x44,
+0x3b, 0x54, 0x3b, 0x53, 0x3b, 0x52, 0x3b, 0x4d, 0x44f, 0x43a, 0x448, 0x4d9,
+0x43c, 0x431, 0x435, 0x3b, 0x434, 0x4af, 0x448, 0x4d9, 0x43c, 0x431, 0x435, 0x3b,
+0x441, 0x438, 0x448, 0x4d9, 0x43c, 0x431, 0x435, 0x3b, 0x447, 0x4d9, 0x440, 0x448,
+0x4d9, 0x43c, 0x431, 0x435, 0x3b, 0x43f, 0x4d9, 0x43d, 0x497, 0x435, 0x448, 0x4d9,
+0x43c, 0x431, 0x435, 0x3b, 0x497, 0x43e, 0x43c, 0x433, 0x430, 0x3b, 0x448, 0x438,
+0x43c, 0x431, 0x4d9, 0x44f, 0x43a, 0x448, 0x2e, 0x3b, 0x434, 0x4af, 0x448, 0x2e,
+0x3b, 0x441, 0x438, 0x448, 0x2e, 0x3b, 0x447, 0x4d9, 0x440, 0x2e, 0x3b, 0x43f,
+0x4d9, 0x43d, 0x497, 0x2e, 0x3b, 0x497, 0x43e, 0x43c, 0x2e, 0x3b, 0x448, 0x438,
+0x43c, 0x2e, 0x42f, 0x3b, 0x414, 0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x41f, 0x3b,
+0x496, 0x3b, 0x428, 0xc06, 0xc26, 0xc3f, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc38,
+0xc4b, 0xc2e, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc2e, 0xc02, 0xc17, 0xc33, 0xc35,
+0xc3e, 0xc30, 0xc02, 0x3b, 0xc2c, 0xc41, 0xc27, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b,
+0xc17, 0xc41, 0xc30, 0xc41, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc36, 0xc41, 0xc15,
+0xc4d, 0xc30, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc36, 0xc28, 0xc3f, 0xc35, 0xc3e,
+0xc30, 0xc02, 0xc06, 0xc26, 0xc3f, 0x3b, 0xc38, 0xc4b, 0xc2e, 0x3b, 0xc2e, 0xc02,
+0xc17, 0xc33, 0x3b, 0xc2c, 0xc41, 0xc27, 0x3b, 0xc17, 0xc41, 0xc30, 0xc41, 0x3b,
+0xc36, 0xc41, 0xc15, 0xc4d, 0xc30, 0x3b, 0xc36, 0xc28, 0xc3f, 0xc06, 0x3b, 0xc38,
+0xc4b, 0x3b, 0xc2e, 0x3b, 0xc2c, 0xc41, 0x3b, 0xc17, 0xc41, 0x3b, 0xc36, 0xc41,
+0x3b, 0xc36, 0x4e, 0x61, 0x6b, 0x61, 0x65, 0x6a, 0x75, 0x6d, 0x61, 0x3b,
+0x4e, 0x61, 0x6b, 0x61, 0x65, 0x62, 0x61, 0x72, 0x61, 0x73, 0x61, 0x3b,
+0x4e, 0x61, 0x6b, 0x61, 0x61, 0x72, 0x65, 0x3b, 0x4e, 0x61, 0x6b, 0x61,
+0x75, 0x6e, 0x69, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x75, 0x6e, 0x67, 0x2019,
+0x6f, 0x6e, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x6b, 0x61, 0x6e, 0x79, 0x3b,
+0x4e, 0x61, 0x6b, 0x61, 0x73, 0x61, 0x62, 0x69, 0x74, 0x69, 0x4a, 0x75,
+0x6d, 0x3b, 0x42, 0x61, 0x72, 0x3b, 0x41, 0x61, 0x72, 0x3b, 0x55, 0x6e,
+0x69, 0x3b, 0x55, 0x6e, 0x67, 0x3b, 0x4b, 0x61, 0x6e, 0x3b, 0x53, 0x61,
+0x62, 0x4a, 0x3b, 0x42, 0x3b, 0x41, 0x3b, 0x55, 0x3b, 0x55, 0x3b, 0x4b,
+0x3b, 0x53, 0xe27, 0xe31, 0xe19, 0xe2d, 0xe32, 0xe17, 0xe34, 0xe15, 0xe22, 0xe4c,
+0x3b, 0xe27, 0xe31, 0xe19, 0xe08, 0xe31, 0xe19, 0xe17, 0xe23, 0xe4c, 0x3b, 0xe27,
+0xe31, 0xe19, 0xe2d, 0xe31, 0xe07, 0xe04, 0xe32, 0xe23, 0x3b, 0xe27, 0xe31, 0xe19,
+0xe1e, 0xe38, 0xe18, 0x3b, 0xe27, 0xe31, 0xe19, 0xe1e, 0xe24, 0xe2b, 0xe31, 0xe2a,
+0xe1a, 0xe14, 0xe35, 0x3b, 0xe27, 0xe31, 0xe19, 0xe28, 0xe38, 0xe01, 0xe23, 0xe4c,
+0x3b, 0xe27, 0xe31, 0xe19, 0xe40, 0xe2a, 0xe32, 0xe23, 0xe4c, 0xe2d, 0xe32, 0x2e,
+0x3b, 0xe08, 0x2e, 0x3b, 0xe2d, 0x2e, 0x3b, 0xe1e, 0x2e, 0x3b, 0xe1e, 0xe24,
+0x2e, 0x3b, 0xe28, 0x2e, 0x3b, 0xe2a, 0x2e, 0xe2d, 0xe32, 0x3b, 0xe08, 0x3b,
+0xe2d, 0x3b, 0xe1e, 0x3b, 0xe1e, 0xe24, 0x3b, 0xe28, 0x3b, 0xe2a, 0xf42, 0xf5f,
+0xf60, 0xf0b, 0xf49, 0xf72, 0xf0b, 0xf58, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b,
+0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf58, 0xf72,
+0xf42, 0xf0b, 0xf51, 0xf58, 0xf62, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf63,
+0xfb7, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf55, 0xf74,
+0xf62, 0xf0b, 0xf56, 0xf74, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf54, 0xf0b,
+0xf66, 0xf44, 0xf66, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf66, 0xfa4, 0xf7a,
+0xf53, 0xf0b, 0xf54, 0xf0b, 0xf49, 0xf72, 0xf0b, 0xf58, 0xf0b, 0x3b, 0xf5f, 0xfb3,
+0xf0b, 0xf56, 0xf0b, 0x3b, 0xf58, 0xf72, 0xf42, 0xf0b, 0xf51, 0xf58, 0xf62, 0xf0b,
+0x3b, 0xf63, 0xfb7, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf55, 0xf74, 0xf62, 0xf0b,
+0xf56, 0xf74, 0xf0b, 0x3b, 0xf54, 0xf0b, 0xf66, 0xf44, 0xf66, 0xf0b, 0x3b, 0xf66,
+0xfa4, 0xf7a, 0xf53, 0xf0b, 0xf54, 0xf0b, 0xf49, 0xf72, 0x3b, 0xf5f, 0xfb3, 0x3b,
+0xf58, 0xf72, 0xf42, 0x3b, 0xf63, 0xfb7, 0xf42, 0x3b, 0xf55, 0xf74, 0xf62, 0x3b,
+0xf66, 0xf44, 0xf66, 0x3b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0x1230, 0x1295, 0x1260, 0x1275,
+0x20, 0x12d3, 0x1263, 0x12ed, 0x3b, 0x1230, 0x1296, 0x3b, 0x1273, 0x120b, 0x1238, 0x1296,
+0x3b, 0x12a3, 0x1228, 0x122d, 0x1263, 0x12d3, 0x3b, 0x12a8, 0x121a, 0x123d, 0x3b, 0x1305,
+0x121d, 0x12d3, 0x1275, 0x3b, 0x1230, 0x1295, 0x1260, 0x1275, 0x20, 0x1295, 0x12a2, 0x123d,
+0x1230, 0x2f, 0x12d3, 0x3b, 0x1230, 0x1296, 0x3b, 0x1273, 0x120b, 0x1238, 0x3b, 0x12a3,
+0x1228, 0x122d, 0x3b, 0x12a8, 0x121a, 0x123d, 0x3b, 0x1305, 0x121d, 0x12d3, 0x3b, 0x1230,
+0x2f, 0x1295, 0x1230, 0x3b, 0x1230, 0x3b, 0x1273, 0x3b, 0x12a3, 0x3b, 0x12a8, 0x3b,
+0x1305, 0x3b, 0x1230, 0x1230, 0x1295, 0x1260, 0x1275, 0x3b, 0x1230, 0x1291, 0x12ed, 0x3b,
+0x1230, 0x1209, 0x1235, 0x3b, 0x1228, 0x1261, 0x12d5, 0x3b, 0x1213, 0x1219, 0x1235, 0x3b,
+0x12d3, 0x122d, 0x1262, 0x3b, 0x1240, 0x12f3, 0x121d, 0x1230, 0x1295, 0x3b, 0x1230, 0x1291,
+0x3b, 0x1230, 0x1209, 0x3b, 0x1228, 0x1261, 0x3b, 0x1213, 0x1219, 0x3b, 0x12d3, 0x122d,
+0x3b, 0x1240, 0x12f3, 0x1230, 0x3b, 0x1230, 0x3b, 0x1230, 0x3b, 0x1228, 0x3b, 0x1213,
+0x3b, 0x12d3, 0x3b, 0x1240, 0x53, 0x61, 0x6e, 0x64, 0x65, 0x3b, 0x4d, 0x61,
+0x6e, 0x64, 0x65, 0x3b, 0x54, 0x75, 0x6e, 0x64, 0x65, 0x3b, 0x54, 0x72,
+0x69, 0x6e, 0x64, 0x65, 0x3b, 0x46, 0x6f, 0x6e, 0x64, 0x65, 0x3b, 0x46,
+0x72, 0x61, 0x69, 0x64, 0x65, 0x3b, 0x53, 0x61, 0x72, 0x65, 0x72, 0x65,
+0x53, 0x61, 0x6e, 0x3b, 0x4d, 0x61, 0x6e, 0x3b, 0x54, 0x75, 0x6e, 0x3b,
+0x54, 0x72, 0x69, 0x3b, 0x46, 0x6f, 0x6e, 0x3b, 0x46, 0x72, 0x61, 0x3b,
+0x53, 0x61, 0x72, 0x53, 0x101, 0x70, 0x61, 0x74, 0x65, 0x3b, 0x4d, 0x14d,
+0x6e, 0x69, 0x74, 0x65, 0x3b, 0x54, 0x16b, 0x73, 0x69, 0x74, 0x65, 0x3b,
+0x50, 0x75, 0x6c, 0x65, 0x6c, 0x75, 0x6c, 0x75, 0x3b, 0x54, 0x75, 0x2bb,
+0x61, 0x70, 0x75, 0x6c, 0x65, 0x6c, 0x75, 0x6c, 0x75, 0x3b, 0x46, 0x61,
+0x6c, 0x61, 0x69, 0x74, 0x65, 0x3b, 0x54, 0x6f, 0x6b, 0x6f, 0x6e, 0x61,
+0x6b, 0x69, 0x53, 0x101, 0x70, 0x3b, 0x4d, 0x14d, 0x6e, 0x3b, 0x54, 0x16b,
+0x73, 0x3b, 0x50, 0x75, 0x6c, 0x3b, 0x54, 0x75, 0x2bb, 0x61, 0x3b, 0x46,
+0x61, 0x6c, 0x3b, 0x54, 0x6f, 0x6b, 0x53, 0x3b, 0x4d, 0x3b, 0x54, 0x3b,
+0x50, 0x3b, 0x54, 0x3b, 0x46, 0x3b, 0x54, 0x53, 0x6f, 0x6e, 0x74, 0x61,
+0x3b, 0x4d, 0x75, 0x73, 0x75, 0x6d, 0x62, 0x68, 0x75, 0x6e, 0x75, 0x6b,
+0x75, 0x3b, 0x52, 0x61, 0x76, 0x75, 0x6d, 0x62, 0x69, 0x72, 0x68, 0x69,
+0x3b, 0x52, 0x61, 0x76, 0x75, 0x6e, 0x68, 0x61, 0x72, 0x68, 0x75, 0x3b,
+0x52, 0x61, 0x76, 0x75, 0x6d, 0x75, 0x6e, 0x65, 0x3b, 0x52, 0x61, 0x76,
+0x75, 0x6e, 0x74, 0x6c, 0x68, 0x61, 0x6e, 0x75, 0x3b, 0x4d, 0x75, 0x67,
+0x71, 0x69, 0x76, 0x65, 0x6c, 0x61, 0x53, 0x6f, 0x6e, 0x3b, 0x4d, 0x75,
+0x73, 0x3b, 0x42, 0x69, 0x72, 0x3b, 0x48, 0x61, 0x72, 0x3b, 0x4e, 0x65,
+0x3b, 0x54, 0x6c, 0x68, 0x3b, 0x4d, 0x75, 0x67, 0x54, 0x73, 0x68, 0x69,
+0x70, 0x69, 0x3b, 0x4d, 0x6f, 0x73, 0x6f, 0x70, 0x75, 0x6c, 0x6f, 0x67,
+0x6f, 0x3b, 0x4c, 0x61, 0x62, 0x6f, 0x62, 0x65, 0x64, 0x69, 0x3b, 0x4c,
+0x61, 0x62, 0x6f, 0x72, 0x61, 0x72, 0x6f, 0x3b, 0x4c, 0x61, 0x62, 0x6f,
+0x6e, 0x65, 0x3b, 0x4c, 0x61, 0x62, 0x6f, 0x74, 0x6c, 0x68, 0x61, 0x6e,
+0x6f, 0x3b, 0x4d, 0x61, 0x74, 0x6c, 0x68, 0x61, 0x74, 0x73, 0x6f, 0x54,
+0x73, 0x68, 0x3b, 0x4d, 0x6f, 0x73, 0x3b, 0x4c, 0x61, 0x62, 0x62, 0x3b,
+0x4c, 0x61, 0x62, 0x72, 0x3b, 0x4c, 0x61, 0x62, 0x6e, 0x3b, 0x4c, 0x61,
+0x62, 0x74, 0x3b, 0x4d, 0x61, 0x74, 0x50, 0x61, 0x7a, 0x61, 0x72, 0x3b,
+0x50, 0x61, 0x7a, 0x61, 0x72, 0x74, 0x65, 0x73, 0x69, 0x3b, 0x53, 0x61,
+0x6c, 0x131, 0x3b, 0xc7, 0x61, 0x72, 0x15f, 0x61, 0x6d, 0x62, 0x61, 0x3b,
+0x50, 0x65, 0x72, 0x15f, 0x65, 0x6d, 0x62, 0x65, 0x3b, 0x43, 0x75, 0x6d,
+0x61, 0x3b, 0x43, 0x75, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x69, 0x50,
+0x61, 0x7a, 0x3b, 0x50, 0x7a, 0x74, 0x3b, 0x53, 0x61, 0x6c, 0x3b, 0xc7,
+0x61, 0x72, 0x3b, 0x50, 0x65, 0x72, 0x3b, 0x43, 0x75, 0x6d, 0x3b, 0x43,
+0x6d, 0x74, 0x50, 0x3b, 0x50, 0x3b, 0x53, 0x3b, 0xc7, 0x3b, 0x50, 0x3b,
+0x43, 0x3b, 0x43, 0xdd, 0x65, 0x6b, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b,
+0x44, 0x75, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x53, 0x69, 0x15f, 0x65,
+0x6e, 0x62, 0x65, 0x3b, 0xc7, 0x61, 0x72, 0x15f, 0x65, 0x6e, 0x62, 0x65,
+0x3b, 0x50, 0x65, 0x6e, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x41, 0x6e,
+0x6e, 0x61, 0x3b, 0x15e, 0x65, 0x6e, 0x62, 0x65, 0xfd, 0x65, 0x6b, 0x15f,
+0x65, 0x6e, 0x62, 0x65, 0x3b, 0x64, 0x75, 0x15f, 0x65, 0x6e, 0x62, 0x65,
+0x3b, 0x73, 0x69, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0xe7, 0x61, 0x72,
+0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x70, 0x65, 0x6e, 0x15f, 0x65, 0x6e,
+0x62, 0x65, 0x3b, 0x61, 0x6e, 0x6e, 0x61, 0x3b, 0x15f, 0x65, 0x6e, 0x62,
+0x65, 0xdd, 0x65, 0x6b, 0x3b, 0x44, 0x75, 0x15f, 0x3b, 0x53, 0x69, 0x15f,
+0x3b, 0xc7, 0x61, 0x72, 0x3b, 0x50, 0x65, 0x6e, 0x3b, 0x41, 0x6e, 0x6e,
+0x3b, 0x15e, 0x65, 0x6e, 0xfd, 0x65, 0x6b, 0x3b, 0x64, 0x75, 0x15f, 0x3b,
+0x73, 0x69, 0x15f, 0x3b, 0xe7, 0x61, 0x72, 0x3b, 0x70, 0x65, 0x6e, 0x3b,
+0x61, 0x6e, 0x6e, 0x3b, 0x15f, 0x65, 0x6e, 0xdd, 0x3b, 0x44, 0x3b, 0x53,
+0x3b, 0xc7, 0x3b, 0x50, 0x3b, 0x41, 0x3b, 0x15e, 0x4c, 0x61, 0x64, 0x69,
+0x3b, 0x54, 0x61, 0x6e, 0x69, 0x69, 0x3b, 0x54, 0x61, 0x6c, 0x61, 0x74,
+0x61, 0x3b, 0x4c, 0x61, 0x72, 0x62, 0x61, 0x3b, 0x4c, 0x61, 0x6d, 0x69,
+0x74, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x3b, 0x41, 0x73, 0x61, 0x62, 0x61,
+0x74, 0x4c, 0x61, 0x64, 0x3b, 0x54, 0x61, 0x6e, 0x3b, 0x54, 0x61, 0x6c,
+0x3b, 0x4c, 0x61, 0x72, 0x3b, 0x4c, 0x61, 0x6d, 0x3b, 0x4a, 0x75, 0x6d,
+0x3b, 0x41, 0x73, 0x61, 0x43d, 0x435, 0x434, 0x456, 0x43b, 0x44f, 0x3b, 0x43f,
+0x43e, 0x43d, 0x435, 0x434, 0x456, 0x43b, 0x43e, 0x43a, 0x3b, 0x432, 0x456, 0x432,
+0x442, 0x43e, 0x440, 0x43e, 0x43a, 0x3b, 0x441, 0x435, 0x440, 0x435, 0x434, 0x430,
+0x3b, 0x447, 0x435, 0x442, 0x432, 0x435, 0x440, 0x3b, 0x43f, 0x2bc, 0x44f, 0x442,
+0x43d, 0x438, 0x446, 0x44f, 0x3b, 0x441, 0x443, 0x431, 0x43e, 0x442, 0x430, 0x43d,
+0x435, 0x434, 0x456, 0x43b, 0x44e, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x456,
+0x43b, 0x43e, 0x43a, 0x3b, 0x432, 0x456, 0x432, 0x442, 0x43e, 0x440, 0x43e, 0x43a,
+0x3b, 0x441, 0x435, 0x440, 0x435, 0x434, 0x443, 0x3b, 0x447, 0x435, 0x442, 0x432,
+0x435, 0x440, 0x3b, 0x43f, 0x2bc, 0x44f, 0x442, 0x43d, 0x438, 0x446, 0x44e, 0x3b,
+0x441, 0x443, 0x431, 0x43e, 0x442, 0x443, 0x6e, 0x6a, 0x65, 0x64, 0x17a, 0x65,
+0x6c, 0x61, 0x3b, 0x70, 0xf3, 0x6e, 0x64, 0x17a, 0x65, 0x6c, 0x61, 0x3b,
+0x77, 0x75, 0x74, 0x6f, 0x72, 0x61, 0x3b, 0x73, 0x72, 0x6a, 0x65, 0x64,
+0x61, 0x3b, 0x161, 0x74, 0x77, 0xf3, 0x72, 0x74, 0x6b, 0x3b, 0x70, 0x6a,
+0x61, 0x74, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x6e, 0x6a,
+0x65, 0x3b, 0x70, 0xf3, 0x6e, 0x3b, 0x77, 0x75, 0x74, 0x3b, 0x73, 0x72,
+0x6a, 0x3b, 0x161, 0x74, 0x77, 0x3b, 0x70, 0x6a, 0x61, 0x3b, 0x73, 0x6f,
+0x62, 0x6e, 0x3b, 0x70, 0x3b, 0x77, 0x3b, 0x73, 0x3b, 0x161, 0x3b, 0x70,
+0x3b, 0x73, 0x627, 0x62a, 0x648, 0x627, 0x631, 0x3b, 0x67e, 0x6cc, 0x631, 0x3b,
+0x645, 0x646, 0x6af, 0x644, 0x3b, 0x628, 0x62f, 0x6be, 0x3b, 0x62c, 0x645, 0x639,
+0x631, 0x627, 0x62a, 0x3b, 0x62c, 0x645, 0x639, 0x6c1, 0x3b, 0x6c1, 0x641, 0x62a,
+0x6c1, 0x64a, 0x6d5, 0x643, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x62f, 0x6c8,
+0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x633, 0x6d5, 0x64a, 0x634, 0x6d5, 0x646,
+0x628, 0x6d5, 0x3b, 0x686, 0x627, 0x631, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b,
+0x67e, 0x6d5, 0x64a, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x62c, 0x6c8, 0x645,
+0x6d5, 0x3b, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x64a, 0x6d5, 0x3b, 0x62f, 0x6c8,
+0x3b, 0x633, 0x6d5, 0x3b, 0x686, 0x627, 0x3b, 0x67e, 0x6d5, 0x3b, 0x62c, 0x6c8,
+0x3b, 0x634, 0x6d5, 0x64a, 0x3b, 0x62f, 0x3b, 0x633, 0x3b, 0x686, 0x3b, 0x67e,
+0x3b, 0x62c, 0x3b, 0x634, 0x79, 0x61, 0x6b, 0x73, 0x68, 0x61, 0x6e, 0x62,
+0x61, 0x3b, 0x64, 0x75, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x73,
+0x65, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x63, 0x68, 0x6f, 0x72,
+0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x70, 0x61, 0x79, 0x73, 0x68,
+0x61, 0x6e, 0x62, 0x61, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x73, 0x68,
+0x61, 0x6e, 0x62, 0x61, 0x59, 0x61, 0x6b, 0x3b, 0x44, 0x75, 0x73, 0x68,
+0x3b, 0x53, 0x65, 0x73, 0x68, 0x3b, 0x43, 0x68, 0x6f, 0x72, 0x3b, 0x50,
+0x61, 0x79, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x53, 0x68, 0x61, 0x6e, 0x59,
+0x3b, 0x44, 0x3b, 0x53, 0x3b, 0x43, 0x3b, 0x50, 0x3b, 0x4a, 0x3b, 0x53,
+0x6cc, 0x2e, 0x3b, 0x62f, 0x2e, 0x3b, 0x633, 0x2e, 0x3b, 0x686, 0x2e, 0x3b,
+0x67e, 0x2e, 0x3b, 0x62c, 0x2e, 0x3b, 0x634, 0x2e, 0x44f, 0x43a, 0x448, 0x430,
+0x43d, 0x431, 0x430, 0x3b, 0x434, 0x443, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b,
+0x441, 0x435, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x447, 0x43e, 0x440, 0x448,
+0x430, 0x43d, 0x431, 0x430, 0x3b, 0x43f, 0x430, 0x439, 0x448, 0x430, 0x43d, 0x431,
+0x430, 0x3b, 0x436, 0x443, 0x43c, 0x430, 0x3b, 0x448, 0x430, 0x43d, 0x431, 0x430,
+0x44f, 0x43a, 0x448, 0x3b, 0x434, 0x443, 0x448, 0x3b, 0x441, 0x435, 0x448, 0x3b,
+0x447, 0x43e, 0x440, 0x3b, 0x43f, 0x430, 0x439, 0x3b, 0x436, 0x443, 0x43c, 0x3b,
+0x448, 0x430, 0x43d, 0x42f, 0x3b, 0x414, 0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x41f,
+0x3b, 0x416, 0x3b, 0x428, 0xa55e, 0xa54c, 0xa535, 0x3b, 0xa5f3, 0xa5e1, 0xa609, 0x3b,
+0xa55a, 0xa55e, 0xa55a, 0x3b, 0xa549, 0xa55e, 0xa552, 0x3b, 0xa549, 0xa524, 0xa546, 0xa562,
+0x3b, 0xa549, 0xa524, 0xa540, 0xa56e, 0x3b, 0xa53b, 0xa52c, 0xa533, 0x6c, 0x61, 0x68,
+0x61, 0x64, 0x69, 0x3b, 0x74, 0x25b, 0x25b, 0x6e, 0x25b, 0x25b, 0x3b, 0x74,
+0x61, 0x6c, 0x61, 0x74, 0x61, 0x3b, 0x61, 0x6c, 0x61, 0x62, 0x61, 0x3b,
+0x61, 0x69, 0x6d, 0x69, 0x73, 0x61, 0x3b, 0x61, 0x69, 0x6a, 0x69, 0x6d,
+0x61, 0x3b, 0x73, 0x69, 0x253, 0x69, 0x74, 0x69, 0x53, 0x77, 0x6f, 0x6e,
+0x64, 0x61, 0x68, 0x61, 0x3b, 0x4d, 0x75, 0x73, 0x75, 0x6d, 0x62, 0x75,
+0x6c, 0x75, 0x77, 0x6f, 0x3b, 0x1e3c, 0x61, 0x76, 0x68, 0x75, 0x76, 0x68,
+0x69, 0x6c, 0x69, 0x3b, 0x1e3c, 0x61, 0x76, 0x68, 0x75, 0x72, 0x61, 0x72,
+0x75, 0x3b, 0x1e3c, 0x61, 0x76, 0x68, 0x75, 0x1e4b, 0x61, 0x3b, 0x1e3c, 0x61,
+0x76, 0x68, 0x75, 0x1e71, 0x61, 0x6e, 0x75, 0x3b, 0x4d, 0x75, 0x67, 0x69,
+0x76, 0x68, 0x65, 0x6c, 0x61, 0x53, 0x77, 0x6f, 0x3b, 0x4d, 0x75, 0x73,
+0x3b, 0x56, 0x68, 0x69, 0x3b, 0x52, 0x61, 0x72, 0x3b, 0x1e4a, 0x61, 0x3b,
+0x1e70, 0x61, 0x6e, 0x3b, 0x4d, 0x75, 0x67, 0x43, 0x68, 0x1ee7, 0x20, 0x4e,
+0x68, 0x1ead, 0x74, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x48, 0x61, 0x69, 0x3b,
+0x54, 0x68, 0x1ee9, 0x20, 0x42, 0x61, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x54,
+0x1b0, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x4e, 0x103, 0x6d, 0x3b, 0x54, 0x68,
+0x1ee9, 0x20, 0x53, 0xe1, 0x75, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x42, 0x1ea3,
+0x79, 0x43, 0x4e, 0x3b, 0x54, 0x68, 0x20, 0x32, 0x3b, 0x54, 0x68, 0x20,
+0x33, 0x3b, 0x54, 0x68, 0x20, 0x34, 0x3b, 0x54, 0x68, 0x20, 0x35, 0x3b,
+0x54, 0x68, 0x20, 0x36, 0x3b, 0x54, 0x68, 0x20, 0x37, 0x43, 0x4e, 0x3b,
+0x54, 0x32, 0x3b, 0x54, 0x33, 0x3b, 0x54, 0x34, 0x3b, 0x54, 0x35, 0x3b,
+0x54, 0x36, 0x3b, 0x54, 0x37, 0x73, 0x75, 0x64, 0x65, 0x6c, 0x3b, 0x6d,
+0x75, 0x64, 0x65, 0x6c, 0x3b, 0x74, 0x75, 0x64, 0x65, 0x6c, 0x3b, 0x76,
+0x65, 0x64, 0x65, 0x6c, 0x3b, 0x64, 0xf6, 0x64, 0x65, 0x6c, 0x3b, 0x66,
+0x72, 0x69, 0x64, 0x65, 0x6c, 0x3b, 0x7a, 0xe4, 0x64, 0x65, 0x6c, 0x53,
+0x75, 0x3b, 0x4d, 0x75, 0x3b, 0x54, 0x75, 0x3b, 0x56, 0x65, 0x3b, 0x44,
+0xf6, 0x3b, 0x46, 0x72, 0x3b, 0x5a, 0xe4, 0x73, 0x75, 0x2e, 0x3b, 0x6d,
+0x75, 0x2e, 0x3b, 0x74, 0x75, 0x2e, 0x3b, 0x76, 0x65, 0x2e, 0x3b, 0x64,
+0xf6, 0x2e, 0x3b, 0x66, 0x72, 0x2e, 0x3b, 0x7a, 0xe4, 0x2e, 0x53, 0x3b,
+0x4d, 0x3b, 0x54, 0x3b, 0x56, 0x3b, 0x44, 0x3b, 0x46, 0x3b, 0x5a, 0x53,
+0x75, 0x6e, 0x6e, 0x74, 0x61, 0x67, 0x3b, 0x4d, 0xe4, 0x6e, 0x74, 0x61,
+0x67, 0x3b, 0x5a, 0x69, 0x161, 0x74, 0x61, 0x67, 0x3b, 0x4d, 0x69, 0x74,
+0x74, 0x77, 0x75, 0x10d, 0x3b, 0x46, 0x72, 0xf3, 0x6e, 0x74, 0x61, 0x67,
+0x3b, 0x46, 0x72, 0x69, 0x74, 0x61, 0x67, 0x3b, 0x53, 0x61, 0x6d, 0x161,
+0x74, 0x61, 0x67, 0x53, 0x75, 0x6e, 0x3b, 0x4d, 0xe4, 0x6e, 0x3b, 0x5a,
+0x69, 0x161, 0x3b, 0x4d, 0x69, 0x74, 0x3b, 0x46, 0x72, 0xf3, 0x3b, 0x46,
+0x72, 0x69, 0x3b, 0x53, 0x61, 0x6d, 0x53, 0x3b, 0x4d, 0x3b, 0x5a, 0x3b,
+0x4d, 0x3b, 0x46, 0x3b, 0x46, 0x3b, 0x53, 0x44, 0x79, 0x64, 0x64, 0x20,
+0x53, 0x75, 0x6c, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x4c, 0x6c, 0x75,
+0x6e, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x4d, 0x61, 0x77, 0x72, 0x74,
+0x68, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x4d, 0x65, 0x72, 0x63, 0x68,
+0x65, 0x72, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x49, 0x61, 0x75, 0x3b,
+0x44, 0x79, 0x64, 0x64, 0x20, 0x47, 0x77, 0x65, 0x6e, 0x65, 0x72, 0x3b,
+0x44, 0x79, 0x64, 0x64, 0x20, 0x53, 0x61, 0x64, 0x77, 0x72, 0x6e, 0x53,
+0x75, 0x6c, 0x3b, 0x4c, 0x6c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x77, 0x3b,
+0x4d, 0x65, 0x72, 0x3b, 0x49, 0x61, 0x75, 0x3b, 0x47, 0x77, 0x65, 0x3b,
+0x53, 0x61, 0x64, 0x53, 0x75, 0x6c, 0x3b, 0x4c, 0x6c, 0x75, 0x6e, 0x3b,
+0x4d, 0x61, 0x77, 0x3b, 0x4d, 0x65, 0x72, 0x3b, 0x49, 0x61, 0x75, 0x3b,
+0x47, 0x77, 0x65, 0x6e, 0x3b, 0x53, 0x61, 0x64, 0x53, 0x3b, 0x4c, 0x6c,
+0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x49, 0x3b, 0x47, 0x3b, 0x53, 0x73, 0x6e,
+0x65, 0x69, 0x6e, 0x3b, 0x6d, 0x6f, 0x61, 0x6e, 0x64, 0x65, 0x69, 0x3b,
+0x74, 0x69, 0x69, 0x73, 0x64, 0x65, 0x69, 0x3b, 0x77, 0x6f, 0x61, 0x6e,
+0x73, 0x64, 0x65, 0x69, 0x3b, 0x74, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x73,
+0x64, 0x65, 0x69, 0x3b, 0x66, 0x72, 0x65, 0x65, 0x64, 0x3b, 0x73, 0x6e,
+0x65, 0x6f, 0x6e, 0x73, 0x69, 0x3b, 0x6d, 0x6f, 0x3b, 0x74, 0x69, 0x3b,
+0x77, 0x6f, 0x3b, 0x74, 0x6f, 0x3b, 0x66, 0x72, 0x3b, 0x73, 0x6f, 0x12c8,
+0x130b, 0x3b, 0x1233, 0x12ed, 0x1296, 0x3b, 0x121b, 0x1246, 0x1233, 0x129b, 0x3b, 0x12a0,
+0x1229, 0x12cb, 0x3b, 0x1203, 0x1219, 0x1233, 0x3b, 0x12a0, 0x122d, 0x1263, 0x3b, 0x1244,
+0x122b, 0x12c8, 0x3b, 0x1233, 0x3b, 0x121b, 0x3b, 0x12a0, 0x3b, 0x1203, 0x3b, 0x12a0,
+0x3b, 0x1244, 0x44, 0x69, 0x62, 0xe9, 0x65, 0x72, 0x3b, 0x41, 0x6c, 0x74,
+0x69, 0x6e, 0x65, 0x3b, 0x54, 0x61, 0x6c, 0x61, 0x61, 0x74, 0x61, 0x3b,
+0xc0, 0x6c, 0x61, 0x72, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x78, 0x61, 0x6d,
+0x69, 0x73, 0x3b, 0xc0, 0x6a, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x41, 0x73,
+0x65, 0x65, 0x72, 0x44, 0x69, 0x62, 0x3b, 0x41, 0x6c, 0x74, 0x3b, 0x54,
+0x61, 0x6c, 0x3b, 0xc0, 0x6c, 0x61, 0x3b, 0x41, 0x6c, 0x78, 0x3b, 0xc0,
+0x6a, 0x6a, 0x3b, 0x41, 0x73, 0x65, 0x43, 0x61, 0x77, 0x65, 0x3b, 0x4d,
+0x76, 0x75, 0x6c, 0x6f, 0x3b, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x62, 0x69,
+0x6e, 0x69, 0x3b, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x74, 0x68, 0x61, 0x74,
+0x68, 0x75, 0x3b, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x6e, 0x65, 0x3b, 0x4c,
+0x77, 0x65, 0x73, 0x69, 0x68, 0x6c, 0x61, 0x6e, 0x75, 0x3b, 0x4d, 0x67,
+0x71, 0x69, 0x62, 0x65, 0x6c, 0x6f, 0x43, 0x61, 0x77, 0x3b, 0x4d, 0x76,
+0x75, 0x3b, 0x42, 0x69, 0x6e, 0x3b, 0x54, 0x68, 0x61, 0x3b, 0x53, 0x69,
+0x6e, 0x3b, 0x48, 0x6c, 0x61, 0x3b, 0x4d, 0x67, 0x71, 0x43, 0x61, 0x77,
+0x3b, 0x4d, 0x76, 0x75, 0x3b, 0x4c, 0x77, 0x65, 0x73, 0x62, 0x3b, 0x54,
+0x68, 0x61, 0x3b, 0x53, 0x69, 0x6e, 0x3b, 0x48, 0x6c, 0x61, 0x3b, 0x4d,
+0x67, 0x71, 0x43, 0x3b, 0x4d, 0x3b, 0x53, 0x62, 0x3b, 0x53, 0x74, 0x3b,
+0x53, 0x69, 0x6e, 0x3b, 0x48, 0x6c, 0x3b, 0x4d, 0x67, 0x71, 0x43, 0x3b,
+0x4d, 0x3b, 0x53, 0x62, 0x3b, 0x54, 0x68, 0x74, 0x3b, 0x53, 0x69, 0x6e,
+0x3b, 0x48, 0x6c, 0x3b, 0x4d, 0x67, 0x71, 0x73, 0x254, 0x301, 0x6e, 0x64,
+0x69, 0x25b, 0x3b, 0x6d, 0xf3, 0x6e, 0x64, 0x69, 0x65, 0x3b, 0x6d, 0x75,
+0xe1, 0x6e, 0x79, 0xe1, 0x14b, 0x6d, 0xf3, 0x6e, 0x64, 0x69, 0x65, 0x3b,
+0x6d, 0x65, 0x74, 0xfa, 0x6b, 0x70, 0xed, 0xe1, 0x70, 0x25b, 0x3b, 0x6b,
+0xfa, 0x70, 0xe9, 0x6c, 0x69, 0x6d, 0x65, 0x74, 0xfa, 0x6b, 0x70, 0x69,
+0x61, 0x70, 0x25b, 0x3b, 0x66, 0x65, 0x6c, 0xe9, 0x74, 0x65, 0x3b, 0x73,
+0xe9, 0x73, 0x65, 0x6c, 0xe9, 0x73, 0x64, 0x3b, 0x6d, 0x64, 0x3b, 0x6d,
+0x77, 0x3b, 0x65, 0x74, 0x3b, 0x6b, 0x6c, 0x3b, 0x66, 0x6c, 0x3b, 0x73,
+0x73, 0x73, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x65, 0x3b, 0x6b, 0x3b, 0x66,
+0x3b, 0x73, 0x5d6, 0x5d5, 0x5e0, 0x5d8, 0x5d9, 0x5e7, 0x3b, 0x5de, 0x5d0, 0x5b8,
+0x5e0, 0x5d8, 0x5d9, 0x5e7, 0x3b, 0x5d3, 0x5d9, 0x5e0, 0x5e1, 0x5d8, 0x5d9, 0x5e7,
+0x3b, 0x5de, 0x5d9, 0x5d8, 0x5d5, 0x5d5, 0x5d0, 0x5da, 0x3b, 0x5d3, 0x5d0, 0x5e0,
+0x5e2, 0x5e8, 0x5e9, 0x5d8, 0x5d9, 0x5e7, 0x3b, 0x5e4, 0x5bf, 0x5e8, 0x5f2, 0x5b7,
+0x5d8, 0x5d9, 0x5e7, 0x3b, 0x5e9, 0x5d1, 0x5ea, 0xc0, 0xec, 0x6b, 0xfa, 0x3b,
+0x41, 0x6a, 0xe9, 0x3b, 0xcc, 0x73, 0x1eb9, 0x301, 0x67, 0x75, 0x6e, 0x3b,
+0x1ecc, 0x6a, 0x1ecd, 0x301, 0x72, 0xfa, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x62,
+0x1ecd, 0x3b, 0x1eb8, 0x74, 0xec, 0x3b, 0xc0, 0x62, 0xe1, 0x6d, 0x1eb9, 0x301,
+0x74, 0x61, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, 0xc0, 0xec, 0x6b, 0xfa, 0x3b,
+0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, 0x41, 0x6a, 0xe9, 0x3b, 0x1ecc, 0x6a, 0x1ecd,
+0x301, 0x20, 0xcc, 0x73, 0x1eb9, 0x301, 0x67, 0x75, 0x6e, 0x3b, 0x1ecc, 0x6a,
+0x1ecd, 0x301, 0x72, 0xfa, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x62, 0x1ecd, 0x3b,
+0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, 0x1eb8, 0x74, 0xec, 0x3b, 0x1ecc, 0x6a, 0x1ecd,
+0x301, 0x20, 0xc0, 0x62, 0xe1, 0x6d, 0x1eb9, 0x301, 0x74, 0x61, 0xc0, 0xec,
+0x6b, 0x3b, 0x41, 0x6a, 0x3b, 0xcc, 0x73, 0x1eb9, 0x301, 0x67, 0x3b, 0x1ecc,
+0x6a, 0x1ecd, 0x301, 0x72, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x62, 0x3b, 0x1eb8,
+0x74, 0x3b, 0xc0, 0x62, 0xe1, 0x6d, 0xc0, 0x3b, 0x41, 0x3b, 0xcc, 0x3b,
+0x1ecc, 0x3b, 0x1ecc, 0x3b, 0x1eb8, 0x3b, 0xc0, 0xc0, 0xec, 0x6b, 0xfa, 0x3b,
+0x41, 0x6a, 0xe9, 0x3b, 0xcc, 0x73, 0x25b, 0x301, 0x67, 0x75, 0x6e, 0x3b,
+0x186, 0x6a, 0x254, 0x301, 0x72, 0xfa, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x62,
+0x254, 0x3b, 0x190, 0x74, 0xec, 0x3b, 0xc0, 0x62, 0xe1, 0x6d, 0x25b, 0x301,
+0x74, 0x61, 0x186, 0x6a, 0x254, 0x301, 0x20, 0xc0, 0xec, 0x6b, 0xfa, 0x3b,
+0x186, 0x6a, 0x254, 0x301, 0x20, 0x41, 0x6a, 0xe9, 0x3b, 0x186, 0x6a, 0x254,
+0x301, 0x20, 0xcc, 0x73, 0x25b, 0x301, 0x67, 0x75, 0x6e, 0x3b, 0x186, 0x6a,
+0x254, 0x301, 0x72, 0xfa, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x62, 0x254, 0x3b,
+0x186, 0x6a, 0x254, 0x301, 0x20, 0x190, 0x74, 0xec, 0x3b, 0x186, 0x6a, 0x254,
+0x301, 0x20, 0xc0, 0x62, 0xe1, 0x6d, 0x25b, 0x301, 0x74, 0x61, 0xc0, 0xec,
+0x6b, 0x3b, 0x41, 0x6a, 0x3b, 0xcc, 0x73, 0x25b, 0x301, 0x67, 0x3b, 0x186,
+0x6a, 0x254, 0x301, 0x72, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x62, 0x3b, 0x190,
+0x74, 0x3b, 0xc0, 0x62, 0xe1, 0x6d, 0xc0, 0x3b, 0x41, 0x3b, 0xcc, 0x3b,
+0x186, 0x3b, 0x186, 0x3b, 0x190, 0x3b, 0xc0, 0x41, 0x6c, 0x68, 0x61, 0x64,
+0x69, 0x3b, 0x41, 0x74, 0x69, 0x6e, 0x6e, 0x69, 0x3b, 0x41, 0x74, 0x61,
+0x6c, 0x61, 0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x72, 0x62, 0x61,
+0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x41, 0x6c,
+0x7a, 0x75, 0x6d, 0x61, 0x3b, 0x41, 0x73, 0x69, 0x62, 0x74, 0x69, 0x48,
+0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x5a, 0x3b, 0x53,
+0x6e, 0x67, 0x6f, 0x65, 0x6e, 0x7a, 0x73, 0x69, 0x6e, 0x67, 0x68, 0x67,
+0x69, 0x7a, 0x3b, 0x73, 0x69, 0x6e, 0x67, 0x68, 0x67, 0x69, 0x7a, 0x69,
+0x74, 0x3b, 0x73, 0x69, 0x6e, 0x67, 0x68, 0x67, 0x69, 0x7a, 0x6e, 0x67,
+0x65, 0x69, 0x68, 0x3b, 0x73, 0x69, 0x6e, 0x67, 0x68, 0x67, 0x69, 0x7a,
+0x73, 0x61, 0x6d, 0x3b, 0x73, 0x69, 0x6e, 0x67, 0x68, 0x67, 0x69, 0x7a,
+0x73, 0x65, 0x69, 0x71, 0x3b, 0x73, 0x69, 0x6e, 0x67, 0x68, 0x67, 0x69,
+0x7a, 0x68, 0x61, 0x6a, 0x3b, 0x73, 0x69, 0x6e, 0x67, 0x68, 0x67, 0x69,
+0x7a, 0x72, 0x6f, 0x65, 0x6b, 0x49, 0x53, 0x6f, 0x6e, 0x74, 0x6f, 0x3b,
+0x55, 0x4d, 0x73, 0x6f, 0x6d, 0x62, 0x75, 0x6c, 0x75, 0x6b, 0x6f, 0x3b,
+0x55, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x3b, 0x55,
+0x4c, 0x77, 0x65, 0x73, 0x69, 0x74, 0x68, 0x61, 0x74, 0x68, 0x75, 0x3b,
+0x55, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x6e, 0x65, 0x3b, 0x55, 0x4c, 0x77,
+0x65, 0x73, 0x69, 0x68, 0x6c, 0x61, 0x6e, 0x75, 0x3b, 0x55, 0x4d, 0x67,
+0x71, 0x69, 0x62, 0x65, 0x6c, 0x6f, 0x53, 0x6f, 0x6e, 0x3b, 0x4d, 0x73,
+0x6f, 0x3b, 0x42, 0x69, 0x6c, 0x3b, 0x54, 0x68, 0x61, 0x3b, 0x53, 0x69,
+0x6e, 0x3b, 0x48, 0x6c, 0x61, 0x3b, 0x4d, 0x67, 0x71, 0x53, 0x3b, 0x4d,
+0x3b, 0x42, 0x3b, 0x54, 0x3b, 0x53, 0x3b, 0x48, 0x3b, 0x4d, 0x6e, 0x75,
+0x6d, 0x129, 0x67, 0x67, 0x75, 0x3b, 0x70, 0x69, 0x72, 0x2d, 0x6b, 0x75,
+0x72, 0xe3, 0x2d, 0x68, 0xe1, 0x3b, 0x72, 0xe9, 0x67, 0x72, 0x65, 0x2d,
+0x6b, 0x75, 0x72, 0xe3, 0x2d, 0x68, 0xe1, 0x3b, 0x74, 0x1ebd, 0x67, 0x74,
+0x169, 0x2d, 0x6b, 0x75, 0x72, 0xe3, 0x2d, 0x68, 0xe1, 0x3b, 0x76, 0x1ebd,
+0x6e, 0x68, 0x6b, 0xe3, 0x67, 0x72, 0x61, 0x2d, 0x6b, 0x75, 0x72, 0xe3,
+0x2d, 0x68, 0xe1, 0x3b, 0x70, 0xe9, 0x6e, 0x6b, 0x61, 0x72, 0x2d, 0x6b,
+0x75, 0x72, 0xe3, 0x2d, 0x68, 0xe1, 0x3b, 0x73, 0x61, 0x76, 0x6e, 0x75,
+0x6e, 0x75, 0x6d, 0x2e, 0x3b, 0x70, 0x69, 0x72, 0x2e, 0x3b, 0x72, 0xe9,
+0x67, 0x2e, 0x3b, 0x74, 0x1ebd, 0x67, 0x2e, 0x3b, 0x76, 0x1ebd, 0x6e, 0x2e,
+0x3b, 0x70, 0xe9, 0x6e, 0x2e, 0x3b, 0x73, 0x61, 0x76, 0x2e, 0x4e, 0x2e,
+0x3b, 0x50, 0x2e, 0x3b, 0x52, 0x2e, 0x3b, 0x54, 0x2e, 0x3b, 0x56, 0x2e,
+0x3b, 0x50, 0x2e, 0x3b, 0x53, 0x2e, 0x6d, 0x69, 0x74, 0x75, 0xfa, 0x3b,
+0x6d, 0x75, 0x72, 0x61, 0x6b, 0x69, 0x70, 0xed, 0x3b, 0x6d, 0x75, 0x72,
+0x61, 0x6b, 0xed, 0x2d, 0x6d, 0x75, 0x6b, 0x169, 0x69, 0x3b, 0x6d, 0x75,
+0x72, 0x61, 0x6b, 0xed, 0x2d, 0x6d, 0x75, 0x73, 0x61, 0x70, 0xed, 0x72,
+0x69, 0x3b, 0x73, 0x75, 0x70, 0x61, 0x70, 0xe1, 0x3b, 0x79, 0x75, 0x6b,
+0x75, 0x61, 0x6b, 0xfa, 0x3b, 0x73, 0x61, 0x75, 0x72, 0xfa, 0x6d, 0x69,
+0x74, 0x3b, 0x6d, 0x75, 0x72, 0x3b, 0x6d, 0x6d, 0x6b, 0x3b, 0x6d, 0x6d,
+0x73, 0x3b, 0x73, 0x75, 0x70, 0x3b, 0x79, 0x75, 0x6b, 0x3b, 0x73, 0x61,
+0x75, 0x4d, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x53, 0x3b, 0x59,
+0x3b, 0x53, 0x910, 0x924, 0x935, 0x93e, 0x930, 0x3b, 0x938, 0x94b, 0x92e, 0x935,
+0x93e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x935, 0x93e, 0x930, 0x3b, 0x92c,
+0x941, 0x927, 0x935, 0x93e, 0x930, 0x3b, 0x92c, 0x943, 0x939, 0x938, 0x94d, 0x92a,
+0x924, 0x935, 0x93e, 0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x935, 0x93e,
+0x930, 0x3b, 0x936, 0x928, 0x93f, 0x935, 0x93e, 0x930, 0x53, 0xf6, 0x6e, 0x64,
+0x61, 0x69, 0x3b, 0x4d, 0x75, 0x6e, 0x64, 0x61, 0x69, 0x3b, 0x54, 0x65,
+0x69, 0x73, 0x64, 0x61, 0x69, 0x3b, 0x57, 0x65, 0x65, 0x64, 0x65, 0x6e,
+0x73, 0x64, 0x61, 0x69, 0x3b, 0x54, 0xfc, 0xfc, 0x72, 0x73, 0x64, 0x61,
+0x69, 0x3b, 0x46, 0x72, 0x65, 0x69, 0x64, 0x61, 0x69, 0x3b, 0x53, 0x61,
+0x6e, 0x69, 0x6e, 0x6a, 0x53, 0xf6, 0x6e, 0x3b, 0x4d, 0x75, 0x6e, 0x3b,
+0x54, 0x65, 0x69, 0x3b, 0x57, 0x65, 0x64, 0x3b, 0x54, 0xfc, 0x72, 0x3b,
+0x46, 0x72, 0x65, 0x3b, 0x53, 0x61, 0x6e, 0x73, 0x75, 0x6e, 0x6f, 0x20,
+0x65, 0x73, 0x75, 0x6e, 0x20, 0x23, 0x37, 0x3b, 0x73, 0x75, 0x6e, 0x6f,
+0x20, 0x65, 0x73, 0x75, 0x6e, 0x20, 0x23, 0x31, 0x3b, 0x73, 0x75, 0x6e,
+0x6f, 0x20, 0x65, 0x73, 0x75, 0x6e, 0x20, 0x23, 0x32, 0x3b, 0x73, 0x75,
+0x6e, 0x6f, 0x20, 0x65, 0x73, 0x75, 0x6e, 0x20, 0x23, 0x33, 0x3b, 0x73,
+0x75, 0x6e, 0x6f, 0x20, 0x65, 0x73, 0x75, 0x6e, 0x20, 0x23, 0x34, 0x3b,
+0x73, 0x75, 0x6e, 0x6f, 0x20, 0x65, 0x73, 0x75, 0x6e, 0x20, 0x23, 0x35,
+0x3b, 0x73, 0x75, 0x6e, 0x6f, 0x20, 0x65, 0x73, 0x75, 0x6e, 0x20, 0x23,
+0x36, 0x53, 0x61, 0x6e, 0x64, 0x65, 0x3b, 0x4d, 0x61, 0x6e, 0x64, 0x65,
+0x3b, 0x54, 0x69, 0x75, 0x73, 0x64, 0x65, 0x3b, 0x57, 0x65, 0x6e, 0x65,
+0x73, 0x64, 0x65, 0x3b, 0x54, 0x6f, 0x73, 0x64, 0x65, 0x3b, 0x46, 0x72,
+0x61, 0x65, 0x64, 0x65, 0x3b, 0x53, 0x61, 0x74, 0x61, 0x64, 0x65, 0x6cc,
+0x6a9, 0x634, 0x645, 0x628, 0x647, 0x3b, 0x62f, 0x648, 0x634, 0x645, 0x628, 0x647,
+0x3b, 0x633, 0x626, 0x6cc, 0x634, 0x645, 0x628, 0x647, 0x3b, 0x686, 0x627, 0x631,
+0x634, 0x645, 0x628, 0x647, 0x3b, 0x67e, 0x646, 0x686, 0x634, 0x645, 0x628, 0x647,
+0x3b, 0x62c, 0x645, 0x647, 0x3b, 0x634, 0x645, 0x628, 0x647, 0x6cc, 0x6a9, 0x3b,
+0x62f, 0x648, 0x3b, 0x633, 0x626, 0x6d2, 0x3b, 0x686, 0x627, 0x631, 0x3b, 0x67e,
+0x646, 0x686, 0x3b, 0x62c, 0x645, 0x647, 0x3b, 0x634, 0x645, 0x59, 0x61, 0x6b,
+0x73, 0x68, 0x61, 0x6d, 0x62, 0x65, 0x68, 0x3b, 0x44, 0x6f, 0x73, 0x68,
+0x61, 0x6d, 0x62, 0x65, 0x68, 0x3b, 0x53, 0x61, 0x79, 0x73, 0x68, 0x61,
+0x6d, 0x62, 0x65, 0x68, 0x3b, 0x43, 0x68, 0xe1, 0x72, 0x73, 0x68, 0x61,
+0x6d, 0x62, 0x65, 0x68, 0x3b, 0x50, 0x61, 0x6e, 0x63, 0x68, 0x73, 0x68,
+0x61, 0x6d, 0x62, 0x65, 0x68, 0x3b, 0x4a, 0x6f, 0x6d, 0x61, 0x68, 0x3b,
+0x53, 0x68, 0x61, 0x6d, 0x62, 0x65, 0x68, 0x59, 0x61, 0x6b, 0x3b, 0x44,
+0x6f, 0x3b, 0x53, 0x61, 0x79, 0x3b, 0x43, 0x68, 0xe1, 0x3b, 0x50, 0x61,
+0x6e, 0x3b, 0x4a, 0x6f, 0x6d, 0x3b, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x6d,
+0x65, 0x6e, 0x65, 0x67, 0x61, 0x3b, 0x6c, 0x75, 0x6e, 0x65, 0x73, 0x64,
+0xec, 0x3b, 0x6d, 0xe4, 0x74, 0x65, 0x73, 0x64, 0xec, 0x3b, 0x6d, 0xe4,
+0x63, 0x6f, 0x72, 0x64, 0xec, 0x3b, 0x7a, 0x65, 0x75, 0x67, 0x67, 0x69,
+0x61, 0x3b, 0x76, 0x65, 0x6e, 0x61, 0x72, 0x64, 0xec, 0x3b, 0x73, 0x61,
+0x62, 0x62, 0x6f, 0x64, 0x6f, 0x6d, 0x2e, 0x3b, 0x6c, 0x75, 0x6e, 0x2e,
+0x3b, 0x6d, 0xe4, 0x74, 0x2e, 0x3b, 0x6d, 0xe4, 0x63, 0x2e, 0x3b, 0x7a,
+0x65, 0x75, 0x2e, 0x3b, 0x76, 0x65, 0x6e, 0x2e, 0x3b, 0x73, 0x61, 0x62,
+0x2e, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x5a, 0x3b, 0x56,
+0x3b, 0x53, 0x627, 0x6cc, 0x6a9, 0x634, 0x6cc, 0x645, 0x6d2, 0x3b, 0x62f, 0x64f,
+0x648, 0x634, 0x6cc, 0x645, 0x6d2, 0x3b, 0x6af, 0x6be, 0x646, 0x20, 0x622, 0x646,
+0x6af, 0x627, 0x3b, 0x686, 0x627, 0x631, 0x634, 0x6cc, 0x645, 0x6d2, 0x3b, 0x67e,
+0x64e, 0x626, 0x20, 0x634, 0x6cc, 0x645, 0x6d2, 0x3b, 0x634, 0x64f, 0x648, 0x6af,
+0x627, 0x631, 0x3b, 0x644, 0x64e, 0x648, 0x20, 0x622, 0x646, 0x6af, 0x627, 0x627,
+0x3b, 0x62f, 0x3b, 0x6af, 0x3b, 0x686, 0x3b, 0x67e, 0x3b, 0x634, 0x3b, 0x644,
+0x61, 0x6c, 0x61, 0x68, 0x61, 0x256, 0x269, 0x3b, 0x61, 0x256, 0x269, 0x74,
+0x25b, 0x6e, 0x25b, 0x25b, 0x3b, 0x61, 0x74, 0x61, 0x6c, 0x61, 0x61, 0x74,
+0x61, 0x3b, 0x61, 0x6c, 0x61, 0x61, 0x72, 0x62, 0x61, 0x3b, 0x61, 0x6c,
+0x61, 0x61, 0x6d, 0x269, 0x73, 0x68, 0x269, 0x3b, 0x61, 0x72, 0x269, 0x73,
+0x1dd, 0x6d, 0x61, 0x3b, 0x61, 0x73, 0x69, 0x69, 0x62, 0x69, 0x61, 0x6c,
+0x61, 0x68, 0x3b, 0x61, 0x256, 0x269, 0x74, 0x3b, 0x61, 0x74, 0x61, 0x6c,
+0x3b, 0x61, 0x6c, 0x61, 0x72, 0x3b, 0x61, 0x6c, 0x61, 0x6d, 0x3b, 0x61,
+0x72, 0x269, 0x73, 0x3b, 0x61, 0x73, 0x69, 0x62, 0x6c, 0x68, 0x3b, 0x256,
+0x74, 0x3b, 0x74, 0x6c, 0x3b, 0x6c, 0x72, 0x3b, 0x6c, 0x6d, 0x3b, 0x72,
+0x73, 0x3b, 0x73, 0x62, 0x924, 0x94b, 0x906, 0x930, 0x3b, 0x938, 0x94b, 0x906,
+0x930, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x935, 0x93e, 0x930, 0x3b, 0x92c, 0x941,
+0x927, 0x935, 0x93e, 0x930, 0x3b, 0x935, 0x940, 0x930, 0x935, 0x93e, 0x930, 0x3b,
+0x936, 0x941, 0x915, 0x94d, 0x915, 0x930, 0x935, 0x93e, 0x930, 0x3b, 0x936, 0x928,
+0x93f, 0x91a, 0x94d, 0x91a, 0x930, 0x935, 0x93e, 0x930, 0x924, 0x94b, 0x906, 0x930,
+0x3b, 0x938, 0x94b, 0x906, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x3b, 0x92c,
+0x941, 0x927, 0x3b, 0x935, 0x940, 0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x915,
+0x930, 0x3b, 0x936, 0x928, 0x93f, 0x924, 0x3b, 0x938, 0x94b, 0x3b, 0x92e, 0x902,
+0x3b, 0x92c, 0x941, 0x3b, 0x935, 0x940, 0x3b, 0x936, 0x941, 0x3b, 0x936, 0x64,
+0x6f, 0x6d, 0xe9, 0x6e, 0x65, 0x67, 0x61, 0x3b, 0x6c, 0x75, 0x6e, 0x69,
+0x3b, 0x6d, 0x61, 0x72, 0x74, 0x69, 0x3b, 0x6d, 0xe8, 0x72, 0x63, 0x6f,
+0x72, 0x65, 0x3b, 0x7a, 0x6f, 0x62, 0x61, 0x3b, 0x76, 0xe8, 0x6e, 0x61,
+0x72, 0x65, 0x3b, 0x73, 0x61, 0x62, 0x6f, 0x64, 0x6f, 0x6d, 0x3b, 0x6c,
+0x75, 0x6e, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d, 0x65, 0x72, 0x3b, 0x7a,
+0x6f, 0x62, 0x3b, 0x76, 0xe8, 0x6e, 0x3b, 0x73, 0x61, 0x62
};
-static const char16_t byte_unit_data[] = {
-0x62, 0x79, 0x74, 0x65, 0x73, 0x6b, 0x42, 0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x50, 0x42, 0x3b,
-0x45, 0x42, 0x4b, 0x69, 0x42, 0x3b, 0x4d, 0x69, 0x42, 0x3b, 0x47, 0x69, 0x42, 0x3b, 0x54, 0x69, 0x42, 0x3b, 0x50, 0x69,
-0x42, 0x3b, 0x45, 0x69, 0x42, 0x67, 0x72, 0x65, 0x65, 0x70, 0x62, 0x61, 0x6a, 0x74, 0x1263, 0x12ed, 0x1275, 0x12aa, 0x1263, 0x3b,
-0x121c, 0x130b, 0x1263, 0x12ed, 0x1275, 0x3b, 0x130a, 0x1263, 0x3b, 0x1274, 0x122b, 0x1263, 0x12ed, 0x1275, 0x3b, 0x1354, 0x1263, 0x3b, 0x45, 0x42,
-0x628, 0x627, 0x64a, 0x62a, 0x643, 0x64a, 0x644, 0x648, 0x628, 0x627, 0x64a, 0x62a, 0x3b, 0x645, 0x2e, 0x628, 0x3b, 0x63a, 0x2e, 0x628,
-0x3b, 0x62a, 0x64a, 0x631, 0x627, 0x628, 0x627, 0x64a, 0x62a, 0x3b, 0x628, 0x64a, 0x62a, 0x627, 0x628, 0x627, 0x64a, 0x62a, 0x3b, 0x45,
-0x42, 0x562, 0x561, 0x575, 0x569, 0x565, 0x580, 0x56f, 0x532, 0x3b, 0x544, 0x532, 0x3b, 0x533, 0x532, 0x3b, 0x54f, 0x532, 0x3b, 0x54a,
-0x532, 0x3b, 0x45, 0x42, 0x9ac, 0x9be, 0x987, 0x99f, 0x995, 0x9bf, 0x983, 0x20, 0x9ac, 0x9be, 0x983, 0x3b, 0x9ae, 0x9c7, 0x983, 0x20,
-0x9ac, 0x9be, 0x983, 0x3b, 0x997, 0x9bf, 0x983, 0x20, 0x9ac, 0x9be, 0x983, 0x3b, 0x99f, 0x9c7, 0x983, 0x20, 0x9ac, 0x9be, 0x983, 0x3b,
-0x50, 0x42, 0x3b, 0x45, 0x42, 0x62, 0x61, 0x79, 0x74, 0x62, 0x79, 0x74, 0x65, 0x2d, 0x61, 0x6b, 0x431, 0x430, 0x439, 0x442,
-0x44b, 0x41a, 0x411, 0x3b, 0x41c, 0x411, 0x3b, 0x413, 0x411, 0x3b, 0x422, 0x411, 0x3b, 0x41f, 0x411, 0x3b, 0x45, 0x42, 0x62, 0x61,
-0x6a, 0x74, 0x6f, 0x76, 0x69, 0x6f, 0x6b, 0x74, 0x65, 0x64, 0x6f, 0xf9, 0x6b, 0x6f, 0x3b, 0x4d, 0x6f, 0x3b, 0x47, 0x6f,
-0x3b, 0x54, 0x6f, 0x3b, 0x50, 0x6f, 0x3b, 0x45, 0x6f, 0x4b, 0x69, 0x6f, 0x3b, 0x4d, 0x69, 0x6f, 0x3b, 0x47, 0x69, 0x6f,
-0x3b, 0x54, 0x69, 0x6f, 0x3b, 0x50, 0x69, 0x6f, 0x3b, 0x45, 0x69, 0x6f, 0x431, 0x430, 0x439, 0x442, 0x43e, 0x432, 0x435, 0x1018,
-0x102d, 0x102f, 0x1000, 0x103a, 0x6d, 0x67, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0xd804, 0xdd1d, 0xd804, 0xdd2d, 0xd804, 0xdd16, 0xd804, 0xdd34,
-0x13d7, 0x13d3, 0x13cd, 0x13a6, 0x13b5, 0x13a9, 0x5b57, 0x8282, 0x4f4d, 0x5143, 0x7d44, 0x62, 0x61, 0x6a, 0x74, 0x79, 0x62, 0x61, 0x6a, 0x74,
-0x6f, 0x6a, 0x62, 0x61, 0x69, 0x64, 0x69, 0x64, 0x62, 0xfd, 0x74, 0x74, 0x61, 0x76, 0x75, 0x74, 0x6b, 0x74, 0x3b, 0x4d,
-0x74, 0x3b, 0x47, 0x74, 0x3b, 0x54, 0x74, 0x3b, 0x50, 0x74, 0x3b, 0x45, 0x74, 0x4b, 0x69, 0x74, 0x3b, 0x4d, 0x69, 0x74,
-0x3b, 0x47, 0x69, 0x74, 0x3b, 0x54, 0x69, 0x74, 0x3b, 0x50, 0x69, 0x74, 0x3b, 0x45, 0x69, 0x74, 0x6f, 0x63, 0x74, 0x65,
-0x74, 0x73, 0xd83a, 0xdd36, 0xd83a, 0xdd2b, 0xd83a, 0xdd45, 0xd83a, 0xdd3c, 0xd83a, 0xdd46, 0xd83a, 0xdd2d, 0xd83a, 0xdd33, 0xd83a, 0xdd14, 0x3b, 0xd83a,
-0xdd03, 0xd83a, 0xdd14, 0x3b, 0xd83a, 0xdd18, 0xd83a, 0xdd14, 0x3b, 0xd83a, 0xdd1a, 0xd83a, 0xdd14, 0x3b, 0xd83a, 0xdd06, 0xd83a, 0xdd14, 0x3b, 0x45,
-0x42, 0x62, 0x61, 0x69, 0x64, 0x68, 0x74, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x10d9, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x3b, 0x4d,
-0x42, 0x3b, 0x47, 0x42, 0x3b, 0x10e2, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x3b, 0x10de, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x3b, 0x45,
-0x42, 0x42, 0x79, 0x74, 0x65, 0x73, 0xaac, 0xabe, 0xa87, 0xa9f, 0x6b, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x4d, 0x42, 0x20,
-0x7b, 0x30, 0x7d, 0x3b, 0x47, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x54, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x50, 0x42,
-0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x45, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x4b, 0x69, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x4d,
-0x69, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x47, 0x69, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x54, 0x69, 0x42, 0x20, 0x7b,
-0x30, 0x7d, 0x3b, 0x50, 0x69, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x45, 0x69, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x5d1, 0x5d9,
-0x5d9, 0x5d8, 0x92c, 0x93e, 0x907, 0x91f, 0x62, 0xe1, 0x6a, 0x74, 0x62, 0xe6, 0x74, 0x69, 0x62, 0x65, 0x61, 0x72, 0x74, 0x61,
-0x30d0, 0x30a4, 0x30c8, 0x4b, 0x42, 0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42,
-0x62, 0x69, 0x74, 0x65, 0x61, 0x1e6d, 0x61, 0x6d, 0x1e0d, 0x61, 0x6e, 0x6b, 0x41, 0x1e6c, 0x3b, 0x4d, 0x41, 0x1e6c, 0x3b, 0x47,
-0x41, 0x1e6c, 0x3b, 0x54, 0x41, 0x1e6c, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0xcac, 0xcc8, 0xc9f, 0xccd, 0x200c, 0xc97, 0xcb3, 0xcc1,
-0xc95, 0xcbf, 0x2e, 0xcac, 0xcc8, 0x2e, 0x3b, 0xcae, 0xcc6, 0x2e, 0xcac, 0xcc8, 0x2e, 0x3b, 0xc97, 0xcbf, 0x2e, 0xcac, 0xcc8, 0x2e,
-0x3b, 0xc9f, 0xcc6, 0x2e, 0xcac, 0xcc8, 0x2e, 0x3b, 0xcaa, 0xcc6, 0xcac, 0xcc8, 0x3b, 0x45, 0x42, 0x43a, 0x411, 0x3b, 0x4d, 0x411,
-0x3b, 0x413, 0x411, 0x3b, 0x54, 0x411, 0x3b, 0x41f, 0x411, 0x3b, 0x45, 0x411, 0x4b, 0x69, 0x411, 0x3b, 0x4d, 0x69, 0x411, 0x3b,
-0x47, 0x69, 0x411, 0x3b, 0x54, 0x69, 0x411, 0x3b, 0x50, 0x69, 0x411, 0x3b, 0x45, 0x69, 0x411, 0x1794, 0x17c3, 0x92c, 0x93e, 0x92f,
-0x91f, 0xbc14, 0xc774, 0xd2b8, 0x43a, 0x411, 0x3b, 0x41c, 0x411, 0x3b, 0x413, 0x411, 0x3b, 0x422, 0x411, 0x3b, 0x41f, 0x442, 0x431, 0x3b,
-0x45, 0x42, 0x62, 0x61, 0x69, 0x74, 0x69, 0x62, 0x61, 0x69, 0x74, 0x61, 0x69, 0x431, 0x430, 0x458, 0x442, 0x438, 0xd2c, 0xd48,
-0xd31, 0xd4d, 0xd31, 0xd4d, 0xd15, 0xd46, 0xd2c, 0xd3f, 0x3b, 0xd0e, 0xd02, 0xd2c, 0xd3f, 0x3b, 0xd1c, 0xd3f, 0xd2c, 0xd3f, 0x3b, 0xd1f,
-0xd3f, 0xd2c, 0xd3f, 0x3b, 0xd2a, 0xd3f, 0xd2c, 0xd3f, 0x3b, 0x45, 0x42, 0x628, 0x627, 0x6cc, 0x62a, 0x6a9, 0x6cc, 0x644, 0x648, 0x628,
-0x627, 0x6cc, 0x62a, 0x3b, 0x645, 0x6af, 0x627, 0x628, 0x627, 0x6cc, 0x62a, 0x3b, 0x6af, 0x6cc, 0x6af, 0x627, 0x628, 0x627, 0x6cc, 0x62a,
-0x3b, 0x62a, 0x631, 0x627, 0x628, 0x627, 0x6cc, 0x62a, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0x43a, 0x411, 0x3b, 0x41c, 0x411, 0x3b,
-0x413, 0x411, 0x3b, 0x422, 0x411, 0x3b, 0x41f, 0x411, 0x3b, 0x45, 0x42, 0x6b, 0x42, 0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b,
-0x54, 0x42, 0x3b, 0x92a, 0x93f, 0x91f, 0x93e, 0x3b, 0x45, 0x42, 0x42, 0x61, 0x69, 0x74, 0x2d, 0x64, 0x1eb9, 0x6d, 0xb2c, 0xb3e,
-0xb07, 0xb1f, 0xb4d, 0x628, 0x627, 0x64a, 0x67c, 0x633, 0xa2c, 0xa3e, 0xa07, 0xa1f, 0x62, 0x79, 0x21b, 0x69, 0x431, 0x430, 0x430, 0x439,
-0x442, 0x43a, 0x411, 0x3b, 0x41c, 0x411, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0x431, 0x430,
-0x458, 0x442, 0x43e, 0x432, 0x438, 0x628, 0x627, 0x626, 0x64a, 0x67d, 0x632, 0x6aa, 0x644, 0x648, 0x20, 0x628, 0x627, 0x626, 0x64a, 0x67d,
-0x632, 0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0xdb6, 0xdba, 0xdd2, 0xda7,
-0xdca, 0xd9a, 0xdd2, 0xdb6, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0xdb8, 0xdd9, 0xdb6, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0xd9c, 0xdd2, 0xdb6,
-0x20, 0x7b, 0x30, 0x7d, 0x3b, 0xda7, 0xdd9, 0xdb6, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0xdb4, 0xdd9, 0xdb6, 0x20, 0x7b, 0x30, 0x7d,
-0x3b, 0x45, 0x42, 0x62, 0x65, 0x79, 0x74, 0x69, 0x73, 0x6b, 0x42, 0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42,
-0x3b, 0x42, 0x42, 0x3b, 0x45, 0x42, 0x6b, 0x69, 0x6c, 0x6f, 0x62, 0x61, 0x69, 0x74, 0x69, 0x20, 0x7b, 0x30, 0x7d, 0x3b,
-0x4d, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x47, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x74, 0x65, 0x72, 0x61, 0x62, 0x61,
-0x69, 0x74, 0x69, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x50, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x45, 0x42, 0xbaa, 0xbc8, 0xb9f,
-0xbcd, 0xb95, 0xbb3, 0xbcd, 0xc2c, 0xc48, 0xc1f, 0xc4d, 0x200c, 0xc32, 0xc41, 0xc15, 0xc47, 0xc2c, 0xc40, 0x3b, 0xc0e, 0xc2e, 0xc4d, 0x200c,
-0xc2c, 0xc3f, 0x3b, 0xc1c, 0xc40, 0xc2c, 0xc40, 0x3b, 0xc1f, 0xc40, 0xc2c, 0xc40, 0x3b, 0xc2a, 0xc40, 0xc2c, 0xc40, 0x3b, 0x45, 0x42,
-0xe44, 0xe1a, 0xe15, 0xe4c, 0x70, 0x61, 0x69, 0x74, 0x69, 0x6b, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x4d,
-0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x47, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x54,
-0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x50, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x45,
-0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x4b, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x4d,
-0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x47, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d,
-0x3b, 0x54, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x50, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b,
-0x30, 0x7d, 0x3b, 0x45, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x62, 0x61, 0xfd, 0x74, 0x431, 0x430, 0x439,
-0x442, 0x438, 0x62, 0x79, 0x74, 0x65, 0x79, 0x628, 0x627, 0x626, 0x679, 0x6b, 0x42, 0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b,
-0x54, 0x42, 0x3b, 0x67e, 0x6cc, 0x20, 0x628, 0x6cc, 0x3b, 0x45, 0x42, 0x62, 0x65, 0x69, 0x74, 0x69, 0x61, 0x75, 0xe0, 0x77,
-0x1ecd, 0x301, 0x6e, 0x20, 0x62, 0xe1, 0xec, 0x74, 0xec, 0x6b, 0xe9, 0x62, 0xe1, 0xec, 0x74, 0xec, 0x3b, 0x4d, 0x42, 0x3b,
-0x6a, 0xed, 0x62, 0xe1, 0xec, 0x74, 0xec, 0x3b, 0x54, 0xed, 0x62, 0xe1, 0xec, 0x74, 0xec, 0x3b, 0x50, 0xed, 0x62, 0xe1,
-0xec, 0x74, 0xec, 0x3b, 0x45, 0x42, 0xe0, 0x77, 0x254, 0x301, 0x6e, 0x20, 0x62, 0xe1, 0xec, 0x74, 0xec, 0x62, 0x79, 0x74,
-0x65, 0x20, 0x61, 0x67, 0x62, 0x79, 0x74, 0x65, 0x2d, 0x69, 0x74, 0x61
+static constexpr char16_t byte_unit_data[] = {
+0x62, 0x79, 0x74, 0x65, 0x73, 0x6b, 0x42, 0x3b, 0x4d, 0x42, 0x3b, 0x47,
+0x42, 0x3b, 0x54, 0x42, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0x4b, 0x69,
+0x42, 0x3b, 0x4d, 0x69, 0x42, 0x3b, 0x47, 0x69, 0x42, 0x3b, 0x54, 0x69,
+0x42, 0x3b, 0x50, 0x69, 0x42, 0x3b, 0x45, 0x69, 0x42, 0x67, 0x72, 0x65,
+0x65, 0x70, 0x62, 0x61, 0x6a, 0x74, 0x1263, 0x12ed, 0x1275, 0x12aa, 0x1263, 0x3b,
+0x121c, 0x130b, 0x1263, 0x12ed, 0x1275, 0x3b, 0x130a, 0x1263, 0x3b, 0x1274, 0x122b, 0x1263,
+0x12ed, 0x1275, 0x3b, 0x1354, 0x1263, 0x3b, 0x45, 0x42, 0x628, 0x627, 0x64a, 0x62a,
+0x643, 0x64a, 0x644, 0x648, 0x628, 0x627, 0x64a, 0x62a, 0x3b, 0x645, 0x2e, 0x628,
+0x3b, 0x63a, 0x2e, 0x628, 0x3b, 0x62a, 0x64a, 0x631, 0x627, 0x628, 0x627, 0x64a,
+0x62a, 0x3b, 0x628, 0x64a, 0x62a, 0x627, 0x628, 0x627, 0x64a, 0x62a, 0x3b, 0x45,
+0x42, 0x562, 0x561, 0x575, 0x569, 0x565, 0x580, 0x56f, 0x532, 0x3b, 0x544, 0x532,
+0x3b, 0x533, 0x532, 0x3b, 0x54f, 0x532, 0x3b, 0x54a, 0x532, 0x3b, 0x45, 0x42,
+0x9ac, 0x9be, 0x987, 0x99f, 0x995, 0x9bf, 0x983, 0x20, 0x9ac, 0x9be, 0x983, 0x3b,
+0x9ae, 0x9c7, 0x983, 0x20, 0x9ac, 0x9be, 0x983, 0x3b, 0x997, 0x9bf, 0x983, 0x20,
+0x9ac, 0x9be, 0x983, 0x3b, 0x99f, 0x9c7, 0x983, 0x20, 0x9ac, 0x9be, 0x983, 0x3b,
+0x50, 0x42, 0x3b, 0x45, 0x42, 0x62, 0x61, 0x79, 0x74, 0x62, 0x79, 0x74,
+0x65, 0x2d, 0x61, 0x6b, 0x431, 0x430, 0x439, 0x442, 0x44b, 0x41a, 0x411, 0x3b,
+0x41c, 0x411, 0x3b, 0x413, 0x411, 0x3b, 0x422, 0x411, 0x3b, 0x41f, 0x411, 0x3b,
+0x45, 0x42, 0x62, 0x61, 0x6a, 0x74, 0x6f, 0x76, 0x69, 0x6f, 0x6b, 0x74,
+0x65, 0x64, 0x6f, 0xf9, 0x6b, 0x6f, 0x3b, 0x4d, 0x6f, 0x3b, 0x47, 0x6f,
+0x3b, 0x54, 0x6f, 0x3b, 0x50, 0x6f, 0x3b, 0x45, 0x6f, 0x4b, 0x69, 0x6f,
+0x3b, 0x4d, 0x69, 0x6f, 0x3b, 0x47, 0x69, 0x6f, 0x3b, 0x54, 0x69, 0x6f,
+0x3b, 0x50, 0x69, 0x6f, 0x3b, 0x45, 0x69, 0x6f, 0x431, 0x430, 0x439, 0x442,
+0x43e, 0x432, 0x435, 0x1018, 0x102d, 0x102f, 0x1000, 0x103a, 0x6d, 0x67, 0x61, 0x20,
+0x62, 0x79, 0x74, 0x65, 0xd804, 0xdd1d, 0xd804, 0xdd2d, 0xd804, 0xdd16, 0xd804, 0xdd34,
+0x13d7, 0x13d3, 0x13cd, 0x13a6, 0x13b5, 0x13a9, 0x5b57, 0x8282, 0x4f4d, 0x5143, 0x7d44, 0x62,
+0x61, 0x6a, 0x74, 0x79, 0x62, 0x61, 0x6a, 0x74, 0x6f, 0x6a, 0x62, 0x61,
+0x69, 0x64, 0x69, 0x64, 0x62, 0xfd, 0x74, 0x74, 0x61, 0x76, 0x75, 0x74,
+0x6b, 0x74, 0x3b, 0x4d, 0x74, 0x3b, 0x47, 0x74, 0x3b, 0x54, 0x74, 0x3b,
+0x50, 0x74, 0x3b, 0x45, 0x74, 0x4b, 0x69, 0x74, 0x3b, 0x4d, 0x69, 0x74,
+0x3b, 0x47, 0x69, 0x74, 0x3b, 0x54, 0x69, 0x74, 0x3b, 0x50, 0x69, 0x74,
+0x3b, 0x45, 0x69, 0x74, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x73, 0xd83a, 0xdd36,
+0xd83a, 0xdd2b, 0xd83a, 0xdd45, 0xd83a, 0xdd3c, 0xd83a, 0xdd46, 0xd83a, 0xdd2d, 0xd83a, 0xdd33,
+0xd83a, 0xdd14, 0x3b, 0xd83a, 0xdd03, 0xd83a, 0xdd14, 0x3b, 0xd83a, 0xdd18, 0xd83a, 0xdd14,
+0x3b, 0xd83a, 0xdd1a, 0xd83a, 0xdd14, 0x3b, 0xd83a, 0xdd06, 0xd83a, 0xdd14, 0x3b, 0x45,
+0x42, 0x62, 0x61, 0x69, 0x64, 0x68, 0x74, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8,
+0x10d9, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42,
+0x3b, 0x10e2, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x3b, 0x10de, 0x10d1, 0x10d0, 0x10d8,
+0x10e2, 0x10d8, 0x3b, 0x45, 0x42, 0x42, 0x79, 0x74, 0x65, 0x73, 0xaac, 0xabe,
+0xa87, 0xa9f, 0x6b, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x4d, 0x42, 0x20,
+0x7b, 0x30, 0x7d, 0x3b, 0x47, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x54,
+0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x50, 0x42, 0x20, 0x7b, 0x30, 0x7d,
+0x3b, 0x45, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x4b, 0x69, 0x42, 0x20, 0x7b,
+0x30, 0x7d, 0x3b, 0x4d, 0x69, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x47,
+0x69, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x54, 0x69, 0x42, 0x20, 0x7b,
+0x30, 0x7d, 0x3b, 0x50, 0x69, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x45,
+0x69, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x5d1, 0x5d9, 0x5d9, 0x5d8, 0x92c, 0x93e,
+0x907, 0x91f, 0x62, 0xe1, 0x6a, 0x74, 0x62, 0xe6, 0x74, 0x69, 0x6f, 0x63,
+0x74, 0x65, 0x74, 0x65, 0x73, 0x62, 0x65, 0x61, 0x72, 0x74, 0x61, 0x30d0,
+0x30a4, 0x30c8, 0x4b, 0x42, 0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54,
+0x42, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0x62, 0x69, 0x74, 0x65, 0x61,
+0x1e6d, 0x61, 0x6d, 0x1e0d, 0x61, 0x6e, 0x6b, 0x41, 0x1e6c, 0x3b, 0x4d, 0x41,
+0x1e6c, 0x3b, 0x47, 0x41, 0x1e6c, 0x3b, 0x54, 0x41, 0x1e6c, 0x3b, 0x50, 0x42,
+0x3b, 0x45, 0x42, 0xcac, 0xcc8, 0xc9f, 0xccd, 0x200c, 0xc97, 0xcb3, 0xcc1, 0xc95,
+0xcbf, 0x2e, 0xcac, 0xcc8, 0x2e, 0x3b, 0xcae, 0xcc6, 0x2e, 0xcac, 0xcc8, 0x2e,
+0x3b, 0xc97, 0xcbf, 0x2e, 0xcac, 0xcc8, 0x2e, 0x3b, 0xc9f, 0xcc6, 0x2e, 0xcac,
+0xcc8, 0x2e, 0x3b, 0xcaa, 0xcc6, 0xcac, 0xcc8, 0x3b, 0x45, 0x42, 0x43a, 0x411,
+0x3b, 0x4d, 0x411, 0x3b, 0x413, 0x411, 0x3b, 0x54, 0x411, 0x3b, 0x41f, 0x411,
+0x3b, 0x45, 0x411, 0x4b, 0x69, 0x411, 0x3b, 0x4d, 0x69, 0x411, 0x3b, 0x47,
+0x69, 0x411, 0x3b, 0x54, 0x69, 0x411, 0x3b, 0x50, 0x69, 0x411, 0x3b, 0x45,
+0x69, 0x411, 0x1794, 0x17c3, 0x92c, 0x93e, 0x92f, 0x91f, 0xbc14, 0xc774, 0xd2b8, 0x43a,
+0x411, 0x3b, 0x41c, 0x411, 0x3b, 0x413, 0x411, 0x3b, 0x422, 0x411, 0x3b, 0x41f,
+0x442, 0x431, 0x3b, 0x45, 0x42, 0x62, 0x61, 0x69, 0x74, 0x69, 0x62, 0x61,
+0x69, 0x74, 0x61, 0x69, 0x431, 0x430, 0x458, 0x442, 0x438, 0xd2c, 0xd48, 0xd31,
+0xd4d, 0xd31, 0xd4d, 0xd15, 0xd46, 0xd2c, 0xd3f, 0x3b, 0xd0e, 0xd02, 0xd2c, 0xd3f,
+0x3b, 0xd1c, 0xd3f, 0xd2c, 0xd3f, 0x3b, 0xd1f, 0xd3f, 0xd2c, 0xd3f, 0x3b, 0xd2a,
+0xd3f, 0xd2c, 0xd3f, 0x3b, 0x45, 0x42, 0x628, 0x627, 0x6cc, 0x62a, 0x6a9, 0x6cc,
+0x644, 0x648, 0x628, 0x627, 0x6cc, 0x62a, 0x3b, 0x645, 0x6af, 0x627, 0x628, 0x627,
+0x6cc, 0x62a, 0x3b, 0x6af, 0x6cc, 0x6af, 0x627, 0x628, 0x627, 0x6cc, 0x62a, 0x3b,
+0x62a, 0x631, 0x627, 0x628, 0x627, 0x6cc, 0x62a, 0x3b, 0x50, 0x42, 0x3b, 0x45,
+0x42, 0x43a, 0x411, 0x3b, 0x41c, 0x411, 0x3b, 0x413, 0x411, 0x3b, 0x422, 0x411,
+0x3b, 0x41f, 0x411, 0x3b, 0x45, 0x42, 0x6b, 0x42, 0x3b, 0x4d, 0x42, 0x3b,
+0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x92a, 0x93f, 0x91f, 0x93e, 0x3b, 0x45,
+0x42, 0x42, 0x61, 0x69, 0x74, 0x2d, 0x64, 0x1eb9, 0x6d, 0xb2c, 0xb3e, 0xb07,
+0xb1f, 0xb4d, 0x628, 0x627, 0x64a, 0x67c, 0x633, 0xa2c, 0xa3e, 0xa07, 0xa1f, 0x62,
+0x79, 0x21b, 0x69, 0x431, 0x430, 0x430, 0x439, 0x442, 0x43a, 0x411, 0x3b, 0x41c,
+0x411, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x50, 0x42, 0x3b, 0x45,
+0x42, 0x431, 0x430, 0x458, 0x442, 0x43e, 0x432, 0x438, 0x628, 0x627, 0x626, 0x64a,
+0x67d, 0x632, 0x6aa, 0x644, 0x648, 0x20, 0x628, 0x627, 0x626, 0x64a, 0x67d, 0x632,
+0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x50, 0x42,
+0x3b, 0x45, 0x42, 0xdb6, 0xdba, 0xdd2, 0xda7, 0xdca, 0xd9a, 0xdd2, 0xdb6, 0x20,
+0x7b, 0x30, 0x7d, 0x3b, 0xdb8, 0xdd9, 0xdb6, 0x20, 0x7b, 0x30, 0x7d, 0x3b,
+0xd9c, 0xdd2, 0xdb6, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0xda7, 0xdd9, 0xdb6, 0x20,
+0x7b, 0x30, 0x7d, 0x3b, 0xdb4, 0xdd9, 0xdb6, 0x20, 0x7b, 0x30, 0x7d, 0x3b,
+0x45, 0x42, 0x62, 0x65, 0x79, 0x74, 0x69, 0x73, 0x6b, 0x42, 0x3b, 0x4d,
+0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x42, 0x42, 0x3b, 0x45,
+0x42, 0x6b, 0x69, 0x6c, 0x6f, 0x62, 0x61, 0x69, 0x74, 0x69, 0x20, 0x7b,
+0x30, 0x7d, 0x3b, 0x4d, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x47, 0x42,
+0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x74, 0x65, 0x72, 0x61, 0x62, 0x61, 0x69,
+0x74, 0x69, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x50, 0x42, 0x20, 0x7b, 0x30,
+0x7d, 0x3b, 0x45, 0x42, 0x712, 0x710, 0x71d, 0x72c, 0xbaa, 0xbc8, 0xb9f, 0xbcd,
+0xb95, 0xbb3, 0xbcd, 0xc2c, 0xc48, 0xc1f, 0xc4d, 0x200c, 0xc32, 0xc41, 0xc15, 0xc47,
+0xc2c, 0xc40, 0x3b, 0xc0e, 0xc2e, 0xc4d, 0x200c, 0xc2c, 0xc3f, 0x3b, 0xc1c, 0xc40,
+0xc2c, 0xc40, 0x3b, 0xc1f, 0xc40, 0xc2c, 0xc40, 0x3b, 0xc2a, 0xc40, 0xc2c, 0xc40,
+0x3b, 0x45, 0x42, 0xe44, 0xe1a, 0xe15, 0xe4c, 0x70, 0x61, 0x69, 0x74, 0x69,
+0x6b, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x4d, 0x42,
+0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x47, 0x42, 0x20, 0x2bb,
+0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x54, 0x42, 0x20, 0x2bb, 0x65, 0x20,
+0x7b, 0x30, 0x7d, 0x3b, 0x50, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30,
+0x7d, 0x3b, 0x45, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x4b,
+0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x4d, 0x69,
+0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x47, 0x69, 0x42,
+0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x54, 0x69, 0x42, 0x20,
+0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x50, 0x69, 0x42, 0x20, 0x2bb,
+0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x45, 0x69, 0x42, 0x20, 0x2bb, 0x65,
+0x20, 0x7b, 0x30, 0x7d, 0x62, 0x61, 0xfd, 0x74, 0x431, 0x430, 0x439, 0x442,
+0x438, 0x62, 0x79, 0x74, 0x65, 0x79, 0x628, 0x627, 0x626, 0x679, 0x6b, 0x42,
+0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x67e, 0x6cc,
+0x20, 0x628, 0x6cc, 0x3b, 0x45, 0x42, 0x62, 0x65, 0x69, 0x74, 0x69, 0x61,
+0x75, 0xe0, 0x77, 0x1ecd, 0x301, 0x6e, 0x20, 0x62, 0xe1, 0xec, 0x74, 0xec,
+0x6b, 0xe9, 0x62, 0xe1, 0xec, 0x74, 0xec, 0x3b, 0x4d, 0x42, 0x3b, 0x6a,
+0xed, 0x62, 0xe1, 0xec, 0x74, 0xec, 0x3b, 0x54, 0xed, 0x62, 0xe1, 0xec,
+0x74, 0xec, 0x3b, 0x50, 0xed, 0x62, 0xe1, 0xec, 0x74, 0xec, 0x3b, 0x45,
+0x42, 0xe0, 0x77, 0x254, 0x301, 0x6e, 0x20, 0x62, 0xe1, 0xec, 0x74, 0xec,
+0x62, 0x79, 0x74, 0x65, 0x20, 0x61, 0x67, 0x62, 0x79, 0x74, 0x65, 0x2d,
+0x69, 0x74, 0x61
};
-static const char16_t am_data[] = {
-0x41, 0x4d, 0x76, 0x6d, 0x2e, 0x61, 0x2e, 0x67, 0x41, 0x4e, 0x65, 0x20, 0x70, 0x61, 0x72, 0x61, 0x64, 0x69, 0x74, 0x65,
-0x73, 0x1325, 0x12cb, 0x1275, 0x635, 0x9aa, 0x9c2, 0x9f0, 0x9cd, 0x9ac, 0x9be, 0x9b9, 0x9cd, 0x9a8, 0x64, 0x65, 0x20, 0x6c, 0x61, 0x20,
-0x6d, 0x61, 0xf1, 0x61, 0x6e, 0x61, 0x69, 0x63, 0x68, 0x65, 0x68, 0x65, 0x61, 0x76, 0x6f, 0x410, 0x41c, 0x73, 0xe1, 0x72,
-0xfa, 0x77, 0xe1, 0x49, 0x20, 0x62, 0x69, 0x6b, 0x25b, 0x302, 0x67, 0x6c, 0xe0, 0x75, 0x6c, 0x75, 0x63, 0x68, 0x65, 0x6c,
-0x6f, 0x70, 0x61, 0x6d, 0x69, 0x6c, 0x61, 0x75, 0x92b, 0x941, 0x902, 0x70, 0x72, 0x69, 0x6a, 0x65, 0x70, 0x6f, 0x64, 0x6e,
-0x65, 0x43f, 0x440, 0x438, 0x458, 0x435, 0x20, 0x43f, 0x43e, 0x434, 0x43d, 0x435, 0x41, 0x2e, 0x4d, 0x2e, 0x43f, 0x440, 0x2e, 0x43e,
-0x431, 0x2e, 0x1014, 0x1036, 0x1014, 0x1000, 0x103a, 0x4e0a, 0x5348, 0x61, 0x2e, 0xa0, 0x6d, 0x2e, 0x5a, 0x64, 0x61, 0x74, 0x20, 0x61,
-0x7a, 0x61, 0x6c, 0x628, 0x2e, 0x646, 0x13cc, 0x13be, 0x13b4, 0x55, 0x68, 0x72, 0x20, 0x76, 0xf6, 0x72, 0x6d, 0x69, 0x64, 0x64,
-0x61, 0x61, 0x63, 0x68, 0x73, 0x61, 0x2e, 0x6d, 0x2e, 0x64, 0x6f, 0x70, 0x2e, 0x938, 0x935, 0x947, 0x930, 0x69, 0x64, 0x69,
-0x253, 0x61, 0xf66, 0xf94, 0xf0b, 0xf46, 0xf0b, 0x4b, 0x49, 0x61, 0x74, 0x6d, 0x14b, 0x64, 0x69, 0x6b, 0xed, 0x6b, 0xed, 0x72,
-0xed, 0x67, 0x61, 0x70, 0x2e, 0x6d, 0x61, 0x74, 0x69, 0x6e, 0x73, 0x75, 0x62, 0x61, 0x6b, 0x61, 0xd83a, 0xdd00, 0xd83a, 0xdd0e,
-0x3c0, 0x2e, 0x3bc, 0x2e, 0x4d, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x53, 0x61, 0x66, 0x69, 0x79, 0x61, 0x5dc, 0x5e4, 0x5e0, 0x5d4,
-0x5f4, 0x5e6, 0x64, 0x65, 0x2e, 0x66, 0x2e, 0x68, 0x2e, 0x4e, 0x2019, 0x1ee5, 0x74, 0x1ee5, 0x74, 0x1ee5, 0x69, 0x70, 0x2e, 0x72,
-0x2e, 0x6e, 0x2e, 0x5348, 0x524d, 0x49, 0x73, 0x75, 0x6b, 0x6e, 0x20, 0x74, 0x75, 0x66, 0x61, 0x74, 0x6b, 0x61, 0x72, 0x6f,
-0x6f, 0x6e, 0x128, 0x79, 0x61, 0x6b, 0x77, 0x61, 0x6b, 0x79, 0x61, 0xcaa, 0xcc2, 0xcb0, 0xccd, 0xcb5, 0xcbe, 0xcb9, 0xccd, 0xca8,
-0x4b, 0x69, 0x72, 0x6f, 0x6b, 0x6f, 0xc624, 0xc804, 0x41, 0x64, 0x64, 0x75, 0x68, 0x61, 0x42, 0x4e, 0x6d, 0x61, 0x6e, 0xe1,
-0x442, 0x430, 0x4a3, 0x43a, 0x44b, 0x54, 0x4f, 0x4f, 0xe81, 0xec8, 0xead, 0xe99, 0xe97, 0xec8, 0xebd, 0xe87, 0x70, 0x72, 0x69, 0x65,
-0x6b, 0x161, 0x70, 0x75, 0x73, 0x64, 0x69, 0x65, 0x6e, 0x101, 0x6e, 0x74, 0x254, 0x301, 0x6e, 0x67, 0x254, 0x301, 0x70, 0x72,
-0x69, 0x65, 0x161, 0x70, 0x69, 0x65, 0x74, 0x64, 0x6f, 0x70, 0x6f, 0x142, 0x64, 0x6e, 0x6a, 0x61, 0x44, 0x69, 0x6e, 0x64,
-0x61, 0x4f, 0x44, 0x6d, 0x6f, 0x69, 0x65, 0x73, 0x43f, 0x440, 0x435, 0x442, 0x43f, 0x43b, 0x430, 0x434, 0x43d, 0x435, 0x75, 0x74,
-0x75, 0x6b, 0x6f, 0x92d, 0x94b, 0x930, 0x77, 0x69, 0x63, 0x68, 0x69, 0x73, 0x68, 0x75, 0x4d, 0x75, 0x68, 0x69, 0x50, 0x47,
-0x98f, 0x20, 0x98f, 0x9ae, 0x190, 0x6e, 0x6b, 0x61, 0x6b, 0x25b, 0x6e, 0x79, 0xe1, 0x52, 0x168, 0x4af, 0x2e, 0x4e9, 0x2e, 0x63,
-0x6f, 0x6d, 0x6d, 0x65, 0x1c1, 0x67, 0x6f, 0x61, 0x67, 0x61, 0x73, 0x92a, 0x942, 0x930, 0x94d, 0x935, 0x93e, 0x939, 0x94d, 0x928,
-0x6d, 0x62, 0x61, 0x2bc, 0xe1, 0x6d, 0x62, 0x61, 0x2bc, 0x6d, 0x62, 0x61, 0xa78c, 0x6d, 0x62, 0x61, 0xa78c, 0x46, 0x1ecd, 0x20,
-0x6d, 0x1ecd, 0x301, 0x6e, 0x69, 0x6e, 0x69, 0x111, 0x69, 0x74, 0x62, 0x65, 0x61, 0x69, 0x76, 0x65, 0x74, 0x69, 0x62, 0x52,
-0x57, 0x57, 0x44, 0x4d5, 0x43c, 0x431, 0x438, 0x441, 0x431, 0x43e, 0x43d, 0x44b, 0x20, 0x440, 0x430, 0x437, 0x43c, 0x4d5, 0x63a, 0x2e,
-0x645, 0x2e, 0x642, 0x628, 0x644, 0x200c, 0x627, 0x632, 0x638, 0x647, 0x631, 0x64, 0x61, 0x20, 0x6d, 0x61, 0x6e, 0x68, 0xe3, 0xa2a,
-0xa42, 0x2e, 0xa26, 0xa41, 0x2e, 0x6b, 0x61, 0x6e, 0x67, 0x2019, 0x61, 0x6d, 0x61, 0x5a, 0x2e, 0x4d, 0x55, 0x2e, 0x42d, 0x418,
-0x54, 0x65, 0x73, 0x69, 0x72, 0x61, 0x6e, 0x4e, 0x44, 0x4c, 0x77, 0x61, 0x6d, 0x69, 0x6c, 0x61, 0x77, 0x75, 0x1c65, 0x1c6e,
-0x1c5b, 0x1c5f, 0x1c5c, 0x70, 0x72, 0x69, 0x6a, 0x65, 0x20, 0x70, 0x6f, 0x64, 0x6e, 0x65, 0x6d, 0x61, 0x6b, 0x65, 0x6f, 0xa3b8,
-0xa111, 0x635, 0x628, 0x62d, 0x60c, 0x20, 0x645, 0x646, 0x62c, 0x647, 0x646, 0x62f, 0x92e, 0x902, 0x91d, 0x902, 0x926, 0x93f, 0x20, 0x916,
-0x93e, 0x902, 0x20, 0x92a, 0x939, 0x93f, 0x902, 0x930, 0x93f, 0x92f, 0x94b, 0x902, 0xdb4, 0xdd9, 0x2e, 0xdc0, 0x2e, 0x4d, 0x75, 0x6e,
-0x6b, 0x79, 0x6f, 0x47, 0x48, 0x2d5c, 0x2d49, 0x2d3c, 0x2d30, 0x2d61, 0x2d5c, 0x66, 0x6d, 0x61, 0x6d, 0x20, 0x56, 0x6f, 0x72, 0x6d,
-0x69, 0x74, 0x74, 0x61, 0x67, 0x74, 0x69, 0x66, 0x61, 0x77, 0x74, 0x4c, 0x75, 0x6d, 0x61, 0x20, 0x6c, 0x77, 0x61, 0x20,
-0x4b, 0xbae, 0xbc1, 0xbb1, 0xbcd, 0xbaa, 0xb95, 0xbb2, 0xbcd, 0x53, 0x75, 0x62, 0x62, 0x61, 0x61, 0x68, 0x69, 0x54, 0x61, 0x70,
-0x61, 0x72, 0x61, 0x63, 0x68, 0x75, 0xe01, 0xe48, 0xe2d, 0xe19, 0xe40, 0xe17, 0xe35, 0xe48, 0xe22, 0xe07, 0xf66, 0xf94, 0xf0b, 0xf51,
-0xfb2, 0xf7c, 0xf0b, 0x1245, 0x2e, 0x1240, 0x2e, 0x68, 0x65, 0x6e, 0x67, 0x69, 0x68, 0x65, 0x6e, 0x67, 0x69, 0xd6, 0xd6, 0x67,
-0xfc, 0x6e, 0x6f, 0x72, 0x74, 0x61, 0x64, 0x61, 0x6e, 0x20, 0xf6, 0x148, 0x434, 0x43f, 0x686, 0x6c8, 0x634, 0x62a, 0x649, 0x646,
-0x20, 0x628, 0x6c7, 0x631, 0x6c7, 0x646, 0x422, 0x41e, 0x53, 0x41, 0x79, 0x62, 0x6b, 0x69, 0x25b, 0x6d, 0x25b, 0x301, 0x25b, 0x6d,
-0x5e4, 0x5bf, 0x5d0, 0x5b7, 0x5e8, 0x5de, 0x5d9, 0x5d8, 0x5d0, 0x5b8, 0x5d2, 0xc0, 0xe1, 0x72, 0x1ecd, 0x300, 0xc0, 0xe1, 0x72, 0x254,
-0x300
+static constexpr char16_t am_data[] = {
+0x41, 0x4d, 0x76, 0x6d, 0x2e, 0x61, 0x2e, 0x67, 0x41, 0x4e, 0x65, 0x20,
+0x70, 0x61, 0x72, 0x61, 0x64, 0x69, 0x74, 0x65, 0x73, 0x1325, 0x12cb, 0x1275,
+0x635, 0x9aa, 0x9c2, 0x9f0, 0x9cd, 0x9ac, 0x9be, 0x9b9, 0x9cd, 0x9a8, 0x64, 0x65,
+0x20, 0x6c, 0x61, 0x20, 0x6d, 0x61, 0xf1, 0x61, 0x6e, 0x61, 0x69, 0x63,
+0x68, 0x65, 0x68, 0x65, 0x61, 0x76, 0x6f, 0x410, 0x41c, 0x73, 0xe1, 0x72,
+0xfa, 0x77, 0xe1, 0x49, 0x20, 0x62, 0x69, 0x6b, 0x25b, 0x302, 0x67, 0x6c,
+0xe0, 0x75, 0x6c, 0x75, 0x63, 0x68, 0x65, 0x6c, 0x6f, 0x70, 0x61, 0x6d,
+0x69, 0x6c, 0x61, 0x75, 0x92d, 0x94b, 0x930, 0x92b, 0x941, 0x902, 0x70, 0x72,
+0x69, 0x6a, 0x65, 0x70, 0x6f, 0x64, 0x6e, 0x65, 0x43f, 0x440, 0x438, 0x458,
+0x435, 0x20, 0x43f, 0x43e, 0x434, 0x43d, 0x435, 0x41, 0x2e, 0x4d, 0x2e, 0x43f,
+0x440, 0x2e, 0x43e, 0x431, 0x2e, 0x1014, 0x1036, 0x1014, 0x1000, 0x103a, 0x4e0a, 0x5348,
+0x61, 0x2e, 0xa0, 0x6d, 0x2e, 0x5a, 0x64, 0x61, 0x74, 0x20, 0x61, 0x7a,
+0x61, 0x6c, 0x628, 0x2e, 0x646, 0x13cc, 0x13be, 0x13b4, 0x55, 0x68, 0x72, 0x20,
+0x76, 0xf6, 0x72, 0x6d, 0x69, 0x64, 0x64, 0x61, 0x61, 0x63, 0x68, 0x73,
+0x61, 0x2e, 0x6d, 0x2e, 0x64, 0x6f, 0x70, 0x2e, 0x938, 0x935, 0x947, 0x930,
+0x69, 0x64, 0x69, 0x253, 0x61, 0xf66, 0xf94, 0xf0b, 0xf46, 0xf0b, 0x4b, 0x49,
+0xd801, 0xdc08, 0xd801, 0xdc23, 0xd801, 0xdc68, 0xd801, 0xdc65, 0x61, 0x74, 0x6d, 0x14b,
+0x64, 0x69, 0x6b, 0xed, 0x6b, 0xed, 0x72, 0xed, 0x67, 0x61, 0x70, 0x2e,
+0x6d, 0x61, 0x74, 0x69, 0x6e, 0x73, 0x75, 0x62, 0x61, 0x6b, 0x61, 0xd83a,
+0xdd00, 0xd83a, 0xdd0e, 0x3c0, 0x2e, 0x3bc, 0x2e, 0x4d, 0x61, 0x6d, 0x62, 0x69,
+0x61, 0x53, 0x61, 0x66, 0x69, 0x79, 0x61, 0x5dc, 0x5e4, 0x5e0, 0x5d4, 0x5f4,
+0x5e6, 0x64, 0x65, 0x2e, 0x66, 0x2e, 0x68, 0x2e, 0x4e, 0x2019, 0x1ee5, 0x74,
+0x1ee5, 0x74, 0x1ee5, 0x69, 0x70, 0x2e, 0x61, 0x6e, 0x74, 0x65, 0x20, 0x6d,
+0x69, 0x64, 0xed, 0x72, 0x2e, 0x6e, 0x2e, 0x5348, 0x524d, 0x49, 0x73, 0x75,
+0x6b, 0x6e, 0x20, 0x74, 0x75, 0x66, 0x61, 0x74, 0x6b, 0x61, 0x72, 0x6f,
+0x6f, 0x6e, 0x128, 0x79, 0x61, 0x6b, 0x77, 0x61, 0x6b, 0x79, 0x61, 0xcaa,
+0xcc2, 0xcb0, 0xccd, 0xcb5, 0xcbe, 0xcb9, 0xccd, 0xca8, 0x627, 0x6d2, 0x20, 0x627,
+0x6cc, 0x645, 0x92f, 0x947, 0x20, 0x90f, 0x92e, 0x4b, 0x69, 0x72, 0x6f, 0x6b,
+0x6f, 0x938, 0x915, 0x93e, 0x933, 0xc624, 0xc804, 0x41, 0x64, 0x64, 0x75, 0x68,
+0x61, 0x42, 0x4e, 0x6d, 0x61, 0x6e, 0xe1, 0x442, 0x430, 0x4a3, 0x43a, 0x44b,
+0x54, 0x4f, 0x4f, 0xe81, 0xec8, 0xead, 0xe99, 0xe97, 0xec8, 0xebd, 0xe87, 0x70,
+0x72, 0x69, 0x65, 0x6b, 0x161, 0x70, 0x75, 0x73, 0x64, 0x69, 0x65, 0x6e,
+0x101, 0x6e, 0x74, 0x254, 0x301, 0x6e, 0x67, 0x254, 0x301, 0x70, 0x72, 0x69,
+0x65, 0x161, 0x70, 0x69, 0x65, 0x74, 0x64, 0x6f, 0x70, 0x6f, 0x142, 0x64,
+0x6e, 0x6a, 0x61, 0x44, 0x69, 0x6e, 0x64, 0x61, 0x4f, 0x44, 0x6d, 0x6f,
+0x69, 0x65, 0x73, 0x43f, 0x440, 0x435, 0x442, 0x43f, 0x43b, 0x2e, 0x75, 0x74,
+0x75, 0x6b, 0x6f, 0x77, 0x69, 0x63, 0x68, 0x69, 0x73, 0x68, 0x75, 0x4d,
+0x75, 0x68, 0x69, 0x50, 0x47, 0x98f, 0x20, 0x98f, 0x9ae, 0x190, 0x6e, 0x6b,
+0x61, 0x6b, 0x25b, 0x6e, 0x79, 0xe1, 0x52, 0x168, 0x4af, 0x2e, 0x4e9, 0x2e,
+0x1826, 0x1802, 0x20, 0x1825, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x1c1, 0x67, 0x6f,
+0x61, 0x67, 0x61, 0x73, 0x92a, 0x942, 0x930, 0x94d, 0x935, 0x93e, 0x939, 0x94d,
+0x928, 0x6d, 0x62, 0x61, 0x2bc, 0xe1, 0x6d, 0x62, 0x61, 0x2bc, 0x6d, 0x62,
+0x61, 0xa78c, 0x6d, 0x62, 0x61, 0xa78c, 0x46, 0x1ecd, 0x20, 0x6d, 0x1ecd, 0x301,
+0x6e, 0x69, 0x6e, 0x7db, 0x69, 0x111, 0x69, 0x74, 0x62, 0x65, 0x61, 0x69,
+0x76, 0x65, 0x74, 0x69, 0x62, 0x66, 0x2e, 0x6d, 0x2e, 0x52, 0x57, 0x57,
+0x44, 0x4d5, 0x43c, 0x431, 0x438, 0x441, 0x431, 0x43e, 0x43d, 0x44b, 0x20, 0x440,
+0x430, 0x437, 0x43c, 0x4d5, 0x63a, 0x2e, 0x645, 0x2e, 0x642, 0x628, 0x644, 0x200c,
+0x627, 0x632, 0x638, 0x647, 0x631, 0x64, 0x61, 0x20, 0x6d, 0x61, 0x6e, 0x68,
+0xe3, 0x61, 0x6e, 0x6b, 0x73, 0x74, 0x101, 0x69, 0x6e, 0x61, 0x6e, 0xa2a,
+0xa42, 0x2e, 0xa26, 0xa41, 0x2e, 0x6b, 0x61, 0x6e, 0x67, 0x2019, 0x61, 0x6d,
+0x61, 0x5a, 0x2e, 0x4d, 0x55, 0x2e, 0x42d, 0x418, 0x54, 0x65, 0x73, 0x69,
+0x72, 0x61, 0x6e, 0x4e, 0x44, 0x4c, 0x77, 0x61, 0x6d, 0x69, 0x6c, 0x61,
+0x77, 0x75, 0x1c65, 0x1c6e, 0x1c5b, 0x1c5f, 0x1c5c, 0x70, 0x72, 0x69, 0x6a, 0x65,
+0x20, 0x70, 0x6f, 0x64, 0x6e, 0x65, 0x6d, 0x61, 0x6b, 0x65, 0x6f, 0xa3b8,
+0xa111, 0x64, 0x6f, 0x20, 0x70, 0x6f, 0x142, 0x65, 0x64, 0x6e, 0x69, 0x14f,
+0x635, 0x628, 0x62d, 0x60c, 0x20, 0x645, 0x646, 0x62c, 0x647, 0x646, 0x62f, 0x938,
+0x941, 0x92c, 0x941, 0x939, 0x20, 0x91c, 0x93e, 0xdb4, 0xdd9, 0x2e, 0xdc0, 0x2e,
+0x4d, 0x75, 0x6e, 0x6b, 0x79, 0x6f, 0x47, 0x48, 0x2d5c, 0x2d49, 0x2d3c, 0x2d30,
+0x2d61, 0x2d5c, 0x66, 0x6d, 0x61, 0x6d, 0x20, 0x56, 0x6f, 0x72, 0x6d, 0x69,
+0x74, 0x74, 0x61, 0x67, 0x70f, 0x729, 0x71b, 0x200c, 0x74, 0x69, 0x66, 0x61,
+0x77, 0x74, 0x4c, 0x75, 0x6d, 0x61, 0x20, 0x6c, 0x77, 0x61, 0x20, 0x4b,
+0x53, 0x75, 0x62, 0x62, 0x61, 0x61, 0x68, 0x69, 0x54, 0x61, 0x70, 0x61,
+0x72, 0x61, 0x63, 0x68, 0x75, 0xe01, 0xe48, 0xe2d, 0xe19, 0xe40, 0xe17, 0xe35,
+0xe48, 0xe22, 0xe07, 0xf66, 0xf94, 0xf0b, 0xf51, 0xfb2, 0xf7c, 0xf0b, 0x1245, 0x2e,
+0x1240, 0x2e, 0x68, 0x65, 0x6e, 0x67, 0x69, 0x68, 0x65, 0x6e, 0x67, 0x69,
+0xd6, 0xd6, 0x67, 0xfc, 0x6e, 0x6f, 0x72, 0x74, 0x61, 0x64, 0x61, 0x6e,
+0x20, 0xf6, 0x148, 0x434, 0x43f, 0x686, 0x6c8, 0x634, 0x62a, 0x649, 0x646, 0x20,
+0x628, 0x6c7, 0x631, 0x6c7, 0x646, 0x422, 0x41e, 0x53, 0x41, 0x79, 0x62, 0x6b,
+0x69, 0x25b, 0x6d, 0x25b, 0x301, 0x25b, 0x6d, 0x5e4, 0x5bf, 0x5d0, 0x5b7, 0x5e8,
+0x5de, 0x5d9, 0x5d8, 0x5d0, 0x5b8, 0x5d2, 0xc0, 0xe1, 0x72, 0x1ecd, 0x300, 0xc0,
+0xe1, 0x72, 0x254, 0x300, 0x62, 0x61, 0x6e, 0x68, 0x61, 0x65, 0x74, 0x924,
+0x921, 0x915, 0x947, 0x938, 0x92c, 0x947, 0x930, 0x947, 0x70, 0x69, 0x20, 0x6f,
+0x70, 0x65, 0x6e, 0x20, 0x73, 0x75, 0x6e, 0x6f, 0x28a, 0x73, 0x68, 0x69,
+0x6c, 0xe8, 0x20, 0x6b, 0x28a, 0x62, 0x6f, 0x256, 0x75, 0x92d, 0x94d, 0x92f,
+0x93e, 0x917, 0x93e
};
-static const char16_t pm_data[] = {
-0x50, 0x4d, 0x6e, 0x6d, 0x2e, 0x61, 0x2e, 0x6b, 0x45, 0x57, 0x65, 0x20, 0x70, 0x61, 0x73, 0x64, 0x69, 0x74, 0x65, 0x73,
-0x12a8, 0x1230, 0x12d3, 0x1275, 0x645, 0x985, 0x9aa, 0x9f0, 0x9be, 0x9b9, 0x9cd, 0x9a8, 0x64, 0x65, 0x20, 0x6c, 0x61, 0x20, 0x74, 0x61,
-0x72, 0x64, 0x65, 0x69, 0x63, 0x68, 0x61, 0x6d, 0x74, 0x68, 0x69, 0x41f, 0x41c, 0x63, 0x25b, 0x25b, 0x301, 0x6e, 0x6b, 0x6f,
-0x49, 0x20, 0x253, 0x75, 0x67, 0x61, 0x6a, 0x254, 0x70, 0x61, 0x6b, 0x61, 0x73, 0x75, 0x62, 0x61, 0x70, 0x61, 0x6d, 0x75,
-0x6e, 0x79, 0x69, 0x92c, 0x947, 0x932, 0x93e, 0x938, 0x947, 0x70, 0x6f, 0x70, 0x6f, 0x64, 0x6e, 0x65, 0x43f, 0x43e, 0x441, 0x43b,
-0x438, 0x458, 0x435, 0x20, 0x43f, 0x43e, 0x434, 0x43d, 0x435, 0x47, 0x2e, 0x4d, 0x2e, 0x441, 0x43b, 0x2e, 0x43e, 0x431, 0x2e, 0x100a,
-0x1014, 0x1031, 0x4e0b, 0x5348, 0x70, 0x2e, 0xa0, 0x6d, 0x2e, 0x1e0c, 0x65, 0x66, 0x66, 0x69, 0x72, 0x20, 0x61, 0x7a, 0x61, 0x62f,
-0x2e, 0x646, 0x13d2, 0x13af, 0x13f1, 0x13a2, 0x13d7, 0x13e2, 0x55, 0x68, 0x72, 0x20, 0x6e, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61,
-0x61, 0x63, 0x68, 0x73, 0x70, 0x2e, 0x6d, 0x2e, 0x6f, 0x64, 0x70, 0x2e, 0x92c, 0x93e, 0x926, 0x20, 0x926, 0x92a, 0x948, 0x939,
-0x930, 0x65, 0x62, 0x79, 0xe1, 0x6d, 0x75, 0xf55, 0xfb1, 0xf72, 0xf0b, 0xf46, 0xf0b, 0x55, 0x54, 0x70, 0x6d, 0x70, 0x74, 0x6d,
-0x263, 0x65, 0x74, 0x72, 0x254, 0x6e, 0x67, 0x259, 0x67, 0xf3, 0x67, 0x259, 0x6c, 0x65, 0x69, 0x70, 0x2e, 0x73, 0x6f, 0x69,
-0x72, 0x6b, 0x69, 0x6b, 0x69, 0x69, 0x257, 0x65, 0xd83a, 0xdd07, 0xd83a, 0xdd0e, 0x3bc, 0x2e, 0x3bc, 0x2e, 0x4d, 0x6f, 0x67, 0x59,
-0x61, 0x6d, 0x6d, 0x61, 0x5d0, 0x5d7, 0x5d4, 0x5f4, 0x5e6, 0x64, 0x75, 0x2e, 0x65, 0x2e, 0x68, 0x2e, 0x4e, 0x2019, 0x61, 0x62,
-0x61, 0x6c, 0x69, 0x65, 0x70, 0x2e, 0x69, 0x2e, 0x6e, 0x2e, 0x5348, 0x5f8c, 0x57, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x20, 0x74,
-0x6d, 0x65, 0x64, 0x64, 0x69, 0x74, 0x6b, 0x6f, 0x6f, 0x73, 0x6b, 0x6f, 0x6c, 0x69, 0x6e, 0x79, 0x128, 0x79, 0x61, 0x77,
-0x129, 0x6f, 0x6f, 0xc85, 0xcaa, 0xcb0, 0xcbe, 0xcb9, 0xccd, 0xca8, 0x48, 0x77, 0x61, 0x129, 0x2d, 0x69, 0x6e, 0x129, 0xc624, 0xd6c4,
-0x41, 0x6c, 0x75, 0x75, 0x6c, 0x61, 0x50, 0x4e, 0x6b, 0x75, 0x67, 0xfa, 0x442, 0x4af, 0x448, 0x442, 0x4e9, 0x43d, 0x20, 0x43a,
-0x438, 0x439, 0x438, 0x43d, 0x43a, 0x438, 0x4d, 0x55, 0x55, 0xeab, 0xebc, 0xeb1, 0xe87, 0xe97, 0xec8, 0xebd, 0xe87, 0x70, 0x113, 0x63,
-0x70, 0x75, 0x73, 0x64, 0x69, 0x65, 0x6e, 0x101, 0x6d, 0x70, 0xf3, 0x6b, 0x77, 0x61, 0x70, 0x6f, 0x70, 0x69, 0x65, 0x74,
-0x77, 0xf3, 0x74, 0x70, 0x6f, 0x142, 0x64, 0x6e, 0x6a, 0x61, 0x44, 0x69, 0x6c, 0x6f, 0x6c, 0x6f, 0x4f, 0x54, 0x6e, 0x6f,
-0x6d, 0xeb, 0x74, 0x74, 0x65, 0x73, 0x43f, 0x43e, 0x43f, 0x43b, 0x430, 0x434, 0x43d, 0x435, 0x6b, 0x79, 0x69, 0x75, 0x6b, 0x6f,
-0x6e, 0x79, 0x69, 0x938, 0x93e, 0x902, 0x91d, 0x6d, 0x63, 0x68, 0x6f, 0x63, 0x68, 0x69, 0x6c, 0x2019, 0x6c, 0x43, 0x68, 0x69,
-0x6c, 0x6f, 0x50, 0x54, 0x47, 0x9aa, 0x9bf, 0x20, 0x98f, 0x9ae, 0x190, 0x6e, 0x64, 0xe1, 0x6d, 0xe2, 0x168, 0x47, 0x4af, 0x2e,
-0x445, 0x2e, 0x6c, 0x69, 0x6c, 0x6c, 0x69, 0x1c3, 0x75, 0x69, 0x61, 0x73, 0x905, 0x92a, 0x930, 0x93e, 0x939, 0x94d, 0x928, 0x6e,
-0x63, 0x77, 0xf2, 0x6e, 0x7a, 0xe9, 0x6d, 0x14b, 0x6b, 0x61, 0x20, 0x6d, 0x62, 0x254, 0x301, 0x74, 0x20, 0x6e, 0x6a, 0x69,
-0x46, 0x1ecd, 0x20, 0xed, 0x76, 0x6e, 0x69, 0x6e, 0x65, 0x61, 0x68, 0x6b, 0x65, 0x74, 0x62, 0x65, 0x61, 0x69, 0x76, 0x65,
-0x74, 0x54, 0x14a, 0x57, 0x42, 0x4d5, 0x43c, 0x431, 0x438, 0x441, 0x431, 0x43e, 0x43d, 0x44b, 0x20, 0x444, 0x4d5, 0x441, 0x442, 0x4d5,
-0x63a, 0x2e, 0x648, 0x2e, 0x628, 0x639, 0x62f, 0x627, 0x632, 0x638, 0x647, 0x631, 0x64, 0x61, 0x20, 0x74, 0x61, 0x72, 0x64, 0x65,
-0xa2c, 0xa3e, 0x2e, 0xa26, 0xa41, 0x2e, 0x6b, 0x69, 0x6e, 0x67, 0x6f, 0x74, 0x6f, 0x5a, 0x2e, 0x4d, 0x57, 0x2e, 0x42d, 0x41a,
-0x54, 0x65, 0x69, 0x70, 0x61, 0x4c, 0x4b, 0x50, 0x61, 0x73, 0x68, 0x61, 0x6d, 0x69, 0x68, 0x65, 0x1c67, 0x1c64, 0x1c6b, 0x1c5f,
-0x1c79, 0x43f, 0x43e, 0x20, 0x43f, 0x43e, 0x434, 0x43d, 0x435, 0x70, 0x6f, 0x20, 0x70, 0x6f, 0x64, 0x6e, 0x65, 0x6e, 0x79, 0x69,
-0x61, 0x67, 0x68, 0x75, 0x6f, 0xa06f, 0xa2d2, 0x645, 0x646, 0x62c, 0x647, 0x646, 0x62f, 0x60c, 0x20, 0x634, 0x627, 0x645, 0x92e, 0x902,
-0x91d, 0x902, 0x926, 0x93f, 0x20, 0x916, 0x93e, 0x902, 0x20, 0x92a, 0x94b, 0x907, 0xdb4, 0x2e, 0xdc0, 0x2e, 0x70, 0x6f, 0x70, 0x2e,
-0x45, 0x69, 0x67, 0x75, 0x6c, 0x6f, 0x47, 0x44, 0x2d5c, 0x2d30, 0x2d37, 0x2d33, 0x2d33, 0x2d6f, 0x2d30, 0x2d5c, 0x65, 0x6d, 0x61, 0x6d,
-0x20, 0x4e, 0x61, 0x6d, 0x69, 0x74, 0x74, 0x61, 0x67, 0x74, 0x61, 0x64, 0x67, 0x67, 0x2b7, 0x61, 0x74, 0x6c, 0x75, 0x6d,
-0x61, 0x20, 0x6c, 0x77, 0x61, 0x20, 0x70, 0xbaa, 0xbbf, 0xbb1, 0xbcd, 0xbaa, 0xb95, 0xbb2, 0xbcd, 0x5a, 0x61, 0x61, 0x72, 0x69,
-0x6b, 0x61, 0x79, 0x20, 0x62, 0x45, 0x62, 0x6f, 0x6e, 0x67, 0x69, 0xe2b, 0xe25, 0xe31, 0xe07, 0xe40, 0xe17, 0xe35, 0xe48, 0xe22,
-0xe07, 0xf55, 0xfb1, 0xf72, 0xf0b, 0xf51, 0xfb2, 0xf7c, 0xf0b, 0x12f5, 0x2e, 0x1240, 0x2e, 0x65, 0x66, 0x69, 0x61, 0x66, 0x69, 0xd6,
-0x53, 0x67, 0xfc, 0x6e, 0x6f, 0x72, 0x74, 0x61, 0x64, 0x61, 0x6e, 0x20, 0x73, 0x6f, 0x148, 0x43f, 0x43f, 0x70, 0x6f, 0x70,
-0x6f, 0x142, 0x64, 0x6e, 0x6a, 0x75, 0x686, 0x6c8, 0x634, 0x62a, 0x649, 0x646, 0x20, 0x643, 0x6d0, 0x64a, 0x649, 0x646, 0x54, 0x4b,
-0x422, 0x41a, 0x43, 0x48, 0x79, 0x68, 0x4e, 0x67, 0x6f, 0x6b, 0x69, 0x73, 0x25b, 0x301, 0x6e, 0x64, 0x25b, 0x5e0, 0x5d0, 0x5b8,
-0x5db, 0x5de, 0x5d9, 0x5d8, 0x5d0, 0x5b8, 0x5d2, 0x1ecc, 0x300, 0x73, 0xe1, 0x6e, 0x186, 0x300, 0x73, 0xe1, 0x6e
+static constexpr char16_t pm_data[] = {
+0x50, 0x4d, 0x6e, 0x6d, 0x2e, 0x61, 0x2e, 0x6b, 0x45, 0x57, 0x65, 0x20,
+0x70, 0x61, 0x73, 0x64, 0x69, 0x74, 0x65, 0x73, 0x12a8, 0x1230, 0x12d3, 0x1275,
+0x645, 0x985, 0x9aa, 0x9f0, 0x9be, 0x9b9, 0x9cd, 0x9a8, 0x64, 0x65, 0x20, 0x6c,
+0x61, 0x20, 0x74, 0x61, 0x72, 0x64, 0x65, 0x69, 0x63, 0x68, 0x61, 0x6d,
+0x74, 0x68, 0x69, 0x41f, 0x41c, 0x63, 0x25b, 0x25b, 0x301, 0x6e, 0x6b, 0x6f,
+0x49, 0x20, 0x253, 0x75, 0x67, 0x61, 0x6a, 0x254, 0x70, 0x61, 0x6b, 0x61,
+0x73, 0x75, 0x62, 0x61, 0x70, 0x61, 0x6d, 0x75, 0x6e, 0x79, 0x69, 0x938,
+0x93e, 0x902, 0x91d, 0x92c, 0x947, 0x932, 0x93e, 0x938, 0x947, 0x70, 0x6f, 0x70,
+0x6f, 0x64, 0x6e, 0x65, 0x43f, 0x43e, 0x441, 0x43b, 0x438, 0x458, 0x435, 0x20,
+0x43f, 0x43e, 0x434, 0x43d, 0x435, 0x47, 0x2e, 0x4d, 0x2e, 0x441, 0x43b, 0x2e,
+0x43e, 0x431, 0x2e, 0x100a, 0x1014, 0x1031, 0x4e0b, 0x5348, 0x70, 0x2e, 0xa0, 0x6d,
+0x2e, 0x1e0c, 0x65, 0x66, 0x66, 0x69, 0x72, 0x20, 0x61, 0x7a, 0x61, 0x62f,
+0x2e, 0x646, 0x13d2, 0x13af, 0x13f1, 0x13a2, 0x13d7, 0x13e2, 0x55, 0x68, 0x72, 0x20,
+0x6e, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x61, 0x63, 0x68, 0x73,
+0x70, 0x2e, 0x6d, 0x2e, 0x6f, 0x64, 0x70, 0x2e, 0x926, 0x92a, 0x948, 0x939,
+0x930, 0x20, 0x92c, 0x93e, 0x926, 0x65, 0x62, 0x79, 0xe1, 0x6d, 0x75, 0xf55,
+0xfb1, 0xf72, 0xf0b, 0xf46, 0xf0b, 0x55, 0x54, 0xd801, 0xdc11, 0xd801, 0xdc23, 0x70,
+0x6d, 0xd801, 0xdc50, 0xd801, 0xdc65, 0x70, 0x74, 0x6d, 0x263, 0x65, 0x74, 0x72,
+0x254, 0x6e, 0x67, 0x259, 0x67, 0xf3, 0x67, 0x259, 0x6c, 0x65, 0x69, 0x70,
+0x2e, 0x73, 0x6f, 0x69, 0x72, 0x6b, 0x69, 0x6b, 0x69, 0x69, 0x257, 0x65,
+0xd83a, 0xdd07, 0xd83a, 0xdd0e, 0x3bc, 0x2e, 0x3bc, 0x2e, 0x4d, 0x6f, 0x67, 0x59,
+0x61, 0x6d, 0x6d, 0x61, 0x5d0, 0x5d7, 0x5d4, 0x5f4, 0x5e6, 0x64, 0x75, 0x2e,
+0x65, 0x2e, 0x68, 0x2e, 0x4e, 0x2019, 0x61, 0x62, 0x61, 0x6c, 0x69, 0x65,
+0x70, 0x2e, 0x70, 0x6f, 0x73, 0x20, 0x6d, 0x69, 0x64, 0xed, 0x69, 0x2e,
+0x6e, 0x2e, 0x5348, 0x5f8c, 0x57, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x20, 0x74,
+0x6d, 0x65, 0x64, 0x64, 0x69, 0x74, 0x6b, 0x6f, 0x6f, 0x73, 0x6b, 0x6f,
+0x6c, 0x69, 0x6e, 0x79, 0x128, 0x79, 0x61, 0x77, 0x129, 0x6f, 0x6f, 0xc85,
+0xcaa, 0xcb0, 0xcbe, 0xcb9, 0xccd, 0xca8, 0x67e, 0x6cc, 0x20, 0x627, 0x6cc, 0x645,
+0x92a, 0x940, 0x20, 0x90f, 0x92e, 0x48, 0x77, 0x61, 0x129, 0x2d, 0x69, 0x6e,
+0x129, 0x938, 0x93e, 0x902, 0x91c, 0xc624, 0xd6c4, 0x41, 0x6c, 0x75, 0x75, 0x6c,
+0x61, 0x50, 0x4e, 0x6b, 0x75, 0x67, 0xfa, 0x442, 0x4af, 0x448, 0x442, 0x4e9,
+0x43d, 0x20, 0x43a, 0x438, 0x439, 0x438, 0x43d, 0x43a, 0x438, 0x4d, 0x55, 0x55,
+0xeab, 0xebc, 0xeb1, 0xe87, 0xe97, 0xec8, 0xebd, 0xe87, 0x70, 0x113, 0x63, 0x70,
+0x75, 0x73, 0x64, 0x69, 0x65, 0x6e, 0x101, 0x6d, 0x70, 0xf3, 0x6b, 0x77,
+0x61, 0x70, 0x6f, 0x70, 0x69, 0x65, 0x74, 0x77, 0xf3, 0x74, 0x70, 0x6f,
+0x142, 0x64, 0x6e, 0x6a, 0x61, 0x44, 0x69, 0x6c, 0x6f, 0x6c, 0x6f, 0x4f,
+0x54, 0x6e, 0x6f, 0x6d, 0xeb, 0x74, 0x74, 0x65, 0x73, 0x43f, 0x43e, 0x43f,
+0x43b, 0x2e, 0x6b, 0x79, 0x69, 0x75, 0x6b, 0x6f, 0x6e, 0x79, 0x69, 0x6d,
+0x63, 0x68, 0x6f, 0x63, 0x68, 0x69, 0x6c, 0x2019, 0x6c, 0x43, 0x68, 0x69,
+0x6c, 0x6f, 0x50, 0x54, 0x47, 0x9aa, 0x9bf, 0x20, 0x98f, 0x9ae, 0x190, 0x6e,
+0x64, 0xe1, 0x6d, 0xe2, 0x168, 0x47, 0x4af, 0x2e, 0x445, 0x2e, 0x1826, 0x1802,
+0x20, 0x182c, 0x1823, 0x6c, 0x69, 0x6c, 0x6c, 0x69, 0x1c3, 0x75, 0x69, 0x61,
+0x73, 0x905, 0x92a, 0x930, 0x93e, 0x939, 0x94d, 0x928, 0x6e, 0x63, 0x77, 0xf2,
+0x6e, 0x7a, 0xe9, 0x6d, 0x14b, 0x6b, 0x61, 0x20, 0x6d, 0x62, 0x254, 0x301,
+0x74, 0x20, 0x6e, 0x6a, 0x69, 0x46, 0x1ecd, 0x20, 0xed, 0x76, 0x6e, 0x69,
+0x6e, 0x7e5, 0x65, 0x61, 0x68, 0x6b, 0x65, 0x74, 0x62, 0x65, 0x61, 0x69,
+0x76, 0x65, 0x74, 0x65, 0x2e, 0x6d, 0x2e, 0x54, 0x14a, 0x57, 0x42, 0x4d5,
+0x43c, 0x431, 0x438, 0x441, 0x431, 0x43e, 0x43d, 0x44b, 0x20, 0x444, 0x4d5, 0x441,
+0x442, 0x4d5, 0x63a, 0x2e, 0x648, 0x2e, 0x628, 0x639, 0x62f, 0x627, 0x632, 0x638,
+0x647, 0x631, 0x64, 0x61, 0x20, 0x74, 0x61, 0x72, 0x64, 0x65, 0x70, 0x61,
+0x20, 0x70, 0x75, 0x73, 0x73, 0x69, 0x64, 0x65, 0x69, 0x6e, 0x61, 0x6e,
+0xa2c, 0xa3e, 0x2e, 0xa26, 0xa41, 0x2e, 0x6b, 0x69, 0x6e, 0x67, 0x6f, 0x74,
+0x6f, 0x5a, 0x2e, 0x4d, 0x57, 0x2e, 0x42d, 0x41a, 0x54, 0x65, 0x69, 0x70,
+0x61, 0x4c, 0x4b, 0x50, 0x61, 0x73, 0x68, 0x61, 0x6d, 0x69, 0x68, 0x65,
+0x1c67, 0x1c64, 0x1c6b, 0x1c5f, 0x1c79, 0x43f, 0x43e, 0x20, 0x43f, 0x43e, 0x434, 0x43d,
+0x435, 0x70, 0x6f, 0x20, 0x70, 0x6f, 0x64, 0x6e, 0x65, 0x6e, 0x79, 0x69,
+0x61, 0x67, 0x68, 0x75, 0x6f, 0xa06f, 0xa2d2, 0x70, 0x6f, 0x20, 0x70, 0x6f,
+0x142, 0x65, 0x64, 0x6e, 0x69, 0x75, 0x645, 0x646, 0x62c, 0x647, 0x646, 0x62f,
+0x60c, 0x20, 0x634, 0x627, 0x645, 0x936, 0x93e, 0x92e, 0x20, 0x91c, 0x93e, 0xdb4,
+0x2e, 0xdc0, 0x2e, 0x70, 0x6f, 0x70, 0x2e, 0x45, 0x69, 0x67, 0x75, 0x6c,
+0x6f, 0x47, 0x44, 0x2d5c, 0x2d30, 0x2d37, 0x2d33, 0x2d33, 0x2d6f, 0x2d30, 0x2d5c, 0x65,
+0x6d, 0x61, 0x6d, 0x20, 0x4e, 0x61, 0x6d, 0x69, 0x74, 0x74, 0x61, 0x67,
+0x70f, 0x712, 0x71b, 0x200c, 0x74, 0x61, 0x64, 0x67, 0x67, 0x2b7, 0x61, 0x74,
+0x6c, 0x75, 0x6d, 0x61, 0x20, 0x6c, 0x77, 0x61, 0x20, 0x70, 0xbaa, 0xbbf,
+0xbb1, 0xbcd, 0xbaa, 0xb95, 0xbb2, 0xbcd, 0x5a, 0x61, 0x61, 0x72, 0x69, 0x6b,
+0x61, 0x79, 0x20, 0x62, 0x45, 0x62, 0x6f, 0x6e, 0x67, 0x69, 0xe2b, 0xe25,
+0xe31, 0xe07, 0xe40, 0xe17, 0xe35, 0xe48, 0xe22, 0xe07, 0xf55, 0xfb1, 0xf72, 0xf0b,
+0xf51, 0xfb2, 0xf7c, 0xf0b, 0x12f5, 0x2e, 0x1240, 0x2e, 0x65, 0x66, 0x69, 0x61,
+0x66, 0x69, 0xd6, 0x53, 0x67, 0xfc, 0x6e, 0x6f, 0x72, 0x74, 0x61, 0x64,
+0x61, 0x6e, 0x20, 0x73, 0x6f, 0x148, 0x43f, 0x43f, 0x70, 0x6f, 0x70, 0x6f,
+0x142, 0x64, 0x6e, 0x6a, 0x75, 0x686, 0x6c8, 0x634, 0x62a, 0x649, 0x646, 0x20,
+0x643, 0x6d0, 0x64a, 0x649, 0x646, 0x54, 0x4b, 0x422, 0x41a, 0x43, 0x48, 0x79,
+0x68, 0x4e, 0x67, 0x6f, 0x6b, 0x69, 0x73, 0x25b, 0x301, 0x6e, 0x64, 0x25b,
+0x5e0, 0x5d0, 0x5b8, 0x5db, 0x5de, 0x5d9, 0x5d8, 0x5d0, 0x5b8, 0x5d2, 0x1ecc, 0x300,
+0x73, 0xe1, 0x6e, 0x186, 0x300, 0x73, 0xe1, 0x6e, 0x62, 0x61, 0x6e, 0x72,
+0x69, 0x6e, 0x67, 0x7a, 0x67, 0x76, 0x61, 0x71, 0x938, 0x93e, 0x902, 0x92e,
+0x70, 0x69, 0x20, 0x70, 0x69, 0x6e, 0x69, 0x20, 0x73, 0x75, 0x6e, 0x6f,
+0x28a, 0x73, 0x68, 0x69, 0x6c, 0xe8, 0x20, 0x6b, 0x28a, 0x73, 0x61, 0x73,
+0x28a, 0x926, 0x92a, 0x947, 0x939, 0x930, 0x93e, 0x2f, 0x938, 0x902, 0x91c, 0x93e
};
-static const char16_t currency_symbol_data[] = {
-0x20be, 0x52, 0x24, 0x46, 0x43, 0x46, 0x41, 0x47, 0x48, 0x20b5, 0x4c, 0x65, 0x6b, 0xeb, 0x20ac, 0x64, 0x65, 0x6e, 0x1265, 0x122d,
-0x62c, 0x2e, 0x645, 0x2e, 0x200f, 0x62f, 0x2e, 0x62c, 0x2e, 0x200f, 0x62f, 0x2e, 0x628, 0x2e, 0x200f, 0x46, 0x64, 0x6a, 0x4e, 0x66,
-0x6b, 0x62f, 0x2e, 0x639, 0x2e, 0x200f, 0x20aa, 0x62f, 0x2e, 0x623, 0x2e, 0x200f, 0x62f, 0x2e, 0x643, 0x2e, 0x200f, 0x644, 0x2e, 0x644,
-0x2e, 0x200f, 0x62f, 0x2e, 0x644, 0x2e, 0x200f, 0x623, 0x2e, 0x645, 0x2e, 0x62f, 0x2e, 0x645, 0x2e, 0x200f, 0x631, 0x2e, 0x639, 0x2e,
-0x200f, 0x631, 0x2e, 0x642, 0x2e, 0x200f, 0x631, 0x2e, 0x633, 0x2e, 0x200f, 0x53, 0xa3, 0x62c, 0x2e, 0x633, 0x2e, 0x644, 0x2e, 0x633,
-0x2e, 0x200f, 0x62f, 0x2e, 0x62a, 0x2e, 0x200f, 0x62f, 0x2e, 0x625, 0x2e, 0x200f, 0x631, 0x2e, 0x64a, 0x2e, 0x200f, 0x58f, 0x20b9, 0x54,
-0x53, 0x68, 0x20a6, 0x20bc, 0x46, 0x202f, 0x43, 0x46, 0x41, 0x9f3, 0x20bd, 0x42, 0x72, 0x4b, 0x4b, 0x4d, 0x41a, 0x41c, 0x43b, 0x432,
-0x2e, 0x48, 0x4b, 0x24, 0xffe5, 0x20b1, 0x55, 0x53, 0x24, 0x55, 0x53, 0x68, 0xa5, 0x4d, 0x4f, 0x50, 0x24, 0x6b, 0x6e, 0x4b,
-0x10d, 0x6b, 0x72, 0x2e, 0x41, 0x66, 0x6c, 0x2e, 0x4e, 0x41, 0x66, 0x2e, 0x4e, 0x75, 0x2e, 0x4b, 0x73, 0x68, 0x46, 0x42,
-0x75, 0x45, 0x44, 0x41, 0x72, 0x4d, 0x4b, 0x52, 0x4d, 0x52, 0x73, 0x52, 0x46, 0x57, 0x53, 0x24, 0x53, 0x52, 0x54, 0x24,
-0x41, 0x45, 0x44, 0x56, 0x54, 0x46, 0x43, 0x46, 0x50, 0x46, 0x47, 0x55, 0x4d, 0x4d, 0x41, 0x44, 0x43, 0x48, 0x46, 0x4c,
-0x53, 0x44, 0x54, 0xd83a, 0xdd05, 0xd83a, 0xdd0a, 0xd83a, 0xdd00, 0xd83a, 0xdd0a, 0xd83a, 0xdd05, 0xd83a, 0xdd0a, 0xd83a, 0xdd00, 0x20b2, 0x46, 0x74,
-0x49, 0x53, 0x4b, 0x52, 0x70, 0x43, 0x41, 0x24, 0x200b, 0x20b8, 0x17db, 0x51, 0x20a9, 0x4b, 0x50, 0x57, 0x20ba, 0x441, 0x43e, 0x43c,
-0x20ad, 0x4b, 0x7a, 0x434, 0x435, 0x43d, 0x2e, 0x4d, 0x54, 0x6e, 0x49, 0x52, 0x52, 0x20ae, 0x43, 0x4e, 0xa5, 0x928, 0x947, 0x930,
-0x942, 0x60b, 0x631, 0x6cc, 0x627, 0x644, 0x7a, 0x142, 0x44, 0x62, 0x53, 0x2f, 0x42, 0x73, 0x52, 0x4f, 0x4e, 0x20b4, 0x52, 0x53,
-0x44, 0xdbb, 0xdd4, 0x2e, 0x20a1, 0x52, 0x44, 0x24, 0x43, 0x24, 0x42, 0x2f, 0x2e, 0x47, 0x73, 0x2e, 0x42, 0x73, 0x2e, 0x53,
-0x20ab, 0x441, 0x43e, 0x43c, 0x2e, 0x52, 0x73, 0x2e, 0x4e, 0x54, 0x24, 0xe3f, 0x54, 0x4d, 0x54, 0x73, 0x6f, 0x2bb, 0x6d, 0x441,
-0x45e, 0x43c
+static constexpr char16_t currency_symbol_data[] = {
+0x20be, 0x42, 0x72, 0x46, 0x64, 0x6a, 0x4e, 0x66, 0x6b, 0x52, 0x24, 0x46,
+0x43, 0x46, 0x41, 0x47, 0x48, 0x20b5, 0x4c, 0x65, 0x6b, 0xeb, 0x20ac, 0x64,
+0x65, 0x6e, 0x1265, 0x122d, 0x62c, 0x2e, 0x645, 0x2e, 0x200f, 0x62f, 0x2e, 0x62c,
+0x2e, 0x200f, 0x62f, 0x2e, 0x628, 0x2e, 0x200f, 0x62f, 0x2e, 0x639, 0x2e, 0x200f,
+0x20aa, 0x62f, 0x2e, 0x623, 0x2e, 0x200f, 0x62f, 0x2e, 0x643, 0x2e, 0x200f, 0x644,
+0x2e, 0x644, 0x2e, 0x200f, 0x62f, 0x2e, 0x644, 0x2e, 0x200f, 0x623, 0x2e, 0x645,
+0x2e, 0x62f, 0x2e, 0x645, 0x2e, 0x200f, 0x631, 0x2e, 0x639, 0x2e, 0x200f, 0x631,
+0x2e, 0x642, 0x2e, 0x200f, 0x631, 0x2e, 0x633, 0x2e, 0x200f, 0x53, 0xa3, 0x62c,
+0x2e, 0x633, 0x2e, 0x644, 0x2e, 0x633, 0x2e, 0x200f, 0x62f, 0x2e, 0x62a, 0x2e,
+0x200f, 0x62f, 0x2e, 0x625, 0x2e, 0x200f, 0x631, 0x2e, 0x64a, 0x2e, 0x200f, 0x58f,
+0x20b9, 0x54, 0x53, 0x68, 0x20a6, 0x20bc, 0x20ba, 0x46, 0x202f, 0x43, 0x46, 0x41,
+0x9f3, 0x20bd, 0x4b, 0x4b, 0x4d, 0x41a, 0x41c, 0x43b, 0x432, 0x2e, 0x48, 0x4b,
+0x24, 0xffe5, 0x20b1, 0x55, 0x53, 0x68, 0xa5, 0x4d, 0x4f, 0x50, 0x24, 0x45,
+0x55, 0x52, 0x4b, 0x10d, 0x6b, 0x72, 0x2e, 0x783, 0x2e, 0x41, 0x66, 0x6c,
+0x2e, 0x4e, 0x41, 0x66, 0x2e, 0x4e, 0x75, 0x2e, 0x4b, 0x73, 0x68, 0x55,
+0x53, 0x24, 0x46, 0x42, 0x75, 0x44, 0x52, 0x70, 0x41, 0x72, 0x4d, 0x4b,
+0x52, 0x4d, 0x52, 0x66, 0x52, 0x73, 0x52, 0x46, 0x57, 0x53, 0x24, 0x53,
+0x52, 0x54, 0x24, 0x56, 0x54, 0x44, 0x41, 0x46, 0x43, 0x46, 0x50, 0x46,
+0x47, 0x55, 0x4d, 0x4c, 0x53, 0x44, 0x54, 0xd83a, 0xdd05, 0xd83a, 0xdd0a, 0xd83a,
+0xdd00, 0xd83a, 0xdd0a, 0xd83a, 0xdd05, 0xd83a, 0xdd0a, 0xd83a, 0xdd00, 0x20b2, 0x46, 0x74,
+0x43, 0x41, 0x24, 0x200b, 0x20b8, 0x17db, 0x51, 0x20a9, 0x43, 0x4e, 0xa5, 0x441,
+0x43e, 0x43c, 0x20ad, 0x4b, 0x7a, 0x434, 0x435, 0x43d, 0x2e, 0x4d, 0x54, 0x6e,
+0x20ae, 0x928, 0x947, 0x930, 0x942, 0x7ff, 0x60b, 0x631, 0x6cc, 0x627, 0x644, 0x7a,
+0x142, 0x44, 0x62, 0x53, 0x2f, 0x42, 0x73, 0x6c, 0x65, 0x69, 0x20b4, 0xdbb,
+0xdd4, 0x2e, 0x20a1, 0x52, 0x44, 0x24, 0x43, 0x24, 0x42, 0x2f, 0x2e, 0x47,
+0x73, 0x2e, 0x42, 0x73, 0x2e, 0x53, 0x20ab, 0x441, 0x43e, 0x43c, 0x2e, 0x52,
+0x73, 0x2e, 0x4e, 0x54, 0x24, 0xe3f, 0x73, 0x6f, 0x2bb, 0x6d, 0x441, 0x45e,
+0x43c
};
-static const char16_t currency_display_name_data[] = {
-0x53, 0x75, 0x69, 0x64, 0x2d, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x61, 0x6e, 0x73, 0x65, 0x20, 0x72, 0x61, 0x6e, 0x64,
-0x4e, 0x61, 0x6d, 0x69, 0x62, 0x69, 0x65, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x43, 0x46, 0x41, 0x20,
-0x46, 0xe0, 0x6c, 0xe2, 0x14b, 0x20, 0x42, 0x45, 0x41, 0x43, 0x47, 0x68, 0x61, 0x6e, 0x61, 0x20, 0x53, 0x69, 0x64, 0x69,
-0x4c, 0x65, 0x6b, 0x75, 0x20, 0x73, 0x68, 0x71, 0x69, 0x70, 0x74, 0x61, 0x72, 0x45, 0x75, 0x72, 0x6f, 0x6a, 0x61, 0x44,
-0x65, 0x6e, 0x61, 0x72, 0x69, 0x20, 0x6d, 0x61, 0x71, 0x65, 0x64, 0x6f, 0x6e, 0x61, 0x73, 0x12e8, 0x12a2, 0x1275, 0x12ee, 0x1335,
-0x12eb, 0x20, 0x1265, 0x122d, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x645, 0x635, 0x631, 0x64a, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x62c,
-0x632, 0x627, 0x626, 0x631, 0x64a, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x628, 0x62d, 0x631, 0x64a, 0x646, 0x64a, 0x641, 0x631, 0x646,
-0x643, 0x20, 0x648, 0x633, 0x637, 0x20, 0x623, 0x641, 0x631, 0x64a, 0x642, 0x64a, 0x641, 0x631, 0x646, 0x643, 0x20, 0x62c, 0x632, 0x631,
-0x20, 0x627, 0x644, 0x642, 0x645, 0x631, 0x641, 0x631, 0x646, 0x643, 0x20, 0x62c, 0x64a, 0x628, 0x648, 0x62a, 0x64a, 0x646, 0x627, 0x643,
-0x641, 0x627, 0x20, 0x623, 0x631, 0x64a, 0x62a, 0x631, 0x64a, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x639, 0x631, 0x627, 0x642, 0x64a,
-0x634, 0x64a, 0x643, 0x644, 0x20, 0x625, 0x633, 0x631, 0x627, 0x626, 0x64a, 0x644, 0x64a, 0x20, 0x62c, 0x62f, 0x64a, 0x62f, 0x62f, 0x64a,
-0x646, 0x627, 0x631, 0x20, 0x623, 0x631, 0x62f, 0x646, 0x64a, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x643, 0x648, 0x64a, 0x62a, 0x64a,
-0x62c, 0x646, 0x64a, 0x647, 0x20, 0x644, 0x628, 0x646, 0x627, 0x646, 0x64a, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x644, 0x64a, 0x628,
-0x64a, 0x623, 0x648, 0x642, 0x64a, 0x629, 0x20, 0x645, 0x648, 0x631, 0x64a, 0x62a, 0x627, 0x646, 0x64a, 0x629, 0x62f, 0x631, 0x647, 0x645,
-0x20, 0x645, 0x63a, 0x631, 0x628, 0x64a, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x639, 0x645, 0x627, 0x646, 0x64a, 0x631, 0x64a, 0x627, 0x644,
-0x20, 0x642, 0x637, 0x631, 0x64a, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x633, 0x639, 0x648, 0x62f, 0x64a, 0x634, 0x644, 0x646, 0x20, 0x635,
-0x648, 0x645, 0x627, 0x644, 0x64a, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x62c, 0x646, 0x648, 0x628, 0x20, 0x627, 0x644, 0x633, 0x648, 0x62f,
-0x627, 0x646, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x633, 0x648, 0x62f, 0x627, 0x646, 0x64a, 0x644, 0x64a, 0x631, 0x629, 0x20, 0x633, 0x648,
-0x631, 0x64a, 0x629, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x62a, 0x648, 0x646, 0x633, 0x64a, 0x62f, 0x631, 0x647, 0x645, 0x20, 0x625,
-0x645, 0x627, 0x631, 0x627, 0x62a, 0x64a, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x64a, 0x645, 0x646, 0x64a, 0x570, 0x561, 0x575, 0x56f, 0x561,
-0x56f, 0x561, 0x576, 0x20, 0x564, 0x580, 0x561, 0x574, 0x9ad, 0x9be, 0x9f0, 0x9a4, 0x9c0, 0x9af, 0x9bc, 0x20, 0x9f0, 0x9c1, 0x9aa, 0x9c0,
-0x65, 0x75, 0x72, 0x6f, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x64,
-0x68, 0x61, 0x6e, 0x69, 0x61, 0x41, 0x7a, 0x259, 0x72, 0x62, 0x61, 0x79, 0x63, 0x61, 0x6e, 0x20, 0x4d, 0x61, 0x6e, 0x61,
-0x74, 0x131, 0x43c, 0x430, 0x43d, 0x430, 0x442, 0x66, 0x72, 0xe1, 0x14b, 0x73, 0x65, 0x66, 0x61, 0x20, 0x46, 0x72, 0x61, 0x14b,
-0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x9ac, 0x9be, 0x982, 0x9b2, 0x9be, 0x9a6, 0x9c7, 0x9b6, 0x9c0, 0x20, 0x99f, 0x9be,
-0x995, 0x9be, 0x9ad, 0x9be, 0x9b0, 0x9a4, 0x9c0, 0x9af, 0x9bc, 0x20, 0x9b0, 0x9c1, 0x9aa, 0x9bf, 0x46, 0x72, 0x1ce, 0x14b, 0x20, 0x43,
-0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x65, 0x75, 0x72, 0x6f, 0x61, 0x431, 0x435, 0x43b, 0x430, 0x440, 0x443,
-0x441, 0x43a, 0x456, 0x20, 0x440, 0x443, 0x431, 0x435, 0x43b, 0x44c, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79,
-0x61, 0x20, 0x48, 0x75, 0x74, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x930, 0x93e, 0x902, 0x42, 0x6f, 0x73, 0x61, 0x6e,
-0x73, 0x6b, 0x6f, 0x68, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x61, 0x10d, 0x6b, 0x61, 0x20, 0x6b, 0x6f, 0x6e, 0x76,
-0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x61, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x61, 0x41a, 0x43e, 0x43d, 0x432, 0x435,
-0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x430, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x430, 0x411, 0x44a, 0x43b, 0x433, 0x430, 0x440,
-0x441, 0x43a, 0x438, 0x20, 0x43b, 0x435, 0x432, 0x1019, 0x103c, 0x1014, 0x103a, 0x1019, 0x102c, 0x20, 0x1000, 0x103b, 0x1015, 0x103a, 0x6e2f, 0x5e63,
-0x4eba, 0x6c11, 0x5e01, 0x50, 0x68, 0x69, 0x6c, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x20, 0x50, 0x69, 0x73, 0x6f, 0x44, 0x65,
-0x72, 0x68, 0x65, 0x6d, 0x20, 0x55, 0x6d, 0x65, 0x1e5b, 0x1e5b, 0x75, 0x6b, 0x69, 0x62f, 0x6cc, 0x646, 0x627, 0x631, 0x6cc, 0x20,
-0x639, 0x6ce, 0x631, 0x627, 0x642, 0x6cc, 0x695, 0x6cc, 0x627, 0x6b5, 0x6cc, 0x20, 0x626, 0x6ce, 0x631, 0x627, 0x646, 0x6cc, 0xd804, 0xdd1d,
-0xd804, 0xdd01, 0xd804, 0xdd23, 0xd804, 0xdd18, 0xd804, 0xdd2c, 0xd804, 0xdd25, 0xd804, 0xdd28, 0x20, 0xd804, 0xdd11, 0xd804, 0xdd2c, 0xd804, 0xdd0b, 0xd804,
-0xdd03, 0xd804, 0xdd28, 0xd804, 0xdd1a, 0xd804, 0xdd34, 0xd804, 0xdd18, 0xd804, 0xdd28, 0xd804, 0xdd20, 0xd804, 0xdd1a, 0xd804, 0xdd34, 0x20, 0xd804, 0xdd22,
-0xd804, 0xdd2a, 0xd804, 0xdd1b, 0xd804, 0xdd28, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x43d, 0x20, 0x441, 0x43e, 0x43c, 0x55, 0x53, 0x20,
-0x13a0, 0x13d5, 0x13b3, 0x45, 0x73, 0x68, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x55, 0x67, 0x61, 0x6e,
-0x64, 0x61, 0x6e2f, 0x5143, 0x6fb3, 0x95e8, 0x5e01, 0x65b0, 0x52a0, 0x5761, 0x5143, 0x6fb3, 0x9580, 0x5143, 0x65b0, 0x53f0, 0x5e63, 0x68, 0x72, 0x76,
-0x61, 0x74, 0x73, 0x6b, 0x61, 0x20, 0x6b, 0x75, 0x6e, 0x61, 0x10d, 0x65, 0x73, 0x6b, 0xe1, 0x20, 0x6b, 0x6f, 0x72, 0x75,
-0x6e, 0x61, 0x64, 0x61, 0x6e, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x65, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x20, 0x930,
-0x92a, 0x947, 0x93d, 0x41, 0x72, 0x75, 0x62, 0x61, 0x61, 0x6e, 0x73, 0x65, 0x20, 0x67, 0x75, 0x6c, 0x64, 0x65, 0x6e, 0x41,
-0x6d, 0x65, 0x72, 0x69, 0x6b, 0x61, 0x61, 0x6e, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x4e, 0x65, 0x64,
-0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x2d, 0x41, 0x6e, 0x74, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x61, 0x6e, 0x73, 0x65,
-0x20, 0x67, 0x75, 0x6c, 0x64, 0x65, 0x6e, 0x53, 0x75, 0x72, 0x69, 0x6e, 0x61, 0x61, 0x6d, 0x73, 0x65, 0x20, 0x64, 0x6f,
-0x6c, 0x6c, 0x61, 0x72, 0xf51, 0xf44, 0xf74, 0xf63, 0xf0b, 0xf40, 0xfb2, 0xf58, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69,
-0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x55, 0x53, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x45, 0x61,
-0x73, 0x74, 0x20, 0x43, 0x61, 0x72, 0x69, 0x62, 0x62, 0x65, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x41,
-0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x42, 0x61, 0x68, 0x61,
-0x6d, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x42, 0x61, 0x72, 0x62, 0x61, 0x64, 0x69, 0x61, 0x6e,
-0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x42, 0x65, 0x6c, 0x69, 0x7a, 0x65, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72,
-0x42, 0x65, 0x72, 0x6d, 0x75, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x42, 0x6f, 0x74, 0x73,
-0x77, 0x61, 0x6e, 0x61, 0x6e, 0x20, 0x50, 0x75, 0x6c, 0x61, 0x42, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x20,
-0x46, 0x72, 0x61, 0x6e, 0x63, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e,
-0x20, 0x43, 0x46, 0x41, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x43, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x44,
-0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x43, 0x61, 0x79, 0x6d, 0x61, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20,
-0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x4e, 0x65, 0x77, 0x20, 0x5a, 0x65, 0x61, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x44, 0x6f,
-0x6c, 0x6c, 0x61, 0x72, 0x44, 0x61, 0x6e, 0x69, 0x73, 0x68, 0x20, 0x4b, 0x72, 0x6f, 0x6e, 0x65, 0x45, 0x72, 0x69, 0x74,
-0x72, 0x65, 0x61, 0x6e, 0x20, 0x4e, 0x61, 0x6b, 0x66, 0x61, 0x53, 0x77, 0x61, 0x7a, 0x69, 0x20, 0x4c, 0x69, 0x6c, 0x61,
-0x6e, 0x67, 0x65, 0x6e, 0x69, 0x46, 0x61, 0x6c, 0x6b, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64,
-0x73, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x46, 0x69, 0x6a, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72,
-0x47, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x61, 0x6c, 0x61, 0x73, 0x69, 0x47, 0x68, 0x61, 0x6e, 0x61, 0x69,
-0x61, 0x6e, 0x20, 0x43, 0x65, 0x64, 0x69, 0x47, 0x69, 0x62, 0x72, 0x61, 0x6c, 0x74, 0x61, 0x72, 0x20, 0x50, 0x6f, 0x75,
-0x6e, 0x64, 0x55, 0x4b, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x47, 0x75, 0x79, 0x61, 0x6e, 0x61, 0x65, 0x73, 0x65, 0x20,
-0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x48, 0x6f, 0x6e, 0x67, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x20, 0x44, 0x6f, 0x6c, 0x6c,
-0x61, 0x72, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x52, 0x75, 0x70, 0x65, 0x65, 0x49, 0x73, 0x72, 0x61, 0x65, 0x6c,
-0x69, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x53, 0x68, 0x65, 0x6b, 0x65, 0x6c, 0x4a, 0x61, 0x6d, 0x61, 0x69, 0x63, 0x61, 0x6e,
-0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x6e, 0x20, 0x53, 0x68, 0x69, 0x6c, 0x6c, 0x69,
-0x6e, 0x67, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x52, 0x61, 0x6e, 0x64,
-0x4c, 0x69, 0x62, 0x65, 0x72, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x4d, 0x61, 0x63, 0x61, 0x6e,
-0x65, 0x73, 0x65, 0x20, 0x50, 0x61, 0x74, 0x61, 0x63, 0x61, 0x4d, 0x61, 0x6c, 0x61, 0x67, 0x61, 0x73, 0x79, 0x20, 0x41,
-0x72, 0x69, 0x61, 0x72, 0x79, 0x4d, 0x61, 0x6c, 0x61, 0x77, 0x69, 0x61, 0x6e, 0x20, 0x4b, 0x77, 0x61, 0x63, 0x68, 0x61,
-0x4d, 0x61, 0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x6e, 0x20, 0x52, 0x69, 0x6e, 0x67, 0x67, 0x69, 0x74, 0x4d, 0x61, 0x75,
-0x72, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x20, 0x52, 0x75, 0x70, 0x65, 0x65, 0x4e, 0x61, 0x6d, 0x69, 0x62, 0x69, 0x61, 0x6e,
-0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x4e, 0x69, 0x67, 0x65, 0x72, 0x69, 0x61, 0x6e, 0x20, 0x4e, 0x61, 0x69, 0x72,
-0x61, 0x50, 0x61, 0x6b, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x69, 0x20, 0x52, 0x75, 0x70, 0x65, 0x65, 0x50, 0x61, 0x70, 0x75,
-0x61, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x47, 0x75, 0x69, 0x6e, 0x65, 0x61, 0x6e, 0x20, 0x4b, 0x69, 0x6e, 0x61, 0x52, 0x77,
-0x61, 0x6e, 0x64, 0x61, 0x6e, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x53, 0x74, 0x20, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61,
-0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x61, 0x6d, 0x6f, 0x61, 0x6e, 0x20, 0x54, 0x61, 0x6c, 0x61, 0x53, 0x65, 0x79,
-0x63, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x69, 0x73, 0x20, 0x52, 0x75, 0x70, 0x65, 0x65, 0x53, 0x69, 0x65, 0x72, 0x72, 0x61,
-0x20, 0x4c, 0x65, 0x6f, 0x6e, 0x65, 0x61, 0x6e, 0x20, 0x4c, 0x65, 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70,
-0x6f, 0x72, 0x65, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64,
-0x73, 0x20, 0x41, 0x6e, 0x74, 0x69, 0x6c, 0x6c, 0x65, 0x61, 0x6e, 0x20, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x53,
-0x6f, 0x6c, 0x6f, 0x6d, 0x6f, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61,
-0x72, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x50, 0x6f, 0x75, 0x6e,
-0x64, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x77, 0x65, 0x64, 0x69,
-0x73, 0x68, 0x20, 0x4b, 0x72, 0x6f, 0x6e, 0x61, 0x53, 0x77, 0x69, 0x73, 0x73, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x54,
-0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x6e, 0x20, 0x53, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6e,
-0x67, 0x61, 0x6e, 0x20, 0x50, 0x61, 0x2bb, 0x61, 0x6e, 0x67, 0x61, 0x54, 0x72, 0x69, 0x6e, 0x69, 0x64, 0x61, 0x64, 0x20,
-0x26, 0x20, 0x54, 0x6f, 0x62, 0x61, 0x67, 0x6f, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x55, 0x67, 0x61, 0x6e, 0x64,
-0x61, 0x6e, 0x20, 0x53, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x74, 0x65, 0x64, 0x20, 0x41, 0x72,
-0x61, 0x62, 0x20, 0x45, 0x6d, 0x69, 0x72, 0x61, 0x74, 0x65, 0x73, 0x20, 0x44, 0x69, 0x72, 0x68, 0x61, 0x6d, 0x42, 0x72,
-0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x56, 0x61, 0x6e, 0x75, 0x61, 0x74, 0x75, 0x20, 0x56,
-0x61, 0x74, 0x75, 0x5a, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x6e, 0x20, 0x4b, 0x77, 0x61, 0x63, 0x68, 0x61, 0x67, 0x68, 0x61,
-0x6e, 0x61, 0x20, 0x73, 0x69, 0x256, 0x69, 0x263, 0x65, 0x74, 0x6f, 0x256, 0x6f, 0x66, 0x65, 0x20, 0x61, 0x66, 0x72, 0x69,
-0x6b, 0x61, 0x67, 0x61, 0x20, 0x43, 0x46, 0x41, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x42, 0x43, 0x45, 0x41, 0x4f,
-0x46, 0x259, 0x6c, 0xe1, 0x14b, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x64, 0x6f, 0x6e, 0x73,
-0x6b, 0x20, 0x6b, 0x72, 0xf3, 0x6e, 0x61, 0x50, 0x69, 0x73, 0x6f, 0x20, 0x6e, 0x67, 0x20, 0x50, 0x69, 0x6c, 0x69, 0x70,
-0x69, 0x6e, 0x61, 0x73, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x20, 0x61, 0x6c, 0x67, 0xe9, 0x72, 0x69, 0x65, 0x6e, 0x66, 0x72,
-0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x66, 0x72, 0x61, 0x6e, 0x63,
-0x20, 0x62, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x61, 0x69, 0x73, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x41, 0x20,
-0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x20, 0x63, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x65,
-0x6e, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x63, 0x6f, 0x6d, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x66, 0x72, 0x61, 0x6e, 0x63,
-0x20, 0x63, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x69, 0x73, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x64, 0x6a, 0x69, 0x62,
-0x6f, 0x75, 0x74, 0x69, 0x65, 0x6e, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x50, 0x66, 0x72, 0x61, 0x6e, 0x63,
-0x20, 0x67, 0x75, 0x69, 0x6e, 0xe9, 0x65, 0x6e, 0x67, 0x6f, 0x75, 0x72, 0x64, 0x65, 0x20, 0x68, 0x61, 0xef, 0x74, 0x69,
-0x65, 0x6e, 0x6e, 0x65, 0x61, 0x72, 0x69, 0x61, 0x72, 0x79, 0x20, 0x6d, 0x61, 0x6c, 0x67, 0x61, 0x63, 0x68, 0x65, 0x6f,
-0x75, 0x67, 0x75, 0x69, 0x79, 0x61, 0x20, 0x6d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x65, 0x6e, 0x72, 0x6f,
-0x75, 0x70, 0x69, 0x65, 0x20, 0x6d, 0x61, 0x75, 0x72, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x64, 0x69, 0x72, 0x68,
-0x61, 0x6d, 0x20, 0x6d, 0x61, 0x72, 0x6f, 0x63, 0x61, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x72, 0x77, 0x61,
-0x6e, 0x64, 0x61, 0x69, 0x73, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x65, 0x20, 0x64, 0x65, 0x73, 0x20, 0x53, 0x65, 0x79, 0x63,
-0x68, 0x65, 0x6c, 0x6c, 0x65, 0x73, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x73, 0x75, 0x69, 0x73, 0x73, 0x65, 0x6c, 0x69,
-0x76, 0x72, 0x65, 0x20, 0x73, 0x79, 0x72, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x20, 0x74, 0x75,
-0x6e, 0x69, 0x73, 0x69, 0x65, 0x6e, 0x76, 0x61, 0x74, 0x75, 0x20, 0x76, 0x61, 0x6e, 0x75, 0x61, 0x74, 0x75, 0x61, 0x6e,
-0x4d, 0x62, 0x75, 0x75, 0x257, 0x75, 0x20, 0x53, 0x65, 0x65, 0x66, 0x61, 0x61, 0x20, 0x42, 0x43, 0x45, 0x41, 0x4f, 0xd83a,
-0xdd0a, 0xd83a, 0xdd22, 0xd83a, 0xdd2a, 0xd83a, 0xdd22, 0xd83a, 0xdd32, 0x20, 0xd83a, 0xdd05, 0xd83a, 0xdd0a, 0xd83a, 0xdd00, 0x20, 0xd83a, 0xdd16, 0xd83a,
-0xdd2d, 0xd83a, 0xdd45, 0xd83a, 0xdd2a, 0xd83a, 0xdd32, 0xd83a, 0xdd22, 0xd83a, 0xdd44, 0xd83a, 0xdd32, 0xd83a, 0xdd3a, 0xd83a, 0xdd2b, 0x20, 0xd83a, 0xdd00,
-0xd83a, 0xdd2c, 0xd83a, 0xdd2a, 0xd83a, 0xdd2d, 0xd83a, 0xdd33, 0xd83a, 0xdd22, 0xd83a, 0xdd0a, 0xd83a, 0xdd22, 0xd83a, 0xdd2a, 0xd83a, 0xdd22, 0xd83a, 0xdd32,
-0x20, 0xd83a, 0xdd1a, 0xd83a, 0xdd35, 0xd83a, 0xdd26, 0xd83a, 0xdd2e, 0xd83a, 0xdd45, 0xd83a, 0xdd2a, 0xd83a, 0xdd2d, 0x20, 0xd83a, 0xdd00, 0xd83a, 0xdd2c,
-0xd83a, 0xdd2a, 0xd83a, 0xdd2d, 0xd83a, 0xdd33, 0xd83a, 0xdd2d, 0xd83a, 0xdd32, 0xd83a, 0xdd33, 0xd83a, 0xdd2e, 0xd83a, 0xdd01, 0xd83a, 0xdd22, 0xd83a, 0xdd24,
-0xd83a, 0xdd22, 0xd83a, 0xdd27, 0xd83a, 0xdd2d, 0x20, 0xd83a, 0xdd18, 0xd83a, 0xdd22, 0xd83a, 0xdd25, 0xd83a, 0xdd26, 0xd83a, 0xdd2d, 0xd83a, 0xdd32, 0xd83a,
-0xdd33, 0xd83a, 0xdd2e, 0xd83a, 0xdd05, 0xd83a, 0xdd2d, 0xd83a, 0xdd23, 0xd83a, 0xdd2d, 0x20, 0xd83a, 0xdd18, 0xd83a, 0xdd22, 0xd83a, 0xdd32, 0xd83a, 0xdd22,
-0xd83a, 0xdd32, 0xd83a, 0xdd33, 0xd83a, 0xdd2e, 0xd83a, 0xdd0a, 0xd83a, 0xdd22, 0xd83a, 0xdd2a, 0xd83a, 0xdd22, 0xd83a, 0xdd32, 0x20, 0xd83a, 0xdd18, 0xd83a,
-0xdd2d, 0xd83a, 0xdd32, 0xd83a, 0xdd2b, 0xd83a, 0xdd32, 0xd83a, 0xdd33, 0xd83a, 0xdd2e, 0xd83a, 0xdd01, 0xd83a, 0xdd22, 0xd83a, 0xdd24, 0xd83a, 0xdd22, 0x20,
-0xd83a, 0xdd02, 0xd83a, 0xdd2d, 0xd83a, 0xdd26, 0xd83a, 0xdd2b, 0xd83a, 0xdd2a, 0xd83a, 0xdd2d, 0xd83a, 0xdd34, 0xd83a, 0xdd22, 0xd83a, 0xdd32, 0xd83a, 0xdd33,
-0xd83a, 0xdd2e, 0xd83a, 0xdd13, 0xd83a, 0xdd3a, 0xd83a, 0xdd2d, 0xd83a, 0xdd34, 0xd83a, 0xdd22, 0x20, 0xd83a, 0xdd03, 0xd83a, 0xdd2e, 0xd83a, 0xdd2a, 0xd83a,
-0xdd2d, 0xd83a, 0xdd3c, 0xd83a, 0xdd22, 0xd83a, 0xdd32, 0xd83a, 0xdd2d, 0xd83a, 0xdd34, 0xd83a, 0xdd22, 0xd83a, 0xdd32, 0xd83a, 0xdd33, 0xd83a, 0xdd2e, 0xd83a,
-0xdd10, 0xd83a, 0xdd22, 0xd83a, 0xdd34, 0xd83a, 0xdd2a, 0xd83a, 0xdd22, 0x20, 0xd83a, 0xdd10, 0xd83a, 0xdd22, 0xd83a, 0xdd36, 0xd83a, 0xdd2d, 0xd83a, 0xdd2a,
-0xd83a, 0xdd22, 0xd83a, 0xdd34, 0xd83a, 0xdd22, 0xd83a, 0xdd32, 0xd83a, 0xdd33, 0xd83a, 0xdd2e, 0xd83a, 0xdd02, 0xd83a, 0xdd2b, 0xd83a, 0xdd34, 0xd83a, 0xdd2e,
-0xd83a, 0xdd32, 0x20, 0xd83a, 0xdd05, 0xd83a, 0xdd2b, 0xd83a, 0xdd2a, 0xd83a, 0xdd22, 0xd83a, 0xdd24, 0xd83a, 0xdd2d, 0xd83a, 0xdd34, 0xd83a, 0xdd22, 0xd83a,
-0xdd32, 0xd83a, 0xdd33, 0xd83a, 0xdd2e, 0x4d, 0x62, 0x75, 0x75, 0x257, 0x69, 0x20, 0x53, 0x65, 0x65, 0x66, 0x61, 0x61, 0x20, 0x42,
-0x45, 0x41, 0x43, 0x44, 0x61, 0x6c, 0x61, 0x73, 0x69, 0x20, 0x47, 0x61, 0x6d, 0x6d, 0x62, 0x69, 0x44, 0x6f, 0x6c, 0x61,
-0x61, 0x72, 0x20, 0x4c, 0x69, 0x62, 0x65, 0x72, 0x69, 0x79, 0x61, 0x61, 0x55, 0x67, 0x69, 0x79, 0x79, 0x61, 0x20, 0x4d,
-0x75, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x4e, 0x61, 0x79, 0x72, 0x61, 0x61, 0x20, 0x4e, 0x69, 0x6a, 0x65, 0x72, 0x69,
-0x79, 0x61, 0x61, 0x4c, 0x65, 0x77, 0x6f, 0x6f, 0x6e, 0x20, 0x53, 0x65, 0x72, 0x61, 0x61, 0x20, 0x4c, 0x69, 0x79, 0x6f,
-0x6e, 0x50, 0x75, 0x6e, 0x6e, 0x64, 0x20, 0x53, 0x61, 0x73, 0x61, 0x6e, 0x6e, 0x61, 0x63, 0x68, 0x53, 0x69, 0x6c, 0x69,
-0x6e, 0x67, 0x69, 0x20, 0x65, 0x79, 0x61, 0x20, 0x59, 0x75, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x10e5, 0x10d0, 0x10e0, 0x10d7, 0x10e3,
-0x10da, 0x10d8, 0x20, 0x10da, 0x10d0, 0x10e0, 0x10d8, 0x53, 0x63, 0x68, 0x77, 0x65, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x46, 0x72, 0x61,
-0x6e, 0x6b, 0x65, 0x6e, 0x395, 0x3c5, 0x3c1, 0x3ce, 0xaad, 0xabe, 0xab0, 0xaa4, 0xac0, 0xaaf, 0x20, 0xab0, 0xac2, 0xaaa, 0xabf, 0xaaf,
-0xabe, 0x4e, 0x61, 0x69, 0x72, 0x61, 0x72, 0x20, 0x4e, 0x61, 0x6a, 0x65, 0x72, 0x69, 0x79, 0x61, 0x53, 0x69, 0x64, 0x69,
-0x20, 0x6e, 0x61, 0x20, 0x47, 0x68, 0x61, 0x6e, 0x61, 0x4b, 0x75, 0x257, 0x69, 0x6e, 0x20, 0x53, 0x65, 0x66, 0x61, 0x20,
-0x6e, 0x61, 0x20, 0x41, 0x66, 0x69, 0x72, 0x6b, 0x61, 0x20, 0x54, 0x61, 0x20, 0x59, 0x61, 0x6d, 0x6d, 0x61, 0x5e9, 0x5e7,
-0x5dc, 0x20, 0x5d7, 0x5d3, 0x5e9, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x93e, 0x6d, 0x61, 0x67,
-0x79, 0x61, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x69, 0x6e, 0x74, 0xed, 0x73, 0x6c, 0x65, 0x6e, 0x73, 0x6b, 0x20, 0x6b, 0x72,
-0xf3, 0x6e, 0x61, 0x4e, 0x61, 0x1ecb, 0x72, 0x61, 0x52, 0x75, 0x70, 0x69, 0x61, 0x68, 0x20, 0x49, 0x6e, 0x64, 0x6f, 0x6e,
-0x65, 0x73, 0x69, 0x61, 0x50, 0x75, 0x6e, 0x74, 0x20, 0x53, 0x74, 0x65, 0x69, 0x72, 0x6c, 0x69, 0x6e, 0x67, 0x66, 0x72,
-0x61, 0x6e, 0x63, 0x6f, 0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, 0x6f, 0x65e5, 0x672c, 0x5186, 0x73, 0x65, 0x65, 0x66,
-0x61, 0x20, 0x79, 0x61, 0x74, 0x69, 0x20, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x53, 0x6b, 0x75, 0x64, 0x75, 0x20, 0x4b, 0x61,
-0x62, 0x75, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x75, 0x41, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x20, 0x41, 0x7a, 0x7a,
-0x61, 0x79, 0x72, 0x69, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x41, 0x64, 0x61, 0x6e, 0x6d, 0x61, 0x72, 0x6b,
-0x69, 0x6d, 0x75, 0x74, 0x20, 0x6b, 0x6f, 0x72, 0x75, 0x75, 0x6e, 0x69, 0x53, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x74,
-0x61, 0x62, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x53, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79,
-0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0xcad, 0xcbe, 0xcb0, 0xca4, 0xcc0, 0xcaf, 0x20, 0xcb0, 0xcc2, 0xcaa, 0xcbe, 0xcaf, 0xcbf,
-0x6c1, 0x650, 0x646, 0x62f, 0x64f, 0x633, 0x62a, 0x672, 0x646, 0x6cd, 0x20, 0x631, 0x6c4, 0x67e, 0x64e, 0x6d2, 0x49a, 0x430, 0x437, 0x430,
-0x49b, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x442, 0x435, 0x4a3, 0x433, 0x435, 0x441, 0x456, 0x179a, 0x17c0, 0x179b, 0x200b, 0x1780, 0x1798, 0x17d2,
-0x1796, 0x17bb, 0x1787, 0x17b6, 0x43, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61,
-0xb300, 0xd55c, 0xbbfc, 0xad6d, 0x20, 0xc6d0, 0xc870, 0xc120, 0x20, 0xbbfc, 0xc8fc, 0xc8fc, 0xc758, 0x20, 0xc778, 0xbbfc, 0x20, 0xacf5, 0xd654, 0xad6d,
-0x20, 0xc6d0, 0x43, 0x46, 0x41, 0x20, 0x46, 0x72, 0x61, 0x14b, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x46, 0x72,
-0x61, 0x14b, 0x20, 0x43, 0x46, 0x41, 0x20, 0x42, 0x45, 0x41, 0x43, 0x41a, 0x44b, 0x440, 0x433, 0x44b, 0x437, 0x441, 0x442, 0x430,
-0x43d, 0x20, 0x441, 0x43e, 0x43c, 0x443, 0x53, 0x68, 0x69, 0x6c, 0xed, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54,
-0x61, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0xed, 0x61, 0xea5, 0xeb2, 0xea7, 0x20, 0xe81, 0xeb5, 0xe9a, 0x65, 0x69, 0x72, 0x6f, 0x46,
-0x61, 0x6c, 0xe1, 0x6e, 0x67, 0x61, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0xf3, 0x4b, 0x77, 0x61, 0x6e, 0x7a,
-0x61, 0x20, 0x79, 0x61, 0x20, 0x41, 0x6e, 0x67, 0xf3, 0x6c, 0x61, 0x46, 0x61, 0x6c, 0xe1, 0x6e, 0x67, 0x61, 0x20, 0x43,
-0x46, 0x41, 0x20, 0x42, 0x45, 0x41, 0x43, 0x45, 0x75, 0x72, 0x61, 0x73, 0x4e, 0x66, 0x61, 0x6c, 0x61, 0x6e, 0x67, 0x61,
-0x20, 0x77, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x75, 0x53, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x61, 0x72, 0x20,
-0x4b, 0x65, 0x6e, 0x79, 0x61, 0x53, 0x69, 0x72, 0x69, 0x6e, 0x6a, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79,
-0x61, 0x41c, 0x430, 0x43a, 0x435, 0x434, 0x43e, 0x43d, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x435, 0x43d, 0x430, 0x440, 0x53, 0x68, 0x69,
-0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0xd07, 0xd28, 0xd4d,
-0xd24, 0xd4d, 0xd2f, 0xd7b, 0x20, 0xd30, 0xd42, 0xd2a, 0x52, 0x69, 0x6e, 0x67, 0x67, 0x69, 0x74, 0x20, 0x4d, 0x61, 0x6c, 0x61,
-0x79, 0x73, 0x69, 0x61, 0x44, 0x6f, 0x6c, 0x61, 0x72, 0x20, 0x42, 0x72, 0x75, 0x6e, 0x65, 0x69, 0x44, 0x6f, 0x6c, 0x61,
-0x72, 0x20, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x75, 0x72, 0x61, 0x65, 0x77, 0x72, 0x6f, 0x987, 0x9a8, 0x9cd, 0x9a6, 0x9bf,
-0x9af, 0x9bc, 0x9be, 0x9a8, 0x20, 0x9b0, 0x9c1, 0x9aa, 0x9c0, 0x54, 0x101, 0x72, 0x61, 0x20, 0x6f, 0x20, 0x41, 0x6f, 0x74, 0x65,
-0x61, 0x72, 0x6f, 0x61, 0x49, 0x72, 0x6f, 0x70, 0x69, 0x79, 0x69, 0x61, 0x6e, 0xed, 0x20, 0x65, 0x20, 0x4b, 0x65, 0x6e,
-0x79, 0x61, 0x49, 0x72, 0x6f, 0x70, 0x69, 0x79, 0x69, 0x61, 0x6e, 0xed, 0x20, 0x65, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61,
-0x6e, 0x69, 0x61, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x20, 0x631, 0x6cc, 0x627, 0x644, 0x73, 0x68, 0x69, 0x72, 0xe8, 0x41c, 0x43e,
-0x43d, 0x433, 0x43e, 0x43b, 0x20, 0x442, 0x4e9, 0x433, 0x440, 0x4e9, 0x433, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x20, 0x6d, 0x6f, 0x72,
-0x69, 0x73, 0x69, 0x65, 0x6e, 0x73, 0x6f, 0x6c, 0x61, 0x69, 0x20, 0x42, 0x45, 0x41, 0x43, 0x4e, 0x61, 0x6d, 0x69, 0x62,
-0x69, 0x61, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x69, 0x928, 0x947, 0x92a, 0x93e, 0x932, 0x940, 0x20, 0x930, 0x942, 0x92a,
-0x948, 0x92f, 0x93e, 0x901, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x942, 0x92a, 0x93f, 0x901, 0x92f, 0x93e, 0x66, 0x65,
-0x6c, 0xe1, 0x14b, 0x20, 0x43, 0x46, 0x41, 0x46, 0x25b, 0x6c, 0xe2, 0x14b, 0x4e, 0x61, 0x69, 0x6a, 0xed, 0x72, 0x69, 0xe1,
-0x20, 0x4e, 0x61, 0xed, 0x72, 0x61, 0x6e, 0x6f, 0x72, 0x67, 0x67, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f,
-0x72, 0x75, 0x6f, 0x167, 0x167, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x44, 0x6f, 0x6c, 0x61, 0x20, 0x79,
-0x61, 0x73, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x6c, 0x69, 0x6b, 0x61, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x65, 0x20, 0x6b, 0x72,
-0x6f, 0x6e, 0x65, 0x72, 0xb2d, 0xb3e, 0xb30, 0xb24, 0xb40, 0xb5f, 0x20, 0xb1f, 0xb19, 0xb4d, 0xb15, 0xb3e, 0x49, 0x74, 0x6f, 0x6f,
-0x70, 0x68, 0x69, 0x79, 0x61, 0x61, 0x20, 0x42, 0x69, 0x72, 0x72, 0x69, 0x69, 0x41b, 0x430, 0x440, 0x421, 0x43e, 0x43c, 0x627,
-0x641, 0x63a, 0x627, 0x646, 0x6cd, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cd, 0x20, 0x6a9, 0x644, 0x62f, 0x627, 0x631, 0x647,
-0x631, 0x6cc, 0x627, 0x644, 0x20, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cc, 0x20, 0x627, 0x641, 0x63a,
-0x627, 0x646, 0x633, 0x62a, 0x627, 0x646, 0x7a, 0x142, 0x6f, 0x74, 0x79, 0x20, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x52, 0x65,
-0x61, 0x6c, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0x69, 0x72, 0x6f, 0x6b, 0x77, 0x61, 0x6e, 0x7a, 0x61, 0x20,
-0x61, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x6f, 0x65, 0x73, 0x63, 0x75, 0x64, 0x6f, 0x20, 0x63, 0x61, 0x62, 0x6f, 0x2d,
-0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x6f, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28,
-0x42, 0x45, 0x41, 0x43, 0x29, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x43, 0x45,
-0x41, 0x4f, 0x29, 0x70, 0x61, 0x74, 0x61, 0x63, 0x61, 0x20, 0x6d, 0x61, 0x63, 0x61, 0x65, 0x6e, 0x73, 0x65, 0x6d, 0x65,
-0x74, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x64, 0x6f, 0x62,
-0x72, 0x61, 0x20, 0x64, 0x65, 0x20, 0x53, 0xe3, 0x6f, 0x20, 0x54, 0x6f, 0x6d, 0xe9, 0x20, 0x65, 0x20, 0x50, 0x72, 0xed,
-0x6e, 0x63, 0x69, 0x70, 0x65, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x73, 0x75, 0xed, 0xe7, 0x6f, 0x64, 0xf3, 0x6c,
-0x61, 0x72, 0x20, 0x64, 0x6f, 0x73, 0x20, 0x45, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x73, 0x20, 0x55, 0x6e, 0x69, 0x64, 0x6f,
-0x73, 0xa2d, 0xa3e, 0xa30, 0xa24, 0xa40, 0x20, 0xa30, 0xa41, 0xa2a, 0xa07, 0xa06, 0x631, 0x648, 0x67e, 0x626, 0x6cc, 0x6c1, 0x53, 0x6f,
-0x6c, 0x20, 0x50, 0x65, 0x72, 0x75, 0x61, 0x6e, 0x6f, 0x42, 0x6f, 0x6c, 0x69, 0x76, 0x69, 0x61, 0x6e, 0x6f, 0x44, 0xf3,
-0x6c, 0x61, 0x72, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x6c, 0x65, 0x75, 0x20, 0x72, 0x6f, 0x6d,
-0xe2, 0x6e, 0x65, 0x73, 0x63, 0x6c, 0x65, 0x75, 0x20, 0x6d, 0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x65, 0x6e, 0x65, 0x73, 0x63,
-0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, 0x68, 0x65, 0x6c, 0x65, 0x72, 0x69, 0x20,
-0x73, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x49, 0x66, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x61, 0x20,
-0x72, 0x79, 0x2019, 0x55, 0x62, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x440, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x441, 0x43a, 0x438,
-0x439, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44c, 0x431, 0x435, 0x43b, 0x43e, 0x440, 0x443, 0x441, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x440,
-0x443, 0x431, 0x43b, 0x44c, 0x43a, 0x430, 0x437, 0x430, 0x445, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x442, 0x435, 0x43d, 0x433, 0x435, 0x43a,
-0x438, 0x440, 0x433, 0x438, 0x437, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x441, 0x43e, 0x43c, 0x43c, 0x43e, 0x43b, 0x434, 0x430, 0x432, 0x441,
-0x43a, 0x438, 0x439, 0x20, 0x43b, 0x435, 0x439, 0x443, 0x43a, 0x440, 0x430, 0x438, 0x43d, 0x441, 0x43a, 0x430, 0x44f, 0x20, 0x433, 0x440,
-0x438, 0x432, 0x43d, 0x430, 0x410, 0x440, 0x430, 0x441, 0x441, 0x44b, 0x44b, 0x439, 0x430, 0x20, 0x441, 0x43e, 0x43b, 0x43a, 0x443, 0x43e,
-0x431, 0x430, 0x439, 0x430, 0x4e, 0x6a, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x65, 0x65, 0x6c, 0x20, 0x4b, 0x65, 0x6e,
-0x79, 0x61, 0x66, 0x61, 0x72, 0xe2, 0x6e, 0x67, 0x61, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29,
-0x49, 0x68, 0x65, 0x6c, 0x61, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0x69, 0x79, 0x61, 0x92d, 0x93e,
-0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x942, 0x92a, 0x94d, 0x92f, 0x915, 0x92e, 0x94d, 0x1c65, 0x1c64, 0x1c67, 0x1c5a, 0x1c5b, 0x20, 0x1c68,
-0x1c6e, 0x1c71, 0x1c5f, 0x1c5c, 0x20, 0x1c74, 0x1c5f, 0x1c60, 0x1c5f, 0xe8, 0x75, 0x72, 0x6f, 0x4d, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c,
-0x20, 0x64, 0x65, 0x20, 0x4d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x71, 0x75, 0x65, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x438,
-0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x411, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433,
-0x43e, 0x432, 0x430, 0x447, 0x43a, 0x430, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x430,
-0x20, 0x43c, 0x430, 0x440, 0x43a, 0x430, 0x415, 0x432, 0x440, 0x43e, 0x45, 0x76, 0x72, 0x6f, 0x73, 0x72, 0x70, 0x73, 0x6b, 0x69,
-0x20, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61,
-0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x44, 0x6f, 0x72, 0x61, 0x20, 0x72, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x6b,
-0x61, 0x67e, 0x627, 0x6aa, 0x633, 0x62a, 0x627, 0x646, 0x64a, 0x20, 0x631, 0x67e, 0x64a, 0x939, 0x93f, 0x902, 0x926, 0x941, 0x938, 0x94d,
-0x924, 0x93e, 0x928, 0x940, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x94b, 0xdc1, 0xdca, 0x200d, 0xdbb, 0xdd3, 0x20, 0xdbd, 0xd82, 0xd9a, 0xdcf,
-0x20, 0xdbb, 0xdd4, 0xdb4, 0xdd2, 0xdba, 0xdbd, 0x65, 0x76, 0x72, 0x6f, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x6b, 0x61,
-0x20, 0x53, 0x6f, 0x6f, 0x6d, 0x61, 0x61, 0x6c, 0x69, 0x79, 0x61, 0x46, 0x61, 0x72, 0x61, 0x6e, 0x20, 0x4a, 0x61, 0x62,
-0x75, 0x75, 0x74, 0x69, 0x42, 0x69, 0x72, 0x74, 0x61, 0x20, 0x49, 0x74, 0x6f, 0x6f, 0x62, 0x62, 0x69, 0x79, 0x61, 0x53,
-0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x6b, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x61,
-0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x6f, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x62, 0x65, 0x6c, 0x69, 0x63, 0x65,
-0xf1, 0x6f, 0x62, 0x6f, 0x6c, 0x69, 0x76, 0x69, 0x61, 0x6e, 0x6f, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x62, 0x72, 0x61, 0x73,
-0x69, 0x6c, 0x65, 0xf1, 0x6f, 0x50, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x68, 0x69, 0x6c, 0x65, 0x6e, 0x6f, 0x70, 0x65, 0x73,
-0x6f, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x69, 0x61, 0x6e, 0x6f, 0x63, 0x6f, 0x6c, 0xf3, 0x6e, 0x20, 0x63, 0x6f,
-0x73, 0x74, 0x61, 0x72, 0x72, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x75, 0x62, 0x61,
-0x6e, 0x6f, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x64, 0xf3, 0x6c,
-0x61, 0x72, 0x20, 0x65, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x75, 0x6e, 0x69, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x66, 0x72, 0x61,
-0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x64, 0x65, 0x20, 0xc1, 0x66, 0x72, 0x69, 0x63, 0x61, 0x20, 0x43, 0x65,
-0x6e, 0x74, 0x72, 0x61, 0x6c, 0x71, 0x75, 0x65, 0x74, 0x7a, 0x61, 0x6c, 0x6c, 0x65, 0x6d, 0x70, 0x69, 0x72, 0x61, 0x20,
-0x68, 0x6f, 0x6e, 0x64, 0x75, 0x72, 0x65, 0xf1, 0x6f, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x6d, 0x65, 0x78, 0x69, 0x63, 0x61,
-0x6e, 0x6f, 0x63, 0xf3, 0x72, 0x64, 0x6f, 0x62, 0x61, 0x20, 0x6e, 0x69, 0x63, 0x61, 0x72, 0x61, 0x67, 0xfc, 0x65, 0x6e,
-0x73, 0x65, 0x62, 0x61, 0x6c, 0x62, 0x6f, 0x61, 0x20, 0x70, 0x61, 0x6e, 0x61, 0x6d, 0x65, 0xf1, 0x6f, 0x67, 0x75, 0x61,
-0x72, 0x61, 0x6e, 0xed, 0x20, 0x70, 0x61, 0x72, 0x61, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x73, 0x6f, 0x6c, 0x20, 0x70, 0x65,
-0x72, 0x75, 0x61, 0x6e, 0x6f, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x66, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x6f, 0x70, 0x65,
-0x73, 0x6f, 0x20, 0x75, 0x72, 0x75, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x62, 0x6f, 0x6c, 0xed, 0x76, 0x61, 0x72, 0x20, 0x73,
-0x6f, 0x62, 0x65, 0x72, 0x61, 0x6e, 0x6f, 0x2d30, 0x2d37, 0x2d54, 0x2d49, 0x2d4e, 0x20, 0x2d4f, 0x20, 0x2d4d, 0x2d4e, 0x2d56, 0x2d54, 0x2d49,
-0x2d31, 0x52, 0x75, 0x70, 0x65, 0x65, 0x20, 0x49, 0x6e, 0x64, 0x6f, 0x6e, 0xe9, 0x73, 0x69, 0x61, 0x46, 0x61, 0x72, 0x61,
-0x6e, 0x67, 0x61, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69,
-0x20, 0x79, 0x61, 0x20, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x73, 0x76, 0x65, 0x6e, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0x6f,
-0x6e, 0x61, 0x53, 0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x61, 0x64,
-0x72, 0x69, 0x6d, 0x20, 0x6e, 0x20, 0x6c, 0x6d, 0x263, 0x72, 0x69, 0x62, 0x421, 0x43e, 0x43c, 0x43e, 0x43d, 0x4e3, 0xb87, 0xba8,
-0xbcd, 0xba4, 0xbbf, 0xbaf, 0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0xbae, 0xbb2, 0xbc7, 0xbb7, 0xbbf, 0xbaf, 0xba9, 0xbcd, 0x20,
-0xbb0, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbbf, 0xb9f, 0xbcd, 0xb9a, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbaa, 0xbcd, 0xbaa, 0xbc2, 0xbb0, 0xbcd, 0x20,
-0xb9f, 0xbbe, 0xbb2, 0xbb0, 0xbcd, 0xb87, 0xbb2, 0xb99, 0xbcd, 0xb95, 0xbc8, 0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0x420, 0x43e,
-0x441, 0x441, 0x438, 0x44f, 0x20, 0x441, 0x443, 0x43c, 0x44b, 0xc2d, 0xc3e, 0xc30, 0xc24, 0xc26, 0xc47, 0xc36, 0x20, 0xc30, 0xc42, 0xc2a,
-0xc3e, 0xc2f, 0xc3f, 0x41, 0x6e, 0x67, 0x6f, 0x2019, 0x6f, 0x74, 0x6f, 0x6c, 0x20, 0x6c, 0x6f, 0x6b, 0x2019, 0x20, 0x55, 0x67,
-0x61, 0x6e, 0x64, 0x61, 0x41, 0x6e, 0x67, 0x6f, 0x2019, 0x6f, 0x74, 0x6f, 0x6c, 0x20, 0x6c, 0x6f, 0x6b, 0x2019, 0x20, 0x4b,
-0x65, 0x6e, 0x79, 0x61, 0xe1a, 0xe32, 0xe17, 0xf61, 0xf74, 0xf0b, 0xf68, 0xf53, 0xf0b, 0xf62, 0xf92, 0xfb1, 0xf0b, 0xf42, 0xf62, 0xf0b,
-0xf66, 0xf92, 0xf7c, 0xf62, 0xf0b, 0x1293, 0x1255, 0x134b, 0x50, 0x61, 0x2bb, 0x61, 0x6e, 0x67, 0x61, 0x20, 0x66, 0x61, 0x6b, 0x61,
-0x74, 0x6f, 0x6e, 0x67, 0x61, 0x54, 0xfc, 0x72, 0x6b, 0x20, 0x4c, 0x69, 0x72, 0x61, 0x73, 0x131, 0x54, 0xfc, 0x72, 0x6b,
-0x6d, 0x65, 0x6e, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x64, 0x79, 0x443, 0x43a, 0x440, 0x430, 0x457, 0x43d, 0x441, 0x44c, 0x43a, 0x430,
-0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x44f, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6cc,
-0x6c1, 0x628, 0x6be, 0x627, 0x631, 0x62a, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6cc, 0x6c1, 0x62c, 0x6c7, 0x6ad, 0x6af, 0x648, 0x20, 0x64a,
-0x6c8, 0x6d5, 0x646, 0x649, 0x4f, 0x2018, 0x7a, 0x62, 0x65, 0x6b, 0x69, 0x73, 0x74, 0x6f, 0x6e, 0x20, 0x73, 0x6f, 0x2018, 0x6d,
-0x69, 0x40e, 0x437, 0x431, 0x435, 0x43a, 0x438, 0x441, 0x442, 0x43e, 0x43d, 0x20, 0x441, 0x45e, 0x43c, 0xa55e, 0xa524, 0xa52b, 0xa569, 0x20,
-0xa55c, 0xa55e, 0xa54c, 0x4c, 0x61, 0x69, 0x62, 0x68, 0x69, 0x79, 0x61, 0x20, 0x44, 0x61, 0x6c, 0x61, 0x110, 0x1ed3, 0x6e, 0x67,
-0x20, 0x56, 0x69, 0x1ec7, 0x74, 0x20, 0x4e, 0x61, 0x6d, 0x50, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69,
-0x6e, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x41, 0x20, 0x62, 0x75, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x20,
-0x53, 0x6f, 0x77, 0x77, 0x75, 0x2d, 0x6a, 0x61, 0x6e, 0x74, 0x69, 0x52, 0x61, 0x6e, 0x64, 0x69, 0x20, 0x79, 0x61, 0x73,
-0x65, 0x4d, 0x7a, 0x61, 0x6e, 0x7a, 0x69, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x4e, 0xe1, 0xed, 0x72, 0xe0, 0x20,
-0x4e, 0xe0, 0xec, 0x6a, 0xed, 0x72, 0xed, 0xe0, 0x46, 0x61, 0x72, 0x61, 0x6e, 0x73, 0xec, 0x20, 0xec, 0x77, 0x254, 0x300,
-0x2d, 0x6f, 0x6f, 0x72, 0xf9, 0x6e, 0x20, 0x41, 0x66, 0xed, 0x72, 0xed, 0x6b, 0xe0, 0x69, 0x2d, 0x53, 0x6f, 0x75, 0x74,
-0x68, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x52, 0x61, 0x6e, 0x64, 0x4d, 0x72, 0x61, 0x73, 0x69, 0x72,
-0x20, 0x52, 0x65, 0x6a, 0x61, 0x72, 0x52, 0x65, 0x61, 0x75, 0x20, 0x42, 0x72, 0x61, 0x73, 0x69, 0x75, 0x77, 0x61, 0x72,
-0x61, 0x50, 0x65, 0x73, 0x6f, 0x20, 0x4b, 0x75, 0x72, 0x169, 0x62, 0x69, 0x79, 0x61, 0x77, 0x61, 0x72, 0x61, 0x42, 0x75,
-0x72, 0x69, 0x77, 0x61, 0x72, 0x69, 0x20, 0x57, 0x65, 0x6e, 0x65, 0x73, 0x75, 0x65, 0x72, 0x61, 0x77, 0x61, 0x72, 0x61
+static constexpr char16_t currency_display_name_data[] = {
+0x53, 0x75, 0x69, 0x64, 0x2d, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x61,
+0x6e, 0x73, 0x65, 0x20, 0x72, 0x61, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x69,
+0x62, 0x69, 0x65, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72,
+0x43, 0x46, 0x41, 0x20, 0x46, 0xe0, 0x6c, 0xe2, 0x14b, 0x20, 0x42, 0x45,
+0x41, 0x43, 0x47, 0x68, 0x61, 0x6e, 0x61, 0x20, 0x53, 0x69, 0x64, 0x69,
+0x46, 0x72, 0xe2, 0x6e, 0x6b, 0x65, 0x20, 0x43, 0x46, 0x41, 0x4c, 0x65,
+0x6b, 0x75, 0x20, 0x73, 0x68, 0x71, 0x69, 0x70, 0x74, 0x61, 0x72, 0x45,
+0x75, 0x72, 0x6f, 0x6a, 0x61, 0x44, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x20,
+0x6d, 0x61, 0x71, 0x65, 0x64, 0x6f, 0x6e, 0x61, 0x73, 0x12e8, 0x12a2, 0x1275,
+0x12ee, 0x1335, 0x12eb, 0x20, 0x1265, 0x122d, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x645,
+0x635, 0x631, 0x64a, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x62c, 0x632, 0x627,
+0x626, 0x631, 0x64a, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x628, 0x62d, 0x631,
+0x64a, 0x646, 0x64a, 0x641, 0x631, 0x646, 0x643, 0x20, 0x648, 0x633, 0x637, 0x20,
+0x623, 0x641, 0x631, 0x64a, 0x642, 0x64a, 0x641, 0x631, 0x646, 0x643, 0x20, 0x62c,
+0x632, 0x631, 0x20, 0x627, 0x644, 0x642, 0x645, 0x631, 0x641, 0x631, 0x646, 0x643,
+0x20, 0x62c, 0x64a, 0x628, 0x648, 0x62a, 0x64a, 0x646, 0x627, 0x643, 0x641, 0x627,
+0x20, 0x623, 0x631, 0x64a, 0x62a, 0x631, 0x64a, 0x62f, 0x64a, 0x646, 0x627, 0x631,
+0x20, 0x639, 0x631, 0x627, 0x642, 0x64a, 0x634, 0x64a, 0x643, 0x644, 0x20, 0x625,
+0x633, 0x631, 0x627, 0x626, 0x64a, 0x644, 0x64a, 0x20, 0x62c, 0x62f, 0x64a, 0x62f,
+0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x623, 0x631, 0x62f, 0x646, 0x64a, 0x62f,
+0x64a, 0x646, 0x627, 0x631, 0x20, 0x643, 0x648, 0x64a, 0x62a, 0x64a, 0x62c, 0x646,
+0x64a, 0x647, 0x20, 0x644, 0x628, 0x646, 0x627, 0x646, 0x64a, 0x62f, 0x64a, 0x646,
+0x627, 0x631, 0x20, 0x644, 0x64a, 0x628, 0x64a, 0x623, 0x648, 0x642, 0x64a, 0x629,
+0x20, 0x645, 0x648, 0x631, 0x64a, 0x62a, 0x627, 0x646, 0x64a, 0x629, 0x62f, 0x631,
+0x647, 0x645, 0x20, 0x645, 0x63a, 0x631, 0x628, 0x64a, 0x631, 0x64a, 0x627, 0x644,
+0x20, 0x639, 0x645, 0x627, 0x646, 0x64a, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x642,
+0x637, 0x631, 0x64a, 0x631, 0x64a, 0x627, 0x644, 0x20, 0x633, 0x639, 0x648, 0x62f,
+0x64a, 0x634, 0x644, 0x646, 0x20, 0x635, 0x648, 0x645, 0x627, 0x644, 0x64a, 0x62c,
+0x646, 0x64a, 0x647, 0x20, 0x62c, 0x646, 0x648, 0x628, 0x20, 0x627, 0x644, 0x633,
+0x648, 0x62f, 0x627, 0x646, 0x62c, 0x646, 0x64a, 0x647, 0x20, 0x633, 0x648, 0x62f,
+0x627, 0x646, 0x64a, 0x644, 0x64a, 0x631, 0x629, 0x20, 0x633, 0x648, 0x631, 0x64a,
+0x629, 0x62f, 0x64a, 0x646, 0x627, 0x631, 0x20, 0x62a, 0x648, 0x646, 0x633, 0x64a,
+0x62f, 0x631, 0x647, 0x645, 0x20, 0x625, 0x645, 0x627, 0x631, 0x627, 0x62a, 0x64a,
+0x631, 0x64a, 0x627, 0x644, 0x20, 0x64a, 0x645, 0x646, 0x64a, 0x65, 0x75, 0x72,
+0x6f, 0x570, 0x561, 0x575, 0x56f, 0x561, 0x56f, 0x561, 0x576, 0x20, 0x564, 0x580,
+0x561, 0x574, 0x9ad, 0x9be, 0x9f0, 0x9a4, 0x9c0, 0x9af, 0x9bc, 0x20, 0x9f0, 0x9c1,
+0x9aa, 0x9c0, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79,
+0x61, 0x20, 0x54, 0x61, 0x6e, 0x64, 0x68, 0x61, 0x6e, 0x69, 0x61, 0x41,
+0x6d, 0x61, 0x6e, 0x41, 0x7a, 0x259, 0x72, 0x62, 0x61, 0x79, 0x63, 0x61,
+0x6e, 0x20, 0x4d, 0x61, 0x6e, 0x61, 0x74, 0x131, 0x43c, 0x430, 0x43d, 0x430,
+0x442, 0x66, 0x72, 0xe1, 0x14b, 0x73, 0x65, 0x66, 0x61, 0x20, 0x46, 0x72,
+0x61, 0x14b, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x9ac, 0x9be,
+0x982, 0x9b2, 0x9be, 0x9a6, 0x9c7, 0x9b6, 0x9c0, 0x20, 0x99f, 0x9be, 0x995, 0x9be,
+0x9ad, 0x9be, 0x9b0, 0x9a4, 0x9c0, 0x9af, 0x9bc, 0x20, 0x9b0, 0x9c1, 0x9aa, 0x9bf,
+0x46, 0x72, 0x1ce, 0x14b, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45,
+0x41, 0x43, 0x29, 0x65, 0x75, 0x72, 0x6f, 0x61, 0x431, 0x435, 0x43b, 0x430,
+0x440, 0x443, 0x441, 0x43a, 0x456, 0x20, 0x440, 0x443, 0x431, 0x435, 0x43b, 0x44c,
+0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20,
+0x48, 0x75, 0x74, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x92d, 0x93e,
+0x930, 0x924, 0x928, 0x93f, 0x20, 0x930, 0x941, 0x92a, 0x940, 0x42, 0x6f, 0x73,
+0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x68, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f,
+0x76, 0x61, 0x10d, 0x6b, 0x61, 0x20, 0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72,
+0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x61, 0x20, 0x6d, 0x61, 0x72, 0x6b,
+0x61, 0x41a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b,
+0x43d, 0x430, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x430, 0x411, 0x44a, 0x43b, 0x433,
+0x430, 0x440, 0x441, 0x43a, 0x438, 0x20, 0x43b, 0x435, 0x432, 0x1019, 0x103c, 0x1014,
+0x103a, 0x1019, 0x102c, 0x20, 0x1000, 0x103b, 0x1015, 0x103a, 0x6e2f, 0x5e63, 0x4eba, 0x6c11,
+0x5e01, 0x50, 0x68, 0x69, 0x6c, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x20,
+0x50, 0x65, 0x73, 0x6f, 0x44, 0x65, 0x72, 0x68, 0x65, 0x6d, 0x20, 0x55,
+0x6d, 0x65, 0x1e5b, 0x1e5b, 0x75, 0x6b, 0x69, 0x62f, 0x6cc, 0x646, 0x627, 0x631,
+0x6cc, 0x20, 0x639, 0x6ce, 0x631, 0x627, 0x642, 0x6cc, 0x695, 0x6cc, 0x627, 0x6b5,
+0x6cc, 0x20, 0x626, 0x6ce, 0x631, 0x627, 0x646, 0x6cc, 0xd804, 0xdd1d, 0xd804, 0xdd01,
+0xd804, 0xdd23, 0xd804, 0xdd18, 0xd804, 0xdd2c, 0xd804, 0xdd25, 0xd804, 0xdd28, 0x20, 0xd804,
+0xdd11, 0xd804, 0xdd2c, 0xd804, 0xdd0b, 0xd804, 0xdd03, 0xd804, 0xdd28, 0xd804, 0xdd1a, 0xd804,
+0xdd34, 0xd804, 0xdd18, 0xd804, 0xdd28, 0xd804, 0xdd20, 0xd804, 0xdd1a, 0xd804, 0xdd34, 0x20,
+0xd804, 0xdd22, 0xd804, 0xdd2a, 0xd804, 0xdd1b, 0xd804, 0xdd28, 0x420, 0x43e, 0x441, 0x441,
+0x438, 0x439, 0x43d, 0x20, 0x441, 0x43e, 0x43c, 0x55, 0x53, 0x20, 0x13a0, 0x13d5,
+0x13b3, 0x45, 0x73, 0x68, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79,
+0x61, 0x20, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x6e2f, 0x5143, 0x6fb3, 0x95e8,
+0x5e01, 0x65b0, 0x52a0, 0x5761, 0x5143, 0x6fb3, 0x9580, 0x5143, 0x65b0, 0x53f0, 0x5e63, 0x440,
+0x461, 0x441, 0x441, 0x456, 0x301, 0x439, 0x441, 0x43a, 0x457, 0x439, 0x20, 0x440,
+0xa64b, 0x301, 0x431, 0x43b, 0x44c, 0x420, 0x430, 0x4ab, 0x4ab, 0x435, 0x439, 0x20,
+0x442, 0x435, 0x43d, 0x43a, 0x4d7, 0x10d, 0x65, 0x73, 0x6b, 0xe1, 0x20, 0x6b,
+0x6f, 0x72, 0x75, 0x6e, 0x61, 0x64, 0x61, 0x6e, 0x73, 0x6b, 0x20, 0x6b,
+0x72, 0x6f, 0x6e, 0x65, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x20, 0x930, 0x92a,
+0x947, 0x93d, 0x41, 0x72, 0x75, 0x62, 0x61, 0x61, 0x6e, 0x73, 0x65, 0x20,
+0x67, 0x75, 0x6c, 0x64, 0x65, 0x6e, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x6b,
+0x61, 0x61, 0x6e, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72,
+0x4e, 0x65, 0x64, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x2d, 0x41,
+0x6e, 0x74, 0x69, 0x6c, 0x6c, 0x69, 0x61, 0x61, 0x6e, 0x73, 0x65, 0x20,
+0x67, 0x75, 0x6c, 0x64, 0x65, 0x6e, 0x53, 0x75, 0x72, 0x69, 0x6e, 0x61,
+0x61, 0x6d, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0xf51,
+0xf44, 0xf74, 0xf63, 0xf0b, 0xf40, 0xfb2, 0xf58, 0x53, 0x68, 0x69, 0x6c, 0x69,
+0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61,
+0x55, 0x53, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x45, 0x61, 0x73,
+0x74, 0x20, 0x43, 0x61, 0x72, 0x69, 0x62, 0x62, 0x65, 0x61, 0x6e, 0x20,
+0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61,
+0x6c, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x42,
+0x61, 0x68, 0x61, 0x6d, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c,
+0x61, 0x72, 0x42, 0x61, 0x72, 0x62, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x20,
+0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x42, 0x65, 0x6c, 0x69, 0x7a, 0x65,
+0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x42, 0x65, 0x72, 0x6d, 0x75,
+0x64, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x42,
+0x6f, 0x74, 0x73, 0x77, 0x61, 0x6e, 0x61, 0x6e, 0x20, 0x50, 0x75, 0x6c,
+0x61, 0x42, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x46,
+0x72, 0x61, 0x6e, 0x63, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x20,
+0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x43, 0x46, 0x41, 0x20,
+0x46, 0x72, 0x61, 0x6e, 0x63, 0x43, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x61,
+0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x43, 0x61, 0x79, 0x6d,
+0x61, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x44,
+0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x4e, 0x65, 0x77, 0x20, 0x5a, 0x65, 0x61,
+0x6c, 0x61, 0x6e, 0x64, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x44,
+0x61, 0x6e, 0x69, 0x73, 0x68, 0x20, 0x4b, 0x72, 0x6f, 0x6e, 0x65, 0x45,
+0x72, 0x69, 0x74, 0x72, 0x65, 0x61, 0x6e, 0x20, 0x4e, 0x61, 0x6b, 0x66,
+0x61, 0x53, 0x77, 0x61, 0x7a, 0x69, 0x20, 0x4c, 0x69, 0x6c, 0x61, 0x6e,
+0x67, 0x65, 0x6e, 0x69, 0x46, 0x61, 0x6c, 0x6b, 0x6c, 0x61, 0x6e, 0x64,
+0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x50, 0x6f, 0x75,
+0x6e, 0x64, 0x46, 0x69, 0x6a, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c,
+0x6c, 0x61, 0x72, 0x47, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x6e, 0x20, 0x44,
+0x61, 0x6c, 0x61, 0x73, 0x69, 0x47, 0x68, 0x61, 0x6e, 0x61, 0x69, 0x61,
+0x6e, 0x20, 0x43, 0x65, 0x64, 0x69, 0x47, 0x69, 0x62, 0x72, 0x61, 0x6c,
+0x74, 0x61, 0x72, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x4b, 0x20,
+0x50, 0x6f, 0x75, 0x6e, 0x64, 0x47, 0x75, 0x79, 0x61, 0x6e, 0x61, 0x65,
+0x73, 0x65, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x48, 0x6f, 0x6e,
+0x67, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61,
+0x72, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x52, 0x75, 0x70, 0x65,
+0x65, 0x49, 0x6e, 0x64, 0x6f, 0x6e, 0x65, 0x73, 0x69, 0x61, 0x6e, 0x20,
+0x52, 0x75, 0x70, 0x69, 0x61, 0x68, 0x49, 0x73, 0x72, 0x61, 0x65, 0x6c,
+0x69, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x53, 0x68, 0x65, 0x6b, 0x65, 0x6c,
+0x4a, 0x61, 0x6d, 0x61, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c,
+0x6c, 0x61, 0x72, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x6e, 0x20, 0x53, 0x68,
+0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20,
+0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x52, 0x61, 0x6e, 0x64,
+0x4c, 0x69, 0x62, 0x65, 0x72, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c,
+0x6c, 0x61, 0x72, 0x4d, 0x61, 0x63, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20,
+0x50, 0x61, 0x74, 0x61, 0x63, 0x61, 0x4d, 0x61, 0x6c, 0x61, 0x67, 0x61,
+0x73, 0x79, 0x20, 0x41, 0x72, 0x69, 0x61, 0x72, 0x79, 0x4d, 0x61, 0x6c,
+0x61, 0x77, 0x69, 0x61, 0x6e, 0x20, 0x4b, 0x77, 0x61, 0x63, 0x68, 0x61,
+0x4d, 0x61, 0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x6e, 0x20, 0x52, 0x69,
+0x6e, 0x67, 0x67, 0x69, 0x74, 0x4d, 0x61, 0x6c, 0x64, 0x69, 0x76, 0x69,
+0x61, 0x6e, 0x20, 0x52, 0x75, 0x66, 0x69, 0x79, 0x61, 0x61, 0x4d, 0x61,
+0x75, 0x72, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x20, 0x52, 0x75, 0x70, 0x65,
+0x65, 0x4e, 0x61, 0x6d, 0x69, 0x62, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x6f,
+0x6c, 0x6c, 0x61, 0x72, 0x4e, 0x69, 0x67, 0x65, 0x72, 0x69, 0x61, 0x6e,
+0x20, 0x4e, 0x61, 0x69, 0x72, 0x61, 0x50, 0x61, 0x6b, 0x69, 0x73, 0x74,
+0x61, 0x6e, 0x69, 0x20, 0x52, 0x75, 0x70, 0x65, 0x65, 0x50, 0x61, 0x70,
+0x75, 0x61, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x47, 0x75, 0x69, 0x6e, 0x65,
+0x61, 0x6e, 0x20, 0x4b, 0x69, 0x6e, 0x61, 0x52, 0x77, 0x61, 0x6e, 0x64,
+0x61, 0x6e, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x53, 0x74, 0x20, 0x48,
+0x65, 0x6c, 0x65, 0x6e, 0x61, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x53,
+0x61, 0x6d, 0x6f, 0x61, 0x6e, 0x20, 0x54, 0x61, 0x6c, 0x61, 0x53, 0x65,
+0x79, 0x63, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x69, 0x73, 0x20, 0x52, 0x75,
+0x70, 0x65, 0x65, 0x53, 0x69, 0x65, 0x72, 0x72, 0x61, 0x20, 0x4c, 0x65,
+0x6f, 0x6e, 0x65, 0x61, 0x6e, 0x20, 0x4c, 0x65, 0x6f, 0x6e, 0x65, 0x53,
+0x69, 0x6e, 0x67, 0x61, 0x70, 0x6f, 0x72, 0x65, 0x20, 0x44, 0x6f, 0x6c,
+0x6c, 0x61, 0x72, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6c, 0x61, 0x6e,
+0x64, 0x73, 0x20, 0x41, 0x6e, 0x74, 0x69, 0x6c, 0x6c, 0x65, 0x61, 0x6e,
+0x20, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x53, 0x6f, 0x6c, 0x6f,
+0x6d, 0x6f, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20,
+0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20,
+0x53, 0x75, 0x64, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x50, 0x6f, 0x75,
+0x6e, 0x64, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x50,
+0x6f, 0x75, 0x6e, 0x64, 0x53, 0x77, 0x65, 0x64, 0x69, 0x73, 0x68, 0x20,
+0x4b, 0x72, 0x6f, 0x6e, 0x61, 0x53, 0x77, 0x69, 0x73, 0x73, 0x20, 0x46,
+0x72, 0x61, 0x6e, 0x63, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61,
+0x6e, 0x20, 0x53, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x6f,
+0x6e, 0x67, 0x61, 0x6e, 0x20, 0x50, 0x61, 0x2bb, 0x61, 0x6e, 0x67, 0x61,
+0x54, 0x72, 0x69, 0x6e, 0x69, 0x64, 0x61, 0x64, 0x20, 0x26, 0x20, 0x54,
+0x6f, 0x62, 0x61, 0x67, 0x6f, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72,
+0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x6e, 0x20, 0x53, 0x68, 0x69, 0x6c,
+0x6c, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x74, 0x65, 0x64, 0x20, 0x41,
+0x72, 0x61, 0x62, 0x20, 0x45, 0x6d, 0x69, 0x72, 0x61, 0x74, 0x65, 0x73,
+0x20, 0x44, 0x69, 0x72, 0x68, 0x61, 0x6d, 0x42, 0x72, 0x69, 0x74, 0x69,
+0x73, 0x68, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x56, 0x61, 0x6e, 0x75,
+0x61, 0x74, 0x75, 0x20, 0x56, 0x61, 0x74, 0x75, 0x5a, 0x61, 0x6d, 0x62,
+0x69, 0x61, 0x6e, 0x20, 0x4b, 0x77, 0x61, 0x63, 0x68, 0x61, 0x67, 0x68,
+0x61, 0x6e, 0x61, 0x20, 0x73, 0x69, 0x256, 0x69, 0x263, 0x65, 0x74, 0x6f,
+0x256, 0x6f, 0x66, 0x65, 0x20, 0x61, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x67,
+0x61, 0x20, 0x43, 0x46, 0x41, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20,
+0x42, 0x43, 0x45, 0x41, 0x4f, 0x46, 0x259, 0x6c, 0xe1, 0x14b, 0x20, 0x43,
+0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x64, 0x6f, 0x6e,
+0x73, 0x6b, 0x20, 0x6b, 0x72, 0xf3, 0x6e, 0x61, 0x50, 0x69, 0x73, 0x6f,
+0x20, 0x6e, 0x67, 0x20, 0x50, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x61,
+0x73, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x20, 0x61, 0x6c, 0x67, 0xe9, 0x72,
+0x69, 0x65, 0x6e, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x41,
+0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x66, 0x72, 0x61, 0x6e,
+0x63, 0x20, 0x62, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x61, 0x69, 0x73, 0x66,
+0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45,
+0x41, 0x43, 0x29, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x20, 0x63, 0x61,
+0x6e, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20,
+0x63, 0x6f, 0x6d, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x66, 0x72, 0x61, 0x6e,
+0x63, 0x20, 0x63, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x69, 0x73, 0x66,
+0x72, 0x61, 0x6e, 0x63, 0x20, 0x64, 0x6a, 0x69, 0x62, 0x6f, 0x75, 0x74,
+0x69, 0x65, 0x6e, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x50,
+0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x67, 0x75, 0x69, 0x6e, 0xe9, 0x65,
+0x6e, 0x67, 0x6f, 0x75, 0x72, 0x64, 0x65, 0x20, 0x68, 0x61, 0xef, 0x74,
+0x69, 0x65, 0x6e, 0x6e, 0x65, 0x61, 0x72, 0x69, 0x61, 0x72, 0x79, 0x20,
+0x6d, 0x61, 0x6c, 0x67, 0x61, 0x63, 0x68, 0x65, 0x6f, 0x75, 0x67, 0x75,
+0x69, 0x79, 0x61, 0x20, 0x6d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x61, 0x6e,
+0x69, 0x65, 0x6e, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x65, 0x20, 0x6d, 0x61,
+0x75, 0x72, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x64, 0x69, 0x72,
+0x68, 0x61, 0x6d, 0x20, 0x6d, 0x61, 0x72, 0x6f, 0x63, 0x61, 0x69, 0x6e,
+0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x72, 0x77, 0x61, 0x6e, 0x64, 0x61,
+0x69, 0x73, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x65, 0x20, 0x64, 0x65, 0x73,
+0x20, 0x53, 0x65, 0x79, 0x63, 0x68, 0x65, 0x6c, 0x6c, 0x65, 0x73, 0x66,
+0x72, 0x61, 0x6e, 0x63, 0x20, 0x73, 0x75, 0x69, 0x73, 0x73, 0x65, 0x6c,
+0x69, 0x76, 0x72, 0x65, 0x20, 0x73, 0x79, 0x72, 0x69, 0x65, 0x6e, 0x6e,
+0x65, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x20, 0x74, 0x75, 0x6e, 0x69, 0x73,
+0x69, 0x65, 0x6e, 0x76, 0x61, 0x74, 0x75, 0x20, 0x76, 0x61, 0x6e, 0x75,
+0x61, 0x74, 0x75, 0x61, 0x6e, 0x4d, 0x62, 0x75, 0x75, 0x257, 0x75, 0x20,
+0x53, 0x65, 0x65, 0x66, 0x61, 0x61, 0x20, 0x42, 0x43, 0x45, 0x41, 0x4f,
+0xd83a, 0xdd0a, 0xd83a, 0xdd22, 0xd83a, 0xdd2a, 0xd83a, 0xdd22, 0xd83a, 0xdd32, 0x20, 0xd83a,
+0xdd05, 0xd83a, 0xdd0a, 0xd83a, 0xdd00, 0x20, 0xd83a, 0xdd16, 0xd83a, 0xdd2d, 0xd83a, 0xdd45,
+0xd83a, 0xdd2a, 0xd83a, 0xdd32, 0xd83a, 0xdd22, 0xd83a, 0xdd44, 0xd83a, 0xdd32, 0xd83a, 0xdd3a,
+0xd83a, 0xdd2b, 0x20, 0xd83a, 0xdd00, 0xd83a, 0xdd2c, 0xd83a, 0xdd2a, 0xd83a, 0xdd2d, 0xd83a,
+0xdd33, 0xd83a, 0xdd22, 0xd83a, 0xdd0a, 0xd83a, 0xdd22, 0xd83a, 0xdd2a, 0xd83a, 0xdd22, 0xd83a,
+0xdd32, 0x20, 0xd83a, 0xdd1a, 0xd83a, 0xdd35, 0xd83a, 0xdd26, 0xd83a, 0xdd2e, 0xd83a, 0xdd45,
+0xd83a, 0xdd2a, 0xd83a, 0xdd2d, 0x20, 0xd83a, 0xdd00, 0xd83a, 0xdd2c, 0xd83a, 0xdd2a, 0xd83a,
+0xdd2d, 0xd83a, 0xdd33, 0xd83a, 0xdd2d, 0xd83a, 0xdd32, 0xd83a, 0xdd33, 0xd83a, 0xdd2e, 0xd83a,
+0xdd01, 0xd83a, 0xdd22, 0xd83a, 0xdd24, 0xd83a, 0xdd22, 0xd83a, 0xdd27, 0xd83a, 0xdd2d, 0x20,
+0xd83a, 0xdd18, 0xd83a, 0xdd22, 0xd83a, 0xdd25, 0xd83a, 0xdd26, 0xd83a, 0xdd2d, 0xd83a, 0xdd32,
+0xd83a, 0xdd33, 0xd83a, 0xdd2e, 0xd83a, 0xdd05, 0xd83a, 0xdd2d, 0xd83a, 0xdd23, 0xd83a, 0xdd2d,
+0x20, 0xd83a, 0xdd18, 0xd83a, 0xdd22, 0xd83a, 0xdd32, 0xd83a, 0xdd22, 0xd83a, 0xdd32, 0xd83a,
+0xdd33, 0xd83a, 0xdd2e, 0xd83a, 0xdd0a, 0xd83a, 0xdd22, 0xd83a, 0xdd2a, 0xd83a, 0xdd22, 0xd83a,
+0xdd32, 0x20, 0xd83a, 0xdd18, 0xd83a, 0xdd2d, 0xd83a, 0xdd32, 0xd83a, 0xdd2b, 0xd83a, 0xdd32,
+0xd83a, 0xdd33, 0xd83a, 0xdd2e, 0xd83a, 0xdd01, 0xd83a, 0xdd22, 0xd83a, 0xdd24, 0xd83a, 0xdd22,
+0x20, 0xd83a, 0xdd02, 0xd83a, 0xdd2d, 0xd83a, 0xdd26, 0xd83a, 0xdd2b, 0xd83a, 0xdd2a, 0xd83a,
+0xdd2d, 0xd83a, 0xdd34, 0xd83a, 0xdd22, 0xd83a, 0xdd32, 0xd83a, 0xdd33, 0xd83a, 0xdd2e, 0xd83a,
+0xdd13, 0xd83a, 0xdd3a, 0xd83a, 0xdd2d, 0xd83a, 0xdd34, 0xd83a, 0xdd22, 0x20, 0xd83a, 0xdd03,
+0xd83a, 0xdd2e, 0xd83a, 0xdd2a, 0xd83a, 0xdd2d, 0xd83a, 0xdd3c, 0xd83a, 0xdd22, 0xd83a, 0xdd32,
+0xd83a, 0xdd2d, 0xd83a, 0xdd34, 0xd83a, 0xdd22, 0xd83a, 0xdd32, 0xd83a, 0xdd33, 0xd83a, 0xdd2e,
+0xd83a, 0xdd10, 0xd83a, 0xdd22, 0xd83a, 0xdd34, 0xd83a, 0xdd2a, 0xd83a, 0xdd22, 0x20, 0xd83a,
+0xdd10, 0xd83a, 0xdd22, 0xd83a, 0xdd36, 0xd83a, 0xdd2d, 0xd83a, 0xdd2a, 0xd83a, 0xdd22, 0xd83a,
+0xdd34, 0xd83a, 0xdd22, 0xd83a, 0xdd32, 0xd83a, 0xdd33, 0xd83a, 0xdd2e, 0xd83a, 0xdd02, 0xd83a,
+0xdd2b, 0xd83a, 0xdd34, 0xd83a, 0xdd2e, 0xd83a, 0xdd32, 0x20, 0xd83a, 0xdd05, 0xd83a, 0xdd2b,
+0xd83a, 0xdd2a, 0xd83a, 0xdd22, 0xd83a, 0xdd24, 0xd83a, 0xdd2d, 0xd83a, 0xdd34, 0xd83a, 0xdd22,
+0xd83a, 0xdd32, 0xd83a, 0xdd33, 0xd83a, 0xdd2e, 0x4d, 0x62, 0x75, 0x75, 0x257, 0x69,
+0x20, 0x53, 0x65, 0x65, 0x66, 0x61, 0x61, 0x20, 0x42, 0x45, 0x41, 0x43,
+0x44, 0x61, 0x6c, 0x61, 0x73, 0x69, 0x20, 0x47, 0x61, 0x6d, 0x6d, 0x62,
+0x69, 0x44, 0x6f, 0x6c, 0x61, 0x61, 0x72, 0x20, 0x4c, 0x69, 0x62, 0x65,
+0x72, 0x69, 0x79, 0x61, 0x61, 0x55, 0x67, 0x69, 0x79, 0x79, 0x61, 0x20,
+0x4d, 0x75, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x4e, 0x61, 0x79, 0x72,
+0x61, 0x61, 0x20, 0x4e, 0x69, 0x6a, 0x65, 0x72, 0x69, 0x79, 0x61, 0x61,
+0x4c, 0x65, 0x77, 0x6f, 0x6f, 0x6e, 0x20, 0x53, 0x65, 0x72, 0x61, 0x61,
+0x20, 0x4c, 0x69, 0x79, 0x6f, 0x6e, 0x50, 0x75, 0x6e, 0x6e, 0x64, 0x20,
+0x53, 0x61, 0x73, 0x61, 0x6e, 0x6e, 0x61, 0x63, 0x68, 0x53, 0x69, 0x6c,
+0x69, 0x6e, 0x67, 0x69, 0x20, 0x65, 0x79, 0x61, 0x20, 0x59, 0x75, 0x67,
+0x61, 0x6e, 0x64, 0x61, 0x10e5, 0x10d0, 0x10e0, 0x10d7, 0x10e3, 0x10da, 0x10d8, 0x20,
+0x10da, 0x10d0, 0x10e0, 0x10d8, 0x53, 0x63, 0x68, 0x77, 0x65, 0x69, 0x7a, 0x65,
+0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x6e, 0x395, 0x3c5, 0x3c1,
+0x3ce, 0xaad, 0xabe, 0xab0, 0xaa4, 0xac0, 0xaaf, 0x20, 0xab0, 0xac2, 0xaaa, 0xabf,
+0xaaf, 0xabe, 0x4e, 0x61, 0x69, 0x72, 0x61, 0x72, 0x20, 0x4e, 0x61, 0x6a,
+0x65, 0x72, 0x69, 0x79, 0x61, 0x646, 0x64e, 0x64a, 0x652, 0x631, 0x64e, 0x53,
+0x69, 0x64, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x47, 0x68, 0x61, 0x6e, 0x61,
+0x4b, 0x75, 0x257, 0x69, 0x6e, 0x20, 0x53, 0x65, 0x66, 0x61, 0x20, 0x6e,
+0x61, 0x20, 0x41, 0x66, 0x69, 0x72, 0x6b, 0x61, 0x20, 0x54, 0x61, 0x20,
+0x59, 0x61, 0x6d, 0x6d, 0x61, 0x5e9, 0x5e7, 0x5dc, 0x20, 0x5d7, 0x5d3, 0x5e9,
+0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x93e,
+0x6d, 0x61, 0x67, 0x79, 0x61, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x69, 0x6e,
+0x74, 0xed, 0x73, 0x6c, 0x65, 0x6e, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0xf3,
+0x6e, 0x61, 0x4e, 0x61, 0x1ecb, 0x72, 0x61, 0x52, 0x75, 0x70, 0x69, 0x61,
+0x68, 0x20, 0x49, 0x6e, 0x64, 0x6f, 0x6e, 0x65, 0x73, 0x69, 0x61, 0x50,
+0x75, 0x6e, 0x74, 0x20, 0x53, 0x74, 0x65, 0x69, 0x72, 0x6c, 0x69, 0x6e,
+0x67, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x73, 0x76, 0x69, 0x7a,
+0x7a, 0x65, 0x72, 0x6f, 0x65e5, 0x672c, 0x5186, 0x41, 0x331, 0x6e, 0x61, 0x69,
+0x72, 0x61, 0x73, 0x65, 0x65, 0x66, 0x61, 0x20, 0x79, 0x61, 0x74, 0x69,
+0x20, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x53, 0x6b, 0x75, 0x64, 0x75, 0x20,
+0x4b, 0x61, 0x62, 0x75, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x75,
+0x41, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x20, 0x41, 0x7a, 0x7a, 0x61, 0x79,
+0x72, 0x69, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x41, 0x64,
+0x61, 0x6e, 0x6d, 0x61, 0x72, 0x6b, 0x69, 0x6d, 0x75, 0x74, 0x20, 0x6b,
+0x6f, 0x72, 0x75, 0x75, 0x6e, 0x69, 0x53, 0x69, 0x6c, 0x69, 0x6e, 0x67,
+0x69, 0x74, 0x61, 0x62, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79,
+0x61, 0x53, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20,
+0x4b, 0x65, 0x6e, 0x79, 0x61, 0xcad, 0xcbe, 0xcb0, 0xca4, 0xcc0, 0xcaf, 0x20,
+0xcb0, 0xcc2, 0xcaa, 0xcbe, 0xcaf, 0xcbf, 0x6c1, 0x650, 0x646, 0x62f, 0x64f, 0x633,
+0x62a, 0x672, 0x646, 0x6cd, 0x20, 0x631, 0x6c4, 0x67e, 0x64e, 0x6d2, 0x907, 0x902,
+0x921, 0x93f, 0x92f, 0x928, 0x20, 0x930, 0x942, 0x92a, 0x940, 0x49a, 0x430, 0x437,
+0x430, 0x49b, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x442, 0x435, 0x4a3, 0x433, 0x435,
+0x441, 0x456, 0x179a, 0x17c0, 0x179b, 0x200b, 0x1780, 0x1798, 0x17d2, 0x1796, 0x17bb, 0x1787,
+0x17b6, 0x43, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20,
+0x4b, 0x65, 0x6e, 0x79, 0x61, 0xb300, 0xd55c, 0xbbfc, 0xad6d, 0x20, 0xc6d0, 0xc911,
+0xad6d, 0x20, 0xc704, 0xc548, 0xd654, 0xc870, 0xc120, 0x20, 0xbbfc, 0xc8fc, 0xc8fc, 0xc758,
+0x20, 0xc778, 0xbbfc, 0x20, 0xacf5, 0xd654, 0xad6d, 0x20, 0xc6d0, 0x43, 0x46, 0x41,
+0x20, 0x46, 0x72, 0x61, 0x14b, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f,
+0x29, 0x6c, 0xee, 0x72, 0x65, 0x79, 0xea, 0x20, 0x74, 0x69, 0x72, 0x6b,
+0xee, 0x46, 0x72, 0x61, 0x14b, 0x20, 0x43, 0x46, 0x41, 0x20, 0x42, 0x45,
+0x41, 0x43, 0x41a, 0x44b, 0x440, 0x433, 0x44b, 0x437, 0x441, 0x442, 0x430, 0x43d,
+0x20, 0x441, 0x43e, 0x43c, 0x443, 0x53, 0x68, 0x69, 0x6c, 0xed, 0x69, 0x6e,
+0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x61, 0x6e, 0x73, 0x61,
+0x6e, 0xed, 0x61, 0xea5, 0xeb2, 0xea7, 0x20, 0xe81, 0xeb5, 0xe9a, 0x65, 0x69,
+0x72, 0x6f, 0x46, 0x61, 0x6c, 0xe1, 0x6e, 0x67, 0x61, 0x20, 0x79, 0x61,
+0x20, 0x4b, 0x6f, 0x6e, 0x67, 0xf3, 0x4b, 0x77, 0x61, 0x6e, 0x7a, 0x61,
+0x20, 0x79, 0x61, 0x20, 0x41, 0x6e, 0x67, 0xf3, 0x6c, 0x61, 0x46, 0x61,
+0x6c, 0xe1, 0x6e, 0x67, 0x61, 0x20, 0x43, 0x46, 0x41, 0x20, 0x42, 0x45,
+0x41, 0x43, 0x45, 0x75, 0x72, 0x61, 0x73, 0x4e, 0x66, 0x61, 0x6c, 0x61,
+0x6e, 0x67, 0x61, 0x20, 0x77, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x75,
+0x53, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x4b,
+0x65, 0x6e, 0x79, 0x61, 0x53, 0x69, 0x72, 0x69, 0x6e, 0x6a, 0x69, 0x20,
+0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x41c, 0x430, 0x43a, 0x435,
+0x434, 0x43e, 0x43d, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x435, 0x43d, 0x430, 0x440,
+0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20,
+0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0xd07, 0xd28, 0xd4d, 0xd24,
+0xd4d, 0xd2f, 0xd7b, 0x20, 0xd30, 0xd42, 0xd2a, 0x52, 0x69, 0x6e, 0x67, 0x67,
+0x69, 0x74, 0x20, 0x4d, 0x61, 0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x62f,
+0x648, 0x644, 0x631, 0x20, 0x628, 0x631, 0x648, 0x646, 0x64a, 0x631, 0x64a, 0x6a0,
+0x762, 0x64a, 0x62a, 0x20, 0x645, 0x644, 0x64a, 0x633, 0x64a, 0x627, 0x44, 0x6f,
+0x6c, 0x61, 0x72, 0x20, 0x42, 0x72, 0x75, 0x6e, 0x65, 0x69, 0x44, 0x6f,
+0x6c, 0x61, 0x72, 0x20, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x75, 0x72,
+0x61, 0x65, 0x77, 0x72, 0x6f, 0x987, 0x9a8, 0x9cd, 0x9a6, 0x9bf, 0x9af, 0x9bc,
+0x9be, 0x9a8, 0x20, 0x9b0, 0x9c1, 0x9aa, 0x9c0, 0x54, 0x101, 0x72, 0x61, 0x20,
+0x6f, 0x20, 0x41, 0x6f, 0x74, 0x65, 0x61, 0x72, 0x6f, 0x61, 0x49, 0x72,
+0x6f, 0x70, 0x69, 0x79, 0x69, 0x61, 0x6e, 0xed, 0x20, 0x65, 0x20, 0x4b,
+0x65, 0x6e, 0x79, 0x61, 0x49, 0x72, 0x6f, 0x70, 0x69, 0x79, 0x69, 0x61,
+0x6e, 0xed, 0x20, 0x65, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69,
+0x61, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x20, 0x631, 0x6cc, 0x627, 0x644, 0x73,
+0x68, 0x69, 0x72, 0xe8, 0x41c, 0x43e, 0x43d, 0x433, 0x43e, 0x43b, 0x20, 0x442,
+0x4e9, 0x433, 0x440, 0x4e9, 0x433, 0x44e, 0x430, 0x43d, 0x44c, 0x1833, 0x1825, 0x182c,
+0x1825, 0x1837, 0x1822, 0x182d, 0x180c, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x20, 0x6d,
+0x6f, 0x72, 0x69, 0x73, 0x69, 0x65, 0x6e, 0x73, 0x6f, 0x6c, 0x61, 0x69,
+0x20, 0x42, 0x45, 0x41, 0x43, 0x4e, 0x61, 0x6d, 0x69, 0x62, 0x69, 0x61,
+0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x69, 0x928, 0x947, 0x92a, 0x93e,
+0x932, 0x940, 0x20, 0x930, 0x942, 0x92a, 0x948, 0x92f, 0x93e, 0x901, 0x92d, 0x93e,
+0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x942, 0x92a, 0x93f, 0x901, 0x92f, 0x93e,
+0x66, 0x65, 0x6c, 0xe1, 0x14b, 0x20, 0x43, 0x46, 0x41, 0x46, 0x25b, 0x6c,
+0xe2, 0x14b, 0x4e, 0x61, 0x69, 0x6a, 0xed, 0x72, 0x69, 0xe1, 0x20, 0x4e,
+0x61, 0xed, 0x72, 0x61, 0x7d6, 0x7cc, 0x7ec, 0x7e3, 0x7cd, 0x7ec, 0x7de, 0x7ca,
+0x20, 0x7df, 0x7ce, 0x7ec, 0x20, 0x7df, 0x7ca, 0x7eb, 0x20, 0x7dd, 0x7ca, 0x7d9,
+0x7ca, 0x7f2, 0x6e, 0x6f, 0x72, 0x67, 0x67, 0x61, 0x20, 0x6b, 0x72, 0x75,
+0x76, 0x64, 0x6e, 0x6f, 0x72, 0x75, 0x6f, 0x167, 0x167, 0x61, 0x20, 0x6b,
+0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x44, 0x6f, 0x6c, 0x61, 0x20, 0x79,
+0x61, 0x73, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x6c, 0x69, 0x6b, 0x61, 0x6e,
+0x6f, 0x72, 0x73, 0x6b, 0x65, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x65, 0x72,
+0xb2d, 0xb3e, 0xb30, 0xb24, 0xb40, 0xb5f, 0x20, 0xb1f, 0xb19, 0xb4d, 0xb15, 0xb3e,
+0x49, 0x74, 0x6f, 0x6f, 0x70, 0x68, 0x69, 0x79, 0x61, 0x61, 0x20, 0x42,
+0x69, 0x72, 0x72, 0x69, 0x69, 0x41b, 0x430, 0x440, 0x421, 0x43e, 0x43c, 0x46,
+0x6c, 0x6f, 0x72, 0x69, 0x6e, 0x46, 0x6c, 0x6f, 0x72, 0x69, 0x6e, 0x20,
+0x64, 0x69, 0x20, 0x41, 0x72, 0x75, 0x62, 0x61, 0x627, 0x641, 0x63a, 0x627,
+0x646, 0x6cd, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cd, 0x20, 0x6a9,
+0x644, 0x62f, 0x627, 0x631, 0x647, 0x631, 0x6cc, 0x627, 0x644, 0x20, 0x627, 0x6cc,
+0x631, 0x627, 0x646, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cc, 0x20, 0x627, 0x641,
+0x63a, 0x627, 0x646, 0x633, 0x62a, 0x627, 0x646, 0x7a, 0x142, 0x6f, 0x74, 0x79,
+0x20, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x52, 0x65, 0x61, 0x6c, 0x20,
+0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0x69, 0x72, 0x6f, 0x6b, 0x77,
+0x61, 0x6e, 0x7a, 0x61, 0x20, 0x61, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x6e,
+0x6f, 0x65, 0x73, 0x63, 0x75, 0x64, 0x6f, 0x20, 0x63, 0x61, 0x62, 0x6f,
+0x2d, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x6f, 0x66, 0x72, 0x61,
+0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41,
+0x43, 0x29, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, 0x41,
+0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x70, 0x61, 0x74, 0x61,
+0x63, 0x61, 0x20, 0x6d, 0x61, 0x63, 0x61, 0x65, 0x6e, 0x73, 0x65, 0x6d,
+0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x6f, 0xe7, 0x61, 0x6d,
+0x62, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x64, 0x6f, 0x62, 0x72, 0x61, 0x20,
+0x64, 0x65, 0x20, 0x53, 0xe3, 0x6f, 0x20, 0x54, 0x6f, 0x6d, 0xe9, 0x20,
+0x65, 0x20, 0x50, 0x72, 0xed, 0x6e, 0x63, 0x69, 0x70, 0x65, 0x66, 0x72,
+0x61, 0x6e, 0x63, 0x6f, 0x20, 0x73, 0x75, 0xed, 0xe7, 0x6f, 0x64, 0xf3,
+0x6c, 0x61, 0x72, 0x20, 0x64, 0x6f, 0x73, 0x20, 0x45, 0x73, 0x74, 0x61,
+0x64, 0x6f, 0x73, 0x20, 0x55, 0x6e, 0x69, 0x64, 0x6f, 0x73, 0xa2d, 0xa3e,
+0xa30, 0xa24, 0xa40, 0x20, 0xa30, 0xa41, 0xa2a, 0xa07, 0xa06, 0x631, 0x648, 0x67e,
+0x626, 0x6cc, 0x6c1, 0x53, 0x6f, 0x6c, 0x20, 0x50, 0x65, 0x72, 0x75, 0x61,
+0x6e, 0x6f, 0x42, 0x6f, 0x6c, 0x69, 0x76, 0x69, 0x61, 0x6e, 0x6f, 0x44,
+0xf3, 0x6c, 0x61, 0x72, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61,
+0x6e, 0x6f, 0x6c, 0x65, 0x75, 0x20, 0x72, 0x6f, 0x6d, 0xe2, 0x6e, 0x65,
+0x73, 0x63, 0x6c, 0x65, 0x75, 0x20, 0x6d, 0x6f, 0x6c, 0x64, 0x6f, 0x76,
+0x65, 0x6e, 0x65, 0x73, 0x63, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x73,
+0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, 0x68, 0x65, 0x6c, 0x65, 0x72, 0x69,
+0x20, 0x73, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61,
+0x49, 0x66, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x61, 0x20, 0x72, 0x79, 0x2019,
+0x55, 0x62, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x440, 0x43e, 0x441, 0x441,
+0x438, 0x439, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44c,
+0x431, 0x435, 0x43b, 0x43e, 0x440, 0x443, 0x441, 0x441, 0x43a, 0x438, 0x439, 0x20,
+0x440, 0x443, 0x431, 0x43b, 0x44c, 0x43a, 0x430, 0x437, 0x430, 0x445, 0x441, 0x43a,
+0x438, 0x439, 0x20, 0x442, 0x435, 0x43d, 0x433, 0x435, 0x43a, 0x438, 0x440, 0x433,
+0x438, 0x437, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x441, 0x43e, 0x43c, 0x43c, 0x43e,
+0x43b, 0x434, 0x430, 0x432, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x43b, 0x435, 0x439,
+0x443, 0x43a, 0x440, 0x430, 0x438, 0x43d, 0x441, 0x43a, 0x430, 0x44f, 0x20, 0x433,
+0x440, 0x438, 0x432, 0x43d, 0x430, 0x410, 0x440, 0x430, 0x441, 0x441, 0x44b, 0x44b,
+0x439, 0x430, 0x20, 0x441, 0x43e, 0x43b, 0x43a, 0x443, 0x43e, 0x431, 0x430, 0x439,
+0x430, 0x4e, 0x6a, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x65, 0x65,
+0x6c, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x66, 0x61, 0x72, 0xe2, 0x6e,
+0x67, 0x61, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43,
+0x29, 0x49, 0x68, 0x65, 0x6c, 0x61, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61,
+0x6e, 0x73, 0x61, 0x6e, 0x69, 0x79, 0x61, 0x92d, 0x93e, 0x930, 0x924, 0x940,
+0x92f, 0x20, 0x930, 0x942, 0x92a, 0x94d, 0x92f, 0x915, 0x92e, 0x94d, 0x1c65, 0x1c64,
+0x1c67, 0x1c5a, 0x1c5b, 0x20, 0x1c68, 0x1c6e, 0x1c71, 0x1c5f, 0x1c5c, 0x20, 0x1c74, 0x1c5f,
+0x1c60, 0x1c5f, 0xe8, 0x75, 0x72, 0x6f, 0x4d, 0x65, 0x74, 0x69, 0x63, 0x61,
+0x6c, 0x20, 0x64, 0x65, 0x20, 0x4d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69,
+0x71, 0x75, 0x65, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x438,
+0x43d, 0x430, 0x440, 0x411, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x445,
+0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x430, 0x20,
+0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d,
+0x430, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x430, 0x415, 0x432, 0x440, 0x43e, 0x45,
+0x76, 0x72, 0x6f, 0x73, 0x72, 0x70, 0x73, 0x6b, 0x69, 0x20, 0x64, 0x69,
+0x6e, 0x61, 0x72, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20,
+0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x44,
+0x6f, 0x72, 0x61, 0x20, 0x72, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69,
+0x6b, 0x61, 0x67e, 0x627, 0x6aa, 0x633, 0x62a, 0x627, 0x646, 0x64a, 0x20, 0x631,
+0x67e, 0x64a, 0x939, 0x93f, 0x902, 0x926, 0x941, 0x938, 0x94d, 0x924, 0x93e, 0x928,
+0x940, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x94b, 0xdc1, 0xdca, 0x200d, 0xdbb, 0xdd3,
+0x20, 0xdbd, 0xd82, 0xd9a, 0xdcf, 0x20, 0xdbb, 0xdd4, 0xdb4, 0xdd2, 0xdba, 0xdbd,
+0x65, 0x76, 0x72, 0x6f, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x6b,
+0x61, 0x20, 0x53, 0x6f, 0x6f, 0x6d, 0x61, 0x61, 0x6c, 0x69, 0x79, 0x61,
+0x46, 0x61, 0x72, 0x61, 0x6e, 0x20, 0x4a, 0x61, 0x62, 0x75, 0x75, 0x74,
+0x69, 0x42, 0x69, 0x72, 0x74, 0x61, 0x20, 0x49, 0x74, 0x6f, 0x6f, 0x62,
+0x62, 0x69, 0x79, 0x61, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x6b,
+0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x70, 0x65, 0x73, 0x6f, 0x20,
+0x61, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x6f, 0x64, 0xf3, 0x6c,
+0x61, 0x72, 0x20, 0x62, 0x65, 0x6c, 0x69, 0x63, 0x65, 0xf1, 0x6f, 0x62,
+0x6f, 0x6c, 0x69, 0x76, 0x69, 0x61, 0x6e, 0x6f, 0x72, 0x65, 0x61, 0x6c,
+0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0xf1, 0x6f, 0x50, 0x65,
+0x73, 0x6f, 0x20, 0x63, 0x68, 0x69, 0x6c, 0x65, 0x6e, 0x6f, 0x70, 0x65,
+0x73, 0x6f, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x69, 0x61, 0x6e,
+0x6f, 0x63, 0x6f, 0x6c, 0xf3, 0x6e, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x61,
+0x72, 0x72, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x70, 0x65, 0x73, 0x6f,
+0x20, 0x63, 0x75, 0x62, 0x61, 0x6e, 0x6f, 0x70, 0x65, 0x73, 0x6f, 0x20,
+0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x64, 0xf3,
+0x6c, 0x61, 0x72, 0x20, 0x65, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x75, 0x6e,
+0x69, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f,
+0x20, 0x43, 0x46, 0x41, 0x20, 0x64, 0x65, 0x20, 0xc1, 0x66, 0x72, 0x69,
+0x63, 0x61, 0x20, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x71, 0x75,
+0x65, 0x74, 0x7a, 0x61, 0x6c, 0x6c, 0x65, 0x6d, 0x70, 0x69, 0x72, 0x61,
+0x20, 0x68, 0x6f, 0x6e, 0x64, 0x75, 0x72, 0x65, 0xf1, 0x6f, 0x70, 0x65,
+0x73, 0x6f, 0x20, 0x6d, 0x65, 0x78, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x63,
+0xf3, 0x72, 0x64, 0x6f, 0x62, 0x61, 0x20, 0x6e, 0x69, 0x63, 0x61, 0x72,
+0x61, 0x67, 0xfc, 0x65, 0x6e, 0x73, 0x65, 0x62, 0x61, 0x6c, 0x62, 0x6f,
+0x61, 0x20, 0x70, 0x61, 0x6e, 0x61, 0x6d, 0x65, 0xf1, 0x6f, 0x67, 0x75,
+0x61, 0x72, 0x61, 0x6e, 0xed, 0x20, 0x70, 0x61, 0x72, 0x61, 0x67, 0x75,
+0x61, 0x79, 0x6f, 0x73, 0x6f, 0x6c, 0x20, 0x70, 0x65, 0x72, 0x75, 0x61,
+0x6e, 0x6f, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x66, 0x69, 0x6c, 0x69, 0x70,
+0x69, 0x6e, 0x6f, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x75, 0x72, 0x75, 0x67,
+0x75, 0x61, 0x79, 0x6f, 0x62, 0x6f, 0x6c, 0xed, 0x76, 0x61, 0x72, 0x20,
+0x73, 0x6f, 0x62, 0x65, 0x72, 0x61, 0x6e, 0x6f, 0x2d30, 0x2d37, 0x2d54, 0x2d49,
+0x2d4e, 0x20, 0x2d4f, 0x20, 0x2d4d, 0x2d4e, 0x2d56, 0x2d54, 0x2d49, 0x2d31, 0x52, 0x75,
+0x70, 0x65, 0x65, 0x20, 0x49, 0x6e, 0x64, 0x6f, 0x6e, 0xe9, 0x73, 0x69,
+0x61, 0x46, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x61, 0x20, 0x79, 0x61, 0x20,
+0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67,
+0x69, 0x20, 0x79, 0x61, 0x20, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x73,
+0x76, 0x65, 0x6e, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x61, 0x53,
+0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x46, 0x72, 0x61,
+0x6e, 0x6b, 0x65, 0x61, 0x64, 0x72, 0x69, 0x6d, 0x20, 0x6e, 0x20, 0x6c,
+0x6d, 0x263, 0x72, 0x69, 0x62, 0x421, 0x43e, 0x43c, 0x43e, 0x43d, 0x4e3, 0xb87,
+0xba8, 0xbcd, 0xba4, 0xbbf, 0xbaf, 0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd,
+0xbae, 0xbb2, 0xbc7, 0xbb7, 0xbbf, 0xbaf, 0xba9, 0xbcd, 0x20, 0xbb0, 0xbbf, 0xb99,
+0xbcd, 0xb95, 0xbbf, 0xb9f, 0xbcd, 0xb9a, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbaa, 0xbcd,
+0xbaa, 0xbc2, 0xbb0, 0xbcd, 0x20, 0xb9f, 0xbbe, 0xbb2, 0xbb0, 0xbcd, 0xb87, 0xbb2,
+0xb99, 0xbcd, 0xb95, 0xbc8, 0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0x70,
+0x69, 0x6c, 0x61, 0x20, 0x54, 0x61, 0x69, 0x77, 0x61, 0x6e, 0x420, 0x43e,
+0x441, 0x441, 0x438, 0x44f, 0x20, 0x441, 0x443, 0x43c, 0x44b, 0xc2d, 0xc3e, 0xc30,
+0xc24, 0xc26, 0xc47, 0xc36, 0x20, 0xc30, 0xc42, 0xc2a, 0xc3e, 0xc2f, 0xc3f, 0x41,
+0x6e, 0x67, 0x6f, 0x2019, 0x6f, 0x74, 0x6f, 0x6c, 0x20, 0x6c, 0x6f, 0x6b,
+0x2019, 0x20, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x41, 0x6e, 0x67, 0x6f,
+0x2019, 0x6f, 0x74, 0x6f, 0x6c, 0x20, 0x6c, 0x6f, 0x6b, 0x2019, 0x20, 0x4b,
+0x65, 0x6e, 0x79, 0x61, 0xe1a, 0xe32, 0xe17, 0xf61, 0xf74, 0xf0b, 0xf68, 0xf53,
+0xf0b, 0xf62, 0xf92, 0xfb1, 0xf0b, 0xf42, 0xf62, 0xf0b, 0xf66, 0xf92, 0xf7c, 0xf62,
+0xf0b, 0x1293, 0x1255, 0x134b, 0x50, 0x61, 0x2bb, 0x61, 0x6e, 0x67, 0x61, 0x20,
+0x66, 0x61, 0x6b, 0x61, 0x74, 0x6f, 0x6e, 0x67, 0x61, 0x54, 0xfc, 0x72,
+0x6b, 0x20, 0x6c, 0x69, 0x72, 0x61, 0x73, 0x131, 0x54, 0xfc, 0x72, 0x6b,
+0x6d, 0x65, 0x6e, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x64, 0x79, 0x4e, 0x65,
+0x72, 0x61, 0x443, 0x43a, 0x440, 0x430, 0x457, 0x43d, 0x441, 0x44c, 0x43a, 0x430,
+0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x44f, 0x67e, 0x627, 0x6a9, 0x633, 0x62a,
+0x627, 0x646, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6cc, 0x6c1, 0x628, 0x6be, 0x627,
+0x631, 0x62a, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6cc, 0x6c1, 0x62c, 0x6c7, 0x6ad,
+0x6af, 0x648, 0x20, 0x64a, 0x6c8, 0x6d5, 0x646, 0x649, 0x4f, 0x2018, 0x7a, 0x62,
+0x65, 0x6b, 0x69, 0x73, 0x74, 0x6f, 0x6e, 0x20, 0x73, 0x6f, 0x2018, 0x6d,
+0x69, 0x40e, 0x437, 0x431, 0x435, 0x43a, 0x438, 0x441, 0x442, 0x43e, 0x43d, 0x20,
+0x441, 0x45e, 0x43c, 0xa55e, 0xa524, 0xa52b, 0xa569, 0x20, 0xa55c, 0xa55e, 0xa54c, 0x4c,
+0x61, 0x69, 0x62, 0x68, 0x69, 0x79, 0x61, 0x20, 0x44, 0x61, 0x6c, 0x61,
+0x110, 0x1ed3, 0x6e, 0x67, 0x20, 0x56, 0x69, 0x1ec7, 0x74, 0x20, 0x4e, 0x61,
+0x6d, 0x50, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69,
+0x6e, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x626, 0x20, 0x631, 0x648,
+0x67e, 0x6cc, 0x627, 0x648, 0x6af, 0x627, 0x646, 0x633, 0x62a, 0x627, 0x646, 0x626,
+0x20, 0x627, 0x648, 0x6af, 0x627, 0x646, 0x6cc, 0x627, 0x6cc, 0x631, 0x627, 0x646,
+0x626, 0x20, 0x631, 0x6cc, 0x627, 0x644, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x20,
+0x43, 0x46, 0x41, 0x20, 0x62, 0x75, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b,
+0x20, 0x53, 0x6f, 0x77, 0x77, 0x75, 0x2d, 0x6a, 0x61, 0x6e, 0x74, 0x49,
+0x52, 0x61, 0x6e, 0x64, 0x69, 0x20, 0x79, 0x61, 0x73, 0x65, 0x4d, 0x7a,
+0x61, 0x6e, 0x74, 0x73, 0x69, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61,
+0x4e, 0xe1, 0xed, 0x72, 0xe0, 0x20, 0x4e, 0xe0, 0xec, 0x6a, 0xed, 0x72,
+0xed, 0xe0, 0x46, 0x61, 0x72, 0x61, 0x6e, 0x73, 0xec, 0x20, 0xec, 0x77,
+0x254, 0x300, 0x2d, 0x6f, 0x6f, 0x72, 0xf9, 0x6e, 0x20, 0x41, 0x66, 0xed,
+0x72, 0xed, 0x6b, 0xe0, 0x79, 0x69, 0x6e, 0x7a, 0x6d, 0x69, 0x6e, 0x7a,
+0x62, 0x69, 0x69, 0x2d, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41, 0x66,
+0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x52, 0x61, 0x6e, 0x64, 0x4d, 0x72,
+0x61, 0x73, 0x69, 0x72, 0x20, 0x52, 0x65, 0x6a, 0x61, 0x72, 0x52, 0x65,
+0x61, 0x75, 0x20, 0x42, 0x72, 0x61, 0x73, 0x69, 0x75, 0x77, 0x61, 0x72,
+0x61, 0x50, 0x65, 0x73, 0x6f, 0x20, 0x4b, 0x75, 0x72, 0x169, 0x62, 0x69,
+0x79, 0x61, 0x77, 0x61, 0x72, 0x61, 0x42, 0x75, 0x72, 0x69, 0x77, 0x61,
+0x72, 0x69, 0x20, 0x57, 0x65, 0x6e, 0x65, 0x73, 0x75, 0x65, 0x72, 0x61,
+0x77, 0x61, 0x72, 0x61, 0x50, 0xe1, 0x6b, 0x65, 0x73, 0x74, 0xe1, 0x6e,
+0x69, 0x20, 0x72, 0x75, 0x70, 0x69, 0x47, 0x61, 0x72, 0x269, 0x256, 0x6f,
+0x6e, 0x74, 0x1dd, 0x6e, 0x61, 0x20, 0x67, 0x269, 0x74, 0x65, 0x14b, 0x73,
+0x68, 0x69, 0x6c, 0x65, 0x6c, 0x61, 0x14b, 0x20, 0x6b, 0x61, 0x73, 0x25b,
+0x25b, 0x66, 0x61, 0x92d, 0x93e, 0x930, 0x924, 0x947, 0x20, 0x926, 0x93e, 0x20,
+0x930, 0x941, 0x92a, 0x92f, 0x93e
};
-static const char16_t currency_format_data[] = {
-0x25, 0x31, 0x25, 0x32, 0x25, 0x32, 0xa0, 0x25, 0x31, 0x25, 0x32, 0x25, 0x31, 0x28, 0x25, 0x32, 0x25, 0x31, 0x29, 0x25,
-0x31, 0xa0, 0x25, 0x32, 0x28, 0x25, 0x31, 0xa0, 0x25, 0x32, 0x29, 0x28, 0x25, 0x31, 0x25, 0x32, 0x29, 0x28, 0x25, 0x32,
-0xa0, 0x25, 0x31, 0x29, 0x25, 0x32, 0x2d, 0x25, 0x31, 0x25, 0x32, 0x2212, 0x25, 0x31, 0x25, 0x32, 0x2d, 0xa0, 0x25, 0x31,
-0x200e, 0x25, 0x32, 0xa0, 0x25, 0x31, 0x200e, 0x28, 0x25, 0x32, 0xa0, 0x25, 0x31, 0x29
+static constexpr char16_t currency_format_data[] = {
+0x25, 0x31, 0x25, 0x32, 0x25, 0x31, 0xa0, 0x25, 0x32, 0x28, 0x25, 0x32,
+0x25, 0x31, 0x29, 0x25, 0x32, 0xa0, 0x25, 0x31, 0x28, 0x25, 0x31, 0xa0,
+0x25, 0x32, 0x29, 0x200f, 0x25, 0x31, 0xa0, 0x25, 0x32, 0x61c, 0x25, 0x31,
+0x25, 0x32, 0x28, 0x61c, 0x25, 0x31, 0x25, 0x32, 0x29, 0x28, 0x25, 0x31,
+0x25, 0x32, 0x29, 0x28, 0x25, 0x31, 0x29, 0xa0, 0x25, 0x32, 0x28, 0x25,
+0x32, 0xa0, 0x25, 0x31, 0x29, 0x25, 0x32, 0x2d, 0x25, 0x31, 0x200f, 0x25,
+0x31, 0xa0, 0x200f, 0x25, 0x32, 0x200f, 0x200e, 0x2d, 0x25, 0x31, 0xa0, 0x200f,
+0x25, 0x32, 0x25, 0x32, 0xa0, 0x2d, 0x25, 0x31, 0x25, 0x32, 0x2212, 0x25,
+0x31, 0x25, 0x32, 0x2d, 0xa0, 0x25, 0x31, 0x200e, 0x25, 0x32, 0xa0, 0x25,
+0x31, 0x200e, 0x28, 0x25, 0x32, 0xa0, 0x25, 0x31, 0x29, 0x25, 0x31, 0x202f,
+0x25, 0x32
};
-static const char16_t endonyms_data[] = {
-0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x61, 0x6e, 0x73, 0x53, 0x75, 0x69, 0x64, 0x2d, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61,
-0x4e, 0x61, 0x6d, 0x69, 0x62, 0x69, 0xeb, 0x41, 0x67, 0x68, 0x65, 0x6d, 0x4b, 0xe0, 0x6d, 0xe0, 0x6c, 0xfb, 0x14b, 0x41,
-0x6b, 0x61, 0x6e, 0x47, 0x61, 0x61, 0x6e, 0x61, 0x73, 0x68, 0x71, 0x69, 0x70, 0x53, 0x68, 0x71, 0x69, 0x70, 0xeb, 0x72,
-0x69, 0x4b, 0x6f, 0x73, 0x6f, 0x76, 0xeb, 0x4d, 0x61, 0x71, 0x65, 0x64, 0x6f, 0x6e, 0x69, 0x61, 0x20, 0x65, 0x20, 0x56,
-0x65, 0x72, 0x69, 0x75, 0x74, 0x12a0, 0x121b, 0x122d, 0x129b, 0x12a2, 0x1275, 0x12ee, 0x1335, 0x12eb, 0x627, 0x644, 0x639, 0x631, 0x628, 0x64a,
-0x629, 0x645, 0x635, 0x631, 0x627, 0x644, 0x62c, 0x632, 0x627, 0x626, 0x631, 0x627, 0x644, 0x628, 0x62d, 0x631, 0x64a, 0x646, 0x62a, 0x634,
-0x627, 0x62f, 0x62c, 0x632, 0x631, 0x20, 0x627, 0x644, 0x642, 0x645, 0x631, 0x62c, 0x64a, 0x628, 0x648, 0x62a, 0x64a, 0x625, 0x631, 0x64a,
-0x62a, 0x631, 0x64a, 0x627, 0x627, 0x644, 0x639, 0x631, 0x627, 0x642, 0x625, 0x633, 0x631, 0x627, 0x626, 0x64a, 0x644, 0x627, 0x644, 0x623,
-0x631, 0x62f, 0x646, 0x627, 0x644, 0x643, 0x648, 0x64a, 0x62a, 0x644, 0x628, 0x646, 0x627, 0x646, 0x644, 0x64a, 0x628, 0x64a, 0x627, 0x645,
-0x648, 0x631, 0x64a, 0x62a, 0x627, 0x646, 0x64a, 0x627, 0x627, 0x644, 0x645, 0x63a, 0x631, 0x628, 0x639, 0x64f, 0x645, 0x627, 0x646, 0x627,
-0x644, 0x623, 0x631, 0x627, 0x636, 0x64a, 0x20, 0x627, 0x644, 0x641, 0x644, 0x633, 0x637, 0x64a, 0x646, 0x64a, 0x629, 0x642, 0x637, 0x631,
-0x627, 0x644, 0x645, 0x645, 0x644, 0x643, 0x629, 0x20, 0x627, 0x644, 0x639, 0x631, 0x628, 0x64a, 0x629, 0x20, 0x627, 0x644, 0x633, 0x639,
-0x648, 0x62f, 0x64a, 0x629, 0x627, 0x644, 0x635, 0x648, 0x645, 0x627, 0x644, 0x62c, 0x646, 0x648, 0x628, 0x20, 0x627, 0x644, 0x633, 0x648,
-0x62f, 0x627, 0x646, 0x627, 0x644, 0x633, 0x648, 0x62f, 0x627, 0x646, 0x633, 0x648, 0x631, 0x64a, 0x627, 0x62a, 0x648, 0x646, 0x633, 0x627,
-0x644, 0x625, 0x645, 0x627, 0x631, 0x627, 0x62a, 0x20, 0x627, 0x644, 0x639, 0x631, 0x628, 0x64a, 0x629, 0x20, 0x627, 0x644, 0x645, 0x62a,
-0x62d, 0x62f, 0x629, 0x627, 0x644, 0x635, 0x62d, 0x631, 0x627, 0x621, 0x20, 0x627, 0x644, 0x63a, 0x631, 0x628, 0x64a, 0x629, 0x627, 0x644,
-0x639, 0x631, 0x628, 0x64a, 0x629, 0x20, 0x627, 0x644, 0x641, 0x635, 0x62d, 0x649, 0x20, 0x627, 0x644, 0x62d, 0x62f, 0x64a, 0x62b, 0x629,
-0x627, 0x644, 0x639, 0x627, 0x644, 0x645, 0x627, 0x644, 0x64a, 0x645, 0x646, 0x570, 0x561, 0x575, 0x565, 0x580, 0x565, 0x576, 0x540, 0x561,
-0x575, 0x561, 0x57d, 0x57f, 0x561, 0x576, 0x985, 0x9b8, 0x9ae, 0x9c0, 0x9af, 0x9bc, 0x9be, 0x9ad, 0x9be, 0x9f0, 0x9a4, 0x61, 0x73, 0x74,
-0x75, 0x72, 0x69, 0x61, 0x6e, 0x75, 0x45, 0x73, 0x70, 0x61, 0xf1, 0x61, 0x4b, 0x69, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61,
-0x64, 0x68, 0x61, 0x6e, 0x69, 0x61, 0x61, 0x7a, 0x259, 0x72, 0x62, 0x61, 0x79, 0x63, 0x61, 0x6e, 0x41, 0x7a, 0x259, 0x72,
-0x62, 0x61, 0x79, 0x63, 0x61, 0x6e, 0x430, 0x437, 0x4d9, 0x440, 0x431, 0x430, 0x458, 0x4b9, 0x430, 0x43d, 0x410, 0x437, 0x4d9, 0x440,
-0x431, 0x430, 0x458, 0x4b9, 0x430, 0x43d, 0x72, 0x69, 0x6b, 0x70, 0x61, 0x6b, 0x61, 0x6d, 0x25b, 0x72, 0xfa, 0x6e, 0x62, 0x61,
-0x6d, 0x61, 0x6e, 0x61, 0x6b, 0x61, 0x6e, 0x4d, 0x61, 0x6c, 0x69, 0x9ac, 0x9be, 0x982, 0x9b2, 0x9be, 0x9ac, 0x9be, 0x982, 0x9b2,
-0x9be, 0x9a6, 0x9c7, 0x9b6, 0x9ad, 0x9be, 0x9b0, 0x9a4, 0x181, 0xe0, 0x73, 0xe0, 0x61, 0x4b, 0xe0, 0x6d, 0x25b, 0x300, 0x72, 0xfb,
-0x6e, 0x65, 0x75, 0x73, 0x6b, 0x61, 0x72, 0x61, 0x45, 0x73, 0x70, 0x61, 0x69, 0x6e, 0x69, 0x61, 0x431, 0x435, 0x43b, 0x430,
-0x440, 0x443, 0x441, 0x43a, 0x430, 0x44f, 0x411, 0x435, 0x43b, 0x430, 0x440, 0x443, 0x441, 0x44c, 0x49, 0x63, 0x68, 0x69, 0x62, 0x65,
-0x6d, 0x62, 0x61, 0x5a, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x48, 0x69, 0x62, 0x65, 0x6e, 0x61, 0x48, 0x75, 0x74, 0x61, 0x6e,
-0x7a, 0x61, 0x6e, 0x69, 0x61, 0x92c, 0x921, 0x93c, 0x94b, 0x92d, 0x93e, 0x930, 0x924, 0x62, 0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b,
-0x69, 0x42, 0x6f, 0x73, 0x6e, 0x61, 0x20, 0x69, 0x20, 0x48, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x69, 0x6e, 0x61,
-0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x438, 0x411, 0x43e, 0x441, 0x43d, 0x430, 0x20, 0x438, 0x20, 0x425, 0x435, 0x440, 0x446,
-0x435, 0x433, 0x43e, 0x432, 0x438, 0x43d, 0x430, 0x62, 0x72, 0x65, 0x7a, 0x68, 0x6f, 0x6e, 0x65, 0x67, 0x46, 0x72, 0x61, 0xf1,
-0x73, 0x431, 0x44a, 0x43b, 0x433, 0x430, 0x440, 0x441, 0x43a, 0x438, 0x411, 0x44a, 0x43b, 0x433, 0x430, 0x440, 0x438, 0x44f, 0x1019, 0x103c,
-0x1014, 0x103a, 0x1019, 0x102c, 0x7cb5, 0x8a9e, 0x4e2d, 0x83ef, 0x4eba, 0x6c11, 0x5171, 0x548c, 0x570b, 0x9999, 0x6e2f, 0x7279, 0x5225, 0x884c, 0x653f, 0x5340,
-0x7ca4, 0x8bed, 0x4e2d, 0x534e, 0x4eba, 0x6c11, 0x5171, 0x548c, 0x56fd, 0x63, 0x61, 0x74, 0x61, 0x6c, 0xe0, 0x45, 0x73, 0x70, 0x61, 0x6e,
-0x79, 0x61, 0x41, 0x6e, 0x64, 0x6f, 0x72, 0x72, 0x61, 0x46, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x49, 0x74, 0xe0, 0x6c, 0x69,
-0x61, 0x42, 0x69, 0x6e, 0x69, 0x73, 0x61, 0x79, 0x61, 0x50, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x61, 0x73, 0x54, 0x61,
-0x6d, 0x61, 0x7a, 0x69, 0x263, 0x74, 0x20, 0x6e, 0x20, 0x6c, 0x61, 0x1e6d, 0x6c, 0x61, 0x1e63, 0x4d, 0x65, 0x1e5b, 0x1e5b, 0x75,
-0x6b, 0x6a9, 0x648, 0x631, 0x62f, 0x6cc, 0x6cc, 0x20, 0x646, 0x627, 0x648, 0x6d5, 0x646, 0x62f, 0x6cc, 0x639, 0x6ce, 0x631, 0x627, 0x642,
-0x626, 0x6ce, 0x631, 0x627, 0x646, 0xd804, 0xdd0c, 0xd804, 0xdd0b, 0xd804, 0xdd34, 0xd804, 0xdd1f, 0xd804, 0xdd33, 0xd804, 0xdd26, 0xd804, 0xdd1d, 0xd804,
-0xdd01, 0xd804, 0xdd23, 0xd804, 0xdd18, 0xd804, 0xdd2c, 0xd804, 0xdd0c, 0xd804, 0xdd34, 0xd804, 0xdd1e, 0xd804, 0xdd22, 0xd804, 0xdd27, 0xd804, 0xdd16, 0xd804,
-0xdd34, 0x43d, 0x43e, 0x445, 0x447, 0x438, 0x439, 0x43d, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x13e3, 0x13b3, 0x13a9, 0x13cc, 0x13ca, 0x20, 0x13a2,
-0x13f3, 0x13be, 0x13b5, 0x13cd, 0x13d4, 0x13c5, 0x20, 0x13cd, 0x13a6, 0x13da, 0x13a9, 0x52, 0x75, 0x6b, 0x69, 0x67, 0x61, 0x55, 0x67, 0x61,
-0x6e, 0x64, 0x61, 0x7b80, 0x4f53, 0x4e2d, 0x6587, 0x4e2d, 0x56fd, 0x4e2d, 0x56fd, 0x9999, 0x6e2f, 0x7279, 0x522b, 0x884c, 0x653f, 0x533a, 0x4e2d, 0x56fd,
-0x6fb3, 0x95e8, 0x7279, 0x522b, 0x884c, 0x653f, 0x533a, 0x65b0, 0x52a0, 0x5761, 0x7e41, 0x9ad4, 0x4e2d, 0x6587, 0x4e2d, 0x570b, 0x9999, 0x6e2f, 0x7279, 0x5225,
-0x884c, 0x653f, 0x5340, 0x4e2d, 0x570b, 0x6fb3, 0x9580, 0x7279, 0x5225, 0x884c, 0x653f, 0x5340, 0x53f0, 0x7063, 0x4b, 0xf6, 0x6c, 0x73, 0x63, 0x68,
-0x44, 0x6f, 0xfc, 0x74, 0x73, 0x63, 0x68, 0x6c, 0x61, 0x6e, 0x64, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x77, 0x65, 0x6b, 0x52,
-0x79, 0x77, 0x76, 0x61, 0x6e, 0x65, 0x74, 0x68, 0x20, 0x55, 0x6e, 0x79, 0x73, 0x68, 0x72, 0x76, 0x61, 0x74, 0x73, 0x6b,
-0x69, 0x48, 0x72, 0x76, 0x61, 0x74, 0x73, 0x6b, 0x61, 0x10d, 0x65, 0x161, 0x74, 0x69, 0x6e, 0x61, 0x10c, 0x65, 0x73, 0x6b,
-0x6f, 0x64, 0x61, 0x6e, 0x73, 0x6b, 0x44, 0x61, 0x6e, 0x6d, 0x61, 0x72, 0x6b, 0x47, 0x72, 0xf8, 0x6e, 0x6c, 0x61, 0x6e,
-0x64, 0x921, 0x94b, 0x917, 0x930, 0x940, 0x64, 0x75, 0xe1, 0x6c, 0xe1, 0x43, 0x61, 0x6d, 0x65, 0x72, 0x6f, 0x75, 0x6e, 0x4e,
-0x65, 0x64, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x41, 0x72, 0x75, 0x62, 0x61, 0x56, 0x6c, 0x61, 0x61, 0x6d, 0x73,
-0x42, 0x65, 0x6c, 0x67, 0x69, 0xeb, 0x43, 0x61, 0x72, 0x69, 0x62, 0x69, 0x73, 0x63, 0x68, 0x20, 0x4e, 0x65, 0x64, 0x65,
-0x72, 0x6c, 0x61, 0x6e, 0x64, 0x43, 0x75, 0x72, 0x61, 0xe7, 0x61, 0x6f, 0x53, 0x69, 0x6e, 0x74, 0x2d, 0x4d, 0x61, 0x61,
-0x72, 0x74, 0x65, 0x6e, 0x53, 0x75, 0x72, 0x69, 0x6e, 0x61, 0x6d, 0x65, 0xf62, 0xfab, 0xf7c, 0xf44, 0xf0b, 0xf41, 0xf60, 0xf56,
-0xfb2, 0xf74, 0xf42, 0x4b, 0x129, 0x65, 0x6d, 0x62, 0x75, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63,
-0x61, 0x6e, 0x20, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x55, 0x6e, 0x69, 0x74, 0x65, 0x64, 0x20, 0x53, 0x74, 0x61,
-0x74, 0x65, 0x73, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x53, 0x61, 0x6d, 0x6f, 0x61, 0x41, 0x6e, 0x67,
-0x75, 0x69, 0x6c, 0x6c, 0x61, 0x41, 0x6e, 0x74, 0x69, 0x67, 0x75, 0x61, 0x20, 0x26, 0x20, 0x42, 0x61, 0x72, 0x62, 0x75,
-0x64, 0x61, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x6e, 0x20, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68,
-0x41, 0x75, 0x73, 0x74, 0x72, 0x69, 0x61, 0x42, 0x61, 0x68, 0x61, 0x6d, 0x61, 0x73, 0x42, 0x61, 0x72, 0x62, 0x61, 0x64,
-0x6f, 0x73, 0x42, 0x65, 0x6c, 0x67, 0x69, 0x75, 0x6d, 0x42, 0x65, 0x6c, 0x69, 0x7a, 0x65, 0x42, 0x65, 0x72, 0x6d, 0x75,
-0x64, 0x61, 0x42, 0x6f, 0x74, 0x73, 0x77, 0x61, 0x6e, 0x61, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x49, 0x6e,
-0x64, 0x69, 0x61, 0x6e, 0x20, 0x4f, 0x63, 0x65, 0x61, 0x6e, 0x20, 0x54, 0x65, 0x72, 0x72, 0x69, 0x74, 0x6f, 0x72, 0x79,
-0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x56, 0x69, 0x72, 0x67, 0x69, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e,
-0x64, 0x73, 0x42, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x43, 0x61, 0x6d, 0x65, 0x72, 0x6f, 0x6f, 0x6e, 0x43, 0x61, 0x6e,
-0x61, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x61, 0x6e, 0x61, 0x64, 0x61, 0x43,
-0x61, 0x79, 0x6d, 0x61, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x43, 0x68, 0x72, 0x69, 0x73, 0x74, 0x6d,
-0x61, 0x73, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x43, 0x6f, 0x63, 0x6f, 0x73, 0x20, 0x28, 0x4b, 0x65, 0x65, 0x6c,
-0x69, 0x6e, 0x67, 0x29, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x43, 0x6f, 0x6f, 0x6b, 0x20, 0x49, 0x73, 0x6c,
-0x61, 0x6e, 0x64, 0x73, 0x43, 0x79, 0x70, 0x72, 0x75, 0x73, 0x44, 0x65, 0x6e, 0x6d, 0x61, 0x72, 0x6b, 0x44, 0x69, 0x65,
-0x67, 0x6f, 0x20, 0x47, 0x61, 0x72, 0x63, 0x69, 0x61, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x63, 0x61, 0x45, 0x72, 0x69,
-0x74, 0x72, 0x65, 0x61, 0x45, 0x73, 0x77, 0x61, 0x74, 0x69, 0x6e, 0x69, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x46, 0x61,
-0x6c, 0x6b, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x46, 0x69, 0x6a, 0x69, 0x46, 0x69,
-0x6e, 0x6c, 0x61, 0x6e, 0x64, 0x47, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x47, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x79, 0x47, 0x68,
-0x61, 0x6e, 0x61, 0x47, 0x69, 0x62, 0x72, 0x61, 0x6c, 0x74, 0x61, 0x72, 0x47, 0x72, 0x65, 0x6e, 0x61, 0x64, 0x61, 0x47,
-0x75, 0x61, 0x6d, 0x47, 0x75, 0x65, 0x72, 0x6e, 0x73, 0x65, 0x79, 0x47, 0x75, 0x79, 0x61, 0x6e, 0x61, 0x48, 0x6f, 0x6e,
-0x67, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x20, 0x53, 0x41, 0x52, 0x20, 0x43, 0x68, 0x69, 0x6e, 0x61, 0x49, 0x72, 0x65, 0x6c,
-0x61, 0x6e, 0x64, 0x49, 0x73, 0x6c, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x4d, 0x61, 0x6e, 0x49, 0x73, 0x72, 0x61, 0x65, 0x6c,
-0x4a, 0x61, 0x6d, 0x61, 0x69, 0x63, 0x61, 0x4a, 0x65, 0x72, 0x73, 0x65, 0x79, 0x4b, 0x69, 0x72, 0x69, 0x62, 0x61, 0x74,
-0x69, 0x4c, 0x65, 0x73, 0x6f, 0x74, 0x68, 0x6f, 0x4c, 0x69, 0x62, 0x65, 0x72, 0x69, 0x61, 0x4d, 0x61, 0x63, 0x61, 0x6f,
-0x20, 0x53, 0x41, 0x52, 0x20, 0x43, 0x68, 0x69, 0x6e, 0x61, 0x4d, 0x61, 0x64, 0x61, 0x67, 0x61, 0x73, 0x63, 0x61, 0x72,
-0x4d, 0x61, 0x6c, 0x61, 0x77, 0x69, 0x4d, 0x61, 0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x4d, 0x61, 0x6c, 0x74, 0x61, 0x4d,
-0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x6c, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x4d, 0x61, 0x75, 0x72, 0x69,
-0x74, 0x69, 0x75, 0x73, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x6e, 0x65, 0x73, 0x69, 0x61, 0x4d, 0x6f, 0x6e, 0x74, 0x73, 0x65,
-0x72, 0x72, 0x61, 0x74, 0x4e, 0x61, 0x6d, 0x69, 0x62, 0x69, 0x61, 0x4e, 0x61, 0x75, 0x72, 0x75, 0x4e, 0x65, 0x74, 0x68,
-0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x4e, 0x65, 0x77, 0x20, 0x5a, 0x65, 0x61, 0x6c, 0x61, 0x6e, 0x64, 0x4e, 0x69,
-0x67, 0x65, 0x72, 0x69, 0x61, 0x4e, 0x69, 0x75, 0x65, 0x4e, 0x6f, 0x72, 0x66, 0x6f, 0x6c, 0x6b, 0x20, 0x49, 0x73, 0x6c,
-0x61, 0x6e, 0x64, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x20, 0x4d, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x61, 0x20,
-0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x50, 0x61, 0x6b, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x50, 0x61, 0x6c, 0x61, 0x75,
-0x50, 0x61, 0x70, 0x75, 0x61, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x47, 0x75, 0x69, 0x6e, 0x65, 0x61, 0x50, 0x68, 0x69, 0x6c,
-0x69, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x73, 0x50, 0x69, 0x74, 0x63, 0x61, 0x69, 0x72, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61,
-0x6e, 0x64, 0x73, 0x50, 0x75, 0x65, 0x72, 0x74, 0x6f, 0x20, 0x52, 0x69, 0x63, 0x6f, 0x52, 0x77, 0x61, 0x6e, 0x64, 0x61,
-0x53, 0x74, 0x2e, 0x20, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x53, 0x74, 0x2e, 0x20, 0x4b, 0x69, 0x74, 0x74, 0x73, 0x20,
-0x26, 0x20, 0x4e, 0x65, 0x76, 0x69, 0x73, 0x53, 0x74, 0x2e, 0x20, 0x4c, 0x75, 0x63, 0x69, 0x61, 0x53, 0x74, 0x2e, 0x20,
-0x56, 0x69, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x20, 0x26, 0x20, 0x47, 0x72, 0x65, 0x6e, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73,
-0x53, 0x65, 0x79, 0x63, 0x68, 0x65, 0x6c, 0x6c, 0x65, 0x73, 0x53, 0x69, 0x65, 0x72, 0x72, 0x61, 0x20, 0x4c, 0x65, 0x6f,
-0x6e, 0x65, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x6f, 0x72, 0x65, 0x53, 0x69, 0x6e, 0x74, 0x20, 0x4d, 0x61, 0x61, 0x72,
-0x74, 0x65, 0x6e, 0x53, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x69, 0x61, 0x53, 0x6f, 0x6c, 0x6f, 0x6d, 0x6f, 0x6e, 0x20, 0x49,
-0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x53, 0x6f,
-0x75, 0x74, 0x68, 0x20, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x53, 0x77, 0x65, 0x64, 0x65, 0x6e,
-0x53, 0x77, 0x69, 0x74, 0x7a, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x54,
-0x6f, 0x6b, 0x65, 0x6c, 0x61, 0x75, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x54, 0x72, 0x69, 0x6e, 0x69, 0x64, 0x61, 0x64, 0x20,
-0x26, 0x20, 0x54, 0x6f, 0x62, 0x61, 0x67, 0x6f, 0x54, 0x75, 0x72, 0x6b, 0x73, 0x20, 0x26, 0x20, 0x43, 0x61, 0x69, 0x63,
-0x6f, 0x73, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x54, 0x75, 0x76, 0x61, 0x6c, 0x75, 0x55, 0x6e, 0x69, 0x74,
-0x65, 0x64, 0x20, 0x41, 0x72, 0x61, 0x62, 0x20, 0x45, 0x6d, 0x69, 0x72, 0x61, 0x74, 0x65, 0x73, 0x42, 0x72, 0x69, 0x74,
-0x69, 0x73, 0x68, 0x20, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x55, 0x6e, 0x69, 0x74, 0x65, 0x64, 0x20, 0x4b, 0x69,
-0x6e, 0x67, 0x64, 0x6f, 0x6d, 0x55, 0x2e, 0x53, 0x2e, 0x20, 0x4f, 0x75, 0x74, 0x6c, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x49,
-0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x55, 0x2e, 0x53, 0x2e, 0x20, 0x56, 0x69, 0x72, 0x67, 0x69, 0x6e, 0x20, 0x49, 0x73,
-0x6c, 0x61, 0x6e, 0x64, 0x73, 0x56, 0x61, 0x6e, 0x75, 0x61, 0x74, 0x75, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5a, 0x69, 0x6d,
-0x62, 0x61, 0x62, 0x77, 0x65, 0x65, 0x73, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x74, 0x6f, 0x4d, 0x6f, 0x6e, 0x64, 0x6f, 0x65,
-0x65, 0x73, 0x74, 0x69, 0x45, 0x65, 0x73, 0x74, 0x69, 0x45, 0x28b, 0x65, 0x67, 0x62, 0x65, 0x47, 0x68, 0x61, 0x6e, 0x61,
-0x20, 0x6e, 0x75, 0x74, 0x6f, 0x6d, 0x65, 0x54, 0x6f, 0x67, 0x6f, 0x20, 0x6e, 0x75, 0x74, 0x6f, 0x6d, 0x65, 0x65, 0x77,
-0x6f, 0x6e, 0x64, 0x6f, 0x4b, 0x61, 0x6d, 0x259, 0x72, 0xfa, 0x6e, 0x66, 0xf8, 0x72, 0x6f, 0x79, 0x73, 0x6b, 0x74, 0x46,
-0xf8, 0x72, 0x6f, 0x79, 0x61, 0x72, 0x46, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x6f, 0x73, 0x75, 0x6f, 0x6d, 0x69, 0x53,
-0x75, 0x6f, 0x6d, 0x69, 0x66, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69, 0x73, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x6c,
-0x67, 0xe9, 0x72, 0x69, 0x65, 0x42, 0x65, 0x6c, 0x67, 0x69, 0x71, 0x75, 0x65, 0x42, 0xe9, 0x6e, 0x69, 0x6e, 0x42, 0x75,
-0x72, 0x6b, 0x69, 0x6e, 0x61, 0x20, 0x46, 0x61, 0x73, 0x6f, 0x66, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69, 0x73, 0x20, 0x63,
-0x61, 0x6e, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x52, 0xe9, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x71, 0x75, 0x65, 0x20, 0x63, 0x65,
-0x6e, 0x74, 0x72, 0x61, 0x66, 0x72, 0x69, 0x63, 0x61, 0x69, 0x6e, 0x65, 0x54, 0x63, 0x68, 0x61, 0x64, 0x43, 0x6f, 0x6d,
-0x6f, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x67, 0x6f, 0x2d, 0x42, 0x72, 0x61, 0x7a, 0x7a, 0x61, 0x76, 0x69, 0x6c, 0x6c,
-0x65, 0x43, 0x6f, 0x6e, 0x67, 0x6f, 0x2d, 0x4b, 0x69, 0x6e, 0x73, 0x68, 0x61, 0x73, 0x61, 0x44, 0x6a, 0x69, 0x62, 0x6f,
-0x75, 0x74, 0x69, 0x47, 0x75, 0x69, 0x6e, 0xe9, 0x65, 0x20, 0xe9, 0x71, 0x75, 0x61, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c,
-0x65, 0x47, 0x75, 0x79, 0x61, 0x6e, 0x65, 0x20, 0x66, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69, 0x73, 0x65, 0x50, 0x6f, 0x6c,
-0x79, 0x6e, 0xe9, 0x73, 0x69, 0x65, 0x20, 0x66, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69, 0x73, 0x65, 0x47, 0x61, 0x62, 0x6f,
-0x6e, 0x47, 0x75, 0x61, 0x64, 0x65, 0x6c, 0x6f, 0x75, 0x70, 0x65, 0x48, 0x61, 0xef, 0x74, 0x69, 0x43, 0xf4, 0x74, 0x65,
-0x20, 0x64, 0x2019, 0x49, 0x76, 0x6f, 0x69, 0x72, 0x65, 0x4c, 0x75, 0x78, 0x65, 0x6d, 0x62, 0x6f, 0x75, 0x72, 0x67, 0x4d,
-0x61, 0x72, 0x74, 0x69, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x65, 0x4d,
-0x61, 0x75, 0x72, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x79, 0x6f, 0x74, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x61, 0x63, 0x6f, 0x4d,
-0x61, 0x72, 0x6f, 0x63, 0x4e, 0x6f, 0x75, 0x76, 0x65, 0x6c, 0x6c, 0x65, 0x2d, 0x43, 0x61, 0x6c, 0xe9, 0x64, 0x6f, 0x6e,
-0x69, 0x65, 0x4c, 0x61, 0x20, 0x52, 0xe9, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x53, 0x61, 0x69, 0x6e, 0x74, 0x2d, 0x42, 0x61,
-0x72, 0x74, 0x68, 0xe9, 0x6c, 0x65, 0x6d, 0x79, 0x53, 0x61, 0x69, 0x6e, 0x74, 0x2d, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x6e,
-0x53, 0x61, 0x69, 0x6e, 0x74, 0x2d, 0x50, 0x69, 0x65, 0x72, 0x72, 0x65, 0x2d, 0x65, 0x74, 0x2d, 0x4d, 0x69, 0x71, 0x75,
-0x65, 0x6c, 0x6f, 0x6e, 0x53, 0xe9, 0x6e, 0xe9, 0x67, 0x61, 0x6c, 0x66, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69, 0x73, 0x20,
-0x73, 0x75, 0x69, 0x73, 0x73, 0x65, 0x53, 0x75, 0x69, 0x73, 0x73, 0x65, 0x53, 0x79, 0x72, 0x69, 0x65, 0x54, 0x75, 0x6e,
-0x69, 0x73, 0x69, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x69, 0x73, 0x2d, 0x65, 0x74, 0x2d, 0x46, 0x75, 0x74, 0x75, 0x6e, 0x61,
-0x66, 0x75, 0x72, 0x6c, 0x61, 0x6e, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x65, 0x50, 0x75, 0x6c, 0x61, 0x61, 0x72, 0x53, 0x65,
-0x6e, 0x65, 0x67, 0x61, 0x61, 0x6c, 0xd83a, 0xdd06, 0xd83a, 0xdd35, 0xd83a, 0xdd24, 0xd83a, 0xdd22, 0xd83a, 0xdd2a, 0xd83a, 0xdd04, 0xd83a, 0xdd35,
-0xd83a, 0xdd2a, 0xd83a, 0xdd33, 0xd83a, 0xdd2d, 0xd83a, 0xdd32, 0xd83a, 0xdd22, 0x20, 0xd83a, 0xdd0a, 0xd83a, 0xdd22, 0xd83a, 0xdd27, 0xd83a, 0xdd2e, 0xd83a,
-0xdd45, 0xd83a, 0xdd11, 0xd83a, 0xdd22, 0xd83a, 0xdd25, 0xd83a, 0xdd22, 0xd83a, 0xdd2a, 0xd83a, 0xdd35, 0xd83a, 0xdd45, 0xd83a, 0xdd32, 0xd83a, 0xdd18, 0xd83a,
-0xdd22, 0xd83a, 0xdd25, 0xd83a, 0xdd26, 0xd83a, 0xdd2d, 0xd83a, 0xdd34, 0xd83a, 0xdd22, 0xd83a, 0xdd18, 0xd83a, 0xdd22, 0xd83a, 0xdd32, 0xd83a, 0xdd22, 0xd83a,
-0xdd18, 0xd83a, 0xdd2d, 0xd83a, 0xdd32, 0xd83a, 0xdd2b, 0x2d, 0xd83a, 0xdd04, 0xd83a, 0xdd2d, 0xd83a, 0xdd27, 0xd83a, 0xdd22, 0xd83a, 0xdd31, 0xd83a, 0xdd2e,
-0xd83a, 0xdd45, 0xd83a, 0xdd02, 0xd83a, 0xdd22, 0xd83a, 0xdd26, 0xd83a, 0xdd2d, 0xd83a, 0xdd2a, 0xd83a, 0xdd2d, 0xd83a, 0xdd34, 0xd83a, 0xdd22, 0xd83a, 0xdd44,
-0xd83a, 0xdd03, 0xd83a, 0xdd2e, 0xd83a, 0xdd2a, 0xd83a, 0xdd3c, 0xd83a, 0xdd22, 0xd83a, 0xdd32, 0xd83a, 0xdd2d, 0xd83a, 0xdd45, 0xd83a, 0xdd10, 0xd83a, 0xdd22,
-0xd83a, 0xdd36, 0xd83a, 0xdd2b, 0xd83a, 0xdd2a, 0xd83a, 0xdd2d, 0xd83a, 0xdd34, 0xd83a, 0xdd22, 0xd83a, 0xdd44, 0xd83a, 0xdd10, 0xd83a, 0xdd2d, 0xd83a, 0xdd45,
-0xd83a, 0xdd36, 0xd83a, 0xdd2b, 0xd83a, 0xdd2a, 0xd83a, 0xdd05, 0xd83a, 0xdd2b, 0xd83a, 0xdd32, 0xd83a, 0xdd2b, 0xd83a, 0xdd3a, 0xd83a, 0xdd22, 0xd83a, 0xdd44,
-0xd83a, 0xdd24, 0xd83a, 0xdd05, 0xd83a, 0xdd22, 0xd83a, 0xdd2a, 0xd83a, 0xdd22, 0xd83a, 0xdd24, 0xd83a, 0xdd2e, 0xd83a, 0xdd32, 0x42, 0x75, 0x72, 0x6b,
-0x69, 0x62, 0x61, 0x61, 0x20, 0x46, 0x61, 0x61, 0x73, 0x6f, 0x4b, 0x61, 0x6d, 0x65, 0x72, 0x75, 0x75, 0x6e, 0x47, 0x61,
-0x6d, 0x6d, 0x62, 0x69, 0x47, 0x61, 0x6e, 0x61, 0x61, 0x47, 0x69, 0x6e, 0x65, 0x2d, 0x42, 0x69, 0x73, 0x61, 0x61, 0x77,
-0x6f, 0x4c, 0x69, 0x62, 0x65, 0x72, 0x69, 0x79, 0x61, 0x61, 0x4d, 0x75, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x4e, 0x69,
-0x6a, 0x65, 0x72, 0x69, 0x79, 0x61, 0x61, 0x4e, 0x69, 0x6a, 0x65, 0x65, 0x72, 0x53, 0x65, 0x72, 0x61, 0x61, 0x20, 0x6c,
-0x69, 0x79, 0x6f, 0x6e, 0x47, 0xe0, 0x69, 0x64, 0x68, 0x6c, 0x69, 0x67, 0x41, 0x6e, 0x20, 0x52, 0xec, 0x6f, 0x67, 0x68,
-0x61, 0x63, 0x68, 0x64, 0x20, 0x41, 0x6f, 0x6e, 0x61, 0x69, 0x63, 0x68, 0x74, 0x65, 0x67, 0x61, 0x6c, 0x65, 0x67, 0x6f,
-0x4c, 0x75, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x59, 0x75, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x10e5, 0x10d0, 0x10e0, 0x10d7, 0x10e3, 0x10da,
-0x10d8, 0x10e1, 0x10d0, 0x10e5, 0x10d0, 0x10e0, 0x10d7, 0x10d5, 0x10d4, 0x10da, 0x10dd, 0x44, 0x65, 0x75, 0x74, 0x73, 0x63, 0x68, 0x44, 0x65,
-0x75, 0x74, 0x73, 0x63, 0x68, 0x6c, 0x61, 0x6e, 0x64, 0xd6, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x69, 0x63, 0x68, 0x69,
-0x73, 0x63, 0x68, 0x65, 0x73, 0x20, 0x44, 0x65, 0x75, 0x74, 0x73, 0x63, 0x68, 0x42, 0x65, 0x6c, 0x67, 0x69, 0x65, 0x6e,
-0x49, 0x74, 0x61, 0x6c, 0x69, 0x65, 0x6e, 0x4c, 0x69, 0x65, 0x63, 0x68, 0x74, 0x65, 0x6e, 0x73, 0x74, 0x65, 0x69, 0x6e,
-0x4c, 0x75, 0x78, 0x65, 0x6d, 0x62, 0x75, 0x72, 0x67, 0x53, 0x63, 0x68, 0x77, 0x65, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x48,
-0x6f, 0x63, 0x68, 0x64, 0x65, 0x75, 0x74, 0x73, 0x63, 0x68, 0x395, 0x3bb, 0x3bb, 0x3b7, 0x3bd, 0x3b9, 0x3ba, 0x3ac, 0x395, 0x3bb,
-0x3bb, 0x3ac, 0x3b4, 0x3b1, 0x39a, 0x3cd, 0x3c0, 0x3c1, 0x3bf, 0x3c2, 0xa97, 0xac1, 0xa9c, 0xab0, 0xabe, 0xaa4, 0xac0, 0xaad, 0xabe, 0xab0,
-0xaa4, 0x45, 0x6b, 0x65, 0x67, 0x75, 0x73, 0x69, 0x69, 0x48, 0x61, 0x75, 0x73, 0x61, 0x4e, 0x61, 0x6a, 0x65, 0x72, 0x69,
-0x79, 0x61, 0x4e, 0x69, 0x6a, 0x61, 0x72, 0x2bb, 0x14c, 0x6c, 0x65, 0x6c, 0x6f, 0x20, 0x48, 0x61, 0x77, 0x61, 0x69, 0x2bb,
-0x69, 0x2bb, 0x41, 0x6d, 0x65, 0x6c, 0x69, 0x6b, 0x61, 0x20, 0x48, 0x75, 0x69, 0x20, 0x50, 0x16b, 0x20, 0x2bb, 0x49, 0x61,
-0x5e2, 0x5d1, 0x5e8, 0x5d9, 0x5ea, 0x5d9, 0x5e9, 0x5e8, 0x5d0, 0x5dc, 0x939, 0x93f, 0x928, 0x94d, 0x926, 0x940, 0x6d, 0x61, 0x67, 0x79,
-0x61, 0x72, 0x4d, 0x61, 0x67, 0x79, 0x61, 0x72, 0x6f, 0x72, 0x73, 0x7a, 0xe1, 0x67, 0xed, 0x73, 0x6c, 0x65, 0x6e, 0x73,
-0x6b, 0x61, 0xcd, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x49, 0x67, 0x62, 0x6f, 0x4e, 0x61, 0x1ecb, 0x6a, 0x1ecb, 0x72, 0x1ecb, 0x61,
-0x61, 0x6e, 0x61, 0x72, 0xe2, 0x161, 0x6b, 0x69, 0x65, 0x6c, 0xe2, 0x53, 0x75, 0x6f, 0x6d, 0xe2, 0x49, 0x6e, 0x64, 0x6f,
-0x6e, 0x65, 0x73, 0x69, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6c, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x4d, 0x75, 0x6e, 0x64,
-0x6f, 0x47, 0x61, 0x65, 0x69, 0x6c, 0x67, 0x65, 0xc9, 0x69, 0x72, 0x65, 0x61, 0x6e, 0x20, 0x52, 0xed, 0x6f, 0x63, 0x68,
-0x74, 0x20, 0x41, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x74, 0x68, 0x65, 0x69, 0x74, 0x61, 0x6c, 0x69, 0x61, 0x6e, 0x6f, 0x49,
-0x74, 0x61, 0x6c, 0x69, 0x61, 0x53, 0x61, 0x6e, 0x20, 0x4d, 0x61, 0x72, 0x69, 0x6e, 0x6f, 0x53, 0x76, 0x69, 0x7a, 0x7a,
-0x65, 0x72, 0x61, 0x43, 0x69, 0x74, 0x74, 0xe0, 0x20, 0x64, 0x65, 0x6c, 0x20, 0x56, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6e,
-0x6f, 0x65e5, 0x672c, 0x8a9e, 0x4a, 0x61, 0x77, 0x61, 0x49, 0x6e, 0x64, 0x6f, 0x6e, 0xe9, 0x73, 0x69, 0x61, 0x6a, 0x6f, 0x6f,
-0x6c, 0x61, 0x53, 0x65, 0x6e, 0x65, 0x67, 0x61, 0x6c, 0x6b, 0x61, 0x62, 0x75, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e,
-0x75, 0x4b, 0x61, 0x62, 0x75, 0x20, 0x56, 0x65, 0x72, 0x64, 0x69, 0x54, 0x61, 0x71, 0x62, 0x61, 0x79, 0x6c, 0x69, 0x74,
-0x4c, 0x65, 0x7a, 0x7a, 0x61, 0x79, 0x65, 0x72, 0x6b, 0x61, 0x6b, 0x254, 0x4b, 0x61, 0x6d, 0x25b, 0x72, 0x75, 0x6e, 0x6b,
-0x61, 0x6c, 0x61, 0x61, 0x6c, 0x6c, 0x69, 0x73, 0x75, 0x74, 0x4b, 0x61, 0x6c, 0x61, 0x61, 0x6c, 0x6c, 0x69, 0x74, 0x20,
-0x4e, 0x75, 0x6e, 0x61, 0x61, 0x74, 0x4b, 0x61, 0x6c, 0x65, 0x6e, 0x6a, 0x69, 0x6e, 0x45, 0x6d, 0x65, 0x74, 0x61, 0x62,
-0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x4b, 0x69, 0x6b, 0x61, 0x6d, 0x62, 0x61, 0xc95, 0xca8, 0xccd, 0xca8, 0xca1, 0xcad, 0xcbe,
-0xcb0, 0xca4, 0x6a9, 0x672, 0x634, 0x64f, 0x631, 0x6c1, 0x650, 0x646, 0x62f, 0x648, 0x633, 0x62a, 0x627, 0x646, 0x49b, 0x430, 0x437, 0x430,
-0x49b, 0x20, 0x442, 0x456, 0x43b, 0x456, 0x49a, 0x430, 0x437, 0x430, 0x49b, 0x441, 0x442, 0x430, 0x43d, 0x1781, 0x17d2, 0x1798, 0x17c2, 0x179a,
-0x1780, 0x1798, 0x17d2, 0x1796, 0x17bb, 0x1787, 0x17b6, 0x47, 0x69, 0x6b, 0x75, 0x79, 0x75, 0x4b, 0x69, 0x6e, 0x79, 0x61, 0x72, 0x77,
-0x61, 0x6e, 0x64, 0x61, 0x55, 0x20, 0x52, 0x77, 0x61, 0x6e, 0x64, 0x61, 0x915, 0x94b, 0x902, 0x915, 0x923, 0x940, 0xd55c, 0xad6d,
-0xc5b4, 0xb300, 0xd55c, 0xbbfc, 0xad6d, 0xc870, 0xc120, 0xbbfc, 0xc8fc, 0xc8fc, 0xc758, 0xc778, 0xbbfc, 0xacf5, 0xd654, 0xad6d, 0x4b, 0x6f, 0x79, 0x72,
-0x61, 0x62, 0x6f, 0x72, 0x6f, 0x20, 0x73, 0x65, 0x6e, 0x6e, 0x69, 0x4d, 0x61, 0x61, 0x6c, 0x69, 0x4b, 0x6f, 0x79, 0x72,
-0x61, 0x20, 0x63, 0x69, 0x69, 0x6e, 0x69, 0x6b, 0x75, 0x72, 0x64, 0xee, 0x54, 0x69, 0x72, 0x6b, 0x69, 0x79, 0x65, 0x4b,
-0x77, 0x61, 0x73, 0x69, 0x6f, 0x4b, 0x61, 0x6d, 0x65, 0x72, 0x75, 0x6e, 0x43a, 0x44b, 0x440, 0x433, 0x44b, 0x437, 0x447, 0x430,
-0x41a, 0x44b, 0x440, 0x433, 0x44b, 0x437, 0x441, 0x442, 0x430, 0x43d, 0x4c, 0x61, 0x6b, 0x21f, 0xf3, 0x6c, 0x2bc, 0x69, 0x79, 0x61,
-0x70, 0x69, 0x4d, 0xed, 0x6c, 0x61, 0x68, 0x61, 0x14b, 0x73, 0x6b, 0x61, 0x20, 0x54, 0x21f, 0x61, 0x6d, 0xe1, 0x6b, 0x21f,
-0x6f, 0x10d, 0x68, 0x65, 0x4b, 0x268, 0x6c, 0x61, 0x61, 0x6e, 0x67, 0x69, 0x54, 0x61, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0xed,
-0x61, 0xea5, 0xeb2, 0xea7, 0x6c, 0x61, 0x74, 0x76, 0x69, 0x65, 0x161, 0x75, 0x4c, 0x61, 0x74, 0x76, 0x69, 0x6a, 0x61, 0x6c,
-0x69, 0x6e, 0x67, 0xe1, 0x6c, 0x61, 0x52, 0x65, 0x70, 0x75, 0x62, 0x6c, 0xed, 0x6b, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b,
-0x6f, 0x6e, 0x67, 0xf3, 0x20, 0x44, 0x65, 0x6d, 0x6f, 0x6b, 0x72, 0x61, 0x74, 0xed, 0x6b, 0x69, 0x41, 0x6e, 0x67, 0xf3,
-0x6c, 0x61, 0x52, 0x65, 0x70, 0x69, 0x62, 0x69, 0x6b, 0x69, 0x20, 0x79, 0x61, 0x20, 0x41, 0x66, 0x72, 0xed, 0x6b, 0x61,
-0x20, 0x79, 0x61, 0x20, 0x4b, 0xe1, 0x74, 0x69, 0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x69, 0x65, 0x74, 0x75, 0x76, 0x69,
-0x173, 0x4c, 0x69, 0x65, 0x74, 0x75, 0x76, 0x61, 0x64, 0x6f, 0x6c, 0x6e, 0x6f, 0x73, 0x65, 0x72, 0x62, 0x161, 0x107, 0x69,
-0x6e, 0x61, 0x4e, 0x69, 0x6d, 0x73, 0x6b, 0x61, 0x4e, 0x65, 0x64, 0x64, 0x65, 0x72, 0x73, 0x61, 0x73, 0x73, 0x2019, 0x73,
-0x63, 0x68, 0x44, 0xfc, 0xfc, 0x74, 0x73, 0x63, 0x68, 0x6c, 0x61, 0x6e, 0x64, 0x4e, 0x65, 0x64, 0x64, 0x65, 0x72, 0x6c,
-0x61, 0x6e, 0x6e, 0x65, 0x6e, 0x54, 0x73, 0x68, 0x69, 0x6c, 0x75, 0x62, 0x61, 0x44, 0x69, 0x74, 0x75, 0x6e, 0x67, 0x61,
-0x20, 0x77, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x75, 0x44, 0x68, 0x6f, 0x6c, 0x75, 0x6f, 0x4c, 0xeb, 0x74, 0x7a, 0x65,
-0x62, 0x75, 0x65, 0x72, 0x67, 0x65, 0x73, 0x63, 0x68, 0x4c, 0x75, 0x6c, 0x75, 0x68, 0x69, 0x61, 0x43c, 0x430, 0x43a, 0x435,
-0x434, 0x43e, 0x43d, 0x441, 0x43a, 0x438, 0x421, 0x435, 0x432, 0x435, 0x440, 0x43d, 0x430, 0x20, 0x41c, 0x430, 0x43a, 0x435, 0x434, 0x43e,
-0x43d, 0x438, 0x458, 0x430, 0x4b, 0x69, 0x6d, 0x61, 0x63, 0x68, 0x61, 0x6d, 0x65, 0x92e, 0x948, 0x925, 0x93f, 0x932, 0x940, 0x4d,
-0x61, 0x6b, 0x75, 0x61, 0x55, 0x6d, 0x6f, 0x7a, 0x61, 0x6d, 0x62, 0x69, 0x6b, 0x69, 0x43, 0x68, 0x69, 0x6d, 0x61, 0x6b,
-0x6f, 0x6e, 0x64, 0x65, 0x4d, 0x61, 0x6c, 0x61, 0x67, 0x61, 0x73, 0x79, 0x4d, 0x61, 0x64, 0x61, 0x67, 0x61, 0x73, 0x69,
-0x6b, 0x61, 0x72, 0x61, 0xd2e, 0xd32, 0xd2f, 0xd3e, 0xd33, 0xd02, 0xd07, 0xd28, 0xd4d, 0xd24, 0xd4d, 0xd2f, 0x4d, 0x65, 0x6c, 0x61,
-0x79, 0x75, 0x42, 0x72, 0x75, 0x6e, 0x65, 0x69, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x75, 0x72, 0x61, 0x4d, 0x61, 0x6c,
-0x74, 0x69, 0x9ae, 0x9c8, 0x9a4, 0x9c8, 0x9b2, 0x9cb, 0x9a8, 0x9cd, 0x987, 0x9a8, 0x9cd, 0x9a6, 0x9bf, 0x9af, 0x9bc, 0x9be, 0x47, 0x61,
-0x65, 0x6c, 0x67, 0x45, 0x6c, 0x6c, 0x61, 0x6e, 0x20, 0x56, 0x61, 0x6e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x20, 0x72, 0x65,
-0x6f, 0x20, 0x4d, 0x101, 0x6f, 0x72, 0x69, 0x41, 0x6f, 0x74, 0x65, 0x61, 0x72, 0x6f, 0x61, 0x92e, 0x930, 0x93e, 0x920, 0x940,
-0x54, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0x69, 0x61, 0x645, 0x627, 0x632, 0x631, 0x648, 0x646, 0x6cc, 0x627, 0x6cc, 0x631, 0x627, 0x646,
-0x4b, 0x129, 0x6d, 0x129, 0x72, 0x169, 0x6d, 0x65, 0x74, 0x61, 0x2bc, 0x4b, 0x61, 0x6d, 0x61, 0x6c, 0x75, 0x6e, 0x43c, 0x43e,
-0x43d, 0x433, 0x43e, 0x43b, 0x41c, 0x43e, 0x43d, 0x433, 0x43e, 0x43b, 0x6b, 0x72, 0x65, 0x6f, 0x6c, 0x20, 0x6d, 0x6f, 0x72, 0x69,
-0x73, 0x69, 0x65, 0x6e, 0x4d, 0x6f, 0x72, 0x69, 0x73, 0x4d, 0x55, 0x4e, 0x44, 0x41, 0x14a, 0x6b, 0x61, 0x6d, 0x65, 0x72,
-0x75, 0x14b, 0x4b, 0x68, 0x6f, 0x65, 0x6b, 0x68, 0x6f, 0x65, 0x67, 0x6f, 0x77, 0x61, 0x62, 0x4e, 0x61, 0x6d, 0x69, 0x62,
-0x69, 0x61, 0x62, 0x928, 0x947, 0x92a, 0x93e, 0x932, 0x940, 0x53, 0x68, 0x77, 0xf3, 0x14b, 0xf2, 0x20, 0x6e, 0x67, 0x69, 0x65,
-0x6d, 0x62, 0x254, 0x254, 0x6e, 0x4b, 0xe0, 0x6d, 0x61, 0x6c, 0xfb, 0x6d, 0x4e, 0x64, 0x61, 0xa78c, 0x61, 0x4b, 0x61, 0x6d,
-0x25b, 0x6c, 0xfb, 0x6e, 0x4e, 0x61, 0x69, 0x6a, 0xed, 0x72, 0x69, 0xe1, 0x20, 0x50, 0xed, 0x6a, 0x69, 0x6e, 0x4e, 0x61,
-0x69, 0x6a, 0xed, 0x72, 0x69, 0x61, 0x644, 0x6ca, 0x631, 0x6cc, 0x20, 0x634, 0x648, 0x645, 0x627, 0x644, 0x6cc, 0x64, 0x61, 0x76,
-0x76, 0x69, 0x73, 0xe1, 0x6d, 0x65, 0x67, 0x69, 0x65, 0x6c, 0x6c, 0x61, 0x4e, 0x6f, 0x72, 0x67, 0x61, 0x53, 0x75, 0x6f,
-0x70, 0x6d, 0x61, 0x52, 0x75, 0x6f, 0x167, 0x167, 0x61, 0x69, 0x73, 0x69, 0x4e, 0x64, 0x65, 0x62, 0x65, 0x6c, 0x65, 0x6e,
-0x6f, 0x72, 0x73, 0x6b, 0x20, 0x62, 0x6f, 0x6b, 0x6d, 0xe5, 0x6c, 0x4e, 0x6f, 0x72, 0x67, 0x65, 0x53, 0x76, 0x61, 0x6c,
-0x62, 0x61, 0x72, 0x64, 0x20, 0x6f, 0x67, 0x20, 0x4a, 0x61, 0x6e, 0x20, 0x4d, 0x61, 0x79, 0x65, 0x6e, 0x6e, 0x6f, 0x72,
-0x73, 0x6b, 0x20, 0x6e, 0x79, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x4e, 0x6f, 0x72, 0x65, 0x67, 0x54, 0x68, 0x6f, 0x6b, 0x20,
-0x4e, 0x61, 0x74, 0x68, 0x52, 0x75, 0x6e, 0x79, 0x61, 0x6e, 0x6b, 0x6f, 0x72, 0x65, 0xb13, 0xb21, 0xb3c, 0xb3f, 0xb06, 0xb2d,
-0xb3e, 0xb30, 0xb24, 0x4f, 0x72, 0x6f, 0x6d, 0x6f, 0x6f, 0x49, 0x74, 0x6f, 0x6f, 0x70, 0x68, 0x69, 0x79, 0x61, 0x61, 0x4b,
-0x65, 0x65, 0x6e, 0x69, 0x79, 0x61, 0x61, 0x438, 0x440, 0x43e, 0x43d, 0x413, 0x443, 0x44b, 0x440, 0x434, 0x437, 0x44b, 0x441, 0x442,
-0x43e, 0x43d, 0x423, 0x4d5, 0x440, 0x4d5, 0x441, 0x435, 0x67e, 0x69a, 0x62a, 0x648, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x633, 0x62a, 0x627,
-0x646, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x641, 0x627, 0x631, 0x633, 0x6cc, 0x62f, 0x631, 0x6cc, 0x70, 0x6f, 0x6c, 0x73,
-0x6b, 0x69, 0x50, 0x6f, 0x6c, 0x73, 0x6b, 0x61, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x75, 0xea, 0x73, 0x42, 0x72, 0x61,
-0x73, 0x69, 0x6c, 0x41, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x43, 0x61, 0x62, 0x6f, 0x20, 0x56, 0x65, 0x72, 0x64, 0x65, 0x47,
-0x75, 0x69, 0x6e, 0xe9, 0x20, 0x45, 0x71, 0x75, 0x61, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x47, 0x75, 0x69, 0x6e, 0xe9,
-0x2d, 0x42, 0x69, 0x73, 0x73, 0x61, 0x75, 0x4c, 0x75, 0x78, 0x65, 0x6d, 0x62, 0x75, 0x72, 0x67, 0x6f, 0x4d, 0x61, 0x63,
-0x61, 0x75, 0x2c, 0x20, 0x52, 0x41, 0x45, 0x20, 0x64, 0x61, 0x20, 0x43, 0x68, 0x69, 0x6e, 0x61, 0x4d, 0x6f, 0xe7, 0x61,
-0x6d, 0x62, 0x69, 0x71, 0x75, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x75, 0xea, 0x73, 0x20, 0x65, 0x75, 0x72, 0x6f,
-0x70, 0x65, 0x75, 0x50, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x61, 0x6c, 0x53, 0xe3, 0x6f, 0x20, 0x54, 0x6f, 0x6d, 0xe9, 0x20,
-0x65, 0x20, 0x50, 0x72, 0xed, 0x6e, 0x63, 0x69, 0x70, 0x65, 0x53, 0x75, 0xed, 0xe7, 0x61, 0x54, 0x69, 0x6d, 0x6f, 0x72,
-0x2d, 0x4c, 0x65, 0x73, 0x74, 0x65, 0xa2a, 0xa70, 0xa1c, 0xa3e, 0xa2c, 0xa40, 0xa2d, 0xa3e, 0xa30, 0xa24, 0x67e, 0x646, 0x62c, 0x627,
-0x628, 0x6cc, 0x52, 0x75, 0x6e, 0x61, 0x73, 0x69, 0x6d, 0x69, 0x50, 0x65, 0x72, 0xfa, 0x42, 0x6f, 0x6c, 0x69, 0x76, 0x69,
-0x61, 0x45, 0x63, 0x75, 0x61, 0x64, 0x6f, 0x72, 0x72, 0x6f, 0x6d, 0xe2, 0x6e, 0x103, 0x52, 0x6f, 0x6d, 0xe2, 0x6e, 0x69,
-0x61, 0x52, 0x65, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x20, 0x4d, 0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x61, 0x72, 0x75,
-0x6d, 0x61, 0x6e, 0x74, 0x73, 0x63, 0x68, 0x53, 0x76, 0x69, 0x7a, 0x72, 0x61, 0x4b, 0x69, 0x68, 0x6f, 0x72, 0x6f, 0x6d,
-0x62, 0x6f, 0x49, 0x6b, 0x69, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x55, 0x62, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x440, 0x443,
-0x441, 0x441, 0x43a, 0x438, 0x439, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x44f, 0x41a, 0x430, 0x437, 0x430, 0x445, 0x441, 0x442, 0x430, 0x43d,
-0x41a, 0x438, 0x440, 0x433, 0x438, 0x437, 0x438, 0x44f, 0x41c, 0x43e, 0x43b, 0x434, 0x43e, 0x432, 0x430, 0x423, 0x43a, 0x440, 0x430, 0x438,
-0x43d, 0x430, 0x4b, 0x69, 0x72, 0x75, 0x77, 0x61, 0x441, 0x430, 0x445, 0x430, 0x20, 0x442, 0x44b, 0x43b, 0x430, 0x410, 0x440, 0x430,
-0x441, 0x441, 0x44b, 0x44b, 0x439, 0x430, 0x4b, 0x69, 0x73, 0x61, 0x6d, 0x70, 0x75, 0x72, 0x53, 0xe4, 0x6e, 0x67, 0xf6, 0x4b,
-0xf6, 0x64, 0xf6, 0x72, 0xf6, 0x73, 0xea, 0x73, 0x65, 0x20, 0x74, 0xee, 0x20, 0x42, 0xea, 0x61, 0x66, 0x72, 0xee, 0x6b,
-0x61, 0x49, 0x73, 0x68, 0x69, 0x73, 0x61, 0x6e, 0x67, 0x75, 0x54, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0x69, 0x79, 0x61, 0x938,
-0x902, 0x938, 0x94d, 0x915, 0x943, 0x924, 0x20, 0x92d, 0x93e, 0x937, 0x93e, 0x92d, 0x93e, 0x930, 0x924, 0x903, 0x1c65, 0x1c5f, 0x1c71, 0x1c5b,
-0x1c5f, 0x1c72, 0x1c64, 0x1c64, 0x1c71, 0x1c70, 0x1c64, 0x1c6d, 0x1c5f, 0x73, 0x61, 0x72, 0x64, 0x75, 0x73, 0x65, 0x6e, 0x61, 0x441, 0x440,
-0x43f, 0x441, 0x43a, 0x438, 0x421, 0x440, 0x431, 0x438, 0x458, 0x430, 0x41a, 0x43e, 0x441, 0x43e, 0x432, 0x43e, 0x426, 0x440, 0x43d, 0x430,
-0x20, 0x413, 0x43e, 0x440, 0x430, 0x73, 0x72, 0x70, 0x73, 0x6b, 0x69, 0x4b, 0x6f, 0x73, 0x6f, 0x76, 0x6f, 0x43, 0x72, 0x6e,
-0x61, 0x20, 0x47, 0x6f, 0x72, 0x61, 0x53, 0x72, 0x62, 0x69, 0x6a, 0x61, 0x4b, 0x69, 0x73, 0x68, 0x61, 0x6d, 0x62, 0x61,
-0x61, 0x63, 0x68, 0x69, 0x53, 0x68, 0x6f, 0x6e, 0x61, 0xa188, 0xa320, 0xa259, 0xa34f, 0xa1e9, 0x633, 0x646, 0x68c, 0x64a, 0x67e, 0x627,
-0x6aa, 0x633, 0x62a, 0x627, 0x646, 0x938, 0x93f, 0x928, 0x94d, 0x927, 0x940, 0xdc3, 0xdd2, 0xd82, 0xdc4, 0xdbd, 0xdc1, 0xdca, 0x200d, 0xdbb,
-0xdd3, 0x20, 0xdbd, 0xd82, 0xd9a, 0xdcf, 0xdc0, 0x73, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x10d, 0x69, 0x6e, 0x61, 0x53, 0x6c, 0x6f,
-0x76, 0x65, 0x6e, 0x73, 0x6b, 0x6f, 0x73, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x161, 0x10d, 0x69, 0x6e, 0x61, 0x53, 0x6c, 0x6f,
-0x76, 0x65, 0x6e, 0x69, 0x6a, 0x61, 0x4f, 0x6c, 0x75, 0x73, 0x6f, 0x67, 0x61, 0x53, 0x6f, 0x6f, 0x6d, 0x61, 0x61, 0x6c,
-0x69, 0x53, 0x6f, 0x6f, 0x6d, 0x61, 0x61, 0x6c, 0x69, 0x79, 0x61, 0x4a, 0x61, 0x62, 0x75, 0x75, 0x74, 0x69, 0x49, 0x74,
-0x6f, 0x6f, 0x62, 0x69, 0x79, 0x61, 0x65, 0x73, 0x70, 0x61, 0xf1, 0x6f, 0x6c, 0x20, 0x64, 0x65, 0x20, 0x45, 0x73, 0x70,
-0x61, 0xf1, 0x61, 0x41, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x61, 0x42, 0x65, 0x6c, 0x69, 0x63, 0x65, 0x43, 0x61,
-0x6e, 0x61, 0x72, 0x69, 0x61, 0x73, 0x43, 0x65, 0x75, 0x74, 0x61, 0x20, 0x79, 0x20, 0x4d, 0x65, 0x6c, 0x69, 0x6c, 0x6c,
-0x61, 0x43, 0x68, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x69, 0x61, 0x43, 0x6f, 0x73, 0x74, 0x61, 0x20,
-0x52, 0x69, 0x63, 0x61, 0x43, 0x75, 0x62, 0x61, 0x52, 0x65, 0x70, 0xfa, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x20, 0x44, 0x6f,
-0x6d, 0x69, 0x6e, 0x69, 0x63, 0x61, 0x6e, 0x61, 0x45, 0x6c, 0x20, 0x53, 0x61, 0x6c, 0x76, 0x61, 0x64, 0x6f, 0x72, 0x47,
-0x75, 0x69, 0x6e, 0x65, 0x61, 0x20, 0x45, 0x63, 0x75, 0x61, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x47, 0x75, 0x61, 0x74,
-0x65, 0x6d, 0x61, 0x6c, 0x61, 0x48, 0x6f, 0x6e, 0x64, 0x75, 0x72, 0x61, 0x73, 0x65, 0x73, 0x70, 0x61, 0xf1, 0x6f, 0x6c,
-0x20, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x6f, 0x61, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x4c, 0x61, 0x74, 0x69,
-0x6e, 0x6f, 0x61, 0x6d, 0xe9, 0x72, 0x69, 0x63, 0x61, 0x65, 0x73, 0x70, 0x61, 0xf1, 0x6f, 0x6c, 0x20, 0x64, 0x65, 0x20,
-0x4d, 0xe9, 0x78, 0x69, 0x63, 0x6f, 0x4d, 0xe9, 0x78, 0x69, 0x63, 0x6f, 0x4e, 0x69, 0x63, 0x61, 0x72, 0x61, 0x67, 0x75,
-0x61, 0x50, 0x61, 0x6e, 0x61, 0x6d, 0xe1, 0x50, 0x61, 0x72, 0x61, 0x67, 0x75, 0x61, 0x79, 0x46, 0x69, 0x6c, 0x69, 0x70,
-0x69, 0x6e, 0x61, 0x73, 0x45, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x73, 0x20, 0x55, 0x6e, 0x69, 0x64, 0x6f, 0x73, 0x55, 0x72,
-0x75, 0x67, 0x75, 0x61, 0x79, 0x56, 0x65, 0x6e, 0x65, 0x7a, 0x75, 0x65, 0x6c, 0x61, 0x2d5c, 0x2d30, 0x2d4e, 0x2d30, 0x2d63, 0x2d49,
-0x2d56, 0x2d5c, 0x2d4d, 0x2d4e, 0x2d56, 0x2d54, 0x2d49, 0x2d31, 0x42, 0x61, 0x73, 0x61, 0x20, 0x53, 0x75, 0x6e, 0x64, 0x61, 0x4b, 0x69,
-0x73, 0x77, 0x61, 0x68, 0x69, 0x6c, 0x69, 0x4a, 0x61, 0x6d, 0x68, 0x75, 0x72, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x69,
-0x64, 0x65, 0x6d, 0x6f, 0x6b, 0x72, 0x61, 0x73, 0x69, 0x61, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x73,
-0x76, 0x65, 0x6e, 0x73, 0x6b, 0x61, 0x53, 0x76, 0x65, 0x72, 0x69, 0x67, 0x65, 0xc5, 0x6c, 0x61, 0x6e, 0x64, 0x53, 0x63,
-0x68, 0x77, 0x69, 0x69, 0x7a, 0x65, 0x72, 0x74, 0xfc, 0xfc, 0x74, 0x73, 0x63, 0x68, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x72,
-0x69, 0x69, 0x63, 0x68, 0x4c, 0x69, 0xe4, 0x63, 0x68, 0x74, 0x65, 0x73, 0x63, 0x68, 0x74, 0xe4, 0x69, 0x2d5c, 0x2d30, 0x2d5b,
-0x2d4d, 0x2d43, 0x2d49, 0x2d5c, 0x54, 0x61, 0x73, 0x68, 0x65, 0x6c, 0x1e25, 0x69, 0x79, 0x74, 0x6c, 0x6d, 0x263, 0x72, 0x69, 0x62,
-0x4b, 0x69, 0x74, 0x61, 0x69, 0x74, 0x61, 0x442, 0x43e, 0x4b7, 0x438, 0x43a, 0x4e3, 0x422, 0x43e, 0x4b7, 0x438, 0x43a, 0x438, 0x441,
-0x442, 0x43e, 0x43d, 0xba4, 0xbae, 0xbbf, 0xbb4, 0xbcd, 0xb87, 0xba8, 0xbcd, 0xba4, 0xbbf, 0xbaf, 0xbbe, 0xbae, 0xbb2, 0xbc7, 0xb9a, 0xbbf,
-0xbaf, 0xbbe, 0xb9a, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbaa, 0xbcd, 0xbaa, 0xbc2, 0xbb0, 0xbcd, 0xb87, 0xbb2, 0xb99, 0xbcd, 0xb95, 0xbc8, 0x54,
-0x61, 0x73, 0x61, 0x77, 0x61, 0x71, 0x20, 0x73, 0x65, 0x6e, 0x6e, 0x69, 0x4e, 0x69, 0x17e, 0x65, 0x72, 0x442, 0x430, 0x442,
-0x430, 0x440, 0xc24, 0xc46, 0xc32, 0xc41, 0xc17, 0xc41, 0xc2d, 0xc3e, 0xc30, 0xc24, 0xc26, 0xc47, 0xc36, 0xc02, 0x4b, 0x69, 0x74, 0x65,
-0x73, 0x6f, 0x4b, 0x65, 0x6e, 0x69, 0x61, 0xe44, 0xe17, 0xe22, 0xf56, 0xf7c, 0xf51, 0xf0b, 0xf66, 0xf90, 0xf51, 0xf0b, 0xf62, 0xf92,
-0xfb1, 0xf0b, 0xf53, 0xf42, 0xf62, 0xf92, 0xfb1, 0xf0b, 0xf42, 0xf62, 0xf0b, 0x1275, 0x130d, 0x122d, 0x129b, 0x12a4, 0x122d, 0x1275, 0x122b, 0x6c,
-0x65, 0x61, 0x20, 0x66, 0x61, 0x6b, 0x61, 0x74, 0x6f, 0x6e, 0x67, 0x61, 0x54, 0xfc, 0x72, 0x6b, 0xe7, 0x65, 0x54, 0xfc,
-0x72, 0x6b, 0x69, 0x79, 0x65, 0x4b, 0x131, 0x62, 0x72, 0x131, 0x73, 0x74, 0xfc, 0x72, 0x6b, 0x6d, 0x65, 0x6e, 0x20, 0x64,
-0x69, 0x6c, 0x69, 0x54, 0xfc, 0x72, 0x6b, 0x6d, 0x65, 0x6e, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x443, 0x43a, 0x440, 0x430, 0x457,
-0x43d, 0x441, 0x44c, 0x43a, 0x430, 0x423, 0x43a, 0x440, 0x430, 0x457, 0x43d, 0x430, 0x68, 0x6f, 0x72, 0x6e, 0x6a, 0x6f, 0x73, 0x65,
-0x72, 0x62, 0x161, 0x107, 0x69, 0x6e, 0x61, 0x4e, 0x11b, 0x6d, 0x73, 0x6b, 0x61, 0x627, 0x631, 0x62f, 0x648, 0x628, 0x6be, 0x627,
-0x631, 0x62a, 0x626, 0x6c7, 0x64a, 0x63a, 0x6c7, 0x631, 0x686, 0x6d5, 0x62c, 0x6c7, 0x6ad, 0x6af, 0x648, 0x6f, 0x2018, 0x7a, 0x62, 0x65,
-0x6b, 0x4f, 0x2bb, 0x7a, 0x62, 0x65, 0x6b, 0x69, 0x73, 0x74, 0x6f, 0x6e, 0x627, 0x648, 0x632, 0x628, 0x6cc, 0x6a9, 0x45e, 0x437,
-0x431, 0x435, 0x43a, 0x447, 0x430, 0x40e, 0x437, 0x431, 0x435, 0x43a, 0x438, 0x441, 0x442, 0x43e, 0x43d, 0xa559, 0xa524, 0xa55e, 0xa524, 0xa52b,
-0xa569, 0x56, 0x61, 0x69, 0x4c, 0x61, 0x69, 0x62, 0x68, 0x69, 0x79, 0x61, 0x54, 0x69, 0x1ebf, 0x6e, 0x67, 0x20, 0x56, 0x69,
-0x1ec7, 0x74, 0x56, 0x69, 0x1ec7, 0x74, 0x20, 0x4e, 0x61, 0x6d, 0x4b, 0x79, 0x69, 0x76, 0x75, 0x6e, 0x6a, 0x6f, 0x57, 0x61,
-0x6c, 0x73, 0x65, 0x72, 0x53, 0x63, 0x68, 0x77, 0x69, 0x7a, 0x43, 0x79, 0x6d, 0x72, 0x61, 0x65, 0x67, 0x59, 0x20, 0x44,
-0x65, 0x79, 0x72, 0x6e, 0x61, 0x73, 0x20, 0x55, 0x6e, 0x65, 0x64, 0x69, 0x67, 0x46, 0x72, 0x79, 0x73, 0x6b, 0x4e, 0x65,
-0x64, 0x65, 0x72, 0x6c, 0xe2, 0x6e, 0x57, 0x6f, 0x6c, 0x6f, 0x66, 0x69, 0x73, 0x69, 0x58, 0x68, 0x6f, 0x73, 0x61, 0x65,
-0x4d, 0x7a, 0x61, 0x6e, 0x74, 0x73, 0x69, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x6e, 0x75, 0x61, 0x73, 0x75, 0x65,
-0x4b, 0x65, 0x6d, 0x65, 0x6c, 0xfa, 0x6e, 0x5d9, 0x5d9, 0x5b4, 0x5d3, 0x5d9, 0x5e9, 0x5d5, 0x5d5, 0x5e2, 0x5dc, 0x5d8, 0xc8, 0x64,
-0xe8, 0x20, 0x59, 0x6f, 0x72, 0xf9, 0x62, 0xe1, 0x4e, 0xe0, 0xec, 0x6a, 0xed, 0x72, 0xed, 0xe0, 0x42, 0x25b, 0x300, 0x6e,
-0x25b, 0x300, 0x5a, 0x61, 0x72, 0x6d, 0x61, 0x63, 0x69, 0x69, 0x6e, 0x65, 0x69, 0x73, 0x69, 0x5a, 0x75, 0x6c, 0x75, 0x69,
-0x4e, 0x69, 0x6e, 0x67, 0x69, 0x7a, 0x69, 0x6d, 0x75, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x6b, 0x61, 0x6e, 0x68,
-0x67, 0xe1, 0x67, 0x4d, 0x72, 0x61, 0x73, 0x69, 0x72, 0x6e, 0x68, 0x65, 0x1ebd, 0x67, 0x61, 0x74, 0x75, 0x42, 0x72, 0x61,
-0x73, 0x69, 0x75, 0xf1, 0x65, 0x6e, 0x67, 0x61, 0x74, 0xfa, 0x4b, 0x75, 0x72, 0x169, 0x62, 0x69, 0x79, 0x61, 0x57, 0x65,
-0x6e, 0x65, 0x73, 0x75, 0x65, 0x72, 0x61
+static constexpr char16_t endonyms_data[] = {
+0x410, 0x525, 0x441, 0x448, 0x4d9, 0x430, 0x49a, 0x44b, 0x440, 0x4ad, 0x442, 0x4d9,
+0x44b, 0x43b, 0x430, 0x51, 0x61, 0x66, 0x61, 0x72, 0x4f, 0x74, 0x6f, 0x62,
+0x62, 0x69, 0x61, 0x59, 0x61, 0x62, 0x75, 0x75, 0x74, 0x69, 0x45, 0x72,
+0x65, 0x74, 0x72, 0x69, 0x61, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x61,
+0x6e, 0x73, 0x53, 0x75, 0x69, 0x64, 0x2d, 0x41, 0x66, 0x72, 0x69, 0x6b,
+0x61, 0x4e, 0x61, 0x6d, 0x69, 0x62, 0x69, 0xeb, 0x41, 0x67, 0x68, 0x65,
+0x6d, 0x4b, 0xe0, 0x6d, 0xe0, 0x6c, 0xfb, 0x14b, 0x41, 0x6b, 0x61, 0x6e,
+0x47, 0x61, 0x61, 0x6e, 0x61, 0x41, 0x6b, 0x6f, 0x6f, 0x73, 0x65, 0x4b,
+0x61, 0x6d, 0x65, 0x72, 0xfb, 0x6e, 0x73, 0x68, 0x71, 0x69, 0x70, 0x53,
+0x68, 0x71, 0x69, 0x70, 0xeb, 0x72, 0x69, 0x4b, 0x6f, 0x73, 0x6f, 0x76,
+0xeb, 0x4d, 0x61, 0x71, 0x65, 0x64, 0x6f, 0x6e, 0x69, 0x61, 0x20, 0x65,
+0x20, 0x56, 0x65, 0x72, 0x69, 0x75, 0x74, 0x12a0, 0x121b, 0x122d, 0x129b, 0x12a2,
+0x1275, 0x12ee, 0x1335, 0x12eb, 0x627, 0x644, 0x639, 0x631, 0x628, 0x64a, 0x629, 0x645,
+0x635, 0x631, 0x627, 0x644, 0x62c, 0x632, 0x627, 0x626, 0x631, 0x627, 0x644, 0x628,
+0x62d, 0x631, 0x64a, 0x646, 0x62a, 0x634, 0x627, 0x62f, 0x62c, 0x632, 0x631, 0x20,
+0x627, 0x644, 0x642, 0x645, 0x631, 0x62c, 0x64a, 0x628, 0x648, 0x62a, 0x64a, 0x625,
+0x631, 0x64a, 0x62a, 0x631, 0x64a, 0x627, 0x627, 0x644, 0x639, 0x631, 0x627, 0x642,
+0x625, 0x633, 0x631, 0x627, 0x626, 0x64a, 0x644, 0x627, 0x644, 0x623, 0x631, 0x62f,
+0x646, 0x627, 0x644, 0x643, 0x648, 0x64a, 0x62a, 0x644, 0x628, 0x646, 0x627, 0x646,
+0x644, 0x64a, 0x628, 0x64a, 0x627, 0x645, 0x648, 0x631, 0x64a, 0x62a, 0x627, 0x646,
+0x64a, 0x627, 0x627, 0x644, 0x645, 0x63a, 0x631, 0x628, 0x639, 0x64f, 0x645, 0x627,
+0x646, 0x627, 0x644, 0x623, 0x631, 0x627, 0x636, 0x64a, 0x20, 0x627, 0x644, 0x641,
+0x644, 0x633, 0x637, 0x64a, 0x646, 0x64a, 0x629, 0x642, 0x637, 0x631, 0x627, 0x644,
+0x645, 0x645, 0x644, 0x643, 0x629, 0x20, 0x627, 0x644, 0x639, 0x631, 0x628, 0x64a,
+0x629, 0x20, 0x627, 0x644, 0x633, 0x639, 0x648, 0x62f, 0x64a, 0x629, 0x627, 0x644,
+0x635, 0x648, 0x645, 0x627, 0x644, 0x62c, 0x646, 0x648, 0x628, 0x20, 0x627, 0x644,
+0x633, 0x648, 0x62f, 0x627, 0x646, 0x627, 0x644, 0x633, 0x648, 0x62f, 0x627, 0x646,
+0x633, 0x648, 0x631, 0x64a, 0x627, 0x62a, 0x648, 0x646, 0x633, 0x627, 0x644, 0x625,
+0x645, 0x627, 0x631, 0x627, 0x62a, 0x20, 0x627, 0x644, 0x639, 0x631, 0x628, 0x64a,
+0x629, 0x20, 0x627, 0x644, 0x645, 0x62a, 0x62d, 0x62f, 0x629, 0x627, 0x644, 0x635,
+0x62d, 0x631, 0x627, 0x621, 0x20, 0x627, 0x644, 0x63a, 0x631, 0x628, 0x64a, 0x629,
+0x627, 0x644, 0x639, 0x631, 0x628, 0x64a, 0x629, 0x20, 0x627, 0x644, 0x641, 0x635,
+0x62d, 0x649, 0x20, 0x627, 0x644, 0x62d, 0x62f, 0x64a, 0x62b, 0x629, 0x627, 0x644,
+0x639, 0x627, 0x644, 0x645, 0x627, 0x644, 0x64a, 0x645, 0x646, 0x61, 0x72, 0x61,
+0x67, 0x6f, 0x6e, 0xe9, 0x73, 0x45, 0x73, 0x70, 0x61, 0x6e, 0x79, 0x61,
+0x570, 0x561, 0x575, 0x565, 0x580, 0x565, 0x576, 0x540, 0x561, 0x575, 0x561, 0x57d,
+0x57f, 0x561, 0x576, 0x985, 0x9b8, 0x9ae, 0x9c0, 0x9af, 0x9bc, 0x9be, 0x9ad, 0x9be,
+0x9f0, 0x9a4, 0x61, 0x73, 0x74, 0x75, 0x72, 0x69, 0x61, 0x6e, 0x75, 0x45,
+0x73, 0x70, 0x61, 0xf1, 0x61, 0x4b, 0x69, 0x70, 0x61, 0x72, 0x65, 0x54,
+0x61, 0x64, 0x68, 0x61, 0x6e, 0x69, 0x61, 0x41, 0x74, 0x73, 0x61, 0x6d,
+0x61, 0x7a, 0x259, 0x72, 0x62, 0x61, 0x79, 0x63, 0x61, 0x6e, 0x41, 0x7a,
+0x259, 0x72, 0x62, 0x61, 0x79, 0x63, 0x61, 0x6e, 0x62a, 0x6c6, 0x631, 0x6a9,
+0x62c, 0x647, 0x430, 0x437, 0x4d9, 0x440, 0x431, 0x430, 0x458, 0x4b9, 0x430, 0x43d,
+0x410, 0x437, 0x4d9, 0x440, 0x431, 0x430, 0x458, 0x4b9, 0x430, 0x43d, 0x72, 0x69,
+0x6b, 0x70, 0x61, 0x6b, 0x61, 0x6d, 0x25b, 0x72, 0xfa, 0x6e, 0x62, 0x61,
+0x6d, 0x61, 0x6e, 0x61, 0x6b, 0x61, 0x6e, 0x4d, 0x61, 0x6c, 0x69, 0x9ac,
+0x9be, 0x982, 0x9b2, 0x9be, 0x9ac, 0x9be, 0x982, 0x9b2, 0x9be, 0x9a6, 0x9c7, 0x9b6,
+0x9ad, 0x9be, 0x9b0, 0x9a4, 0x181, 0xe0, 0x73, 0xe0, 0x61, 0x4b, 0xe0, 0x6d,
+0x25b, 0x300, 0x72, 0xfb, 0x6e, 0x431, 0x430, 0x448, 0x4a1, 0x43e, 0x440, 0x442,
+0x20, 0x442, 0x435, 0x43b, 0x435, 0x65, 0x75, 0x73, 0x6b, 0x61, 0x72, 0x61,
+0x45, 0x73, 0x70, 0x61, 0x69, 0x6e, 0x69, 0x61, 0x431, 0x435, 0x43b, 0x430,
+0x440, 0x443, 0x441, 0x43a, 0x430, 0x44f, 0x411, 0x435, 0x43b, 0x430, 0x440, 0x443,
+0x441, 0x44c, 0x49, 0x63, 0x68, 0x69, 0x62, 0x65, 0x6d, 0x62, 0x61, 0x5a,
+0x61, 0x6d, 0x62, 0x69, 0x61, 0x48, 0x69, 0x62, 0x65, 0x6e, 0x61, 0x48,
+0x75, 0x74, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x92d, 0x94b, 0x91c,
+0x92a, 0x941, 0x930, 0x940, 0x92d, 0x93e, 0x930, 0x924, 0x1265, 0x120a, 0x1295, 0x12a4,
+0x122d, 0x1275, 0x122b, 0x92c, 0x930, 0x2019, 0x62, 0x6f, 0x73, 0x61, 0x6e, 0x73,
+0x6b, 0x69, 0x42, 0x6f, 0x73, 0x6e, 0x61, 0x20, 0x69, 0x20, 0x48, 0x65,
+0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x69, 0x6e, 0x61, 0x431, 0x43e, 0x441,
+0x430, 0x43d, 0x441, 0x43a, 0x438, 0x411, 0x43e, 0x441, 0x43d, 0x430, 0x20, 0x438,
+0x20, 0x425, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x438, 0x43d, 0x430,
+0x62, 0x72, 0x65, 0x7a, 0x68, 0x6f, 0x6e, 0x65, 0x67, 0x46, 0x72, 0x61,
+0xf1, 0x73, 0x431, 0x44a, 0x43b, 0x433, 0x430, 0x440, 0x441, 0x43a, 0x438, 0x411,
+0x44a, 0x43b, 0x433, 0x430, 0x440, 0x438, 0x44f, 0x1019, 0x103c, 0x1014, 0x103a, 0x1019,
+0x102c, 0x7cb5, 0x8a9e, 0x4e2d, 0x83ef, 0x4eba, 0x6c11, 0x5171, 0x548c, 0x570b, 0x9999, 0x6e2f,
+0x7279, 0x5225, 0x884c, 0x653f, 0x5340, 0x7ca4, 0x8bed, 0x4e2d, 0x534e, 0x4eba, 0x6c11, 0x5171,
+0x548c, 0x56fd, 0x63, 0x61, 0x74, 0x61, 0x6c, 0xe0, 0x41, 0x6e, 0x64, 0x6f,
+0x72, 0x72, 0x61, 0x46, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x49, 0x74, 0xe0,
+0x6c, 0x69, 0x61, 0x43, 0x65, 0x62, 0x75, 0x61, 0x6e, 0x6f, 0x50, 0x69,
+0x6c, 0x69, 0x70, 0x69, 0x6e, 0x61, 0x73, 0x54, 0x61, 0x6d, 0x61, 0x7a,
+0x69, 0x263, 0x74, 0x20, 0x6e, 0x20, 0x6c, 0x61, 0x1e6d, 0x6c, 0x61, 0x1e63,
+0x4d, 0x65, 0x1e5b, 0x1e5b, 0x75, 0x6b, 0x6a9, 0x648, 0x631, 0x62f, 0x6cc, 0x6cc,
+0x20, 0x646, 0x627, 0x648, 0x6d5, 0x646, 0x62f, 0x6cc, 0x639, 0x6ce, 0x631, 0x627,
+0x642, 0x626, 0x6ce, 0x631, 0x627, 0x646, 0xd804, 0xdd0c, 0xd804, 0xdd0b, 0xd804, 0xdd34,
+0xd804, 0xdd1f, 0xd804, 0xdd33, 0xd804, 0xdd26, 0xd804, 0xdd1d, 0xd804, 0xdd01, 0xd804, 0xdd23,
+0xd804, 0xdd18, 0xd804, 0xdd2c, 0xd804, 0xdd0c, 0xd804, 0xdd34, 0xd804, 0xdd1e, 0xd804, 0xdd22,
+0xd804, 0xdd27, 0xd804, 0xdd16, 0xd804, 0xdd34, 0x43d, 0x43e, 0x445, 0x447, 0x438, 0x439,
+0x43d, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x13e3, 0x13b3, 0x13a9, 0x13cc, 0x13ca, 0x20,
+0x13a2, 0x13f3, 0x13be, 0x13b5, 0x13cd, 0x13d4, 0x13c5, 0x20, 0x13cd, 0x13a6, 0x13da, 0x13a9,
+0x43, 0x68, 0x69, 0x6b, 0x61, 0x73, 0x68, 0x73, 0x68, 0x61, 0x6e, 0x6f,
+0x6d, 0x70, 0x61, 0x2bc, 0x55, 0x6e, 0x69, 0x74, 0x65, 0x64, 0x20, 0x53,
+0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x75, 0x6b, 0x69, 0x67, 0x61, 0x55,
+0x67, 0x61, 0x6e, 0x64, 0x61, 0x7b80, 0x4f53, 0x4e2d, 0x6587, 0x4e2d, 0x56fd, 0x4e2d,
+0x56fd, 0x9999, 0x6e2f, 0x7279, 0x522b, 0x884c, 0x653f, 0x533a, 0x4e2d, 0x56fd, 0x6fb3, 0x95e8,
+0x7279, 0x522b, 0x884c, 0x653f, 0x533a, 0x65b0, 0x52a0, 0x5761, 0x7e41, 0x9ad4, 0x4e2d, 0x6587,
+0x4e2d, 0x570b, 0x9999, 0x6e2f, 0x7279, 0x5225, 0x884c, 0x653f, 0x5340, 0x4e2d, 0x570b, 0x6fb3,
+0x9580, 0x7279, 0x5225, 0x884c, 0x653f, 0x5340, 0x53f0, 0x7063, 0x446, 0x435, 0x440, 0x43a,
+0x43e, 0x432, 0x43d, 0x43e, 0x441, 0x43b, 0x43e, 0x432, 0x435, 0x301, 0x43d, 0x441,
+0x43a, 0x457, 0x439, 0x440, 0x461, 0x441, 0x441, 0x456, 0x301, 0x430, 0x447, 0x4d1,
+0x432, 0x430, 0x448, 0x420, 0x430, 0x4ab, 0x4ab, 0x435, 0x439, 0x4b, 0xf6, 0x6c,
+0x73, 0x63, 0x68, 0x44, 0x6f, 0xfc, 0x74, 0x73, 0x63, 0x68, 0x6c, 0x61,
+0x6e, 0x64, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x77, 0x65, 0x6b, 0x52, 0x79,
+0x77, 0x76, 0x61, 0x6e, 0x65, 0x74, 0x68, 0x20, 0x55, 0x6e, 0x79, 0x73,
+0x63, 0x6f, 0x72, 0x73, 0x75, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x69, 0x61,
+0x68, 0x72, 0x76, 0x61, 0x74, 0x73, 0x6b, 0x69, 0x48, 0x72, 0x76, 0x61,
+0x74, 0x73, 0x6b, 0x61, 0x10d, 0x65, 0x161, 0x74, 0x69, 0x6e, 0x61, 0x10c,
+0x65, 0x73, 0x6b, 0x6f, 0x64, 0x61, 0x6e, 0x73, 0x6b, 0x44, 0x61, 0x6e,
+0x6d, 0x61, 0x72, 0x6b, 0x47, 0x72, 0xf8, 0x6e, 0x6c, 0x61, 0x6e, 0x64,
+0x78b, 0x7a8, 0x788, 0x7ac, 0x780, 0x7a8, 0x784, 0x7a6, 0x790, 0x7b0, 0x78b, 0x7a8,
+0x788, 0x7ac, 0x780, 0x7a8, 0x20, 0x783, 0x7a7, 0x787, 0x7b0, 0x796, 0x7ac, 0x921,
+0x94b, 0x917, 0x930, 0x940, 0x64, 0x75, 0xe1, 0x6c, 0xe1, 0x43, 0x61, 0x6d,
+0x65, 0x72, 0x6f, 0x75, 0x6e, 0x4e, 0x65, 0x64, 0x65, 0x72, 0x6c, 0x61,
+0x6e, 0x64, 0x73, 0x41, 0x72, 0x75, 0x62, 0x61, 0x56, 0x6c, 0x61, 0x61,
+0x6d, 0x73, 0x42, 0x65, 0x6c, 0x67, 0x69, 0xeb, 0x43, 0x61, 0x72, 0x69,
+0x62, 0x69, 0x73, 0x63, 0x68, 0x20, 0x4e, 0x65, 0x64, 0x65, 0x72, 0x6c,
+0x61, 0x6e, 0x64, 0x43, 0x75, 0x72, 0x61, 0xe7, 0x61, 0x6f, 0x53, 0x69,
+0x6e, 0x74, 0x2d, 0x4d, 0x61, 0x61, 0x72, 0x74, 0x65, 0x6e, 0x53, 0x75,
+0x72, 0x69, 0x6e, 0x61, 0x6d, 0x65, 0xf62, 0xfab, 0xf7c, 0xf44, 0xf0b, 0xf41,
+0xf60, 0xf56, 0xfb2, 0xf74, 0xf42, 0x4b, 0x129, 0x65, 0x6d, 0x62, 0x75, 0x4b,
+0x65, 0x6e, 0x79, 0x61, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6e,
+0x20, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0xd801, 0xdc00, 0xd801, 0xdc4d,
+0xd801, 0xdc4a, 0xd801, 0xdc2e, 0xd801, 0xdc47, 0xd801, 0xdc0f, 0xd801, 0xdc2d, 0xd801, 0xdc4c,
+0xd801, 0xdc34, 0xd801, 0xdc3b, 0xd801, 0xdc32, 0xd801, 0xdc3c, 0x20, 0xd801, 0xdc1d, 0xd801,
+0xdc3b, 0xd801, 0xdc29, 0xd801, 0xdc3b, 0xd801, 0xdc45, 0x41, 0x6d, 0x65, 0x72, 0x69,
+0x63, 0x61, 0x6e, 0x20, 0x53, 0x61, 0x6d, 0x6f, 0x61, 0x41, 0x6e, 0x67,
+0x75, 0x69, 0x6c, 0x6c, 0x61, 0x41, 0x6e, 0x74, 0x69, 0x67, 0x75, 0x61,
+0x20, 0x26, 0x20, 0x42, 0x61, 0x72, 0x62, 0x75, 0x64, 0x61, 0x41, 0x75,
+0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x6e, 0x20, 0x45, 0x6e, 0x67,
+0x6c, 0x69, 0x73, 0x68, 0x41, 0x75, 0x73, 0x74, 0x72, 0x69, 0x61, 0x42,
+0x61, 0x68, 0x61, 0x6d, 0x61, 0x73, 0x42, 0x61, 0x72, 0x62, 0x61, 0x64,
+0x6f, 0x73, 0x42, 0x65, 0x6c, 0x67, 0x69, 0x75, 0x6d, 0x42, 0x65, 0x6c,
+0x69, 0x7a, 0x65, 0x42, 0x65, 0x72, 0x6d, 0x75, 0x64, 0x61, 0x42, 0x6f,
+0x74, 0x73, 0x77, 0x61, 0x6e, 0x61, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73,
+0x68, 0x20, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x4f, 0x63, 0x65,
+0x61, 0x6e, 0x20, 0x54, 0x65, 0x72, 0x72, 0x69, 0x74, 0x6f, 0x72, 0x79,
+0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x56, 0x69, 0x72, 0x67,
+0x69, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x42, 0x75,
+0x72, 0x75, 0x6e, 0x64, 0x69, 0x43, 0x61, 0x6d, 0x65, 0x72, 0x6f, 0x6f,
+0x6e, 0x43, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x45, 0x6e,
+0x67, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x61, 0x6e, 0x61, 0x64, 0x61, 0x43,
+0x61, 0x79, 0x6d, 0x61, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64,
+0x73, 0x43, 0x68, 0x72, 0x69, 0x73, 0x74, 0x6d, 0x61, 0x73, 0x20, 0x49,
+0x73, 0x6c, 0x61, 0x6e, 0x64, 0x43, 0x6f, 0x63, 0x6f, 0x73, 0x20, 0x28,
+0x4b, 0x65, 0x65, 0x6c, 0x69, 0x6e, 0x67, 0x29, 0x20, 0x49, 0x73, 0x6c,
+0x61, 0x6e, 0x64, 0x73, 0x43, 0x6f, 0x6f, 0x6b, 0x20, 0x49, 0x73, 0x6c,
+0x61, 0x6e, 0x64, 0x73, 0x43, 0x79, 0x70, 0x72, 0x75, 0x73, 0x44, 0x65,
+0x6e, 0x6d, 0x61, 0x72, 0x6b, 0x44, 0x69, 0x65, 0x67, 0x6f, 0x20, 0x47,
+0x61, 0x72, 0x63, 0x69, 0x61, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x63,
+0x61, 0x45, 0x72, 0x69, 0x74, 0x72, 0x65, 0x61, 0x45, 0x73, 0x77, 0x61,
+0x74, 0x69, 0x6e, 0x69, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x46, 0x61,
+0x6c, 0x6b, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e,
+0x64, 0x73, 0x46, 0x69, 0x6a, 0x69, 0x46, 0x69, 0x6e, 0x6c, 0x61, 0x6e,
+0x64, 0x47, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x47, 0x65, 0x72, 0x6d, 0x61,
+0x6e, 0x79, 0x47, 0x68, 0x61, 0x6e, 0x61, 0x47, 0x69, 0x62, 0x72, 0x61,
+0x6c, 0x74, 0x61, 0x72, 0x47, 0x72, 0x65, 0x6e, 0x61, 0x64, 0x61, 0x47,
+0x75, 0x61, 0x6d, 0x47, 0x75, 0x65, 0x72, 0x6e, 0x73, 0x65, 0x79, 0x47,
+0x75, 0x79, 0x61, 0x6e, 0x61, 0x48, 0x6f, 0x6e, 0x67, 0x20, 0x4b, 0x6f,
+0x6e, 0x67, 0x20, 0x53, 0x41, 0x52, 0x20, 0x43, 0x68, 0x69, 0x6e, 0x61,
+0x49, 0x6e, 0x64, 0x6f, 0x6e, 0x65, 0x73, 0x69, 0x61, 0x49, 0x72, 0x65,
+0x6c, 0x61, 0x6e, 0x64, 0x49, 0x73, 0x6c, 0x65, 0x20, 0x6f, 0x66, 0x20,
+0x4d, 0x61, 0x6e, 0x49, 0x73, 0x72, 0x61, 0x65, 0x6c, 0x4a, 0x61, 0x6d,
+0x61, 0x69, 0x63, 0x61, 0x4a, 0x65, 0x72, 0x73, 0x65, 0x79, 0x4b, 0x69,
+0x72, 0x69, 0x62, 0x61, 0x74, 0x69, 0x4c, 0x65, 0x73, 0x6f, 0x74, 0x68,
+0x6f, 0x4c, 0x69, 0x62, 0x65, 0x72, 0x69, 0x61, 0x4d, 0x61, 0x63, 0x61,
+0x6f, 0x20, 0x53, 0x41, 0x52, 0x20, 0x43, 0x68, 0x69, 0x6e, 0x61, 0x4d,
+0x61, 0x64, 0x61, 0x67, 0x61, 0x73, 0x63, 0x61, 0x72, 0x4d, 0x61, 0x6c,
+0x61, 0x77, 0x69, 0x4d, 0x61, 0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x4d,
+0x61, 0x6c, 0x64, 0x69, 0x76, 0x65, 0x73, 0x4d, 0x61, 0x6c, 0x74, 0x61,
+0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x6c, 0x20, 0x49, 0x73, 0x6c,
+0x61, 0x6e, 0x64, 0x73, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x69, 0x75,
+0x73, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x6e, 0x65, 0x73, 0x69, 0x61, 0x4d,
+0x6f, 0x6e, 0x74, 0x73, 0x65, 0x72, 0x72, 0x61, 0x74, 0x4e, 0x61, 0x6d,
+0x69, 0x62, 0x69, 0x61, 0x4e, 0x61, 0x75, 0x72, 0x75, 0x4e, 0x65, 0x74,
+0x68, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x4e, 0x65, 0x77, 0x20,
+0x5a, 0x65, 0x61, 0x6c, 0x61, 0x6e, 0x64, 0x4e, 0x69, 0x67, 0x65, 0x72,
+0x69, 0x61, 0x4e, 0x69, 0x75, 0x65, 0x4e, 0x6f, 0x72, 0x66, 0x6f, 0x6c,
+0x6b, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x4e, 0x6f, 0x72, 0x74,
+0x68, 0x65, 0x72, 0x6e, 0x20, 0x4d, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x61,
+0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x50, 0x61, 0x6b, 0x69,
+0x73, 0x74, 0x61, 0x6e, 0x50, 0x61, 0x6c, 0x61, 0x75, 0x50, 0x61, 0x70,
+0x75, 0x61, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x47, 0x75, 0x69, 0x6e, 0x65,
+0x61, 0x50, 0x68, 0x69, 0x6c, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x73,
+0x50, 0x69, 0x74, 0x63, 0x61, 0x69, 0x72, 0x6e, 0x20, 0x49, 0x73, 0x6c,
+0x61, 0x6e, 0x64, 0x73, 0x50, 0x75, 0x65, 0x72, 0x74, 0x6f, 0x20, 0x52,
+0x69, 0x63, 0x6f, 0x52, 0x77, 0x61, 0x6e, 0x64, 0x61, 0x53, 0x74, 0x20,
+0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x53, 0x74, 0x20, 0x4b, 0x69, 0x74,
+0x74, 0x73, 0x20, 0x26, 0x20, 0x4e, 0x65, 0x76, 0x69, 0x73, 0x53, 0x74,
+0x20, 0x4c, 0x75, 0x63, 0x69, 0x61, 0x53, 0x74, 0x20, 0x56, 0x69, 0x6e,
+0x63, 0x65, 0x6e, 0x74, 0x20, 0x26, 0x20, 0x74, 0x68, 0x65, 0x20, 0x47,
+0x72, 0x65, 0x6e, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x53, 0x65, 0x79,
+0x63, 0x68, 0x65, 0x6c, 0x6c, 0x65, 0x73, 0x53, 0x69, 0x65, 0x72, 0x72,
+0x61, 0x20, 0x4c, 0x65, 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x6e, 0x67, 0x61,
+0x70, 0x6f, 0x72, 0x65, 0x53, 0x69, 0x6e, 0x74, 0x20, 0x4d, 0x61, 0x61,
+0x72, 0x74, 0x65, 0x6e, 0x53, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x69, 0x61,
+0x53, 0x6f, 0x6c, 0x6f, 0x6d, 0x6f, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61,
+0x6e, 0x64, 0x73, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41, 0x66, 0x72,
+0x69, 0x63, 0x61, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x53, 0x75, 0x64,
+0x61, 0x6e, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x53, 0x77, 0x65, 0x64, 0x65,
+0x6e, 0x53, 0x77, 0x69, 0x74, 0x7a, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64,
+0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x54, 0x6f, 0x6b, 0x65,
+0x6c, 0x61, 0x75, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x54, 0x72, 0x69, 0x6e,
+0x69, 0x64, 0x61, 0x64, 0x20, 0x26, 0x20, 0x54, 0x6f, 0x62, 0x61, 0x67,
+0x6f, 0x54, 0x75, 0x72, 0x6b, 0x73, 0x20, 0x26, 0x20, 0x43, 0x61, 0x69,
+0x63, 0x6f, 0x73, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x54,
+0x75, 0x76, 0x61, 0x6c, 0x75, 0x55, 0x6e, 0x69, 0x74, 0x65, 0x64, 0x20,
+0x41, 0x72, 0x61, 0x62, 0x20, 0x45, 0x6d, 0x69, 0x72, 0x61, 0x74, 0x65,
+0x73, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x45, 0x6e, 0x67,
+0x6c, 0x69, 0x73, 0x68, 0x55, 0x6e, 0x69, 0x74, 0x65, 0x64, 0x20, 0x4b,
+0x69, 0x6e, 0x67, 0x64, 0x6f, 0x6d, 0x55, 0x2e, 0x53, 0x2e, 0x20, 0x4f,
+0x75, 0x74, 0x6c, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x49, 0x73, 0x6c, 0x61,
+0x6e, 0x64, 0x73, 0x55, 0x2e, 0x53, 0x2e, 0x20, 0x56, 0x69, 0x72, 0x67,
+0x69, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x56, 0x61,
+0x6e, 0x75, 0x61, 0x74, 0x75, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5a, 0x69,
+0x6d, 0x62, 0x61, 0x62, 0x77, 0x65, 0x44d, 0x440, 0x437, 0x44f, 0x43d, 0x44c,
+0x20, 0x43a, 0x435, 0x43b, 0x44c, 0x420, 0x443, 0x437, 0x43e, 0x43d, 0x44c, 0x20,
+0x43c, 0x430, 0x441, 0x442, 0x43e, 0x440, 0x45, 0x73, 0x70, 0x65, 0x72, 0x61,
+0x6e, 0x74, 0x6f, 0x6d, 0x6f, 0x6e, 0x64, 0x6f, 0x65, 0x65, 0x73, 0x74,
+0x69, 0x45, 0x65, 0x73, 0x74, 0x69, 0x45, 0x28b, 0x65, 0x67, 0x62, 0x65,
+0x47, 0x68, 0x61, 0x6e, 0x61, 0x20, 0x6e, 0x75, 0x74, 0x6f, 0x6d, 0x65,
+0x54, 0x6f, 0x67, 0x6f, 0x20, 0x6e, 0x75, 0x74, 0x6f, 0x6d, 0x65, 0x65,
+0x77, 0x6f, 0x6e, 0x64, 0x6f, 0x4b, 0x61, 0x6d, 0x259, 0x72, 0xfa, 0x6e,
+0x66, 0xf8, 0x72, 0x6f, 0x79, 0x73, 0x6b, 0x74, 0x46, 0xf8, 0x72, 0x6f,
+0x79, 0x61, 0x72, 0x46, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x6f, 0x73,
+0x75, 0x6f, 0x6d, 0x69, 0x53, 0x75, 0x6f, 0x6d, 0x69, 0x66, 0x72, 0x61,
+0x6e, 0xe7, 0x61, 0x69, 0x73, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x41,
+0x6c, 0x67, 0xe9, 0x72, 0x69, 0x65, 0x42, 0x65, 0x6c, 0x67, 0x69, 0x71,
+0x75, 0x65, 0x42, 0xe9, 0x6e, 0x69, 0x6e, 0x42, 0x75, 0x72, 0x6b, 0x69,
+0x6e, 0x61, 0x20, 0x46, 0x61, 0x73, 0x6f, 0x66, 0x72, 0x61, 0x6e, 0xe7,
+0x61, 0x69, 0x73, 0x20, 0x63, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x65, 0x6e,
+0x52, 0xe9, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x71, 0x75, 0x65, 0x20, 0x63,
+0x65, 0x6e, 0x74, 0x72, 0x61, 0x66, 0x72, 0x69, 0x63, 0x61, 0x69, 0x6e,
+0x65, 0x54, 0x63, 0x68, 0x61, 0x64, 0x43, 0x6f, 0x6d, 0x6f, 0x72, 0x65,
+0x73, 0x43, 0x6f, 0x6e, 0x67, 0x6f, 0x2d, 0x42, 0x72, 0x61, 0x7a, 0x7a,
+0x61, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x67, 0x6f, 0x2d,
+0x4b, 0x69, 0x6e, 0x73, 0x68, 0x61, 0x73, 0x61, 0x44, 0x6a, 0x69, 0x62,
+0x6f, 0x75, 0x74, 0x69, 0x47, 0x75, 0x69, 0x6e, 0xe9, 0x65, 0x20, 0xe9,
+0x71, 0x75, 0x61, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x65, 0x47, 0x75,
+0x79, 0x61, 0x6e, 0x65, 0x20, 0x66, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69,
+0x73, 0x65, 0x50, 0x6f, 0x6c, 0x79, 0x6e, 0xe9, 0x73, 0x69, 0x65, 0x20,
+0x66, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69, 0x73, 0x65, 0x47, 0x61, 0x62,
+0x6f, 0x6e, 0x47, 0x75, 0x61, 0x64, 0x65, 0x6c, 0x6f, 0x75, 0x70, 0x65,
+0x48, 0x61, 0xef, 0x74, 0x69, 0x43, 0xf4, 0x74, 0x65, 0x20, 0x64, 0x2019,
+0x49, 0x76, 0x6f, 0x69, 0x72, 0x65, 0x4c, 0x75, 0x78, 0x65, 0x6d, 0x62,
+0x6f, 0x75, 0x72, 0x67, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x69, 0x71,
+0x75, 0x65, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x65,
+0x4d, 0x61, 0x75, 0x72, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x79, 0x6f, 0x74,
+0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x61, 0x63, 0x6f, 0x4d, 0x61, 0x72, 0x6f,
+0x63, 0x4e, 0x6f, 0x75, 0x76, 0x65, 0x6c, 0x6c, 0x65, 0x2d, 0x43, 0x61,
+0x6c, 0xe9, 0x64, 0x6f, 0x6e, 0x69, 0x65, 0x4c, 0x61, 0x20, 0x52, 0xe9,
+0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x53, 0x61, 0x69, 0x6e, 0x74, 0x2d, 0x42,
+0x61, 0x72, 0x74, 0x68, 0xe9, 0x6c, 0x65, 0x6d, 0x79, 0x53, 0x61, 0x69,
+0x6e, 0x74, 0x2d, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x53, 0x61, 0x69,
+0x6e, 0x74, 0x2d, 0x50, 0x69, 0x65, 0x72, 0x72, 0x65, 0x2d, 0x65, 0x74,
+0x2d, 0x4d, 0x69, 0x71, 0x75, 0x65, 0x6c, 0x6f, 0x6e, 0x53, 0xe9, 0x6e,
+0xe9, 0x67, 0x61, 0x6c, 0x66, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69, 0x73,
+0x20, 0x73, 0x75, 0x69, 0x73, 0x73, 0x65, 0x53, 0x75, 0x69, 0x73, 0x73,
+0x65, 0x53, 0x79, 0x72, 0x69, 0x65, 0x54, 0x75, 0x6e, 0x69, 0x73, 0x69,
+0x65, 0x57, 0x61, 0x6c, 0x6c, 0x69, 0x73, 0x2d, 0x65, 0x74, 0x2d, 0x46,
+0x75, 0x74, 0x75, 0x6e, 0x61, 0x66, 0x75, 0x72, 0x6c, 0x61, 0x6e, 0x49,
+0x74, 0x61, 0x6c, 0x69, 0x65, 0x50, 0x75, 0x6c, 0x61, 0x61, 0x72, 0x53,
+0x65, 0x6e, 0x65, 0x67, 0x61, 0x61, 0x6c, 0xd83a, 0xdd06, 0xd83a, 0xdd35, 0xd83a,
+0xdd24, 0xd83a, 0xdd22, 0xd83a, 0xdd2a, 0xd83a, 0xdd04, 0xd83a, 0xdd35, 0xd83a, 0xdd2a, 0xd83a,
+0xdd33, 0xd83a, 0xdd2d, 0xd83a, 0xdd32, 0xd83a, 0xdd22, 0x20, 0xd83a, 0xdd0a, 0xd83a, 0xdd22,
+0xd83a, 0xdd27, 0xd83a, 0xdd2e, 0xd83a, 0xdd45, 0xd83a, 0xdd11, 0xd83a, 0xdd22, 0xd83a, 0xdd25,
+0xd83a, 0xdd22, 0xd83a, 0xdd2a, 0xd83a, 0xdd35, 0xd83a, 0xdd45, 0xd83a, 0xdd32, 0xd83a, 0xdd18,
+0xd83a, 0xdd22, 0xd83a, 0xdd25, 0xd83a, 0xdd26, 0xd83a, 0xdd2d, 0xd83a, 0xdd34, 0xd83a, 0xdd22,
+0xd83a, 0xdd18, 0xd83a, 0xdd22, 0xd83a, 0xdd32, 0xd83a, 0xdd22, 0xd83a, 0xdd18, 0xd83a, 0xdd2d,
+0xd83a, 0xdd32, 0xd83a, 0xdd2b, 0x2d, 0xd83a, 0xdd04, 0xd83a, 0xdd2d, 0xd83a, 0xdd27, 0xd83a,
+0xdd22, 0xd83a, 0xdd31, 0xd83a, 0xdd2e, 0xd83a, 0xdd45, 0xd83a, 0xdd02, 0xd83a, 0xdd22, 0xd83a,
+0xdd26, 0xd83a, 0xdd2d, 0xd83a, 0xdd2a, 0xd83a, 0xdd2d, 0xd83a, 0xdd34, 0xd83a, 0xdd22, 0xd83a,
+0xdd44, 0xd83a, 0xdd03, 0xd83a, 0xdd2e, 0xd83a, 0xdd2a, 0xd83a, 0xdd3c, 0xd83a, 0xdd22, 0xd83a,
+0xdd32, 0xd83a, 0xdd2d, 0xd83a, 0xdd45, 0xd83a, 0xdd10, 0xd83a, 0xdd22, 0xd83a, 0xdd36, 0xd83a,
+0xdd2b, 0xd83a, 0xdd2a, 0xd83a, 0xdd2d, 0xd83a, 0xdd34, 0xd83a, 0xdd22, 0xd83a, 0xdd44, 0xd83a,
+0xdd10, 0xd83a, 0xdd2d, 0xd83a, 0xdd45, 0xd83a, 0xdd36, 0xd83a, 0xdd2b, 0xd83a, 0xdd2a, 0xd83a,
+0xdd05, 0xd83a, 0xdd2b, 0xd83a, 0xdd32, 0xd83a, 0xdd2b, 0xd83a, 0xdd3a, 0xd83a, 0xdd22, 0xd83a,
+0xdd44, 0xd83a, 0xdd24, 0xd83a, 0xdd05, 0xd83a, 0xdd22, 0xd83a, 0xdd2a, 0xd83a, 0xdd22, 0xd83a,
+0xdd24, 0xd83a, 0xdd2e, 0xd83a, 0xdd32, 0x42, 0x75, 0x72, 0x6b, 0x69, 0x62, 0x61,
+0x61, 0x20, 0x46, 0x61, 0x61, 0x73, 0x6f, 0x4b, 0x61, 0x6d, 0x65, 0x72,
+0x75, 0x75, 0x6e, 0x47, 0x61, 0x6d, 0x6d, 0x62, 0x69, 0x47, 0x61, 0x6e,
+0x61, 0x61, 0x47, 0x69, 0x6e, 0x65, 0x2d, 0x42, 0x69, 0x73, 0x61, 0x61,
+0x77, 0x6f, 0x4c, 0x69, 0x62, 0x65, 0x72, 0x69, 0x79, 0x61, 0x61, 0x4d,
+0x75, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x4e, 0x69, 0x6a, 0x65, 0x72,
+0x69, 0x79, 0x61, 0x61, 0x4e, 0x69, 0x6a, 0x65, 0x65, 0x72, 0x53, 0x65,
+0x72, 0x61, 0x61, 0x20, 0x6c, 0x69, 0x79, 0x6f, 0x6e, 0x47, 0xe0, 0x69,
+0x64, 0x68, 0x6c, 0x69, 0x67, 0x41, 0x6e, 0x20, 0x52, 0xec, 0x6f, 0x67,
+0x68, 0x61, 0x63, 0x68, 0x64, 0x20, 0x41, 0x6f, 0x6e, 0x61, 0x69, 0x63,
+0x68, 0x74, 0x65, 0x47, 0xe3, 0x67, 0x61, 0x6c, 0x65, 0x67, 0x6f, 0x4c,
+0x75, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x59, 0x75, 0x67, 0x61, 0x6e, 0x64,
+0x61, 0x130d, 0x12d5, 0x12dd, 0x129b, 0x10e5, 0x10d0, 0x10e0, 0x10d7, 0x10e3, 0x10da, 0x10d8,
+0x10e1, 0x10d0, 0x10e5, 0x10d0, 0x10e0, 0x10d7, 0x10d5, 0x10d4, 0x10da, 0x10dd, 0x44, 0x65,
+0x75, 0x74, 0x73, 0x63, 0x68, 0x44, 0x65, 0x75, 0x74, 0x73, 0x63, 0x68,
+0x6c, 0x61, 0x6e, 0x64, 0xd6, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x69,
+0x63, 0x68, 0x69, 0x73, 0x63, 0x68, 0x65, 0x73, 0x20, 0x44, 0x65, 0x75,
+0x74, 0x73, 0x63, 0x68, 0x42, 0x65, 0x6c, 0x67, 0x69, 0x65, 0x6e, 0x49,
+0x74, 0x61, 0x6c, 0x69, 0x65, 0x6e, 0x4c, 0x69, 0x65, 0x63, 0x68, 0x74,
+0x65, 0x6e, 0x73, 0x74, 0x65, 0x69, 0x6e, 0x4c, 0x75, 0x78, 0x65, 0x6d,
+0x62, 0x75, 0x72, 0x67, 0x53, 0x63, 0x68, 0x77, 0x65, 0x69, 0x7a, 0x65,
+0x72, 0x20, 0x48, 0x6f, 0x63, 0x68, 0x64, 0x65, 0x75, 0x74, 0x73, 0x63,
+0x68, 0x395, 0x3bb, 0x3bb, 0x3b7, 0x3bd, 0x3b9, 0x3ba, 0x3ac, 0x395, 0x3bb, 0x3bb,
+0x3ac, 0x3b4, 0x3b1, 0x39a, 0x3cd, 0x3c0, 0x3c1, 0x3bf, 0x3c2, 0x61, 0x76, 0x61,
+0xf1, 0x65, 0x2019, 0x1ebd, 0x50, 0x61, 0x72, 0x61, 0x67, 0x75, 0x61, 0x69,
+0xa97, 0xac1, 0xa9c, 0xab0, 0xabe, 0xaa4, 0xac0, 0xaad, 0xabe, 0xab0, 0xaa4, 0x45,
+0x6b, 0x65, 0x67, 0x75, 0x73, 0x69, 0x69, 0x48, 0x61, 0x75, 0x73, 0x61,
+0x4e, 0x69, 0x6a, 0x61, 0x72, 0x2bb, 0x14c, 0x6c, 0x65, 0x6c, 0x6f, 0x20,
+0x48, 0x61, 0x77, 0x61, 0x69, 0x2bb, 0x69, 0x2bb, 0x41, 0x6d, 0x65, 0x6c,
+0x69, 0x6b, 0x61, 0x20, 0x48, 0x75, 0x69, 0x20, 0x50, 0x16b, 0x20, 0x2bb,
+0x49, 0x61, 0x5e2, 0x5d1, 0x5e8, 0x5d9, 0x5ea, 0x5d9, 0x5e9, 0x5e8, 0x5d0, 0x5dc,
+0x939, 0x93f, 0x928, 0x94d, 0x926, 0x940, 0x48, 0x69, 0x6e, 0x64, 0x69, 0x20,
+0x28, 0x4c, 0x61, 0x74, 0x69, 0x6e, 0x29, 0x6d, 0x61, 0x67, 0x79, 0x61,
+0x72, 0x4d, 0x61, 0x67, 0x79, 0x61, 0x72, 0x6f, 0x72, 0x73, 0x7a, 0xe1,
+0x67, 0xed, 0x73, 0x6c, 0x65, 0x6e, 0x73, 0x6b, 0x61, 0xcd, 0x73, 0x6c,
+0x61, 0x6e, 0x64, 0x49, 0x64, 0x6f, 0x49, 0x67, 0x62, 0x6f, 0x4e, 0x61,
+0x1ecb, 0x6a, 0x1ecb, 0x72, 0x1ecb, 0x61, 0x61, 0x6e, 0x61, 0x72, 0xe2, 0x161,
+0x6b, 0x69, 0x65, 0x6c, 0xe2, 0x53, 0x75, 0x6f, 0x6d, 0xe2, 0x69, 0x6e,
+0x74, 0x65, 0x72, 0x6c, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x4d, 0x75, 0x6e,
+0x64, 0x6f, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6c, 0x69, 0x6e, 0x67, 0x75,
+0x65, 0x45, 0x73, 0x74, 0x6f, 0x6e, 0x69, 0x61, 0x1403, 0x14c4, 0x1483, 0x144e,
+0x1450, 0x1466, 0x1472, 0x14c7, 0x1455, 0x14a5, 0x47, 0x61, 0x65, 0x69, 0x6c, 0x67,
+0x65, 0xc9, 0x69, 0x72, 0x65, 0x61, 0x6e, 0x20, 0x52, 0xed, 0x6f, 0x63,
+0x68, 0x74, 0x20, 0x41, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x74, 0x68, 0x65,
+0x69, 0x74, 0x61, 0x6c, 0x69, 0x61, 0x6e, 0x6f, 0x49, 0x74, 0x61, 0x6c,
+0x69, 0x61, 0x53, 0x61, 0x6e, 0x20, 0x4d, 0x61, 0x72, 0x69, 0x6e, 0x6f,
+0x53, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, 0x61, 0x43, 0x69, 0x74, 0x74,
+0xe0, 0x20, 0x64, 0x65, 0x6c, 0x20, 0x56, 0x61, 0x74, 0x69, 0x63, 0x61,
+0x6e, 0x6f, 0x65e5, 0x672c, 0x8a9e, 0x4a, 0x61, 0x77, 0x61, 0x49, 0x6e, 0x64,
+0x6f, 0x6e, 0xe9, 0x73, 0x69, 0x61, 0x4b, 0x61, 0x6a, 0x65, 0x6a, 0x6f,
+0x6f, 0x6c, 0x61, 0x53, 0x65, 0x6e, 0x65, 0x67, 0x61, 0x6c, 0x6b, 0x61,
+0x62, 0x75, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x75, 0x4b, 0x61,
+0x62, 0x75, 0x20, 0x56, 0x65, 0x72, 0x64, 0x69, 0x54, 0x61, 0x71, 0x62,
+0x61, 0x79, 0x6c, 0x69, 0x74, 0x4c, 0x65, 0x7a, 0x7a, 0x61, 0x79, 0x65,
+0x72, 0x6b, 0x61, 0x6b, 0x254, 0x4b, 0x61, 0x6d, 0x25b, 0x72, 0x75, 0x6e,
+0x6b, 0x61, 0x6c, 0x61, 0x61, 0x6c, 0x6c, 0x69, 0x73, 0x75, 0x74, 0x4b,
+0x61, 0x6c, 0x61, 0x61, 0x6c, 0x6c, 0x69, 0x74, 0x20, 0x4e, 0x75, 0x6e,
+0x61, 0x61, 0x74, 0x4b, 0x61, 0x6c, 0x65, 0x6e, 0x6a, 0x69, 0x6e, 0x45,
+0x6d, 0x65, 0x74, 0x61, 0x62, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x4b,
+0x69, 0x6b, 0x61, 0x6d, 0x62, 0x61, 0xc95, 0xca8, 0xccd, 0xca8, 0xca1, 0xcad,
+0xcbe, 0xcb0, 0xca4, 0x6a9, 0x672, 0x634, 0x64f, 0x631, 0x6c1, 0x650, 0x646, 0x62f,
+0x648, 0x633, 0x62a, 0x627, 0x646, 0x915, 0x949, 0x936, 0x941, 0x930, 0x939, 0x93f,
+0x902, 0x926, 0x94b, 0x938, 0x94d, 0x924, 0x93e, 0x928, 0x49b, 0x430, 0x437, 0x430,
+0x49b, 0x20, 0x442, 0x456, 0x43b, 0x456, 0x49a, 0x430, 0x437, 0x430, 0x49b, 0x441,
+0x442, 0x430, 0x43d, 0x4b, 0x25b, 0x6e, 0x79, 0x61, 0x14b, 0x1781, 0x17d2, 0x1798,
+0x17c2, 0x179a, 0x1780, 0x1798, 0x17d2, 0x1796, 0x17bb, 0x1787, 0x17b6, 0x4b, 0x2bc, 0x69,
+0x63, 0x68, 0x65, 0x2bc, 0x47, 0x69, 0x6b, 0x75, 0x79, 0x75, 0x4b, 0x69,
+0x6e, 0x79, 0x61, 0x72, 0x77, 0x61, 0x6e, 0x64, 0x61, 0x55, 0x20, 0x52,
+0x77, 0x61, 0x6e, 0x64, 0x61, 0x915, 0x94b, 0x902, 0x915, 0x923, 0x940, 0xd55c,
+0xad6d, 0xc5b4, 0xb300, 0xd55c, 0xbbfc, 0xad6d, 0xc911, 0xad6d, 0xc870, 0xc120, 0xbbfc, 0xc8fc,
+0xc8fc, 0xc758, 0xc778, 0xbbfc, 0xacf5, 0xd654, 0xad6d, 0x4b, 0x6f, 0x79, 0x72, 0x61,
+0x62, 0x6f, 0x72, 0x6f, 0x20, 0x73, 0x65, 0x6e, 0x6e, 0x69, 0x4d, 0x61,
+0x61, 0x6c, 0x69, 0x4b, 0x6f, 0x79, 0x72, 0x61, 0x20, 0x63, 0x69, 0x69,
+0x6e, 0x69, 0x4b, 0x70, 0x25b, 0x6c, 0x25b, 0x25b, 0x6b, 0x75, 0x72, 0x64,
+0xee, 0x20, 0x28, 0x6b, 0x75, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0xee, 0x29,
+0x54, 0x69, 0x72, 0x6b, 0x69, 0x79, 0x65, 0x4b, 0x77, 0x61, 0x73, 0x69,
+0x6f, 0x4b, 0x61, 0x6d, 0x65, 0x72, 0x75, 0x6e, 0x43a, 0x44b, 0x440, 0x433,
+0x44b, 0x437, 0x447, 0x430, 0x41a, 0x44b, 0x440, 0x433, 0x44b, 0x437, 0x441, 0x442,
+0x430, 0x43d, 0x4c, 0x61, 0x6b, 0x21f, 0xf3, 0x6c, 0x2bc, 0x69, 0x79, 0x61,
+0x70, 0x69, 0x4d, 0xed, 0x6c, 0x61, 0x68, 0x61, 0x14b, 0x73, 0x6b, 0x61,
+0x20, 0x54, 0x21f, 0x61, 0x6d, 0xe1, 0x6b, 0x21f, 0x6f, 0x10d, 0x68, 0x65,
+0x4b, 0x268, 0x6c, 0x61, 0x61, 0x6e, 0x67, 0x69, 0x54, 0x61, 0x61, 0x6e,
+0x73, 0x61, 0x6e, 0xed, 0x61, 0xea5, 0xeb2, 0xea7, 0x4c, 0x61, 0x74, 0x69,
+0x6e, 0x61, 0x43, 0x69, 0x76, 0x69, 0x74, 0x61, 0x73, 0x20, 0x56, 0x61,
+0x74, 0x69, 0x63, 0x61, 0x6e, 0x61, 0x6c, 0x61, 0x74, 0x76, 0x69, 0x65,
+0x161, 0x75, 0x4c, 0x61, 0x74, 0x76, 0x69, 0x6a, 0x61, 0x6c, 0x69, 0x6e,
+0x67, 0xe1, 0x6c, 0x61, 0x52, 0x65, 0x70, 0x75, 0x62, 0x6c, 0xed, 0x6b,
+0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0xf3, 0x20, 0x44,
+0x65, 0x6d, 0x6f, 0x6b, 0x72, 0x61, 0x74, 0xed, 0x6b, 0x69, 0x41, 0x6e,
+0x67, 0xf3, 0x6c, 0x61, 0x52, 0x65, 0x70, 0x69, 0x62, 0x69, 0x6b, 0x69,
+0x20, 0x79, 0x61, 0x20, 0x41, 0x66, 0x72, 0xed, 0x6b, 0x61, 0x20, 0x79,
+0x61, 0x20, 0x4b, 0xe1, 0x74, 0x69, 0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x6c,
+0x69, 0x65, 0x74, 0x75, 0x76, 0x69, 0x173, 0x4c, 0x69, 0x65, 0x74, 0x75,
+0x76, 0x61, 0x6c, 0x61, 0x20, 0x2e, 0x6c, 0x6f, 0x6a, 0x62, 0x61, 0x6e,
+0x2e, 0x64, 0x6f, 0x6c, 0x6e, 0x6f, 0x73, 0x65, 0x72, 0x62, 0x161, 0x107,
+0x69, 0x6e, 0x61, 0x4e, 0x69, 0x6d, 0x73, 0x6b, 0x61, 0x4e, 0x65, 0x64,
+0x64, 0x65, 0x72, 0x73, 0x61, 0x73, 0x73, 0x2019, 0x73, 0x63, 0x68, 0x44,
+0xfc, 0xfc, 0x74, 0x73, 0x63, 0x68, 0x6c, 0x61, 0x6e, 0x64, 0x4e, 0x65,
+0x64, 0x64, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x6e, 0x54, 0x73,
+0x68, 0x69, 0x6c, 0x75, 0x62, 0x61, 0x44, 0x69, 0x74, 0x75, 0x6e, 0x67,
+0x61, 0x20, 0x77, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x75, 0x6a, 0x75,
+0x6c, 0x65, 0x76, 0x73, 0xe1, 0x6d, 0x65, 0x67, 0x69, 0x65, 0x6c, 0x6c,
+0x61, 0x44, 0x68, 0x6f, 0x6c, 0x75, 0x6f, 0x4c, 0xeb, 0x74, 0x7a, 0x65,
+0x62, 0x75, 0x65, 0x72, 0x67, 0x65, 0x73, 0x63, 0x68, 0x4c, 0x75, 0x6c,
+0x75, 0x68, 0x69, 0x61, 0x43c, 0x430, 0x43a, 0x435, 0x434, 0x43e, 0x43d, 0x441,
+0x43a, 0x438, 0x421, 0x435, 0x432, 0x435, 0x440, 0x43d, 0x430, 0x20, 0x41c, 0x430,
+0x43a, 0x435, 0x434, 0x43e, 0x43d, 0x438, 0x458, 0x430, 0x4b, 0x69, 0x6d, 0x61,
+0x63, 0x68, 0x61, 0x6d, 0x65, 0x92e, 0x948, 0x925, 0x93f, 0x932, 0x940, 0x4d,
+0x61, 0x6b, 0x75, 0x61, 0x55, 0x6d, 0x6f, 0x7a, 0x61, 0x6d, 0x62, 0x69,
+0x6b, 0x69, 0x43, 0x68, 0x69, 0x6d, 0x61, 0x6b, 0x6f, 0x6e, 0x64, 0x65,
+0x4d, 0x61, 0x6c, 0x61, 0x67, 0x61, 0x73, 0x79, 0x4d, 0x61, 0x64, 0x61,
+0x67, 0x61, 0x73, 0x69, 0x6b, 0x61, 0x72, 0x61, 0xd2e, 0xd32, 0xd2f, 0xd3e,
+0xd33, 0xd02, 0xd07, 0xd28, 0xd4d, 0xd24, 0xd4d, 0xd2f, 0x4d, 0x65, 0x6c, 0x61,
+0x79, 0x75, 0x628, 0x647, 0x627, 0x633, 0x20, 0x645, 0x644, 0x627, 0x64a, 0x648,
+0x628, 0x631, 0x648, 0x646, 0x64a, 0x645, 0x644, 0x64a, 0x633, 0x64a, 0x627, 0x42,
+0x72, 0x75, 0x6e, 0x65, 0x69, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x75,
+0x72, 0x61, 0x4d, 0x61, 0x6c, 0x74, 0x69, 0x9ae, 0x9c8, 0x9a4, 0x9c8, 0x9b2,
+0x9cb, 0x9a8, 0x9cd, 0x987, 0x9a8, 0x9cd, 0x9a6, 0x9bf, 0x9af, 0x9bc, 0x9be, 0xabc3,
+0xabe4, 0xabc7, 0xabe9, 0xabc2, 0xabe3, 0xabdf, 0x47, 0x61, 0x65, 0x6c, 0x67, 0x45,
+0x6c, 0x6c, 0x61, 0x6e, 0x20, 0x56, 0x61, 0x6e, 0x6e, 0x69, 0x6e, 0x4d,
+0x101, 0x6f, 0x72, 0x69, 0x41, 0x6f, 0x74, 0x65, 0x61, 0x72, 0x6f, 0x61,
+0x4d, 0x61, 0x70, 0x75, 0x64, 0x75, 0x6e, 0x67, 0x75, 0x6e, 0x92e, 0x930,
+0x93e, 0x920, 0x940, 0x54, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0x69, 0x61, 0x645,
+0x627, 0x632, 0x631, 0x648, 0x646, 0x6cc, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x4b,
+0x129, 0x6d, 0x129, 0x72, 0x169, 0x6d, 0x65, 0x74, 0x61, 0x2bc, 0x4b, 0x61,
+0x6d, 0x61, 0x6c, 0x75, 0x6e, 0x4b, 0x61, 0x6e, 0x69, 0x65, 0x6e, 0x2bc,
+0x6b, 0xe9, 0x68, 0x61, 0x43c, 0x43e, 0x43d, 0x433, 0x43e, 0x43b, 0x41c, 0x43e,
+0x43d, 0x433, 0x43e, 0x43b, 0x182e, 0x1823, 0x1829, 0x182d, 0x1823, 0x182f, 0x6b, 0x72,
+0x65, 0x6f, 0x6c, 0x20, 0x6d, 0x6f, 0x72, 0x69, 0x73, 0x69, 0x65, 0x6e,
+0x4d, 0x6f, 0x72, 0x69, 0x73, 0x4d, 0x55, 0x4e, 0x44, 0x41, 0x14a, 0x6b,
+0x61, 0x6d, 0x65, 0x72, 0x75, 0x14b, 0x4d, 0x76, 0x73, 0x6b, 0x6f, 0x6b,
+0x65, 0x4b, 0x68, 0x6f, 0x65, 0x6b, 0x68, 0x6f, 0x65, 0x67, 0x6f, 0x77,
+0x61, 0x62, 0x4e, 0x61, 0x6d, 0x69, 0x62, 0x69, 0x61, 0x62, 0x44, 0x69,
+0x6e, 0xe9, 0x20, 0x42, 0x69, 0x7a, 0x61, 0x61, 0x64, 0x928, 0x947, 0x92a,
+0x93e, 0x932, 0x940, 0x53, 0x68, 0x77, 0xf3, 0x14b, 0xf2, 0x20, 0x6e, 0x67,
+0x69, 0x65, 0x6d, 0x62, 0x254, 0x254, 0x6e, 0x4b, 0xe0, 0x6d, 0x61, 0x6c,
+0xfb, 0x6d, 0x4e, 0x64, 0x61, 0xa78c, 0x61, 0x4b, 0x61, 0x6d, 0x25b, 0x6c,
+0xfb, 0x6e, 0x4e, 0x61, 0x69, 0x6a, 0xed, 0x72, 0x69, 0xe1, 0x20, 0x50,
+0xed, 0x6a, 0x69, 0x6e, 0x4e, 0x61, 0x69, 0x6a, 0xed, 0x72, 0x69, 0x61,
+0x7d2, 0x7de, 0x7cf, 0x7d6, 0x7cc, 0x7ec, 0x7e3, 0x7cd, 0x7eb, 0x644, 0x6ca, 0x631,
+0x6cc, 0x20, 0x634, 0x648, 0x645, 0x627, 0x644, 0x6cc, 0x64, 0x61, 0x76, 0x76,
+0x69, 0x73, 0xe1, 0x6d, 0x65, 0x67, 0x69, 0x65, 0x6c, 0x6c, 0x61, 0x4e,
+0x6f, 0x72, 0x67, 0x61, 0x53, 0x75, 0x6f, 0x70, 0x6d, 0x61, 0x52, 0x75,
+0x6f, 0x167, 0x167, 0x61, 0x53, 0x65, 0x73, 0x6f, 0x74, 0x68, 0x6f, 0x20,
+0x73, 0x61, 0x20, 0x4c, 0x65, 0x62, 0x6f, 0x61, 0x41, 0x66, 0x72, 0x69,
+0x6b, 0x61, 0x20, 0x42, 0x6f, 0x72, 0x77, 0x61, 0x69, 0x73, 0x69, 0x4e,
+0x64, 0x65, 0x62, 0x65, 0x6c, 0x65, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x20,
+0x62, 0x6f, 0x6b, 0x6d, 0xe5, 0x6c, 0x4e, 0x6f, 0x72, 0x67, 0x65, 0x53,
+0x76, 0x61, 0x6c, 0x62, 0x61, 0x72, 0x64, 0x20, 0x6f, 0x67, 0x20, 0x4a,
+0x61, 0x6e, 0x20, 0x4d, 0x61, 0x79, 0x65, 0x6e, 0x6e, 0x6f, 0x72, 0x73,
+0x6b, 0x20, 0x6e, 0x79, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x4e, 0x6f, 0x72,
+0x65, 0x67, 0x54, 0x68, 0x6f, 0x6b, 0x20, 0x4e, 0x61, 0x74, 0x68, 0x4e,
+0x79, 0x61, 0x6e, 0x6a, 0x61, 0x52, 0x75, 0x6e, 0x79, 0x61, 0x6e, 0x6b,
+0x6f, 0x72, 0x65, 0x6f, 0x63, 0x63, 0x69, 0x74, 0x61, 0x6e, 0x45, 0x73,
+0x70, 0x61, 0x6e, 0x68, 0x61, 0xb13, 0xb21, 0xb3c, 0xb3f, 0xb06, 0xb2d, 0xb3e,
+0xb30, 0xb24, 0x4f, 0x72, 0x6f, 0x6d, 0x6f, 0x6f, 0x49, 0x74, 0x6f, 0x6f,
+0x70, 0x68, 0x69, 0x79, 0x61, 0x61, 0x4b, 0x65, 0x65, 0x6e, 0x69, 0x79,
+0x61, 0x61, 0xd801, 0xdccf, 0xd801, 0xdcd8, 0xd801, 0xdcfb, 0xd801, 0xdcd8, 0xd801, 0xdcfb,
+0xd801, 0xdcdf, 0x438, 0x440, 0x43e, 0x43d, 0x413, 0x443, 0x44b, 0x440, 0x434, 0x437,
+0x44b, 0x441, 0x442, 0x43e, 0x43d, 0x423, 0x4d5, 0x440, 0x4d5, 0x441, 0x435, 0x50,
+0x61, 0x70, 0x69, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x75, 0x4b, 0xf2, 0x72,
+0x73, 0x6f, 0x75, 0x67e, 0x69a, 0x62a, 0x648, 0x627, 0x641, 0x63a, 0x627, 0x646,
+0x633, 0x62a, 0x627, 0x646, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x641,
+0x627, 0x631, 0x633, 0x6cc, 0x62f, 0x631, 0x6cc, 0x70, 0x6f, 0x6c, 0x73, 0x6b,
+0x69, 0x50, 0x6f, 0x6c, 0x73, 0x6b, 0x61, 0x70, 0x6f, 0x72, 0x74, 0x75,
+0x67, 0x75, 0xea, 0x73, 0x42, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x41, 0x6e,
+0x67, 0x6f, 0x6c, 0x61, 0x43, 0x61, 0x62, 0x6f, 0x20, 0x56, 0x65, 0x72,
+0x64, 0x65, 0x47, 0x75, 0x69, 0x6e, 0xe9, 0x20, 0x45, 0x71, 0x75, 0x61,
+0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x47, 0x75, 0x69, 0x6e, 0xe9, 0x2d,
+0x42, 0x69, 0x73, 0x73, 0x61, 0x75, 0x4c, 0x75, 0x78, 0x65, 0x6d, 0x62,
+0x75, 0x72, 0x67, 0x6f, 0x4d, 0x61, 0x63, 0x61, 0x75, 0x2c, 0x20, 0x52,
+0x41, 0x45, 0x20, 0x64, 0x61, 0x20, 0x43, 0x68, 0x69, 0x6e, 0x61, 0x4d,
+0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x71, 0x75, 0x65, 0x70, 0x6f, 0x72,
+0x74, 0x75, 0x67, 0x75, 0xea, 0x73, 0x20, 0x65, 0x75, 0x72, 0x6f, 0x70,
+0x65, 0x75, 0x50, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x61, 0x6c, 0x53, 0xe3,
+0x6f, 0x20, 0x54, 0x6f, 0x6d, 0xe9, 0x20, 0x65, 0x20, 0x50, 0x72, 0xed,
+0x6e, 0x63, 0x69, 0x70, 0x65, 0x53, 0x75, 0xed, 0xe7, 0x61, 0x54, 0x69,
+0x6d, 0x6f, 0x72, 0x2d, 0x4c, 0x65, 0x73, 0x74, 0x65, 0x70, 0x72, 0x16b,
+0x73, 0x69, 0x73, 0x6b, 0x61, 0x6e, 0x50, 0x14d, 0x6c, 0x69, 0xa2a, 0xa70,
+0xa1c, 0xa3e, 0xa2c, 0xa40, 0xa2d, 0xa3e, 0xa30, 0xa24, 0x67e, 0x646, 0x62c, 0x627,
+0x628, 0x6cc, 0x52, 0x75, 0x6e, 0x61, 0x73, 0x69, 0x6d, 0x69, 0x50, 0x65,
+0x72, 0xfa, 0x42, 0x6f, 0x6c, 0x69, 0x76, 0x69, 0x61, 0x45, 0x63, 0x75,
+0x61, 0x64, 0x6f, 0x72, 0x72, 0x6f, 0x6d, 0xe2, 0x6e, 0x103, 0x52, 0x6f,
+0x6d, 0xe2, 0x6e, 0x69, 0x61, 0x52, 0x65, 0x70, 0x75, 0x62, 0x6c, 0x69,
+0x63, 0x61, 0x20, 0x4d, 0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x61, 0x72, 0x75,
+0x6d, 0x61, 0x6e, 0x74, 0x73, 0x63, 0x68, 0x53, 0x76, 0x69, 0x7a, 0x72,
+0x61, 0x4b, 0x69, 0x68, 0x6f, 0x72, 0x6f, 0x6d, 0x62, 0x6f, 0x49, 0x6b,
+0x69, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x55, 0x62, 0x75, 0x72, 0x75, 0x6e,
+0x64, 0x69, 0x440, 0x443, 0x441, 0x441, 0x43a, 0x438, 0x439, 0x420, 0x43e, 0x441,
+0x441, 0x438, 0x44f, 0x41a, 0x430, 0x437, 0x430, 0x445, 0x441, 0x442, 0x430, 0x43d,
+0x41a, 0x438, 0x440, 0x433, 0x438, 0x437, 0x438, 0x44f, 0x41c, 0x43e, 0x43b, 0x434,
+0x43e, 0x432, 0x430, 0x423, 0x43a, 0x440, 0x430, 0x438, 0x43d, 0x430, 0x4b, 0x69,
+0x72, 0x75, 0x77, 0x61, 0x53, 0x61, 0x68, 0x6f, 0x441, 0x430, 0x445, 0x430,
+0x20, 0x442, 0x44b, 0x43b, 0x430, 0x410, 0x440, 0x430, 0x441, 0x441, 0x44b, 0x44b,
+0x439, 0x430, 0x4b, 0x69, 0x73, 0x61, 0x6d, 0x70, 0x75, 0x72, 0x53, 0xe4,
+0x6e, 0x67, 0xf6, 0x4b, 0xf6, 0x64, 0xf6, 0x72, 0xf6, 0x73, 0xea, 0x73,
+0x65, 0x20, 0x74, 0xee, 0x20, 0x42, 0xea, 0x61, 0x66, 0x72, 0xee, 0x6b,
+0x61, 0x49, 0x73, 0x68, 0x69, 0x73, 0x61, 0x6e, 0x67, 0x75, 0x54, 0x61,
+0x6e, 0x73, 0x61, 0x6e, 0x69, 0x79, 0x61, 0x938, 0x902, 0x938, 0x94d, 0x915,
+0x943, 0x924, 0x20, 0x92d, 0x93e, 0x937, 0x93e, 0x92d, 0x93e, 0x930, 0x924, 0x903,
+0x1c65, 0x1c5f, 0x1c71, 0x1c5b, 0x1c5f, 0x1c72, 0x1c64, 0x1c64, 0x1c71, 0x1c70, 0x1c64, 0x1c6d,
+0x1c5f, 0x938, 0x93e, 0x928, 0x924, 0x93e, 0x921, 0x93c, 0x940, 0x73, 0x61, 0x72,
+0x64, 0x75, 0x73, 0x65, 0x6e, 0x61, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x438,
+0x421, 0x440, 0x431, 0x438, 0x458, 0x430, 0x41a, 0x43e, 0x441, 0x43e, 0x432, 0x43e,
+0x426, 0x440, 0x43d, 0x430, 0x20, 0x413, 0x43e, 0x440, 0x430, 0x73, 0x72, 0x70,
+0x73, 0x6b, 0x69, 0x4b, 0x6f, 0x73, 0x6f, 0x76, 0x6f, 0x43, 0x72, 0x6e,
+0x61, 0x20, 0x47, 0x6f, 0x72, 0x61, 0x53, 0x72, 0x62, 0x69, 0x6a, 0x61,
+0x4b, 0x69, 0x73, 0x68, 0x61, 0x6d, 0x62, 0x61, 0x61, 0x63, 0x68, 0x69,
+0x53, 0x68, 0x6f, 0x6e, 0x61, 0xa188, 0xa320, 0xa259, 0xa34f, 0xa1e9, 0x73, 0x69,
+0x63, 0x69, 0x6c, 0x69, 0x61, 0x6e, 0x75, 0x53, 0x69, 0x64, 0x61, 0x61,
+0x6d, 0x75, 0x20, 0x41, 0x66, 0x6f, 0x49, 0x74, 0x69, 0x79, 0x6f, 0x6f,
+0x70, 0x68, 0x69, 0x79, 0x61, 0x15b, 0x6c, 0x14d, 0x6e, 0x73, 0x6b, 0x69,
+0x633, 0x646, 0x68c, 0x64a, 0x67e, 0x627, 0x6aa, 0x633, 0x62a, 0x627, 0x646, 0x938,
+0x93f, 0x928, 0x94d, 0x927, 0x940, 0xdc3, 0xdd2, 0xd82, 0xdc4, 0xdbd, 0xdc1, 0xdca,
+0x200d, 0xdbb, 0xdd3, 0x20, 0xdbd, 0xd82, 0xd9a, 0xdcf, 0xdc0, 0x73, 0xe4, 0xe4,
+0x2b9, 0x6d, 0x1e9, 0x69, 0xf5, 0x6c, 0x6c, 0x4c, 0xe4, 0xe4, 0x2b9, 0x64,
+0x64, 0x6a, 0xe2, 0x6e, 0x6e, 0x61, 0x6d, 0x73, 0x6c, 0x6f, 0x76, 0x65,
+0x6e, 0x10d, 0x69, 0x6e, 0x61, 0x53, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x73,
+0x6b, 0x6f, 0x73, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x161, 0x10d, 0x69, 0x6e,
+0x61, 0x53, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x69, 0x6a, 0x61, 0x4f, 0x6c,
+0x75, 0x73, 0x6f, 0x67, 0x61, 0x53, 0x6f, 0x6f, 0x6d, 0x61, 0x61, 0x6c,
+0x69, 0x53, 0x6f, 0x6f, 0x6d, 0x61, 0x61, 0x6c, 0x69, 0x79, 0x61, 0x4a,
+0x61, 0x62, 0x75, 0x75, 0x74, 0x69, 0x49, 0x74, 0x6f, 0x6f, 0x62, 0x69,
+0x79, 0x61, 0x6a9, 0x648, 0x631, 0x62f, 0x6cc, 0x20, 0x62e, 0x648, 0x627, 0x631,
+0x6af, 0xc5, 0x61, 0x72, 0x6a, 0x65, 0x6c, 0x73, 0x61, 0x65, 0x6d, 0x69,
+0x65, 0x6e, 0x20, 0x67, 0xef, 0x65, 0x6c, 0x65, 0x65, 0x73, 0x70, 0x61,
+0xf1, 0x6f, 0x6c, 0x20, 0x64, 0x65, 0x20, 0x45, 0x73, 0x70, 0x61, 0xf1,
+0x61, 0x41, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x61, 0x42, 0x65,
+0x6c, 0x69, 0x63, 0x65, 0x43, 0x61, 0x6e, 0x61, 0x72, 0x69, 0x61, 0x73,
+0x43, 0x65, 0x75, 0x74, 0x61, 0x20, 0x79, 0x20, 0x4d, 0x65, 0x6c, 0x69,
+0x6c, 0x6c, 0x61, 0x43, 0x68, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6f,
+0x6d, 0x62, 0x69, 0x61, 0x43, 0x6f, 0x73, 0x74, 0x61, 0x20, 0x52, 0x69,
+0x63, 0x61, 0x43, 0x75, 0x62, 0x61, 0x52, 0x65, 0x70, 0xfa, 0x62, 0x6c,
+0x69, 0x63, 0x61, 0x20, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x63, 0x61,
+0x6e, 0x61, 0x45, 0x6c, 0x20, 0x53, 0x61, 0x6c, 0x76, 0x61, 0x64, 0x6f,
+0x72, 0x47, 0x75, 0x69, 0x6e, 0x65, 0x61, 0x20, 0x45, 0x63, 0x75, 0x61,
+0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x47, 0x75, 0x61, 0x74, 0x65, 0x6d,
+0x61, 0x6c, 0x61, 0x48, 0x6f, 0x6e, 0x64, 0x75, 0x72, 0x61, 0x73, 0x65,
+0x73, 0x70, 0x61, 0xf1, 0x6f, 0x6c, 0x20, 0x6c, 0x61, 0x74, 0x69, 0x6e,
+0x6f, 0x61, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x4c, 0x61,
+0x74, 0x69, 0x6e, 0x6f, 0x61, 0x6d, 0xe9, 0x72, 0x69, 0x63, 0x61, 0x65,
+0x73, 0x70, 0x61, 0xf1, 0x6f, 0x6c, 0x20, 0x64, 0x65, 0x20, 0x4d, 0xe9,
+0x78, 0x69, 0x63, 0x6f, 0x4d, 0xe9, 0x78, 0x69, 0x63, 0x6f, 0x4e, 0x69,
+0x63, 0x61, 0x72, 0x61, 0x67, 0x75, 0x61, 0x50, 0x61, 0x6e, 0x61, 0x6d,
+0xe1, 0x50, 0x61, 0x72, 0x61, 0x67, 0x75, 0x61, 0x79, 0x46, 0x69, 0x6c,
+0x69, 0x70, 0x69, 0x6e, 0x61, 0x73, 0x45, 0x73, 0x74, 0x61, 0x64, 0x6f,
+0x73, 0x20, 0x55, 0x6e, 0x69, 0x64, 0x6f, 0x73, 0x55, 0x72, 0x75, 0x67,
+0x75, 0x61, 0x79, 0x56, 0x65, 0x6e, 0x65, 0x7a, 0x75, 0x65, 0x6c, 0x61,
+0x2d5c, 0x2d30, 0x2d4e, 0x2d30, 0x2d63, 0x2d49, 0x2d56, 0x2d5c, 0x2d4d, 0x2d4e, 0x2d56, 0x2d54,
+0x2d49, 0x2d31, 0x42, 0x61, 0x73, 0x61, 0x20, 0x53, 0x75, 0x6e, 0x64, 0x61,
+0x4b, 0x69, 0x73, 0x77, 0x61, 0x68, 0x69, 0x6c, 0x69, 0x4a, 0x61, 0x6d,
+0x68, 0x75, 0x72, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x69, 0x64, 0x65,
+0x6d, 0x6f, 0x6b, 0x72, 0x61, 0x73, 0x69, 0x61, 0x20, 0x79, 0x61, 0x20,
+0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x73, 0x69, 0x53, 0x77, 0x61, 0x74, 0x69,
+0x65, 0x53, 0x77, 0x61, 0x74, 0x69, 0x6e, 0x69, 0x73, 0x76, 0x65, 0x6e,
+0x73, 0x6b, 0x61, 0x53, 0x76, 0x65, 0x72, 0x69, 0x67, 0x65, 0xc5, 0x6c,
+0x61, 0x6e, 0x64, 0x53, 0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, 0x65, 0x72,
+0x74, 0xfc, 0xfc, 0x74, 0x73, 0x63, 0x68, 0x46, 0x72, 0x61, 0x6e, 0x6b,
+0x72, 0x69, 0x69, 0x63, 0x68, 0x4c, 0x69, 0xe4, 0x63, 0x68, 0x74, 0x65,
+0x73, 0x63, 0x68, 0x74, 0xe4, 0x69, 0x723, 0x718, 0x72a, 0x71d, 0x71d, 0x710,
+0x725, 0x71d, 0x72a, 0x729, 0x723, 0x718, 0x72a, 0x71d, 0x710, 0x2d5c, 0x2d30, 0x2d5b,
+0x2d4d, 0x2d43, 0x2d49, 0x2d5c, 0x54, 0x61, 0x73, 0x68, 0x65, 0x6c, 0x1e25, 0x69,
+0x79, 0x74, 0x6c, 0x6d, 0x263, 0x72, 0x69, 0x62, 0xaabc, 0xaa95, 0xaa92, 0xaabe,
+0x4b, 0x69, 0x74, 0x61, 0x69, 0x74, 0x61, 0x442, 0x43e, 0x4b7, 0x438, 0x43a,
+0x4e3, 0x422, 0x43e, 0x4b7, 0x438, 0x43a, 0x438, 0x441, 0x442, 0x43e, 0x43d, 0xba4,
+0xbae, 0xbbf, 0xbb4, 0xbcd, 0xb87, 0xba8, 0xbcd, 0xba4, 0xbbf, 0xbaf, 0xbbe, 0xbae,
+0xbb2, 0xbc7, 0xb9a, 0xbbf, 0xbaf, 0xbbe, 0xb9a, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbaa,
+0xbcd, 0xbaa, 0xbc2, 0xbb0, 0xbcd, 0xb87, 0xbb2, 0xb99, 0xbcd, 0xb95, 0xbc8, 0x70,
+0x61, 0x74, 0x61, 0x73, 0x20, 0x54, 0x61, 0x72, 0x6f, 0x6b, 0x6f, 0x54,
+0x61, 0x73, 0x61, 0x77, 0x61, 0x71, 0x20, 0x73, 0x65, 0x6e, 0x6e, 0x69,
+0x4e, 0x69, 0x17e, 0x65, 0x72, 0x442, 0x430, 0x442, 0x430, 0x440, 0xc24, 0xc46,
+0xc32, 0xc41, 0xc17, 0xc41, 0xc2d, 0xc3e, 0xc30, 0xc24, 0xc26, 0xc47, 0xc36, 0xc02,
+0x4b, 0x69, 0x74, 0x65, 0x73, 0x6f, 0x4b, 0x65, 0x6e, 0x69, 0x61, 0xe44,
+0xe17, 0xe22, 0xf56, 0xf7c, 0xf51, 0xf0b, 0xf66, 0xf90, 0xf51, 0xf0b, 0xf62, 0xf92,
+0xfb1, 0xf0b, 0xf53, 0xf42, 0xf62, 0xf92, 0xfb1, 0xf0b, 0xf42, 0xf62, 0xf0b, 0x1275,
+0x130d, 0x1228, 0x1275, 0x130d, 0x122d, 0x129b, 0x54, 0x6f, 0x6b, 0x20, 0x50, 0x69,
+0x73, 0x69, 0x6e, 0x50, 0x61, 0x70, 0x75, 0x61, 0x20, 0x4e, 0x69, 0x75,
+0x67, 0x69, 0x6e, 0x69, 0x6c, 0x65, 0x61, 0x20, 0x66, 0x61, 0x6b, 0x61,
+0x74, 0x6f, 0x6e, 0x67, 0x61, 0x58, 0x69, 0x74, 0x73, 0x6f, 0x6e, 0x67,
+0x61, 0x53, 0x65, 0x74, 0x73, 0x77, 0x61, 0x6e, 0x61, 0x41, 0x66, 0x6f,
+0x72, 0x69, 0x6b, 0x61, 0x20, 0x42, 0x6f, 0x72, 0x77, 0x61, 0x54, 0xfc,
+0x72, 0x6b, 0xe7, 0x65, 0x54, 0xfc, 0x72, 0x6b, 0x69, 0x79, 0x65, 0x4b,
+0x131, 0x62, 0x72, 0x131, 0x73, 0x74, 0xfc, 0x72, 0x6b, 0x6d, 0x65, 0x6e,
+0x20, 0x64, 0x69, 0x6c, 0x69, 0x54, 0xfc, 0x72, 0x6b, 0x6d, 0x65, 0x6e,
+0x69, 0x73, 0x74, 0x61, 0x6e, 0x4b, 0x61, 0x74, 0x61, 0x62, 0x443, 0x43a,
+0x440, 0x430, 0x457, 0x43d, 0x441, 0x44c, 0x43a, 0x430, 0x423, 0x43a, 0x440, 0x430,
+0x457, 0x43d, 0x430, 0x68, 0x6f, 0x72, 0x6e, 0x6a, 0x6f, 0x73, 0x65, 0x72,
+0x62, 0x161, 0x107, 0x69, 0x6e, 0x61, 0x4e, 0x11b, 0x6d, 0x73, 0x6b, 0x61,
+0x627, 0x631, 0x62f, 0x648, 0x628, 0x6be, 0x627, 0x631, 0x62a, 0x626, 0x6c7, 0x64a,
+0x63a, 0x6c7, 0x631, 0x686, 0x6d5, 0x62c, 0x6c7, 0x6ad, 0x6af, 0x648, 0x6f, 0x2018,
+0x7a, 0x62, 0x65, 0x6b, 0x4f, 0x2bb, 0x7a, 0x62, 0x65, 0x6b, 0x69, 0x73,
+0x74, 0x6f, 0x6e, 0x627, 0x648, 0x632, 0x628, 0x6cc, 0x6a9, 0x45e, 0x437, 0x431,
+0x435, 0x43a, 0x447, 0x430, 0x40e, 0x437, 0x431, 0x435, 0x43a, 0x438, 0x441, 0x442,
+0x43e, 0x43d, 0xa559, 0xa524, 0xa55e, 0xa524, 0xa52b, 0xa569, 0x56, 0x61, 0x69, 0x4c,
+0x61, 0x69, 0x62, 0x68, 0x69, 0x79, 0x61, 0x54, 0x73, 0x68, 0x69, 0x76,
+0x65, 0x6e, 0x1e13, 0x61, 0x54, 0x69, 0x1ebf, 0x6e, 0x67, 0x20, 0x56, 0x69,
+0x1ec7, 0x74, 0x56, 0x69, 0x1ec7, 0x74, 0x20, 0x4e, 0x61, 0x6d, 0x56, 0x6f,
+0x6c, 0x61, 0x70, 0xfc, 0x6b, 0x4b, 0x79, 0x69, 0x76, 0x75, 0x6e, 0x6a,
+0x6f, 0x77, 0x61, 0x6c, 0x6f, 0x6e, 0x57, 0x61, 0x6c, 0x73, 0x65, 0x72,
+0x53, 0x63, 0x68, 0x77, 0x69, 0x7a, 0x57, 0x61, 0x72, 0x6c, 0x70, 0x69,
+0x72, 0x69, 0x43, 0x79, 0x6d, 0x72, 0x61, 0x65, 0x67, 0x59, 0x20, 0x44,
+0x65, 0x79, 0x72, 0x6e, 0x61, 0x73, 0x20, 0x55, 0x6e, 0x65, 0x64, 0x69,
+0x67, 0x628, 0x644, 0x648, 0x686, 0x6cc, 0x20, 0x28, 0x631, 0x62e, 0x634, 0x627,
+0x646, 0x6cc, 0x29, 0x626, 0x648, 0x645, 0x627, 0x646, 0x645, 0x62a, 0x62d, 0x62f,
+0x6cc, 0x646, 0x20, 0x639, 0x631, 0x628, 0x6cc, 0x646, 0x20, 0x627, 0x645, 0x627,
+0x631, 0x627, 0x62a, 0x46, 0x72, 0x79, 0x73, 0x6b, 0x4e, 0x65, 0x64, 0x65,
+0x72, 0x6c, 0xe2, 0x6e, 0x12c8, 0x120b, 0x12ed, 0x1273, 0x1271, 0x57, 0x6f, 0x6c,
+0x6f, 0x66, 0x49, 0x73, 0x69, 0x58, 0x68, 0x6f, 0x73, 0x61, 0x45, 0x4d,
+0x7a, 0x61, 0x6e, 0x74, 0x73, 0x69, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b,
+0x61, 0x6e, 0x75, 0x61, 0x73, 0x75, 0x65, 0x4b, 0x65, 0x6d, 0x65, 0x6c,
+0xfa, 0x6e, 0x5d9, 0x5d9, 0x5b4, 0x5d3, 0x5d9, 0x5e9, 0x5d0, 0x5d5, 0x5e7, 0x5e8,
+0x5d0, 0x5b7, 0x5d9, 0x5e0, 0x5e2, 0xc8, 0x64, 0xe8, 0x20, 0x59, 0x6f, 0x72,
+0xf9, 0x62, 0xe1, 0x4e, 0xe0, 0xec, 0x6a, 0xed, 0x72, 0xed, 0xe0, 0x42,
+0x25b, 0x300, 0x6e, 0x25b, 0x300, 0x5a, 0x61, 0x72, 0x6d, 0x61, 0x63, 0x69,
+0x69, 0x6e, 0x65, 0x56, 0x61, 0x68, 0x63, 0x75, 0x65, 0x6e, 0x67, 0x68,
+0x43, 0x75, 0x6e, 0x67, 0x68, 0x67, 0x6f, 0x7a, 0x69, 0x73, 0x69, 0x5a,
+0x75, 0x6c, 0x75, 0x69, 0x4e, 0x69, 0x6e, 0x67, 0x69, 0x7a, 0x69, 0x6d,
+0x75, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x6b, 0x61, 0x6e, 0x68,
+0x67, 0xe1, 0x67, 0x4d, 0x72, 0x61, 0x73, 0x69, 0x72, 0x6e, 0x68, 0x65,
+0x1ebd, 0x67, 0x61, 0x74, 0x75, 0x42, 0x72, 0x61, 0x73, 0x69, 0x75, 0xf1,
+0x65, 0x6e, 0x67, 0x61, 0x74, 0xfa, 0x4b, 0x75, 0x72, 0x169, 0x62, 0x69,
+0x79, 0x61, 0x57, 0x65, 0x6e, 0x65, 0x73, 0x75, 0x65, 0x72, 0x61, 0x939,
+0x930, 0x93f, 0x92f, 0x93e, 0x923, 0x935, 0x940, 0x4e, 0x6f, 0x72, 0x64, 0x66,
+0x72, 0x69, 0x69, 0x73, 0x6b, 0x54, 0x6a, 0x69, 0x69, 0x73, 0x6b, 0x6c,
+0x75, 0x6e, 0x930, 0x93e, 0x91c, 0x938, 0x94d, 0x925, 0x93e, 0x928, 0x940, 0x43c,
+0x43e, 0x43a, 0x448, 0x435, 0x43d, 0x44c, 0x20, 0x43a, 0x44f, 0x43b, 0x44c, 0x74,
+0x6f, 0x6b, 0x69, 0x20, 0x70, 0x6f, 0x6e, 0x61, 0x6d, 0x61, 0x20, 0x61,
+0x6c, 0x65, 0x50, 0x69, 0x6a, 0x69, 0x6e, 0x53, 0x6f, 0x6c, 0x6f, 0x6d,
+0x6f, 0x6e, 0x20, 0x41, 0x65, 0x6c, 0x61, 0x6e, 0x4f, 0x62, 0x6f, 0x6c,
+0x6f, 0x628, 0x644, 0x6c6, 0x686, 0x6cc, 0x42, 0x61, 0x6c, 0xf3, 0x63, 0x68,
+0x69, 0x50, 0xe1, 0x6b, 0x65, 0x73, 0x74, 0xe1, 0x6e, 0x6c, 0x69, 0x67,
+0x75, 0x72, 0x65, 0xd803, 0xdd0c, 0xd803, 0xdd17, 0xd803, 0xdd25, 0xd803, 0xdd1d, 0xd803,
+0xdd19, 0xd803, 0xdd1a, 0xd803, 0xdd12, 0xd803, 0xdd19, 0xd803, 0xdd1d, 0x62a, 0x648, 0x631,
+0x648, 0x627, 0x644, 0x6cc, 0x61, 0x6e, 0x69, 0x69, 0x20, 0x6b, 0x61, 0x67,
+0x269, 0x6a, 0x61, 0x42, 0x65, 0x6e, 0x25b, 0x25b, 0x915, 0x93e, 0x902, 0x917,
+0x921, 0x93c, 0x940, 0x76, 0x65, 0x6e, 0x65, 0x74, 0x6f
};
-static const char language_name_list[] =
+static constexpr char language_name_list[] =
"Default\0"
"C\0"
"Abkhazian\0"
@@ -3932,7 +6253,7 @@ static const char language_name_list[] =
"Chickasaw\0"
"Chiga\0"
"Chinese\0"
-"Church\0"
+"Church Slavic\0"
"Chuvash\0"
"Colognian\0"
"Coptic\0"
@@ -3960,8 +6281,8 @@ static const char language_name_list[] =
"Finnish\0"
"French\0"
"Friulian\0"
-"Fulah\0"
-"Gaelic\0"
+"Fula\0" // Fulah
+"Scottish Gaelic\0"
"Ga\0"
"Galician\0"
"Ganda\0"
@@ -3973,7 +6294,7 @@ static const char language_name_list[] =
"Guarani\0"
"Gujarati\0"
"Gusii\0"
-"Haitian\0"
+"Haitian Creole\0"
"Hausa\0"
"Hawaiian\0"
"Hebrew\0"
@@ -3996,7 +6317,7 @@ static const char language_name_list[] =
"Japanese\0"
"Javanese\0"
"Jju\0"
-"Jola Fonyi\0"
+"Jola-Fonyi\0"
"Kabuverdianu\0"
"Kabyle\0"
"Kako\0"
@@ -4009,7 +6330,7 @@ static const char language_name_list[] =
"Kazakh\0"
"Kenyang\0"
"Khmer\0"
-"Kiche\0"
+"Kʼicheʼ\0"
"Kikuyu\0"
"Kinyarwanda\0"
"Komi\0"
@@ -4037,7 +6358,7 @@ static const char language_name_list[] =
"Lojban\0"
"Lower Sorbian\0"
"Low German\0"
-"Luba Katanga\0"
+"Luba-Katanga\0"
"Lule Sami\0"
"Luo\0"
"Luxembourgish\0"
@@ -4045,7 +6366,7 @@ static const char language_name_list[] =
"Macedonian\0"
"Machame\0"
"Maithili\0"
-"Makhuwa Meetto\0"
+"Makhuwa-Meetto\0"
"Makonde\0"
"Malagasy\0"
"Malayalam\0"
@@ -4054,7 +6375,7 @@ static const char language_name_list[] =
"Mandingo\0"
"Manipuri\0"
"Manx\0"
-"Maori\0"
+"Māori\0"
"Mapuche\0"
"Marathi\0"
"Marshallese\0"
@@ -4062,7 +6383,7 @@ static const char language_name_list[] =
"Mazanderani\0"
"Mende\0"
"Meru\0"
-"Meta\0"
+"Metaʼ\0"
"Mohawk\0"
"Mongolian\0"
"Morisyen\0"
@@ -4077,12 +6398,12 @@ static const char language_name_list[] =
"Ngiemboon\0"
"Ngomba\0"
"Nigerian Pidgin\0"
-"Nko\0"
+"N’Ko\0"
"Northern Luri\0"
"Northern Sami\0"
"Northern Sotho\0"
"North Ndebele\0"
-"Norwegian Bokmal\0"
+"Norwegian Bokmål\0"
"Norwegian Nynorsk\0"
"Nuer\0"
"Nyanja\0"
@@ -4115,7 +6436,7 @@ static const char language_name_list[] =
"Russian\0"
"Rwa\0"
"Saho\0"
-"Sakha\0"
+"Yakut\0" // Sakha
"Samburu\0"
"Samoan\0"
"Sango\0"
@@ -4184,7 +6505,7 @@ static const char language_name_list[] =
"Vai\0"
"Venda\0"
"Vietnamese\0"
-"Volapuk\0"
+"Volapük\0"
"Vunjo\0"
"Walloon\0"
"Walser\0"
@@ -4203,9 +6524,23 @@ static const char language_name_list[] =
"Zulu\0"
"Kaingang\0"
"Nheengatu\0"
+"Haryanvi\0"
+"Northern Frisian\0"
+"Rajasthani\0"
+"Moksha\0"
+"Toki Pona\0"
+"Pijin\0"
+"Obolo\0"
+"Baluchi\0"
+"Ligurian\0"
+"Rohingya\0"
+"Torwali\0"
+"Anii\0"
+"Kangri\0"
+"Venetian\0"
;
-static const quint16 language_name_index[] = {
+static constexpr quint16 language_name_index[] = {
0, // AnyLanguage
8, // C
10, // Abkhazian
@@ -4266,279 +6601,293 @@ static const quint16 language_name_index[] = {
497, // Chiga
503, // Chinese
511, // Church
- 518, // Chuvash
- 526, // Colognian
- 536, // Coptic
- 543, // Cornish
- 551, // Corsican
- 560, // Cree
- 565, // Croatian
- 574, // Czech
- 580, // Danish
- 587, // Divehi
- 594, // Dogri
- 600, // Duala
- 606, // Dutch
- 612, // Dzongkha
- 621, // Embu
- 626, // English
- 634, // Erzya
- 640, // Esperanto
- 650, // Estonian
- 659, // Ewe
- 663, // Ewondo
- 670, // Faroese
- 678, // Fijian
- 685, // Filipino
- 694, // Finnish
- 702, // French
- 709, // Friulian
- 718, // Fulah
- 724, // Gaelic
- 731, // Ga
- 734, // Galician
- 743, // Ganda
- 749, // Geez
- 754, // Georgian
- 763, // German
- 770, // Gothic
- 777, // Greek
- 783, // Guarani
- 791, // Gujarati
- 800, // Gusii
- 806, // Haitian
- 814, // Hausa
- 820, // Hawaiian
- 829, // Hebrew
- 836, // Herero
- 843, // Hindi
- 849, // Hiri Motu
- 859, // Hungarian
- 869, // Icelandic
- 879, // Ido
- 883, // Igbo
- 888, // Inari Sami
- 899, // Indonesian
- 910, // Ingush
- 917, // Interlingua
- 929, // Interlingue
- 941, // Inuktitut
- 951, // Inupiaq
- 959, // Irish
- 965, // Italian
- 973, // Japanese
- 982, // Javanese
- 991, // Jju
- 995, // Jola Fonyi
- 1006, // Kabuverdianu
- 1019, // Kabyle
- 1026, // Kako
- 1031, // Kalaallisut
- 1043, // Kalenjin
- 1052, // Kamba
- 1058, // Kannada
- 1066, // Kanuri
- 1073, // Kashmiri
- 1082, // Kazakh
- 1089, // Kenyang
- 1097, // Khmer
- 1103, // Kiche
- 1109, // Kikuyu
- 1116, // Kinyarwanda
- 1128, // Komi
- 1133, // Kongo
- 1139, // Konkani
- 1147, // Korean
- 1154, // Koro
- 1159, // Koyraboro Senni
- 1175, // Koyra Chiini
- 1188, // Kpelle
- 1195, // Kuanyama
- 1204, // Kurdish
- 1212, // Kwasio
- 1219, // Kyrgyz
- 1226, // Lakota
- 1233, // Langi
- 1239, // Lao
- 1243, // Latin
- 1249, // Latvian
- 1257, // Lezghian
- 1266, // Limburgish
- 1277, // Lingala
- 1285, // Literary Chinese
- 1302, // Lithuanian
- 1313, // Lojban
- 1320, // Lower Sorbian
- 1334, // Low German
- 1345, // Luba Katanga
- 1358, // Lule Sami
- 1368, // Luo
- 1372, // Luxembourgish
- 1386, // Luyia
- 1392, // Macedonian
- 1403, // Machame
- 1411, // Maithili
- 1420, // Makhuwa Meetto
- 1435, // Makonde
- 1443, // Malagasy
- 1452, // Malayalam
- 1462, // Malay
- 1468, // Maltese
- 1476, // Mandingo
- 1485, // Manipuri
- 1494, // Manx
- 1499, // Maori
- 1505, // Mapuche
- 1513, // Marathi
- 1521, // Marshallese
- 1533, // Masai
- 1539, // Mazanderani
- 1551, // Mende
- 1557, // Meru
- 1562, // Meta
- 1567, // Mohawk
- 1574, // Mongolian
- 1584, // Morisyen
- 1593, // Mundang
- 1601, // Muscogee
- 1610, // Nama
- 1615, // Nauru
- 1621, // Navajo
- 1628, // Ndonga
- 1635, // Nepali
- 1642, // Newari
- 1649, // Ngiemboon
- 1659, // Ngomba
- 1666, // Nigerian Pidgin
- 1682, // Nko
- 1686, // Northern Luri
- 1700, // Northern Sami
- 1714, // Northern Sotho
- 1729, // North Ndebele
- 1743, // Norwegian Bokmal
- 1760, // Norwegian Nynorsk
- 1778, // Nuer
- 1783, // Nyanja
- 1790, // Nyankole
- 1799, // Occitan
- 1807, // Odia
- 1812, // Ojibwa
- 1819, // Old Irish
- 1829, // Old Norse
- 1839, // Old Persian
- 1851, // Oromo
- 1857, // Osage
- 1863, // Ossetic
- 1871, // Pahlavi
- 1879, // Palauan
- 1887, // Pali
- 1892, // Papiamento
- 1903, // Pashto
- 1910, // Persian
- 1918, // Phoenician
- 1929, // Polish
- 1936, // Portuguese
- 1947, // Prussian
- 1956, // Punjabi
- 1964, // Quechua
- 1972, // Romanian
- 1981, // Romansh
- 1989, // Rombo
- 1995, // Rundi
- 2001, // Russian
- 2009, // Rwa
- 2013, // Saho
- 2018, // Sakha
- 2024, // Samburu
- 2032, // Samoan
- 2039, // Sango
- 2045, // Sangu
- 2051, // Sanskrit
- 2060, // Santali
- 2068, // Sardinian
- 2078, // Saurashtra
- 2089, // Sena
- 2094, // Serbian
- 2102, // Shambala
- 2111, // Shona
- 2117, // Sichuan Yi
- 2128, // Sicilian
- 2137, // Sidamo
- 2144, // Silesian
- 2153, // Sindhi
- 2160, // Sinhala
- 2168, // Skolt Sami
- 2179, // Slovak
- 2186, // Slovenian
- 2196, // Soga
- 2201, // Somali
- 2208, // Southern Kurdish
- 2225, // Southern Sami
- 2239, // Southern Sotho
- 2254, // South Ndebele
- 2268, // Spanish
- 2276, // Standard Moroccan Tamazight
- 2304, // Sundanese
- 2314, // Swahili
- 2322, // Swati
- 2328, // Swedish
- 2336, // Swiss German
- 2349, // Syriac
- 2356, // Tachelhit
- 2366, // Tahitian
- 2375, // Tai Dam
- 2383, // Taita
- 2389, // Tajik
- 2395, // Tamil
- 2401, // Taroko
- 2408, // Tasawaq
- 2416, // Tatar
- 2422, // Telugu
- 2429, // Teso
- 2434, // Thai
- 2439, // Tibetan
- 2447, // Tigre
- 2453, // Tigrinya
- 2462, // Tokelau
- 2470, // Tok Pisin
- 2480, // Tongan
- 2487, // Tsonga
- 2494, // Tswana
- 2501, // Turkish
- 2509, // Turkmen
- 2517, // Tuvalu
- 2524, // Tyap
- 2529, // Ugaritic
- 2538, // Ukrainian
- 2548, // Upper Sorbian
- 2562, // Urdu
- 2567, // Uyghur
- 2574, // Uzbek
- 2580, // Vai
- 2584, // Venda
- 2590, // Vietnamese
- 2601, // Volapuk
- 2609, // Vunjo
- 2615, // Walloon
- 2623, // Walser
- 2630, // Warlpiri
- 2639, // Welsh
- 2645, // Western Balochi
- 2661, // Western Frisian
- 2677, // Wolaytta
- 2686, // Wolof
- 2692, // Xhosa
- 2698, // Yangben
- 2706, // Yiddish
- 2714, // Yoruba
- 2721, // Zarma
- 2727, // Zhuang
- 2734, // Zulu
- 2739, // Kaingang
- 2748, // Nheengatu
+ 525, // Chuvash
+ 533, // Colognian
+ 543, // Coptic
+ 550, // Cornish
+ 558, // Corsican
+ 567, // Cree
+ 572, // Croatian
+ 581, // Czech
+ 587, // Danish
+ 594, // Divehi
+ 601, // Dogri
+ 607, // Duala
+ 613, // Dutch
+ 619, // Dzongkha
+ 628, // Embu
+ 633, // English
+ 641, // Erzya
+ 647, // Esperanto
+ 657, // Estonian
+ 666, // Ewe
+ 670, // Ewondo
+ 677, // Faroese
+ 685, // Fijian
+ 692, // Filipino
+ 701, // Finnish
+ 709, // French
+ 716, // Friulian
+ 725, // Fulah
+ 730, // Gaelic
+ 746, // Ga
+ 749, // Galician
+ 758, // Ganda
+ 764, // Geez
+ 769, // Georgian
+ 778, // German
+ 785, // Gothic
+ 792, // Greek
+ 798, // Guarani
+ 806, // Gujarati
+ 815, // Gusii
+ 821, // Haitian
+ 836, // Hausa
+ 842, // Hawaiian
+ 851, // Hebrew
+ 858, // Herero
+ 865, // Hindi
+ 871, // Hiri Motu
+ 881, // Hungarian
+ 891, // Icelandic
+ 901, // Ido
+ 905, // Igbo
+ 910, // Inari Sami
+ 921, // Indonesian
+ 932, // Ingush
+ 939, // Interlingua
+ 951, // Interlingue
+ 963, // Inuktitut
+ 973, // Inupiaq
+ 981, // Irish
+ 987, // Italian
+ 995, // Japanese
+ 1004, // Javanese
+ 1013, // Jju
+ 1017, // Jola-Fonyi
+ 1028, // Kabuverdianu
+ 1041, // Kabyle
+ 1048, // Kako
+ 1053, // Kalaallisut
+ 1065, // Kalenjin
+ 1074, // Kamba
+ 1080, // Kannada
+ 1088, // Kanuri
+ 1095, // Kashmiri
+ 1104, // Kazakh
+ 1111, // Kenyang
+ 1119, // Khmer
+ 1125, // Kiche
+ 1135, // Kikuyu
+ 1142, // Kinyarwanda
+ 1154, // Komi
+ 1159, // Kongo
+ 1165, // Konkani
+ 1173, // Korean
+ 1180, // Koro
+ 1185, // Koyraboro Senni
+ 1201, // Koyra Chiini
+ 1214, // Kpelle
+ 1221, // Kuanyama
+ 1230, // Kurdish
+ 1238, // Kwasio
+ 1245, // Kyrgyz
+ 1252, // Lakota
+ 1259, // Langi
+ 1265, // Lao
+ 1269, // Latin
+ 1275, // Latvian
+ 1283, // Lezghian
+ 1292, // Limburgish
+ 1303, // Lingala
+ 1311, // Literary Chinese
+ 1328, // Lithuanian
+ 1339, // Lojban
+ 1346, // Lower Sorbian
+ 1360, // Low German
+ 1371, // Luba-Katanga
+ 1384, // Lule Sami
+ 1394, // Luo
+ 1398, // Luxembourgish
+ 1412, // Luyia
+ 1418, // Macedonian
+ 1429, // Machame
+ 1437, // Maithili
+ 1446, // Makhuwa-Meetto
+ 1461, // Makonde
+ 1469, // Malagasy
+ 1478, // Malayalam
+ 1488, // Malay
+ 1494, // Maltese
+ 1502, // Mandingo
+ 1511, // Manipuri
+ 1520, // Manx
+ 1525, // Maori
+ 1532, // Mapuche
+ 1540, // Marathi
+ 1548, // Marshallese
+ 1560, // Masai
+ 1566, // Mazanderani
+ 1578, // Mende
+ 1584, // Meru
+ 1589, // Meta
+ 1596, // Mohawk
+ 1603, // Mongolian
+ 1613, // Morisyen
+ 1622, // Mundang
+ 1630, // Muscogee
+ 1639, // Nama
+ 1644, // Nauru
+ 1650, // Navajo
+ 1657, // Ndonga
+ 1664, // Nepali
+ 1671, // Newari
+ 1678, // Ngiemboon
+ 1688, // Ngomba
+ 1695, // Nigerian Pidgin
+ 1711, // Nko
+ 1718, // Northern Luri
+ 1732, // Northern Sami
+ 1746, // Northern Sotho
+ 1761, // North Ndebele
+ 1775, // Norwegian Bokmal
+ 1793, // Norwegian Nynorsk
+ 1811, // Nuer
+ 1816, // Nyanja
+ 1823, // Nyankole
+ 1832, // Occitan
+ 1840, // Odia
+ 1845, // Ojibwa
+ 1852, // Old Irish
+ 1862, // Old Norse
+ 1872, // Old Persian
+ 1884, // Oromo
+ 1890, // Osage
+ 1896, // Ossetic
+ 1904, // Pahlavi
+ 1912, // Palauan
+ 1920, // Pali
+ 1925, // Papiamento
+ 1936, // Pashto
+ 1943, // Persian
+ 1951, // Phoenician
+ 1962, // Polish
+ 1969, // Portuguese
+ 1980, // Prussian
+ 1989, // Punjabi
+ 1997, // Quechua
+ 2005, // Romanian
+ 2014, // Romansh
+ 2022, // Rombo
+ 2028, // Rundi
+ 2034, // Russian
+ 2042, // Rwa
+ 2046, // Saho
+ 2051, // Sakha
+ 2057, // Samburu
+ 2065, // Samoan
+ 2072, // Sango
+ 2078, // Sangu
+ 2084, // Sanskrit
+ 2093, // Santali
+ 2101, // Sardinian
+ 2111, // Saurashtra
+ 2122, // Sena
+ 2127, // Serbian
+ 2135, // Shambala
+ 2144, // Shona
+ 2150, // Sichuan Yi
+ 2161, // Sicilian
+ 2170, // Sidamo
+ 2177, // Silesian
+ 2186, // Sindhi
+ 2193, // Sinhala
+ 2201, // Skolt Sami
+ 2212, // Slovak
+ 2219, // Slovenian
+ 2229, // Soga
+ 2234, // Somali
+ 2241, // Southern Kurdish
+ 2258, // Southern Sami
+ 2272, // Southern Sotho
+ 2287, // South Ndebele
+ 2301, // Spanish
+ 2309, // Standard Moroccan Tamazight
+ 2337, // Sundanese
+ 2347, // Swahili
+ 2355, // Swati
+ 2361, // Swedish
+ 2369, // Swiss German
+ 2382, // Syriac
+ 2389, // Tachelhit
+ 2399, // Tahitian
+ 2408, // Tai Dam
+ 2416, // Taita
+ 2422, // Tajik
+ 2428, // Tamil
+ 2434, // Taroko
+ 2441, // Tasawaq
+ 2449, // Tatar
+ 2455, // Telugu
+ 2462, // Teso
+ 2467, // Thai
+ 2472, // Tibetan
+ 2480, // Tigre
+ 2486, // Tigrinya
+ 2495, // Tokelau
+ 2503, // Tok Pisin
+ 2513, // Tongan
+ 2520, // Tsonga
+ 2527, // Tswana
+ 2534, // Turkish
+ 2542, // Turkmen
+ 2550, // Tuvalu
+ 2557, // Tyap
+ 2562, // Ugaritic
+ 2571, // Ukrainian
+ 2581, // Upper Sorbian
+ 2595, // Urdu
+ 2600, // Uyghur
+ 2607, // Uzbek
+ 2613, // Vai
+ 2617, // Venda
+ 2623, // Vietnamese
+ 2634, // Volapuk
+ 2643, // Vunjo
+ 2649, // Walloon
+ 2657, // Walser
+ 2664, // Warlpiri
+ 2673, // Welsh
+ 2679, // Western Balochi
+ 2695, // Western Frisian
+ 2711, // Wolaytta
+ 2720, // Wolof
+ 2726, // Xhosa
+ 2732, // Yangben
+ 2740, // Yiddish
+ 2748, // Yoruba
+ 2755, // Zarma
+ 2761, // Zhuang
+ 2768, // Zulu
+ 2773, // Kaingang
+ 2782, // Nheengatu
+ 2792, // Haryanvi
+ 2801, // Northern Frisian
+ 2818, // Rajasthani
+ 2829, // Moksha
+ 2836, // Toki Pona
+ 2846, // Pijin
+ 2852, // Obolo
+ 2858, // Baluchi
+ 2866, // Ligurian
+ 2875, // Rohingya
+ 2884, // Torwali
+ 2892, // Anii
+ 2897, // Kangri
+ 2904, // Venetian
};
-static const char script_name_list[] =
+static constexpr char script_name_list[] =
"Default\0"
"Adlam\0"
"Ahom\0"
@@ -4557,20 +6906,20 @@ static const char script_name_list[] =
"Braille\0"
"Buginese\0"
"Buhid\0"
-"Canadian Aboriginal\0"
+"Unified Canadian Aboriginal Syllabics\0"
"Carian\0"
"Caucasian Albanian\0"
"Chakma\0"
"Cham\0"
"Cherokee\0"
"Coptic\0"
-"Cuneiform\0"
+"Sumero-Akkadian Cuneiform\0"
"Cypriot\0"
"Cyrillic\0"
"Deseret\0"
"Devanagari\0"
-"Duployan\0"
-"Egyptian Hieroglyphs\0"
+"Duployan shorthand\0"
+"Egyptian hieroglyphs\0"
"Elbasan\0"
"Ethiopic\0"
"Fraser\0"
@@ -4629,7 +6978,7 @@ static const char script_name_list[] =
"Nabataean\0"
"Newa\0"
"New Tai Lue\0"
-"Nko\0"
+"N’Ko\0"
"Odia\0"
"Ogham\0"
"Ol Chiki\0"
@@ -4645,7 +6994,7 @@ static const char script_name_list[] =
"Pahawh Hmong\0"
"Palmyrene\0"
"Pau Cin Hau\0"
-"Phags Pa\0"
+"Phags-pa\0"
"Phoenician\0"
"Pollard Phonetic\0"
"Psalter Pahlavi\0"
@@ -4656,7 +7005,7 @@ static const char script_name_list[] =
"Sharada\0"
"Shavian\0"
"Siddham\0"
-"Sign Writing\0"
+"SignWriting\0"
"Simplified Han\0"
"Sinhala\0"
"Sora Sompeng\0"
@@ -4681,9 +7030,10 @@ static const char script_name_list[] =
"Vai\0"
"Varang Kshiti\0"
"Yi\0"
+"Hanifi Rohingya\0"
;
-static const quint16 script_name_index[] = {
+static constexpr quint16 script_name_index[] = {
0, // AnyScript
8, // Adlam
14, // Ahom
@@ -4703,135 +7053,136 @@ static const quint16 script_name_index[] = {
137, // Buginese
146, // Buhid
152, // Canadian Aboriginal
- 172, // Carian
- 179, // Caucasian Albanian
- 198, // Chakma
- 205, // Cham
- 210, // Cherokee
- 219, // Coptic
- 226, // Cuneiform
- 236, // Cypriot
- 244, // Cyrillic
- 253, // Deseret
- 261, // Devanagari
- 272, // Duployan
- 281, // Egyptian Hieroglyphs
- 302, // Elbasan
- 310, // Ethiopic
- 319, // Fraser
- 326, // Georgian
- 335, // Glagolitic
- 346, // Gothic
- 353, // Grantha
- 361, // Greek
- 367, // Gujarati
- 376, // Gurmukhi
- 385, // Hangul
- 392, // Han
- 396, // Hanunoo
- 404, // Han with Bopomofo
- 422, // Hatran
- 429, // Hebrew
- 436, // Hiragana
- 445, // Imperial Aramaic
- 462, // Inscriptional Pahlavi
- 484, // Inscriptional Parthian
- 507, // Jamo
- 512, // Japanese
- 521, // Javanese
- 530, // Kaithi
- 537, // Kannada
- 545, // Katakana
- 554, // Kayah Li
- 563, // Kharoshthi
- 574, // Khmer
- 580, // Khojki
- 587, // Khudawadi
- 597, // Korean
- 604, // Lanna
- 610, // Lao
- 614, // Latin
- 620, // Lepcha
- 627, // Limbu
- 633, // Linear A
- 642, // Linear B
- 651, // Lycian
- 658, // Lydian
- 665, // Mahajani
- 674, // Malayalam
- 684, // Mandaean
- 693, // Manichaean
- 704, // Marchen
- 712, // Meitei Mayek
- 725, // Mende
- 731, // Meroitic Cursive
- 748, // Meroitic
- 757, // Modi
- 762, // Mongolian
- 772, // Mro
- 776, // Multani
- 784, // Myanmar
- 792, // Nabataean
- 802, // Newa
- 807, // New Tai Lue
- 819, // Nko
- 823, // Odia
- 828, // Ogham
- 834, // Ol Chiki
- 843, // Old Hungarian
- 857, // Old Italic
- 868, // Old North Arabian
- 886, // Old Permic
- 897, // Old Persian
- 909, // Old South Arabian
- 927, // Orkhon
- 934, // Osage
- 940, // Osmanya
- 948, // Pahawh Hmong
- 961, // Palmyrene
- 971, // Pau Cin Hau
- 983, // Phags Pa
- 992, // Phoenician
- 1003, // Pollard Phonetic
- 1020, // Psalter Pahlavi
- 1036, // Rejang
- 1043, // Runic
- 1049, // Samaritan
- 1059, // Saurashtra
- 1070, // Sharada
- 1078, // Shavian
- 1086, // Siddham
- 1094, // Sign Writing
- 1107, // Simplified Han
- 1122, // Sinhala
- 1130, // Sora Sompeng
- 1143, // Sundanese
- 1153, // Syloti Nagri
- 1166, // Syriac
- 1173, // Tagalog
- 1181, // Tagbanwa
- 1190, // Tai Le
- 1197, // Tai Viet
- 1206, // Takri
- 1212, // Tamil
- 1218, // Tangut
- 1225, // Telugu
- 1232, // Thaana
- 1239, // Thai
- 1244, // Tibetan
- 1252, // Tifinagh
- 1261, // Tirhuta
- 1269, // Traditional Han
- 1285, // Ugaritic
- 1294, // Vai
- 1298, // Varang Kshiti
- 1312, // Yi
+ 190, // Carian
+ 197, // Caucasian Albanian
+ 216, // Chakma
+ 223, // Cham
+ 228, // Cherokee
+ 237, // Coptic
+ 244, // Cuneiform
+ 270, // Cypriot
+ 278, // Cyrillic
+ 287, // Deseret
+ 295, // Devanagari
+ 306, // Duployan
+ 325, // Egyptian hieroglyphs
+ 346, // Elbasan
+ 354, // Ethiopic
+ 363, // Fraser
+ 370, // Georgian
+ 379, // Glagolitic
+ 390, // Gothic
+ 397, // Grantha
+ 405, // Greek
+ 411, // Gujarati
+ 420, // Gurmukhi
+ 429, // Hangul
+ 436, // Han
+ 440, // Hanunoo
+ 448, // Han with Bopomofo
+ 466, // Hatran
+ 473, // Hebrew
+ 480, // Hiragana
+ 489, // Imperial Aramaic
+ 506, // Inscriptional Pahlavi
+ 528, // Inscriptional Parthian
+ 551, // Jamo
+ 556, // Japanese
+ 565, // Javanese
+ 574, // Kaithi
+ 581, // Kannada
+ 589, // Katakana
+ 598, // Kayah Li
+ 607, // Kharoshthi
+ 618, // Khmer
+ 624, // Khojki
+ 631, // Khudawadi
+ 641, // Korean
+ 648, // Lanna
+ 654, // Lao
+ 658, // Latin
+ 664, // Lepcha
+ 671, // Limbu
+ 677, // Linear A
+ 686, // Linear B
+ 695, // Lycian
+ 702, // Lydian
+ 709, // Mahajani
+ 718, // Malayalam
+ 728, // Mandaean
+ 737, // Manichaean
+ 748, // Marchen
+ 756, // Meitei Mayek
+ 769, // Mende
+ 775, // Meroitic Cursive
+ 792, // Meroitic
+ 801, // Modi
+ 806, // Mongolian
+ 816, // Mro
+ 820, // Multani
+ 828, // Myanmar
+ 836, // Nabataean
+ 846, // Newa
+ 851, // New Tai Lue
+ 863, // Nko
+ 870, // Odia
+ 875, // Ogham
+ 881, // Ol Chiki
+ 890, // Old Hungarian
+ 904, // Old Italic
+ 915, // Old North Arabian
+ 933, // Old Permic
+ 944, // Old Persian
+ 956, // Old South Arabian
+ 974, // Orkhon
+ 981, // Osage
+ 987, // Osmanya
+ 995, // Pahawh Hmong
+ 1008, // Palmyrene
+ 1018, // Pau Cin Hau
+ 1030, // Phags-pa
+ 1039, // Phoenician
+ 1050, // Pollard Phonetic
+ 1067, // Psalter Pahlavi
+ 1083, // Rejang
+ 1090, // Runic
+ 1096, // Samaritan
+ 1106, // Saurashtra
+ 1117, // Sharada
+ 1125, // Shavian
+ 1133, // Siddham
+ 1141, // SignWriting
+ 1153, // Simplified Han
+ 1168, // Sinhala
+ 1176, // Sora Sompeng
+ 1189, // Sundanese
+ 1199, // Syloti Nagri
+ 1212, // Syriac
+ 1219, // Tagalog
+ 1227, // Tagbanwa
+ 1236, // Tai Le
+ 1243, // Tai Viet
+ 1252, // Takri
+ 1258, // Tamil
+ 1264, // Tangut
+ 1271, // Telugu
+ 1278, // Thaana
+ 1285, // Thai
+ 1290, // Tibetan
+ 1298, // Tifinagh
+ 1307, // Tirhuta
+ 1315, // Traditional Han
+ 1331, // Ugaritic
+ 1340, // Vai
+ 1344, // Varang Kshiti
+ 1358, // Yi
+ 1361, // Hanifi
};
-static const char territory_name_list[] =
+static constexpr char territory_name_list[] =
"Default\0"
"Afghanistan\0"
-"Aland Islands\0"
+"Åland Islands\0"
"Albania\0"
"Algeria\0"
"American Samoa\0"
@@ -4839,7 +7190,7 @@ static const char territory_name_list[] =
"Angola\0"
"Anguilla\0"
"Antarctica\0"
-"Antigua And Barbuda\0"
+"Antigua & Barbuda\0"
"Argentina\0"
"Armenia\0"
"Aruba\0"
@@ -4858,7 +7209,7 @@ static const char territory_name_list[] =
"Bermuda\0"
"Bhutan\0"
"Bolivia\0"
-"Bosnia And Herzegovina\0"
+"Bosnia & Herzegovina\0"
"Botswana\0"
"Bouvet Island\0"
"Brazil\0"
@@ -4876,22 +7227,22 @@ static const char territory_name_list[] =
"Caribbean Netherlands\0"
"Cayman Islands\0"
"Central African Republic\0"
-"Ceuta And Melilla\0"
+"Ceuta & Melilla\0"
"Chad\0"
"Chile\0"
"China\0"
"Christmas Island\0"
"Clipperton Island\0"
-"Cocos Islands\0"
+"Cocos (Keeling) Islands\0"
"Colombia\0"
"Comoros\0"
-"Congo Brazzaville\0"
-"Congo Kinshasa\0"
+"Congo - Brazzaville\0"
+"Congo - Kinshasa\0"
"Cook Islands\0"
"Costa Rica\0"
"Croatia\0"
"Cuba\0"
-"Curacao\0"
+"Curaçao\0"
"Cyprus\0"
"Czechia\0"
"Denmark\0"
@@ -4930,13 +7281,13 @@ static const char territory_name_list[] =
"Guam\0"
"Guatemala\0"
"Guernsey\0"
-"Guinea Bissau\0"
+"Guinea-Bissau\0"
"Guinea\0"
"Guyana\0"
"Haiti\0"
-"Heard And McDonald Islands\0"
+"Heard & McDonald Islands\0"
"Honduras\0"
-"Hong Kong\0"
+"Hong Kong SAR China\0"
"Hungary\0"
"Iceland\0"
"India\0"
@@ -4944,10 +7295,10 @@ static const char territory_name_list[] =
"Iran\0"
"Iraq\0"
"Ireland\0"
-"Isle Of Man\0"
+"Isle of Man\0"
"Israel\0"
"Italy\0"
-"Ivory Coast\0"
+"Côte d’Ivoire\0" // Ivory Coast
"Jamaica\0"
"Japan\0"
"Jersey\0"
@@ -4968,8 +7319,8 @@ static const char territory_name_list[] =
"Liechtenstein\0"
"Lithuania\0"
"Luxembourg\0"
-"Macao\0"
-"Macedonia\0"
+"Macao SAR China\0"
+"North Macedonia\0"
"Madagascar\0"
"Malawi\0"
"Malaysia\0"
@@ -4990,7 +7341,7 @@ static const char territory_name_list[] =
"Montserrat\0"
"Morocco\0"
"Mozambique\0"
-"Myanmar\0"
+"Myanmar (Burma)\0"
"Namibia\0"
"Nauru\0"
"Nepal\0"
@@ -5015,25 +7366,25 @@ static const char territory_name_list[] =
"Paraguay\0"
"Peru\0"
"Philippines\0"
-"Pitcairn\0"
+"Pitcairn Islands\0"
"Poland\0"
"Portugal\0"
"Puerto Rico\0"
"Qatar\0"
-"Reunion\0"
+"Réunion\0"
"Romania\0"
"Russia\0"
"Rwanda\0"
-"Saint Barthelemy\0"
-"Saint Helena\0"
-"Saint Kitts And Nevis\0"
-"Saint Lucia\0"
-"Saint Martin\0"
-"Saint Pierre And Miquelon\0"
-"Saint Vincent And Grenadines\0"
+"St. Barthélemy\0"
+"St. Helena\0"
+"St. Kitts & Nevis\0"
+"St. Lucia\0"
+"St. Martin\0"
+"St. Pierre & Miquelon\0"
+"St. Vincent & Grenadines\0"
"Samoa\0"
"San Marino\0"
-"Sao Tome And Principe\0"
+"São Tomé & Príncipe\0"
"Saudi Arabia\0"
"Senegal\0"
"Serbia\0"
@@ -5046,14 +7397,14 @@ static const char territory_name_list[] =
"Solomon Islands\0"
"Somalia\0"
"South Africa\0"
-"South Georgia And South Sandwich Islands\0"
+"South Georgia & South Sandwich Islands\0"
"South Korea\0"
"South Sudan\0"
"Spain\0"
"Sri Lanka\0"
"Sudan\0"
"Suriname\0"
-"Svalbard And Jan Mayen\0"
+"Svalbard & Jan Mayen\0"
"Sweden\0"
"Switzerland\0"
"Syria\0"
@@ -5065,633 +7416,647 @@ static const char territory_name_list[] =
"Togo\0"
"Tokelau\0"
"Tonga\0"
-"Trinidad And Tobago\0"
-"Tristan Da Cunha\0"
+"Trinidad & Tobago\0"
+"Tristan da Cunha\0"
"Tunisia\0"
-"Turkey\0"
+"Türkiye\0" // Turkey
"Turkmenistan\0"
-"Turks And Caicos Islands\0"
+"Turks & Caicos Islands\0"
"Tuvalu\0"
"Uganda\0"
"Ukraine\0"
"United Arab Emirates\0"
"United Kingdom\0"
-"United States Outlying Islands\0"
+"U.S. Outlying Islands\0"
"United States\0"
-"United States Virgin Islands\0"
+"U.S. Virgin Islands\0"
"Uruguay\0"
"Uzbekistan\0"
"Vanuatu\0"
"Vatican City\0"
"Venezuela\0"
"Vietnam\0"
-"Wallis And Futuna\0"
+"Wallis & Futuna\0"
"Western Sahara\0"
-"World\0"
+"world\0"
"Yemen\0"
"Zambia\0"
"Zimbabwe\0"
;
-static const quint16 territory_name_index[] = {
+static constexpr quint16 territory_name_index[] = {
0, // AnyTerritory
8, // Afghanistan
20, // Aland Islands
- 34, // Albania
- 42, // Algeria
- 50, // American Samoa
- 65, // Andorra
- 73, // Angola
- 80, // Anguilla
- 89, // Antarctica
- 100, // Antigua And Barbuda
- 120, // Argentina
- 130, // Armenia
- 138, // Aruba
- 144, // Ascension Island
- 161, // Australia
- 171, // Austria
- 179, // Azerbaijan
- 190, // Bahamas
- 198, // Bahrain
- 206, // Bangladesh
- 217, // Barbados
- 226, // Belarus
- 234, // Belgium
- 242, // Belize
- 249, // Benin
- 255, // Bermuda
- 263, // Bhutan
- 270, // Bolivia
- 278, // Bosnia And Herzegovina
- 301, // Botswana
- 310, // Bouvet Island
- 324, // Brazil
- 331, // British Indian Ocean Territory
- 362, // British Virgin Islands
- 385, // Brunei
- 392, // Bulgaria
- 401, // Burkina Faso
- 414, // Burundi
- 422, // Cambodia
- 431, // Cameroon
- 440, // Canada
- 447, // Canary Islands
- 462, // Cape Verde
- 473, // Caribbean Netherlands
- 495, // Cayman Islands
- 510, // Central African Republic
- 535, // Ceuta And Melilla
- 553, // Chad
- 558, // Chile
- 564, // China
- 570, // Christmas Island
- 587, // Clipperton Island
- 605, // Cocos Islands
- 619, // Colombia
- 628, // Comoros
- 636, // Congo Brazzaville
- 654, // Congo Kinshasa
- 669, // Cook Islands
- 682, // Costa Rica
- 693, // Croatia
- 701, // Cuba
- 706, // Curacao
- 714, // Cyprus
- 721, // Czechia
- 729, // Denmark
- 737, // Diego Garcia
- 750, // Djibouti
- 759, // Dominica
- 768, // Dominican Republic
- 787, // Ecuador
- 795, // Egypt
- 801, // El Salvador
- 813, // Equatorial Guinea
- 831, // Eritrea
- 839, // Estonia
- 847, // Eswatini
- 856, // Ethiopia
- 865, // Europe
- 872, // European Union
- 887, // Falkland Islands
- 904, // Faroe Islands
- 918, // Fiji
- 923, // Finland
- 931, // France
- 938, // French Guiana
- 952, // French Polynesia
- 969, // French Southern Territories
- 997, // Gabon
- 1003, // Gambia
- 1010, // Georgia
- 1018, // Germany
- 1026, // Ghana
- 1032, // Gibraltar
- 1042, // Greece
- 1049, // Greenland
- 1059, // Grenada
- 1067, // Guadeloupe
- 1078, // Guam
- 1083, // Guatemala
- 1093, // Guernsey
- 1102, // Guinea Bissau
- 1116, // Guinea
- 1123, // Guyana
- 1130, // Haiti
- 1136, // Heard And McDonald Islands
- 1163, // Honduras
- 1172, // Hong Kong
- 1182, // Hungary
- 1190, // Iceland
- 1198, // India
- 1204, // Indonesia
- 1214, // Iran
- 1219, // Iraq
- 1224, // Ireland
- 1232, // Isle Of Man
- 1244, // Israel
- 1251, // Italy
- 1257, // Ivory Coast
- 1269, // Jamaica
- 1277, // Japan
- 1283, // Jersey
- 1290, // Jordan
- 1297, // Kazakhstan
- 1308, // Kenya
- 1314, // Kiribati
- 1323, // Kosovo
- 1330, // Kuwait
- 1337, // Kyrgyzstan
- 1348, // Laos
- 1353, // Latin America
- 1367, // Latvia
- 1374, // Lebanon
- 1382, // Lesotho
- 1390, // Liberia
- 1398, // Libya
- 1404, // Liechtenstein
- 1418, // Lithuania
- 1428, // Luxembourg
- 1439, // Macao
- 1445, // Macedonia
- 1455, // Madagascar
- 1466, // Malawi
- 1473, // Malaysia
- 1482, // Maldives
- 1491, // Mali
- 1496, // Malta
- 1502, // Marshall Islands
- 1519, // Martinique
- 1530, // Mauritania
- 1541, // Mauritius
- 1551, // Mayotte
- 1559, // Mexico
- 1566, // Micronesia
- 1577, // Moldova
- 1585, // Monaco
- 1592, // Mongolia
- 1601, // Montenegro
- 1612, // Montserrat
- 1623, // Morocco
- 1631, // Mozambique
- 1642, // Myanmar
- 1650, // Namibia
- 1658, // Nauru
- 1664, // Nepal
- 1670, // Netherlands
- 1682, // New Caledonia
- 1696, // New Zealand
- 1708, // Nicaragua
- 1718, // Nigeria
- 1726, // Niger
- 1732, // Niue
- 1737, // Norfolk Island
- 1752, // Northern Mariana Islands
- 1777, // North Korea
- 1789, // Norway
- 1796, // Oman
- 1801, // Outlying Oceania
- 1818, // Pakistan
- 1827, // Palau
- 1833, // Palestinian Territories
- 1857, // Panama
- 1864, // Papua New Guinea
- 1881, // Paraguay
- 1890, // Peru
- 1895, // Philippines
- 1907, // Pitcairn
- 1916, // Poland
- 1923, // Portugal
- 1932, // Puerto Rico
- 1944, // Qatar
- 1950, // Reunion
- 1958, // Romania
- 1966, // Russia
- 1973, // Rwanda
- 1980, // Saint Barthelemy
- 1997, // Saint Helena
- 2010, // Saint Kitts And Nevis
- 2032, // Saint Lucia
- 2044, // Saint Martin
- 2057, // Saint Pierre And Miquelon
- 2083, // Saint Vincent And Grenadines
- 2112, // Samoa
- 2118, // San Marino
- 2129, // Sao Tome And Principe
- 2151, // Saudi Arabia
- 2164, // Senegal
- 2172, // Serbia
- 2179, // Seychelles
- 2190, // Sierra Leone
- 2203, // Singapore
- 2213, // Sint Maarten
- 2226, // Slovakia
- 2235, // Slovenia
- 2244, // Solomon Islands
- 2260, // Somalia
- 2268, // South Africa
- 2281, // South Georgia And South Sandwich Islands
- 2322, // South Korea
- 2334, // South Sudan
- 2346, // Spain
- 2352, // Sri Lanka
- 2362, // Sudan
- 2368, // Suriname
- 2377, // Svalbard And Jan Mayen
- 2400, // Sweden
- 2407, // Switzerland
- 2419, // Syria
- 2425, // Taiwan
- 2432, // Tajikistan
- 2443, // Tanzania
- 2452, // Thailand
- 2461, // Timor-Leste
- 2473, // Togo
- 2478, // Tokelau
- 2486, // Tonga
- 2492, // Trinidad And Tobago
- 2512, // Tristan Da Cunha
- 2529, // Tunisia
- 2537, // Turkey
- 2544, // Turkmenistan
- 2557, // Turks And Caicos Islands
- 2582, // Tuvalu
- 2589, // Uganda
- 2596, // Ukraine
- 2604, // United Arab Emirates
- 2625, // United Kingdom
- 2640, // United States Outlying Islands
- 2671, // United States
- 2685, // United States Virgin Islands
- 2714, // Uruguay
- 2722, // Uzbekistan
- 2733, // Vanuatu
- 2741, // Vatican City
- 2754, // Venezuela
- 2764, // Vietnam
- 2772, // Wallis And Futuna
- 2790, // Western Sahara
- 2805, // World
- 2811, // Yemen
- 2817, // Zambia
- 2824, // Zimbabwe
+ 35, // Albania
+ 43, // Algeria
+ 51, // American Samoa
+ 66, // Andorra
+ 74, // Angola
+ 81, // Anguilla
+ 90, // Antarctica
+ 101, // Antigua and Barbuda
+ 119, // Argentina
+ 129, // Armenia
+ 137, // Aruba
+ 143, // Ascension Island
+ 160, // Australia
+ 170, // Austria
+ 178, // Azerbaijan
+ 189, // Bahamas
+ 197, // Bahrain
+ 205, // Bangladesh
+ 216, // Barbados
+ 225, // Belarus
+ 233, // Belgium
+ 241, // Belize
+ 248, // Benin
+ 254, // Bermuda
+ 262, // Bhutan
+ 269, // Bolivia
+ 277, // Bosnia and Herzegovina
+ 298, // Botswana
+ 307, // Bouvet Island
+ 321, // Brazil
+ 328, // British Indian Ocean Territory
+ 359, // British Virgin Islands
+ 382, // Brunei
+ 389, // Bulgaria
+ 398, // Burkina Faso
+ 411, // Burundi
+ 419, // Cambodia
+ 428, // Cameroon
+ 437, // Canada
+ 444, // Canary Islands
+ 459, // Cape Verde
+ 470, // Caribbean Netherlands
+ 492, // Cayman Islands
+ 507, // Central African Republic
+ 532, // Ceuta and Melilla
+ 548, // Chad
+ 553, // Chile
+ 559, // China
+ 565, // Christmas Island
+ 582, // Clipperton Island
+ 600, // Cocos Islands
+ 624, // Colombia
+ 633, // Comoros
+ 641, // Congo - Brazzaville
+ 661, // Congo - Kinshasa
+ 678, // Cook Islands
+ 691, // Costa Rica
+ 702, // Croatia
+ 710, // Cuba
+ 715, // Curacao
+ 724, // Cyprus
+ 731, // Czechia
+ 739, // Denmark
+ 747, // Diego Garcia
+ 760, // Djibouti
+ 769, // Dominica
+ 778, // Dominican Republic
+ 797, // Ecuador
+ 805, // Egypt
+ 811, // El Salvador
+ 823, // Equatorial Guinea
+ 841, // Eritrea
+ 849, // Estonia
+ 857, // Eswatini
+ 866, // Ethiopia
+ 875, // Europe
+ 882, // European Union
+ 897, // Falkland Islands
+ 914, // Faroe Islands
+ 928, // Fiji
+ 933, // Finland
+ 941, // France
+ 948, // French Guiana
+ 962, // French Polynesia
+ 979, // French Southern Territories
+ 1007, // Gabon
+ 1013, // Gambia
+ 1020, // Georgia
+ 1028, // Germany
+ 1036, // Ghana
+ 1042, // Gibraltar
+ 1052, // Greece
+ 1059, // Greenland
+ 1069, // Grenada
+ 1077, // Guadeloupe
+ 1088, // Guam
+ 1093, // Guatemala
+ 1103, // Guernsey
+ 1112, // Guinea-Bissau
+ 1126, // Guinea
+ 1133, // Guyana
+ 1140, // Haiti
+ 1146, // Heard and McDonald Islands
+ 1171, // Honduras
+ 1180, // Hong Kong
+ 1200, // Hungary
+ 1208, // Iceland
+ 1216, // India
+ 1222, // Indonesia
+ 1232, // Iran
+ 1237, // Iraq
+ 1242, // Ireland
+ 1250, // Isle of Man
+ 1262, // Israel
+ 1269, // Italy
+ 1275, // Ivory Coast
+ 1292, // Jamaica
+ 1300, // Japan
+ 1306, // Jersey
+ 1313, // Jordan
+ 1320, // Kazakhstan
+ 1331, // Kenya
+ 1337, // Kiribati
+ 1346, // Kosovo
+ 1353, // Kuwait
+ 1360, // Kyrgyzstan
+ 1371, // Laos
+ 1376, // Latin America
+ 1390, // Latvia
+ 1397, // Lebanon
+ 1405, // Lesotho
+ 1413, // Liberia
+ 1421, // Libya
+ 1427, // Liechtenstein
+ 1441, // Lithuania
+ 1451, // Luxembourg
+ 1462, // Macao
+ 1478, // Macedonia
+ 1494, // Madagascar
+ 1505, // Malawi
+ 1512, // Malaysia
+ 1521, // Maldives
+ 1530, // Mali
+ 1535, // Malta
+ 1541, // Marshall Islands
+ 1558, // Martinique
+ 1569, // Mauritania
+ 1580, // Mauritius
+ 1590, // Mayotte
+ 1598, // Mexico
+ 1605, // Micronesia
+ 1616, // Moldova
+ 1624, // Monaco
+ 1631, // Mongolia
+ 1640, // Montenegro
+ 1651, // Montserrat
+ 1662, // Morocco
+ 1670, // Mozambique
+ 1681, // Myanmar
+ 1697, // Namibia
+ 1705, // Nauru
+ 1711, // Nepal
+ 1717, // Netherlands
+ 1729, // New Caledonia
+ 1743, // New Zealand
+ 1755, // Nicaragua
+ 1765, // Nigeria
+ 1773, // Niger
+ 1779, // Niue
+ 1784, // Norfolk Island
+ 1799, // Northern Mariana Islands
+ 1824, // North Korea
+ 1836, // Norway
+ 1843, // Oman
+ 1848, // Outlying Oceania
+ 1865, // Pakistan
+ 1874, // Palau
+ 1880, // Palestinian Territories
+ 1904, // Panama
+ 1911, // Papua New Guinea
+ 1928, // Paraguay
+ 1937, // Peru
+ 1942, // Philippines
+ 1954, // Pitcairn
+ 1971, // Poland
+ 1978, // Portugal
+ 1987, // Puerto Rico
+ 1999, // Qatar
+ 2005, // Reunion
+ 2014, // Romania
+ 2022, // Russia
+ 2029, // Rwanda
+ 2036, // Saint Barthelemy
+ 2052, // Saint Helena
+ 2063, // Saint Kitts and Nevis
+ 2081, // Saint Lucia
+ 2091, // Saint Martin
+ 2102, // Saint Pierre and Miquelon
+ 2124, // Saint Vincent and Grenadines
+ 2149, // Samoa
+ 2155, // San Marino
+ 2166, // Sao Tome and Principe
+ 2189, // Saudi Arabia
+ 2202, // Senegal
+ 2210, // Serbia
+ 2217, // Seychelles
+ 2228, // Sierra Leone
+ 2241, // Singapore
+ 2251, // Sint Maarten
+ 2264, // Slovakia
+ 2273, // Slovenia
+ 2282, // Solomon Islands
+ 2298, // Somalia
+ 2306, // South Africa
+ 2319, // South Georgia and South Sandwich Islands
+ 2358, // South Korea
+ 2370, // South Sudan
+ 2382, // Spain
+ 2388, // Sri Lanka
+ 2398, // Sudan
+ 2404, // Suriname
+ 2413, // Svalbard and Jan Mayen
+ 2434, // Sweden
+ 2441, // Switzerland
+ 2453, // Syria
+ 2459, // Taiwan
+ 2466, // Tajikistan
+ 2477, // Tanzania
+ 2486, // Thailand
+ 2495, // Timor-Leste
+ 2507, // Togo
+ 2512, // Tokelau
+ 2520, // Tonga
+ 2526, // Trinidad and Tobago
+ 2544, // Tristan da Cunha
+ 2561, // Tunisia
+ 2569, // Turkey
+ 2578, // Turkmenistan
+ 2591, // Turks and Caicos Islands
+ 2614, // Tuvalu
+ 2621, // Uganda
+ 2628, // Ukraine
+ 2636, // United Arab Emirates
+ 2657, // United Kingdom
+ 2672, // United States Outlying Islands
+ 2694, // United States
+ 2708, // United States Virgin Islands
+ 2728, // Uruguay
+ 2736, // Uzbekistan
+ 2747, // Vanuatu
+ 2755, // Vatican City
+ 2768, // Venezuela
+ 2778, // Vietnam
+ 2786, // Wallis and Futuna
+ 2802, // Western Sahara
+ 2817, // world
+ 2823, // Yemen
+ 2829, // Zambia
+ 2836, // Zimbabwe
};
-constexpr std::array<LanguageCodeEntry, 330> languageCodeList {
- LanguageCodeEntry {{}, {{'u', 'n', 'd'}}, {{'u', 'n', 'd'}}, {{'u', 'n', 'd'}}}, // AnyLanguage
- LanguageCodeEntry {{}, {{'u', 'n', 'd'}}, {{'u', 'n', 'd'}}, {{'u', 'n', 'd'}}}, // C
- LanguageCodeEntry {{{'a', 'b'}}, {{'a', 'b', 'k'}}, {{'a', 'b', 'k'}}, {{'a', 'b', 'k'}}}, // Abkhazian
- LanguageCodeEntry {{{'a', 'a'}}, {{'a', 'a', 'r'}}, {{'a', 'a', 'r'}}, {{'a', 'a', 'r'}}}, // Afar
- LanguageCodeEntry {{{'a', 'f'}}, {{'a', 'f', 'r'}}, {{'a', 'f', 'r'}}, {{'a', 'f', 'r'}}}, // Afrikaans
- LanguageCodeEntry {{}, {}, {}, {{'a', 'g', 'q'}}}, // Aghem
- LanguageCodeEntry {{{'a', 'k'}}, {{'a', 'k', 'a'}}, {{'a', 'k', 'a'}}, {{'a', 'k', 'a'}}}, // Akan
- LanguageCodeEntry {{}, {{'a', 'k', 'k'}}, {{'a', 'k', 'k'}}, {{'a', 'k', 'k'}}}, // Akkadian
- LanguageCodeEntry {{}, {}, {}, {{'b', 's', 's'}}}, // Akoose
- LanguageCodeEntry {{{'s', 'q'}}, {{'a', 'l', 'b'}}, {{'s', 'q', 'i'}}, {{'s', 'q', 'i'}}}, // Albanian
- LanguageCodeEntry {{}, {}, {}, {{'a', 's', 'e'}}}, // American Sign Language
- LanguageCodeEntry {{{'a', 'm'}}, {{'a', 'm', 'h'}}, {{'a', 'm', 'h'}}, {{'a', 'm', 'h'}}}, // Amharic
- LanguageCodeEntry {{}, {{'e', 'g', 'y'}}, {{'e', 'g', 'y'}}, {{'e', 'g', 'y'}}}, // Ancient Egyptian
- LanguageCodeEntry {{}, {{'g', 'r', 'c'}}, {{'g', 'r', 'c'}}, {{'g', 'r', 'c'}}}, // Ancient Greek
- LanguageCodeEntry {{{'a', 'r'}}, {{'a', 'r', 'a'}}, {{'a', 'r', 'a'}}, {{'a', 'r', 'a'}}}, // Arabic
- LanguageCodeEntry {{{'a', 'n'}}, {{'a', 'r', 'g'}}, {{'a', 'r', 'g'}}, {{'a', 'r', 'g'}}}, // Aragonese
- LanguageCodeEntry {{}, {{'a', 'r', 'c'}}, {{'a', 'r', 'c'}}, {{'a', 'r', 'c'}}}, // Aramaic
- LanguageCodeEntry {{{'h', 'y'}}, {{'a', 'r', 'm'}}, {{'h', 'y', 'e'}}, {{'h', 'y', 'e'}}}, // Armenian
- LanguageCodeEntry {{{'a', 's'}}, {{'a', 's', 'm'}}, {{'a', 's', 'm'}}, {{'a', 's', 'm'}}}, // Assamese
- LanguageCodeEntry {{}, {{'a', 's', 't'}}, {{'a', 's', 't'}}, {{'a', 's', 't'}}}, // Asturian
- LanguageCodeEntry {{}, {}, {}, {{'a', 's', 'a'}}}, // Asu
- LanguageCodeEntry {{}, {}, {}, {{'c', 'c', 'h'}}}, // Atsam
- LanguageCodeEntry {{{'a', 'v'}}, {{'a', 'v', 'a'}}, {{'a', 'v', 'a'}}, {{'a', 'v', 'a'}}}, // Avaric
- LanguageCodeEntry {{{'a', 'e'}}, {{'a', 'v', 'e'}}, {{'a', 'v', 'e'}}, {{'a', 'v', 'e'}}}, // Avestan
- LanguageCodeEntry {{{'a', 'y'}}, {{'a', 'y', 'm'}}, {{'a', 'y', 'm'}}, {{'a', 'y', 'm'}}}, // Aymara
- LanguageCodeEntry {{{'a', 'z'}}, {{'a', 'z', 'e'}}, {{'a', 'z', 'e'}}, {{'a', 'z', 'e'}}}, // Azerbaijani
- LanguageCodeEntry {{}, {}, {}, {{'k', 's', 'f'}}}, // Bafia
- LanguageCodeEntry {{}, {{'b', 'a', 'n'}}, {{'b', 'a', 'n'}}, {{'b', 'a', 'n'}}}, // Balinese
- LanguageCodeEntry {{{'b', 'm'}}, {{'b', 'a', 'm'}}, {{'b', 'a', 'm'}}, {{'b', 'a', 'm'}}}, // Bambara
- LanguageCodeEntry {{}, {}, {}, {{'b', 'a', 'x'}}}, // Bamun
- LanguageCodeEntry {{{'b', 'n'}}, {{'b', 'e', 'n'}}, {{'b', 'e', 'n'}}, {{'b', 'e', 'n'}}}, // Bangla
- LanguageCodeEntry {{}, {{'b', 'a', 's'}}, {{'b', 'a', 's'}}, {{'b', 'a', 's'}}}, // Basaa
- LanguageCodeEntry {{{'b', 'a'}}, {{'b', 'a', 'k'}}, {{'b', 'a', 'k'}}, {{'b', 'a', 'k'}}}, // Bashkir
- LanguageCodeEntry {{{'e', 'u'}}, {{'b', 'a', 'q'}}, {{'e', 'u', 's'}}, {{'e', 'u', 's'}}}, // Basque
- LanguageCodeEntry {{}, {}, {}, {{'b', 'b', 'c'}}}, // Batak Toba
- LanguageCodeEntry {{{'b', 'e'}}, {{'b', 'e', 'l'}}, {{'b', 'e', 'l'}}, {{'b', 'e', 'l'}}}, // Belarusian
- LanguageCodeEntry {{}, {{'b', 'e', 'm'}}, {{'b', 'e', 'm'}}, {{'b', 'e', 'm'}}}, // Bemba
- LanguageCodeEntry {{}, {}, {}, {{'b', 'e', 'z'}}}, // Bena
- LanguageCodeEntry {{}, {{'b', 'h', 'o'}}, {{'b', 'h', 'o'}}, {{'b', 'h', 'o'}}}, // Bhojpuri
- LanguageCodeEntry {{{'b', 'i'}}, {{'b', 'i', 's'}}, {{'b', 'i', 's'}}, {{'b', 'i', 's'}}}, // Bislama
- LanguageCodeEntry {{}, {{'b', 'y', 'n'}}, {{'b', 'y', 'n'}}, {{'b', 'y', 'n'}}}, // Blin
- LanguageCodeEntry {{}, {}, {}, {{'b', 'r', 'x'}}}, // Bodo
- LanguageCodeEntry {{{'b', 's'}}, {{'b', 'o', 's'}}, {{'b', 'o', 's'}}, {{'b', 'o', 's'}}}, // Bosnian
- LanguageCodeEntry {{{'b', 'r'}}, {{'b', 'r', 'e'}}, {{'b', 'r', 'e'}}, {{'b', 'r', 'e'}}}, // Breton
- LanguageCodeEntry {{}, {{'b', 'u', 'g'}}, {{'b', 'u', 'g'}}, {{'b', 'u', 'g'}}}, // Buginese
- LanguageCodeEntry {{{'b', 'g'}}, {{'b', 'u', 'l'}}, {{'b', 'u', 'l'}}, {{'b', 'u', 'l'}}}, // Bulgarian
- LanguageCodeEntry {{{'m', 'y'}}, {{'b', 'u', 'r'}}, {{'m', 'y', 'a'}}, {{'m', 'y', 'a'}}}, // Burmese
- LanguageCodeEntry {{}, {}, {}, {{'y', 'u', 'e'}}}, // Cantonese
- LanguageCodeEntry {{{'c', 'a'}}, {{'c', 'a', 't'}}, {{'c', 'a', 't'}}, {{'c', 'a', 't'}}}, // Catalan
- LanguageCodeEntry {{}, {{'c', 'e', 'b'}}, {{'c', 'e', 'b'}}, {{'c', 'e', 'b'}}}, // Cebuano
- LanguageCodeEntry {{}, {}, {}, {{'t', 'z', 'm'}}}, // Central Atlas Tamazight
- LanguageCodeEntry {{}, {}, {}, {{'c', 'k', 'b'}}}, // Central Kurdish
- LanguageCodeEntry {{}, {}, {}, {{'c', 'c', 'p'}}}, // Chakma
- LanguageCodeEntry {{{'c', 'h'}}, {{'c', 'h', 'a'}}, {{'c', 'h', 'a'}}, {{'c', 'h', 'a'}}}, // Chamorro
- LanguageCodeEntry {{{'c', 'e'}}, {{'c', 'h', 'e'}}, {{'c', 'h', 'e'}}, {{'c', 'h', 'e'}}}, // Chechen
- LanguageCodeEntry {{}, {{'c', 'h', 'r'}}, {{'c', 'h', 'r'}}, {{'c', 'h', 'r'}}}, // Cherokee
- LanguageCodeEntry {{}, {}, {}, {{'c', 'i', 'c'}}}, // Chickasaw
- LanguageCodeEntry {{}, {}, {}, {{'c', 'g', 'g'}}}, // Chiga
- LanguageCodeEntry {{{'z', 'h'}}, {{'c', 'h', 'i'}}, {{'z', 'h', 'o'}}, {{'z', 'h', 'o'}}}, // Chinese
- LanguageCodeEntry {{{'c', 'u'}}, {{'c', 'h', 'u'}}, {{'c', 'h', 'u'}}, {{'c', 'h', 'u'}}}, // Church
- LanguageCodeEntry {{{'c', 'v'}}, {{'c', 'h', 'v'}}, {{'c', 'h', 'v'}}, {{'c', 'h', 'v'}}}, // Chuvash
- LanguageCodeEntry {{}, {}, {}, {{'k', 's', 'h'}}}, // Colognian
- LanguageCodeEntry {{}, {{'c', 'o', 'p'}}, {{'c', 'o', 'p'}}, {{'c', 'o', 'p'}}}, // Coptic
- LanguageCodeEntry {{{'k', 'w'}}, {{'c', 'o', 'r'}}, {{'c', 'o', 'r'}}, {{'c', 'o', 'r'}}}, // Cornish
- LanguageCodeEntry {{{'c', 'o'}}, {{'c', 'o', 's'}}, {{'c', 'o', 's'}}, {{'c', 'o', 's'}}}, // Corsican
- LanguageCodeEntry {{{'c', 'r'}}, {{'c', 'r', 'e'}}, {{'c', 'r', 'e'}}, {{'c', 'r', 'e'}}}, // Cree
- LanguageCodeEntry {{{'h', 'r'}}, {{'h', 'r', 'v'}}, {{'h', 'r', 'v'}}, {{'h', 'r', 'v'}}}, // Croatian
- LanguageCodeEntry {{{'c', 's'}}, {{'c', 'z', 'e'}}, {{'c', 'e', 's'}}, {{'c', 'e', 's'}}}, // Czech
- LanguageCodeEntry {{{'d', 'a'}}, {{'d', 'a', 'n'}}, {{'d', 'a', 'n'}}, {{'d', 'a', 'n'}}}, // Danish
- LanguageCodeEntry {{{'d', 'v'}}, {{'d', 'i', 'v'}}, {{'d', 'i', 'v'}}, {{'d', 'i', 'v'}}}, // Divehi
- LanguageCodeEntry {{}, {{'d', 'o', 'i'}}, {{'d', 'o', 'i'}}, {{'d', 'o', 'i'}}}, // Dogri
- LanguageCodeEntry {{}, {{'d', 'u', 'a'}}, {{'d', 'u', 'a'}}, {{'d', 'u', 'a'}}}, // Duala
- LanguageCodeEntry {{{'n', 'l'}}, {{'d', 'u', 't'}}, {{'n', 'l', 'd'}}, {{'n', 'l', 'd'}}}, // Dutch
- LanguageCodeEntry {{{'d', 'z'}}, {{'d', 'z', 'o'}}, {{'d', 'z', 'o'}}, {{'d', 'z', 'o'}}}, // Dzongkha
- LanguageCodeEntry {{}, {}, {}, {{'e', 'b', 'u'}}}, // Embu
- LanguageCodeEntry {{{'e', 'n'}}, {{'e', 'n', 'g'}}, {{'e', 'n', 'g'}}, {{'e', 'n', 'g'}}}, // English
- LanguageCodeEntry {{}, {{'m', 'y', 'v'}}, {{'m', 'y', 'v'}}, {{'m', 'y', 'v'}}}, // Erzya
- LanguageCodeEntry {{{'e', 'o'}}, {{'e', 'p', 'o'}}, {{'e', 'p', 'o'}}, {{'e', 'p', 'o'}}}, // Esperanto
- LanguageCodeEntry {{{'e', 't'}}, {{'e', 's', 't'}}, {{'e', 's', 't'}}, {{'e', 's', 't'}}}, // Estonian
- LanguageCodeEntry {{{'e', 'e'}}, {{'e', 'w', 'e'}}, {{'e', 'w', 'e'}}, {{'e', 'w', 'e'}}}, // Ewe
- LanguageCodeEntry {{}, {{'e', 'w', 'o'}}, {{'e', 'w', 'o'}}, {{'e', 'w', 'o'}}}, // Ewondo
- LanguageCodeEntry {{{'f', 'o'}}, {{'f', 'a', 'o'}}, {{'f', 'a', 'o'}}, {{'f', 'a', 'o'}}}, // Faroese
- LanguageCodeEntry {{{'f', 'j'}}, {{'f', 'i', 'j'}}, {{'f', 'i', 'j'}}, {{'f', 'i', 'j'}}}, // Fijian
- LanguageCodeEntry {{}, {{'f', 'i', 'l'}}, {{'f', 'i', 'l'}}, {{'f', 'i', 'l'}}}, // Filipino
- LanguageCodeEntry {{{'f', 'i'}}, {{'f', 'i', 'n'}}, {{'f', 'i', 'n'}}, {{'f', 'i', 'n'}}}, // Finnish
- LanguageCodeEntry {{{'f', 'r'}}, {{'f', 'r', 'e'}}, {{'f', 'r', 'a'}}, {{'f', 'r', 'a'}}}, // French
- LanguageCodeEntry {{}, {{'f', 'u', 'r'}}, {{'f', 'u', 'r'}}, {{'f', 'u', 'r'}}}, // Friulian
- LanguageCodeEntry {{{'f', 'f'}}, {{'f', 'u', 'l'}}, {{'f', 'u', 'l'}}, {{'f', 'u', 'l'}}}, // Fulah
- LanguageCodeEntry {{{'g', 'd'}}, {{'g', 'l', 'a'}}, {{'g', 'l', 'a'}}, {{'g', 'l', 'a'}}}, // Gaelic
- LanguageCodeEntry {{}, {{'g', 'a', 'a'}}, {{'g', 'a', 'a'}}, {{'g', 'a', 'a'}}}, // Ga
- LanguageCodeEntry {{{'g', 'l'}}, {{'g', 'l', 'g'}}, {{'g', 'l', 'g'}}, {{'g', 'l', 'g'}}}, // Galician
- LanguageCodeEntry {{{'l', 'g'}}, {{'l', 'u', 'g'}}, {{'l', 'u', 'g'}}, {{'l', 'u', 'g'}}}, // Ganda
- LanguageCodeEntry {{}, {{'g', 'e', 'z'}}, {{'g', 'e', 'z'}}, {{'g', 'e', 'z'}}}, // Geez
- LanguageCodeEntry {{{'k', 'a'}}, {{'g', 'e', 'o'}}, {{'k', 'a', 't'}}, {{'k', 'a', 't'}}}, // Georgian
- LanguageCodeEntry {{{'d', 'e'}}, {{'g', 'e', 'r'}}, {{'d', 'e', 'u'}}, {{'d', 'e', 'u'}}}, // German
- LanguageCodeEntry {{}, {{'g', 'o', 't'}}, {{'g', 'o', 't'}}, {{'g', 'o', 't'}}}, // Gothic
- LanguageCodeEntry {{{'e', 'l'}}, {{'g', 'r', 'e'}}, {{'e', 'l', 'l'}}, {{'e', 'l', 'l'}}}, // Greek
- LanguageCodeEntry {{{'g', 'n'}}, {{'g', 'r', 'n'}}, {{'g', 'r', 'n'}}, {{'g', 'r', 'n'}}}, // Guarani
- LanguageCodeEntry {{{'g', 'u'}}, {{'g', 'u', 'j'}}, {{'g', 'u', 'j'}}, {{'g', 'u', 'j'}}}, // Gujarati
- LanguageCodeEntry {{}, {}, {}, {{'g', 'u', 'z'}}}, // Gusii
- LanguageCodeEntry {{{'h', 't'}}, {{'h', 'a', 't'}}, {{'h', 'a', 't'}}, {{'h', 'a', 't'}}}, // Haitian
- LanguageCodeEntry {{{'h', 'a'}}, {{'h', 'a', 'u'}}, {{'h', 'a', 'u'}}, {{'h', 'a', 'u'}}}, // Hausa
- LanguageCodeEntry {{}, {{'h', 'a', 'w'}}, {{'h', 'a', 'w'}}, {{'h', 'a', 'w'}}}, // Hawaiian
- LanguageCodeEntry {{{'h', 'e'}}, {{'h', 'e', 'b'}}, {{'h', 'e', 'b'}}, {{'h', 'e', 'b'}}}, // Hebrew
- LanguageCodeEntry {{{'h', 'z'}}, {{'h', 'e', 'r'}}, {{'h', 'e', 'r'}}, {{'h', 'e', 'r'}}}, // Herero
- LanguageCodeEntry {{{'h', 'i'}}, {{'h', 'i', 'n'}}, {{'h', 'i', 'n'}}, {{'h', 'i', 'n'}}}, // Hindi
- LanguageCodeEntry {{{'h', 'o'}}, {{'h', 'm', 'o'}}, {{'h', 'm', 'o'}}, {{'h', 'm', 'o'}}}, // Hiri Motu
- LanguageCodeEntry {{{'h', 'u'}}, {{'h', 'u', 'n'}}, {{'h', 'u', 'n'}}, {{'h', 'u', 'n'}}}, // Hungarian
- LanguageCodeEntry {{{'i', 's'}}, {{'i', 'c', 'e'}}, {{'i', 's', 'l'}}, {{'i', 's', 'l'}}}, // Icelandic
- LanguageCodeEntry {{{'i', 'o'}}, {{'i', 'd', 'o'}}, {{'i', 'd', 'o'}}, {{'i', 'd', 'o'}}}, // Ido
- LanguageCodeEntry {{{'i', 'g'}}, {{'i', 'b', 'o'}}, {{'i', 'b', 'o'}}, {{'i', 'b', 'o'}}}, // Igbo
- LanguageCodeEntry {{}, {{'s', 'm', 'n'}}, {{'s', 'm', 'n'}}, {{'s', 'm', 'n'}}}, // Inari Sami
- LanguageCodeEntry {{{'i', 'd'}}, {{'i', 'n', 'd'}}, {{'i', 'n', 'd'}}, {{'i', 'n', 'd'}}}, // Indonesian
- LanguageCodeEntry {{}, {{'i', 'n', 'h'}}, {{'i', 'n', 'h'}}, {{'i', 'n', 'h'}}}, // Ingush
- LanguageCodeEntry {{{'i', 'a'}}, {{'i', 'n', 'a'}}, {{'i', 'n', 'a'}}, {{'i', 'n', 'a'}}}, // Interlingua
- LanguageCodeEntry {{{'i', 'e'}}, {{'i', 'l', 'e'}}, {{'i', 'l', 'e'}}, {{'i', 'l', 'e'}}}, // Interlingue
- LanguageCodeEntry {{{'i', 'u'}}, {{'i', 'k', 'u'}}, {{'i', 'k', 'u'}}, {{'i', 'k', 'u'}}}, // Inuktitut
- LanguageCodeEntry {{{'i', 'k'}}, {{'i', 'p', 'k'}}, {{'i', 'p', 'k'}}, {{'i', 'p', 'k'}}}, // Inupiaq
- LanguageCodeEntry {{{'g', 'a'}}, {{'g', 'l', 'e'}}, {{'g', 'l', 'e'}}, {{'g', 'l', 'e'}}}, // Irish
- LanguageCodeEntry {{{'i', 't'}}, {{'i', 't', 'a'}}, {{'i', 't', 'a'}}, {{'i', 't', 'a'}}}, // Italian
- LanguageCodeEntry {{{'j', 'a'}}, {{'j', 'p', 'n'}}, {{'j', 'p', 'n'}}, {{'j', 'p', 'n'}}}, // Japanese
- LanguageCodeEntry {{{'j', 'v'}}, {{'j', 'a', 'v'}}, {{'j', 'a', 'v'}}, {{'j', 'a', 'v'}}}, // Javanese
- LanguageCodeEntry {{}, {}, {}, {{'k', 'a', 'j'}}}, // Jju
- LanguageCodeEntry {{}, {}, {}, {{'d', 'y', 'o'}}}, // Jola Fonyi
- LanguageCodeEntry {{}, {}, {}, {{'k', 'e', 'a'}}}, // Kabuverdianu
- LanguageCodeEntry {{}, {{'k', 'a', 'b'}}, {{'k', 'a', 'b'}}, {{'k', 'a', 'b'}}}, // Kabyle
- LanguageCodeEntry {{}, {}, {}, {{'k', 'k', 'j'}}}, // Kako
- LanguageCodeEntry {{{'k', 'l'}}, {{'k', 'a', 'l'}}, {{'k', 'a', 'l'}}, {{'k', 'a', 'l'}}}, // Kalaallisut
- LanguageCodeEntry {{}, {}, {}, {{'k', 'l', 'n'}}}, // Kalenjin
- LanguageCodeEntry {{}, {{'k', 'a', 'm'}}, {{'k', 'a', 'm'}}, {{'k', 'a', 'm'}}}, // Kamba
- LanguageCodeEntry {{{'k', 'n'}}, {{'k', 'a', 'n'}}, {{'k', 'a', 'n'}}, {{'k', 'a', 'n'}}}, // Kannada
- LanguageCodeEntry {{{'k', 'r'}}, {{'k', 'a', 'u'}}, {{'k', 'a', 'u'}}, {{'k', 'a', 'u'}}}, // Kanuri
- LanguageCodeEntry {{{'k', 's'}}, {{'k', 'a', 's'}}, {{'k', 'a', 's'}}, {{'k', 'a', 's'}}}, // Kashmiri
- LanguageCodeEntry {{{'k', 'k'}}, {{'k', 'a', 'z'}}, {{'k', 'a', 'z'}}, {{'k', 'a', 'z'}}}, // Kazakh
- LanguageCodeEntry {{}, {}, {}, {{'k', 'e', 'n'}}}, // Kenyang
- LanguageCodeEntry {{{'k', 'm'}}, {{'k', 'h', 'm'}}, {{'k', 'h', 'm'}}, {{'k', 'h', 'm'}}}, // Khmer
- LanguageCodeEntry {{}, {}, {}, {{'q', 'u', 'c'}}}, // Kiche
- LanguageCodeEntry {{{'k', 'i'}}, {{'k', 'i', 'k'}}, {{'k', 'i', 'k'}}, {{'k', 'i', 'k'}}}, // Kikuyu
- LanguageCodeEntry {{{'r', 'w'}}, {{'k', 'i', 'n'}}, {{'k', 'i', 'n'}}, {{'k', 'i', 'n'}}}, // Kinyarwanda
- LanguageCodeEntry {{{'k', 'v'}}, {{'k', 'o', 'm'}}, {{'k', 'o', 'm'}}, {{'k', 'o', 'm'}}}, // Komi
- LanguageCodeEntry {{{'k', 'g'}}, {{'k', 'o', 'n'}}, {{'k', 'o', 'n'}}, {{'k', 'o', 'n'}}}, // Kongo
- LanguageCodeEntry {{}, {{'k', 'o', 'k'}}, {{'k', 'o', 'k'}}, {{'k', 'o', 'k'}}}, // Konkani
- LanguageCodeEntry {{{'k', 'o'}}, {{'k', 'o', 'r'}}, {{'k', 'o', 'r'}}, {{'k', 'o', 'r'}}}, // Korean
- LanguageCodeEntry {{}, {}, {}, {{'k', 'f', 'o'}}}, // Koro
- LanguageCodeEntry {{}, {}, {}, {{'s', 'e', 's'}}}, // Koyraboro Senni
- LanguageCodeEntry {{}, {}, {}, {{'k', 'h', 'q'}}}, // Koyra Chiini
- LanguageCodeEntry {{}, {{'k', 'p', 'e'}}, {{'k', 'p', 'e'}}, {{'k', 'p', 'e'}}}, // Kpelle
- LanguageCodeEntry {{{'k', 'j'}}, {{'k', 'u', 'a'}}, {{'k', 'u', 'a'}}, {{'k', 'u', 'a'}}}, // Kuanyama
- LanguageCodeEntry {{{'k', 'u'}}, {{'k', 'u', 'r'}}, {{'k', 'u', 'r'}}, {{'k', 'u', 'r'}}}, // Kurdish
- LanguageCodeEntry {{}, {}, {}, {{'n', 'm', 'g'}}}, // Kwasio
- LanguageCodeEntry {{{'k', 'y'}}, {{'k', 'i', 'r'}}, {{'k', 'i', 'r'}}, {{'k', 'i', 'r'}}}, // Kyrgyz
- LanguageCodeEntry {{}, {}, {}, {{'l', 'k', 't'}}}, // Lakota
- LanguageCodeEntry {{}, {}, {}, {{'l', 'a', 'g'}}}, // Langi
- LanguageCodeEntry {{{'l', 'o'}}, {{'l', 'a', 'o'}}, {{'l', 'a', 'o'}}, {{'l', 'a', 'o'}}}, // Lao
- LanguageCodeEntry {{{'l', 'a'}}, {{'l', 'a', 't'}}, {{'l', 'a', 't'}}, {{'l', 'a', 't'}}}, // Latin
- LanguageCodeEntry {{{'l', 'v'}}, {{'l', 'a', 'v'}}, {{'l', 'a', 'v'}}, {{'l', 'a', 'v'}}}, // Latvian
- LanguageCodeEntry {{}, {{'l', 'e', 'z'}}, {{'l', 'e', 'z'}}, {{'l', 'e', 'z'}}}, // Lezghian
- LanguageCodeEntry {{{'l', 'i'}}, {{'l', 'i', 'm'}}, {{'l', 'i', 'm'}}, {{'l', 'i', 'm'}}}, // Limburgish
- LanguageCodeEntry {{{'l', 'n'}}, {{'l', 'i', 'n'}}, {{'l', 'i', 'n'}}, {{'l', 'i', 'n'}}}, // Lingala
- LanguageCodeEntry {{}, {}, {}, {{'l', 'z', 'h'}}}, // Literary Chinese
- LanguageCodeEntry {{{'l', 't'}}, {{'l', 'i', 't'}}, {{'l', 'i', 't'}}, {{'l', 'i', 't'}}}, // Lithuanian
- LanguageCodeEntry {{}, {{'j', 'b', 'o'}}, {{'j', 'b', 'o'}}, {{'j', 'b', 'o'}}}, // Lojban
- LanguageCodeEntry {{}, {{'d', 's', 'b'}}, {{'d', 's', 'b'}}, {{'d', 's', 'b'}}}, // Lower Sorbian
- LanguageCodeEntry {{}, {{'n', 'd', 's'}}, {{'n', 'd', 's'}}, {{'n', 'd', 's'}}}, // Low German
- LanguageCodeEntry {{{'l', 'u'}}, {{'l', 'u', 'b'}}, {{'l', 'u', 'b'}}, {{'l', 'u', 'b'}}}, // Luba Katanga
- LanguageCodeEntry {{}, {{'s', 'm', 'j'}}, {{'s', 'm', 'j'}}, {{'s', 'm', 'j'}}}, // Lule Sami
- LanguageCodeEntry {{}, {{'l', 'u', 'o'}}, {{'l', 'u', 'o'}}, {{'l', 'u', 'o'}}}, // Luo
- LanguageCodeEntry {{{'l', 'b'}}, {{'l', 't', 'z'}}, {{'l', 't', 'z'}}, {{'l', 't', 'z'}}}, // Luxembourgish
- LanguageCodeEntry {{}, {}, {}, {{'l', 'u', 'y'}}}, // Luyia
- LanguageCodeEntry {{{'m', 'k'}}, {{'m', 'a', 'c'}}, {{'m', 'k', 'd'}}, {{'m', 'k', 'd'}}}, // Macedonian
- LanguageCodeEntry {{}, {}, {}, {{'j', 'm', 'c'}}}, // Machame
- LanguageCodeEntry {{}, {{'m', 'a', 'i'}}, {{'m', 'a', 'i'}}, {{'m', 'a', 'i'}}}, // Maithili
- LanguageCodeEntry {{}, {}, {}, {{'m', 'g', 'h'}}}, // Makhuwa Meetto
- LanguageCodeEntry {{}, {}, {}, {{'k', 'd', 'e'}}}, // Makonde
- LanguageCodeEntry {{{'m', 'g'}}, {{'m', 'l', 'g'}}, {{'m', 'l', 'g'}}, {{'m', 'l', 'g'}}}, // Malagasy
- LanguageCodeEntry {{{'m', 'l'}}, {{'m', 'a', 'l'}}, {{'m', 'a', 'l'}}, {{'m', 'a', 'l'}}}, // Malayalam
- LanguageCodeEntry {{{'m', 's'}}, {{'m', 'a', 'y'}}, {{'m', 's', 'a'}}, {{'m', 's', 'a'}}}, // Malay
- LanguageCodeEntry {{{'m', 't'}}, {{'m', 'l', 't'}}, {{'m', 'l', 't'}}, {{'m', 'l', 't'}}}, // Maltese
- LanguageCodeEntry {{}, {{'m', 'a', 'n'}}, {{'m', 'a', 'n'}}, {{'m', 'a', 'n'}}}, // Mandingo
- LanguageCodeEntry {{}, {{'m', 'n', 'i'}}, {{'m', 'n', 'i'}}, {{'m', 'n', 'i'}}}, // Manipuri
- LanguageCodeEntry {{{'g', 'v'}}, {{'g', 'l', 'v'}}, {{'g', 'l', 'v'}}, {{'g', 'l', 'v'}}}, // Manx
- LanguageCodeEntry {{{'m', 'i'}}, {{'m', 'a', 'o'}}, {{'m', 'r', 'i'}}, {{'m', 'r', 'i'}}}, // Maori
- LanguageCodeEntry {{}, {{'a', 'r', 'n'}}, {{'a', 'r', 'n'}}, {{'a', 'r', 'n'}}}, // Mapuche
- LanguageCodeEntry {{{'m', 'r'}}, {{'m', 'a', 'r'}}, {{'m', 'a', 'r'}}, {{'m', 'a', 'r'}}}, // Marathi
- LanguageCodeEntry {{{'m', 'h'}}, {{'m', 'a', 'h'}}, {{'m', 'a', 'h'}}, {{'m', 'a', 'h'}}}, // Marshallese
- LanguageCodeEntry {{}, {{'m', 'a', 's'}}, {{'m', 'a', 's'}}, {{'m', 'a', 's'}}}, // Masai
- LanguageCodeEntry {{}, {}, {}, {{'m', 'z', 'n'}}}, // Mazanderani
- LanguageCodeEntry {{}, {{'m', 'e', 'n'}}, {{'m', 'e', 'n'}}, {{'m', 'e', 'n'}}}, // Mende
- LanguageCodeEntry {{}, {}, {}, {{'m', 'e', 'r'}}}, // Meru
- LanguageCodeEntry {{}, {}, {}, {{'m', 'g', 'o'}}}, // Meta
- LanguageCodeEntry {{}, {{'m', 'o', 'h'}}, {{'m', 'o', 'h'}}, {{'m', 'o', 'h'}}}, // Mohawk
- LanguageCodeEntry {{{'m', 'n'}}, {{'m', 'o', 'n'}}, {{'m', 'o', 'n'}}, {{'m', 'o', 'n'}}}, // Mongolian
- LanguageCodeEntry {{}, {}, {}, {{'m', 'f', 'e'}}}, // Morisyen
- LanguageCodeEntry {{}, {}, {}, {{'m', 'u', 'a'}}}, // Mundang
- LanguageCodeEntry {{}, {{'m', 'u', 's'}}, {{'m', 'u', 's'}}, {{'m', 'u', 's'}}}, // Muscogee
- LanguageCodeEntry {{}, {}, {}, {{'n', 'a', 'q'}}}, // Nama
- LanguageCodeEntry {{{'n', 'a'}}, {{'n', 'a', 'u'}}, {{'n', 'a', 'u'}}, {{'n', 'a', 'u'}}}, // Nauru
- LanguageCodeEntry {{{'n', 'v'}}, {{'n', 'a', 'v'}}, {{'n', 'a', 'v'}}, {{'n', 'a', 'v'}}}, // Navajo
- LanguageCodeEntry {{{'n', 'g'}}, {{'n', 'd', 'o'}}, {{'n', 'd', 'o'}}, {{'n', 'd', 'o'}}}, // Ndonga
- LanguageCodeEntry {{{'n', 'e'}}, {{'n', 'e', 'p'}}, {{'n', 'e', 'p'}}, {{'n', 'e', 'p'}}}, // Nepali
- LanguageCodeEntry {{}, {{'n', 'e', 'w'}}, {{'n', 'e', 'w'}}, {{'n', 'e', 'w'}}}, // Newari
- LanguageCodeEntry {{}, {}, {}, {{'n', 'n', 'h'}}}, // Ngiemboon
- LanguageCodeEntry {{}, {}, {}, {{'j', 'g', 'o'}}}, // Ngomba
- LanguageCodeEntry {{}, {}, {}, {{'p', 'c', 'm'}}}, // Nigerian Pidgin
- LanguageCodeEntry {{}, {{'n', 'q', 'o'}}, {{'n', 'q', 'o'}}, {{'n', 'q', 'o'}}}, // Nko
- LanguageCodeEntry {{}, {}, {}, {{'l', 'r', 'c'}}}, // Northern Luri
- LanguageCodeEntry {{{'s', 'e'}}, {{'s', 'm', 'e'}}, {{'s', 'm', 'e'}}, {{'s', 'm', 'e'}}}, // Northern Sami
- LanguageCodeEntry {{}, {{'n', 's', 'o'}}, {{'n', 's', 'o'}}, {{'n', 's', 'o'}}}, // Northern Sotho
- LanguageCodeEntry {{{'n', 'd'}}, {{'n', 'd', 'e'}}, {{'n', 'd', 'e'}}, {{'n', 'd', 'e'}}}, // North Ndebele
- LanguageCodeEntry {{{'n', 'b'}}, {{'n', 'o', 'b'}}, {{'n', 'o', 'b'}}, {{'n', 'o', 'b'}}}, // Norwegian Bokmal
- LanguageCodeEntry {{{'n', 'n'}}, {{'n', 'n', 'o'}}, {{'n', 'n', 'o'}}, {{'n', 'n', 'o'}}}, // Norwegian Nynorsk
- LanguageCodeEntry {{}, {}, {}, {{'n', 'u', 's'}}}, // Nuer
- LanguageCodeEntry {{{'n', 'y'}}, {{'n', 'y', 'a'}}, {{'n', 'y', 'a'}}, {{'n', 'y', 'a'}}}, // Nyanja
- LanguageCodeEntry {{}, {{'n', 'y', 'n'}}, {{'n', 'y', 'n'}}, {{'n', 'y', 'n'}}}, // Nyankole
- LanguageCodeEntry {{{'o', 'c'}}, {{'o', 'c', 'i'}}, {{'o', 'c', 'i'}}, {{'o', 'c', 'i'}}}, // Occitan
- LanguageCodeEntry {{{'o', 'r'}}, {{'o', 'r', 'i'}}, {{'o', 'r', 'i'}}, {{'o', 'r', 'i'}}}, // Odia
- LanguageCodeEntry {{{'o', 'j'}}, {{'o', 'j', 'i'}}, {{'o', 'j', 'i'}}, {{'o', 'j', 'i'}}}, // Ojibwa
- LanguageCodeEntry {{}, {{'s', 'g', 'a'}}, {{'s', 'g', 'a'}}, {{'s', 'g', 'a'}}}, // Old Irish
- LanguageCodeEntry {{}, {{'n', 'o', 'n'}}, {{'n', 'o', 'n'}}, {{'n', 'o', 'n'}}}, // Old Norse
- LanguageCodeEntry {{}, {{'p', 'e', 'o'}}, {{'p', 'e', 'o'}}, {{'p', 'e', 'o'}}}, // Old Persian
- LanguageCodeEntry {{{'o', 'm'}}, {{'o', 'r', 'm'}}, {{'o', 'r', 'm'}}, {{'o', 'r', 'm'}}}, // Oromo
- LanguageCodeEntry {{}, {{'o', 's', 'a'}}, {{'o', 's', 'a'}}, {{'o', 's', 'a'}}}, // Osage
- LanguageCodeEntry {{{'o', 's'}}, {{'o', 's', 's'}}, {{'o', 's', 's'}}, {{'o', 's', 's'}}}, // Ossetic
- LanguageCodeEntry {{}, {{'p', 'a', 'l'}}, {{'p', 'a', 'l'}}, {{'p', 'a', 'l'}}}, // Pahlavi
- LanguageCodeEntry {{}, {{'p', 'a', 'u'}}, {{'p', 'a', 'u'}}, {{'p', 'a', 'u'}}}, // Palauan
- LanguageCodeEntry {{{'p', 'i'}}, {{'p', 'l', 'i'}}, {{'p', 'l', 'i'}}, {{'p', 'l', 'i'}}}, // Pali
- LanguageCodeEntry {{}, {{'p', 'a', 'p'}}, {{'p', 'a', 'p'}}, {{'p', 'a', 'p'}}}, // Papiamento
- LanguageCodeEntry {{{'p', 's'}}, {{'p', 'u', 's'}}, {{'p', 'u', 's'}}, {{'p', 'u', 's'}}}, // Pashto
- LanguageCodeEntry {{{'f', 'a'}}, {{'p', 'e', 'r'}}, {{'f', 'a', 's'}}, {{'f', 'a', 's'}}}, // Persian
- LanguageCodeEntry {{}, {{'p', 'h', 'n'}}, {{'p', 'h', 'n'}}, {{'p', 'h', 'n'}}}, // Phoenician
- LanguageCodeEntry {{{'p', 'l'}}, {{'p', 'o', 'l'}}, {{'p', 'o', 'l'}}, {{'p', 'o', 'l'}}}, // Polish
- LanguageCodeEntry {{{'p', 't'}}, {{'p', 'o', 'r'}}, {{'p', 'o', 'r'}}, {{'p', 'o', 'r'}}}, // Portuguese
- LanguageCodeEntry {{}, {}, {}, {{'p', 'r', 'g'}}}, // Prussian
- LanguageCodeEntry {{{'p', 'a'}}, {{'p', 'a', 'n'}}, {{'p', 'a', 'n'}}, {{'p', 'a', 'n'}}}, // Punjabi
- LanguageCodeEntry {{{'q', 'u'}}, {{'q', 'u', 'e'}}, {{'q', 'u', 'e'}}, {{'q', 'u', 'e'}}}, // Quechua
- LanguageCodeEntry {{{'r', 'o'}}, {{'r', 'u', 'm'}}, {{'r', 'o', 'n'}}, {{'r', 'o', 'n'}}}, // Romanian
- LanguageCodeEntry {{{'r', 'm'}}, {{'r', 'o', 'h'}}, {{'r', 'o', 'h'}}, {{'r', 'o', 'h'}}}, // Romansh
- LanguageCodeEntry {{}, {}, {}, {{'r', 'o', 'f'}}}, // Rombo
- LanguageCodeEntry {{{'r', 'n'}}, {{'r', 'u', 'n'}}, {{'r', 'u', 'n'}}, {{'r', 'u', 'n'}}}, // Rundi
- LanguageCodeEntry {{{'r', 'u'}}, {{'r', 'u', 's'}}, {{'r', 'u', 's'}}, {{'r', 'u', 's'}}}, // Russian
- LanguageCodeEntry {{}, {}, {}, {{'r', 'w', 'k'}}}, // Rwa
- LanguageCodeEntry {{}, {}, {}, {{'s', 's', 'y'}}}, // Saho
- LanguageCodeEntry {{}, {{'s', 'a', 'h'}}, {{'s', 'a', 'h'}}, {{'s', 'a', 'h'}}}, // Sakha
- LanguageCodeEntry {{}, {}, {}, {{'s', 'a', 'q'}}}, // Samburu
- LanguageCodeEntry {{{'s', 'm'}}, {{'s', 'm', 'o'}}, {{'s', 'm', 'o'}}, {{'s', 'm', 'o'}}}, // Samoan
- LanguageCodeEntry {{{'s', 'g'}}, {{'s', 'a', 'g'}}, {{'s', 'a', 'g'}}, {{'s', 'a', 'g'}}}, // Sango
- LanguageCodeEntry {{}, {}, {}, {{'s', 'b', 'p'}}}, // Sangu
- LanguageCodeEntry {{{'s', 'a'}}, {{'s', 'a', 'n'}}, {{'s', 'a', 'n'}}, {{'s', 'a', 'n'}}}, // Sanskrit
- LanguageCodeEntry {{}, {{'s', 'a', 't'}}, {{'s', 'a', 't'}}, {{'s', 'a', 't'}}}, // Santali
- LanguageCodeEntry {{{'s', 'c'}}, {{'s', 'r', 'd'}}, {{'s', 'r', 'd'}}, {{'s', 'r', 'd'}}}, // Sardinian
- LanguageCodeEntry {{}, {}, {}, {{'s', 'a', 'z'}}}, // Saurashtra
- LanguageCodeEntry {{}, {}, {}, {{'s', 'e', 'h'}}}, // Sena
- LanguageCodeEntry {{{'s', 'r'}}, {{'s', 'r', 'p'}}, {{'s', 'r', 'p'}}, {{'s', 'r', 'p'}}}, // Serbian
- LanguageCodeEntry {{}, {}, {}, {{'k', 's', 'b'}}}, // Shambala
- LanguageCodeEntry {{{'s', 'n'}}, {{'s', 'n', 'a'}}, {{'s', 'n', 'a'}}, {{'s', 'n', 'a'}}}, // Shona
- LanguageCodeEntry {{{'i', 'i'}}, {{'i', 'i', 'i'}}, {{'i', 'i', 'i'}}, {{'i', 'i', 'i'}}}, // Sichuan Yi
- LanguageCodeEntry {{}, {{'s', 'c', 'n'}}, {{'s', 'c', 'n'}}, {{'s', 'c', 'n'}}}, // Sicilian
- LanguageCodeEntry {{}, {{'s', 'i', 'd'}}, {{'s', 'i', 'd'}}, {{'s', 'i', 'd'}}}, // Sidamo
- LanguageCodeEntry {{}, {}, {}, {{'s', 'z', 'l'}}}, // Silesian
- LanguageCodeEntry {{{'s', 'd'}}, {{'s', 'n', 'd'}}, {{'s', 'n', 'd'}}, {{'s', 'n', 'd'}}}, // Sindhi
- LanguageCodeEntry {{{'s', 'i'}}, {{'s', 'i', 'n'}}, {{'s', 'i', 'n'}}, {{'s', 'i', 'n'}}}, // Sinhala
- LanguageCodeEntry {{}, {{'s', 'm', 's'}}, {{'s', 'm', 's'}}, {{'s', 'm', 's'}}}, // Skolt Sami
- LanguageCodeEntry {{{'s', 'k'}}, {{'s', 'l', 'o'}}, {{'s', 'l', 'k'}}, {{'s', 'l', 'k'}}}, // Slovak
- LanguageCodeEntry {{{'s', 'l'}}, {{'s', 'l', 'v'}}, {{'s', 'l', 'v'}}, {{'s', 'l', 'v'}}}, // Slovenian
- LanguageCodeEntry {{}, {}, {}, {{'x', 'o', 'g'}}}, // Soga
- LanguageCodeEntry {{{'s', 'o'}}, {{'s', 'o', 'm'}}, {{'s', 'o', 'm'}}, {{'s', 'o', 'm'}}}, // Somali
- LanguageCodeEntry {{}, {}, {}, {{'s', 'd', 'h'}}}, // Southern Kurdish
- LanguageCodeEntry {{}, {{'s', 'm', 'a'}}, {{'s', 'm', 'a'}}, {{'s', 'm', 'a'}}}, // Southern Sami
- LanguageCodeEntry {{{'s', 't'}}, {{'s', 'o', 't'}}, {{'s', 'o', 't'}}, {{'s', 'o', 't'}}}, // Southern Sotho
- LanguageCodeEntry {{{'n', 'r'}}, {{'n', 'b', 'l'}}, {{'n', 'b', 'l'}}, {{'n', 'b', 'l'}}}, // South Ndebele
- LanguageCodeEntry {{{'e', 's'}}, {{'s', 'p', 'a'}}, {{'s', 'p', 'a'}}, {{'s', 'p', 'a'}}}, // Spanish
- LanguageCodeEntry {{}, {{'z', 'g', 'h'}}, {{'z', 'g', 'h'}}, {{'z', 'g', 'h'}}}, // Standard Moroccan Tamazight
- LanguageCodeEntry {{{'s', 'u'}}, {{'s', 'u', 'n'}}, {{'s', 'u', 'n'}}, {{'s', 'u', 'n'}}}, // Sundanese
- LanguageCodeEntry {{{'s', 'w'}}, {{'s', 'w', 'a'}}, {{'s', 'w', 'a'}}, {{'s', 'w', 'a'}}}, // Swahili
- LanguageCodeEntry {{{'s', 's'}}, {{'s', 's', 'w'}}, {{'s', 's', 'w'}}, {{'s', 's', 'w'}}}, // Swati
- LanguageCodeEntry {{{'s', 'v'}}, {{'s', 'w', 'e'}}, {{'s', 'w', 'e'}}, {{'s', 'w', 'e'}}}, // Swedish
- LanguageCodeEntry {{}, {{'g', 's', 'w'}}, {{'g', 's', 'w'}}, {{'g', 's', 'w'}}}, // Swiss German
- LanguageCodeEntry {{}, {{'s', 'y', 'r'}}, {{'s', 'y', 'r'}}, {{'s', 'y', 'r'}}}, // Syriac
- LanguageCodeEntry {{}, {}, {}, {{'s', 'h', 'i'}}}, // Tachelhit
- LanguageCodeEntry {{{'t', 'y'}}, {{'t', 'a', 'h'}}, {{'t', 'a', 'h'}}, {{'t', 'a', 'h'}}}, // Tahitian
- LanguageCodeEntry {{}, {}, {}, {{'b', 'l', 't'}}}, // Tai Dam
- LanguageCodeEntry {{}, {}, {}, {{'d', 'a', 'v'}}}, // Taita
- LanguageCodeEntry {{{'t', 'g'}}, {{'t', 'g', 'k'}}, {{'t', 'g', 'k'}}, {{'t', 'g', 'k'}}}, // Tajik
- LanguageCodeEntry {{{'t', 'a'}}, {{'t', 'a', 'm'}}, {{'t', 'a', 'm'}}, {{'t', 'a', 'm'}}}, // Tamil
- LanguageCodeEntry {{}, {}, {}, {{'t', 'r', 'v'}}}, // Taroko
- LanguageCodeEntry {{}, {}, {}, {{'t', 'w', 'q'}}}, // Tasawaq
- LanguageCodeEntry {{{'t', 't'}}, {{'t', 'a', 't'}}, {{'t', 'a', 't'}}, {{'t', 'a', 't'}}}, // Tatar
- LanguageCodeEntry {{{'t', 'e'}}, {{'t', 'e', 'l'}}, {{'t', 'e', 'l'}}, {{'t', 'e', 'l'}}}, // Telugu
- LanguageCodeEntry {{}, {}, {}, {{'t', 'e', 'o'}}}, // Teso
- LanguageCodeEntry {{{'t', 'h'}}, {{'t', 'h', 'a'}}, {{'t', 'h', 'a'}}, {{'t', 'h', 'a'}}}, // Thai
- LanguageCodeEntry {{{'b', 'o'}}, {{'t', 'i', 'b'}}, {{'b', 'o', 'd'}}, {{'b', 'o', 'd'}}}, // Tibetan
- LanguageCodeEntry {{}, {{'t', 'i', 'g'}}, {{'t', 'i', 'g'}}, {{'t', 'i', 'g'}}}, // Tigre
- LanguageCodeEntry {{{'t', 'i'}}, {{'t', 'i', 'r'}}, {{'t', 'i', 'r'}}, {{'t', 'i', 'r'}}}, // Tigrinya
- LanguageCodeEntry {{}, {{'t', 'k', 'l'}}, {{'t', 'k', 'l'}}, {{'t', 'k', 'l'}}}, // Tokelau
- LanguageCodeEntry {{}, {{'t', 'p', 'i'}}, {{'t', 'p', 'i'}}, {{'t', 'p', 'i'}}}, // Tok Pisin
- LanguageCodeEntry {{{'t', 'o'}}, {{'t', 'o', 'n'}}, {{'t', 'o', 'n'}}, {{'t', 'o', 'n'}}}, // Tongan
- LanguageCodeEntry {{{'t', 's'}}, {{'t', 's', 'o'}}, {{'t', 's', 'o'}}, {{'t', 's', 'o'}}}, // Tsonga
- LanguageCodeEntry {{{'t', 'n'}}, {{'t', 's', 'n'}}, {{'t', 's', 'n'}}, {{'t', 's', 'n'}}}, // Tswana
- LanguageCodeEntry {{{'t', 'r'}}, {{'t', 'u', 'r'}}, {{'t', 'u', 'r'}}, {{'t', 'u', 'r'}}}, // Turkish
- LanguageCodeEntry {{{'t', 'k'}}, {{'t', 'u', 'k'}}, {{'t', 'u', 'k'}}, {{'t', 'u', 'k'}}}, // Turkmen
- LanguageCodeEntry {{}, {{'t', 'v', 'l'}}, {{'t', 'v', 'l'}}, {{'t', 'v', 'l'}}}, // Tuvalu
- LanguageCodeEntry {{}, {}, {}, {{'k', 'c', 'g'}}}, // Tyap
- LanguageCodeEntry {{}, {{'u', 'g', 'a'}}, {{'u', 'g', 'a'}}, {{'u', 'g', 'a'}}}, // Ugaritic
- LanguageCodeEntry {{{'u', 'k'}}, {{'u', 'k', 'r'}}, {{'u', 'k', 'r'}}, {{'u', 'k', 'r'}}}, // Ukrainian
- LanguageCodeEntry {{}, {{'h', 's', 'b'}}, {{'h', 's', 'b'}}, {{'h', 's', 'b'}}}, // Upper Sorbian
- LanguageCodeEntry {{{'u', 'r'}}, {{'u', 'r', 'd'}}, {{'u', 'r', 'd'}}, {{'u', 'r', 'd'}}}, // Urdu
- LanguageCodeEntry {{{'u', 'g'}}, {{'u', 'i', 'g'}}, {{'u', 'i', 'g'}}, {{'u', 'i', 'g'}}}, // Uyghur
- LanguageCodeEntry {{{'u', 'z'}}, {{'u', 'z', 'b'}}, {{'u', 'z', 'b'}}, {{'u', 'z', 'b'}}}, // Uzbek
- LanguageCodeEntry {{}, {{'v', 'a', 'i'}}, {{'v', 'a', 'i'}}, {{'v', 'a', 'i'}}}, // Vai
- LanguageCodeEntry {{{'v', 'e'}}, {{'v', 'e', 'n'}}, {{'v', 'e', 'n'}}, {{'v', 'e', 'n'}}}, // Venda
- LanguageCodeEntry {{{'v', 'i'}}, {{'v', 'i', 'e'}}, {{'v', 'i', 'e'}}, {{'v', 'i', 'e'}}}, // Vietnamese
- LanguageCodeEntry {{{'v', 'o'}}, {{'v', 'o', 'l'}}, {{'v', 'o', 'l'}}, {{'v', 'o', 'l'}}}, // Volapuk
- LanguageCodeEntry {{}, {}, {}, {{'v', 'u', 'n'}}}, // Vunjo
- LanguageCodeEntry {{{'w', 'a'}}, {{'w', 'l', 'n'}}, {{'w', 'l', 'n'}}, {{'w', 'l', 'n'}}}, // Walloon
- LanguageCodeEntry {{}, {}, {}, {{'w', 'a', 'e'}}}, // Walser
- LanguageCodeEntry {{}, {}, {}, {{'w', 'b', 'p'}}}, // Warlpiri
- LanguageCodeEntry {{{'c', 'y'}}, {{'w', 'e', 'l'}}, {{'c', 'y', 'm'}}, {{'c', 'y', 'm'}}}, // Welsh
- LanguageCodeEntry {{}, {}, {}, {{'b', 'g', 'n'}}}, // Western Balochi
- LanguageCodeEntry {{{'f', 'y'}}, {{'f', 'r', 'y'}}, {{'f', 'r', 'y'}}, {{'f', 'r', 'y'}}}, // Western Frisian
- LanguageCodeEntry {{}, {{'w', 'a', 'l'}}, {{'w', 'a', 'l'}}, {{'w', 'a', 'l'}}}, // Wolaytta
- LanguageCodeEntry {{{'w', 'o'}}, {{'w', 'o', 'l'}}, {{'w', 'o', 'l'}}, {{'w', 'o', 'l'}}}, // Wolof
- LanguageCodeEntry {{{'x', 'h'}}, {{'x', 'h', 'o'}}, {{'x', 'h', 'o'}}, {{'x', 'h', 'o'}}}, // Xhosa
- LanguageCodeEntry {{}, {}, {}, {{'y', 'a', 'v'}}}, // Yangben
- LanguageCodeEntry {{{'y', 'i'}}, {{'y', 'i', 'd'}}, {{'y', 'i', 'd'}}, {{'y', 'i', 'd'}}}, // Yiddish
- LanguageCodeEntry {{{'y', 'o'}}, {{'y', 'o', 'r'}}, {{'y', 'o', 'r'}}, {{'y', 'o', 'r'}}}, // Yoruba
- LanguageCodeEntry {{}, {}, {}, {{'d', 'j', 'e'}}}, // Zarma
- LanguageCodeEntry {{{'z', 'a'}}, {{'z', 'h', 'a'}}, {{'z', 'h', 'a'}}, {{'z', 'h', 'a'}}}, // Zhuang
- LanguageCodeEntry {{{'z', 'u'}}, {{'z', 'u', 'l'}}, {{'z', 'u', 'l'}}, {{'z', 'u', 'l'}}}, // Zulu
- LanguageCodeEntry {{}, {}, {}, {{'k', 'g', 'p'}}}, // Kaingang
- LanguageCodeEntry {{}, {}, {}, {{'y', 'r', 'l'}}}, // Nheengatu
+constexpr std::array<LanguageCodeEntry, 344> languageCodeList {
+ LanguageCodeEntry {{}, {'u', 'n', 'd'}, {'u', 'n', 'd'}, {'u', 'n', 'd'}}, // AnyLanguage
+ LanguageCodeEntry {{}, {'u', 'n', 'd'}, {'u', 'n', 'd'}, {'u', 'n', 'd'}}, // C
+ LanguageCodeEntry {{'a', 'b'}, {'a', 'b', 'k'}, {'a', 'b', 'k'}, {'a', 'b', 'k'}}, // Abkhazian
+ LanguageCodeEntry {{'a', 'a'}, {'a', 'a', 'r'}, {'a', 'a', 'r'}, {'a', 'a', 'r'}}, // Afar
+ LanguageCodeEntry {{'a', 'f'}, {'a', 'f', 'r'}, {'a', 'f', 'r'}, {'a', 'f', 'r'}}, // Afrikaans
+ LanguageCodeEntry {{}, {}, {}, {'a', 'g', 'q'}}, // Aghem
+ LanguageCodeEntry {{'a', 'k'}, {'a', 'k', 'a'}, {'a', 'k', 'a'}, {'a', 'k', 'a'}}, // Akan
+ LanguageCodeEntry {{}, {'a', 'k', 'k'}, {'a', 'k', 'k'}, {'a', 'k', 'k'}}, // Akkadian
+ LanguageCodeEntry {{}, {}, {}, {'b', 's', 's'}}, // Akoose
+ LanguageCodeEntry {{'s', 'q'}, {'a', 'l', 'b'}, {'s', 'q', 'i'}, {'s', 'q', 'i'}}, // Albanian
+ LanguageCodeEntry {{}, {}, {}, {'a', 's', 'e'}}, // American Sign Language
+ LanguageCodeEntry {{'a', 'm'}, {'a', 'm', 'h'}, {'a', 'm', 'h'}, {'a', 'm', 'h'}}, // Amharic
+ LanguageCodeEntry {{}, {'e', 'g', 'y'}, {'e', 'g', 'y'}, {'e', 'g', 'y'}}, // Ancient Egyptian
+ LanguageCodeEntry {{}, {'g', 'r', 'c'}, {'g', 'r', 'c'}, {'g', 'r', 'c'}}, // Ancient Greek
+ LanguageCodeEntry {{'a', 'r'}, {'a', 'r', 'a'}, {'a', 'r', 'a'}, {'a', 'r', 'a'}}, // Arabic
+ LanguageCodeEntry {{'a', 'n'}, {'a', 'r', 'g'}, {'a', 'r', 'g'}, {'a', 'r', 'g'}}, // Aragonese
+ LanguageCodeEntry {{}, {'a', 'r', 'c'}, {'a', 'r', 'c'}, {'a', 'r', 'c'}}, // Aramaic
+ LanguageCodeEntry {{'h', 'y'}, {'a', 'r', 'm'}, {'h', 'y', 'e'}, {'h', 'y', 'e'}}, // Armenian
+ LanguageCodeEntry {{'a', 's'}, {'a', 's', 'm'}, {'a', 's', 'm'}, {'a', 's', 'm'}}, // Assamese
+ LanguageCodeEntry {{}, {'a', 's', 't'}, {'a', 's', 't'}, {'a', 's', 't'}}, // Asturian
+ LanguageCodeEntry {{}, {}, {}, {'a', 's', 'a'}}, // Asu
+ LanguageCodeEntry {{}, {}, {}, {'c', 'c', 'h'}}, // Atsam
+ LanguageCodeEntry {{'a', 'v'}, {'a', 'v', 'a'}, {'a', 'v', 'a'}, {'a', 'v', 'a'}}, // Avaric
+ LanguageCodeEntry {{'a', 'e'}, {'a', 'v', 'e'}, {'a', 'v', 'e'}, {'a', 'v', 'e'}}, // Avestan
+ LanguageCodeEntry {{'a', 'y'}, {'a', 'y', 'm'}, {'a', 'y', 'm'}, {'a', 'y', 'm'}}, // Aymara
+ LanguageCodeEntry {{'a', 'z'}, {'a', 'z', 'e'}, {'a', 'z', 'e'}, {'a', 'z', 'e'}}, // Azerbaijani
+ LanguageCodeEntry {{}, {}, {}, {'k', 's', 'f'}}, // Bafia
+ LanguageCodeEntry {{}, {'b', 'a', 'n'}, {'b', 'a', 'n'}, {'b', 'a', 'n'}}, // Balinese
+ LanguageCodeEntry {{'b', 'm'}, {'b', 'a', 'm'}, {'b', 'a', 'm'}, {'b', 'a', 'm'}}, // Bambara
+ LanguageCodeEntry {{}, {}, {}, {'b', 'a', 'x'}}, // Bamun
+ LanguageCodeEntry {{'b', 'n'}, {'b', 'e', 'n'}, {'b', 'e', 'n'}, {'b', 'e', 'n'}}, // Bangla
+ LanguageCodeEntry {{}, {'b', 'a', 's'}, {'b', 'a', 's'}, {'b', 'a', 's'}}, // Basaa
+ LanguageCodeEntry {{'b', 'a'}, {'b', 'a', 'k'}, {'b', 'a', 'k'}, {'b', 'a', 'k'}}, // Bashkir
+ LanguageCodeEntry {{'e', 'u'}, {'b', 'a', 'q'}, {'e', 'u', 's'}, {'e', 'u', 's'}}, // Basque
+ LanguageCodeEntry {{}, {}, {}, {'b', 'b', 'c'}}, // Batak Toba
+ LanguageCodeEntry {{'b', 'e'}, {'b', 'e', 'l'}, {'b', 'e', 'l'}, {'b', 'e', 'l'}}, // Belarusian
+ LanguageCodeEntry {{}, {'b', 'e', 'm'}, {'b', 'e', 'm'}, {'b', 'e', 'm'}}, // Bemba
+ LanguageCodeEntry {{}, {}, {}, {'b', 'e', 'z'}}, // Bena
+ LanguageCodeEntry {{}, {'b', 'h', 'o'}, {'b', 'h', 'o'}, {'b', 'h', 'o'}}, // Bhojpuri
+ LanguageCodeEntry {{'b', 'i'}, {'b', 'i', 's'}, {'b', 'i', 's'}, {'b', 'i', 's'}}, // Bislama
+ LanguageCodeEntry {{}, {'b', 'y', 'n'}, {'b', 'y', 'n'}, {'b', 'y', 'n'}}, // Blin
+ LanguageCodeEntry {{}, {}, {}, {'b', 'r', 'x'}}, // Bodo
+ LanguageCodeEntry {{'b', 's'}, {'b', 'o', 's'}, {'b', 'o', 's'}, {'b', 'o', 's'}}, // Bosnian
+ LanguageCodeEntry {{'b', 'r'}, {'b', 'r', 'e'}, {'b', 'r', 'e'}, {'b', 'r', 'e'}}, // Breton
+ LanguageCodeEntry {{}, {'b', 'u', 'g'}, {'b', 'u', 'g'}, {'b', 'u', 'g'}}, // Buginese
+ LanguageCodeEntry {{'b', 'g'}, {'b', 'u', 'l'}, {'b', 'u', 'l'}, {'b', 'u', 'l'}}, // Bulgarian
+ LanguageCodeEntry {{'m', 'y'}, {'b', 'u', 'r'}, {'m', 'y', 'a'}, {'m', 'y', 'a'}}, // Burmese
+ LanguageCodeEntry {{}, {}, {}, {'y', 'u', 'e'}}, // Cantonese
+ LanguageCodeEntry {{'c', 'a'}, {'c', 'a', 't'}, {'c', 'a', 't'}, {'c', 'a', 't'}}, // Catalan
+ LanguageCodeEntry {{}, {'c', 'e', 'b'}, {'c', 'e', 'b'}, {'c', 'e', 'b'}}, // Cebuano
+ LanguageCodeEntry {{}, {}, {}, {'t', 'z', 'm'}}, // Central Atlas Tamazight
+ LanguageCodeEntry {{}, {}, {}, {'c', 'k', 'b'}}, // Central Kurdish
+ LanguageCodeEntry {{}, {}, {}, {'c', 'c', 'p'}}, // Chakma
+ LanguageCodeEntry {{'c', 'h'}, {'c', 'h', 'a'}, {'c', 'h', 'a'}, {'c', 'h', 'a'}}, // Chamorro
+ LanguageCodeEntry {{'c', 'e'}, {'c', 'h', 'e'}, {'c', 'h', 'e'}, {'c', 'h', 'e'}}, // Chechen
+ LanguageCodeEntry {{}, {'c', 'h', 'r'}, {'c', 'h', 'r'}, {'c', 'h', 'r'}}, // Cherokee
+ LanguageCodeEntry {{}, {}, {}, {'c', 'i', 'c'}}, // Chickasaw
+ LanguageCodeEntry {{}, {}, {}, {'c', 'g', 'g'}}, // Chiga
+ LanguageCodeEntry {{'z', 'h'}, {'c', 'h', 'i'}, {'z', 'h', 'o'}, {'z', 'h', 'o'}}, // Chinese
+ LanguageCodeEntry {{'c', 'u'}, {'c', 'h', 'u'}, {'c', 'h', 'u'}, {'c', 'h', 'u'}}, // Church
+ LanguageCodeEntry {{'c', 'v'}, {'c', 'h', 'v'}, {'c', 'h', 'v'}, {'c', 'h', 'v'}}, // Chuvash
+ LanguageCodeEntry {{}, {}, {}, {'k', 's', 'h'}}, // Colognian
+ LanguageCodeEntry {{}, {'c', 'o', 'p'}, {'c', 'o', 'p'}, {'c', 'o', 'p'}}, // Coptic
+ LanguageCodeEntry {{'k', 'w'}, {'c', 'o', 'r'}, {'c', 'o', 'r'}, {'c', 'o', 'r'}}, // Cornish
+ LanguageCodeEntry {{'c', 'o'}, {'c', 'o', 's'}, {'c', 'o', 's'}, {'c', 'o', 's'}}, // Corsican
+ LanguageCodeEntry {{'c', 'r'}, {'c', 'r', 'e'}, {'c', 'r', 'e'}, {'c', 'r', 'e'}}, // Cree
+ LanguageCodeEntry {{'h', 'r'}, {'h', 'r', 'v'}, {'h', 'r', 'v'}, {'h', 'r', 'v'}}, // Croatian
+ LanguageCodeEntry {{'c', 's'}, {'c', 'z', 'e'}, {'c', 'e', 's'}, {'c', 'e', 's'}}, // Czech
+ LanguageCodeEntry {{'d', 'a'}, {'d', 'a', 'n'}, {'d', 'a', 'n'}, {'d', 'a', 'n'}}, // Danish
+ LanguageCodeEntry {{'d', 'v'}, {'d', 'i', 'v'}, {'d', 'i', 'v'}, {'d', 'i', 'v'}}, // Divehi
+ LanguageCodeEntry {{}, {'d', 'o', 'i'}, {'d', 'o', 'i'}, {'d', 'o', 'i'}}, // Dogri
+ LanguageCodeEntry {{}, {'d', 'u', 'a'}, {'d', 'u', 'a'}, {'d', 'u', 'a'}}, // Duala
+ LanguageCodeEntry {{'n', 'l'}, {'d', 'u', 't'}, {'n', 'l', 'd'}, {'n', 'l', 'd'}}, // Dutch
+ LanguageCodeEntry {{'d', 'z'}, {'d', 'z', 'o'}, {'d', 'z', 'o'}, {'d', 'z', 'o'}}, // Dzongkha
+ LanguageCodeEntry {{}, {}, {}, {'e', 'b', 'u'}}, // Embu
+ LanguageCodeEntry {{'e', 'n'}, {'e', 'n', 'g'}, {'e', 'n', 'g'}, {'e', 'n', 'g'}}, // English
+ LanguageCodeEntry {{}, {'m', 'y', 'v'}, {'m', 'y', 'v'}, {'m', 'y', 'v'}}, // Erzya
+ LanguageCodeEntry {{'e', 'o'}, {'e', 'p', 'o'}, {'e', 'p', 'o'}, {'e', 'p', 'o'}}, // Esperanto
+ LanguageCodeEntry {{'e', 't'}, {'e', 's', 't'}, {'e', 's', 't'}, {'e', 's', 't'}}, // Estonian
+ LanguageCodeEntry {{'e', 'e'}, {'e', 'w', 'e'}, {'e', 'w', 'e'}, {'e', 'w', 'e'}}, // Ewe
+ LanguageCodeEntry {{}, {'e', 'w', 'o'}, {'e', 'w', 'o'}, {'e', 'w', 'o'}}, // Ewondo
+ LanguageCodeEntry {{'f', 'o'}, {'f', 'a', 'o'}, {'f', 'a', 'o'}, {'f', 'a', 'o'}}, // Faroese
+ LanguageCodeEntry {{'f', 'j'}, {'f', 'i', 'j'}, {'f', 'i', 'j'}, {'f', 'i', 'j'}}, // Fijian
+ LanguageCodeEntry {{}, {'f', 'i', 'l'}, {'f', 'i', 'l'}, {'f', 'i', 'l'}}, // Filipino
+ LanguageCodeEntry {{'f', 'i'}, {'f', 'i', 'n'}, {'f', 'i', 'n'}, {'f', 'i', 'n'}}, // Finnish
+ LanguageCodeEntry {{'f', 'r'}, {'f', 'r', 'e'}, {'f', 'r', 'a'}, {'f', 'r', 'a'}}, // French
+ LanguageCodeEntry {{}, {'f', 'u', 'r'}, {'f', 'u', 'r'}, {'f', 'u', 'r'}}, // Friulian
+ LanguageCodeEntry {{'f', 'f'}, {'f', 'u', 'l'}, {'f', 'u', 'l'}, {'f', 'u', 'l'}}, // Fulah
+ LanguageCodeEntry {{'g', 'd'}, {'g', 'l', 'a'}, {'g', 'l', 'a'}, {'g', 'l', 'a'}}, // Gaelic
+ LanguageCodeEntry {{}, {'g', 'a', 'a'}, {'g', 'a', 'a'}, {'g', 'a', 'a'}}, // Ga
+ LanguageCodeEntry {{'g', 'l'}, {'g', 'l', 'g'}, {'g', 'l', 'g'}, {'g', 'l', 'g'}}, // Galician
+ LanguageCodeEntry {{'l', 'g'}, {'l', 'u', 'g'}, {'l', 'u', 'g'}, {'l', 'u', 'g'}}, // Ganda
+ LanguageCodeEntry {{}, {'g', 'e', 'z'}, {'g', 'e', 'z'}, {'g', 'e', 'z'}}, // Geez
+ LanguageCodeEntry {{'k', 'a'}, {'g', 'e', 'o'}, {'k', 'a', 't'}, {'k', 'a', 't'}}, // Georgian
+ LanguageCodeEntry {{'d', 'e'}, {'g', 'e', 'r'}, {'d', 'e', 'u'}, {'d', 'e', 'u'}}, // German
+ LanguageCodeEntry {{}, {'g', 'o', 't'}, {'g', 'o', 't'}, {'g', 'o', 't'}}, // Gothic
+ LanguageCodeEntry {{'e', 'l'}, {'g', 'r', 'e'}, {'e', 'l', 'l'}, {'e', 'l', 'l'}}, // Greek
+ LanguageCodeEntry {{'g', 'n'}, {'g', 'r', 'n'}, {'g', 'r', 'n'}, {'g', 'r', 'n'}}, // Guarani
+ LanguageCodeEntry {{'g', 'u'}, {'g', 'u', 'j'}, {'g', 'u', 'j'}, {'g', 'u', 'j'}}, // Gujarati
+ LanguageCodeEntry {{}, {}, {}, {'g', 'u', 'z'}}, // Gusii
+ LanguageCodeEntry {{'h', 't'}, {'h', 'a', 't'}, {'h', 'a', 't'}, {'h', 'a', 't'}}, // Haitian
+ LanguageCodeEntry {{'h', 'a'}, {'h', 'a', 'u'}, {'h', 'a', 'u'}, {'h', 'a', 'u'}}, // Hausa
+ LanguageCodeEntry {{}, {'h', 'a', 'w'}, {'h', 'a', 'w'}, {'h', 'a', 'w'}}, // Hawaiian
+ LanguageCodeEntry {{'h', 'e'}, {'h', 'e', 'b'}, {'h', 'e', 'b'}, {'h', 'e', 'b'}}, // Hebrew
+ LanguageCodeEntry {{'h', 'z'}, {'h', 'e', 'r'}, {'h', 'e', 'r'}, {'h', 'e', 'r'}}, // Herero
+ LanguageCodeEntry {{'h', 'i'}, {'h', 'i', 'n'}, {'h', 'i', 'n'}, {'h', 'i', 'n'}}, // Hindi
+ LanguageCodeEntry {{'h', 'o'}, {'h', 'm', 'o'}, {'h', 'm', 'o'}, {'h', 'm', 'o'}}, // Hiri Motu
+ LanguageCodeEntry {{'h', 'u'}, {'h', 'u', 'n'}, {'h', 'u', 'n'}, {'h', 'u', 'n'}}, // Hungarian
+ LanguageCodeEntry {{'i', 's'}, {'i', 'c', 'e'}, {'i', 's', 'l'}, {'i', 's', 'l'}}, // Icelandic
+ LanguageCodeEntry {{'i', 'o'}, {'i', 'd', 'o'}, {'i', 'd', 'o'}, {'i', 'd', 'o'}}, // Ido
+ LanguageCodeEntry {{'i', 'g'}, {'i', 'b', 'o'}, {'i', 'b', 'o'}, {'i', 'b', 'o'}}, // Igbo
+ LanguageCodeEntry {{}, {'s', 'm', 'n'}, {'s', 'm', 'n'}, {'s', 'm', 'n'}}, // Inari Sami
+ LanguageCodeEntry {{'i', 'd'}, {'i', 'n', 'd'}, {'i', 'n', 'd'}, {'i', 'n', 'd'}}, // Indonesian
+ LanguageCodeEntry {{}, {'i', 'n', 'h'}, {'i', 'n', 'h'}, {'i', 'n', 'h'}}, // Ingush
+ LanguageCodeEntry {{'i', 'a'}, {'i', 'n', 'a'}, {'i', 'n', 'a'}, {'i', 'n', 'a'}}, // Interlingua
+ LanguageCodeEntry {{'i', 'e'}, {'i', 'l', 'e'}, {'i', 'l', 'e'}, {'i', 'l', 'e'}}, // Interlingue
+ LanguageCodeEntry {{'i', 'u'}, {'i', 'k', 'u'}, {'i', 'k', 'u'}, {'i', 'k', 'u'}}, // Inuktitut
+ LanguageCodeEntry {{'i', 'k'}, {'i', 'p', 'k'}, {'i', 'p', 'k'}, {'i', 'p', 'k'}}, // Inupiaq
+ LanguageCodeEntry {{'g', 'a'}, {'g', 'l', 'e'}, {'g', 'l', 'e'}, {'g', 'l', 'e'}}, // Irish
+ LanguageCodeEntry {{'i', 't'}, {'i', 't', 'a'}, {'i', 't', 'a'}, {'i', 't', 'a'}}, // Italian
+ LanguageCodeEntry {{'j', 'a'}, {'j', 'p', 'n'}, {'j', 'p', 'n'}, {'j', 'p', 'n'}}, // Japanese
+ LanguageCodeEntry {{'j', 'v'}, {'j', 'a', 'v'}, {'j', 'a', 'v'}, {'j', 'a', 'v'}}, // Javanese
+ LanguageCodeEntry {{}, {}, {}, {'k', 'a', 'j'}}, // Jju
+ LanguageCodeEntry {{}, {}, {}, {'d', 'y', 'o'}}, // Jola-Fonyi
+ LanguageCodeEntry {{}, {}, {}, {'k', 'e', 'a'}}, // Kabuverdianu
+ LanguageCodeEntry {{}, {'k', 'a', 'b'}, {'k', 'a', 'b'}, {'k', 'a', 'b'}}, // Kabyle
+ LanguageCodeEntry {{}, {}, {}, {'k', 'k', 'j'}}, // Kako
+ LanguageCodeEntry {{'k', 'l'}, {'k', 'a', 'l'}, {'k', 'a', 'l'}, {'k', 'a', 'l'}}, // Kalaallisut
+ LanguageCodeEntry {{}, {}, {}, {'k', 'l', 'n'}}, // Kalenjin
+ LanguageCodeEntry {{}, {'k', 'a', 'm'}, {'k', 'a', 'm'}, {'k', 'a', 'm'}}, // Kamba
+ LanguageCodeEntry {{'k', 'n'}, {'k', 'a', 'n'}, {'k', 'a', 'n'}, {'k', 'a', 'n'}}, // Kannada
+ LanguageCodeEntry {{'k', 'r'}, {'k', 'a', 'u'}, {'k', 'a', 'u'}, {'k', 'a', 'u'}}, // Kanuri
+ LanguageCodeEntry {{'k', 's'}, {'k', 'a', 's'}, {'k', 'a', 's'}, {'k', 'a', 's'}}, // Kashmiri
+ LanguageCodeEntry {{'k', 'k'}, {'k', 'a', 'z'}, {'k', 'a', 'z'}, {'k', 'a', 'z'}}, // Kazakh
+ LanguageCodeEntry {{}, {}, {}, {'k', 'e', 'n'}}, // Kenyang
+ LanguageCodeEntry {{'k', 'm'}, {'k', 'h', 'm'}, {'k', 'h', 'm'}, {'k', 'h', 'm'}}, // Khmer
+ LanguageCodeEntry {{}, {}, {}, {'q', 'u', 'c'}}, // Kiche
+ LanguageCodeEntry {{'k', 'i'}, {'k', 'i', 'k'}, {'k', 'i', 'k'}, {'k', 'i', 'k'}}, // Kikuyu
+ LanguageCodeEntry {{'r', 'w'}, {'k', 'i', 'n'}, {'k', 'i', 'n'}, {'k', 'i', 'n'}}, // Kinyarwanda
+ LanguageCodeEntry {{'k', 'v'}, {'k', 'o', 'm'}, {'k', 'o', 'm'}, {'k', 'o', 'm'}}, // Komi
+ LanguageCodeEntry {{'k', 'g'}, {'k', 'o', 'n'}, {'k', 'o', 'n'}, {'k', 'o', 'n'}}, // Kongo
+ LanguageCodeEntry {{}, {'k', 'o', 'k'}, {'k', 'o', 'k'}, {'k', 'o', 'k'}}, // Konkani
+ LanguageCodeEntry {{'k', 'o'}, {'k', 'o', 'r'}, {'k', 'o', 'r'}, {'k', 'o', 'r'}}, // Korean
+ LanguageCodeEntry {{}, {}, {}, {'k', 'f', 'o'}}, // Koro
+ LanguageCodeEntry {{}, {}, {}, {'s', 'e', 's'}}, // Koyraboro Senni
+ LanguageCodeEntry {{}, {}, {}, {'k', 'h', 'q'}}, // Koyra Chiini
+ LanguageCodeEntry {{}, {'k', 'p', 'e'}, {'k', 'p', 'e'}, {'k', 'p', 'e'}}, // Kpelle
+ LanguageCodeEntry {{'k', 'j'}, {'k', 'u', 'a'}, {'k', 'u', 'a'}, {'k', 'u', 'a'}}, // Kuanyama
+ LanguageCodeEntry {{'k', 'u'}, {'k', 'u', 'r'}, {'k', 'u', 'r'}, {'k', 'u', 'r'}}, // Kurdish
+ LanguageCodeEntry {{}, {}, {}, {'n', 'm', 'g'}}, // Kwasio
+ LanguageCodeEntry {{'k', 'y'}, {'k', 'i', 'r'}, {'k', 'i', 'r'}, {'k', 'i', 'r'}}, // Kyrgyz
+ LanguageCodeEntry {{}, {}, {}, {'l', 'k', 't'}}, // Lakota
+ LanguageCodeEntry {{}, {}, {}, {'l', 'a', 'g'}}, // Langi
+ LanguageCodeEntry {{'l', 'o'}, {'l', 'a', 'o'}, {'l', 'a', 'o'}, {'l', 'a', 'o'}}, // Lao
+ LanguageCodeEntry {{'l', 'a'}, {'l', 'a', 't'}, {'l', 'a', 't'}, {'l', 'a', 't'}}, // Latin
+ LanguageCodeEntry {{'l', 'v'}, {'l', 'a', 'v'}, {'l', 'a', 'v'}, {'l', 'a', 'v'}}, // Latvian
+ LanguageCodeEntry {{}, {'l', 'e', 'z'}, {'l', 'e', 'z'}, {'l', 'e', 'z'}}, // Lezghian
+ LanguageCodeEntry {{'l', 'i'}, {'l', 'i', 'm'}, {'l', 'i', 'm'}, {'l', 'i', 'm'}}, // Limburgish
+ LanguageCodeEntry {{'l', 'n'}, {'l', 'i', 'n'}, {'l', 'i', 'n'}, {'l', 'i', 'n'}}, // Lingala
+ LanguageCodeEntry {{}, {}, {}, {'l', 'z', 'h'}}, // Literary Chinese
+ LanguageCodeEntry {{'l', 't'}, {'l', 'i', 't'}, {'l', 'i', 't'}, {'l', 'i', 't'}}, // Lithuanian
+ LanguageCodeEntry {{}, {'j', 'b', 'o'}, {'j', 'b', 'o'}, {'j', 'b', 'o'}}, // Lojban
+ LanguageCodeEntry {{}, {'d', 's', 'b'}, {'d', 's', 'b'}, {'d', 's', 'b'}}, // Lower Sorbian
+ LanguageCodeEntry {{}, {'n', 'd', 's'}, {'n', 'd', 's'}, {'n', 'd', 's'}}, // Low German
+ LanguageCodeEntry {{'l', 'u'}, {'l', 'u', 'b'}, {'l', 'u', 'b'}, {'l', 'u', 'b'}}, // Luba-Katanga
+ LanguageCodeEntry {{}, {'s', 'm', 'j'}, {'s', 'm', 'j'}, {'s', 'm', 'j'}}, // Lule Sami
+ LanguageCodeEntry {{}, {'l', 'u', 'o'}, {'l', 'u', 'o'}, {'l', 'u', 'o'}}, // Luo
+ LanguageCodeEntry {{'l', 'b'}, {'l', 't', 'z'}, {'l', 't', 'z'}, {'l', 't', 'z'}}, // Luxembourgish
+ LanguageCodeEntry {{}, {}, {}, {'l', 'u', 'y'}}, // Luyia
+ LanguageCodeEntry {{'m', 'k'}, {'m', 'a', 'c'}, {'m', 'k', 'd'}, {'m', 'k', 'd'}}, // Macedonian
+ LanguageCodeEntry {{}, {}, {}, {'j', 'm', 'c'}}, // Machame
+ LanguageCodeEntry {{}, {'m', 'a', 'i'}, {'m', 'a', 'i'}, {'m', 'a', 'i'}}, // Maithili
+ LanguageCodeEntry {{}, {}, {}, {'m', 'g', 'h'}}, // Makhuwa-Meetto
+ LanguageCodeEntry {{}, {}, {}, {'k', 'd', 'e'}}, // Makonde
+ LanguageCodeEntry {{'m', 'g'}, {'m', 'l', 'g'}, {'m', 'l', 'g'}, {'m', 'l', 'g'}}, // Malagasy
+ LanguageCodeEntry {{'m', 'l'}, {'m', 'a', 'l'}, {'m', 'a', 'l'}, {'m', 'a', 'l'}}, // Malayalam
+ LanguageCodeEntry {{'m', 's'}, {'m', 'a', 'y'}, {'m', 's', 'a'}, {'m', 's', 'a'}}, // Malay
+ LanguageCodeEntry {{'m', 't'}, {'m', 'l', 't'}, {'m', 'l', 't'}, {'m', 'l', 't'}}, // Maltese
+ LanguageCodeEntry {{}, {'m', 'a', 'n'}, {'m', 'a', 'n'}, {'m', 'a', 'n'}}, // Mandingo
+ LanguageCodeEntry {{}, {'m', 'n', 'i'}, {'m', 'n', 'i'}, {'m', 'n', 'i'}}, // Manipuri
+ LanguageCodeEntry {{'g', 'v'}, {'g', 'l', 'v'}, {'g', 'l', 'v'}, {'g', 'l', 'v'}}, // Manx
+ LanguageCodeEntry {{'m', 'i'}, {'m', 'a', 'o'}, {'m', 'r', 'i'}, {'m', 'r', 'i'}}, // Maori
+ LanguageCodeEntry {{}, {'a', 'r', 'n'}, {'a', 'r', 'n'}, {'a', 'r', 'n'}}, // Mapuche
+ LanguageCodeEntry {{'m', 'r'}, {'m', 'a', 'r'}, {'m', 'a', 'r'}, {'m', 'a', 'r'}}, // Marathi
+ LanguageCodeEntry {{'m', 'h'}, {'m', 'a', 'h'}, {'m', 'a', 'h'}, {'m', 'a', 'h'}}, // Marshallese
+ LanguageCodeEntry {{}, {'m', 'a', 's'}, {'m', 'a', 's'}, {'m', 'a', 's'}}, // Masai
+ LanguageCodeEntry {{}, {}, {}, {'m', 'z', 'n'}}, // Mazanderani
+ LanguageCodeEntry {{}, {'m', 'e', 'n'}, {'m', 'e', 'n'}, {'m', 'e', 'n'}}, // Mende
+ LanguageCodeEntry {{}, {}, {}, {'m', 'e', 'r'}}, // Meru
+ LanguageCodeEntry {{}, {}, {}, {'m', 'g', 'o'}}, // Meta
+ LanguageCodeEntry {{}, {'m', 'o', 'h'}, {'m', 'o', 'h'}, {'m', 'o', 'h'}}, // Mohawk
+ LanguageCodeEntry {{'m', 'n'}, {'m', 'o', 'n'}, {'m', 'o', 'n'}, {'m', 'o', 'n'}}, // Mongolian
+ LanguageCodeEntry {{}, {}, {}, {'m', 'f', 'e'}}, // Morisyen
+ LanguageCodeEntry {{}, {}, {}, {'m', 'u', 'a'}}, // Mundang
+ LanguageCodeEntry {{}, {'m', 'u', 's'}, {'m', 'u', 's'}, {'m', 'u', 's'}}, // Muscogee
+ LanguageCodeEntry {{}, {}, {}, {'n', 'a', 'q'}}, // Nama
+ LanguageCodeEntry {{'n', 'a'}, {'n', 'a', 'u'}, {'n', 'a', 'u'}, {'n', 'a', 'u'}}, // Nauru
+ LanguageCodeEntry {{'n', 'v'}, {'n', 'a', 'v'}, {'n', 'a', 'v'}, {'n', 'a', 'v'}}, // Navajo
+ LanguageCodeEntry {{'n', 'g'}, {'n', 'd', 'o'}, {'n', 'd', 'o'}, {'n', 'd', 'o'}}, // Ndonga
+ LanguageCodeEntry {{'n', 'e'}, {'n', 'e', 'p'}, {'n', 'e', 'p'}, {'n', 'e', 'p'}}, // Nepali
+ LanguageCodeEntry {{}, {'n', 'e', 'w'}, {'n', 'e', 'w'}, {'n', 'e', 'w'}}, // Newari
+ LanguageCodeEntry {{}, {}, {}, {'n', 'n', 'h'}}, // Ngiemboon
+ LanguageCodeEntry {{}, {}, {}, {'j', 'g', 'o'}}, // Ngomba
+ LanguageCodeEntry {{}, {}, {}, {'p', 'c', 'm'}}, // Nigerian Pidgin
+ LanguageCodeEntry {{}, {'n', 'q', 'o'}, {'n', 'q', 'o'}, {'n', 'q', 'o'}}, // Nko
+ LanguageCodeEntry {{}, {}, {}, {'l', 'r', 'c'}}, // Northern Luri
+ LanguageCodeEntry {{'s', 'e'}, {'s', 'm', 'e'}, {'s', 'm', 'e'}, {'s', 'm', 'e'}}, // Northern Sami
+ LanguageCodeEntry {{}, {'n', 's', 'o'}, {'n', 's', 'o'}, {'n', 's', 'o'}}, // Northern Sotho
+ LanguageCodeEntry {{'n', 'd'}, {'n', 'd', 'e'}, {'n', 'd', 'e'}, {'n', 'd', 'e'}}, // North Ndebele
+ LanguageCodeEntry {{'n', 'b'}, {'n', 'o', 'b'}, {'n', 'o', 'b'}, {'n', 'o', 'b'}}, // Norwegian Bokmal
+ LanguageCodeEntry {{'n', 'n'}, {'n', 'n', 'o'}, {'n', 'n', 'o'}, {'n', 'n', 'o'}}, // Norwegian Nynorsk
+ LanguageCodeEntry {{}, {}, {}, {'n', 'u', 's'}}, // Nuer
+ LanguageCodeEntry {{'n', 'y'}, {'n', 'y', 'a'}, {'n', 'y', 'a'}, {'n', 'y', 'a'}}, // Nyanja
+ LanguageCodeEntry {{}, {'n', 'y', 'n'}, {'n', 'y', 'n'}, {'n', 'y', 'n'}}, // Nyankole
+ LanguageCodeEntry {{'o', 'c'}, {'o', 'c', 'i'}, {'o', 'c', 'i'}, {'o', 'c', 'i'}}, // Occitan
+ LanguageCodeEntry {{'o', 'r'}, {'o', 'r', 'i'}, {'o', 'r', 'i'}, {'o', 'r', 'i'}}, // Odia
+ LanguageCodeEntry {{'o', 'j'}, {'o', 'j', 'i'}, {'o', 'j', 'i'}, {'o', 'j', 'i'}}, // Ojibwa
+ LanguageCodeEntry {{}, {'s', 'g', 'a'}, {'s', 'g', 'a'}, {'s', 'g', 'a'}}, // Old Irish
+ LanguageCodeEntry {{}, {'n', 'o', 'n'}, {'n', 'o', 'n'}, {'n', 'o', 'n'}}, // Old Norse
+ LanguageCodeEntry {{}, {'p', 'e', 'o'}, {'p', 'e', 'o'}, {'p', 'e', 'o'}}, // Old Persian
+ LanguageCodeEntry {{'o', 'm'}, {'o', 'r', 'm'}, {'o', 'r', 'm'}, {'o', 'r', 'm'}}, // Oromo
+ LanguageCodeEntry {{}, {'o', 's', 'a'}, {'o', 's', 'a'}, {'o', 's', 'a'}}, // Osage
+ LanguageCodeEntry {{'o', 's'}, {'o', 's', 's'}, {'o', 's', 's'}, {'o', 's', 's'}}, // Ossetic
+ LanguageCodeEntry {{}, {'p', 'a', 'l'}, {'p', 'a', 'l'}, {'p', 'a', 'l'}}, // Pahlavi
+ LanguageCodeEntry {{}, {'p', 'a', 'u'}, {'p', 'a', 'u'}, {'p', 'a', 'u'}}, // Palauan
+ LanguageCodeEntry {{'p', 'i'}, {'p', 'l', 'i'}, {'p', 'l', 'i'}, {'p', 'l', 'i'}}, // Pali
+ LanguageCodeEntry {{}, {'p', 'a', 'p'}, {'p', 'a', 'p'}, {'p', 'a', 'p'}}, // Papiamento
+ LanguageCodeEntry {{'p', 's'}, {'p', 'u', 's'}, {'p', 'u', 's'}, {'p', 'u', 's'}}, // Pashto
+ LanguageCodeEntry {{'f', 'a'}, {'p', 'e', 'r'}, {'f', 'a', 's'}, {'f', 'a', 's'}}, // Persian
+ LanguageCodeEntry {{}, {'p', 'h', 'n'}, {'p', 'h', 'n'}, {'p', 'h', 'n'}}, // Phoenician
+ LanguageCodeEntry {{'p', 'l'}, {'p', 'o', 'l'}, {'p', 'o', 'l'}, {'p', 'o', 'l'}}, // Polish
+ LanguageCodeEntry {{'p', 't'}, {'p', 'o', 'r'}, {'p', 'o', 'r'}, {'p', 'o', 'r'}}, // Portuguese
+ LanguageCodeEntry {{}, {}, {}, {'p', 'r', 'g'}}, // Prussian
+ LanguageCodeEntry {{'p', 'a'}, {'p', 'a', 'n'}, {'p', 'a', 'n'}, {'p', 'a', 'n'}}, // Punjabi
+ LanguageCodeEntry {{'q', 'u'}, {'q', 'u', 'e'}, {'q', 'u', 'e'}, {'q', 'u', 'e'}}, // Quechua
+ LanguageCodeEntry {{'r', 'o'}, {'r', 'u', 'm'}, {'r', 'o', 'n'}, {'r', 'o', 'n'}}, // Romanian
+ LanguageCodeEntry {{'r', 'm'}, {'r', 'o', 'h'}, {'r', 'o', 'h'}, {'r', 'o', 'h'}}, // Romansh
+ LanguageCodeEntry {{}, {}, {}, {'r', 'o', 'f'}}, // Rombo
+ LanguageCodeEntry {{'r', 'n'}, {'r', 'u', 'n'}, {'r', 'u', 'n'}, {'r', 'u', 'n'}}, // Rundi
+ LanguageCodeEntry {{'r', 'u'}, {'r', 'u', 's'}, {'r', 'u', 's'}, {'r', 'u', 's'}}, // Russian
+ LanguageCodeEntry {{}, {}, {}, {'r', 'w', 'k'}}, // Rwa
+ LanguageCodeEntry {{}, {}, {}, {'s', 's', 'y'}}, // Saho
+ LanguageCodeEntry {{}, {'s', 'a', 'h'}, {'s', 'a', 'h'}, {'s', 'a', 'h'}}, // Sakha
+ LanguageCodeEntry {{}, {}, {}, {'s', 'a', 'q'}}, // Samburu
+ LanguageCodeEntry {{'s', 'm'}, {'s', 'm', 'o'}, {'s', 'm', 'o'}, {'s', 'm', 'o'}}, // Samoan
+ LanguageCodeEntry {{'s', 'g'}, {'s', 'a', 'g'}, {'s', 'a', 'g'}, {'s', 'a', 'g'}}, // Sango
+ LanguageCodeEntry {{}, {}, {}, {'s', 'b', 'p'}}, // Sangu
+ LanguageCodeEntry {{'s', 'a'}, {'s', 'a', 'n'}, {'s', 'a', 'n'}, {'s', 'a', 'n'}}, // Sanskrit
+ LanguageCodeEntry {{}, {'s', 'a', 't'}, {'s', 'a', 't'}, {'s', 'a', 't'}}, // Santali
+ LanguageCodeEntry {{'s', 'c'}, {'s', 'r', 'd'}, {'s', 'r', 'd'}, {'s', 'r', 'd'}}, // Sardinian
+ LanguageCodeEntry {{}, {}, {}, {'s', 'a', 'z'}}, // Saurashtra
+ LanguageCodeEntry {{}, {}, {}, {'s', 'e', 'h'}}, // Sena
+ LanguageCodeEntry {{'s', 'r'}, {'s', 'r', 'p'}, {'s', 'r', 'p'}, {'s', 'r', 'p'}}, // Serbian
+ LanguageCodeEntry {{}, {}, {}, {'k', 's', 'b'}}, // Shambala
+ LanguageCodeEntry {{'s', 'n'}, {'s', 'n', 'a'}, {'s', 'n', 'a'}, {'s', 'n', 'a'}}, // Shona
+ LanguageCodeEntry {{'i', 'i'}, {'i', 'i', 'i'}, {'i', 'i', 'i'}, {'i', 'i', 'i'}}, // Sichuan Yi
+ LanguageCodeEntry {{}, {'s', 'c', 'n'}, {'s', 'c', 'n'}, {'s', 'c', 'n'}}, // Sicilian
+ LanguageCodeEntry {{}, {'s', 'i', 'd'}, {'s', 'i', 'd'}, {'s', 'i', 'd'}}, // Sidamo
+ LanguageCodeEntry {{}, {}, {}, {'s', 'z', 'l'}}, // Silesian
+ LanguageCodeEntry {{'s', 'd'}, {'s', 'n', 'd'}, {'s', 'n', 'd'}, {'s', 'n', 'd'}}, // Sindhi
+ LanguageCodeEntry {{'s', 'i'}, {'s', 'i', 'n'}, {'s', 'i', 'n'}, {'s', 'i', 'n'}}, // Sinhala
+ LanguageCodeEntry {{}, {'s', 'm', 's'}, {'s', 'm', 's'}, {'s', 'm', 's'}}, // Skolt Sami
+ LanguageCodeEntry {{'s', 'k'}, {'s', 'l', 'o'}, {'s', 'l', 'k'}, {'s', 'l', 'k'}}, // Slovak
+ LanguageCodeEntry {{'s', 'l'}, {'s', 'l', 'v'}, {'s', 'l', 'v'}, {'s', 'l', 'v'}}, // Slovenian
+ LanguageCodeEntry {{}, {}, {}, {'x', 'o', 'g'}}, // Soga
+ LanguageCodeEntry {{'s', 'o'}, {'s', 'o', 'm'}, {'s', 'o', 'm'}, {'s', 'o', 'm'}}, // Somali
+ LanguageCodeEntry {{}, {}, {}, {'s', 'd', 'h'}}, // Southern Kurdish
+ LanguageCodeEntry {{}, {'s', 'm', 'a'}, {'s', 'm', 'a'}, {'s', 'm', 'a'}}, // Southern Sami
+ LanguageCodeEntry {{'s', 't'}, {'s', 'o', 't'}, {'s', 'o', 't'}, {'s', 'o', 't'}}, // Southern Sotho
+ LanguageCodeEntry {{'n', 'r'}, {'n', 'b', 'l'}, {'n', 'b', 'l'}, {'n', 'b', 'l'}}, // South Ndebele
+ LanguageCodeEntry {{'e', 's'}, {'s', 'p', 'a'}, {'s', 'p', 'a'}, {'s', 'p', 'a'}}, // Spanish
+ LanguageCodeEntry {{}, {'z', 'g', 'h'}, {'z', 'g', 'h'}, {'z', 'g', 'h'}}, // Standard Moroccan Tamazight
+ LanguageCodeEntry {{'s', 'u'}, {'s', 'u', 'n'}, {'s', 'u', 'n'}, {'s', 'u', 'n'}}, // Sundanese
+ LanguageCodeEntry {{'s', 'w'}, {'s', 'w', 'a'}, {'s', 'w', 'a'}, {'s', 'w', 'a'}}, // Swahili
+ LanguageCodeEntry {{'s', 's'}, {'s', 's', 'w'}, {'s', 's', 'w'}, {'s', 's', 'w'}}, // Swati
+ LanguageCodeEntry {{'s', 'v'}, {'s', 'w', 'e'}, {'s', 'w', 'e'}, {'s', 'w', 'e'}}, // Swedish
+ LanguageCodeEntry {{}, {'g', 's', 'w'}, {'g', 's', 'w'}, {'g', 's', 'w'}}, // Swiss German
+ LanguageCodeEntry {{}, {'s', 'y', 'r'}, {'s', 'y', 'r'}, {'s', 'y', 'r'}}, // Syriac
+ LanguageCodeEntry {{}, {}, {}, {'s', 'h', 'i'}}, // Tachelhit
+ LanguageCodeEntry {{'t', 'y'}, {'t', 'a', 'h'}, {'t', 'a', 'h'}, {'t', 'a', 'h'}}, // Tahitian
+ LanguageCodeEntry {{}, {}, {}, {'b', 'l', 't'}}, // Tai Dam
+ LanguageCodeEntry {{}, {}, {}, {'d', 'a', 'v'}}, // Taita
+ LanguageCodeEntry {{'t', 'g'}, {'t', 'g', 'k'}, {'t', 'g', 'k'}, {'t', 'g', 'k'}}, // Tajik
+ LanguageCodeEntry {{'t', 'a'}, {'t', 'a', 'm'}, {'t', 'a', 'm'}, {'t', 'a', 'm'}}, // Tamil
+ LanguageCodeEntry {{}, {}, {}, {'t', 'r', 'v'}}, // Taroko
+ LanguageCodeEntry {{}, {}, {}, {'t', 'w', 'q'}}, // Tasawaq
+ LanguageCodeEntry {{'t', 't'}, {'t', 'a', 't'}, {'t', 'a', 't'}, {'t', 'a', 't'}}, // Tatar
+ LanguageCodeEntry {{'t', 'e'}, {'t', 'e', 'l'}, {'t', 'e', 'l'}, {'t', 'e', 'l'}}, // Telugu
+ LanguageCodeEntry {{}, {}, {}, {'t', 'e', 'o'}}, // Teso
+ LanguageCodeEntry {{'t', 'h'}, {'t', 'h', 'a'}, {'t', 'h', 'a'}, {'t', 'h', 'a'}}, // Thai
+ LanguageCodeEntry {{'b', 'o'}, {'t', 'i', 'b'}, {'b', 'o', 'd'}, {'b', 'o', 'd'}}, // Tibetan
+ LanguageCodeEntry {{}, {'t', 'i', 'g'}, {'t', 'i', 'g'}, {'t', 'i', 'g'}}, // Tigre
+ LanguageCodeEntry {{'t', 'i'}, {'t', 'i', 'r'}, {'t', 'i', 'r'}, {'t', 'i', 'r'}}, // Tigrinya
+ LanguageCodeEntry {{}, {'t', 'k', 'l'}, {'t', 'k', 'l'}, {'t', 'k', 'l'}}, // Tokelau
+ LanguageCodeEntry {{}, {'t', 'p', 'i'}, {'t', 'p', 'i'}, {'t', 'p', 'i'}}, // Tok Pisin
+ LanguageCodeEntry {{'t', 'o'}, {'t', 'o', 'n'}, {'t', 'o', 'n'}, {'t', 'o', 'n'}}, // Tongan
+ LanguageCodeEntry {{'t', 's'}, {'t', 's', 'o'}, {'t', 's', 'o'}, {'t', 's', 'o'}}, // Tsonga
+ LanguageCodeEntry {{'t', 'n'}, {'t', 's', 'n'}, {'t', 's', 'n'}, {'t', 's', 'n'}}, // Tswana
+ LanguageCodeEntry {{'t', 'r'}, {'t', 'u', 'r'}, {'t', 'u', 'r'}, {'t', 'u', 'r'}}, // Turkish
+ LanguageCodeEntry {{'t', 'k'}, {'t', 'u', 'k'}, {'t', 'u', 'k'}, {'t', 'u', 'k'}}, // Turkmen
+ LanguageCodeEntry {{}, {'t', 'v', 'l'}, {'t', 'v', 'l'}, {'t', 'v', 'l'}}, // Tuvalu
+ LanguageCodeEntry {{}, {}, {}, {'k', 'c', 'g'}}, // Tyap
+ LanguageCodeEntry {{}, {'u', 'g', 'a'}, {'u', 'g', 'a'}, {'u', 'g', 'a'}}, // Ugaritic
+ LanguageCodeEntry {{'u', 'k'}, {'u', 'k', 'r'}, {'u', 'k', 'r'}, {'u', 'k', 'r'}}, // Ukrainian
+ LanguageCodeEntry {{}, {'h', 's', 'b'}, {'h', 's', 'b'}, {'h', 's', 'b'}}, // Upper Sorbian
+ LanguageCodeEntry {{'u', 'r'}, {'u', 'r', 'd'}, {'u', 'r', 'd'}, {'u', 'r', 'd'}}, // Urdu
+ LanguageCodeEntry {{'u', 'g'}, {'u', 'i', 'g'}, {'u', 'i', 'g'}, {'u', 'i', 'g'}}, // Uyghur
+ LanguageCodeEntry {{'u', 'z'}, {'u', 'z', 'b'}, {'u', 'z', 'b'}, {'u', 'z', 'b'}}, // Uzbek
+ LanguageCodeEntry {{}, {'v', 'a', 'i'}, {'v', 'a', 'i'}, {'v', 'a', 'i'}}, // Vai
+ LanguageCodeEntry {{'v', 'e'}, {'v', 'e', 'n'}, {'v', 'e', 'n'}, {'v', 'e', 'n'}}, // Venda
+ LanguageCodeEntry {{'v', 'i'}, {'v', 'i', 'e'}, {'v', 'i', 'e'}, {'v', 'i', 'e'}}, // Vietnamese
+ LanguageCodeEntry {{'v', 'o'}, {'v', 'o', 'l'}, {'v', 'o', 'l'}, {'v', 'o', 'l'}}, // Volapuk
+ LanguageCodeEntry {{}, {}, {}, {'v', 'u', 'n'}}, // Vunjo
+ LanguageCodeEntry {{'w', 'a'}, {'w', 'l', 'n'}, {'w', 'l', 'n'}, {'w', 'l', 'n'}}, // Walloon
+ LanguageCodeEntry {{}, {}, {}, {'w', 'a', 'e'}}, // Walser
+ LanguageCodeEntry {{}, {}, {}, {'w', 'b', 'p'}}, // Warlpiri
+ LanguageCodeEntry {{'c', 'y'}, {'w', 'e', 'l'}, {'c', 'y', 'm'}, {'c', 'y', 'm'}}, // Welsh
+ LanguageCodeEntry {{}, {}, {}, {'b', 'g', 'n'}}, // Western Balochi
+ LanguageCodeEntry {{'f', 'y'}, {'f', 'r', 'y'}, {'f', 'r', 'y'}, {'f', 'r', 'y'}}, // Western Frisian
+ LanguageCodeEntry {{}, {'w', 'a', 'l'}, {'w', 'a', 'l'}, {'w', 'a', 'l'}}, // Wolaytta
+ LanguageCodeEntry {{'w', 'o'}, {'w', 'o', 'l'}, {'w', 'o', 'l'}, {'w', 'o', 'l'}}, // Wolof
+ LanguageCodeEntry {{'x', 'h'}, {'x', 'h', 'o'}, {'x', 'h', 'o'}, {'x', 'h', 'o'}}, // Xhosa
+ LanguageCodeEntry {{}, {}, {}, {'y', 'a', 'v'}}, // Yangben
+ LanguageCodeEntry {{'y', 'i'}, {'y', 'i', 'd'}, {'y', 'i', 'd'}, {'y', 'i', 'd'}}, // Yiddish
+ LanguageCodeEntry {{'y', 'o'}, {'y', 'o', 'r'}, {'y', 'o', 'r'}, {'y', 'o', 'r'}}, // Yoruba
+ LanguageCodeEntry {{}, {}, {}, {'d', 'j', 'e'}}, // Zarma
+ LanguageCodeEntry {{'z', 'a'}, {'z', 'h', 'a'}, {'z', 'h', 'a'}, {'z', 'h', 'a'}}, // Zhuang
+ LanguageCodeEntry {{'z', 'u'}, {'z', 'u', 'l'}, {'z', 'u', 'l'}, {'z', 'u', 'l'}}, // Zulu
+ LanguageCodeEntry {{}, {}, {}, {'k', 'g', 'p'}}, // Kaingang
+ LanguageCodeEntry {{}, {}, {}, {'y', 'r', 'l'}}, // Nheengatu
+ LanguageCodeEntry {{}, {}, {}, {'b', 'g', 'c'}}, // Haryanvi
+ LanguageCodeEntry {{}, {'f', 'r', 'r'}, {'f', 'r', 'r'}, {'f', 'r', 'r'}}, // Northern Frisian
+ LanguageCodeEntry {{}, {'r', 'a', 'j'}, {'r', 'a', 'j'}, {'r', 'a', 'j'}}, // Rajasthani
+ LanguageCodeEntry {{}, {'m', 'd', 'f'}, {'m', 'd', 'f'}, {'m', 'd', 'f'}}, // Moksha
+ LanguageCodeEntry {{}, {}, {}, {'t', 'o', 'k'}}, // Toki Pona
+ LanguageCodeEntry {{}, {}, {}, {'p', 'i', 's'}}, // Pijin
+ LanguageCodeEntry {{}, {}, {}, {'a', 'n', 'n'}}, // Obolo
+ LanguageCodeEntry {{}, {'b', 'a', 'l'}, {'b', 'a', 'l'}, {'b', 'a', 'l'}}, // Baluchi
+ LanguageCodeEntry {{}, {}, {}, {'l', 'i', 'j'}}, // Ligurian
+ LanguageCodeEntry {{}, {}, {}, {'r', 'h', 'g'}}, // Rohingya
+ LanguageCodeEntry {{}, {}, {}, {'t', 'r', 'w'}}, // Torwali
+ LanguageCodeEntry {{}, {}, {}, {'b', 'l', 'o'}}, // Anii
+ LanguageCodeEntry {{}, {}, {}, {'x', 'n', 'r'}}, // Kangri
+ LanguageCodeEntry {{}, {}, {}, {'v', 'e', 'c'}}, // Venetian
};
-static const unsigned char script_code_list[] =
+static constexpr unsigned char script_code_list[] =
"Zzzz" // AnyScript
"Adlm" // Adlam
"Ahom" // Ahom
@@ -5723,7 +8088,7 @@ static const unsigned char script_code_list[] =
"Dsrt" // Deseret
"Deva" // Devanagari
"Dupl" // Duployan
-"Egyp" // Egyptian Hieroglyphs
+"Egyp" // Egyptian hieroglyphs
"Elba" // Elbasan
"Ethi" // Ethiopic
"Lisu" // Fraser
@@ -5798,7 +8163,7 @@ static const unsigned char script_code_list[] =
"Hmng" // Pahawh Hmong
"Palm" // Palmyrene
"Pauc" // Pau Cin Hau
-"Phag" // Phags Pa
+"Phag" // Phags-pa
"Phnx" // Phoenician
"Plrd" // Pollard Phonetic
"Phlp" // Psalter Pahlavi
@@ -5809,7 +8174,7 @@ static const unsigned char script_code_list[] =
"Shrd" // Sharada
"Shaw" // Shavian
"Sidd" // Siddham
-"Sgnw" // Sign Writing
+"Sgnw" // SignWriting
"Hans" // Simplified Han
"Sinh" // Sinhala
"Sora" // Sora Sompeng
@@ -5834,9 +8199,10 @@ static const unsigned char script_code_list[] =
"Vaii" // Vai
"Wara" // Varang Kshiti
"Yiii" // Yi
+"Rohg" // Hanifi
;
-static const unsigned char territory_code_list[] =
+static constexpr unsigned char territory_code_list[] =
"ZZ\0" // AnyTerritory
"AF\0" // Afghanistan
"AX\0" // Aland Islands
@@ -5847,7 +8213,7 @@ static const unsigned char territory_code_list[] =
"AO\0" // Angola
"AI\0" // Anguilla
"AQ\0" // Antarctica
-"AG\0" // Antigua And Barbuda
+"AG\0" // Antigua and Barbuda
"AR\0" // Argentina
"AM\0" // Armenia
"AW\0" // Aruba
@@ -5866,7 +8232,7 @@ static const unsigned char territory_code_list[] =
"BM\0" // Bermuda
"BT\0" // Bhutan
"BO\0" // Bolivia
-"BA\0" // Bosnia And Herzegovina
+"BA\0" // Bosnia and Herzegovina
"BW\0" // Botswana
"BV\0" // Bouvet Island
"BR\0" // Brazil
@@ -5884,7 +8250,7 @@ static const unsigned char territory_code_list[] =
"BQ\0" // Caribbean Netherlands
"KY\0" // Cayman Islands
"CF\0" // Central African Republic
-"EA\0" // Ceuta And Melilla
+"EA\0" // Ceuta and Melilla
"TD\0" // Chad
"CL\0" // Chile
"CN\0" // China
@@ -5893,8 +8259,8 @@ static const unsigned char territory_code_list[] =
"CC\0" // Cocos Islands
"CO\0" // Colombia
"KM\0" // Comoros
-"CG\0" // Congo Brazzaville
-"CD\0" // Congo Kinshasa
+"CG\0" // Congo - Brazzaville
+"CD\0" // Congo - Kinshasa
"CK\0" // Cook Islands
"CR\0" // Costa Rica
"HR\0" // Croatia
@@ -5938,11 +8304,11 @@ static const unsigned char territory_code_list[] =
"GU\0" // Guam
"GT\0" // Guatemala
"GG\0" // Guernsey
-"GW\0" // Guinea Bissau
+"GW\0" // Guinea-Bissau
"GN\0" // Guinea
"GY\0" // Guyana
"HT\0" // Haiti
-"HM\0" // Heard And McDonald Islands
+"HM\0" // Heard and McDonald Islands
"HN\0" // Honduras
"HK\0" // Hong Kong
"HU\0" // Hungary
@@ -5952,7 +8318,7 @@ static const unsigned char territory_code_list[] =
"IR\0" // Iran
"IQ\0" // Iraq
"IE\0" // Ireland
-"IM\0" // Isle Of Man
+"IM\0" // Isle of Man
"IL\0" // Israel
"IT\0" // Italy
"CI\0" // Ivory Coast
@@ -6034,14 +8400,14 @@ static const unsigned char territory_code_list[] =
"RW\0" // Rwanda
"BL\0" // Saint Barthelemy
"SH\0" // Saint Helena
-"KN\0" // Saint Kitts And Nevis
+"KN\0" // Saint Kitts and Nevis
"LC\0" // Saint Lucia
"MF\0" // Saint Martin
-"PM\0" // Saint Pierre And Miquelon
-"VC\0" // Saint Vincent And Grenadines
+"PM\0" // Saint Pierre and Miquelon
+"VC\0" // Saint Vincent and Grenadines
"WS\0" // Samoa
"SM\0" // San Marino
-"ST\0" // Sao Tome And Principe
+"ST\0" // Sao Tome and Principe
"SA\0" // Saudi Arabia
"SN\0" // Senegal
"RS\0" // Serbia
@@ -6054,14 +8420,14 @@ static const unsigned char territory_code_list[] =
"SB\0" // Solomon Islands
"SO\0" // Somalia
"ZA\0" // South Africa
-"GS\0" // South Georgia And South Sandwich Islands
+"GS\0" // South Georgia and South Sandwich Islands
"KR\0" // South Korea
"SS\0" // South Sudan
"ES\0" // Spain
"LK\0" // Sri Lanka
"SD\0" // Sudan
"SR\0" // Suriname
-"SJ\0" // Svalbard And Jan Mayen
+"SJ\0" // Svalbard and Jan Mayen
"SE\0" // Sweden
"CH\0" // Switzerland
"SY\0" // Syria
@@ -6073,12 +8439,12 @@ static const unsigned char territory_code_list[] =
"TG\0" // Togo
"TK\0" // Tokelau
"TO\0" // Tonga
-"TT\0" // Trinidad And Tobago
-"TA\0" // Tristan Da Cunha
+"TT\0" // Trinidad and Tobago
+"TA\0" // Tristan da Cunha
"TN\0" // Tunisia
"TR\0" // Turkey
"TM\0" // Turkmenistan
-"TC\0" // Turks And Caicos Islands
+"TC\0" // Turks and Caicos Islands
"TV\0" // Tuvalu
"UG\0" // Uganda
"UA\0" // Ukraine
@@ -6093,9 +8459,9 @@ static const unsigned char territory_code_list[] =
"VA\0" // Vatican City
"VE\0" // Venezuela
"VN\0" // Vietnam
-"WF\0" // Wallis And Futuna
+"WF\0" // Wallis and Futuna
"EH\0" // Western Sahara
-"001" // World
+"001" // world
"YE\0" // Yemen
"ZM\0" // Zambia
"ZW\0" // Zimbabwe
diff --git a/src/corelib/text/qlocale_icu.cpp b/src/corelib/text/qlocale_icu.cpp
index afe0aae583..55231286a0 100644
--- a/src/corelib/text/qlocale_icu.cpp
+++ b/src/corelib/text/qlocale_icu.cpp
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qglobal.h"
#include "qdebug.h"
diff --git a/src/corelib/text/qlocale_mac.mm b/src/corelib/text/qlocale_mac.mm
index 7d75db31d0..89339be2eb 100644
--- a/src/corelib/text/qlocale_mac.mm
+++ b/src/corelib/text/qlocale_mac.mm
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qlocale_p.h"
@@ -50,12 +14,52 @@
#include <CoreFoundation/CoreFoundation.h>
#endif
+#include <QtCore/qloggingcategory.h>
+#include <QtCore/qcoreapplication.h>
+
QT_BEGIN_NAMESPACE
+using namespace Qt::StringLiterals;
+
/******************************************************************************
** Wrappers for Mac locale system functions
*/
+Q_LOGGING_CATEGORY(lcLocale, "qt.core.locale")
+
+static void printLocalizationInformation()
+{
+ if (!lcLocale().isDebugEnabled())
+ return;
+
+#if defined(Q_OS_MACOS)
+ // Trigger initialization of standard user defaults, so that Foundation picks
+ // up -AppleLanguages and -AppleLocale passed on the command line.
+ Q_UNUSED(NSUserDefaults.standardUserDefaults);
+#endif
+
+ auto singleLineDescription = [](NSArray *array) {
+ NSString *str = [array description];
+ str = [str stringByReplacingOccurrencesOfString:@"\n" withString:@""];
+ return [str stringByReplacingOccurrencesOfString:@" " withString:@""];
+ };
+
+ bool allowMixedLocalizations = [NSBundle.mainBundle.infoDictionary[@"CFBundleAllowMixedLocalizations"] boolValue];
+
+ NSBundle *foundation = [NSBundle bundleForClass:NSBundle.class];
+ qCDebug(lcLocale).nospace() << "Launched with locale \"" << NSLocale.currentLocale.localeIdentifier
+ << "\" based on user's preferred languages " << singleLineDescription(NSLocale.preferredLanguages)
+ << ", main bundle localizations " << singleLineDescription(NSBundle.mainBundle.localizations)
+ << ", and allowing mixed localizations " << allowMixedLocalizations
+ << "; resulting in main bundle preferred localizations "
+ << singleLineDescription(NSBundle.mainBundle.preferredLocalizations)
+ << " and Foundation preferred localizations "
+ << singleLineDescription(foundation.preferredLocalizations);
+ qCDebug(lcLocale) << "Reflected by Qt as system locale"
+ << QLocale::system() << "with UI languges " << QLocale::system().uiLanguages();
+}
+Q_COREAPP_STARTUP_FUNCTION(printLocalizationInformation);
+
static QString getMacLocaleName()
{
QCFType<CFLocaleRef> l = CFLocaleCopyCurrent();
@@ -152,23 +156,35 @@ static QVariant macDayName(int day, QSystemLocale::QueryType type)
static QString macZeroDigit()
{
- QCFType<CFLocaleRef> locale = CFLocaleCopyCurrent();
- QCFType<CFNumberFormatterRef> numberFormatter =
- CFNumberFormatterCreate(nullptr, locale, kCFNumberFormatterNoStyle);
- const int zeroDigit = 0;
- QCFType<CFStringRef> value
- = CFNumberFormatterCreateStringWithValue(nullptr, numberFormatter,
- kCFNumberIntType, &zeroDigit);
- return QString::fromCFString(value);
+ static QString cachedZeroDigit;
+
+ if (cachedZeroDigit.isNull()) {
+ QCFType<CFLocaleRef> locale = CFLocaleCopyCurrent();
+ QCFType<CFNumberFormatterRef> numberFormatter =
+ CFNumberFormatterCreate(nullptr, locale, kCFNumberFormatterNoStyle);
+ const int zeroDigit = 0;
+ QCFType<CFStringRef> value
+ = CFNumberFormatterCreateStringWithValue(nullptr, numberFormatter,
+ kCFNumberIntType, &zeroDigit);
+ cachedZeroDigit = QString::fromCFString(value);
+ }
+
+ static QMacNotificationObserver localeChangeObserver = QMacNotificationObserver(
+ nil, NSCurrentLocaleDidChangeNotification, [&] {
+ qCDebug(lcLocale) << "System locale changed";
+ cachedZeroDigit = QString();
+ });
+
+ return cachedZeroDigit;
}
-static QString zeroPad(QString &&number, int minDigits, const QString &zero)
+static QString zeroPad(QString &&number, qsizetype minDigits, const QString &zero)
{
// Need to pad with zeros, possibly after a sign.
- int insert = -1, digits = 0;
+ qsizetype insert = -1, digits = 0;
auto it = QStringIterator(number);
while (it.hasNext()) {
- int here = it.index();
+ qsizetype here = it.index();
if (QChar::isDigit(it.next())) {
if (insert < 0)
insert = here;
@@ -188,10 +204,10 @@ static QString trimTwoDigits(QString &&number)
// Retain any sign, but remove all but the last two digits.
// We know number has at least four digits - it came from fourDigitYear().
// Note that each digit might be a surrogate pair.
- int first = -1, prev = -1, last = -1;
+ qsizetype first = -1, prev = -1, last = -1;
auto it = QStringIterator(number);
while (it.hasNext()) {
- int here = it.index();
+ qsizetype here = it.index();
if (QChar::isDigit(it.next())) {
if (first == -1)
last = first = here;
@@ -222,12 +238,16 @@ static QString fourDigitYear(int year, const QString &zero)
static QString macDateToStringImpl(QDate date, CFDateFormatterStyle style)
{
- QCFType<CFDateRef> myDate = date.startOfDay().toCFDate();
+ // Use noon on the given date, to avoid complications that can arise for
+ // dates before 1900 (see QTBUG-54955) using different UTC offset than
+ // QDateTime extrapolates backwards from time_t functions that only work
+ // back to 1900. (Alaska and Phillipines may still be borked, though.)
+ QCFType<CFDateRef> myDate = QDateTime(date, QTime(12, 0)).toCFDate();
QCFType<CFLocaleRef> mylocale = CFLocaleCopyCurrent();
QCFType<CFDateFormatterRef> myFormatter
= CFDateFormatterCreate(kCFAllocatorDefault, mylocale, style,
kCFDateFormatterNoStyle);
- QCFType<CFStringRef> text = CFDateFormatterCreateStringWithDate(0, myFormatter, myDate);
+ QCFType<CFStringRef> text = CFDateFormatterCreateStringWithDate(nullptr, myFormatter, myDate);
return QString::fromCFString(text);
}
@@ -235,12 +255,14 @@ static QVariant macDateToString(QDate date, bool short_format)
{
const int year = date.year();
QString fakeYear, trueYear;
- if (year < 0) {
+ if (year < 1583) {
// System API (in macOS 11.0, at least) discards sign :-(
// Simply negating the year won't do as the resulting year typically has
// a different pattern of week-days.
+ // Furthermore (see QTBUG-54955), Darwin uses the Julian calendar for
+ // dates before 1582-10-15, leading to discrepancies.
int matcher = QGregorianCalendar::yearSharingWeekDays(date);
- Q_ASSERT(matcher > 0);
+ Q_ASSERT(matcher >= 1583);
Q_ASSERT(matcher % 100 != date.month());
Q_ASSERT(matcher % 100 != date.day());
// i.e. there can't be any confusion between the two-digit year and
@@ -253,7 +275,7 @@ static QVariant macDateToString(QDate date, bool short_format)
QString text = macDateToStringImpl(date, short_format
? kCFDateFormatterShortStyle
: kCFDateFormatterLongStyle);
- if (year < 0) {
+ if (year < 1583) {
if (text.contains(fakeYear))
return std::move(text).replace(fakeYear, trueYear);
// Cope with two-digit year:
@@ -288,114 +310,120 @@ static QVariant macTimeToString(QTime time, bool short_format)
static QVariant macToQtFormat(QStringView sys_fmt)
{
QString result;
- int i = 0;
+ qsizetype i = 0;
while (i < sys_fmt.size()) {
if (sys_fmt.at(i).unicode() == '\'') {
QString text = qt_readEscapedFormatString(sys_fmt, &i);
- if (text == QLatin1String("'"))
- result += QLatin1String("''");
+ if (text == "'"_L1)
+ result += "''"_L1;
else
- result += QLatin1Char('\'') + text + QLatin1Char('\'');
+ result += u'\'' + text + u'\'';
continue;
}
QChar c = sys_fmt.at(i);
- int repeat = qt_repeatCount(sys_fmt.mid(i));
+ qsizetype repeat = qt_repeatCount(sys_fmt.sliced(i));
switch (c.unicode()) {
// Qt does not support the following options
- case 'G': // Era (1..5): 4 = long, 1..3 = short, 5 = narrow
- case 'Y': // Year of Week (1..n): 1..n = padded number
- case 'U': // Cyclic Year Name (1..5): 4 = long, 1..3 = short, 5 = narrow
- case 'Q': // Quarter (1..4): 4 = long, 3 = short, 1..2 = padded number
- case 'q': // Standalone Quarter (1..4): 4 = long, 3 = short, 1..2 = padded number
- case 'w': // Week of Year (1..2): 1..2 = padded number
- case 'W': // Week of Month (1): 1 = number
- case 'D': // Day of Year (1..3): 1..3 = padded number
- case 'F': // Day of Week in Month (1): 1 = number
- case 'g': // Modified Julian Day (1..n): 1..n = padded number
- case 'A': // Milliseconds in Day (1..n): 1..n = padded number
- break;
-
- case 'y': // Year (1..n): 2 = short year, 1 & 3..n = padded number
- case 'u': // Extended Year (1..n): 2 = short year, 1 & 3..n = padded number
- // Qt only supports long (4) or short (2) year, use long for all others
- if (repeat == 2)
- result += QLatin1String("yy");
- else
- result += QLatin1String("yyyy");
- break;
- case 'M': // Month (1..5): 4 = long, 3 = short, 1..2 = number, 5 = narrow
- case 'L': // Standalone Month (1..5): 4 = long, 3 = short, 1..2 = number, 5 = narrow
- // Qt only supports long, short and number, use short for narrow
- if (repeat == 5)
- result += QLatin1String("MMM");
- else
- result += QString(repeat, QLatin1Char('M'));
- break;
- case 'd': // Day of Month (1..2): 1..2 padded number
- result += QString(repeat, c);
- break;
- case 'E': // Day of Week (1..6): 4 = long, 1..3 = short, 5..6 = narrow
- // Qt only supports long, short and padded number, use short for narrow
- if (repeat == 4)
- result += QLatin1String("dddd");
- else
- result += QLatin1String("ddd");
- break;
- case 'e': // Local Day of Week (1..6): 4 = long, 3 = short, 5..6 = narrow, 1..2 padded number
- case 'c': // Standalone Local Day of Week (1..6): 4 = long, 3 = short, 5..6 = narrow, 1..2 padded number
- // Qt only supports long, short and padded number, use short for narrow
- if (repeat >= 5)
- result += QLatin1String("ddd");
- else
- result += QString(repeat, QLatin1Char('d'));
- break;
- case 'a': // AM/PM (1): 1 = short
- // Translate to Qt uppercase AM/PM
- result += QLatin1String("AP");
- break;
- case 'h': // Hour [1..12] (1..2): 1..2 = padded number
- case 'K': // Hour [0..11] (1..2): 1..2 = padded number
- case 'j': // Local Hour [12 or 24] (1..2): 1..2 = padded number
- // Qt h is local hour
- result += QString(repeat, QLatin1Char('h'));
- break;
- case 'H': // Hour [0..23] (1..2): 1..2 = padded number
- case 'k': // Hour [1..24] (1..2): 1..2 = padded number
- // Qt H is 0..23 hour
- result += QString(repeat, QLatin1Char('H'));
- break;
- case 'm': // Minutes (1..2): 1..2 = padded number
- case 's': // Seconds (1..2): 1..2 = padded number
+ case 'A': // Milliseconds in Day (1..n): 1..n = padded number
+ case 'C': // Input skeleton symbol.
+ case 'D': // Day of Year (1..3): 1..3 = padded number
+ case 'F': // Day of Week in Month (1): 1 = number
+ case 'g': // Modified Julian Day (1..n): 1..n = padded number
+ case 'G': // Era (1..5): 4 = long, 1..3 = short, 5 = narrow
+ case 'j': // Input skeleton symbol.
+ case 'J': // Input skeleton symbol.
+ case 'l': // Deprecated Chinese leap month indicator.
+ case 'q': // Standalone Quarter (1..4): 4 = long, 3 = short, 1,2 = padded number
+ case 'Q': // Quarter (1..4): 4 = long, 3 = short, 1,2 = padded number
+ case 'U': // Cyclic Year Name (1..5): 4 = long, 1..3 = short, 5 = narrow
+ case 'w': // Week of Year (1,2): 1,2 = padded number
+ case 'W': // Week of Month (1): 1 = number
+ case 'Y': // Year for Week-of-year calendars (1..n): 1..n = padded number
+ break;
+
+ case 'u': // Extended Year (1..n), padded number.
+ // Explicitly has no special case for 'uu' as only the last two digits.
+ result += "yyyy"_L1;
+ break;
+ case 'y': // Year (1..n): 2 = short year, 1 & 3..n = padded number
+ // Qt only supports long (4) or short (2) year, use long for all others
+ if (repeat == 2)
+ result += "yy"_L1;
+ else
+ result += "yyyy"_L1;
+ break;
+ case 'L': // Standalone Month (1..5): 4 = long, 3 = short, 1,2 = number, 5 = narrow
+ case 'M': // Month (1..5): 4 = long, 3 = short, 1,2 = number, 5 = narrow
+ // Qt only supports long, short and number, use short for narrow
+ if (repeat == 5)
+ result += "MMM"_L1;
+ else
+ result += QString(repeat, u'M');
+ break;
+ case 'd': // Day of Month (1,2): 1,2 padded number
+ result += QString(repeat, c);
+ break;
+ case 'c': // Standalone version of 'e'
+ case 'e': // Local Day of Week (1..6): 4 = long, 3 = short, 5,6 = narrow, 1,2 padded number
+ // "Local" only affects numeric form: depends on locale's start-day of the week.
+ case 'E': // Day of Week (1..6): 4 = long, 1..3 = short, 5,6 = narrow
+ // Qt only supports long, short: use short for narrow and padded number.
+ if (repeat == 4)
+ result += "dddd"_L1;
+ else
+ result += "ddd"_L1;
+ break;
+ case 'a': // AM/PM (1..n): Qt supports no distinctions
+ case 'b': // Like a, but also distinguishing noon, midnight (ignore difference).
+ case 'B': // Flexible day period (at night, &c.)
+ // Translate to Qt AM/PM, using locale-appropriate case:
+ result += "Ap"_L1;
+ break;
+ case 'h': // Hour [1..12] (1,2): 1,2 = padded number
+ case 'K': // Hour [0..11] (1,2): 1,2 = padded number
+ result += QString(repeat, 'h'_L1);
+ break;
+ case 'H': // Hour [0..23] (1,2): 1,2 = padded number
+ case 'k': // Hour [1..24] (1,2): 1,2 = padded number
+ // Qt H is 0..23 hour
+ result += QString(repeat, 'H'_L1);
+ break;
+ case 'm': // Minutes (1,2): 1,2 = padded number
+ case 's': // Seconds (1,2): 1,2 = padded number
+ result += QString(repeat, c);
+ break;
+ case 'S': // Fractional second (1..n): 1..n = truncates to decimal places
+ // Qt uses msecs either unpadded or padded to 3 places
+ if (repeat < 3)
+ result += u'z';
+ else
+ result += "zzz"_L1;
+ break;
+ case 'O': // Time Zone (1, 4)
+ result += u't';
+ break;
+ case 'v': // Time Zone (1, 4)
+ case 'V': // Time Zone (1..4)
+ result += "tttt"_L1;
+ break;
+ case 'x': // Time Zone (1..5)
+ case 'X': // Time Zone (1..5)
+ result += (repeat > 1 && (repeat & 1)) ? "ttt"_L1 : "tt"_L1;
+ break;
+ case 'z': // Time Zone (1..4)
+ case 'Z': // Time Zone (1..5)
+ result += repeat < 4 ? "tt"_L1 : repeat > 4 ? "ttt"_L1 : "t"_L1;
+ break;
+ default:
+ // a..z and A..Z are reserved for format codes, so any occurrence of these not
+ // already processed are not known and so unsupported formats to be ignored.
+ // All other chars are allowed as literals.
+ if (c < u'A' || c > u'z' || (c > u'Z' && c < u'a'))
result += QString(repeat, c);
- break;
- case 'S': // Fractional second (1..n): 1..n = truncates to decimal places
- // Qt uses msecs either unpadded or padded to 3 places
- if (repeat < 3)
- result += QLatin1Char('z');
- else
- result += QLatin1String("zzz");
- break;
- case 'z': // Time Zone (1..4)
- case 'Z': // Time Zone (1..5)
- case 'O': // Time Zone (1, 4)
- case 'v': // Time Zone (1, 4)
- case 'V': // Time Zone (1..4)
- case 'X': // Time Zone (1..5)
- case 'x': // Time Zone (1..5)
- result += QLatin1Char('t');
- break;
- default:
- // a..z and A..Z are reserved for format codes, so any occurrence of these not
- // already processed are not known and so unsupported formats to be ignored.
- // All other chars are allowed as literals.
- if (c < QLatin1Char('A') || c > QLatin1Char('z') ||
- (c > QLatin1Char('Z') && c < QLatin1Char('a'))) {
- result += QString(repeat, c);
- }
- break;
+ break;
}
i += repeat;
@@ -433,7 +461,7 @@ static QVariant macMeasurementSystem()
{
QCFType<CFLocaleRef> locale = CFLocaleCopyCurrent();
CFStringRef system = static_cast<CFStringRef>(CFLocaleGetValue(locale, kCFLocaleMeasurementSystem));
- if (QString::fromCFString(system) == QLatin1String("Metric")) {
+ if (QString::fromCFString(system) == "Metric"_L1) {
return QLocale::MetricSystem;
} else {
return QLocale::ImperialSystem;
@@ -553,7 +581,7 @@ static QLocale::Language codeToLanguage(QStringView s)
return QLocalePrivate::codeToLanguage(s);
}
-QVariant QSystemLocale::query(QueryType type, QVariant in) const
+QVariant QSystemLocale::query(QueryType type, QVariant &&in) const
{
QMacAutoReleasePool pool;
@@ -621,13 +649,13 @@ QVariant QSystemLocale::query(QueryType type, QVariant in) const
case CurrencySymbol:
return macCurrencySymbol(QLocale::CurrencySymbolFormat(in.toUInt()));
case CurrencyToString:
- return macFormatCurrency(in.value<QSystemLocale::CurrencyToStringArgument>());
+ return macFormatCurrency(in.value<CurrencyToStringArgument>());
case UILanguages: {
QStringList result;
QCFType<CFArrayRef> languages = CFLocaleCopyPreferredLanguages();
- const int cnt = CFArrayGetCount(languages);
+ const CFIndex cnt = CFArrayGetCount(languages);
result.reserve(cnt);
- for (int i = 0; i < cnt; ++i) {
+ for (CFIndex i = 0; i < cnt; ++i) {
const QString lang = QString::fromCFString(
static_cast<CFStringRef>(CFArrayGetValueAtIndex(languages, i)));
result.append(lang);
diff --git a/src/corelib/text/qlocale_p.h b/src/corelib/text/qlocale_p.h
index 5326831bb6..3044d137b9 100644
--- a/src/corelib/text/qlocale_p.h
+++ b/src/corelib/text/qlocale_p.h
@@ -1,42 +1,6 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Copyright (C) 2016 Intel Corporation.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// Copyright (C) 2016 Intel Corporation.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QLOCALE_P_H
#define QLOCALE_P_H
@@ -52,25 +16,98 @@
// We mean it.
//
-#include <QtCore/private/qglobal_p.h>
-#include "QtCore/qstring.h"
-#include "QtCore/qvarlengtharray.h"
-#include "QtCore/qvariant.h"
-#include "QtCore/qnumeric.h"
-#include <QtCore/qcalendar.h>
-
#include "qlocale.h"
+#include <QtCore/qcalendar.h>
+#include <QtCore/qlist.h>
+#include <QtCore/qnumeric.h>
+#include <QtCore/private/qnumeric_p.h>
+#include <QtCore/qstring.h>
+#include <QtCore/qvariant.h>
+#include <QtCore/qvarlengtharray.h>
+#ifdef Q_OS_WASM
+#include <private/qstdweb_p.h>
+#endif
+
#include <limits>
#include <cmath>
+#include <string_view>
QT_BEGIN_NAMESPACE
-#ifndef QT_NO_SYSTEMLOCALE
+template <typename T> struct QSimpleParsedNumber
+{
+ T result;
+ // When used < 0, -used is how much was used, but it was an error.
+ qsizetype used;
+ bool ok() const { return used > 0; }
+};
+
+template <typename MaskType, uchar Lowest> struct QCharacterSetMatch
+{
+ static constexpr int MaxRange = std::numeric_limits<MaskType>::digits;
+ MaskType mask;
+
+ constexpr QCharacterSetMatch(std::string_view set)
+ : mask(0)
+ {
+ for (char c : set) {
+ int idx = uchar(c) - Lowest;
+ mask |= MaskType(1) << idx;
+ }
+ }
+
+ constexpr bool matches(uchar c) const
+ {
+ unsigned idx = c - Lowest;
+ if (idx >= MaxRange)
+ return false;
+ return (mask >> idx) & 1;
+ }
+};
+
+namespace QtPrivate {
+inline constexpr char ascii_space_chars[] =
+ "\t" // 9: HT - horizontal tab
+ "\n" // 10: LF - line feed
+ "\v" // 11: VT - vertical tab
+ "\f" // 12: FF - form feed
+ "\r" // 13: CR - carriage return
+ " "; // 32: space
+
+template <const char *Set, int ForcedLowest = -1>
+inline constexpr auto makeCharacterSetMatch()
+{
+ constexpr auto view = std::string_view(Set);
+ constexpr uchar MinElement = *std::min_element(view.begin(), view.end());
+ constexpr uchar MaxElement = *std::max_element(view.begin(), view.end());
+ constexpr int Range = MaxElement - MinElement;
+ static_assert(Range < 64, "Characters in the set are 64 or more values apart");
+
+ if constexpr (ForcedLowest >= 0) {
+ // use the force
+ static_assert(ForcedLowest <= int(MinElement), "The force is not with you");
+ using MaskType = std::conditional_t<MaxElement - ForcedLowest < 32, quint32, quint64>;
+ return QCharacterSetMatch<MaskType, ForcedLowest>(view);
+ } else if constexpr (MaxElement < std::numeric_limits<qregisteruint>::digits) {
+ // if we can use a Lowest of zero, we can remove a subtraction
+ // from the matches() code at runtime
+ using MaskType = std::conditional_t<(MaxElement < 32), quint32, qregisteruint>;
+ return QCharacterSetMatch<MaskType, 0>(view);
+ } else {
+ using MaskType = std::conditional_t<(Range < 32), quint32, quint64>;
+ return QCharacterSetMatch<MaskType, MinElement>(view);
+ }
+}
+} // QtPrivate
+
struct QLocaleData;
// Subclassed by Android platform plugin:
class Q_CORE_EXPORT QSystemLocale
{
+ Q_DISABLE_COPY_MOVE(QSystemLocale)
+ QSystemLocale *next = nullptr; // Maintains a stack.
+
public:
QSystemLocale();
virtual ~QSystemLocale();
@@ -133,17 +170,13 @@ public:
StandaloneDayNameShort, // QString, in: int
StandaloneDayNameNarrow // QString, in: int
};
- virtual QVariant query(QueryType type, QVariant in = QVariant()) const;
+ virtual QVariant query(QueryType type, QVariant &&in = QVariant()) const;
virtual QLocale fallbackLocale() const;
- inline uint fallbackLocaleIndex() const;
-private:
- QSystemLocale(bool);
- friend class QSystemLocaleSingleton;
+ inline qsizetype fallbackLocaleIndex() const;
};
Q_DECLARE_TYPEINFO(QSystemLocale::QueryType, Q_PRIMITIVE_TYPE);
Q_DECLARE_TYPEINFO(QSystemLocale::CurrencyToStringArgument, Q_RELOCATABLE_TYPE);
-#endif
#if QT_CONFIG(icu)
namespace QIcu {
@@ -155,7 +188,7 @@ namespace QIcu {
struct QLocaleId
{
- [[nodiscard]] static QLocaleId fromName(QStringView name);
+ [[nodiscard]] Q_AUTOTEST_EXPORT static QLocaleId fromName(QStringView name);
[[nodiscard]] inline bool operator==(QLocaleId other) const
{ return language_id == other.language_id && script_id == other.script_id && territory_id == other.territory_id; }
[[nodiscard]] inline bool operator!=(QLocaleId other) const
@@ -191,12 +224,27 @@ struct QLocaleId
};
Q_DECLARE_TYPEINFO(QLocaleId, Q_PRIMITIVE_TYPE);
+
+using CharBuff = QVarLengthArray<char, 256>;
+
+struct ParsingResult
+{
+ enum State { // A duplicate of QValidator::State
+ Invalid,
+ Intermediate,
+ Acceptable
+ };
+
+ State state = Invalid;
+ CharBuff buff;
+};
+
struct QLocaleData
{
public:
// Having an index for each locale enables us to have diverse sources of
// data, e.g. calendar locales, as well as the main CLDR-derived data.
- [[nodiscard]] static int findLocaleIndex(QLocaleId localeId);
+ [[nodiscard]] static qsizetype findLocaleIndex(QLocaleId localeId);
[[nodiscard]] static const QLocaleData *c();
enum DoubleForm {
@@ -224,8 +272,6 @@ public:
enum NumberMode { IntegerMode, DoubleStandardMode, DoubleScientificMode };
- typedef QVarLengthArray<char, 256> CharBuff;
-
private:
enum PrecisionMode {
PMDecimalDigits = 0x01,
@@ -259,45 +305,82 @@ public:
unsigned flags = NoFlags) const;
// this function is meant to be called with the result of stringToDouble or bytearrayToDouble
+ // so *ok must have been properly set (if not null)
[[nodiscard]] static float convertDoubleToFloat(double d, bool *ok)
{
- if (qIsInf(d))
- return float(d);
- if (std::fabs(d) > std::numeric_limits<float>::max()) {
- if (ok)
- *ok = false;
- const float huge = std::numeric_limits<float>::infinity();
- return d < 0 ? -huge : huge;
- }
- if (d != 0 && float(d) == 0) {
- // Values that underflow double already failed. Match them:
- if (ok)
- *ok = false;
- return 0;
- }
- return float(d);
+ float result;
+ bool b = convertDoubleTo<float>(d, &result);
+ if (ok && *ok)
+ *ok = b;
+ return result;
}
[[nodiscard]] double stringToDouble(QStringView str, bool *ok,
QLocale::NumberOptions options) const;
- [[nodiscard]] qint64 stringToLongLong(QStringView str, int base, bool *ok,
- QLocale::NumberOptions options) const;
- [[nodiscard]] quint64 stringToUnsLongLong(QStringView str, int base, bool *ok,
- QLocale::NumberOptions options) const;
+ [[nodiscard]] QSimpleParsedNumber<qint64>
+ stringToLongLong(QStringView str, int base, QLocale::NumberOptions options) const;
+ [[nodiscard]] QSimpleParsedNumber<quint64>
+ stringToUnsLongLong(QStringView str, int base, QLocale::NumberOptions options) const;
// this function is used in QIntValidator (QtGui)
- [[nodiscard]] Q_CORE_EXPORT static qint64 bytearrayToLongLong(QByteArrayView num, int base,
- bool *ok);
- [[nodiscard]] static quint64 bytearrayToUnsLongLong(QByteArrayView num, int base, bool *ok);
+ [[nodiscard]] Q_CORE_EXPORT
+ static QSimpleParsedNumber<qint64> bytearrayToLongLong(QByteArrayView num, int base);
+ [[nodiscard]] static QSimpleParsedNumber<quint64>
+ bytearrayToUnsLongLong(QByteArrayView num, int base);
[[nodiscard]] bool numberToCLocale(QStringView s, QLocale::NumberOptions number_options,
- CharBuff *result) const;
- [[nodiscard]] inline char numericToCLocale(QStringView in) const;
+ NumberMode mode, CharBuff *result) const;
+
+ struct NumericData
+ {
+#ifndef QT_NO_SYSTEMLOCALE
+ // Only used for the system locale, to store data for the view to look at:
+ QString sysDecimal, sysGroup, sysMinus, sysPlus;
+#endif
+ QStringView decimal, group, minus, plus, exponent;
+ char32_t zeroUcs = 0;
+ qint8 zeroLen = 0;
+ bool isC = false; // C locale sets this and nothing else.
+ bool exponentCyrillic = false; // True only for floating-point parsing of Cyrillic.
+ void setZero(QStringView zero)
+ {
+ // No known locale has digits that are more than one Unicode
+ // code-point, so we can safely deal with digits as plain char32_t.
+ switch (zero.size()) {
+ case 1:
+ Q_ASSERT(!zero.at(0).isSurrogate());
+ zeroUcs = zero.at(0).unicode();
+ zeroLen = 1;
+ break;
+ case 2:
+ Q_ASSERT(zero.at(0).isHighSurrogate());
+ zeroUcs = QChar::surrogateToUcs4(zero.at(0), zero.at(1));
+ zeroLen = 2;
+ break;
+ default:
+ Q_ASSERT(zero.size() == 0); // i.e. we got no value to use
+ break;
+ }
+ }
+ [[nodiscard]] bool isValid(NumberMode mode) const // Asserted as a sanity check.
+ {
+ if (isC)
+ return true;
+ if (exponentCyrillic && exponent != u"E" && exponent != u"\u0415")
+ return false;
+ return (zeroLen == 1 || zeroLen == 2) && zeroUcs > 0
+ && (mode == IntegerMode || !decimal.isEmpty())
+ // group may be empty (user config in system locale)
+ && !minus.isEmpty() && !plus.isEmpty()
+ && (mode != DoubleScientificMode || !exponent.isEmpty());
+ }
+ };
+ [[nodiscard]] inline NumericData numericData(NumberMode mode) const;
// this function is used in QIntValidator (QtGui)
- [[nodiscard]] Q_CORE_EXPORT bool validateChars(
- QStringView str, NumberMode numMode, QByteArray *buff, int decDigits = -1,
- QLocale::NumberOptions number_options = QLocale::DefaultNumberOptions) const;
+ [[nodiscard]] Q_CORE_EXPORT ParsingResult
+ validateChars(QStringView str, NumberMode numMode, int decDigits = -1,
+ QLocale::NumberOptions number_options = QLocale::DefaultNumberOptions) const;
// Access to assorted data members:
[[nodiscard]] QLocaleId id() const
@@ -327,11 +410,11 @@ public:
{
return { reinterpret_cast<const QChar *>(table + offset), size };
}
- [[nodiscard]] QString getListEntry(const char16_t *table, int index) const
+ [[nodiscard]] QString getListEntry(const char16_t *table, qsizetype index) const
{
return listEntry(table, index).getData(table);
}
- [[nodiscard]] QStringView viewListEntry(const char16_t *table, int index) const
+ [[nodiscard]] QStringView viewListEntry(const char16_t *table, qsizetype index) const
{
return listEntry(table, index).viewData(table);
}
@@ -344,7 +427,7 @@ public:
return 0;
}
private:
- [[nodiscard]] DataRange listEntry(const char16_t *table, int index) const
+ [[nodiscard]] DataRange listEntry(const char16_t *table, qsizetype index) const
{
const char16_t separator = ';';
quint16 i = 0;
@@ -399,7 +482,7 @@ public:
quint8 m_first_day_of_week : 3;
quint8 m_weekend_start : 3;
quint8 m_weekend_end : 3;
- quint8 m_grouping_top : 2; // Must have this many before the first grouping separator
+ quint8 m_grouping_top : 2; // Don't group until more significant group has this many digits.
quint8 m_grouping_higher : 3; // Number of digits between grouping separators
quint8 m_grouping_least : 3; // Number of digits after last grouping separator (before decimal).
};
@@ -407,7 +490,7 @@ public:
class QLocalePrivate
{
public:
- constexpr QLocalePrivate(const QLocaleData *data, const uint index,
+ constexpr QLocalePrivate(const QLocaleData *data, qsizetype index,
QLocale::NumberOptions numberOptions = QLocale::DefaultNumberOptions,
int refs = 0)
: m_data(data), ref Q_BASIC_ATOMIC_INITIALIZER(refs),
@@ -418,22 +501,22 @@ public:
[[nodiscard]] QByteArray bcp47Name(char separator = '-') const;
- [[nodiscard]] inline QLatin1String
+ [[nodiscard]] inline std::array<char, 4>
languageCode(QLocale::LanguageCodeTypes codeTypes = QLocale::AnyLanguageCode) const
{
return languageToCode(QLocale::Language(m_data->m_language_id), codeTypes);
}
- [[nodiscard]] inline QLatin1String scriptCode() const
+ [[nodiscard]] inline QLatin1StringView scriptCode() const
{ return scriptToCode(QLocale::Script(m_data->m_script_id)); }
- [[nodiscard]] inline QLatin1String territoryCode() const
+ [[nodiscard]] inline QLatin1StringView territoryCode() const
{ return territoryToCode(QLocale::Territory(m_data->m_territory_id)); }
[[nodiscard]] static const QLocalePrivate *get(const QLocale &l) { return l.d; }
- [[nodiscard]] static QLatin1String
+ [[nodiscard]] static std::array<char, 4>
languageToCode(QLocale::Language language,
QLocale::LanguageCodeTypes codeTypes = QLocale::AnyLanguageCode);
- [[nodiscard]] static QLatin1String scriptToCode(QLocale::Script script);
- [[nodiscard]] static QLatin1String territoryToCode(QLocale::Territory territory);
+ [[nodiscard]] static QLatin1StringView scriptToCode(QLocale::Script script);
+ [[nodiscard]] static QLatin1StringView territoryToCode(QLocale::Territory territory);
[[nodiscard]] static QLocale::Language
codeToLanguage(QStringView code,
QLocale::LanguageCodeTypes codeTypes = QLocale::AnyLanguageCode) noexcept;
@@ -445,14 +528,14 @@ public:
// System locale has an m_data all its own; all others have m_data = locale_data + m_index
const QLocaleData *const m_data;
QBasicAtomicInt ref;
- const uint m_index;
+ qsizetype m_index; // System locale needs this updated when m_data->id() changes.
QLocale::NumberOptions m_numberOptions;
static QBasicAtomicInt s_generation;
};
#ifndef QT_NO_SYSTEMLOCALE
-uint QSystemLocale::fallbackLocaleIndex() const { return fallbackLocale().d->m_index; }
+qsizetype QSystemLocale::fallbackLocaleIndex() const { return fallbackLocale().d->m_index; }
#endif
template <>
@@ -463,90 +546,26 @@ inline QLocalePrivate *QSharedDataPointer<QLocalePrivate>::clone()
return new QLocalePrivate(d->m_data, d->m_index, d->m_numberOptions);
}
-inline char QLocaleData::numericToCLocale(QStringView in) const
-{
- Q_ASSERT(in.size() == 1 || (in.size() == 2 && in.at(0).isHighSurrogate()));
-
- if (in == positiveSign() || in == u"+")
- return '+';
-
- if (in == negativeSign() || in == u"-" || in == u"\x2212")
- return '-';
-
- if (in == decimalPoint())
- return '.';
-
- if (in.compare(exponentSeparator(), Qt::CaseInsensitive) == 0)
- return 'e';
-
- const QString group = groupSeparator();
- if (in == group)
- return ',';
-
- // In several languages group() is a non-breaking space (U+00A0) or its thin
- // version (U+202f), which look like spaces. People (and thus some of our
- // tests) use a regular space instead and complain if it doesn't work.
- // Should this be extended generally to any case where group is a space ?
- if ((group == u"\xa0" || group == u"\x202f") && in == u" ")
- return ',';
-
- const char32_t inUcs4 = in.size() == 2
- ? QChar::surrogateToUcs4(in.at(0), in.at(1)) : in.at(0).unicode();
- const char32_t zeroUcs4 = zeroUcs();
- // Must match qlocale_tools.h's unicodeForDigit()
- if (zeroUcs4 == u'\u3007') {
- // QTBUG-85409: Suzhou's digits aren't contiguous !
- if (inUcs4 == zeroUcs4)
- return '0';
- if (inUcs4 > u'\u3020' && inUcs4 <= u'\u3029')
- return inUcs4 - u'\u3020';
- } else if (zeroUcs4 <= inUcs4 && inUcs4 < zeroUcs4 + 10) {
- return '0' + inUcs4 - zeroUcs4;
- }
- if ('0' <= inUcs4 && inUcs4 <= '9')
- return inUcs4;
-
- return 0;
-}
-
// Also used to merely skip over an escape in a format string, advancint idx to
// point after it (so not [[nodiscard]]):
-QString qt_readEscapedFormatString(QStringView format, int *idx);
+QString qt_readEscapedFormatString(QStringView format, qsizetype *idx);
[[nodiscard]] bool qt_splitLocaleName(QStringView name, QStringView *lang = nullptr,
QStringView *script = nullptr, QStringView *cntry = nullptr);
-[[nodiscard]] int qt_repeatCount(QStringView s);
-
-enum { AsciiSpaceMask = (1u << (' ' - 1)) |
- (1u << ('\t' - 1)) | // 9: HT - horizontal tab
- (1u << ('\n' - 1)) | // 10: LF - line feed
- (1u << ('\v' - 1)) | // 11: VT - vertical tab
- (1u << ('\f' - 1)) | // 12: FF - form feed
- (1u << ('\r' - 1)) }; // 13: CR - carriage return
+[[nodiscard]] qsizetype qt_repeatCount(QStringView s);
+
[[nodiscard]] constexpr inline bool ascii_isspace(uchar c)
{
- return c >= 1u && c <= 32u && (AsciiSpaceMask >> uint(c - 1)) & 1u;
+ constexpr auto matcher = QtPrivate::makeCharacterSetMatch<QtPrivate::ascii_space_chars>();
+ return matcher.matches(c);
}
-static_assert(ascii_isspace(' '));
-static_assert(ascii_isspace('\t'));
-static_assert(ascii_isspace('\n'));
-static_assert(ascii_isspace('\v'));
-static_assert(ascii_isspace('\f'));
-static_assert(ascii_isspace('\r'));
-static_assert(!ascii_isspace('\0'));
-static_assert(!ascii_isspace('\a'));
-static_assert(!ascii_isspace('a'));
-static_assert(!ascii_isspace('\177'));
-static_assert(!ascii_isspace(uchar('\200')));
-static_assert(!ascii_isspace(uchar('\xA0')));
-static_assert(!ascii_isspace(uchar('\377')));
-
QT_END_NAMESPACE
-Q_DECLARE_METATYPE(QStringView)
-Q_DECLARE_METATYPE(QList<Qt::DayOfWeek>)
+// ### move to qnamespace.h
+QT_DECL_METATYPE_EXTERN_TAGGED(QList<Qt::DayOfWeek>, QList_Qt__DayOfWeek, Q_CORE_EXPORT)
#ifndef QT_NO_SYSTEMLOCALE
-Q_DECLARE_METATYPE(QSystemLocale::CurrencyToStringArgument)
+QT_DECL_METATYPE_EXTERN_TAGGED(QSystemLocale::CurrencyToStringArgument,
+ QSystemLocale__CurrencyToStringArgument, Q_CORE_EXPORT)
#endif
#endif // QLOCALE_P_H
diff --git a/src/corelib/text/qlocale_tools.cpp b/src/corelib/text/qlocale_tools.cpp
index c133a028c0..b6639bcb71 100644
--- a/src/corelib/text/qlocale_tools.cpp
+++ b/src/corelib/text/qlocale_tools.cpp
@@ -1,48 +1,13 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Copyright (C) 2016 Intel Corporation.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// Copyright (C) 2016 Intel Corporation.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qlocale_tools_p.h"
#include "qdoublescanprint_p.h"
#include "qlocale_p.h"
#include "qstring.h"
+#include <private/qtools_p.h>
#include <private/qnumeric_p.h>
#include <ctype.h>
@@ -73,9 +38,12 @@
QT_BEGIN_NAMESPACE
+using namespace QtMiscUtils;
+
QT_CLOCALE_HOLDER
-void qt_doubleToAscii(double d, QLocaleData::DoubleForm form, int precision, char *buf, int bufSize,
+void qt_doubleToAscii(double d, QLocaleData::DoubleForm form, int precision,
+ char *buf, qsizetype bufSize,
bool &sign, int &length, int &decpt)
{
if (bufSize == 0) {
@@ -129,7 +97,12 @@ void qt_doubleToAscii(double d, QLocaleData::DoubleForm form, int precision, cha
} else {
mode = double_conversion::DoubleToStringConverter::FIXED;
}
- double_conversion::DoubleToStringConverter::DoubleToAscii(d, mode, precision, buf, bufSize,
+ // libDoubleConversion is limited to 32-bit lengths. It's ok to cap the buffer size,
+ // though, because the library will never write 2GiB of chars as output
+ // (the length out-parameter is just an int, too).
+ const auto boundedBufferSize = static_cast<int>((std::min)(bufSize, qsizetype(INT_MAX)));
+ double_conversion::DoubleToStringConverter::DoubleToAscii(d, mode, precision, buf,
+ boundedBufferSize,
&sign, &length, &decpt);
#else // QT_NO_DOUBLECONVERSION || QT_BOOTSTRAPPED
@@ -221,11 +194,10 @@ void qt_doubleToAscii(double d, QLocaleData::DoubleForm form, int precision, cha
// which case the missing digits are zeroes. In the 'e' case decptInTarget is always 1,
// as variants of snprintf always generate numbers with one digit before the '.' then.
// This is why the final decimal point is offset by 1, relative to the number after 'e'.
- bool ok;
- const char *endptr;
- decpt = qstrntoll(target.data() + eSign + 1, length - eSign - 1, &endptr, 10, &ok) + 1;
- Q_ASSERT(ok);
- Q_ASSERT(endptr - target.data() <= length);
+ auto r = qstrntoll(target.data() + eSign + 1, length - eSign - 1, 10);
+ decpt = r.result + 1;
+ Q_ASSERT(r.ok());
+ Q_ASSERT(r.used + eSign + 1 <= length);
} else {
// No 'e' found, so it's the 'f' form. Variants of snprintf generate numbers with
// potentially multiple digits before the '.', but without decimal exponent then. So we
@@ -278,48 +250,50 @@ void qt_doubleToAscii(double d, QLocaleData::DoubleForm form, int precision, cha
--length;
}
-double qt_asciiToDouble(const char *num, qsizetype numLen, bool &ok, int &processed,
- StrayCharacterMode strayCharMode)
+QSimpleParsedNumber<double> qt_asciiToDouble(const char *num, qsizetype numLen,
+ StrayCharacterMode strayCharMode)
{
- auto string_equals = [](const char *needle, const char *haystack, qsizetype haystackLen) {
- qsizetype needleLen = strlen(needle);
- return needleLen == haystackLen && memcmp(needle, haystack, haystackLen) == 0;
- };
-
- if (numLen == 0) {
- ok = false;
- processed = 0;
- return 0.0;
- }
-
- ok = true;
+ if (numLen <= 0)
+ return {};
// We have to catch NaN before because we need NaN as marker for "garbage" in the
// libdouble-conversion case and, in contrast to libdouble-conversion or sscanf, we don't allow
// "-nan" or "+nan"
- if (string_equals("nan", num, numLen)) {
- processed = 3;
- return qt_qnan();
- } else if (string_equals("+nan", num, numLen) || string_equals("-nan", num, numLen)) {
- processed = 0;
- ok = false;
- return 0.0;
- }
+ if (char c = *num; numLen >= 3
+ && (c == '-' || c == '+' || c == 'I' || c == 'i' || c == 'N' || c == 'n')) {
+ bool negative = (c == '-');
+ bool hasSign = negative || (c == '+');
+ qptrdiff offset = 0;
+ if (hasSign) {
+ offset = 1;
+ c = num[offset];
+ }
- // Infinity values are implementation defined in the sscanf case. In the libdouble-conversion
- // case we need infinity as overflow marker.
- if (string_equals("+inf", num, numLen)) {
- processed = 4;
- return qt_inf();
- } else if (string_equals("inf", num, numLen)) {
- processed = 3;
- return qt_inf();
- } else if (string_equals("-inf", num, numLen)) {
- processed = 4;
- return -qt_inf();
+ if (c > '9') {
+ auto lowered = [](char c) {
+ // this will mangle non-letters, but none can become a letter
+ return c | 0x20;
+ };
+
+ // Found a non-digit, so this MUST be either "inf", "+inf", "-inf"
+ // or "nan". Anything else is an invalid parse and we don't need to
+ // feed it to the converter below.
+ if (numLen != offset + 3)
+ return {};
+
+ c = lowered(c);
+ char c2 = lowered(num[offset + 1]);
+ char c3 = lowered(num[offset + 2]);
+ if (c == 'i' && c2 == 'n' && c3 == 'f')
+ return { negative ? -qt_inf() : qt_inf(), offset + 3 };
+ else if (c == 'n' && c2 == 'a' && c3 == 'n' && !hasSign)
+ return { qt_qnan(), 3 };
+ return {};
+ }
}
double d = 0.0;
+ int processed;
#if !defined(QT_NO_DOUBLECONVERSION) && !defined(QT_BOOTSTRAPPED)
int conv_flags = double_conversion::StringToDoubleConverter::NO_FLAGS;
if (strayCharMode == TrailingJunkAllowed) {
@@ -331,64 +305,47 @@ double qt_asciiToDouble(const char *num, qsizetype numLen, bool &ok, int &proces
double_conversion::StringToDoubleConverter conv(conv_flags, 0.0, qt_qnan(), nullptr, nullptr);
if (int(numLen) != numLen) {
// a number over 2 GB in length is silly, just assume it isn't valid
- ok = false;
- processed = 0;
- return 0.0;
+ return {};
} else {
- d = conv.StringToDouble(num, numLen, &processed);
+ d = conv.StringToDouble(num, int(numLen), &processed);
}
- if (!qIsFinite(d)) {
- ok = false;
- if (qIsNaN(d)) {
+ if (!qt_is_finite(d)) {
+ if (qt_is_nan(d)) {
// Garbage found. We don't accept it and return 0.
- processed = 0;
- return 0.0;
+ return {};
} else {
// Overflow. That's not OK, but we still return infinity.
- return d;
+ return { d, -processed };
}
}
#else
- // need to ensure that our input is null-terminated for sscanf
- // (this is a QVarLengthArray<char, 128> but this code here is too low-level for QVLA)
- char reasonableBuffer[128];
- char *buffer;
- if (numLen < qsizetype(sizeof(reasonableBuffer)) - 1)
- buffer = reasonableBuffer;
- else
- buffer = static_cast<char *>(malloc(numLen + 1));
- Q_CHECK_PTR(buffer);
- memcpy(buffer, num, numLen);
- buffer[numLen] = '\0';
-
- if (qDoubleSscanf(buffer, QT_CLOCALE, "%lf%n", &d, &processed) < 1)
- processed = 0;
+ // ::digits10 is 19, but ::max() is 18'446'744'073'709'551'615ULL - go, figure...
+ constexpr auto maxDigitsForULongLong = 1 + std::numeric_limits<unsigned long long>::digits10;
+ // need to ensure that we don't read more than numLen of input:
+ char fmt[1 + maxDigitsForULongLong + 4 + 1];
+ qsnprintf(fmt, sizeof fmt, "%s%llu%s", "%", static_cast<unsigned long long>(numLen), "lf%n");
- if (buffer != reasonableBuffer)
- free(buffer);
+ if (qDoubleSscanf(num, QT_CLOCALE, fmt, &d, &processed) < 1)
+ processed = 0;
- if ((strayCharMode == TrailingJunkProhibited && processed != numLen) || qIsNaN(d)) {
+ if ((strayCharMode == TrailingJunkProhibited && processed != numLen) || qt_is_nan(d)) {
// Implementation defined nan symbol or garbage found. We don't accept it.
- processed = 0;
- ok = false;
- return 0.0;
+ return {};
}
- if (!qIsFinite(d)) {
+ if (!qt_is_finite(d)) {
// Overflow. Check for implementation-defined infinity symbols and reject them.
// We assume that any infinity symbol has to contain a character that cannot be part of a
// "normal" number (that is 0-9, ., -, +, e).
- ok = false;
for (int i = 0; i < processed; ++i) {
char c = num[i];
if ((c < '0' || c > '9') && c != '.' && c != '-' && c != '+' && c != 'e' && c != 'E') {
// Garbage found
- processed = 0;
- return 0.0;
+ return {};
}
}
- return d;
+ return { d, -processed };
}
#endif // !defined(QT_NO_DOUBLECONVERSION) && !defined(QT_BOOTSTRAPPED)
@@ -400,40 +357,51 @@ double qt_asciiToDouble(const char *num, qsizetype numLen, bool &ok, int &proces
for (int i = 0; i < processed; ++i) {
if (num[i] >= '1' && num[i] <= '9') {
// if a digit before any 'e' is not 0, then a non-zero number was intended.
- ok = false;
- return 0.0;
+ return {d, -processed};
} else if (num[i] == 'e' || num[i] == 'E') {
break;
}
}
}
- return d;
+ return { d, processed };
}
-/* Detect base if 0 and, if base is hex, skip over 0x prefix */
+/* Detect base if 0 and, if base is hex or bin, skip over 0x/0b prefixes */
static auto scanPrefix(const char *p, const char *stop, int base)
{
- if (p < stop && *p >= '0' && *p <= '9') {
+ struct R
+ {
+ const char *next;
+ int base;
+ };
+ if (p < stop && isAsciiDigit(*p)) {
if (*p == '0') {
- const char *x = p + 1;
- if (x < stop && (*x == 'x' || *x == 'X')) {
- if (base == 0)
- base = 16;
- if (base == 16)
- p += 2;
- } else if (base == 0) {
- base = 8;
+ const char *x_or_b = p + 1;
+ if (x_or_b < stop) {
+ switch (*x_or_b) {
+ case 'b':
+ case 'B':
+ if (base == 0)
+ base = 2;
+ if (base == 2)
+ p += 2;
+ return R{p, base};
+ case 'x':
+ case 'X':
+ if (base == 0)
+ base = 16;
+ if (base == 16)
+ p += 2;
+ return R{p, base};
+ }
}
+ if (base == 0)
+ base = 8;
} else if (base == 0) {
base = 10;
}
Q_ASSERT(base);
}
- struct R
- {
- const char *next;
- int base;
- };
return R{p, base};
}
@@ -450,36 +418,25 @@ static bool isDigitForBase(char d, int base)
return false;
}
-unsigned long long
-qstrntoull(const char *begin, qsizetype size, const char **endptr, int base, bool *ok)
+QSimpleParsedNumber<qulonglong> qstrntoull(const char *begin, qsizetype size, int base)
{
const char *p = begin, *const stop = begin + size;
while (p < stop && ascii_isspace(*p))
++p;
unsigned long long result = 0;
- if (p >= stop || *p == '-') {
- *ok = false;
- if (endptr)
- *endptr = begin;
- return result;
- }
+ if (p >= stop || *p == '-')
+ return { };
const auto prefix = scanPrefix(*p == '+' ? p + 1 : p, stop, base);
- if (!prefix.base || prefix.next >= stop) {
- if (endptr)
- *endptr = begin;
- *ok = false;
- return 0;
- }
+ if (!prefix.base || prefix.next >= stop)
+ return { };
const auto res = std::from_chars(prefix.next, stop, result, prefix.base);
- *ok = res.ec == std::errc{};
- if (endptr)
- *endptr = res.ptr == prefix.next ? begin : res.ptr;
- return result;
+ if (res.ec != std::errc{})
+ return { };
+ return { result, res.ptr == prefix.next ? 0 : res.ptr - begin };
}
-long long
-qstrntoll(const char *begin, qsizetype size, const char **endptr, int base, bool *ok)
+QSimpleParsedNumber<qlonglong> qstrntoll(const char *begin, qsizetype size, int base)
{
const char *p = begin, *const stop = begin + size;
while (p < stop && ascii_isspace(*p))
@@ -494,30 +451,22 @@ qstrntoll(const char *begin, qsizetype size, const char **endptr, int base, bool
const auto prefix = scanPrefix(p, stop, base);
// Must check for digit, as from_chars() will accept a sign, which would be
// a second sign, that we should reject.
- if (!prefix.base || prefix.next >= stop || !isDigitForBase(*prefix.next, prefix.base)) {
- if (endptr)
- *endptr = begin;
- *ok = false;
- return 0;
- }
+ if (!prefix.base || prefix.next >= stop || !isDigitForBase(*prefix.next, prefix.base))
+ return { };
long long result = 0;
auto res = std::from_chars(prefix.next, stop, result, prefix.base);
- *ok = res.ec == std::errc{};
if (negate && res.ec == std::errc::result_out_of_range) {
// Maybe LLONG_MIN:
unsigned long long check = 0;
res = std::from_chars(prefix.next, stop, check, prefix.base);
- if (res.ec == std::errc{} && check + std::numeric_limits<long long>::min() == 0) {
- *ok = true;
- if (endptr)
- *endptr = res.ptr;
- return std::numeric_limits<long long>::min();
- }
+ if (res.ec == std::errc{} && check + std::numeric_limits<long long>::min() == 0)
+ return { std::numeric_limits<long long>::min(), res.ptr - begin };
+ return { };
}
- if (endptr)
- *endptr = res.ptr == prefix.next ? begin : res.ptr;
- return negate && *ok ? -result : result;
+ if (res.ec != std::errc{})
+ return { };
+ return { negate ? -result : result, res.ptr - begin };
}
template <typename Char>
@@ -597,8 +546,7 @@ QString qulltoa(qulonglong number, int base, const QStringView zero)
number /= base;
}
} else { // zero should always be either a non-surrogate or a surrogate pair:
- Q_UNREACHABLE();
- return QString();
+ Q_UNREACHABLE_RETURN(QString());
}
return QString(reinterpret_cast<QChar *>(p), end - p);
@@ -607,18 +555,18 @@ QString qulltoa(qulonglong number, int base, const QStringView zero)
/*!
\internal
- Converts the initial portion of the string pointed to by \a s00 to a double, using the 'C' locale.
+ Converts the initial portion of the string pointed to by \a s00 to a double,
+ using the 'C' locale. The function sets the pointer pointed to by \a se to
+ point to the character past the last character converted.
*/
double qstrntod(const char *s00, qsizetype len, const char **se, bool *ok)
{
- int processed = 0;
- bool nonNullOk = false;
- double d = qt_asciiToDouble(s00, len, nonNullOk, processed, TrailingJunkAllowed);
+ auto r = qt_asciiToDouble(s00, len, TrailingJunkAllowed);
if (se)
- *se = s00 + processed;
+ *se = s00 + (r.used < 0 ? -r.used : r.used);
if (ok)
- *ok = nonNullOk;
- return d;
+ *ok = r.ok();
+ return r.result;
}
QString qdtoa(qreal d, int *decpt, int *sign)
@@ -628,7 +576,7 @@ QString qdtoa(qreal d, int *decpt, int *sign)
int length = 0;
// Some versions of libdouble-conversion like an extra digit, probably for '\0'
- constexpr int digits = std::numeric_limits<double>::max_digits10 + 1;
+ constexpr qsizetype digits = std::numeric_limits<double>::max_digits10 + 1;
char result[digits];
qt_doubleToAscii(d, QLocaleData::DFSignificantDigits, QLocale::FloatingPointShortest,
result, digits, nonNullSign, length, nonNullDecpt);
@@ -638,7 +586,7 @@ QString qdtoa(qreal d, int *decpt, int *sign)
if (decpt)
*decpt = nonNullDecpt;
- return QLatin1String(result, length);
+ return QLatin1StringView(result, length);
}
static QLocaleData::DoubleForm resolveFormat(int precision, int decpt, qsizetype length)
@@ -703,7 +651,7 @@ static T dtoString(double d, QLocaleData::DoubleForm form, int precision, bool u
int bufSize = 1;
if (precision == QLocale::FloatingPointShortest)
bufSize += D::max_digits10;
- else if (form == QLocaleData::DFDecimal && qIsFinite(d))
+ else if (form == QLocaleData::DFDecimal && qt_is_finite(d))
bufSize += wholePartSpace(qAbs(d)) + precision;
else // Add extra digit due to different interpretations of precision.
bufSize += qMax(2, precision) + 1; // Must also be big enough for "nan" or "inf"
@@ -714,11 +662,11 @@ static T dtoString(double d, QLocaleData::DoubleForm form, int precision, bool u
bool negative = false;
int length = 0;
int decpt = 0;
- qt_doubleToAscii(d, form, precision, buffer.data(), buffer.length(), negative, length, decpt);
- QLatin1String view(buffer.data(), buffer.data() + length);
+ qt_doubleToAscii(d, form, precision, buffer.data(), buffer.size(), negative, length, decpt);
+ QLatin1StringView view(buffer.data(), length);
const bool succinct = form == QLocaleData::DFSignificantDigits;
qsizetype total = (negative ? 1 : 0) + length;
- if (qIsFinite(d)) {
+ if (qt_is_finite(d)) {
if (succinct)
form = resolveFormat(precision, decpt, view.size());
@@ -760,7 +708,7 @@ static T dtoString(double d, QLocaleData::DoubleForm form, int precision, bool u
if (negative && !isZero(d)) // We don't return "-0"
result.append(Char('-'));
- if (!qIsFinite(d)) {
+ if (!qt_is_finite(d)) {
result.append(view);
if (uppercase)
result = std::move(result).toUpper();
@@ -781,7 +729,7 @@ static T dtoString(double d, QLocaleData::DoubleForm form, int precision, bool u
result.append(Char(uppercase ? 'E' : 'e'));
result.append(Char(exponent < 0 ? '-' : '+'));
exponent = std::abs(exponent);
- Q_ASSUME(exponent <= D::max_exponent10 + D::max_digits10);
+ Q_ASSERT(exponent <= D::max_exponent10 + D::max_digits10);
int exponentDigits = digits(exponent);
// C's printf guarantees a two-digit exponent, and so do we:
if (exponentDigits == 1)
diff --git a/src/corelib/text/qlocale_tools_p.h b/src/corelib/text/qlocale_tools_p.h
index a4dbcf209b..9b02403ea4 100644
--- a/src/corelib/text/qlocale_tools_p.h
+++ b/src/corelib/text/qlocale_tools_p.h
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QLOCALE_TOOLS_P_H
#define QLOCALE_TOOLS_P_H
@@ -63,9 +27,11 @@ enum StrayCharacterMode {
};
// API note: this function can't process a number with more than 2.1 billion digits
-[[nodiscard]] double qt_asciiToDouble(const char *num, qsizetype numLen, bool &ok, int &processed,
- StrayCharacterMode strayCharMode = TrailingJunkProhibited);
-void qt_doubleToAscii(double d, QLocaleData::DoubleForm form, int precision, char *buf, int bufSize,
+[[nodiscard]] QSimpleParsedNumber<double>
+qt_asciiToDouble(const char *num, qsizetype numLen,
+ StrayCharacterMode strayCharMode = TrailingJunkProhibited);
+void qt_doubleToAscii(double d, QLocaleData::DoubleForm form, int precision,
+ char *buf, qsizetype bufSize,
bool &sign, int &length, int &decpt);
[[nodiscard]] QString qulltoBasicLatin(qulonglong l, int base, bool negative);
@@ -94,7 +60,7 @@ void qt_doubleToAscii(double d, QLocaleData::DoubleForm form, int precision, cha
template <typename UcsInt>
[[nodiscard]] inline UcsInt unicodeForDigit(uint digit, UcsInt zero)
{
- // Must match QLocaleData::numericToCLocale()'s digit-digestion.
+ // Must match qlocale.cpp's NumberTokenizer's digit-digestion.
Q_ASSERT(digit < 10);
if (!digit)
return zero;
@@ -116,10 +82,9 @@ template <typename UcsInt>
return qstrntod(s00, len, se, ok);
}
-[[nodiscard]] qlonglong qstrntoll(const char *nptr, qsizetype size, const char **endptr,
- int base, bool *ok);
-[[nodiscard]] qulonglong qstrntoull(const char *nptr, qsizetype size, const char **endptr,
- int base, bool *ok);
+[[nodiscard]] Q_AUTOTEST_EXPORT
+QSimpleParsedNumber<qlonglong> qstrntoll(const char *nptr, qsizetype size, int base);
+[[nodiscard]] QSimpleParsedNumber<qulonglong> qstrntoull(const char *nptr, qsizetype size, int base);
QT_END_NAMESPACE
diff --git a/src/corelib/text/qlocale_unix.cpp b/src/corelib/text/qlocale_unix.cpp
index 84afaa377c..a934f24c01 100644
--- a/src/corelib/text/qlocale_unix.cpp
+++ b/src/corelib/text/qlocale_unix.cpp
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qlocale_p.h"
@@ -47,6 +11,8 @@
QT_BEGIN_NAMESPACE
+using namespace Qt::StringLiterals;
+
#ifndef QT_NO_SYSTEMLOCALE
struct QSystemLocaleData
{
@@ -144,12 +110,12 @@ QLocale QSystemLocale::fallbackLocale() const
if (lang.isEmpty())
lang = qEnvironmentVariable("LANG");
// if the locale is the "C" locale, then we can return the language we found here:
- if (lang.isEmpty() || lang == QLatin1String("C") || lang == QLatin1String("POSIX"))
+ if (lang.isEmpty() || lang == "C"_L1 || lang == "POSIX"_L1)
return QLocale(lang);
// ... otherwise, if the first part of LANGUAGE says more than or
// contradicts what we have, use that:
- for (const auto &language : qEnvironmentVariable("LANGUAGE").tokenize(QLatin1Char(':'))) {
+ for (const auto &language : qEnvironmentVariable("LANGUAGE").tokenize(u':')) {
if (contradicts(language, lang))
return QLocale(language);
break; // We only look at the first entry.
@@ -158,7 +124,7 @@ QLocale QSystemLocale::fallbackLocale() const
return QLocale(lang);
}
-QVariant QSystemLocale::query(QueryType type, QVariant in) const
+QVariant QSystemLocale::query(QueryType type, QVariant &&in) const
{
QSystemLocaleData *d = qSystemLocaleData();
@@ -260,9 +226,9 @@ QVariant QSystemLocale::query(QueryType type, QVariant in) const
}
case MeasurementSystem: {
const QString meas_locale = QString::fromLatin1(d->lc_measurement_var);
- if (meas_locale.compare(QLatin1String("Metric"), Qt::CaseInsensitive) == 0)
+ if (meas_locale.compare("Metric"_L1, Qt::CaseInsensitive) == 0)
return QLocale::MetricSystem;
- if (meas_locale.compare(QLatin1String("Other"), Qt::CaseInsensitive) == 0)
+ if (meas_locale.compare("Other"_L1, Qt::CaseInsensitive) == 0)
return QLocale::MetricSystem;
return QVariant((int)QLocale(meas_locale).measurementSystem());
}
@@ -276,28 +242,31 @@ QVariant QSystemLocale::query(QueryType type, QVariant in) const
if (languages.isEmpty())
lst.append(QString::fromLatin1(d->lc_messages_var));
else
- lst = languages.split(QLatin1Char(':'));
+ lst = languages.split(u':');
- // Inadequate for various cases of a language that's written in more
- // than one script in the same country, e.g. Sindhi in India.
- // However, can clients of the UILanguage query cope if we include script ?
- for (int i = 0; i < lst.size(); ++i) {
- QStringView lang, cntry;
- if (qt_splitLocaleName(lst.at(i), &lang, nullptr, &cntry)) {
- d->uiLanguages.append(
- cntry.size() ? lang % QLatin1Char('-') % cntry : lang.toString());
+ for (const QString &e : std::as_const(lst)) {
+ QStringView language, script, territory;
+ if (qt_splitLocaleName(e, &language, &script, &territory)) {
+ QString joined = language.isEmpty() ? u"und"_s : language.toString();
+ if (!script.isEmpty())
+ joined += u'-' + script;
+ if (!territory.isEmpty())
+ joined += u'-' + territory;
+ d->uiLanguages.append(joined);
}
}
return d->uiLanguages.isEmpty() ? QVariant() : QVariant(d->uiLanguages);
}
case StringToStandardQuotation:
- return lc_messages.quoteString(qvariant_cast<QStringView>(in));
+ return lc_messages.quoteString(qvariant_cast<QStringView>(std::move(in)));
case StringToAlternateQuotation:
- return lc_messages.quoteString(qvariant_cast<QStringView>(in), QLocale::AlternateQuotation);
+ return lc_messages.quoteString(qvariant_cast<QStringView>(std::move(in)),
+ QLocale::AlternateQuotation);
case ListToSeparatedString:
return lc_messages.createSeparatedList(in.toStringList());
case LocaleChanged:
Q_ASSERT(false);
+ [[fallthrough]];
default:
break;
}
diff --git a/src/corelib/text/qlocale_wasm.cpp b/src/corelib/text/qlocale_wasm.cpp
new file mode 100644
index 0000000000..6b011af4a7
--- /dev/null
+++ b/src/corelib/text/qlocale_wasm.cpp
@@ -0,0 +1,54 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#include "qlocale_p.h"
+
+#include <emscripten/val.h>
+
+#include <string>
+#include <vector>
+
+QT_BEGIN_NAMESPACE
+
+#ifndef QT_NO_SYSTEMLOCALE
+
+namespace {
+
+QStringList navigatorLanguages()
+{
+ using emscripten::val;
+ const val navigator = val::global("navigator");
+ const auto languages = emscripten::vecFromJSArray<std::string>(navigator["languages"]);
+ QStringList qtLanguages;
+ for (const std::string& language : languages)
+ qtLanguages.append(QString::fromStdString(language));
+ return qtLanguages;
+}
+
+}
+
+QVariant QSystemLocale::query(QueryType query, QVariant &&in) const
+{
+ Q_UNUSED(in);
+
+ switch (query) {
+ case QSystemLocale::UILanguages:
+ return QVariant(navigatorLanguages());
+ default:
+ break;
+ }
+
+ return QVariant();
+}
+
+QLocale QSystemLocale::fallbackLocale() const
+{
+ const QStringList languages = navigatorLanguages();
+ if (languages.isEmpty())
+ return QLocale(u"en-US");
+ return QLocale(languages[0]);
+}
+
+#endif // QT_NO_SYSTEMLOCALE
+
+QT_END_NAMESPACE
diff --git a/src/corelib/text/qlocale_win.cpp b/src/corelib/text/qlocale_win.cpp
index dafe441ee0..9fdb46a4c9 100644
--- a/src/corelib/text/qlocale_win.cpp
+++ b/src/corelib/text/qlocale_win.cpp
@@ -1,42 +1,6 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Copyright (C) 2016 Intel Corporation.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// Copyright (C) 2016 Intel Corporation.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qlocale_p.h"
#include "qlocale_tools_p.h"
@@ -48,30 +12,60 @@
#include "QtCore/private/qgregoriancalendar_p.h" // for yearSharingWeekDays()
-#ifdef Q_OS_WIN
-# include <qt_windows.h>
-# include <time.h>
-#endif
+#include <q20algorithm.h>
+
+// TODO QTBUG-121193: port away from the use of LCID to always use names.
+#include <qt_windows.h>
+#include <time.h>
+
+#if QT_CONFIG(cpp_winrt)
+# include <QtCore/private/qt_winrtbase_p.h>
-#if defined(Q_CC_MSVC) && !defined(Q_CC_CLANG)
-# include <winrt/base.h>
-// Workaround for Windows SDK bug.
-// See https://github.com/microsoft/Windows.UI.Composition-Win32-Samples/issues/47
-namespace winrt::impl
-{
- template <typename Async>
- auto wait_for(Async const& async, Windows::Foundation::TimeSpan const& timeout);
-}
# include <winrt/Windows.Foundation.h>
# include <winrt/Windows.Foundation.Collections.h>
# include <winrt/Windows.System.UserProfile.h>
-#endif // defined(Q_CC_MSVC) && !defined(Q_CC_CLANG)
+#endif // QT_CONFIG(cpp_winrt)
QT_BEGIN_NAMESPACE
+using namespace Qt::StringLiterals;
+
+// Shared interpretation of %LANG%
+static auto scanLangEnv()
+{
+ struct R
+ {
+ QByteArray name; // empty means unknown; lookup from id may work
+ LCID id = 0; // 0 means unknown; lookup from name may work
+ } result;
+ const QByteArray lang = qgetenv("LANG");
+ if (lang.size() && (lang == "C" || qt_splitLocaleName(QString::fromLocal8Bit(lang)))) {
+ // See if we have a Windows locale code instead of a locale name:
+ const auto [id, used] = qstrntoll(lang.data(), lang.size(), 0);
+ if (used > 0 && id && INT_MIN <= id && id <= INT_MAX)
+ return R {QByteArray(), static_cast<LCID>(id)};
+ return R {lang, 0};
+ }
+ return R{};
+}
+
+static auto getDefaultWinId()
+{
+ const auto [name, id] = scanLangEnv();
+ if (id)
+ return id;
+
+ if (!name.isEmpty()) {
+ LCID id = LocaleNameToLCID(static_cast<LPCWSTR>(
+ QString::fromUtf8(name).toStdWString().data()), 0);
+ if (id)
+ return id;
+ }
+
+ return GetUserDefaultLCID();
+}
+
static QByteArray getWinLocaleName(LCID id = LOCALE_USER_DEFAULT);
-static QString winIso639LangName(LCID id = LOCALE_USER_DEFAULT);
-static QString winIso3116CtryName(LCID id = LOCALE_USER_DEFAULT);
#ifndef QT_NO_SYSTEMLOCALE
@@ -97,6 +91,17 @@ static QString winIso3116CtryName(LCID id = LOCALE_USER_DEFAULT);
# define LOCALE_SSHORTTIME 0x00000079
#endif
+namespace {
+template <typename T>
+static QVariant nullIfEmpty(T &&value)
+{
+ // For use where we should fall back to CLDR if we got an empty value.
+ if (value.isEmpty())
+ return {};
+ return std::move(value);
+}
+}
+
struct QSystemLocalePrivate
{
QSystemLocalePrivate();
@@ -138,7 +143,7 @@ private:
// cached values:
LCID lcid;
- SubstitutionType substitutionType;
+ SubstitutionType substitutionType = SUnknown;
QString zero; // cached value for zeroDigit()
int getLocaleInfo(LCTYPE type, LPWSTR data, int size);
@@ -151,6 +156,7 @@ private:
SubstitutionType substitution();
QString substituteDigits(QString &&string);
+ QString correctDigits(QString &&string);
QString yearFix(int year, int fakeYear, QString &&formatted);
static QString winToQtFormat(QStringView sys_fmt);
@@ -159,9 +165,8 @@ private:
Q_GLOBAL_STATIC(QSystemLocalePrivate, systemLocalePrivate)
QSystemLocalePrivate::QSystemLocalePrivate()
- : substitutionType(SUnknown)
+ : lcid(getDefaultWinId())
{
- lcid = GetUserDefaultLCID();
}
inline int QSystemLocalePrivate::getCurrencyFormat(DWORD flags, LPCWSTR value, const CURRENCYFMTW *format, LPWSTR data, int size)
@@ -213,10 +218,11 @@ QVariant QSystemLocalePrivate::getLocaleInfo(LCTYPE type)
int QSystemLocalePrivate::getLocaleInfo_int(LCTYPE type)
{
- const QString str = getLocaleInfo(type).toString();
- bool ok = false;
- const int v = str.toInt(&ok);
- return ok ? v : 0;
+ DWORD value;
+ int r = GetLocaleInfo(lcid, type | LOCALE_RETURN_NUMBER,
+ reinterpret_cast<wchar_t *>(&value),
+ sizeof(value) / sizeof(wchar_t));
+ return r == sizeof(value) / sizeof(wchar_t) ? value : 0;
}
QSystemLocalePrivate::SubstitutionType QSystemLocalePrivate::substitution()
@@ -224,25 +230,25 @@ QSystemLocalePrivate::SubstitutionType QSystemLocalePrivate::substitution()
if (substitutionType == SUnknown) {
wchar_t buf[8];
if (!getLocaleInfo(LOCALE_IDIGITSUBSTITUTION, buf, 8)) {
- substitutionType = QSystemLocalePrivate::SNever;
+ substitutionType = SNever;
return substitutionType;
}
if (buf[0] == '1')
- substitutionType = QSystemLocalePrivate::SNever;
+ substitutionType = SNever;
else if (buf[0] == '0')
- substitutionType = QSystemLocalePrivate::SContext;
+ substitutionType = SContext;
else if (buf[0] == '2')
- substitutionType = QSystemLocalePrivate::SAlways;
+ substitutionType = SAlways;
else {
wchar_t digits[11]; // See zeroDigit() for why 11.
if (!getLocaleInfo(LOCALE_SNATIVEDIGITS, digits, 11)) {
- substitutionType = QSystemLocalePrivate::SNever;
+ substitutionType = SNever;
return substitutionType;
}
if (buf[0] == digits[0] + 2)
- substitutionType = QSystemLocalePrivate::SAlways;
+ substitutionType = SAlways;
else
- substitutionType = QSystemLocalePrivate::SNever;
+ substitutionType = SNever;
}
}
return substitutionType;
@@ -258,7 +264,7 @@ QString QSystemLocalePrivate::substituteDigits(QString &&string)
break;
Q_ASSERT(z > '9');
ushort *const qch = reinterpret_cast<ushort *>(string.data());
- for (int i = 0, stop = string.size(); i < stop; ++i) {
+ for (qsizetype i = 0, stop = string.size(); i < stop; ++i) {
ushort &ch = qch[i];
if (ch >= '0' && ch <= '9')
ch = unicodeForDigit(ch - '0', z);
@@ -283,6 +289,11 @@ QString QSystemLocalePrivate::substituteDigits(QString &&string)
return std::move(string);
}
+QString QSystemLocalePrivate::correctDigits(QString &&string)
+{
+ return substitution() == SAlways ? substituteDigits(std::move(string)) : std::move(string);
+}
+
QVariant QSystemLocalePrivate::zeroDigit()
{
if (zero.isEmpty()) {
@@ -300,36 +311,36 @@ QVariant QSystemLocalePrivate::zeroDigit()
zero = QString::fromWCharArray(digits, 1);
}
}
- return zero;
+ return nullIfEmpty(zero); // Do not std::move().
}
QVariant QSystemLocalePrivate::decimalPoint()
{
- return getLocaleInfo(LOCALE_SDECIMAL);
+ return nullIfEmpty(getLocaleInfo(LOCALE_SDECIMAL).toString());
}
QVariant QSystemLocalePrivate::groupSeparator()
{
- return getLocaleInfo(LOCALE_STHOUSAND);
+ return getLocaleInfo(LOCALE_STHOUSAND); // Empty means don't group digits.
}
QVariant QSystemLocalePrivate::negativeSign()
{
- return getLocaleInfo(LOCALE_SNEGATIVESIGN);
+ return nullIfEmpty(getLocaleInfo(LOCALE_SNEGATIVESIGN).toString());
}
QVariant QSystemLocalePrivate::positiveSign()
{
- return getLocaleInfo(LOCALE_SPOSITIVESIGN);
+ return nullIfEmpty(getLocaleInfo(LOCALE_SPOSITIVESIGN).toString());
}
QVariant QSystemLocalePrivate::dateFormat(QLocale::FormatType type)
{
switch (type) {
case QLocale::ShortFormat:
- return winToQtFormat(getLocaleInfo(LOCALE_SSHORTDATE).toString());
+ return nullIfEmpty(winToQtFormat(getLocaleInfo(LOCALE_SSHORTDATE).toString()));
case QLocale::LongFormat:
- return winToQtFormat(getLocaleInfo(LOCALE_SLONGDATE).toString());
+ return nullIfEmpty(winToQtFormat(getLocaleInfo(LOCALE_SLONGDATE).toString()));
case QLocale::NarrowFormat:
break;
}
@@ -340,9 +351,9 @@ QVariant QSystemLocalePrivate::timeFormat(QLocale::FormatType type)
{
switch (type) {
case QLocale::ShortFormat:
- return winToQtFormat(getLocaleInfo(LOCALE_SSHORTTIME).toString());
+ return nullIfEmpty(winToQtFormat(getLocaleInfo(LOCALE_SSHORTTIME).toString()));
case QLocale::LongFormat:
- return winToQtFormat(getLocaleInfo(LOCALE_STIMEFORMAT).toString());
+ return nullIfEmpty(winToQtFormat(getLocaleInfo(LOCALE_STIMEFORMAT).toString()));
case QLocale::NarrowFormat:
break;
}
@@ -351,48 +362,48 @@ QVariant QSystemLocalePrivate::timeFormat(QLocale::FormatType type)
QVariant QSystemLocalePrivate::dateTimeFormat(QLocale::FormatType type)
{
- return QString(dateFormat(type).toString() + QLatin1Char(' ') + timeFormat(type).toString());
+ QVariant d = dateFormat(type), t = timeFormat(type);
+ if (d.typeId() == QMetaType::QString && t.typeId() == QMetaType::QString)
+ return QString(d.toString() + u' ' + t.toString());
+ return {};
}
QVariant QSystemLocalePrivate::dayName(int day, QLocale::FormatType type)
{
if (day < 1 || day > 7)
- return QString();
+ return {};
- static const LCTYPE short_day_map[]
+ static constexpr LCTYPE short_day_map[]
= { LOCALE_SABBREVDAYNAME1, LOCALE_SABBREVDAYNAME2,
LOCALE_SABBREVDAYNAME3, LOCALE_SABBREVDAYNAME4, LOCALE_SABBREVDAYNAME5,
LOCALE_SABBREVDAYNAME6, LOCALE_SABBREVDAYNAME7 };
- static const LCTYPE long_day_map[]
+ static constexpr LCTYPE long_day_map[]
= { LOCALE_SDAYNAME1, LOCALE_SDAYNAME2,
LOCALE_SDAYNAME3, LOCALE_SDAYNAME4, LOCALE_SDAYNAME5,
LOCALE_SDAYNAME6, LOCALE_SDAYNAME7 };
- static const LCTYPE narrow_day_map[]
+ static constexpr LCTYPE narrow_day_map[]
= { LOCALE_SSHORTESTDAYNAME1, LOCALE_SSHORTESTDAYNAME2,
LOCALE_SSHORTESTDAYNAME3, LOCALE_SSHORTESTDAYNAME4,
LOCALE_SSHORTESTDAYNAME5, LOCALE_SSHORTESTDAYNAME6,
LOCALE_SSHORTESTDAYNAME7 };
- day -= 1;
-
- if (type == QLocale::LongFormat)
- return getLocaleInfo(long_day_map[day]);
- if (type == QLocale::NarrowFormat)
- return getLocaleInfo(narrow_day_map[day]);
- return getLocaleInfo(short_day_map[day]);
+ return nullIfEmpty(getLocaleInfo(
+ (type == QLocale::LongFormat ? long_day_map
+ : type == QLocale::NarrowFormat ? narrow_day_map
+ : short_day_map)[day - 1]).toString());
}
QVariant QSystemLocalePrivate::standaloneMonthName(int month, QLocale::FormatType type)
{
- static const LCTYPE short_month_map[]
+ static constexpr LCTYPE short_month_map[]
= { LOCALE_SABBREVMONTHNAME1, LOCALE_SABBREVMONTHNAME2, LOCALE_SABBREVMONTHNAME3,
LOCALE_SABBREVMONTHNAME4, LOCALE_SABBREVMONTHNAME5, LOCALE_SABBREVMONTHNAME6,
LOCALE_SABBREVMONTHNAME7, LOCALE_SABBREVMONTHNAME8, LOCALE_SABBREVMONTHNAME9,
LOCALE_SABBREVMONTHNAME10, LOCALE_SABBREVMONTHNAME11, LOCALE_SABBREVMONTHNAME12 };
- static const LCTYPE long_month_map[]
+ static constexpr LCTYPE long_month_map[]
= { LOCALE_SMONTHNAME1, LOCALE_SMONTHNAME2, LOCALE_SMONTHNAME3,
LOCALE_SMONTHNAME4, LOCALE_SMONTHNAME5, LOCALE_SMONTHNAME6,
LOCALE_SMONTHNAME7, LOCALE_SMONTHNAME8, LOCALE_SMONTHNAME9,
@@ -402,8 +413,8 @@ QVariant QSystemLocalePrivate::standaloneMonthName(int month, QLocale::FormatTyp
return {};
// Month is Jan = 1, ... Dec = 12; adjust by 1 to match array indexing from 0:
- return getLocaleInfo(
- (type == QLocale::LongFormat ? long_month_map : short_month_map)[month - 1]);
+ return nullIfEmpty(getLocaleInfo(
+ (type == QLocale::LongFormat ? long_month_map : short_month_map)[month - 1]).toString());
}
QVariant QSystemLocalePrivate::monthName(int month, QLocale::FormatType type)
@@ -422,10 +433,7 @@ QVariant QSystemLocalePrivate::monthName(int month, QLocale::FormatType type)
wchar_t buf[255];
if (getDateFormat(flags, &st, format, buf, 255) > 2) {
// Elide the two digits of day number
- QString text = QString::fromWCharArray(buf + 2);
- if (substitution() == SAlways)
- text = substituteDigits(std::move(text));
- return text;
+ return nullIfEmpty(correctDigits(QString::fromWCharArray(buf + 2)));
}
return {};
}
@@ -444,7 +452,7 @@ QString QSystemLocalePrivate::yearFix(int year, int fakeYear, QString &&formatte
Q_ASSERT(fakeYear >= 1970 && fakeYear <= 2400);
const bool matchTwo = year >= 0 && year % 100 == fakeYear % 100;
auto yearUsed = fourDigitYear(fakeYear);
- QString sign(year < 0 ? 1 : 0, QLatin1Char('-'));
+ QString sign(year < 0 ? 1 : 0, u'-');
auto trueYear = fourDigitYear(year < 0 ? -year : year);
if (formatted.contains(yearUsed))
return std::move(formatted).replace(yearUsed, sign + trueYear);
@@ -457,7 +465,7 @@ QString QSystemLocalePrivate::yearFix(int year, int fakeYear, QString &&formatte
return std::move(formatted).replace(tail.toString(), sign + trueYear.last(2));
}
- // Localized digits, perhaps ?
+ // Localized digits (regardless of SAlways), perhaps ?
// First call to substituteDigits() ensures zero is initialized:
trueYear = substituteDigits(std::move(trueYear));
if (zero != u'0') {
@@ -468,7 +476,7 @@ QString QSystemLocalePrivate::yearFix(int year, int fakeYear, QString &&formatte
if (formatted.contains(yearUsed))
return std::move(formatted).replace(yearUsed, sign + trueYear);
- const int twoDigits = 2 * zero.size();
+ const qsizetype twoDigits = 2 * zero.size();
tail = QStringView{yearUsed}.last(twoDigits);
if (formatted.contains(tail)) {
if (matchTwo)
@@ -502,9 +510,7 @@ QVariant QSystemLocalePrivate::toString(QDate date, QLocale::FormatType type)
QString text = QString::fromWCharArray(buf);
if (fixup)
text = yearFix(year, st.wYear, std::move(text));
- if (substitution() == SAlways)
- text = substituteDigits(std::move(text));
- return text;
+ return nullIfEmpty(correctDigits(std::move(text)));
}
return {};
}
@@ -519,22 +525,23 @@ QVariant QSystemLocalePrivate::toString(QTime time, QLocale::FormatType type)
DWORD flags = 0;
// keep the same conditional as timeFormat() above
- if (type == QLocale::ShortFormat)
- flags = TIME_NOSECONDS;
+ const QString format = type == QLocale::ShortFormat
+ ? getLocaleInfo(LOCALE_SSHORTTIME).toString()
+ : QString();
+ auto formatStr = reinterpret_cast<const wchar_t *>(format.isEmpty() ? nullptr : format.utf16());
wchar_t buf[255];
- if (getTimeFormat(flags, &st, NULL, buf, 255)) {
- QString text = QString::fromWCharArray(buf);
- if (substitution() == SAlways)
- text = substituteDigits(std::move(text));
- return text;
- }
+ if (getTimeFormat(flags, &st, formatStr, buf, int(std::size(buf))))
+ return nullIfEmpty(correctDigits(QString::fromWCharArray(buf)));
return {};
}
QVariant QSystemLocalePrivate::toString(const QDateTime &dt, QLocale::FormatType type)
{
- return QString(toString(dt.date(), type).toString() + QLatin1Char(' ') + toString(dt.time(), type).toString());
+ QVariant d = toString(dt.date(), type), t = toString(dt.time(), type);
+ if (d.typeId() == QMetaType::QString && t.typeId() == QMetaType::QString)
+ return QString(d.toString() + u' ' + t.toString());
+ return {};
}
QVariant QSystemLocalePrivate::measurementSystem()
@@ -542,10 +549,8 @@ QVariant QSystemLocalePrivate::measurementSystem()
wchar_t output[2];
if (getLocaleInfo(LOCALE_IMEASURE, output, 2)) {
- QString iMeasure = QString::fromWCharArray(output);
- if (iMeasure == QLatin1String("1")) {
+ if (output[0] == L'1' && !output[1])
return QLocale::ImperialSystem;
- }
}
return QLocale::MetricSystem;
@@ -561,7 +566,7 @@ QVariant QSystemLocalePrivate::amText()
wchar_t output[15]; // maximum length including terminating zero character for Win2003+
if (getLocaleInfo(LOCALE_S1159, output, 15))
- return QString::fromWCharArray(output);
+ return nullIfEmpty(QString::fromWCharArray(output));
return QVariant();
}
@@ -571,7 +576,7 @@ QVariant QSystemLocalePrivate::pmText()
wchar_t output[15]; // maximum length including terminating zero character for Win2003+
if (getLocaleInfo(LOCALE_S2359, output, 15))
- return QString::fromWCharArray(output);
+ return nullIfEmpty(QString::fromWCharArray(output));
return QVariant();
}
@@ -591,12 +596,14 @@ QVariant QSystemLocalePrivate::currencySymbol(QLocale::CurrencySymbolFormat form
wchar_t buf[13];
switch (format) {
case QLocale::CurrencySymbol:
+ // Some locales do have empty currency symbol. All the same, fall back
+ // to CLDR for confirmation if MS claims that applies.
if (getLocaleInfo(LOCALE_SCURRENCY, buf, 13))
- return QString::fromWCharArray(buf);
+ return nullIfEmpty(QString::fromWCharArray(buf));
break;
case QLocale::CurrencyIsoCode:
if (getLocaleInfo(LOCALE_SINTLSYMBOL, buf, 9))
- return QString::fromWCharArray(buf);
+ return nullIfEmpty(QString::fromWCharArray(buf));
break;
case QLocale::CurrencyDisplayName: {
QVarLengthArray<wchar_t, 64> buf(64);
@@ -607,7 +614,7 @@ QVariant QSystemLocalePrivate::currencySymbol(QLocale::CurrencySymbolFormat form
if (!getLocaleInfo(LOCALE_SNATIVECURRNAME, buf.data(), buf.size()))
break;
}
- return QString::fromWCharArray(buf.data());
+ return nullIfEmpty(QString::fromWCharArray(buf.data()));
}
default:
break;
@@ -667,7 +674,7 @@ QVariant QSystemLocalePrivate::toCurrencyString(const QSystemLocale::CurrencyToS
// int(32) == "12,34,56,789.00" == string("3;2;0")
// int(320)== "1234,56,789.00" == string("3;2")
QString groupingStr = getLocaleInfo(LOCALE_SMONGROUPING).toString();
- format.Grouping = groupingStr.remove(QLatin1Char(';')).toInt();
+ format.Grouping = groupingStr.remove(u';').toInt();
if (format.Grouping % 10 == 0) // magic
format.Grouping /= 10;
else
@@ -685,25 +692,25 @@ QVariant QSystemLocalePrivate::toCurrencyString(const QSystemLocale::CurrencyToS
pformat, out.data(), out.size());
}
- value = QString::fromWCharArray(out.data());
- if (substitution() == SAlways)
- value = substituteDigits(std::move(value));
- return value;
+ return nullIfEmpty(correctDigits(QString::fromWCharArray(out.data())));
}
QVariant QSystemLocalePrivate::uiLanguages()
{
QStringList result;
-#if defined(Q_CC_MSVC) && !defined(Q_CC_CLANG) // msvc supports WinRT calls
+#if QT_CONFIG(cpp_winrt)
using namespace winrt;
- using namespace Windows::Foundation;
using namespace Windows::System::UserProfile;
- auto languages = GlobalizationPreferences::Languages();
- for (const auto &lang : languages)
- result << QString::fromStdString(winrt::to_string(lang));
+ QT_TRY {
+ auto languages = GlobalizationPreferences::Languages();
+ for (const auto &lang : languages)
+ result << QString::fromStdString(winrt::to_string(lang));
+ } QT_CATCH(...) {
+ // pass, just fall back to WIN32 API implementation
+ }
if (!result.isEmpty())
return result; // else just fall back to WIN32 API implementation
-#endif // defined(Q_CC_MSVC) && !defined(Q_CC_CLANG)
+#endif // QT_CONFIG(cpp_winrt)
// mingw and clang still have to use Win32 API
unsigned long cnt = 0;
QVarLengthArray<wchar_t, 64> buf(64);
@@ -715,7 +722,7 @@ QVariant QSystemLocalePrivate::uiLanguages()
GetUserPreferredUILanguages(MUI_LANGUAGE_NAME, &cnt, NULL, &size)) {
buf.resize(size);
if (!GetUserPreferredUILanguages(MUI_LANGUAGE_NAME, &cnt, buf.data(), &size))
- return QStringList();
+ return {};
}
}
# endif // !QT_BOOTSTRAPPED
@@ -728,7 +735,7 @@ QVariant QSystemLocalePrivate::uiLanguages()
result.append(s);
str += s.size() + 1;
}
- return result;
+ return nullIfEmpty(std::move(result));
}
QVariant QSystemLocalePrivate::nativeLanguageName()
@@ -744,7 +751,7 @@ QVariant QSystemLocalePrivate::nativeTerritoryName()
void QSystemLocalePrivate::update()
{
- lcid = GetUserDefaultLCID();
+ lcid = getDefaultWinId();
substitutionType = SUnknown;
zero.resize(0);
}
@@ -752,20 +759,20 @@ void QSystemLocalePrivate::update()
QString QSystemLocalePrivate::winToQtFormat(QStringView sys_fmt)
{
QString result;
- int i = 0;
+ qsizetype i = 0;
while (i < sys_fmt.size()) {
- if (sys_fmt.at(i).unicode() == QLatin1Char('\'')) {
+ if (sys_fmt.at(i).unicode() == u'\'') {
QString text = qt_readEscapedFormatString(sys_fmt, &i);
- if (text == QLatin1String("'"))
- result += QLatin1String("''");
+ if (text == "'"_L1)
+ result += "''"_L1;
else
- result += QLatin1Char('\'') + text + QLatin1Char('\'');
+ result += u'\'' + text + u'\'';
continue;
}
QChar c = sys_fmt.at(i);
- int repeat = qt_repeatCount(sys_fmt.mid(i));
+ qsizetype repeat = qt_repeatCount(sys_fmt.mid(i));
switch (c.unicode()) {
// Date
@@ -776,13 +783,13 @@ QString QSystemLocalePrivate::winToQtFormat(QStringView sys_fmt)
repeat = 2;
switch (repeat) {
case 1:
- result += QLatin1String("yy"); // "y" unsupported by Qt, use "yy"
+ result += "yy"_L1; // "y" unsupported by Qt, use "yy"
break;
case 5:
- result += QLatin1String("yyyy"); // "yyyyy" same as "yyyy" on Windows
+ result += "yyyy"_L1; // "yyyyy" same as "yyyy" on Windows
break;
default:
- result += QString(repeat, QLatin1Char('y'));
+ result += QString(repeat, u'y');
break;
}
break;
@@ -793,14 +800,14 @@ QString QSystemLocalePrivate::winToQtFormat(QStringView sys_fmt)
case 2:
break; // no equivalent of "gg" in Qt
default:
- result += QLatin1Char('g');
+ result += u'g';
break;
}
break;
case 't':
if (repeat > 2)
repeat = 2;
- result += QLatin1String("AP"); // "t" unsupported, use "AP"
+ result += "AP"_L1; // "t" unsupported, use "AP"
break;
default:
result += QString(repeat, c);
@@ -818,7 +825,7 @@ QLocale QSystemLocale::fallbackLocale() const
return QLocale(QString::fromLatin1(getWinLocaleName()));
}
-QVariant QSystemLocale::query(QueryType type, QVariant in) const
+QVariant QSystemLocale::query(QueryType type, QVariant &&in) const
{
QSystemLocalePrivate *d = systemLocalePrivate();
switch(type) {
@@ -902,7 +909,7 @@ QVariant QSystemLocale::query(QueryType type, QVariant in) const
case CurrencySymbol:
return d->currencySymbol(QLocale::CurrencySymbolFormat(in.toUInt()));
case CurrencyToString:
- return d->toCurrencyString(in.value<QSystemLocale::CurrencyToStringArgument>());
+ return d->toCurrencyString(in.value<CurrencyToStringArgument>());
case UILanguages:
return d->uiLanguages();
case LocaleChanged:
@@ -924,8 +931,18 @@ struct WindowsToISOListElt {
char iso_name[6];
};
-/* NOTE: This array should be sorted by the first column! */
-static const WindowsToISOListElt windows_to_iso_list[] = {
+namespace {
+struct ByWindowsCode {
+ constexpr bool operator()(int lhs, WindowsToISOListElt rhs) const noexcept
+ { return lhs < int(rhs.windows_code); }
+ constexpr bool operator()(WindowsToISOListElt lhs, int rhs) const noexcept
+ { return int(lhs.windows_code) < rhs; }
+ constexpr bool operator()(WindowsToISOListElt lhs, WindowsToISOListElt rhs) const noexcept
+ { return lhs.windows_code < rhs.windows_code; }
+};
+} // unnamed namespace
+
+static constexpr WindowsToISOListElt windows_to_iso_list[] = {
{ 0x0401, "ar_SA" },
{ 0x0402, "bg\0 " },
{ 0x0403, "ca\0 " },
@@ -1036,40 +1053,33 @@ static const WindowsToISOListElt windows_to_iso_list[] = {
{ 0x500a, "es_PR" }
};
-static const int windows_to_iso_count
- = sizeof(windows_to_iso_list)/sizeof(WindowsToISOListElt);
+static_assert(q20::is_sorted(std::begin(windows_to_iso_list), std::end(windows_to_iso_list),
+ ByWindowsCode{}));
static const char *winLangCodeToIsoName(int code)
{
int cmp = code - windows_to_iso_list[0].windows_code;
if (cmp < 0)
- return 0;
+ return nullptr;
if (cmp == 0)
return windows_to_iso_list[0].iso_name;
- int begin = 0;
- int end = windows_to_iso_count;
-
- while (end - begin > 1) {
- uint mid = (begin + end)/2;
-
- const WindowsToISOListElt *elt = windows_to_iso_list + mid;
- int cmp = code - elt->windows_code;
- if (cmp < 0)
- end = mid;
- else if (cmp > 0)
- begin = mid;
- else
- return elt->iso_name;
- }
+ const auto it = std::lower_bound(std::begin(windows_to_iso_list),
+ std::end(windows_to_iso_list),
+ code,
+ ByWindowsCode{});
+ if (it != std::end(windows_to_iso_list) && !ByWindowsCode{}(code, *it))
+ return it->iso_name;
- return 0;
+ return nullptr;
}
LCID qt_inIsoNametoLCID(const char *name)
{
+ if (!name)
+ return LOCALE_USER_DEFAULT;
// handle norwegian manually, the list above will fail
if (!strncmp(name, "nb", 2))
return 0x0414;
@@ -1106,14 +1116,12 @@ static QString winIso639LangName(LCID id)
lang_code = QString::fromWCharArray(out);
if (!lang_code.isEmpty()) {
- const char *endptr;
- bool ok;
- QByteArray latin1_lang_code = std::move(lang_code).toLatin1();
- int i = qstrntoull(latin1_lang_code.data(), latin1_lang_code.size(), &endptr, 16, &ok);
- if (ok && *endptr == '\0') {
+ const QByteArray latin1 = std::move(lang_code).toLatin1();
+ const auto [i, used] = qstrntoull(latin1.data(), latin1.size(), 16);
+ if (used >= latin1.size() || (used > 0 && latin1[used] == '\0')) {
switch (i) {
case 0x814:
- result = QLatin1String("nn"); // Nynorsk
+ result = u"nn"_s; // Nynorsk
break;
default:
break;
@@ -1146,28 +1154,24 @@ static QByteArray getWinLocaleName(LCID id)
{
QByteArray result;
if (id == LOCALE_USER_DEFAULT) {
- static const QByteArray langEnvVar = qgetenv("LANG");
- result = langEnvVar;
- if (result == "C"
- || (!result.isEmpty() && qt_splitLocaleName(QString::fromLocal8Bit(result)))) {
- bool ok = false; // See if we have a Windows locale code instead of a locale name:
- long id = qstrntoll(result.data(), result.size(), 0, 0, &ok);
- if (!ok || id == 0 || id < INT_MIN || id > INT_MAX) // Assume real locale name
- return result;
- return winLangCodeToIsoName(int(id));
- }
- }
+ const auto [name, lcid] = scanLangEnv();
+ if (!name.isEmpty())
+ return name;
+ if (lcid)
+ return winLangCodeToIsoName(lcid);
- if (id == LOCALE_USER_DEFAULT)
id = GetUserDefaultLCID();
+ }
+
QString resultusage = winIso639LangName(id);
QString country = winIso3116CtryName(id);
if (!country.isEmpty())
- resultusage += QLatin1Char('_') + country;
+ resultusage += u'_' + country;
return std::move(resultusage).toLatin1();
}
+// Helper for plugins/platforms/windows/
Q_CORE_EXPORT QLocale qt_localeFromLCID(LCID id)
{
return QLocale(QString::fromLatin1(getWinLocaleName(id)));
diff --git a/src/corelib/text/qregularexpression.cpp b/src/corelib/text/qregularexpression.cpp
index 1db27fc4e4..95fd0e3d9a 100644
--- a/src/corelib/text/qregularexpression.cpp
+++ b/src/corelib/text/qregularexpression.cpp
@@ -1,43 +1,7 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 Giuseppe D'Angelo <dangelog@gmail.com>.
-** Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 Giuseppe D'Angelo <dangelog@gmail.com>.
+// Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qregularexpression.h"
@@ -47,7 +11,6 @@
#include <QtCore/qmutex.h>
#include <QtCore/qstringlist.h>
#include <QtCore/qdebug.h>
-#include <QtCore/qthreadstorage.h>
#include <QtCore/qglobal.h>
#include <QtCore/qatomic.h>
#include <QtCore/qdatastream.h>
@@ -62,6 +25,8 @@
QT_BEGIN_NAMESPACE
+using namespace Qt::StringLiterals;
+
/*!
\class QRegularExpression
\inmodule QtCore
@@ -826,6 +791,24 @@ struct QRegularExpressionMatchIteratorPrivate : QSharedData
/*!
\internal
+
+ Used to centralize the warning about using an invalid QRegularExpression.
+ In case the pattern is an illegal UTF-16 string, we can't pass print it
+ (pass it to qUtf16Printable, etc.), so we need to check for that.
+*/
+Q_DECL_COLD_FUNCTION
+void qtWarnAboutInvalidRegularExpression(const QString &pattern, const char *where)
+{
+ if (pattern.isValidUtf16()) {
+ qWarning("%s(): called on an invalid QRegularExpression object "
+ "(pattern is '%ls')", where, qUtf16Printable(pattern));
+ } else {
+ qWarning("%s(): called on an invalid QRegularExpression object", where);
+ }
+}
+
+/*!
+ \internal
*/
QRegularExpression::QRegularExpression(QRegularExpressionPrivate &dd)
: d(&dd)
@@ -911,7 +894,7 @@ void QRegularExpressionPrivate::compilePattern()
PCRE2_SIZE patternErrorOffset;
compiledPattern = pcre2_compile_16(reinterpret_cast<PCRE2_SPTR16>(pattern.constData()),
- pattern.length(),
+ pattern.size(),
options,
&errorCode,
&patternErrorOffset,
@@ -962,43 +945,24 @@ void QRegularExpressionPrivate::getPatternInfo()
Simple "smartpointer" wrapper around a pcre2_jit_stack_16, to be used with
QThreadStorage.
*/
-class QPcreJitStackPointer
+namespace {
+struct PcreJitStackFree
{
- Q_DISABLE_COPY(QPcreJitStackPointer)
-
-public:
- /*!
- \internal
- */
- QPcreJitStackPointer()
- {
- // The default JIT stack size in PCRE is 32K,
- // we allocate from 32K up to 512K.
- stack = pcre2_jit_stack_create_16(32 * 1024, 512 * 1024, nullptr);
- }
- /*!
- \internal
- */
- ~QPcreJitStackPointer()
+ void operator()(pcre2_jit_stack_16 *stack)
{
if (stack)
pcre2_jit_stack_free_16(stack);
}
-
- pcre2_jit_stack_16 *stack;
};
-
-Q_GLOBAL_STATIC(QThreadStorage<QPcreJitStackPointer *>, jitStacks)
+Q_CONSTINIT static thread_local std::unique_ptr<pcre2_jit_stack_16, PcreJitStackFree> jitStacks;
+}
/*!
\internal
*/
static pcre2_jit_stack_16 *qtPcreCallback(void *)
{
- if (jitStacks()->hasLocalData())
- return jitStacks()->localData()->stack;
-
- return nullptr;
+ return jitStacks.get();
}
/*!
@@ -1094,9 +1058,10 @@ static int safe_pcre2_match_16(const pcre2_code_16 *code,
int result = pcre2_match_16(code, subject, length,
startOffset, options, matchData, matchContext);
- if (result == PCRE2_ERROR_JIT_STACKLIMIT && !jitStacks()->hasLocalData()) {
- QPcreJitStackPointer *p = new QPcreJitStackPointer;
- jitStacks()->setLocalData(p);
+ if (result == PCRE2_ERROR_JIT_STACKLIMIT && !jitStacks) {
+ // The default JIT stack size in PCRE is 32K,
+ // we allocate from 32K up to 512K.
+ jitStacks.reset(pcre2_jit_stack_create_16(32 * 1024, 512 * 1024, NULL));
result = pcre2_match_16(code, subject, length,
startOffset, options, matchData, matchContext);
@@ -1139,7 +1104,7 @@ void QRegularExpressionPrivate::doMatch(QRegularExpressionMatchPrivate *priv,
const QRegularExpressionMatchPrivate *previous) const
{
Q_ASSERT(priv);
- Q_ASSUME(priv != previous);
+ Q_ASSERT(priv != previous);
const qsizetype subjectLength = priv->subject.size();
@@ -1150,7 +1115,7 @@ void QRegularExpressionPrivate::doMatch(QRegularExpressionMatchPrivate *priv,
return;
if (Q_UNLIKELY(!compiledPattern)) {
- qWarning("QRegularExpressionPrivate::doMatch(): called on an invalid QRegularExpression object");
+ qtWarnAboutInvalidRegularExpression(pattern, "QRegularExpressionPrivate::doMatch");
return;
}
@@ -1212,8 +1177,8 @@ void QRegularExpressionPrivate::doMatch(QRegularExpressionMatchPrivate *priv,
if (usingCrLfNewlines
&& offset < subjectLength
- && subjectUtf16[offset - 1] == QLatin1Char('\r')
- && subjectUtf16[offset] == QLatin1Char('\n')) {
+ && subjectUtf16[offset - 1] == u'\r'
+ && subjectUtf16[offset] == u'\n') {
++offset;
} else if (offset < subjectLength
&& QChar::isLowSurrogate(subjectUtf16[offset])) {
@@ -1389,10 +1354,7 @@ QRegularExpression::QRegularExpression(const QString &pattern, PatternOptions op
\sa operator=()
*/
-QRegularExpression::QRegularExpression(const QRegularExpression &re)
- : d(re.d)
-{
-}
+QRegularExpression::QRegularExpression(const QRegularExpression &re) noexcept = default;
/*!
\fn QRegularExpression::QRegularExpression(QRegularExpression &&re)
@@ -1421,11 +1383,7 @@ QT_DEFINE_QESDP_SPECIALIZATION_DTOR(QRegularExpressionPrivate)
Assigns the regular expression \a re to this object, and returns a reference
to the copy. Both the pattern and the pattern options are copied.
*/
-QRegularExpression &QRegularExpression::operator=(const QRegularExpression &re)
-{
- d = re.d;
- return *this;
-}
+QRegularExpression &QRegularExpression::operator=(const QRegularExpression &re) noexcept = default;
/*!
\fn void QRegularExpression::swap(QRegularExpression &other)
@@ -1550,7 +1508,7 @@ QStringList QRegularExpression::namedCaptureGroups() const
reinterpret_cast<const char16_t *>(namedCapturingTable) + namedCapturingTableEntrySize * i;
const int index = *currentNamedCapturingTableRow;
- result[index] = QString::fromUtf16(currentNamedCapturingTableRow + 1);
+ result[index] = QStringView(currentNamedCapturingTableRow + 1).toString();
}
return result;
@@ -1582,10 +1540,10 @@ QString QRegularExpression::errorString() const
QString errorString;
int errorStringLength;
do {
- errorString.resize(errorString.length() + 64);
+ errorString.resize(errorString.size() + 64);
errorStringLength = pcre2_get_error_message_16(d->errorCode,
reinterpret_cast<ushort *>(errorString.data()),
- errorString.length());
+ errorString.size());
} while (errorStringLength < 0);
errorString.resize(errorStringLength);
@@ -1596,7 +1554,7 @@ QString QRegularExpression::errorString() const
#endif
}
#ifdef QT_NO_TRANSLATION
- return QLatin1String("no error");
+ return u"no error"_s;
#else
return QCoreApplication::translate("QRegularExpression", "no error");
#endif
@@ -1623,11 +1581,6 @@ qsizetype QRegularExpression::patternErrorOffset() const
The returned QRegularExpressionMatch object contains the results of the
match.
- \note The data referenced by \a subject should remain valid as long
- as there are QRegularExpressionMatch objects using it. At the moment
- Qt makes a (shallow) copy of the data, but this behavior may change
- in a future version of Qt.
-
\sa QRegularExpressionMatch, {normal matching}
*/
QRegularExpressionMatch QRegularExpression::match(const QString &subject,
@@ -1645,9 +1598,26 @@ QRegularExpressionMatch QRegularExpression::match(const QString &subject,
return QRegularExpressionMatch(*priv);
}
+#if QT_DEPRECATED_SINCE(6, 8)
/*!
\since 6.0
\overload
+ \obsolete
+
+ Use matchView() instead.
+*/
+QRegularExpressionMatch QRegularExpression::match(QStringView subjectView,
+ qsizetype offset,
+ MatchType matchType,
+ MatchOptions matchOptions) const
+{
+ return matchView(subjectView, offset, matchType, matchOptions);
+}
+#endif // QT_DEPRECATED_SINCE(6, 8)
+
+/*!
+ \since 6.5
+ \overload
Attempts to match the regular expression against the given \a subjectView
string view, starting at the position \a offset inside the subject, using a
@@ -1661,10 +1631,10 @@ QRegularExpressionMatch QRegularExpression::match(const QString &subject,
\sa QRegularExpressionMatch, {normal matching}
*/
-QRegularExpressionMatch QRegularExpression::match(QStringView subjectView,
- qsizetype offset,
- MatchType matchType,
- MatchOptions matchOptions) const
+QRegularExpressionMatch QRegularExpression::matchView(QStringView subjectView,
+ qsizetype offset,
+ MatchType matchType,
+ MatchOptions matchOptions) const
{
d.data()->compilePattern();
auto priv = new QRegularExpressionMatchPrivate(*this,
@@ -1685,11 +1655,6 @@ QRegularExpressionMatch QRegularExpression::match(QStringView subjectView,
The returned QRegularExpressionMatchIterator is positioned before the
first match result (if any).
- \note The data referenced by \a subject should remain valid as long
- as there are QRegularExpressionMatch objects using it. At the moment
- Qt makes a (shallow) copy of the data, but this behavior may change
- in a future version of Qt.
-
\sa QRegularExpressionMatchIterator, {global matching}
*/
QRegularExpressionMatchIterator QRegularExpression::globalMatch(const QString &subject,
@@ -1706,9 +1671,26 @@ QRegularExpressionMatchIterator QRegularExpression::globalMatch(const QString &s
return QRegularExpressionMatchIterator(*priv);
}
+#if QT_DEPRECATED_SINCE(6, 8)
/*!
\since 6.0
\overload
+ \obsolete
+
+ Use globalMatchView() instead.
+*/
+QRegularExpressionMatchIterator QRegularExpression::globalMatch(QStringView subjectView,
+ qsizetype offset,
+ MatchType matchType,
+ MatchOptions matchOptions) const
+{
+ return globalMatchView(subjectView, offset, matchType, matchOptions);
+}
+#endif // QT_DEPRECATED_SINCE(6, 8)
+
+/*!
+ \since 6.5
+ \overload
Attempts to perform a global match of the regular expression against the
given \a subjectView string view, starting at the position \a offset inside the
@@ -1724,16 +1706,16 @@ QRegularExpressionMatchIterator QRegularExpression::globalMatch(const QString &s
\sa QRegularExpressionMatchIterator, {global matching}
*/
-QRegularExpressionMatchIterator QRegularExpression::globalMatch(QStringView subjectView,
- qsizetype offset,
- MatchType matchType,
- MatchOptions matchOptions) const
+QRegularExpressionMatchIterator QRegularExpression::globalMatchView(QStringView subjectView,
+ qsizetype offset,
+ MatchType matchType,
+ MatchOptions matchOptions) const
{
QRegularExpressionMatchIteratorPrivate *priv =
new QRegularExpressionMatchIteratorPrivate(*this,
matchType,
matchOptions,
- match(subjectView, offset, matchType, matchOptions));
+ matchView(subjectView, offset, matchType, matchOptions));
return QRegularExpressionMatchIterator(*priv);
}
@@ -1796,12 +1778,10 @@ size_t qHash(const QRegularExpression &key, size_t seed) noexcept
return qHashMulti(seed, key.d->pattern, key.d->patternOptions);
}
-#if QT_STRINGVIEW_LEVEL < 2
/*!
\fn QString QRegularExpression::escape(const QString &str)
\overload
*/
-#endif // QT_STRINGVIEW_LEVEL < 2
/*!
\since 5.15
@@ -1838,14 +1818,13 @@ QString QRegularExpression::escape(QStringView str)
// unlike Perl, a literal NUL must be escaped with
// "\\0" (backslash + 0) and not "\\\0" (backslash + NUL),
// because pcre16_compile uses a NUL-terminated string
- result.append(QLatin1Char('\\'));
- result.append(QLatin1Char('0'));
- } else if ( (current < QLatin1Char('a') || current > QLatin1Char('z')) &&
- (current < QLatin1Char('A') || current > QLatin1Char('Z')) &&
- (current < QLatin1Char('0') || current > QLatin1Char('9')) &&
- current != QLatin1Char('_') )
- {
- result.append(QLatin1Char('\\'));
+ result.append(u'\\');
+ result.append(u'0');
+ } else if ((current < u'a' || current > u'z') &&
+ (current < u'A' || current > u'Z') &&
+ (current < u'0' || current > u'9') &&
+ current != u'_') {
+ result.append(u'\\');
result.append(current);
if (current.isHighSurrogate() && i < (count - 1))
result.append(str.at(++i));
@@ -1858,13 +1837,11 @@ QString QRegularExpression::escape(QStringView str)
return result;
}
-#if QT_STRINGVIEW_LEVEL < 2
/*!
\since 5.12
\fn QString QRegularExpression::wildcardToRegularExpression(const QString &pattern, WildcardConversionOptions options)
\overload
*/
-#endif // QT_STRINGVIEW_LEVEL < 2
/*!
\since 6.0
@@ -1879,22 +1856,30 @@ QString QRegularExpression::escape(QStringView str)
\value UnanchoredWildcardConversion
The conversion will not anchor the pattern. This allows for partial string matches of
wildcard expressions.
+
+ \value [since 6.6] NonPathWildcardConversion
+ The conversion will \e{not} interpret the pattern as filepath globbing.
+
+ \sa QRegularExpression::wildcardToRegularExpression
*/
/*!
\since 5.15
Returns a regular expression representation of the given glob \a pattern.
- The transformation is targeting file path globbing, which means in particular
- that path separators receive special treatment. This implies that it is not
- just a basic translation from "*" to ".*".
+
+ There are two transformations possible, one that targets file path
+ globbing, and another one which is more generic.
+
+ By default, the transformation is targeting file path globbing,
+ which means in particular that path separators receive special
+ treatment. This implies that it is not just a basic translation
+ from "*" to ".*" and similar.
\snippet code/src_corelib_text_qregularexpression.cpp 31
- By default, the returned regular expression is fully anchored. In other
- words, there is no need of calling anchoredPattern() again on the
- result. To get an a regular expression that is not anchored, pass
- UnanchoredWildcardConversion as the conversion \a options.
+ The more generic globbing transformation is available by passing
+ \c NonPathWildcardConversion in the conversion \a options.
This implementation follows closely the definition
of wildcard for glob patterns:
@@ -1903,10 +1888,12 @@ QString QRegularExpression::escape(QStringView str)
\li Any character represents itself apart from those mentioned
below. Thus \b{c} matches the character \e c.
\row \li \b{?}
- \li Matches any single character. It is the same as
- \b{.} in full regexps.
+ \li Matches any single character, except for a path separator
+ (in case file path globbing has been selected). It is the
+ same as b{.} in full regexps.
\row \li \b{*}
- \li Matches zero or more of any characters. It is the
+ \li Matches zero or more of any characters, except for path
+ separators (in case file path globbing has been selected). It is the
same as \b{.*} in full regexps.
\row \li \b{[abc]}
\li Matches one character given in the bracket.
@@ -1920,9 +1907,10 @@ QString QRegularExpression::escape(QStringView str)
bracket. It is the same as \b{[^a-c]} in full regexp.
\endtable
- \note The backslash (\\) character is \e not an escape char in this context.
- In order to match one of the special characters, place it in square brackets
- (for example, \c{[?]}).
+ \note For historical reasons, a backslash (\\) character is \e not
+ an escape char in this context. In order to match one of the
+ special characters, place it in square brackets (for example,
+ \c{[?]}).
More information about the implementation can be found in:
\list
@@ -1930,6 +1918,11 @@ QString QRegularExpression::escape(QStringView str)
\li \c {man 7 glob}
\endlist
+ By default, the returned regular expression is fully anchored. In other
+ words, there is no need of calling anchoredPattern() again on the
+ result. To get a regular expression that is not anchored, pass
+ UnanchoredWildcardConversion in the conversion \a options.
+
\sa escape()
*/
QString QRegularExpression::wildcardToRegularExpression(QStringView pattern, WildcardConversionOptions options)
@@ -1940,29 +1933,51 @@ QString QRegularExpression::wildcardToRegularExpression(QStringView pattern, Wil
qsizetype i = 0;
const QChar *wc = pattern.data();
+ struct GlobSettings {
+ char16_t nativePathSeparator;
+ QStringView starEscape;
+ QStringView questionMarkEscape;
+ };
+
+ const GlobSettings settings = [options]() {
+ if (options.testFlag(NonPathWildcardConversion)) {
+ // using [\d\D] to mean "match everything";
+ // dot doesn't match newlines, unless in /s mode
+ return GlobSettings{ u'\0', u"[\\d\\D]*", u"[\\d\\D]" };
+ } else {
#ifdef Q_OS_WIN
- const QLatin1Char nativePathSeparator('\\');
- const QLatin1String starEscape("[^/\\\\]*");
- const QLatin1String questionMarkEscape("[^/\\\\]");
+ return GlobSettings{ u'\\', u"[^/\\\\]*", u"[^/\\\\]" };
#else
- const QLatin1Char nativePathSeparator('/');
- const QLatin1String starEscape("[^/]*");
- const QLatin1String questionMarkEscape("[^/]");
+ return GlobSettings{ u'/', u"[^/]*", u"[^/]" };
#endif
+ }
+ }();
while (i < wclen) {
const QChar c = wc[i++];
switch (c.unicode()) {
case '*':
- rx += starEscape;
+ rx += settings.starEscape;
break;
case '?':
- rx += questionMarkEscape;
+ rx += settings.questionMarkEscape;
break;
+ // When not using filepath globbing: \ is escaped, / is itself
+ // When using filepath globbing:
+ // * Unix: \ gets escaped. / is itself
+ // * Windows: \ and / can match each other -- they become [/\\] in regexp
case '\\':
#ifdef Q_OS_WIN
+ if (options.testFlag(NonPathWildcardConversion))
+ rx += u"\\\\";
+ else
+ rx += u"[/\\\\]";
+ break;
case '/':
- rx += QLatin1String("[/\\\\]");
+ if (options.testFlag(NonPathWildcardConversion))
+ rx += u'/';
+ else
+ rx += u"[/\\\\]";
break;
#endif
case '$':
@@ -1974,29 +1989,31 @@ QString QRegularExpression::wildcardToRegularExpression(QStringView pattern, Wil
case '{':
case '|':
case '}':
- rx += QLatin1Char('\\');
+ rx += u'\\';
rx += c;
break;
case '[':
rx += c;
// Support for the [!abc] or [!a-c] syntax
if (i < wclen) {
- if (wc[i] == QLatin1Char('!')) {
- rx += QLatin1Char('^');
+ if (wc[i] == u'!') {
+ rx += u'^';
++i;
}
- if (i < wclen && wc[i] == QLatin1Char(']'))
+ if (i < wclen && wc[i] == u']')
rx += wc[i++];
- while (i < wclen && wc[i] != QLatin1Char(']')) {
- // The '/' appearing in a character class invalidates the
- // regular expression parsing. It also concerns '\\' on
- // Windows OS types.
- if (wc[i] == QLatin1Char('/') || wc[i] == nativePathSeparator)
- return rx;
- if (wc[i] == QLatin1Char('\\'))
- rx += QLatin1Char('\\');
+ while (i < wclen && wc[i] != u']') {
+ if (!options.testFlag(NonPathWildcardConversion)) {
+ // The '/' appearing in a character class invalidates the
+ // regular expression parsing. It also concerns '\\' on
+ // Windows OS types.
+ if (wc[i] == u'/' || wc[i] == settings.nativePathSeparator)
+ return rx;
+ }
+ if (wc[i] == u'\\')
+ rx += u'\\';
rx += wc[i++];
}
}
@@ -2034,13 +2051,11 @@ QRegularExpression QRegularExpression::fromWildcard(QStringView pattern, Qt::Cas
return QRegularExpression(wildcardToRegularExpression(pattern, options), reOptions);
}
-#if QT_STRINGVIEW_LEVEL < 2
/*!
\fn QRegularExpression::anchoredPattern(const QString &expression)
\since 5.12
\overload
*/
-#endif // QT_STRINGVIEW_LEVEL < 2
/*!
\since 5.15
@@ -2051,9 +2066,9 @@ QRegularExpression QRegularExpression::fromWildcard(QStringView pattern, Qt::Cas
QString QRegularExpression::anchoredPattern(QStringView expression)
{
return QString()
- + QLatin1String("\\A(?:")
+ + "\\A(?:"_L1
+ expression
- + QLatin1String(")\\z");
+ + ")\\z"_L1;
}
/*!
@@ -2302,7 +2317,6 @@ QStringView QRegularExpressionMatch::capturedView(int nth) const
return d->subject.mid(start, capturedLength(nth));
}
-#if QT_STRINGVIEW_LEVEL < 2
/*! \fn QString QRegularExpressionMatch::captured(const QString &name) const
Returns the substring captured by the capturing group named \a name.
@@ -2313,7 +2327,6 @@ QStringView QRegularExpressionMatch::capturedView(int nth) const
\sa capturedView(), capturedStart(), capturedEnd(), capturedLength(),
QString::isNull()
*/
-#endif // QT_STRINGVIEW_LEVEL < 2
/*!
\since 5.10
@@ -2420,7 +2433,6 @@ qsizetype QRegularExpressionMatch::capturedEnd(int nth) const
return d->capturedOffsets.at(nth * 2 + 1);
}
-#if QT_STRINGVIEW_LEVEL < 2
/*! \fn qsizetype QRegularExpressionMatch::capturedStart(const QString &name) const
Returns the offset inside the subject string corresponding to the starting
@@ -2451,7 +2463,6 @@ qsizetype QRegularExpressionMatch::capturedEnd(int nth) const
\sa capturedStart(), capturedLength(), captured()
*/
-#endif // QT_STRINGVIEW_LEVEL < 2
/*!
\since 5.10
@@ -2700,7 +2711,7 @@ QRegularExpressionMatch QRegularExpressionMatchIterator::next()
}
d.detach();
- return qExchange(d->next, d->next.d.constData()->nextMatch());
+ return std::exchange(d->next, d->next.d.constData()->nextMatch());
}
/*!
@@ -3089,7 +3100,8 @@ static const char *pcreCompileErrorCodes[] =
QT_TRANSLATE_NOOP("QRegularExpression", "heap limit exceeded"),
QT_TRANSLATE_NOOP("QRegularExpression", "invalid syntax"),
QT_TRANSLATE_NOOP("QRegularExpression", "internal error - duplicate substitution match"),
- QT_TRANSLATE_NOOP("QRegularExpression", "PCRE2_MATCH_INVALID_UTF is not supported for DFA matching")
+ QT_TRANSLATE_NOOP("QRegularExpression", "PCRE2_MATCH_INVALID_UTF is not supported for DFA matching"),
+ QT_TRANSLATE_NOOP("QRegularExpression", "INTERNAL ERROR: invalid substring offset")
};
#endif // #if 0
diff --git a/src/corelib/text/qregularexpression.h b/src/corelib/text/qregularexpression.h
index 2d81d0c254..ed838327ef 100644
--- a/src/corelib/text/qregularexpression.h
+++ b/src/corelib/text/qregularexpression.h
@@ -1,43 +1,7 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 Giuseppe D'Angelo <dangelog@gmail.com>.
-** Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 Giuseppe D'Angelo <dangelog@gmail.com>.
+// Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QREGULAREXPRESSION_H
#define QREGULAREXPRESSION_H
@@ -54,8 +18,6 @@ QT_REQUIRE_CONFIG(regularexpression);
QT_BEGIN_NAMESPACE
-class QLatin1String;
-
class QRegularExpressionMatch;
class QRegularExpressionMatchIterator;
struct QRegularExpressionPrivate;
@@ -88,10 +50,10 @@ public:
QRegularExpression();
explicit QRegularExpression(const QString &pattern, PatternOptions options = NoPatternOption);
- QRegularExpression(const QRegularExpression &re);
+ QRegularExpression(const QRegularExpression &re) noexcept;
QRegularExpression(QRegularExpression &&re) = default;
~QRegularExpression();
- QRegularExpression &operator=(const QRegularExpression &re);
+ QRegularExpression &operator=(const QRegularExpression &re) noexcept;
QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QRegularExpression)
void swap(QRegularExpression &other) noexcept { d.swap(other.d); }
@@ -129,11 +91,20 @@ public:
MatchType matchType = NormalMatch,
MatchOptions matchOptions = NoMatchOption) const;
+#if QT_DEPRECATED_SINCE(6, 8)
[[nodiscard]]
+ QT_DEPRECATED_VERSION_X_6_8("Use matchView instead.")
QRegularExpressionMatch match(QStringView subjectView,
qsizetype offset = 0,
MatchType matchType = NormalMatch,
MatchOptions matchOptions = NoMatchOption) const;
+#endif
+
+ [[nodiscard]]
+ QRegularExpressionMatch matchView(QStringView subjectView,
+ qsizetype offset = 0,
+ MatchType matchType = NormalMatch,
+ MatchOptions matchOptions = NoMatchOption) const;
[[nodiscard]]
QRegularExpressionMatchIterator globalMatch(const QString &subject,
@@ -141,21 +112,30 @@ public:
MatchType matchType = NormalMatch,
MatchOptions matchOptions = NoMatchOption) const;
+#if QT_DEPRECATED_SINCE(6, 8)
[[nodiscard]]
+ QT_DEPRECATED_VERSION_X_6_8("Use globalMatchView instead.")
QRegularExpressionMatchIterator globalMatch(QStringView subjectView,
qsizetype offset = 0,
MatchType matchType = NormalMatch,
MatchOptions matchOptions = NoMatchOption) const;
+#endif
+
+ [[nodiscard]]
+ QRegularExpressionMatchIterator globalMatchView(QStringView subjectView,
+ qsizetype offset = 0,
+ MatchType matchType = NormalMatch,
+ MatchOptions matchOptions = NoMatchOption) const;
void optimize() const;
enum WildcardConversionOption {
DefaultWildcardConversion = 0x0,
- UnanchoredWildcardConversion = 0x1
+ UnanchoredWildcardConversion = 0x1,
+ NonPathWildcardConversion = 0x2,
};
Q_DECLARE_FLAGS(WildcardConversionOptions, WildcardConversionOption)
-#if QT_STRINGVIEW_LEVEL < 2
static QString escape(const QString &str)
{
return escape(qToStringViewIgnoringNull(str));
@@ -170,7 +150,6 @@ public:
{
return anchoredPattern(qToStringViewIgnoringNull(expression));
}
-#endif
static QString escape(QStringView str);
static QString wildcardToRegularExpression(QStringView str, WildcardConversionOptions options = DefaultWildcardConversion);
@@ -196,6 +175,7 @@ private:
Q_DECLARE_SHARED(QRegularExpression)
Q_DECLARE_OPERATORS_FOR_FLAGS(QRegularExpression::PatternOptions)
Q_DECLARE_OPERATORS_FOR_FLAGS(QRegularExpression::MatchOptions)
+Q_DECLARE_OPERATORS_FOR_FLAGS(QRegularExpression::WildcardConversionOptions)
#ifndef QT_NO_DATASTREAM
Q_CORE_EXPORT QDataStream &operator<<(QDataStream &out, const QRegularExpression &re);
@@ -233,21 +213,16 @@ public:
int lastCapturedIndex() const;
-#if QT_STRINGVIEW_LEVEL < 2
bool hasCaptured(const QString &name) const
{ return hasCaptured(QStringView(name)); }
-#endif
bool hasCaptured(QStringView name) const;
bool hasCaptured(int nth) const;
QString captured(int nth = 0) const;
QStringView capturedView(int nth = 0) const;
-#if QT_STRINGVIEW_LEVEL < 2
QString captured(const QString &name) const
{ return captured(QStringView(name)); }
-#endif
-
QString captured(QStringView name) const;
QStringView capturedView(QStringView name) const;
@@ -257,14 +232,12 @@ public:
qsizetype capturedLength(int nth = 0) const;
qsizetype capturedEnd(int nth = 0) const;
-#if QT_STRINGVIEW_LEVEL < 2
qsizetype capturedStart(const QString &name) const
{ return capturedStart(QStringView(name)); }
qsizetype capturedLength(const QString &name) const
{ return capturedLength(QStringView(name)); }
qsizetype capturedEnd(const QString &name) const
{ return capturedEnd(QStringView(name)); }
-#endif
qsizetype capturedStart(QStringView name) const;
qsizetype capturedLength(QStringView name) const;
diff --git a/src/corelib/text/qstaticlatin1stringmatcher.h b/src/corelib/text/qstaticlatin1stringmatcher.h
new file mode 100644
index 0000000000..d80ebd8547
--- /dev/null
+++ b/src/corelib/text/qstaticlatin1stringmatcher.h
@@ -0,0 +1,140 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef QSTATICLATIN1STRINGMATCHER_H
+#define QSTATICLATIN1STRINGMATCHER_H
+
+#include <functional>
+#include <iterator>
+#include <limits>
+
+#include <QtCore/q20algorithm.h>
+#include <QtCore/qlatin1stringmatcher.h>
+#include <QtCore/qstring.h>
+
+QT_BEGIN_NAMESPACE
+
+#ifdef Q_CC_GHS
+# define QT_STATIC_BOYER_MOORE_NOT_SUPPORTED
+#else
+namespace QtPrivate {
+template <class RandomIt1,
+ class Hash = std::hash<typename std::iterator_traits<RandomIt1>::value_type>,
+ class BinaryPredicate = std::equal_to<>>
+class q_boyer_moore_searcher
+{
+public:
+ constexpr q_boyer_moore_searcher(RandomIt1 pat_first, RandomIt1 pat_last) : m_skiptable{}
+ {
+ const size_t n = std::distance(pat_first, pat_last);
+ constexpr auto uchar_max = (std::numeric_limits<uchar>::max)();
+ uchar max = n > uchar_max ? uchar_max : uchar(n);
+ q20::fill(std::begin(m_skiptable), std::end(m_skiptable), max);
+ Hash hf;
+ RandomIt1 pattern = std::next(pat_first, n - max);
+ while (max--)
+ m_skiptable[hf(*pattern++)] = max;
+ }
+
+ template <class RandomIt2>
+ constexpr auto operator()(RandomIt2 first, RandomIt2 last, RandomIt1 pat_first,
+ RandomIt1 pat_last) const
+ {
+ struct R
+ {
+ RandomIt2 begin, end;
+ };
+ Hash hf;
+ BinaryPredicate pred;
+ auto pat_length = std::distance(pat_first, pat_last);
+ if (pat_length == 0)
+ return R{ first, first };
+
+ auto haystack_length = std::distance(first, last);
+ if (haystack_length < pat_length)
+ return R{ last, last };
+
+ const qsizetype pl_minus_one = qsizetype(pat_length - 1);
+ RandomIt2 current = first + pl_minus_one;
+
+ qsizetype skip = 0;
+ while (current < last - skip) {
+ current += skip;
+ skip = m_skiptable[hf(*current)];
+ if (!skip) {
+ // possible match
+ while (skip < pat_length) {
+ if (!pred(hf(*(current - skip)), hf(pat_first[pl_minus_one - skip])))
+ break;
+ skip++;
+ }
+ if (skip > pl_minus_one) { // we have a match
+ auto match = current + 1 - skip;
+ return R{ match, match + pat_length };
+ }
+
+ // If we don't have a match we are a bit inefficient as we only skip by one
+ // when we have the non matching char in the string.
+ if (m_skiptable[hf(*(current - skip))] == pat_length)
+ skip = pat_length - skip;
+ else
+ skip = 1;
+ }
+ }
+
+ return R{ last, last };
+ }
+
+private:
+ alignas(16) uchar m_skiptable[256];
+};
+} // namespace QtPrivate
+
+template <Qt::CaseSensitivity CS, size_t N>
+class QStaticLatin1StringMatcher
+{
+ static_assert(N > 2,
+ "QStaticLatin1StringMatcher makes no sense for finding a single-char pattern");
+
+ QLatin1StringView m_pattern;
+ using Hasher = std::conditional_t<CS == Qt::CaseSensitive, QtPrivate::QCaseSensitiveLatin1Hash,
+ QtPrivate::QCaseInsensitiveLatin1Hash>;
+ QtPrivate::q_boyer_moore_searcher<const char *, Hasher> m_searcher;
+
+public:
+ explicit constexpr QStaticLatin1StringMatcher(QLatin1StringView patternToMatch) noexcept
+ : m_pattern(patternToMatch),
+ m_searcher(patternToMatch.begin(), patternToMatch.begin() + N - 1)
+ {
+ }
+
+ constexpr qsizetype indexIn(QLatin1StringView haystack, qsizetype from = 0) const noexcept
+ {
+ if (from >= haystack.size())
+ return -1;
+ const char *begin = haystack.begin() + from;
+ const char *end = haystack.end();
+ const auto r = m_searcher(begin, end, m_pattern.begin(), m_pattern.end());
+ return r.begin == end ? -1 : std::distance(haystack.begin(), r.begin);
+ }
+};
+
+template <size_t N>
+constexpr auto qMakeStaticCaseSensitiveLatin1StringMatcher(const char (&patternToMatch)[N]) noexcept
+{
+ return QStaticLatin1StringMatcher<Qt::CaseSensitive, N>(
+ QLatin1StringView(patternToMatch, qsizetype(N) - 1));
+}
+
+template <size_t N>
+constexpr auto
+qMakeStaticCaseInsensitiveLatin1StringMatcher(const char (&patternToMatch)[N]) noexcept
+{
+ return QStaticLatin1StringMatcher<Qt::CaseInsensitive, N>(
+ QLatin1StringView(patternToMatch, qsizetype(N) - 1));
+}
+#endif
+
+QT_END_NAMESPACE
+
+#endif // QSTATICLATIN1STRINGMATCHER_H
diff --git a/src/corelib/text/qstaticlatin1stringmatcher.qdoc b/src/corelib/text/qstaticlatin1stringmatcher.qdoc
new file mode 100644
index 0000000000..6577f985b2
--- /dev/null
+++ b/src/corelib/text/qstaticlatin1stringmatcher.qdoc
@@ -0,0 +1,86 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
+
+/*! \class QStaticLatin1StringMatcher
+ \inmodule QtCore
+ \brief The QStaticLatin1StringMatcher class is a compile-time version
+ of QLatin1StringMatcher.
+
+ \since 6.7
+ \ingroup tools
+ \ingroup string-processing
+
+ This class is useful when your code needs to search efficiently
+ in Latin-1 strings for a substring that's known at compile-time.
+ This is common, for example, in parsers. Using a matcher
+ object's indexIn() is faster than using the indexOf() member method of
+ the string you are searching in, especially when the string to
+ be found will be searched for repeatedly or within a large
+ Latin-1 string that may contain many matches to prefixes of the
+ substring to be found.
+
+ Unlike QLatin1StringMatcher, this class calculates the internal
+ representation at \e{compile-time}, so it can be beneficial even if you
+ are doing one-off Latin-1 string matches.
+
+ Create the QStaticLatin1StringMatcher by calling
+ qMakeStaticCaseSensitiveLatin1StringMatcher() or
+ qMakeStaticCaseInsensitiveLatin1StringMatcher() passing the Latin-1
+ string to search for as a C string literal. Store the return value of
+ that function in a \c{static constexpr auto} variable, so you don't
+ need to pass the \c{N} template parameter explicitly.
+
+ Then call indexIn() on the QLatin1StringView in which you want to search,
+ just like with QLatin1StringMatcher.
+
+ Since this class is designed to do all the up-front calculations at
+ compile-time, it does not offer setPattern() or setCaseSensitivity()
+ methods.
+
+ \note INTEGRITY operating system is currently not supported.
+
+ \sa QLatin1StringMatcher, QStaticByteArrayMatcher, QByteArrayMatcher
+*/
+
+/*!
+ \fn template<Qt::CaseSensitivity CS, size_t N> constexpr qsizetype QStaticLatin1StringMatcher<CS, N>::indexIn(QLatin1StringView haystack, qsizetype from) const
+
+ Searches the QLatin1StringView \a haystack, from byte position \a from
+ (default 0, i.e. from the first byte), for QLatin1StringView pattern()
+ that was set in the constructor. Using the case sensitivity that was also
+ set in the constructor.
+
+ Returns the position where the pattern() matched in \a haystack, or -1 if no match was found.
+*/
+
+/*!
+ \fn template<size_t N> constexpr auto qMakeStaticCaseSensitiveLatin1StringMatcher(const char
+ (&patternToMatch)[N])
+
+ \since 6.7
+ \relates QStaticLatin1StringMatcher
+
+ Return a QStaticLatin1StringMatcher with the correct \c{N} determined
+ automatically from the \a patternToMatch passed, and with case sensitivity.
+
+ To take full advantage of this function, assign the result to a
+ \c{static constexpr auto} variable:
+
+ \snippet code/src_corelib_text_qstaticlatin1stringmatcher.cpp 0
+*/
+
+/*!
+ \fn template<size_t N> constexpr auto qMakeStaticCaseInsensitiveLatin1StringMatcher(const char
+ (&patternToMatch)[N])
+
+ \since 6.7
+ \relates QStaticLatin1StringMatcher
+
+ Return a QStaticLatin1StringMatcher with the correct \c{N} determined
+ automatically from the \a patternToMatch passed, and without case sensitivity.
+
+ To take full advantage of this function, assign the result to a
+ \c{static constexpr auto} variable:
+
+ \snippet code/src_corelib_text_qstaticlatin1stringmatcher.cpp 1
+*/
diff --git a/src/corelib/text/qstring.cpp b/src/corelib/text/qstring.cpp
index 437b31089d..f0bf0c50a3 100644
--- a/src/corelib/text/qstring.cpp
+++ b/src/corelib/text/qstring.cpp
@@ -1,43 +1,7 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Copyright (C) 2022 Intel Corporation.
-** Copyright (C) 2019 Mail.ru Group.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// Copyright (C) 2022 Intel Corporation.
+// Copyright (C) 2019 Mail.ru Group.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qstringlist.h"
#if QT_CONFIG(regularexpression)
@@ -45,6 +9,7 @@
#endif
#include "qunicodetables_p.h"
#include <private/qstringconverter_p.h>
+#include <private/qtools_p.h>
#include "qlocale_tools_p.h"
#include "private/qsimd_p.h"
#include <qnumeric.h>
@@ -52,14 +17,16 @@
#include <qlist.h>
#include "qlocale.h"
#include "qlocale_p.h"
+#include "qspan.h"
#include "qstringbuilder.h"
#include "qstringmatcher.h"
#include "qvarlengtharray.h"
#include "qdebug.h"
#include "qendian.h"
#include "qcollator.h"
+#include "qttypetraits.h"
-#ifdef Q_OS_MAC
+#ifdef Q_OS_DARWIN
#include <private/qcore_mac_p.h>
#endif
@@ -73,35 +40,28 @@
#include <wchar.h>
#include "qchar.cpp"
+#include "qlatin1stringmatcher.h"
#include "qstringmatcher.cpp"
#include "qstringiterator_p.h"
#include "qstringalgorithms_p.h"
#include "qthreadstorage.h"
-#include "qbytearraymatcher.h" // Helper for comparison of QLatin1String
-
#include <algorithm>
#include <functional>
#ifdef Q_OS_WIN
# include <qt_windows.h>
+# if !defined(QT_BOOTSTRAPPED) && (defined(QT_NO_CAST_FROM_ASCII) || defined(QT_NO_CAST_TO_ASCII))
+// MSVC requires this, but let's apply it to MinGW compilers too, just in case
+# error "This file cannot be compiled with QT_NO_CAST_{TO,FROM}_ASCII, " \
+ "otherwise some QString functions will not get exported."
+# endif
#endif
#ifdef truncate
# undef truncate
#endif
-#ifndef LLONG_MAX
-#define LLONG_MAX qint64_C(9223372036854775807)
-#endif
-#ifndef LLONG_MIN
-#define LLONG_MIN (-LLONG_MAX - qint64_C(1))
-#endif
-#ifndef ULLONG_MAX
-#define ULLONG_MAX quint64_C(18446744073709551615)
-#endif
-
-#define IS_RAW_DATA(d) ((d.d)->flags & QArrayData::RawDataType)
#define REHASH(a) \
if (sl_minus_1 < sizeof(std::size_t) * CHAR_BIT) \
hashHaystack -= std::size_t(a) << sl_minus_1; \
@@ -109,6 +69,9 @@
QT_BEGIN_NAMESPACE
+using namespace Qt::StringLiterals;
+using namespace QtMiscUtils;
+
const char16_t QString::_empty = 0;
// in qstringmatcher.cpp
@@ -120,23 +83,6 @@ enum StringComparisonMode {
CompareStringsForOrdering
};
-inline bool qIsUpper(char ch)
-{
- return ch >= 'A' && ch <= 'Z';
-}
-
-inline bool qIsDigit(char ch)
-{
- return ch >= '0' && ch <= '9';
-}
-
-inline char qToLower(char ch)
-{
- if (ch >= 'A' && ch <= 'Z')
- return ch - 'A' + 'a';
- else
- return ch;
-}
template <typename Pointer>
char32_t foldCaseHelper(Pointer ch, Pointer start) = delete;
@@ -168,6 +114,12 @@ char16_t valueTypeToUtf16<char>(char t)
return char16_t{uchar(t)};
}
+template <typename T>
+static inline bool foldAndCompare(const T a, const T b)
+{
+ return foldCase(a) == b;
+}
+
/*!
\internal
@@ -176,32 +128,6 @@ char16_t valueTypeToUtf16<char>(char t)
searching forward from index
position \a from. Returns -1 if \a ch could not be found.
*/
-static inline qsizetype qFindChar(QStringView str, QChar ch, qsizetype from, Qt::CaseSensitivity cs) noexcept
-{
- if (-from > str.size())
- return -1;
- if (from < 0)
- from = qMax(from + str.size(), qsizetype(0));
- if (from < str.size()) {
- const char16_t *s = str.utf16();
- char16_t c = ch.unicode();
- const char16_t *n = s + from;
- const char16_t *e = s + str.size();
- if (cs == Qt::CaseSensitive) {
- n = QtPrivate::qustrchr(QStringView(n, e), c);
- if (n != e)
- return n - s;
- } else {
- c = foldCase(c);
- --n;
- while (++n != e)
- if (foldCase(*n) == c)
- return n - s;
- }
- }
- return -1;
-}
-
template <typename Haystack>
static inline qsizetype qLastIndexOf(Haystack haystack, QChar needle,
qsizetype from, Qt::CaseSensitivity cs) noexcept
@@ -295,6 +221,104 @@ static qsizetype qLastIndexOf(Haystack haystack0, qsizetype from,
}
return -1;
}
+
+template <typename Haystack, typename Needle>
+bool qt_starts_with_impl(Haystack haystack, Needle needle, Qt::CaseSensitivity cs) noexcept
+{
+ if (haystack.isNull())
+ return needle.isNull();
+ const auto haystackLen = haystack.size();
+ const auto needleLen = needle.size();
+ if (haystackLen == 0)
+ return needleLen == 0;
+ if (needleLen > haystackLen)
+ return false;
+
+ return QtPrivate::compareStrings(haystack.first(needleLen), needle, cs) == 0;
+}
+
+template <typename Haystack, typename Needle>
+bool qt_ends_with_impl(Haystack haystack, Needle needle, Qt::CaseSensitivity cs) noexcept
+{
+ if (haystack.isNull())
+ return needle.isNull();
+ const auto haystackLen = haystack.size();
+ const auto needleLen = needle.size();
+ if (haystackLen == 0)
+ return needleLen == 0;
+ if (haystackLen < needleLen)
+ return false;
+
+ return QtPrivate::compareStrings(haystack.last(needleLen), needle, cs) == 0;
+}
+
+template <typename T>
+static void append_helper(QString &self, T view)
+{
+ const auto strData = view.data();
+ const qsizetype strSize = view.size();
+ auto &d = self.data_ptr();
+ if (strData && strSize > 0) {
+ // the number of UTF-8 code units is always at a minimum equal to the number
+ // of equivalent UTF-16 code units
+ d.detachAndGrow(QArrayData::GrowsAtEnd, strSize, nullptr, nullptr);
+ Q_CHECK_PTR(d.data());
+ Q_ASSERT(strSize <= d.freeSpaceAtEnd());
+
+ auto dst = std::next(d.data(), d.size);
+ if constexpr (std::is_same_v<T, QUtf8StringView>) {
+ dst = QUtf8::convertToUnicode(dst, view);
+ } else if constexpr (std::is_same_v<T, QLatin1StringView>) {
+ QLatin1::convertToUnicode(dst, view);
+ dst += strSize;
+ } else {
+ static_assert(QtPrivate::type_dependent_false<T>(),
+ "Can only operate on UTF-8 and Latin-1");
+ }
+ self.resize(std::distance(d.begin(), dst));
+ } else if (d.isNull() && !view.isNull()) { // special case
+ self = QLatin1StringView("");
+ }
+}
+
+template <uint MaxCount> struct UnrollTailLoop
+{
+ template <typename RetType, typename Functor1, typename Functor2, typename Number>
+ static inline RetType exec(Number count, RetType returnIfExited, Functor1 loopCheck, Functor2 returnIfFailed, Number i = 0)
+ {
+ /* equivalent to:
+ * while (count--) {
+ * if (loopCheck(i))
+ * return returnIfFailed(i);
+ * }
+ * return returnIfExited;
+ */
+
+ if (!count)
+ return returnIfExited;
+
+ bool check = loopCheck(i);
+ if (check)
+ return returnIfFailed(i);
+
+ return UnrollTailLoop<MaxCount - 1>::exec(count - 1, returnIfExited, loopCheck, returnIfFailed, i + 1);
+ }
+
+ template <typename Functor, typename Number>
+ static inline void exec(Number count, Functor code)
+ {
+ /* equivalent to:
+ * for (Number i = 0; i < count; ++i)
+ * code(i);
+ */
+ exec(count, 0, [=](Number i) -> bool { code(i); return false; }, [](Number) { return 0; });
+ }
+};
+template <> template <typename RetType, typename Functor1, typename Functor2, typename Number>
+inline RetType UnrollTailLoop<0>::exec(Number, RetType returnIfExited, Functor1, Functor2, Number)
+{
+ return returnIfExited;
+}
} // unnamed namespace
/*
@@ -334,30 +358,38 @@ extern "C" void qt_fromlatin1_mips_asm_unroll8 (char16_t*, const char*, uint);
extern "C" void qt_toLatin1_mips_dsp_asm(uchar *dst, const char16_t *src, int length);
#endif
-static inline bool qt_starts_with(QStringView haystack, QStringView needle, Qt::CaseSensitivity cs);
-static inline bool qt_starts_with(QStringView haystack, QLatin1String needle, Qt::CaseSensitivity cs);
-static inline bool qt_starts_with(QStringView haystack, QChar needle, Qt::CaseSensitivity cs);
-static inline bool qt_ends_with(QStringView haystack, QStringView needle, Qt::CaseSensitivity cs);
-static inline bool qt_ends_with(QStringView haystack, QLatin1String needle, Qt::CaseSensitivity cs);
-static inline bool qt_ends_with(QStringView haystack, QChar needle, Qt::CaseSensitivity cs);
-
-#if defined(__SSE2__) && defined(Q_CC_GNU) && !defined(Q_CC_INTEL)
-# if defined(__SANITIZE_ADDRESS__) && Q_CC_GNU < 800 && !defined(Q_CC_CLANG)
-# warning "The __attribute__ on below will likely cause a build failure with your GCC version. Your choices are:"
-# warning "1) disable ASan;"
-# warning "2) disable the optimized code in qustrlen (change __SSE2__ to anything else);"
-# warning "3) upgrade your compiler (preferred)."
-# endif
-
+#if defined(__SSE2__) && defined(Q_CC_GNU)
// We may overrun the buffer, but that's a false positive:
// this won't crash nor produce incorrect results
-__attribute__((__no_sanitize_address__))
+# define ATTRIBUTE_NO_SANITIZE __attribute__((__no_sanitize_address__))
+#else
+# define ATTRIBUTE_NO_SANITIZE
#endif
-qsizetype QtPrivate::qustrlen(const char16_t *str) noexcept
+
+#ifdef __SSE2__
+static constexpr bool UseSse4_1 = bool(qCompilerCpuFeatures & CpuFeatureSSE4_1);
+static constexpr bool UseAvx2 = UseSse4_1 &&
+ (qCompilerCpuFeatures & CpuFeatureArchHaswell) == CpuFeatureArchHaswell;
+
+[[maybe_unused]]
+static Q_ALWAYS_INLINE __m128i mm_load8_zero_extend(const void *ptr)
{
- qsizetype result = 0;
+ const __m128i *dataptr = static_cast<const __m128i *>(ptr);
+ if constexpr (UseSse4_1) {
+ // use a MOVQ followed by PMOVZXBW
+ // if AVX2 is present, these should combine into a single VPMOVZXBW instruction
+ __m128i data = _mm_loadl_epi64(dataptr);
+ return _mm_cvtepu8_epi16(data);
+ }
-#if defined(__SSE2__) && !(defined(__SANITIZE_ADDRESS__) || __has_feature(address_sanitizer))
+ // use MOVQ followed by PUNPCKLBW
+ __m128i data = _mm_loadl_epi64(dataptr);
+ return _mm_unpacklo_epi8(data, _mm_setzero_si128());
+}
+
+[[maybe_unused]] ATTRIBUTE_NO_SANITIZE
+static qsizetype qustrlen_sse2(const char16_t *str) noexcept
+{
// find the 16-byte alignment immediately prior or equal to str
quintptr misalignment = quintptr(str) & 0xf;
Q_ASSERT((misalignment & 1) == 0);
@@ -368,7 +400,7 @@ qsizetype QtPrivate::qustrlen(const char16_t *str) noexcept
const __m128i zeroes = _mm_setzero_si128();
__m128i data = _mm_load_si128(reinterpret_cast<const __m128i *>(ptr));
__m128i comparison = _mm_cmpeq_epi16(data, zeroes);
- quint32 mask = _mm_movemask_epi8(comparison);
+ uint mask = _mm_movemask_epi8(comparison);
// ignore the result prior to the beginning of str
mask >>= misalignment;
@@ -376,71 +408,272 @@ qsizetype QtPrivate::qustrlen(const char16_t *str) noexcept
// Have we found something in the first block? Need to handle it now
// because of the left shift above.
if (mask)
- return qCountTrailingZeroBits(quint32(mask)) / 2;
+ return qCountTrailingZeroBits(mask) / sizeof(char16_t);
+ constexpr qsizetype Step = sizeof(__m128i) / sizeof(char16_t);
+ qsizetype size = Step - misalignment / sizeof(char16_t);
+
+ size -= Step;
do {
- ptr += 8;
- data = _mm_load_si128(reinterpret_cast<const __m128i *>(ptr));
+ size += Step;
+ data = _mm_load_si128(reinterpret_cast<const __m128i *>(str + size));
comparison = _mm_cmpeq_epi16(data, zeroes);
mask = _mm_movemask_epi8(comparison);
} while (mask == 0);
// found a null
- uint idx = qCountTrailingZeroBits(quint32(mask));
- return ptr - str + idx / 2;
-#endif
+ return size + qCountTrailingZeroBits(mask) / sizeof(char16_t);
+}
- if (sizeof(wchar_t) == sizeof(char16_t))
- return wcslen(reinterpret_cast<const wchar_t *>(str));
+// Scans from \a ptr to \a end until \a maskval is non-zero. Returns true if
+// the no non-zero was found. Returns false and updates \a ptr to point to the
+// first 16-bit word that has any bit set (note: if the input is 8-bit, \a ptr
+// may be updated to one byte short).
+static bool simdTestMask(const char *&ptr, const char *end, quint32 maskval)
+{
+ auto updatePtr = [&](uint result) {
+ // found a character matching the mask
+ uint idx = qCountTrailingZeroBits(~result);
+ ptr += idx;
+ return false;
+ };
- while (*str++)
- ++result;
- return result;
+ if constexpr (UseSse4_1) {
+# ifndef Q_OS_QNX // compiler fails in the code below
+ __m128i mask;
+ auto updatePtrSimd = [&](__m128i data) -> bool {
+ __m128i masked = _mm_and_si128(mask, data);
+ __m128i comparison = _mm_cmpeq_epi16(masked, _mm_setzero_si128());
+ uint result = _mm_movemask_epi8(comparison);
+ return updatePtr(result);
+ };
+
+ if constexpr (UseAvx2) {
+ // AVX2 implementation: test 32 bytes at a time
+ const __m256i mask256 = _mm256_broadcastd_epi32(_mm_cvtsi32_si128(maskval));
+ while (ptr + 32 <= end) {
+ __m256i data = _mm256_loadu_si256(reinterpret_cast<const __m256i *>(ptr));
+ if (!_mm256_testz_si256(mask256, data)) {
+ // found a character matching the mask
+ __m256i masked256 = _mm256_and_si256(mask256, data);
+ __m256i comparison256 = _mm256_cmpeq_epi16(masked256, _mm256_setzero_si256());
+ return updatePtr(_mm256_movemask_epi8(comparison256));
+ }
+ ptr += 32;
+ }
+
+ mask = _mm256_castsi256_si128(mask256);
+ } else {
+ // SSE 4.1 implementation: test 32 bytes at a time (two 16-byte
+ // comparisons, unrolled)
+ mask = _mm_set1_epi32(maskval);
+ while (ptr + 32 <= end) {
+ __m128i data1 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(ptr));
+ __m128i data2 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(ptr + 16));
+ if (!_mm_testz_si128(mask, data1))
+ return updatePtrSimd(data1);
+
+ ptr += 16;
+ if (!_mm_testz_si128(mask, data2))
+ return updatePtrSimd(data2);
+ ptr += 16;
+ }
+ }
+
+ // AVX2 and SSE4.1: final 16-byte comparison
+ if (ptr + 16 <= end) {
+ __m128i data1 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(ptr));
+ if (!_mm_testz_si128(mask, data1))
+ return updatePtrSimd(data1);
+ ptr += 16;
+ }
+
+ // and final 8-byte comparison
+ if (ptr + 8 <= end) {
+ __m128i data1 = _mm_loadl_epi64(reinterpret_cast<const __m128i *>(ptr));
+ if (!_mm_testz_si128(mask, data1))
+ return updatePtrSimd(data1);
+ ptr += 8;
+ }
+
+ return true;
+# endif // QNX
+ }
+
+ // SSE2 implementation: test 16 bytes at a time.
+ const __m128i mask = _mm_set1_epi32(maskval);
+ while (ptr + 16 <= end) {
+ __m128i data = _mm_loadu_si128(reinterpret_cast<const __m128i *>(ptr));
+ __m128i masked = _mm_and_si128(mask, data);
+ __m128i comparison = _mm_cmpeq_epi16(masked, _mm_setzero_si128());
+ quint16 result = _mm_movemask_epi8(comparison);
+ if (result != 0xffff)
+ return updatePtr(result);
+ ptr += 16;
+ }
+
+ // and one 8-byte comparison
+ if (ptr + 8 <= end) {
+ __m128i data = _mm_loadl_epi64(reinterpret_cast<const __m128i *>(ptr));
+ __m128i masked = _mm_and_si128(mask, data);
+ __m128i comparison = _mm_cmpeq_epi16(masked, _mm_setzero_si128());
+ quint8 result = _mm_movemask_epi8(comparison);
+ if (result != 0xff)
+ return updatePtr(result);
+ ptr += 8;
+ }
+
+ return true;
}
-#if !defined(__OPTIMIZE_SIZE__)
-namespace {
-template <uint MaxCount> struct UnrollTailLoop
+template <StringComparisonMode Mode, typename Char> [[maybe_unused]]
+static int ucstrncmp_sse2(const char16_t *a, const Char *b, size_t l)
{
- template <typename RetType, typename Functor1, typename Functor2, typename Number>
- static inline RetType exec(Number count, RetType returnIfExited, Functor1 loopCheck, Functor2 returnIfFailed, Number i = 0)
- {
- /* equivalent to:
- * while (count--) {
- * if (loopCheck(i))
- * return returnIfFailed(i);
- * }
- * return returnIfExited;
- */
+ static_assert(std::is_unsigned_v<Char>);
- if (!count)
- return returnIfExited;
+ // Using the PMOVMSKB instruction, we get two bits for each UTF-16 character
+ // we compare. This lambda helps extract the code unit.
+ static const auto codeUnitAt = [](const auto *n, qptrdiff idx) -> int {
+ constexpr int Stride = 2;
+ // this is the same as:
+ // return n[idx / Stride];
+ // but using pointer arithmetic to avoid the compiler dividing by two
+ // and multiplying by two in the case of char16_t (we know idx is even,
+ // but the compiler does not). This is not UB.
- bool check = loopCheck(i);
- if (check)
- return returnIfFailed(i);
+ auto ptr = reinterpret_cast<const uchar *>(n);
+ ptr += idx / (Stride / sizeof(*n));
+ return *reinterpret_cast<decltype(n)>(ptr);
+ };
+ auto difference = [a, b](uint mask, qptrdiff offset) {
+ if (Mode == CompareStringsForEquality)
+ return 1;
+ uint idx = qCountTrailingZeroBits(mask);
+ return codeUnitAt(a + offset, idx) - codeUnitAt(b + offset, idx);
+ };
- return UnrollTailLoop<MaxCount - 1>::exec(count - 1, returnIfExited, loopCheck, returnIfFailed, i + 1);
- }
+ static const auto load8Chars = [](const auto *ptr) {
+ if (sizeof(*ptr) == 2)
+ return _mm_loadu_si128(reinterpret_cast<const __m128i *>(ptr));
+ __m128i chunk = _mm_loadl_epi64(reinterpret_cast<const __m128i *>(ptr));
+ return _mm_unpacklo_epi8(chunk, _mm_setzero_si128());
+ };
+ static const auto load4Chars = [](const auto *ptr) {
+ if (sizeof(*ptr) == 2)
+ return _mm_loadl_epi64(reinterpret_cast<const __m128i *>(ptr));
+ __m128i chunk = _mm_cvtsi32_si128(qFromUnaligned<quint32>(ptr));
+ return _mm_unpacklo_epi8(chunk, _mm_setzero_si128());
+ };
- template <typename Functor, typename Number>
- static inline void exec(Number count, Functor code)
- {
- /* equivalent to:
- * for (Number i = 0; i < count; ++i)
- * code(i);
- */
- exec(count, 0, [=](Number i) -> bool { code(i); return false; }, [](Number) { return 0; });
+ // we're going to read a[0..15] and b[0..15] (32 bytes)
+ auto processChunk16Chars = [a, b](qptrdiff offset) -> uint {
+ if constexpr (UseAvx2) {
+ __m256i a_data = _mm256_loadu_si256(reinterpret_cast<const __m256i *>(a + offset));
+ __m256i b_data;
+ if (sizeof(Char) == 1) {
+ // expand to UTF-16 via zero-extension
+ __m128i chunk = _mm_loadu_si128(reinterpret_cast<const __m128i *>(b + offset));
+ b_data = _mm256_cvtepu8_epi16(chunk);
+ } else {
+ b_data = _mm256_loadu_si256(reinterpret_cast<const __m256i *>(b + offset));
+ }
+ __m256i result = _mm256_cmpeq_epi16(a_data, b_data);
+ return _mm256_movemask_epi8(result);
+ }
+
+ __m128i a_data1 = load8Chars(a + offset);
+ __m128i a_data2 = load8Chars(a + offset + 8);
+ __m128i b_data1, b_data2;
+ if (sizeof(Char) == 1) {
+ // expand to UTF-16 via unpacking
+ __m128i b_data = _mm_loadu_si128(reinterpret_cast<const __m128i *>(b + offset));
+ b_data1 = _mm_unpacklo_epi8(b_data, _mm_setzero_si128());
+ b_data2 = _mm_unpackhi_epi8(b_data, _mm_setzero_si128());
+ } else {
+ b_data1 = load8Chars(b + offset);
+ b_data2 = load8Chars(b + offset + 8);
+ }
+ __m128i result1 = _mm_cmpeq_epi16(a_data1, b_data1);
+ __m128i result2 = _mm_cmpeq_epi16(a_data2, b_data2);
+ return _mm_movemask_epi8(result1) | _mm_movemask_epi8(result2) << 16;
+ };
+
+ if (l >= sizeof(__m256i) / sizeof(char16_t)) {
+ qptrdiff offset = 0;
+ for ( ; l >= offset + sizeof(__m256i) / sizeof(char16_t); offset += sizeof(__m256i) / sizeof(char16_t)) {
+ uint mask = ~processChunk16Chars(offset);
+ if (mask)
+ return difference(mask, offset);
+ }
+
+ // maybe overlap the last 32 bytes
+ if (size_t(offset) < l) {
+ offset = l - sizeof(__m256i) / sizeof(char16_t);
+ uint mask = ~processChunk16Chars(offset);
+ return mask ? difference(mask, offset) : 0;
+ }
+ } else if (l >= 4) {
+ __m128i a_data1, b_data1;
+ __m128i a_data2, b_data2;
+ int width;
+ if (l >= 8) {
+ width = 8;
+ a_data1 = load8Chars(a);
+ b_data1 = load8Chars(b);
+ a_data2 = load8Chars(a + l - width);
+ b_data2 = load8Chars(b + l - width);
+ } else {
+ // we're going to read a[0..3] and b[0..3] (8 bytes)
+ width = 4;
+ a_data1 = load4Chars(a);
+ b_data1 = load4Chars(b);
+ a_data2 = load4Chars(a + l - width);
+ b_data2 = load4Chars(b + l - width);
+ }
+
+ __m128i result = _mm_cmpeq_epi16(a_data1, b_data1);
+ ushort mask = ~_mm_movemask_epi8(result);
+ if (mask)
+ return difference(mask, 0);
+
+ result = _mm_cmpeq_epi16(a_data2, b_data2);
+ mask = ~_mm_movemask_epi8(result);
+ if (mask)
+ return difference(mask, l - width);
+ } else {
+ // reset l
+ l &= 3;
+
+ const auto lambda = [=](size_t i) -> int {
+ return a[i] - b[i];
+ };
+ return UnrollTailLoop<3>::exec(l, 0, lambda, lambda);
}
-};
-template <> template <typename RetType, typename Functor1, typename Functor2, typename Number>
-inline RetType UnrollTailLoop<0>::exec(Number, RetType returnIfExited, Functor1, Functor2, Number)
+ return 0;
+}
+#endif
+
+Q_NEVER_INLINE
+qsizetype QtPrivate::qustrlen(const char16_t *str) noexcept
{
- return returnIfExited;
+#if defined(__SSE2__) && !(defined(__SANITIZE_ADDRESS__) || __has_feature(address_sanitizer))
+ return qustrlen_sse2(str);
+#endif
+
+ if (sizeof(wchar_t) == sizeof(char16_t))
+ return wcslen(reinterpret_cast<const wchar_t *>(str));
+
+ qsizetype result = 0;
+ while (*str++)
+ ++result;
+ return result;
}
+
+qsizetype QtPrivate::qustrnlen(const char16_t *str, qsizetype maxlen) noexcept
+{
+ return qustrchr({ str, maxlen }, u'\0') - str;
}
-#endif
/*!
* \internal
@@ -450,6 +683,7 @@ inline RetType UnrollTailLoop<0>::exec(Number, RetType returnIfExited, Functor1,
* character is not found, this function returns a pointer to the end of the
* string -- that is, \c{str.end()}.
*/
+Q_NEVER_INLINE
const char16_t *QtPrivate::qustrchr(QStringView str, char16_t c) noexcept
{
const char16_t *n = str.utf16();
@@ -459,23 +693,24 @@ const char16_t *QtPrivate::qustrchr(QStringView str, char16_t c) noexcept
bool loops = true;
// Using the PMOVMSKB instruction, we get two bits for each character
// we compare.
-# if defined(__AVX2__) && !defined(__OPTIMIZE_SIZE__)
- // we're going to read n[0..15] (32 bytes)
- __m256i mch256 = _mm256_set1_epi32(c | (c << 16));
- for (const char16_t *next = n + 16; next <= e; n = next, next += 16) {
- __m256i data = _mm256_loadu_si256(reinterpret_cast<const __m256i *>(n));
- __m256i result = _mm256_cmpeq_epi16(data, mch256);
- uint mask = uint(_mm256_movemask_epi8(result));
- if (mask) {
- uint idx = qCountTrailingZeroBits(mask);
- return n + idx / 2;
+ __m128i mch;
+ if constexpr (UseAvx2) {
+ // we're going to read n[0..15] (32 bytes)
+ __m256i mch256 = _mm256_set1_epi32(c | (c << 16));
+ for (const char16_t *next = n + 16; next <= e; n = next, next += 16) {
+ __m256i data = _mm256_loadu_si256(reinterpret_cast<const __m256i *>(n));
+ __m256i result = _mm256_cmpeq_epi16(data, mch256);
+ uint mask = uint(_mm256_movemask_epi8(result));
+ if (mask) {
+ uint idx = qCountTrailingZeroBits(mask);
+ return n + idx / 2;
+ }
}
+ loops = false;
+ mch = _mm256_castsi256_si128(mch256);
+ } else {
+ mch = _mm_set1_epi32(c | (c << 16));
}
- loops = false;
- __m128i mch = _mm256_castsi256_si128(mch256);
-# else
- __m128i mch = _mm_set1_epi32(c | (c << 16));
-# endif
auto hasMatch = [mch, &n](__m128i data, ushort validityMask) {
__m128i result = _mm_cmpeq_epi16(data, mch);
@@ -510,8 +745,8 @@ const char16_t *QtPrivate::qustrchr(QStringView str, char16_t c) noexcept
}
return UnrollTailLoop<3>::exec(e - n, e,
- [=](int i) { return n[i] == c; },
- [=](int i) { return n + i; });
+ [=](qsizetype i) { return n[i] == c; },
+ [=](qsizetype i) { return n + i; });
# endif
#elif defined(__ARM_NEON__)
const uint16x8_t vmask = { 1, 1 << 1, 1 << 2, 1 << 3, 1 << 4, 1 << 5, 1 << 6, 1 << 7 };
@@ -526,128 +761,25 @@ const char16_t *QtPrivate::qustrchr(QStringView str, char16_t c) noexcept
}
#endif // aarch64
- --n;
- while (++n != e)
- if (*n == c)
- return n;
-
- return n;
+ return std::find(n, e, c);
}
-#ifdef __SSE2__
-// Scans from \a ptr to \a end until \a maskval is non-zero. Returns true if
-// the no non-zero was found. Returns false and updates \a ptr to point to the
-// first 16-bit word that has any bit set (note: if the input is 8-bit, \a ptr
-// may be updated to one byte short).
-static bool simdTestMask(const char *&ptr, const char *end, quint32 maskval)
-{
- auto updatePtr = [&](uint result) {
- // found a character matching the mask
- uint idx = qCountTrailingZeroBits(~result);
- ptr += idx;
- return false;
- };
-
-# if defined(__SSE4_1__)
- __m128i mask;
- auto updatePtrSimd = [&](__m128i data) {
- __m128i masked = _mm_and_si128(mask, data);
- __m128i comparison = _mm_cmpeq_epi16(masked, _mm_setzero_si128());
- uint result = _mm_movemask_epi8(comparison);
- return updatePtr(result);
- };
-
-# if defined(__AVX2__)
- // AVX2 implementation: test 32 bytes at a time
- const __m256i mask256 = _mm256_broadcastd_epi32(_mm_cvtsi32_si128(maskval));
- while (ptr + 32 <= end) {
- __m256i data = _mm256_loadu_si256(reinterpret_cast<const __m256i *>(ptr));
- if (!_mm256_testz_si256(mask256, data)) {
- // found a character matching the mask
- __m256i masked256 = _mm256_and_si256(mask256, data);
- __m256i comparison256 = _mm256_cmpeq_epi16(masked256, _mm256_setzero_si256());
- return updatePtr(_mm256_movemask_epi8(comparison256));
- }
- ptr += 32;
- }
-
- mask = _mm256_castsi256_si128(mask256);
-# else
- // SSE 4.1 implementation: test 32 bytes at a time (two 16-byte
- // comparisons, unrolled)
- mask = _mm_set1_epi32(maskval);
- while (ptr + 32 <= end) {
- __m128i data1 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(ptr));
- __m128i data2 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(ptr + 16));
- if (!_mm_testz_si128(mask, data1))
- return updatePtrSimd(data1);
-
- ptr += 16;
- if (!_mm_testz_si128(mask, data2))
- return updatePtrSimd(data2);
- ptr += 16;
- }
-# endif
-
- // AVX2 and SSE4.1: final 16-byte comparison
- if (ptr + 16 <= end) {
- __m128i data1 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(ptr));
- if (!_mm_testz_si128(mask, data1))
- return updatePtrSimd(data1);
- ptr += 16;
- }
-
- // and final 8-byte comparison
- if (ptr + 8 <= end) {
- __m128i data1 = _mm_loadl_epi64(reinterpret_cast<const __m128i *>(ptr));
- if (!_mm_testz_si128(mask, data1))
- return updatePtrSimd(data1);
- ptr += 8;
- }
-
-# else
- // SSE2 implementation: test 16 bytes at a time.
- const __m128i mask = _mm_set1_epi32(maskval);
- while (ptr + 16 <= end) {
- __m128i data = _mm_loadu_si128(reinterpret_cast<const __m128i *>(ptr));
- __m128i masked = _mm_and_si128(mask, data);
- __m128i comparison = _mm_cmpeq_epi16(masked, _mm_setzero_si128());
- quint16 result = _mm_movemask_epi8(comparison);
- if (result != 0xffff)
- return updatePtr(result);
- ptr += 16;
- }
-
- // and one 8-byte comparison
- if (ptr + 8 <= end) {
- __m128i data = _mm_loadl_epi64(reinterpret_cast<const __m128i *>(ptr));
- __m128i masked = _mm_and_si128(mask, data);
- __m128i comparison = _mm_cmpeq_epi16(masked, _mm_setzero_si128());
- quint8 result = _mm_movemask_epi8(comparison);
- if (result != 0xff)
- return updatePtr(result);
- ptr += 8;
- }
-# endif
-
- return true;
-}
-
-static Q_ALWAYS_INLINE __m128i mm_load8_zero_extend(const void *ptr)
+/*!
+ * \internal
+ *
+ * Searches case-insensitively for character \a c in the string \a str and
+ * returns a pointer to it. Iif the character is not found, this function
+ * returns a pointer to the end of the string -- that is, \c{str.end()}.
+ */
+Q_NEVER_INLINE
+const char16_t *QtPrivate::qustrcasechr(QStringView str, char16_t c) noexcept
{
- const __m128i *dataptr = static_cast<const __m128i *>(ptr);
-#if defined(__SSE4_1__)
- // use a MOVQ followed by PMOVZXBW
- // if AVX2 is present, these should combine into a single VPMOVZXBW instruction
- __m128i data = _mm_loadl_epi64(dataptr);
- return _mm_cvtepu8_epi16(data);
-# else
- // use MOVQ followed by PUNPCKLBW
- __m128i data = _mm_loadl_epi64(dataptr);
- return _mm_unpacklo_epi8(data, _mm_setzero_si128());
-# endif
+ const QChar *n = str.begin();
+ const QChar *e = str.end();
+ c = foldCase(c);
+ auto it = std::find_if(n, e, [c](auto ch) { return foldAndCompare(ch, QChar(c)); });
+ return reinterpret_cast<const char16_t *>(it);
}
-#endif
// Note: ptr on output may be off by one and point to a preceding US-ASCII
// character. Usually harmless.
@@ -656,19 +788,19 @@ bool qt_is_ascii(const char *&ptr, const char *end) noexcept
#if defined(__SSE2__)
// Testing for the high bit can be done efficiently with just PMOVMSKB
bool loops = true;
-# if defined(__AVX2__)
- while (ptr + 32 <= end) {
- __m256i data = _mm256_loadu_si256(reinterpret_cast<const __m256i *>(ptr));
- quint32 mask = _mm256_movemask_epi8(data);
- if (mask) {
- uint idx = qCountTrailingZeroBits(mask);
- ptr += idx;
- return false;
+ if constexpr (UseAvx2) {
+ while (ptr + 32 <= end) {
+ __m256i data = _mm256_loadu_si256(reinterpret_cast<const __m256i *>(ptr));
+ quint32 mask = _mm256_movemask_epi8(data);
+ if (mask) {
+ uint idx = qCountTrailingZeroBits(mask);
+ ptr += idx;
+ return false;
+ }
+ ptr += 32;
}
- ptr += 32;
+ loops = false;
}
- loops = false;
-# endif
while (ptr + 16 <= end) {
__m128i data = _mm_loadu_si128(reinterpret_cast<const __m128i *>(ptr));
@@ -715,7 +847,7 @@ bool qt_is_ascii(const char *&ptr, const char *end) noexcept
return true;
}
-bool QtPrivate::isAscii(QLatin1String s) noexcept
+bool QtPrivate::isAscii(QLatin1StringView s) noexcept
{
const char *ptr = s.begin();
const char *end = s.end();
@@ -793,46 +925,63 @@ Q_CORE_EXPORT void qt_from_latin1(char16_t *dst, const char *str, size_t size) n
* itself in exactly the same way as one would do it with intrinsics.
*/
#if defined(__SSE2__)
- const char *e = str + size;
- qptrdiff offset = 0;
-
// we're going to read str[offset..offset+15] (16 bytes)
- for ( ; str + offset + 15 < e; offset += 16) {
+ const __m128i nullMask = _mm_setzero_si128();
+ auto processOneChunk = [=](qptrdiff offset) {
const __m128i chunk = _mm_loadu_si128((const __m128i*)(str + offset)); // load
-#ifdef __AVX2__
- // zero extend to an YMM register
- const __m256i extended = _mm256_cvtepu8_epi16(chunk);
-
- // store
- _mm256_storeu_si256((__m256i*)(dst + offset), extended);
-#else
- const __m128i nullMask = _mm_set1_epi32(0);
+ if constexpr (UseAvx2) {
+ // zero extend to an YMM register
+ const __m256i extended = _mm256_cvtepu8_epi16(chunk);
- // unpack the first 8 bytes, padding with zeros
- const __m128i firstHalf = _mm_unpacklo_epi8(chunk, nullMask);
- _mm_storeu_si128((__m128i*)(dst + offset), firstHalf); // store
+ // store
+ _mm256_storeu_si256((__m256i*)(dst + offset), extended);
+ } else {
+ // unpack the first 8 bytes, padding with zeros
+ const __m128i firstHalf = _mm_unpacklo_epi8(chunk, nullMask);
+ _mm_storeu_si128((__m128i*)(dst + offset), firstHalf); // store
- // unpack the last 8 bytes, padding with zeros
- const __m128i secondHalf = _mm_unpackhi_epi8 (chunk, nullMask);
- _mm_storeu_si128((__m128i*)(dst + offset + 8), secondHalf); // store
-#endif
- }
+ // unpack the last 8 bytes, padding with zeros
+ const __m128i secondHalf = _mm_unpackhi_epi8 (chunk, nullMask);
+ _mm_storeu_si128((__m128i*)(dst + offset + 8), secondHalf); // store
+ }
+ };
- // we're going to read str[offset..offset+7] (8 bytes)
- if (str + offset + 7 < e) {
- const __m128i unpacked = mm_load8_zero_extend(str + offset);
- _mm_storeu_si128(reinterpret_cast<__m128i *>(dst + offset), unpacked);
- offset += 8;
+ const char *e = str + size;
+ if (size >= sizeof(__m128i)) {
+ qptrdiff offset = 0;
+ for ( ; str + offset + sizeof(__m128i) <= e; offset += sizeof(__m128i))
+ processOneChunk(offset);
+ if (str + offset < e)
+ processOneChunk(size - sizeof(__m128i));
+ return;
}
- size = size % 8;
- dst += offset;
- str += offset;
# if !defined(__OPTIMIZE_SIZE__)
- return UnrollTailLoop<7>::exec(int(size), [=](int i) { dst[i] = (uchar)str[i]; });
+ if (size >= 4) {
+ // two overlapped loads & stores, of either 64-bit or of 32-bit
+ if (size >= 8) {
+ const __m128i unpacked1 = mm_load8_zero_extend(str);
+ const __m128i unpacked2 = mm_load8_zero_extend(str + size - 8);
+ _mm_storeu_si128(reinterpret_cast<__m128i *>(dst), unpacked1);
+ _mm_storeu_si128(reinterpret_cast<__m128i *>(dst + size - 8), unpacked2);
+ } else {
+ const __m128i chunk1 = _mm_cvtsi32_si128(qFromUnaligned<quint32>(str));
+ const __m128i chunk2 = _mm_cvtsi32_si128(qFromUnaligned<quint32>(str + size - 4));
+ const __m128i unpacked1 = _mm_unpacklo_epi8(chunk1, nullMask);
+ const __m128i unpacked2 = _mm_unpacklo_epi8(chunk2, nullMask);
+ _mm_storel_epi64(reinterpret_cast<__m128i *>(dst), unpacked1);
+ _mm_storel_epi64(reinterpret_cast<__m128i *>(dst + size - 4), unpacked2);
+ }
+ return;
+ } else {
+ size = size % 4;
+ return UnrollTailLoop<3>::exec(qsizetype(size), [=](qsizetype i) { dst[i] = uchar(str[i]); });
+ }
# endif
#endif
#if defined(__mips_dsp)
+ static_assert(sizeof(qsizetype) == sizeof(int),
+ "oops, the assembler implementation needs to be called in a loop");
if (size > 20)
qt_fromlatin1_mips_asm_unroll8(dst, str, size);
else
@@ -843,31 +992,51 @@ Q_CORE_EXPORT void qt_from_latin1(char16_t *dst, const char *str, size_t size) n
#endif
}
+static QVarLengthArray<char16_t> qt_from_latin1_to_qvla(QLatin1StringView str)
+{
+ const qsizetype len = str.size();
+ QVarLengthArray<char16_t> arr(len);
+ qt_from_latin1(arr.data(), str.data(), len);
+ return arr;
+}
+
template <bool Checked>
static void qt_to_latin1_internal(uchar *dst, const char16_t *src, qsizetype length)
{
#if defined(__SSE2__)
- uchar *e = dst + length;
- qptrdiff offset = 0;
-
-# ifdef __AVX2__
- const __m256i questionMark256 = _mm256_broadcastw_epi16(_mm_cvtsi32_si128('?'));
- const __m256i outOfRange256 = _mm256_broadcastw_epi16(_mm_cvtsi32_si128(0x100));
- const __m128i questionMark = _mm256_castsi256_si128(questionMark256);
- const __m128i outOfRange = _mm256_castsi256_si128(outOfRange256);
-# else
- const __m128i questionMark = _mm_set1_epi16('?');
- const __m128i outOfRange = _mm_set1_epi16(0x100);
-# endif
+ auto questionMark256 = []() {
+ if constexpr (UseAvx2)
+ return _mm256_broadcastw_epi16(_mm_cvtsi32_si128('?'));
+ else
+ return 0;
+ }();
+ auto outOfRange256 = []() {
+ if constexpr (UseAvx2)
+ return _mm256_broadcastw_epi16(_mm_cvtsi32_si128(0x100));
+ else
+ return 0;
+ }();
+ __m128i questionMark, outOfRange;
+ if constexpr (UseAvx2) {
+ questionMark = _mm256_castsi256_si128(questionMark256);
+ outOfRange = _mm256_castsi256_si128(outOfRange256);
+ } else {
+ questionMark = _mm_set1_epi16('?');
+ outOfRange = _mm_set1_epi16(0x100);
+ }
auto mergeQuestionMarks = [=](__m128i chunk) {
+ if (!Checked)
+ return chunk;
+
// SSE has no compare instruction for unsigned comparison.
-# ifdef __SSE4_1__
- // We use an unsigned uc = qMin(uc, 0x100) and then compare for equality.
- chunk = _mm_min_epu16(chunk, outOfRange);
- const __m128i offLimitMask = _mm_cmpeq_epi16(chunk, outOfRange);
- chunk = _mm_blendv_epi8(chunk, questionMark, offLimitMask);
-# else
+ if constexpr (UseSse4_1) {
+ // We use an unsigned uc = qMin(uc, 0x100) and then compare for equality.
+ chunk = _mm_min_epu16(chunk, outOfRange);
+ const __m128i offLimitMask = _mm_cmpeq_epi16(chunk, outOfRange);
+ chunk = _mm_blendv_epi8(chunk, questionMark, offLimitMask);
+ return chunk;
+ }
// The variables must be shiffted + 0x8000 to be compared
const __m128i signedBitOffset = _mm_set1_epi16(short(0x8000));
const __m128i thresholdMask = _mm_set1_epi16(short(0xff + 0x8000));
@@ -887,90 +1056,99 @@ static void qt_to_latin1_internal(uchar *dst, const char16_t *src, qsizetype len
chunk = _mm_or_si128(correctBytes, offLimitQuestionMark);
Q_UNUSED(outOfRange);
-# endif
return chunk;
};
- // we're going to write to dst[offset..offset+15] (16 bytes)
- for ( ; dst + offset + 15 < e; offset += 16) {
-# if defined(__AVX2__)
- __m256i chunk = _mm256_loadu_si256(reinterpret_cast<const __m256i *>(src + offset));
- if (Checked) {
- // See mergeQuestionMarks lambda above for details
- chunk = _mm256_min_epu16(chunk, outOfRange256);
- const __m256i offLimitMask = _mm256_cmpeq_epi16(chunk, outOfRange256);
- chunk = _mm256_blendv_epi8(chunk, questionMark256, offLimitMask);
- }
+ // we're going to read to src[offset..offset+15] (16 bytes)
+ auto loadChunkAt = [=](qptrdiff offset) {
+ __m128i chunk1, chunk2;
+ if constexpr (UseAvx2) {
+ __m256i chunk = _mm256_loadu_si256(reinterpret_cast<const __m256i *>(src + offset));
+ if (Checked) {
+ // See mergeQuestionMarks lambda above for details
+ chunk = _mm256_min_epu16(chunk, outOfRange256);
+ const __m256i offLimitMask = _mm256_cmpeq_epi16(chunk, outOfRange256);
+ chunk = _mm256_blendv_epi8(chunk, questionMark256, offLimitMask);
+ }
- const __m128i chunk2 = _mm256_extracti128_si256(chunk, 1);
- const __m128i chunk1 = _mm256_castsi256_si128(chunk);
-# else
- __m128i chunk1 = _mm_loadu_si128((const __m128i*)(src + offset)); // load
- if (Checked)
+ chunk2 = _mm256_extracti128_si256(chunk, 1);
+ chunk1 = _mm256_castsi256_si128(chunk);
+ } else {
+ chunk1 = _mm_loadu_si128((const __m128i*)(src + offset)); // load
chunk1 = mergeQuestionMarks(chunk1);
- __m128i chunk2 = _mm_loadu_si128((const __m128i*)(src + offset + 8)); // load
- if (Checked)
+ chunk2 = _mm_loadu_si128((const __m128i*)(src + offset + 8)); // load
chunk2 = mergeQuestionMarks(chunk2);
-# endif
+ }
// pack the two vector to 16 x 8bits elements
- const __m128i result = _mm_packus_epi16(chunk1, chunk2);
- _mm_storeu_si128((__m128i*)(dst + offset), result); // store
+ return _mm_packus_epi16(chunk1, chunk2);
+ };
+
+ if (size_t(length) >= sizeof(__m128i)) {
+ // because of possible overlapping, we won't process the last chunk in the loop
+ qptrdiff offset = 0;
+ for ( ; offset + 2 * sizeof(__m128i) < size_t(length); offset += sizeof(__m128i))
+ _mm_storeu_si128(reinterpret_cast<__m128i *>(dst + offset), loadChunkAt(offset));
+
+ // overlapped conversion of the last full chunk and the tail
+ __m128i last1 = loadChunkAt(offset);
+ __m128i last2 = loadChunkAt(length - sizeof(__m128i));
+ _mm_storeu_si128(reinterpret_cast<__m128i *>(dst + offset), last1);
+ _mm_storeu_si128(reinterpret_cast<__m128i *>(dst + length - sizeof(__m128i)), last2);
+ return;
}
# if !defined(__OPTIMIZE_SIZE__)
- // we're going to write to dst[offset..offset+7] (8 bytes)
- if (dst + offset + 7 < e) {
- __m128i chunk = _mm_loadu_si128(reinterpret_cast<const __m128i *>(src + offset));
- if (Checked)
- chunk = mergeQuestionMarks(chunk);
-
- // pack, where the upper half is ignored
- const __m128i result = _mm_packus_epi16(chunk, chunk);
- _mm_storel_epi64(reinterpret_cast<__m128i *>(dst + offset), result);
- offset += 8;
- }
+ if (length >= 4) {
+ // this code is fine even for in-place conversion because we load both
+ // before any store
+ if (length >= 8) {
+ __m128i chunk1 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(src));
+ __m128i chunk2 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(src + length - 8));
+ chunk1 = mergeQuestionMarks(chunk1);
+ chunk2 = mergeQuestionMarks(chunk2);
- // we're going to write to dst[offset..offset+3] (4 bytes)
- if (dst + offset + 3 < e) {
- __m128i chunk = _mm_loadl_epi64(reinterpret_cast<const __m128i *>(src + offset));
- if (Checked)
- chunk = mergeQuestionMarks(chunk);
+ // pack, where the upper half is ignored
+ const __m128i result1 = _mm_packus_epi16(chunk1, chunk1);
+ const __m128i result2 = _mm_packus_epi16(chunk2, chunk2);
+ _mm_storel_epi64(reinterpret_cast<__m128i *>(dst), result1);
+ _mm_storel_epi64(reinterpret_cast<__m128i *>(dst + length - 8), result2);
+ } else {
+ __m128i chunk1 = _mm_loadl_epi64(reinterpret_cast<const __m128i *>(src));
+ __m128i chunk2 = _mm_loadl_epi64(reinterpret_cast<const __m128i *>(src + length - 4));
+ chunk1 = mergeQuestionMarks(chunk1);
+ chunk2 = mergeQuestionMarks(chunk2);
- // pack, we'll the upper three quarters
- const __m128i result = _mm_packus_epi16(chunk, chunk);
- qToUnaligned(_mm_cvtsi128_si32(result), dst + offset);
- offset += 4;
+ // pack, we'll zero the upper three quarters
+ const __m128i result1 = _mm_packus_epi16(chunk1, chunk1);
+ const __m128i result2 = _mm_packus_epi16(chunk2, chunk2);
+ qToUnaligned(_mm_cvtsi128_si32(result1), dst);
+ qToUnaligned(_mm_cvtsi128_si32(result2), dst + length - 4);
+ }
+ return;
}
length = length % 4;
-# else
- length = length % 16;
-# endif // optimize size
-
- // advance dst, src for tail processing
- dst += offset;
- src += offset;
-
-# if !defined(__OPTIMIZE_SIZE__)
- return UnrollTailLoop<3>::exec(length, [=](int i) {
+ return UnrollTailLoop<3>::exec(length, [=](qsizetype i) {
if (Checked)
dst[i] = (src[i]>0xff) ? '?' : (uchar) src[i];
else
dst[i] = src[i];
});
-# endif
+# else
+ length = length % 16;
+# endif // optimize size
#elif defined(__ARM_NEON__)
// Refer to the documentation of the SSE2 implementation.
// This uses exactly the same method as for SSE except:
// 1) neon has unsigned comparison
// 2) packing is done to 64 bits (8 x 8bits component).
if (length >= 16) {
- const int chunkCount = length >> 3; // divided by 8
+ const qsizetype chunkCount = length >> 3; // divided by 8
const uint16x8_t questionMark = vdupq_n_u16('?'); // set
const uint16x8_t thresholdMask = vdupq_n_u16(0xff); // set
- for (int i = 0; i < chunkCount; ++i) {
+ for (qsizetype i = 0; i < chunkCount; ++i) {
uint16x8_t chunk = vld1q_u16((uint16_t *)src); // load
src += 8;
@@ -988,6 +1166,8 @@ static void qt_to_latin1_internal(uchar *dst, const char16_t *src, qsizetype len
}
#endif
#if defined(__mips_dsp)
+ static_assert(sizeof(qsizetype) == sizeof(int),
+ "oops, the assembler implementation needs to be called in a loop");
qt_toLatin1_mips_dsp_asm(dst, src, length);
#else
while (length--) {
@@ -1014,7 +1194,7 @@ void qt_to_latin1_unchecked(uchar *dst, const char16_t *src, qsizetype length)
Q_NEVER_INLINE static int ucstricmp(qsizetype alen, const char16_t *a, qsizetype blen, const char16_t *b)
{
if (a == b)
- return (alen - blen);
+ return qt_lencmp(alen, blen);
char32_t alast = 0;
char32_t blast = 0;
@@ -1036,7 +1216,7 @@ Q_NEVER_INLINE static int ucstricmp(qsizetype alen, const char16_t *a, qsizetype
return 1;
}
-// Case-insensitive comparison between a QStringView and a QLatin1String
+// Case-insensitive comparison between a QStringView and a QLatin1StringView
// (argument order matches those types)
Q_NEVER_INLINE static int ucstricmp(qsizetype alen, const char16_t *a, qsizetype blen, const char *b)
{
@@ -1066,7 +1246,7 @@ Q_NEVER_INLINE static int ucstricmp8(const char *utf8, const char *utf8end, cons
char32_t uc1 = 0;
char32_t *output = &uc1;
uchar b = *src1++;
- int res = QUtf8Functions::fromUtf8<QUtf8BaseTraits>(b, output, src1, end1);
+ const qsizetype res = QUtf8Functions::fromUtf8<QUtf8BaseTraits>(b, output, src1, end1);
if (res < 0) {
// decoding error
uc1 = QChar::ReplacementCharacter;
@@ -1095,6 +1275,10 @@ extern "C" int qt_ucstrncmp_mips_dsp_asm(const char16_t *a,
template <StringComparisonMode Mode>
static int ucstrncmp(const char16_t *a, const char16_t *b, size_t l)
{
+ // This function isn't memcmp() because that can return the wrong sorting
+ // result in little-endian architectures: 0x00ff must sort before 0x0100,
+ // but the bytes in memory are FF 00 and 00 01.
+
#ifndef __OPTIMIZE_SIZE__
# if defined(__mips_dsp)
static_assert(sizeof(uint) == sizeof(size_t));
@@ -1102,79 +1286,7 @@ static int ucstrncmp(const char16_t *a, const char16_t *b, size_t l)
return qt_ucstrncmp_mips_dsp_asm(a, b, l);
}
# elif defined(__SSE2__)
- const char16_t *end = a + l;
- qptrdiff offset = 0;
-
- // Using the PMOVMSKB instruction, we get two bits for each character
- // we compare.
- int retval;
- auto isDifferent = [a, b, &offset, &retval](__m128i a_data, __m128i b_data) {
- __m128i result = _mm_cmpeq_epi16(a_data, b_data);
- uint mask = ~uint(_mm_movemask_epi8(result));
- if (ushort(mask) == 0)
- return false;
- if (Mode == CompareStringsForEquality) {
- retval = 1;
- } else {
- uint idx = qCountTrailingZeroBits(mask);
- retval = a[offset + idx / 2] - b[offset + idx / 2];
- }
- return true;
- };
-
- // we're going to read a[0..15] and b[0..15] (32 bytes)
- for ( ; end - a >= offset + 16; offset += 16) {
-#ifdef __AVX2__
- __m256i a_data = _mm256_loadu_si256(reinterpret_cast<const __m256i *>(a + offset));
- __m256i b_data = _mm256_loadu_si256(reinterpret_cast<const __m256i *>(b + offset));
- __m256i result = _mm256_cmpeq_epi16(a_data, b_data);
- uint mask = _mm256_movemask_epi8(result);
-#else
- __m128i a_data1 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(a + offset));
- __m128i a_data2 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(a + offset + 8));
- __m128i b_data1 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(b + offset));
- __m128i b_data2 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(b + offset + 8));
- __m128i result1 = _mm_cmpeq_epi16(a_data1, b_data1);
- __m128i result2 = _mm_cmpeq_epi16(a_data2, b_data2);
- uint mask = _mm_movemask_epi8(result1) | (_mm_movemask_epi8(result2) << 16);
-#endif
- mask = ~mask;
- if (mask) {
- // found a different character
- if (Mode == CompareStringsForEquality)
- return 1;
- uint idx = qCountTrailingZeroBits(mask);
- return a[offset + idx / 2] - b[offset + idx / 2];
- }
- }
-
- // we're going to read a[0..7] and b[0..7] (16 bytes)
- if (end - a >= offset + 8) {
- __m128i a_data = _mm_loadu_si128(reinterpret_cast<const __m128i *>(a + offset));
- __m128i b_data = _mm_loadu_si128(reinterpret_cast<const __m128i *>(b + offset));
- if (isDifferent(a_data, b_data))
- return retval;
-
- offset += 8;
- }
-
- // we're going to read a[0..3] and b[0..3] (8 bytes)
- if (end - a >= offset + 4) {
- __m128i a_data = _mm_loadl_epi64(reinterpret_cast<const __m128i *>(a + offset));
- __m128i b_data = _mm_loadl_epi64(reinterpret_cast<const __m128i *>(b + offset));
- if (isDifferent(a_data, b_data))
- return retval;
-
- offset += 4;
- }
-
- // reset l
- l &= 3;
-
- const auto lambda = [=](size_t i) -> int {
- return a[offset + i] - b[offset + i];
- };
- return UnrollTailLoop<3>::exec(l, 0, lambda, lambda);
+ return ucstrncmp_sse2<Mode>(a, b, l);
# elif defined(__ARM_NEON__)
if (l >= 8) {
const char16_t *end = a + l;
@@ -1203,6 +1315,9 @@ static int ucstrncmp(const char16_t *a, const char16_t *b, size_t l)
# endif // MIPS DSP or __SSE2__ or __ARM_NEON__
#endif // __OPTIMIZE_SIZE__
+ if (Mode == CompareStringsForEquality || QSysInfo::ByteOrder == QSysInfo::BigEndian)
+ return memcmp(a, b, l * sizeof(char16_t));
+
for (size_t i = 0; i < l; ++i) {
if (int diff = a[i] - b[i])
return diff;
@@ -1217,104 +1332,8 @@ static int ucstrncmp(const char16_t *a, const char *b, size_t l)
const char16_t *uc = a;
const char16_t *e = uc + l;
-#ifdef __SSE2__
- __m128i nullmask = _mm_setzero_si128();
- qptrdiff offset = 0;
-
-# if !defined(__OPTIMIZE_SIZE__)
- // Using the PMOVMSKB instruction, we get two bits for each character
- // we compare.
- int retval;
- auto isDifferent = [uc, c, &offset, &retval](__m128i a_data, __m128i b_data) {
- __m128i result = _mm_cmpeq_epi16(a_data, b_data);
- uint mask = ~uint(_mm_movemask_epi8(result));
- if (ushort(mask) == 0)
- return false;
- if (Mode == CompareStringsForEquality) {
- retval = 1;
- } else {
- uint idx = qCountTrailingZeroBits(mask);
- retval = uc[offset + idx / 2] - c[offset + idx / 2];
- }
- return true;
- };
-# endif
-
- // we're going to read uc[offset..offset+15] (32 bytes)
- // and c[offset..offset+15] (16 bytes)
- for ( ; uc + offset + 15 < e; offset += 16) {
- // similar to fromLatin1_helper:
- // load 16 bytes of Latin 1 data
- __m128i chunk = _mm_loadu_si128((const __m128i*)(c + offset));
-
-# ifdef __AVX2__
- // expand Latin 1 data via zero extension
- __m256i ldata = _mm256_cvtepu8_epi16(chunk);
-
- // load UTF-16 data and compare
- __m256i ucdata = _mm256_loadu_si256((const __m256i*)(uc + offset));
- __m256i result = _mm256_cmpeq_epi16(ldata, ucdata);
-
- uint mask = ~_mm256_movemask_epi8(result);
-# else
- // expand via unpacking
- __m128i firstHalf = _mm_unpacklo_epi8(chunk, nullmask);
- __m128i secondHalf = _mm_unpackhi_epi8(chunk, nullmask);
-
- // load UTF-16 data and compare
- __m128i ucdata1 = _mm_loadu_si128((const __m128i*)(uc + offset));
- __m128i ucdata2 = _mm_loadu_si128((const __m128i*)(uc + offset + 8));
- __m128i result1 = _mm_cmpeq_epi16(firstHalf, ucdata1);
- __m128i result2 = _mm_cmpeq_epi16(secondHalf, ucdata2);
-
- uint mask = ~(_mm_movemask_epi8(result1) | _mm_movemask_epi8(result2) << 16);
-# endif
- if (mask) {
- // found a different character
- if (Mode == CompareStringsForEquality)
- return 1;
- uint idx = qCountTrailingZeroBits(mask);
- return uc[offset + idx / 2] - c[offset + idx / 2];
- }
- }
-
-# if !defined(__OPTIMIZE_SIZE__)
- // we'll read uc[offset..offset+7] (16 bytes) and c[offset..offset+7] (8 bytes)
- if (uc + offset + 7 < e) {
- // same, but we're using an 8-byte load
- __m128i secondHalf = mm_load8_zero_extend(c + offset);
-
- __m128i ucdata = _mm_loadu_si128((const __m128i*)(uc + offset));
- if (isDifferent(ucdata, secondHalf))
- return retval;
-
- // still matched
- offset += 8;
- }
-
- enum { MaxTailLength = 3 };
- // we'll read uc[offset..offset+3] (8 bytes) and c[offset..offset+3] (4 bytes)
- if (uc + offset + 3 < e) {
- __m128i chunk = _mm_cvtsi32_si128(qFromUnaligned<int>(c + offset));
- __m128i secondHalf = _mm_unpacklo_epi8(chunk, nullmask);
-
- __m128i ucdata = _mm_loadl_epi64(reinterpret_cast<const __m128i *>(uc + offset));
- if (isDifferent(ucdata, secondHalf))
- return retval;
-
- // still matched
- offset += 4;
- }
-# endif // optimize size
-
- // reset uc and c
- uc += offset;
- c += offset;
-
-# if !defined(__OPTIMIZE_SIZE__)
- const auto lambda = [=](size_t i) { return uc[i] - char16_t(c[i]); };
- return UnrollTailLoop<MaxTailLength>::exec(e - uc, 0, lambda, lambda);
-# endif
+#if defined(__SSE2__) && !defined(__OPTIMIZE_SIZE__)
+ return ucstrncmp_sse2<Mode>(uc, c, l);
#endif
while (uc < e) {
@@ -1327,19 +1346,10 @@ static int ucstrncmp(const char16_t *a, const char *b, size_t l)
return 0;
}
-constexpr int lencmp(qsizetype lhs, qsizetype rhs) noexcept
-{
- return lhs == rhs ? 0 :
- lhs > rhs ? 1 :
- /* else */ -1 ;
-}
-
// Unicode case-sensitive equality
template <typename Char2>
-static bool ucstreq(const char16_t *a, size_t alen, const Char2 *b, size_t blen)
+static bool ucstreq(const char16_t *a, size_t alen, const Char2 *b)
{
- if (alen != blen)
- return false;
if constexpr (std::is_same_v<decltype(a), decltype(b)>) {
if (a == b)
return true;
@@ -1357,31 +1367,14 @@ static int ucstrcmp(const char16_t *a, size_t alen, const Char2 *b, size_t blen)
}
const size_t l = qMin(alen, blen);
int cmp = ucstrncmp<CompareStringsForOrdering>(a, b, l);
- return cmp ? cmp : lencmp(alen, blen);
-}
-
-static constexpr uchar latin1Lower[256] = {
- 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
- 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,
- 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,
- 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,
- 0x40,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,
- 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x5b,0x5c,0x5d,0x5e,0x5f,
- 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,
- 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f,
- 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,
- 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,
- 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,
- 0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf,
- // 0xd7 (multiplication sign) and 0xdf (sz ligature) complicate life
- 0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef,
- 0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xd7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xdf,
- 0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef,
- 0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff
-};
+ return cmp ? cmp : qt_lencmp(alen, blen);
+}
+
+using CaseInsensitiveL1 = QtPrivate::QCaseInsensitiveLatin1Hash;
+
static int latin1nicmp(const char *lhsChar, qsizetype lSize, const char *rhsChar, qsizetype rSize)
{
- // We're called with QLatin1String's .data() and .size():
+ // We're called with QLatin1StringView's .data() and .size():
Q_ASSERT(lSize >= 0 && rSize >= 0);
if (!lSize)
return rSize ? -1 : 0;
@@ -1389,33 +1382,35 @@ static int latin1nicmp(const char *lhsChar, qsizetype lSize, const char *rhsChar
return 1;
const qsizetype size = std::min(lSize, rSize);
- const uchar *lhs = reinterpret_cast<const uchar *>(lhsChar);
- const uchar *rhs = reinterpret_cast<const uchar *>(rhsChar);
- Q_ASSERT(lhs && rhs); // since both lSize and rSize are positive
+ Q_ASSERT(lhsChar && rhsChar); // since both lSize and rSize are positive
for (qsizetype i = 0; i < size; i++) {
- if (int res = latin1Lower[lhs[i]] - latin1Lower[rhs[i]])
+ if (int res = CaseInsensitiveL1::difference(lhsChar[i], rhsChar[i]))
return res;
}
- return lencmp(lSize, rSize);
+ return qt_lencmp(lSize, rSize);
}
+
bool QtPrivate::equalStrings(QStringView lhs, QStringView rhs) noexcept
{
- return ucstreq(lhs.utf16(), lhs.size(), rhs.utf16(), rhs.size());
+ Q_ASSERT(lhs.size() == rhs.size());
+ return ucstreq(lhs.utf16(), lhs.size(), rhs.utf16());
}
-bool QtPrivate::equalStrings(QStringView lhs, QLatin1String rhs) noexcept
+bool QtPrivate::equalStrings(QStringView lhs, QLatin1StringView rhs) noexcept
{
- return ucstreq(lhs.utf16(), lhs.size(), rhs.latin1(), rhs.size());
+ Q_ASSERT(lhs.size() == rhs.size());
+ return ucstreq(lhs.utf16(), lhs.size(), rhs.latin1());
}
-bool QtPrivate::equalStrings(QLatin1String lhs, QStringView rhs) noexcept
+bool QtPrivate::equalStrings(QLatin1StringView lhs, QStringView rhs) noexcept
{
return QtPrivate::equalStrings(rhs, lhs);
}
-bool QtPrivate::equalStrings(QLatin1String lhs, QLatin1String rhs) noexcept
+bool QtPrivate::equalStrings(QLatin1StringView lhs, QLatin1StringView rhs) noexcept
{
- return lhs.size() == rhs.size() && (!lhs.size() || memcmp(lhs.data(), rhs.data(), lhs.size()) == 0);
+ Q_ASSERT(lhs.size() == rhs.size());
+ return (!lhs.size() || memcmp(lhs.data(), rhs.data(), lhs.size()) == 0);
}
bool QtPrivate::equalStrings(QBasicUtf8StringView<false> lhs, QStringView rhs) noexcept
@@ -1428,20 +1423,26 @@ bool QtPrivate::equalStrings(QStringView lhs, QBasicUtf8StringView<false> rhs) n
return QtPrivate::equalStrings(rhs, lhs);
}
-bool QtPrivate::equalStrings(QLatin1String lhs, QBasicUtf8StringView<false> rhs) noexcept
+bool QtPrivate::equalStrings(QLatin1StringView lhs, QBasicUtf8StringView<false> rhs) noexcept
{
- QString r = rhs.toString();
- return QtPrivate::equalStrings(lhs, r); // ### optimize!
+ return QUtf8::compareUtf8(QByteArrayView(rhs), lhs) == 0;
}
-bool QtPrivate::equalStrings(QBasicUtf8StringView<false> lhs, QLatin1String rhs) noexcept
+bool QtPrivate::equalStrings(QBasicUtf8StringView<false> lhs, QLatin1StringView rhs) noexcept
{
return QtPrivate::equalStrings(rhs, lhs);
}
bool QtPrivate::equalStrings(QBasicUtf8StringView<false> lhs, QBasicUtf8StringView<false> rhs) noexcept
{
- return lhs.size() == rhs.size() && (!lhs.size() || memcmp(lhs.data(), rhs.data(), lhs.size()) == 0);
+#if QT_VERSION >= QT_VERSION_CHECK(7, 0, 0) || defined(QT_BOOTSTRAPPED) || defined(QT_STATIC)
+ Q_ASSERT(lhs.size() == rhs.size());
+#else
+ // operator== didn't enforce size prior to Qt 6.2
+ if (lhs.size() != rhs.size())
+ return false;
+#endif
+ return (!lhs.size() || memcmp(lhs.data(), rhs.data(), lhs.size()) == 0);
}
bool QAnyStringView::equal(QAnyStringView lhs, QAnyStringView rhs) noexcept
@@ -1462,8 +1463,7 @@ bool QAnyStringView::equal(QAnyStringView lhs, QAnyStringView rhs) noexcept
Returns an integer that compares to 0 as \a lhs compares to \a rhs.
- If \a cs is Qt::CaseSensitive (the default), the comparison is case-sensitive;
- otherwise the comparison is case-insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {comparison}
Case-sensitive comparison is based exclusively on the numeric Unicode values
of the characters and is very fast, but is not what a human would expect.
@@ -1486,8 +1486,7 @@ int QtPrivate::compareStrings(QStringView lhs, QStringView rhs, Qt::CaseSensitiv
Returns an integer that compares to 0 as \a lhs compares to \a rhs.
- If \a cs is Qt::CaseSensitive (the default), the comparison is case-sensitive;
- otherwise the comparison is case-insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {comparison}
Case-sensitive comparison is based exclusively on the numeric Unicode values
of the characters and is very fast, but is not what a human would expect.
@@ -1495,7 +1494,7 @@ int QtPrivate::compareStrings(QStringView lhs, QStringView rhs, Qt::CaseSensitiv
\sa {Comparing Strings}
*/
-int QtPrivate::compareStrings(QStringView lhs, QLatin1String rhs, Qt::CaseSensitivity cs) noexcept
+int QtPrivate::compareStrings(QStringView lhs, QLatin1StringView rhs, Qt::CaseSensitivity cs) noexcept
{
if (cs == Qt::CaseSensitive)
return ucstrcmp(lhs.utf16(), lhs.size(), rhs.latin1(), rhs.size());
@@ -1519,7 +1518,7 @@ int QtPrivate::compareStrings(QStringView lhs, QBasicUtf8StringView<false> rhs,
\since 5.10
\overload
*/
-int QtPrivate::compareStrings(QLatin1String lhs, QStringView rhs, Qt::CaseSensitivity cs) noexcept
+int QtPrivate::compareStrings(QLatin1StringView lhs, QStringView rhs, Qt::CaseSensitivity cs) noexcept
{
return -compareStrings(rhs, lhs, cs);
}
@@ -1532,8 +1531,7 @@ int QtPrivate::compareStrings(QLatin1String lhs, QStringView rhs, Qt::CaseSensit
Returns an integer that compares to 0 as \a lhs compares to \a rhs.
- If \a cs is Qt::CaseSensitive (the default), the comparison is case-sensitive;
- otherwise the comparison is case-insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {comparison}
Case-sensitive comparison is based exclusively on the numeric Latin-1 values
of the characters and is very fast, but is not what a human would expect.
@@ -1541,15 +1539,15 @@ int QtPrivate::compareStrings(QLatin1String lhs, QStringView rhs, Qt::CaseSensit
\sa {Comparing Strings}
*/
-int QtPrivate::compareStrings(QLatin1String lhs, QLatin1String rhs, Qt::CaseSensitivity cs) noexcept
+int QtPrivate::compareStrings(QLatin1StringView lhs, QLatin1StringView rhs, Qt::CaseSensitivity cs) noexcept
{
if (lhs.isEmpty())
- return lencmp(qsizetype(0), rhs.size());
+ return qt_lencmp(qsizetype(0), rhs.size());
if (cs == Qt::CaseInsensitive)
return latin1nicmp(lhs.data(), lhs.size(), rhs.data(), rhs.size());
const auto l = std::min(lhs.size(), rhs.size());
int r = memcmp(lhs.data(), rhs.data(), l);
- return r ? r : lencmp(lhs.size(), rhs.size());
+ return r ? r : qt_lencmp(lhs.size(), rhs.size());
}
/*!
@@ -1558,9 +1556,9 @@ int QtPrivate::compareStrings(QLatin1String lhs, QLatin1String rhs, Qt::CaseSens
\since 6.0
\overload
*/
-int QtPrivate::compareStrings(QLatin1String lhs, QBasicUtf8StringView<false> rhs, Qt::CaseSensitivity cs) noexcept
+int QtPrivate::compareStrings(QLatin1StringView lhs, QBasicUtf8StringView<false> rhs, Qt::CaseSensitivity cs) noexcept
{
- return compareStrings(lhs, rhs.toString(), cs); // ### optimize!
+ return -QUtf8::compareUtf8(QByteArrayView(rhs), lhs, cs);
}
/*!
@@ -1582,7 +1580,7 @@ int QtPrivate::compareStrings(QBasicUtf8StringView<false> lhs, QStringView rhs,
\since 6.0
\overload
*/
-int QtPrivate::compareStrings(QBasicUtf8StringView<false> lhs, QLatin1String rhs, Qt::CaseSensitivity cs) noexcept
+int QtPrivate::compareStrings(QBasicUtf8StringView<false> lhs, QLatin1StringView rhs, Qt::CaseSensitivity cs) noexcept
{
return -compareStrings(rhs, lhs, cs);
}
@@ -1595,13 +1593,7 @@ int QtPrivate::compareStrings(QBasicUtf8StringView<false> lhs, QLatin1String rhs
*/
int QtPrivate::compareStrings(QBasicUtf8StringView<false> lhs, QBasicUtf8StringView<false> rhs, Qt::CaseSensitivity cs) noexcept
{
- if (lhs.isEmpty())
- return lencmp(0, rhs.size());
- if (cs == Qt::CaseInsensitive)
- return compareStrings(lhs.toString(), rhs.toString(), cs); // ### optimize!
- const auto l = std::min(lhs.size(), rhs.size());
- int r = memcmp(lhs.data(), rhs.data(), l);
- return r ? r : lencmp(lhs.size(), rhs.size());
+ return QUtf8::compareUtf8(QByteArrayView(lhs), QByteArrayView(rhs), cs);
}
int QAnyStringView::compare(QAnyStringView lhs, QAnyStringView rhs, Qt::CaseSensitivity cs) noexcept
@@ -1615,7 +1607,7 @@ int QAnyStringView::compare(QAnyStringView lhs, QAnyStringView rhs, Qt::CaseSens
// ### Qt 7: do not allow anything but ASCII digits
// in arg()'s replacements.
-#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0)
+#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) && !defined(QT_BOOTSTRAPPED)
static bool supportUnicodeDigitValuesInArg()
{
static const bool result = []() {
@@ -1638,7 +1630,7 @@ static bool supportUnicodeDigitValuesInArg()
static int qArgDigitValue(QChar ch) noexcept
{
-#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0)
+#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) && !defined(QT_BOOTSTRAPPED)
if (supportUnicodeDigitValuesInArg())
return ch.digitValue();
#endif
@@ -1647,6 +1639,10 @@ static int qArgDigitValue(QChar ch) noexcept
return -1;
}
+#if QT_CONFIG(regularexpression)
+Q_DECL_COLD_FUNCTION
+void qtWarnAboutInvalidRegularExpression(const QString &pattern, const char *where);
+#endif
/*!
\macro QT_RESTRICTED_CAST_FROM_ASCII
@@ -1658,7 +1654,7 @@ static int qArgDigitValue(QChar ch) noexcept
and the \c{QString::operator=(const char (&ch)[N])} assignment operator.
This gives most of the type-safety benefits of \l QT_NO_CAST_FROM_ASCII
but does not require user code to wrap character and string literals
- with QLatin1Char, QLatin1String or similar.
+ with QLatin1Char, QLatin1StringView or similar.
Using this macro together with source strings outside the 7-bit range,
non-literals, or literals with embedded NUL characters is undefined.
@@ -1714,10 +1710,18 @@ static int qArgDigitValue(QChar ch) noexcept
\ingroup shared
\ingroup string-processing
+ \compares strong
+ \compareswith strong QChar QLatin1StringView {const char16_t *} \
+ QStringView QUtf8StringView
+ \endcompareswith
+ \compareswith strong QByteArray QByteArrayView {const char *}
+ When comparing with byte arrays, their content is interpreted as utf-8.
+ \endcompareswith
+
QString stores a string of 16-bit \l{QChar}s, where each QChar
corresponds to one UTF-16 code unit. (Unicode characters
with code values above 65535 are stored using surrogate pairs,
- i.e., two consecutive \l{QChar}s.)
+ that is, two consecutive \l{QChar}s.)
\l{Unicode} is an international standard that supports most of the
writing systems in use today. It is a superset of US-ASCII (ANSI
@@ -1733,17 +1737,15 @@ static int qArgDigitValue(QChar ch) noexcept
store raw bytes and traditional 8-bit '\\0'-terminated strings.
For most purposes, QString is the class you want to use. It is
used throughout the Qt API, and the Unicode support ensures that
- your applications will be easy to translate if you want to expand
- your application's market at some point. The two main cases where
- QByteArray is appropriate are when you need to store raw binary
- data, and when memory conservation is critical (like in embedded
- systems).
+ your applications are easy to translate if you want to expand
+ your application's market at some point. Two prominent cases
+ where QByteArray is appropriate are when you need to store raw
+ binary data, and when memory conservation is critical (like in
+ embedded systems).
- \tableofcontents
+ \section1 Initializing a string
- \section1 Initializing a String
-
- One way to initialize a QString is simply to pass a \c{const char
+ One way to initialize a QString is to pass a \c{const char
*} to its constructor. For example, the following code creates a
QString of size 5 containing the data "Hello":
@@ -1754,17 +1756,18 @@ static int qArgDigitValue(QChar ch) noexcept
In all of the QString functions that take \c{const char *}
parameters, the \c{const char *} is interpreted as a classic
- C-style '\\0'-terminated string encoded in UTF-8. It is legal for
- the \c{const char *} parameter to be \nullptr.
+ C-style \c{'\\0'}-terminated string. Except where the function's
+ name overtly indicates some other encoding, such \c{const char *}
+ parameters are assumed to be encoded in UTF-8.
You can also provide string data as an array of \l{QChar}s:
\snippet qstring/main.cpp 1
QString makes a deep copy of the QChar data, so you can modify it
- later without experiencing side effects. (If for performance
- reasons you don't want to take a deep copy of the character data,
- use QString::fromRawData() instead.)
+ later without experiencing side effects. You can avoid taking a
+ deep copy of the character data by using QStringView or
+ QString::fromRawData() instead.
Another approach is to set the size of the string using resize()
and to initialize the data character per character. QString uses
@@ -1781,7 +1784,7 @@ static int qArgDigitValue(QChar ch) noexcept
\snippet qstring/main.cpp 3
- The at() function can be faster than \l operator[](), because it
+ The at() function can be faster than \l operator[]() because it
never causes a \l{deep copy} to occur. Alternatively, use the
first(), last(), or sliced() functions to extract several characters
at a time.
@@ -1803,11 +1806,11 @@ static int qArgDigitValue(QChar ch) noexcept
You can also pass string literals to functions that take QStrings
as arguments, invoking the QString(const char *)
constructor. Similarly, you can pass a QString to a function that
- takes a \c{const char *} argument using the \l qPrintable() macro
+ takes a \c{const char *} argument using the \l qPrintable() macro,
which returns the given QString as a \c{const char *}. This is
equivalent to calling <QString>.toLocal8Bit().constData().
- \section1 Manipulating String Data
+ \section1 Manipulating string data
QString provides the following basic functions for modifying the
character data: append(), prepend(), insert(), replace(), and
@@ -1815,19 +1818,19 @@ static int qArgDigitValue(QChar ch) noexcept
\snippet qstring/main.cpp 5
- In the above example the replace() function's first two arguments are the
+ In the above example, the replace() function's first two arguments are the
position from which to start replacing and the number of characters that
should be replaced.
When data-modifying functions increase the size of the string,
- they may lead to reallocation of memory for the QString object. When
+ QString may reallocate the memory in which it holds its data. When
this happens, QString expands by more than it immediately needs so as
to have space for further expansion without reallocation until the size
- of the string has greatly increased.
+ of the string has significantly increased.
- The insert(), remove() and, when replacing a sub-string with one of
+ The insert(), remove(), and, when replacing a sub-string with one of
different size, replace() functions can be slow (\l{linear time}) for
- large strings, because they require moving many characters in the string
+ large strings because they require moving many characters in the string
by at least one position in memory.
If you are building a QString gradually and know in advance
@@ -1845,32 +1848,32 @@ static int qArgDigitValue(QChar ch) noexcept
method of the QString is called. Accessing such an iterator or reference
after the call to a non-\c{const} method leads to undefined behavior. When
stability for iterator-like functionality is required, you should use
- indexes instead of iterators as they are not tied to QString's internal
+ indexes instead of iterators, as they are not tied to QString's internal
state and thus do not get invalidated.
\note Due to \l{implicit sharing}, the first non-\c{const} operator or
- function used on a given QString may cause it to, internally, perform a deep
+ function used on a given QString may cause it to internally perform a deep
copy of its data. This invalidates all iterators over the string and
- references to individual characters within it. After the first non-\c{const}
- operator, operations that modify QString may completely (in case of
- reallocation) or partially invalidate iterators and references, but other
- methods (such as begin() or end()) will not. Accessing an iterator or
- reference after it has been invalidated leads to undefined behavior.
-
- A frequent requirement is to remove whitespace characters from a
- string ('\\n', '\\t', ' ', etc.). If you want to remove whitespace
- from both ends of a QString, use the trimmed() function. If you
- want to remove whitespace from both ends and replace multiple
- consecutive whitespaces with a single space character within the
- string, use simplified().
+ references to individual characters within it. Do not call non-const
+ functions while keeping iterators. Accessing an iterator or reference
+ after it has been invalidated leads to undefined behavior. See the
+ \l{Implicit sharing iterator problem} section for more information.
+
+ A frequent requirement is to remove or simplify the spacing between
+ visible characters in a string. The characters that make up that spacing
+ are those for which \l {QChar::}{isSpace()} returns \c true, such as
+ the simple space \c{' '}, the horizontal tab \c{'\\t'} and the newline \c{'\\n'}.
+ To obtain a copy of a string leaving out any spacing from its start and end,
+ use \l trimmed(). To also replace each sequence of spacing characters within
+ the string with a simple space, \c{' '}, use \l simplified().
If you want to find all occurrences of a particular character or
substring in a QString, use the indexOf() or lastIndexOf()
- functions. The former searches forward starting from a given index
- position, the latter searches backward. Both return the index
- position of the character or substring if they find it; otherwise,
- they return -1. For example, here is a typical loop that finds all
- occurrences of a particular substring:
+ functions.The former searches forward, the latter searches backward.
+ Either can be told an index position from which to start their search.
+ Each returns the index position of the character or substring if they
+ find it; otherwise, they return -1. For example, here is a typical loop
+ that finds all occurrences of a particular substring:
\snippet qstring/main.cpp 6
@@ -1879,52 +1882,57 @@ static int qArgDigitValue(QChar ch) noexcept
setNum() functions, the number() static functions, and the
toInt(), toDouble(), and similar functions.
- To get an upper- or lowercase version of a string use toUpper() or
+ To get an uppercase or lowercase version of a string, use toUpper() or
toLower().
Lists of strings are handled by the QStringList class. You can
split a string into a list of strings using the split() function,
and join a list of strings into a single string with an optional
- separator using QStringList::join(). You can obtain a list of
- strings from a string list that contain a particular substring or
- that match a particular QRegularExpression using the QStringList::filter()
- function.
+ separator using QStringList::join(). You can obtain a filtered list
+ from a string list by selecting the entries in it that contain a
+ particular substring or match a particular QRegularExpression.
+ See QStringList::filter() for details.
- \section1 Querying String Data
+ \section1 Querying string data
- If you want to see if a QString starts or ends with a particular
- substring use startsWith() or endsWith(). If you simply want to
- check whether a QString contains a particular character or
- substring, use the contains() function. If you want to find out
- how many times a particular character or substring occurs in the
- string, use count().
+ To see if a QString starts or ends with a particular substring, use
+ startsWith() or endsWith(). To check whether a QString contains a
+ specific character or substring, use the contains() function. To
+ find out how many times a particular character or substring occurs
+ in a string, use count().
To obtain a pointer to the actual character data, call data() or
constData(). These functions return a pointer to the beginning of
the QChar data. The pointer is guaranteed to remain valid until a
non-\c{const} function is called on the QString.
- \section2 Comparing Strings
+ \section2 Comparing strings
QStrings can be compared using overloaded operators such as \l
operator<(), \l operator<=(), \l operator==(), \l operator>=(),
- and so on. Note that the comparison is based exclusively on the
- numeric Unicode values of the characters. It is very fast, but is
- not what a human would expect; the QString::localeAwareCompare()
- function is usually a better choice for sorting user-interface
- strings, when such a comparison is available.
-
- On Unix-like platforms (including Linux, \macos and iOS), when Qt
- is linked with the ICU library (which it usually is), its
- locale-aware sorting is used. Otherwise, on \macos and iOS, \l
- localeAwareCompare() compares according the "Order for sorted
- lists" setting in the International preferences panel. On other
- Unix-like systems without ICU, the comparison falls back to the
- system library's \c strcoll(),
-
- \section1 Converting Between Encoded Strings Data and QString
-
- QString provides the following three functions that return a
+ and so on. The comparison is based exclusively on the lexicographical
+ order of the two strings, seen as sequences of UTF-16 code units.
+ It is very fast but is not what a human would expect; the
+ QString::localeAwareCompare() function is usually a better choice for
+ sorting user-interface strings, when such a comparison is available.
+
+ When Qt is linked with the ICU library (which it usually is), its
+ locale-aware sorting is used. Otherwise, platform-specific solutions
+ are used:
+ \list
+ \li On Windows, localeAwareCompare() uses the current user locale,
+ as set in the \uicontrol{regional} and \uicontrol{language}
+ options portion of \uicontrol{Control Panel}.
+ \li On \macos and iOS, \l localeAwareCompare() compares according
+ to the \uicontrol{Order for sorted lists} setting in the
+ \uicontrol{International preferences} panel.
+ \li On other Unix-like systems, the comparison falls back to the
+ system library's \c strcoll().
+ \endlist
+
+ \section1 Converting between encoded string data and QString
+
+ QString provides the following functions that return a
\c{const char *} version of the string as QByteArray: toUtf8(),
toLatin1(), and toLocal8Bit().
@@ -1955,7 +1963,7 @@ static int qArgDigitValue(QChar ch) noexcept
\li \l QT_NO_CAST_FROM_ASCII disables automatic conversions from
C string literals and pointers to Unicode.
\li \l QT_RESTRICTED_CAST_FROM_ASCII allows automatic conversions
- from C characters and character arrays, but disables automatic
+ from C characters and character arrays but disables automatic
conversions from character pointers to Unicode.
\li \l QT_NO_CAST_TO_ASCII disables automatic conversion from QString
to C strings.
@@ -1963,7 +1971,7 @@ static int qArgDigitValue(QChar ch) noexcept
You then need to explicitly call fromUtf8(), fromLatin1(),
or fromLocal8Bit() to construct a QString from an
- 8-bit string, or use the lightweight QLatin1String class, for
+ 8-bit string, or use the lightweight QLatin1StringView class. For
example:
\snippet code/src_corelib_text_qstring.cpp 1
@@ -1984,7 +1992,7 @@ static int qArgDigitValue(QChar ch) noexcept
\snippet qstring/main.cpp 7
- The \c result variable, is a normal variable allocated on the
+ The \c result variable is a normal variable allocated on the
stack. When \c return is called, and because we're returning by
value, the copy constructor is called and a copy of the string is
returned. No actual copying takes place thanks to the implicit
@@ -1992,12 +2000,12 @@ static int qArgDigitValue(QChar ch) noexcept
\endtable
- \section1 Distinction Between Null and Empty Strings
+ \section1 Distinction between null and empty strings
- For historical reasons, QString distinguishes between a null
- string and an empty string. A \e null string is a string that is
+ For historical reasons, QString distinguishes between null
+ and empty strings. A \e null string is a string that is
initialized using QString's default constructor or by passing
- (\c{const char *})0 to the constructor. An \e empty string is any
+ \nullptr to the constructor. An \e empty string is any
string with size 0. A null string is always empty, but an empty
string isn't necessarily null:
@@ -2005,10 +2013,10 @@ static int qArgDigitValue(QChar ch) noexcept
All functions except isNull() treat null strings the same as empty
strings. For example, toUtf8().constData() returns a valid pointer
- (\e not nullptr) to a '\\0' character for a null string. We
+ (not \nullptr) to a '\\0' character for a null string. We
recommend that you always use the isEmpty() function and avoid isNull().
- \section1 Number Formats
+ \section1 Number formats
When a QString::arg() \c{'%'} format specifier includes the \c{'L'} locale
qualifier, and the base is ten (its default), the default locale is
@@ -2018,16 +2026,16 @@ static int qArgDigitValue(QChar ch) noexcept
C locale's representation of numbers.
When QString::arg() applies left-padding to numbers, the fill character
- \c{'0'} is treated specially. If the number is negative, its minus sign will
- appear before the zero-padding. If the field is localized, the
+ \c{'0'} is treated specially. If the number is negative, its minus sign
+ appears before the zero-padding. If the field is localized, the
locale-appropriate zero character is used in place of \c{'0'}. For
floating-point numbers, this special treatment only applies if the number is
finite.
- \section2 Floating-point Formats
+ \section2 Floating-point formats
- In member functions (e.g., arg(), number()) that represent floating-point
- numbers (\c float or \c double) as strings, the form of display can be
+ In member functions (for example, arg() and number()) that format floating-point
+ numbers (\c float or \c double) as strings, the representation used can be
controlled by a choice of \e format and \e precision, whose meanings are as
for \l {QLocale::toString(double, char, int)}.
@@ -2036,19 +2044,15 @@ static int qArgDigitValue(QChar ch) noexcept
the exponent shows its sign and includes at least two digits, left-padding
with zero if needed.
- \section1 More Efficient String Construction
+ \section1 More efficient string construction
- Many strings are known at compile time. But the trivial
- constructor QString("Hello"), will copy the contents of the string,
- treating the contents as Latin-1. To avoid this one can use the
- QStringLiteral macro to directly create the required data at compile
- time. Constructing a QString out of the literal does then not cause
- any overhead at runtime.
-
- A slightly less efficient way is to use QLatin1String. This class wraps
- a C string literal, precalculates it length at compile time and can
- then be used for faster comparison with QStrings and conversion to
- QStrings than a regular C string literal.
+ Many strings are known at compile time. The QString constructor from
+ C++ string literals will copy the contents of the string,
+ treating the contents as UTF-8. This requires memory allocation and
+ re-encoding string data, operations that will happen at runtime.
+ If the string data is known at compile time, you can use the QStringLiteral
+ macro or similarly \c{operator""_s} to create QString's payload at compile
+ time instead.
Using the QString \c{'+'} operator, it is easy to construct a
complex string from multiple substrings. You will often write code
@@ -2057,16 +2061,15 @@ static int qArgDigitValue(QChar ch) noexcept
\snippet qstring/stringbuilder.cpp 0
There is nothing wrong with either of these string constructions,
- but there are a few hidden inefficiencies. Beginning with Qt 4.6,
- you can eliminate them.
+ but there are a few hidden inefficiencies:
- First, multiple uses of the \c{'+'} operator usually means
+ First, repeated use of the \c{'+'} operator may lead to
multiple memory allocations. When concatenating \e{n} substrings,
where \e{n > 2}, there can be as many as \e{n - 1} calls to the
memory allocator.
- In 4.6, an internal template class \c{QStringBuilder} has been
- added along with a few helper functions. This class is marked
+ These allocations can be optimized by an internal class
+ \c{QStringBuilder}. This class is marked
internal and does not appear in the documentation, because you
aren't meant to instantiate it in your code. Its use will be
automatic, as described below. The class is found in
@@ -2082,49 +2085,59 @@ static int qArgDigitValue(QChar ch) noexcept
then called \e{once} to get the required space, and the substrings
are copied into it one by one.
- Additional efficiency is gained by inlining and reduced reference
- counting (the QString created from a \c{QStringBuilder} typically
+ Additional efficiency is gained by inlining and reducing reference
+ counting (the QString created from a \c{QStringBuilder}
has a ref count of 1, whereas QString::append() needs an extra
test).
There are two ways you can access this improved method of string
construction. The straightforward way is to include
- \c{QStringBuilder} wherever you want to use it, and use the
+ \c{QStringBuilder} wherever you want to use it and use the
\c{'%'} operator instead of \c{'+'} when concatenating strings:
\snippet qstring/stringbuilder.cpp 5
- A more global approach which is the most convenient but
- not entirely source compatible, is to this define in your
- .pro file:
+ A more global approach, which is more convenient but not entirely
+ source-compatible, is to define \c QT_USE_QSTRINGBUILDER (by adding
+ it to the compiler flags) at build time. This will make concatenating
+ strings with \c{'+'} work the same way as \c{QStringBuilder's} \c{'%'}.
+
+ \note Using automatic type deduction (for example, by using the \c
+ auto keyword) with the result of string concatenation when QStringBuilder
+ is enabled will show that the concatenation is indeed an object of a
+ QStringBuilder specialization:
- \snippet qstring/stringbuilder.cpp 3
+ \snippet qstring/stringbuilder.cpp 6
- and the \c{'+'} will automatically be performed as the
- \c{QStringBuilder} \c{'%'} everywhere.
+ This does not cause any harm, as QStringBuilder will implicitly convert to
+ QString when required. If this is undesirable, then one should specify
+ the necessary types instead of having the compiler deduce them:
- \section1 Maximum Size and Out-of-memory Conditions
+ \snippet qstring/stringbuilder.cpp 7
+
+ \section1 Maximum size and out-of-memory conditions
The maximum size of QString depends on the architecture. Most 64-bit
systems can allocate more than 2 GB of memory, with a typical limit
of 2^63 bytes. The actual value also depends on the overhead required for
- managing the data block. As a result, you can expect the maximum size
- of 2 GB minus overhead on 32-bit platforms, and 2^63 bytes minus overhead
+ managing the data block. As a result, you can expect a maximum size
+ of 2 GB minus overhead on 32-bit platforms and 2^63 bytes minus overhead
on 64-bit platforms. The number of elements that can be stored in a
QString is this maximum size divided by the size of QChar.
When memory allocation fails, QString throws a \c std::bad_alloc
exception if the application was compiled with exception support.
- Out of memory conditions in Qt containers are the only case where Qt
+ Out-of-memory conditions in Qt containers are the only cases where Qt
will throw exceptions. If exceptions are disabled, then running out of
memory is undefined behavior.
- Note that the operating system may impose further limits on applications
- holding a lot of allocated memory, especially large, contiguous blocks.
- Such considerations, the configuration of such behavior or any mitigation
- are outside the scope of the Qt API.
+ \note Target operating systems may impose limits on how much memory an
+ application can allocate, in total, or on the size of individual allocations.
+ This may further restrict the size of string a QString can hold.
+ Mitigating or controlling the behavior these limits cause is beyond the
+ scope of the Qt API.
- \sa fromRawData(), QChar, QStringView, QLatin1String, QByteArray
+ \sa fromRawData(), QChar, QStringView, QLatin1StringView, QByteArray
*/
/*! \typedef QString::ConstIterator
@@ -2367,10 +2380,16 @@ static int qArgDigitValue(QChar ch) noexcept
\sa fromLatin1(), fromLocal8Bit(), fromUtf8()
*/
+/*
+//! [from-std-string]
+Returns a copy of the \a str string. The given string is assumed to be
+encoded in \1, and is converted to QString using the \2 function.
+//! [from-std-string]
+*/
+
/*! \fn QString QString::fromStdString(const std::string &str)
- Returns a copy of the \a str string. The given string is converted
- to Unicode using the fromUtf8() function.
+ \include qstring.cpp {from-std-string} {UTF-8} {fromUtf8()}
\sa fromLatin1(), fromLocal8Bit(), fromUtf8(), QByteArray::fromStdString()
*/
@@ -2402,8 +2421,8 @@ static int qArgDigitValue(QChar ch) noexcept
/*! \fn std::wstring QString::toStdWString() const
Returns a std::wstring object with the data contained in this
- QString. The std::wstring is encoded in utf16 on platforms where
- wchar_t is 2 bytes wide (e.g. windows) and in ucs4 on platforms
+ QString. The std::wstring is encoded in UTF-16 on platforms where
+ wchar_t is 2 bytes wide (for example, Windows) and in UTF-32 on platforms
where wchar_t is 4 bytes wide (most Unix systems).
This method is mostly useful to pass a QString to a function
@@ -2413,7 +2432,7 @@ static int qArgDigitValue(QChar ch) noexcept
toStdU32String()
*/
-qsizetype QString::toUcs4_helper(const ushort *uc, qsizetype length, uint *out)
+qsizetype QString::toUcs4_helper(const char16_t *uc, qsizetype length, char32_t *out)
{
qsizetype count = 0;
@@ -2476,15 +2495,12 @@ QString::QString(const QChar *unicode, qsizetype size)
if (!unicode) {
d.clear();
} else {
- if (size < 0) {
- size = 0;
- while (!unicode[size].isNull())
- ++size;
- }
+ if (size < 0)
+ size = QtPrivate::qustrlen(reinterpret_cast<const char16_t *>(unicode));
if (!size) {
d = DataPointer::fromRawData(&_empty, 0);
} else {
- d = DataPointer(Data::allocate(size), size);
+ d = DataPointer(size, size);
Q_CHECK_PTR(d.data());
memcpy(d.data(), unicode, size * sizeof(QChar));
d.data()[size] = '\0';
@@ -2503,14 +2519,13 @@ QString::QString(qsizetype size, QChar ch)
if (size <= 0) {
d = DataPointer::fromRawData(&_empty, 0);
} else {
- d = DataPointer(Data::allocate(size), size);
+ d = DataPointer(size, size);
Q_CHECK_PTR(d.data());
d.data()[size] = '\0';
- char16_t *i = d.data() + size;
char16_t *b = d.data();
+ char16_t *e = d.data() + size;
const char16_t value = ch.unicode();
- while (i != b)
- *--i = value;
+ std::fill(b, e, value);
}
}
@@ -2525,15 +2540,15 @@ QString::QString(qsizetype size, Qt::Initialization)
if (size <= 0) {
d = DataPointer::fromRawData(&_empty, 0);
} else {
- d = DataPointer(Data::allocate(size), size);
+ d = DataPointer(size, size);
Q_CHECK_PTR(d.data());
d.data()[size] = '\0';
}
}
-/*! \fn QString::QString(QLatin1String str)
+/*! \fn QString::QString(QLatin1StringView str)
- Constructs a copy of the Latin-1 string \a str.
+ Constructs a copy of the Latin-1 string viewed by \a str.
\sa fromLatin1()
*/
@@ -2543,7 +2558,7 @@ QString::QString(qsizetype size, Qt::Initialization)
*/
QString::QString(QChar ch)
{
- d = DataPointer(Data::allocate(1), 1);
+ d = DataPointer(1, 1);
Q_CHECK_PTR(d.data());
d.data()[0] = ch.unicode();
d.data()[1] = '\0';
@@ -2559,7 +2574,7 @@ QString::QString(QChar ch)
can be useful if you want to ensure that all user-visible strings
go through QObject::tr(), for example.
- \note: any null ('\\0') bytes in the byte array will be included in this
+ \note Any null ('\\0') bytes in the byte array will be included in this
string, converted to Unicode null characters (U+0000). This behavior is
different from Qt 5.x.
@@ -2607,6 +2622,18 @@ QString::QString(QChar ch)
\internal
*/
+/*! \fn QString::operator std::u16string_view() const
+ \since 6.7
+
+ Converts this QString object to a \c{std::u16string_view} object.
+*/
+
+static bool needsReallocate(const QString &str, qsizetype newSize)
+{
+ const auto capacityAtEnd = str.capacity() - str.data_ptr().freeSpaceAtBegin();
+ return newSize > capacityAtEnd;
+}
+
/*!
Sets the size of the string to \a size characters.
@@ -2643,12 +2670,11 @@ void QString::resize(qsizetype size)
if (size < 0)
size = 0;
- const auto capacityAtEnd = capacity() - d.freeSpaceAtBegin();
- if (d->needsDetach() || size > capacityAtEnd)
+ if (d->needsDetach() || needsReallocate(*this, size))
reallocData(size, QArrayData::Grow);
d.size = size;
if (d->allocatedCapacity())
- d.data()[size] = 0;
+ d.data()[size] = u'\0';
}
/*!
@@ -2661,15 +2687,33 @@ void QString::resize(qsizetype size)
\snippet qstring/main.cpp 46
*/
-void QString::resize(qsizetype size, QChar fillChar)
+void QString::resize(qsizetype newSize, QChar fillChar)
{
- const qsizetype oldSize = length();
- resize(size);
- const qsizetype difference = length() - oldSize;
+ const qsizetype oldSize = size();
+ resize(newSize);
+ const qsizetype difference = size() - oldSize;
if (difference > 0)
std::fill_n(d.data() + oldSize, difference, fillChar.unicode());
}
+
+/*!
+ \since 6.8
+
+ Sets the size of the string to \a size characters. If the size of
+ the string grows, the new characters are uninitialized.
+
+ The behavior is identical to \c{resize(size)}.
+
+ \sa resize()
+*/
+
+void QString::resizeForOverwrite(qsizetype size)
+{
+ resize(size);
+}
+
+
/*! \fn qsizetype QString::capacity() const
Returns the maximum number of characters that can be stored in
@@ -2695,20 +2739,20 @@ void QString::resize(qsizetype size, QChar fillChar)
Ensures the string has space for at least \a size characters.
- If you know in advance how large the string will be, you can call this
- function to save repeated reallocation in the course of building it.
+ If you know in advance how large a string will be, you can call this
+ function to save repeated reallocation while building it.
This can improve performance when building a string incrementally.
A long sequence of operations that add to a string may trigger several
reallocations, the last of which may leave you with significantly more
- space than you really need, which is less efficient than doing a single
+ space than you need. This is less efficient than doing a single
allocation of the right size at the start.
If in doubt about how much space shall be needed, it is usually better to
use an upper bound as \a size, or a high estimate of the most likely size,
if a strict upper bound would be much bigger than this. If \a size is an
underestimate, the string will grow as needed once the reserved size is
- exceeded, which may lead to a larger allocation than your best overestimate
- would have and will slow the operation that triggers it.
+ exceeded, which may lead to a larger allocation than your best
+ overestimate would have and will slow the operation that triggers it.
\warning reserve() reserves memory but does not change the size of the
string. Accessing data beyond the end of the string is undefined behavior.
@@ -2750,7 +2794,7 @@ void QString::reallocData(qsizetype alloc, QArrayData::AllocationOption option)
const bool cannotUseReallocate = d.freeSpaceAtBegin() > 0;
if (d->needsDetach() || cannotUseReallocate) {
- DataPointer dd(Data::allocate(alloc, option), qMin(alloc, d.size));
+ DataPointer dd(alloc, qMin(alloc, d.size), option);
Q_CHECK_PTR(dd.data());
if (dd.size > 0)
::memcpy(dd.data(), d.data(), dd.size * sizeof(QChar));
@@ -2804,13 +2848,13 @@ QString &QString::operator=(const QString &other) noexcept
\since 5.2
*/
-/*! \fn QString &QString::operator=(QLatin1String str)
+/*! \fn QString &QString::operator=(QLatin1StringView str)
\overload operator=()
- Assigns the Latin-1 string \a str to this string.
+ Assigns the Latin-1 string viewed by \a str to this string.
*/
-QString &QString::operator=(QLatin1String other)
+QString &QString::operator=(QLatin1StringView other)
{
const qsizetype capacityAtEnd = capacity() - d.freeSpaceAtBegin();
if (isDetached() && other.size() <= capacityAtEnd) { // assumes d->alloc == 0 -> !isDetached() (sharedNull)
@@ -2856,16 +2900,7 @@ QString &QString::operator=(QLatin1String other)
*/
QString &QString::operator=(QChar ch)
{
- const qsizetype capacityAtEnd = capacity() - d.freeSpaceAtBegin();
- if (isDetached() && capacityAtEnd >= 1) { // assumes d->alloc == 0 -> !isDetached() (sharedNull)
- // re-use existing capacity:
- d.data()[0] = ch.unicode();
- d.data()[1] = 0;
- d.size = 1;
- } else {
- operator=(QString(ch));
- }
- return *this;
+ return assign(1, ch);
}
/*!
@@ -2913,7 +2948,6 @@ QString &QString::operator=(QChar ch)
defined.
*/
-
/*!
\fn QString& QString::insert(qsizetype position, const QByteArray &str)
\since 5.5
@@ -2929,32 +2963,130 @@ QString &QString::operator=(QChar ch)
defined.
*/
+/*! \internal
+ T is a view or a container on/of QChar, char16_t, or char
+*/
+template <typename T>
+static void insert_helper(QString &str, qsizetype i, const T &toInsert)
+{
+ auto &str_d = str.data_ptr();
+ qsizetype difference = 0;
+ if (Q_UNLIKELY(i > str_d.size))
+ difference = i - str_d.size;
+ const qsizetype oldSize = str_d.size;
+ const qsizetype insert_size = toInsert.size();
+ const qsizetype newSize = str_d.size + difference + insert_size;
+ const auto side = i == 0 ? QArrayData::GrowsAtBeginning : QArrayData::GrowsAtEnd;
+
+ if (str_d.needsDetach() || needsReallocate(str, newSize)) {
+ const auto cbegin = str.cbegin();
+ const auto cend = str.cend();
+ const auto insert_start = difference == 0 ? std::next(cbegin, i) : cend;
+ QString other;
+ // Using detachAndGrow() so that prepend optimization works and QStringBuilder
+ // unittests pass
+ other.data_ptr().detachAndGrow(side, newSize, nullptr, nullptr);
+ other.append(QStringView(cbegin, insert_start));
+ other.resize(i, u' ');
+ other.append(toInsert);
+ other.append(QStringView(insert_start, cend));
+ str.swap(other);
+ return;
+ }
+
+ str_d.detachAndGrow(side, difference + insert_size, nullptr, nullptr);
+ Q_CHECK_PTR(str_d.data());
+ str.resize(newSize);
+
+ auto begin = str_d.begin();
+ auto old_end = std::next(begin, oldSize);
+ std::fill_n(old_end, difference, u' ');
+ auto insert_start = std::next(begin, i);
+ if (difference == 0)
+ std::move_backward(insert_start, old_end, str_d.end());
+
+ using Char = std::remove_cv_t<typename T::value_type>;
+ if constexpr(std::is_same_v<Char, QChar>)
+ std::copy_n(reinterpret_cast<const char16_t *>(toInsert.data()), insert_size, insert_start);
+ else if constexpr (std::is_same_v<Char, char16_t>)
+ std::copy_n(toInsert.data(), insert_size, insert_start);
+ else if constexpr (std::is_same_v<Char, char>)
+ qt_from_latin1(insert_start, toInsert.data(), insert_size);
+}
+
/*!
- \fn QString &QString::insert(qsizetype position, QLatin1String str)
+ \fn QString &QString::insert(qsizetype position, QLatin1StringView str)
\overload insert()
- Inserts the Latin-1 string \a str at the given index \a position.
+ Inserts the Latin-1 string viewed by \a str at the given index \a position.
\include qstring.cpp string-grow-at-insertion
*/
-QString &QString::insert(qsizetype i, QLatin1String str)
+QString &QString::insert(qsizetype i, QLatin1StringView str)
{
const char *s = str.latin1();
if (i < 0 || !s || !(*s))
return *this;
- qsizetype len = str.size();
+ insert_helper(*this, i, str);
+ return *this;
+}
+
+/*!
+ \fn QString &QString::insert(qsizetype position, QUtf8StringView str)
+ \overload insert()
+ \since 6.5
+
+ Inserts the UTF-8 string view \a str at the given index \a position.
+
+ \note Inserting variable-width UTF-8-encoded string data is conceptually slower
+ than inserting fixed-width string data such as UTF-16 (QStringView) or Latin-1
+ (QLatin1StringView) and should thus be used sparingly.
+
+ \include qstring.cpp string-grow-at-insertion
+*/
+QString &QString::insert(qsizetype i, QUtf8StringView s)
+{
+ auto insert_size = s.size();
+ if (i < 0 || insert_size <= 0)
+ return *this;
+
qsizetype difference = 0;
- if (Q_UNLIKELY(i > size()))
- difference = i - size();
- d.detachAndGrow(Data::GrowsAtEnd, difference + len, nullptr, nullptr);
- Q_CHECK_PTR(d.data());
- d->copyAppend(difference, u' ');
- d.size += len;
+ if (Q_UNLIKELY(i > d.size))
+ difference = i - d.size;
+
+ const qsizetype newSize = d.size + difference + insert_size;
+
+ if (d.needsDetach() || needsReallocate(*this, newSize)) {
+ const auto cbegin = this->cbegin();
+ const auto insert_start = difference == 0 ? std::next(cbegin, i) : cend();
+ QString other;
+ other.reserve(newSize);
+ other.append(QStringView(cbegin, insert_start));
+ if (difference > 0)
+ other.resize(i, u' ');
+ other.append(s);
+ other.append(QStringView(insert_start, cend()));
+ swap(other);
+ return *this;
+ }
+
+ if (i >= d.size) {
+ d.detachAndGrow(QArrayData::GrowsAtEnd, difference + insert_size, nullptr, nullptr);
+ Q_CHECK_PTR(d.data());
+
+ if (difference > 0)
+ resize(i, u' ');
+ append(s);
+ } else {
+ // Optimal insertion of Utf8 data is at the end, anywhere else could
+ // potentially lead to moving characters twice if Utf8 data size
+ // (variable-width) is less than the equivalent Utf16 data size
+ QVarLengthArray<char16_t> buffer(insert_size); // ### optimize (QTBUG-108546)
+ char16_t *b = QUtf8::convertToUnicode(buffer.data(), s);
+ insert_helper(*this, i, QStringView(buffer.data(), b));
+ }
- ::memmove(d.data() + i + len, d.data() + i, (d.size - i - len) * sizeof(QChar));
- qt_from_latin1(d.data() + i, s, size_t(len));
- d.data()[d.size] = u'\0';
return *this;
}
@@ -2975,28 +3107,14 @@ QString& QString::insert(qsizetype i, const QChar *unicode, qsizetype size)
if (i < 0 || size <= 0)
return *this;
- const char16_t *s = reinterpret_cast<const char16_t *>(unicode);
-
- // handle this specially, as QArrayDataOps::insert() doesn't handle out of
- // bounds positions
- if (i >= d->size) {
- // In case when data points into the range or is == *this, we need to
- // defer a call to free() so that it comes after we copied the data from
- // the old memory:
- DataPointer detached{}; // construction is free
- d.detachAndGrow(Data::GrowsAtEnd, (i - d.size) + size, &s, &detached);
- Q_CHECK_PTR(d.data());
- d->copyAppend(i - d->size, u' ');
- d->copyAppend(s, s + size);
- d.data()[d.size] = u'\0';
- return *this;
+ // In case when data points into "this"
+ if (!d->needsDetach() && QtPrivate::q_points_into_range(unicode, *this)) {
+ QVarLengthArray copy(unicode, unicode + size);
+ insert(i, copy.data(), size);
+ } else {
+ insert_helper(*this, i, QStringView(unicode, size));
}
- if (!d->needsDetach() && QtPrivate::q_points_into_range(s, d.data(), d.data() + d.size))
- return insert(i, QStringView{QVarLengthArray(s, s + size)});
-
- d->insert(i, s, size);
- d.data()[d.size] = u'\0';
return *this;
}
@@ -3040,7 +3158,10 @@ QString &QString::append(const QString &str)
{
if (!str.isNull()) {
if (isNull()) {
- operator=(str);
+ if (Q_UNLIKELY(!str.d.isMutable()))
+ assign(str); // fromRawData, so we do a deep copy
+ else
+ operator=(str);
} else if (str.size()) {
append(str.constData(), str.size());
}
@@ -3049,6 +3170,14 @@ QString &QString::append(const QString &str)
}
/*!
+ \fn QString &QString::append(QStringView v)
+ \overload append()
+ \since 6.0
+
+ Appends the given string view \a v to this string and returns the result.
+*/
+
+/*!
\overload append()
\since 5.0
@@ -3069,23 +3198,23 @@ QString &QString::append(const QChar *str, qsizetype len)
/*!
\overload append()
- Appends the Latin-1 string \a str to this string.
+ Appends the Latin-1 string viewed by \a str to this string.
*/
-QString &QString::append(QLatin1String str)
+QString &QString::append(QLatin1StringView str)
{
- const char *s = str.latin1();
- const qsizetype len = str.size();
- if (s && len > 0) {
- d.detachAndGrow(Data::GrowsAtEnd, len, nullptr, nullptr);
- Q_CHECK_PTR(d.data());
- Q_ASSERT(len <= d->freeSpaceAtEnd());
- char16_t *i = d.data() + d.size;
- qt_from_latin1(i, s, size_t(len));
- d.size += len;
- d.data()[d.size] = '\0';
- } else if (d.isNull() && !str.isNull()) { // special case
- d = DataPointer::fromRawData(&_empty, 0);
- }
+ append_helper(*this, str);
+ return *this;
+}
+
+/*!
+ \overload append()
+ \since 6.5
+
+ Appends the UTF-8 string view \a str to this string.
+*/
+QString &QString::append(QUtf8StringView str)
+{
+ append_helper(*this, str);
return *this;
}
@@ -3144,11 +3273,18 @@ QString &QString::append(QChar ch)
\sa append(), insert()
*/
-/*! \fn QString &QString::prepend(QLatin1String str)
+/*! \fn QString &QString::prepend(QLatin1StringView str)
+
+ \overload prepend()
+
+ Prepends the Latin-1 string viewed by \a str to this string.
+*/
+/*! \fn QString &QString::prepend(QUtf8StringView str)
+ \since 6.5
\overload prepend()
- Prepends the Latin-1 string \a str to this string.
+ Prepends the UTF-8 string view \a str to this string.
*/
/*! \fn QString &QString::prepend(const QChar *str, qsizetype len)
@@ -3201,6 +3337,111 @@ QString &QString::append(QChar ch)
*/
/*!
+ \fn QString &QString::assign(QAnyStringView v)
+ \since 6.6
+
+ Replaces the contents of this string with a copy of \a v and returns a
+ reference to this string.
+
+ The size of this string will be equal to the size of \a v, converted to
+ UTF-16 as if by \c{v.toString()}. Unlike QAnyStringView::toString(), however,
+ this function only allocates memory if the estimated size exceeds the capacity
+ of this string or this string is shared.
+
+ \sa QAnyStringView::toString()
+*/
+
+/*!
+ \fn QString &QString::assign(qsizetype n, QChar c)
+ \since 6.6
+
+ Replaces the contents of this string with \a n copies of \a c and
+ returns a reference to this string.
+
+ The size of this string will be equal to \a n, which has to be non-negative.
+
+ This function will only allocate memory if \a n exceeds the capacity of this
+ string or this string is shared.
+
+ \sa fill()
+*/
+
+/*!
+ \fn template <typename InputIterator, QString::if_compatible_iterator<InputIterator>> QString &QString::assign(InputIterator first, InputIterator last)
+ \since 6.6
+
+ Replaces the contents of this string with a copy of the elements in the
+ iterator range [\a first, \a last) and returns a reference to this string.
+
+ The size of this string will be equal to the decoded length of the elements
+ in the range [\a first, \a last), which need not be the same as the length of
+ the range itself, because this function transparently recodes the input
+ character set to UTF-16.
+
+ This function will only allocate memory if the number of elements in the
+ range, or, for non-UTF-16-encoded input, the maximum possible size of the
+ resulting string, exceeds the capacity of this string, or if this string is
+ shared.
+
+ \note This function overload only participates in overload resolution if
+ \c InputIterator meets the requirements of a
+ \l {https://en.cppreference.com/w/cpp/named_req/InputIterator} {LegacyInputIterator}
+ and the \c{value_type} of \c InputIterator is one of the following character types:
+ \list
+ \li QChar
+ \li QLatin1Char
+ \li \c {char}
+ \li \c {unsigned char}
+ \li \c {signed char}
+ \li \c {char8_t}
+ \li \c char16_t
+ \li (on platforms, such as Windows, where it is a 16-bit type) \c wchar_t
+ \li \c char32_t
+ \endlist
+
+ \note The behavior is undefined if either argument is an iterator into *this or
+ [\a first, \a last) is not a valid range.
+*/
+
+QString &QString::assign(QAnyStringView s)
+{
+ if (s.size() <= capacity() && isDetached()) {
+ const auto offset = d.freeSpaceAtBegin();
+ if (offset)
+ d.setBegin(d.begin() - offset);
+ resize(0);
+ s.visit([this](auto input) {
+ this->append(input);
+ });
+ } else {
+ *this = s.toString();
+ }
+ return *this;
+}
+
+#ifndef QT_BOOTSTRAPPED
+QString &QString::assign_helper(const char32_t *data, qsizetype len)
+{
+ // worst case: each char32_t requires a surrogate pair, so
+ const auto requiredCapacity = len * 2;
+ if (requiredCapacity <= capacity() && isDetached()) {
+ const auto offset = d.freeSpaceAtBegin();
+ if (offset)
+ d.setBegin(d.begin() - offset);
+ auto begin = reinterpret_cast<QChar *>(d.begin());
+ auto ba = QByteArrayView(reinterpret_cast<const std::byte*>(data), len * sizeof(char32_t));
+ QStringConverter::State state;
+ const auto end = QUtf32::convertToUnicode(begin, ba, &state, DetectEndianness);
+ d.size = end - begin;
+ d.data()[d.size] = u'\0';
+ } else {
+ *this = QString::fromUcs4(data, len);
+ }
+ return *this;
+}
+#endif
+
+/*!
\fn QString &QString::remove(qsizetype position, qsizetype n)
Removes \a n characters from the string, starting at the given \a
@@ -3210,6 +3451,8 @@ QString &QString::append(QChar ch)
position + \a n is beyond the end of the string, the string is
truncated at the specified \a position.
+ If \a n is <= 0 nothing is changed.
+
\snippet qstring/main.cpp 37
//! [shrinking-erase]
@@ -3224,14 +3467,26 @@ QString &QString::remove(qsizetype pos, qsizetype len)
{
if (pos < 0) // count from end of string
pos += size();
- if (size_t(pos) >= size_t(size())) {
- // range problems
- } else if (len >= size() - pos) {
- resize(pos); // truncate
- } else if (len > 0) {
- detach();
+
+ if (size_t(pos) >= size_t(size()) || len <= 0)
+ return *this;
+
+ len = std::min(len, size() - pos);
+
+ if (!d->isShared()) {
d->erase(d.begin() + pos, len);
d.data()[d.size] = u'\0';
+ } else {
+ // TODO: either reserve "size()", which is bigger than needed, or
+ // modify the shrinking-erase docs of this method (since the size
+ // of "copy" won't have any extra capacity any more)
+ const qsizetype sz = size() - len;
+ QString copy{sz, Qt::Uninitialized};
+ auto begin = d.begin();
+ auto toRemove_start = d.begin() + pos;
+ copy.d->copyRanges({{begin, toRemove_start},
+ {toRemove_start + len, d.end()}});
+ swap(copy);
}
return *this;
}
@@ -3248,29 +3503,40 @@ static void removeStringImpl(QString &s, const T &needle, Qt::CaseSensitivity cs
if (i < 0)
return;
- const auto beg = s.begin(); // detaches
- auto dst = beg + i;
- auto src = beg + i + needleSize;
- const auto end = s.end();
- // loop invariant: [beg, dst[ is partial result
- // [src, end[ still to be checked for needles
- while (src < end) {
- const auto i = s.indexOf(needle, src - beg, cs);
- const auto hit = i == -1 ? end : beg + i;
- const auto skipped = hit - src;
- memmove(dst, src, skipped * sizeof(QChar));
- dst += skipped;
- src = hit + needleSize;
+ QString::DataPointer &dptr = s.data_ptr();
+ auto begin = dptr.begin();
+ auto end = dptr.end();
+
+ auto copyFunc = [&](auto &dst) {
+ auto src = begin + i + needleSize;
+ while (src < end) {
+ i = s.indexOf(needle, std::distance(begin, src), cs);
+ auto hit = i == -1 ? end : begin + i;
+ dst = std::copy(src, hit, dst);
+ src = hit + needleSize;
+ }
+ return dst;
+ };
+
+ if (!dptr->needsDetach()) {
+ auto dst = begin + i;
+ dst = copyFunc(dst);
+ s.truncate(std::distance(begin, dst));
+ } else {
+ QString copy{s.size(), Qt::Uninitialized};
+ auto copy_begin = copy.begin();
+ auto dst = std::copy(begin, begin + i, copy_begin); // Chunk before the first hit
+ dst = copyFunc(dst);
+ copy.resize(std::distance(copy_begin, dst));
+ s.swap(copy);
}
- s.truncate(dst - beg);
}
/*!
Removes every occurrence of the given \a str string in this
string, and returns a reference to this string.
- If \a cs is Qt::CaseSensitive (default), the search is
- case sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
This is the same as \c replace(str, "", cs).
@@ -3281,7 +3547,7 @@ static void removeStringImpl(QString &s, const T &needle, Qt::CaseSensitivity cs
QString &QString::remove(const QString &str, Qt::CaseSensitivity cs)
{
const auto s = str.d.data();
- if (QtPrivate::q_points_into_range(s, d.data(), d.data() + d.size))
+ if (QtPrivate::q_points_into_range(s, d))
removeStringImpl(*this, QStringView{QVarLengthArray(s, s + str.size())}, cs);
else
removeStringImpl(*this, qToStringViewIgnoringNull(str), cs);
@@ -3292,11 +3558,10 @@ QString &QString::remove(const QString &str, Qt::CaseSensitivity cs)
\since 5.11
\overload
- Removes every occurrence of the given \a str string in this
- string, and returns a reference to this string.
+ Removes every occurrence of the given Latin-1 string viewed by \a str
+ from this string, and returns a reference to this string.
- If \a cs is Qt::CaseSensitive (default), the search is
- case sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
This is the same as \c replace(str, "", cs).
@@ -3304,18 +3569,50 @@ QString &QString::remove(const QString &str, Qt::CaseSensitivity cs)
\sa replace()
*/
-QString &QString::remove(QLatin1String str, Qt::CaseSensitivity cs)
+QString &QString::remove(QLatin1StringView str, Qt::CaseSensitivity cs)
{
removeStringImpl(*this, str, cs);
return *this;
}
/*!
+ \fn QString &QString::removeAt(qsizetype pos)
+
+ \since 6.5
+
+ Removes the character at index \a pos. If \a pos is out of bounds
+ (i.e. \a pos >= size()), this function does nothing.
+
+ \sa remove()
+*/
+
+/*!
+ \fn QString &QString::removeFirst()
+
+ \since 6.5
+
+ Removes the first character in this string. If the string is empty,
+ this function does nothing.
+
+ \sa remove()
+*/
+
+/*!
+ \fn QString &QString::removeLast()
+
+ \since 6.5
+
+ Removes the last character in this string. If the string is empty,
+ this function does nothing.
+
+ \sa remove()
+*/
+
+/*!
Removes every occurrence of the character \a ch in this string, and
returns a reference to this string.
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
Example:
@@ -3330,19 +3627,34 @@ QString &QString::remove(QLatin1String str, Qt::CaseSensitivity cs)
QString &QString::remove(QChar ch, Qt::CaseSensitivity cs)
{
const qsizetype idx = indexOf(ch, 0, cs);
- if (idx != -1) {
- const auto first = begin(); // implicit detach()
- auto last = end();
- if (cs == Qt::CaseSensitive) {
- last = std::remove(first + idx, last, ch);
- } else {
- const QChar c = ch.toCaseFolded();
- auto caseInsensEqual = [c](QChar x) {
- return c == x.toCaseFolded();
- };
- last = std::remove_if(first + idx, last, caseInsensEqual);
- }
- resize(last - first);
+ if (idx == -1)
+ return *this;
+
+ const bool isCase = cs == Qt::CaseSensitive;
+ ch = isCase ? ch : ch.toCaseFolded();
+ auto match = [ch, isCase](QChar x) {
+ return ch == (isCase ? x : x.toCaseFolded());
+ };
+
+
+ auto begin = d.begin();
+ auto first_match = begin + idx;
+ auto end = d.end();
+ if (!d->isShared()) {
+ auto it = std::remove_if(first_match, end, match);
+ d->erase(it, std::distance(it, end));
+ d.data()[d.size] = u'\0';
+ } else {
+ // Instead of detaching, create a new string and copy all characters except for
+ // the ones we're removing
+ // TODO: size() is more than the needed since "copy" would be shorter
+ QString copy{size(), Qt::Uninitialized};
+ auto dst = copy.d.begin();
+ auto it = std::copy(begin, first_match, dst); // Chunk before idx
+ it = std::remove_copy_if(first_match + 1, end, it, match);
+ copy.d.size = std::distance(dst, it);
+ copy.d.data()[copy.d.size] = u'\0';
+ *this = std::move(copy);
}
return *this;
}
@@ -3371,6 +3683,97 @@ QString &QString::remove(QChar ch, Qt::CaseSensitivity cs)
\sa remove()
*/
+
+/*! \internal
+ Instead of detaching, or reallocating if "before" is shorter than "after"
+ and there isn't enough capacity, create a new string, copy characters to it
+ as needed, then swap it with "str".
+*/
+static void replace_with_copy(QString &str, QSpan<size_t> indices, qsizetype blen,
+ QStringView after)
+{
+ const qsizetype alen = after.size();
+ const char16_t *after_b = after.utf16();
+
+ const QString::DataPointer &str_d = str.data_ptr();
+ auto src_start = str_d.begin();
+ const qsizetype newSize = str_d.size + indices.size() * (alen - blen);
+ QString copy{ newSize, Qt::Uninitialized };
+ QString::DataPointer &copy_d = copy.data_ptr();
+ auto dst = copy_d.begin();
+ for (size_t index : indices) {
+ auto hit = str_d.begin() + index;
+ dst = std::copy(src_start, hit, dst);
+ dst = std::copy_n(after_b, alen, dst);
+ src_start = hit + blen;
+ }
+ dst = std::copy(src_start, str_d.end(), dst);
+ str.swap(copy);
+}
+
+// No detaching or reallocation is needed
+static void replace_in_place(QString &str, QSpan<size_t> indices,
+ qsizetype blen, QStringView after)
+{
+ const qsizetype alen = after.size();
+ const char16_t *after_b = after.utf16();
+ const char16_t *after_e = after.utf16() + after.size();
+
+ if (blen == alen) { // Replace in place
+ for (size_t index : indices)
+ std::copy_n(after_b, alen, str.data_ptr().begin() + index);
+ } else if (blen > alen) { // Replace from front
+ char16_t *begin = str.data_ptr().begin();
+ char16_t *hit = begin + indices.front();
+ char16_t *to = hit;
+ to = std::copy_n(after_b, alen, to);
+ char16_t *movestart = hit + blen;
+ for (size_t index : indices.sliced(1)) {
+ hit = begin + index;
+ to = std::move(movestart, hit, to);
+ to = std::copy_n(after_b, alen, to);
+ movestart = hit + blen;
+ }
+ to = std::move(movestart, str.data_ptr().end(), to);
+ str.resize(std::distance(begin, to));
+ } else { // blen < alen, Replace from back
+ const qsizetype oldSize = str.data_ptr().size;
+ const qsizetype adjust = indices.size() * (alen - blen);
+ const qsizetype newSize = oldSize + adjust;
+
+ str.resize(newSize);
+ char16_t *begin = str.data_ptr().begin();
+ char16_t *moveend = begin + oldSize;
+ char16_t *to = str.data_ptr().end();
+
+ for (auto it = indices.rbegin(), end = indices.rend(); it != end; ++it) {
+ char16_t *hit = begin + *it;
+ char16_t *movestart = hit + blen;
+ to = std::move_backward(movestart, moveend, to);
+ to = std::copy_backward(after_b, after_e, to);
+ moveend = hit;
+ }
+ }
+}
+
+static void replace_helper(QString &str, QSpan<size_t> indices, qsizetype blen, QStringView after)
+{
+ const qsizetype oldSize = str.data_ptr().size;
+ const qsizetype adjust = indices.size() * (after.size() - blen);
+ const qsizetype newSize = oldSize + adjust;
+ if (str.data_ptr().needsDetach() || needsReallocate(str, newSize)) {
+ replace_with_copy(str, indices, blen, after);
+ return;
+ }
+
+ if (QtPrivate::q_points_into_range(after.begin(), str))
+ // Copy after if it lies inside our own d.b area (which we could
+ // possibly invalidate via a realloc or modify by replacement)
+ replace_in_place(str, indices, blen, QVarLengthArray(after.begin(), after.end()));
+ else
+ replace_in_place(str, indices, blen, after);
+}
+
/*!
\fn QString &QString::replace(qsizetype position, qsizetype n, const QString &after)
@@ -3389,17 +3792,17 @@ QString &QString::remove(QChar ch, Qt::CaseSensitivity cs)
*/
QString &QString::replace(qsizetype pos, qsizetype len, const QString &after)
{
- return replace(pos, len, after.constData(), after.length());
+ return replace(pos, len, after.constData(), after.size());
}
/*!
- \fn QString &QString::replace(qsizetype position, qsizetype n, const QChar *unicode, qsizetype size)
+ \fn QString &QString::replace(qsizetype position, qsizetype n, const QChar *after, qsizetype alen)
\overload replace()
Replaces \a n characters beginning at index \a position with the
- first \a size characters of the QChar array \a unicode and returns a
+ first \a alen characters of the QChar array \a after and returns a
reference to this string.
*/
-QString &QString::replace(qsizetype pos, qsizetype len, const QChar *unicode, qsizetype size)
+QString &QString::replace(qsizetype pos, qsizetype len, const QChar *after, qsizetype alen)
{
if (size_t(pos) > size_t(this->size()))
return *this;
@@ -3407,7 +3810,7 @@ QString &QString::replace(qsizetype pos, qsizetype len, const QChar *unicode, qs
len = this->size() - pos;
size_t index = pos;
- replace_helper(&index, 1, len, unicode, size);
+ replace_helper(*this, QSpan(&index, 1), len, QStringView{after, alen});
return *this;
}
@@ -3428,8 +3831,7 @@ QString &QString::replace(qsizetype pos, qsizetype len, QChar after)
Replaces every occurrence of the string \a before with the string \a
after and returns a reference to this string.
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
Example:
@@ -3446,90 +3848,6 @@ QString &QString::replace(const QString &before, const QString &after, Qt::CaseS
return replace(before.constData(), before.size(), after.constData(), after.size(), cs);
}
-namespace { // helpers for replace and its helper:
-QChar *textCopy(const QChar *start, qsizetype len)
-{
- const size_t size = len * sizeof(QChar);
- QChar *const copy = static_cast<QChar *>(::malloc(size));
- Q_CHECK_PTR(copy);
- ::memcpy(copy, start, size);
- return copy;
-}
-
-static bool pointsIntoRange(const QChar *ptr, const char16_t *base, qsizetype len)
-{
- const QChar *const start = reinterpret_cast<const QChar *>(base);
- const std::less<const QChar *> less;
- return !less(ptr, start) && less(ptr, start + len);
-}
-} // end namespace
-
-/*!
- \internal
- */
-void QString::replace_helper(size_t *indices, qsizetype nIndices, qsizetype blen, const QChar *after, qsizetype alen)
-{
- // Copy after if it lies inside our own d.b area (which we could
- // possibly invalidate via a realloc or modify by replacement).
- QChar *afterBuffer = nullptr;
- if (pointsIntoRange(after, d.data(), d.size)) // Use copy in place of vulnerable original:
- after = afterBuffer = textCopy(after, alen);
-
- QT_TRY {
- if (blen == alen) {
- // replace in place
- detach();
- for (qsizetype i = 0; i < nIndices; ++i)
- memcpy(d.data() + indices[i], after, alen * sizeof(QChar));
- } else if (alen < blen) {
- // replace from front
- detach();
- size_t to = indices[0];
- if (alen)
- memcpy(d.data()+to, after, alen*sizeof(QChar));
- to += alen;
- size_t movestart = indices[0] + blen;
- for (qsizetype i = 1; i < nIndices; ++i) {
- qsizetype msize = indices[i] - movestart;
- if (msize > 0) {
- memmove(d.data() + to, d.data() + movestart, msize * sizeof(QChar));
- to += msize;
- }
- if (alen) {
- memcpy(d.data() + to, after, alen * sizeof(QChar));
- to += alen;
- }
- movestart = indices[i] + blen;
- }
- qsizetype msize = d.size - movestart;
- if (msize > 0)
- memmove(d.data() + to, d.data() + movestart, msize * sizeof(QChar));
- resize(d.size - nIndices*(blen-alen));
- } else {
- // replace from back
- qsizetype adjust = nIndices*(alen-blen);
- qsizetype newLen = d.size + adjust;
- qsizetype moveend = d.size;
- resize(newLen);
-
- while (nIndices) {
- --nIndices;
- qsizetype movestart = indices[nIndices] + blen;
- qsizetype insertstart = indices[nIndices] + nIndices*(alen-blen);
- qsizetype moveto = insertstart + alen;
- memmove(d.data() + moveto, d.data() + movestart,
- (moveend - movestart)*sizeof(QChar));
- memcpy(d.data() + insertstart, after, alen * sizeof(QChar));
- moveend = movestart-blen;
- }
- }
- } QT_CATCH(const std::bad_alloc &) {
- ::free(afterBuffer);
- QT_RETHROW;
- }
- ::free(afterBuffer);
-}
-
/*!
\since 4.5
\overload replace()
@@ -3538,8 +3856,7 @@ void QString::replace_helper(size_t *indices, qsizetype nIndices, qsizetype blen
characters of \a before with the first \a alen characters of \a
after and returns a reference to this string.
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
*/
QString &QString::replace(const QChar *before, qsizetype blen,
const QChar *after, qsizetype alen,
@@ -3554,51 +3871,25 @@ QString &QString::replace(const QChar *before, qsizetype blen,
}
if (alen == 0 && blen == 0)
return *this;
+ if (alen == 1 && blen == 1)
+ return replace(*before, *after, cs);
QStringMatcher matcher(before, blen, cs);
- QChar *beforeBuffer = nullptr, *afterBuffer = nullptr;
qsizetype index = 0;
- while (1) {
- size_t indices[1024];
- size_t pos = 0;
- while (pos < 1024) {
- index = matcher.indexIn(*this, index);
- if (index == -1)
- break;
- indices[pos++] = index;
- if (blen) // Step over before:
- index += blen;
- else // Only count one instance of empty between any two characters:
- index++;
- }
- if (!pos) // Nothing to replace
- break;
- if (Q_UNLIKELY(index != -1)) {
- /*
- We're about to change data, that before and after might point
- into, and we'll need that data for our next batch of indices.
- */
- if (!afterBuffer && pointsIntoRange(after, d.data(), d.size))
- after = afterBuffer = textCopy(after, alen);
-
- if (!beforeBuffer && pointsIntoRange(before, d.data(), d.size)) {
- beforeBuffer = textCopy(before, blen);
- matcher = QStringMatcher(beforeBuffer, blen, cs);
- }
- }
-
- replace_helper(indices, pos, blen, after, alen);
-
- if (Q_LIKELY(index == -1)) // Nothing left to replace
- break;
- // The call to replace_helper just moved what index points at:
- index += pos*(alen-blen);
+ QVarLengthArray<size_t> indices;
+ while ((index = matcher.indexIn(*this, index)) != -1) {
+ indices.push_back(index);
+ if (blen) // Step over before:
+ index += blen;
+ else // Only count one instance of empty between any two characters:
+ index++;
}
- ::free(afterBuffer);
- ::free(beforeBuffer);
+ if (indices.isEmpty())
+ return *this;
+ replace_helper(*this, indices, blen, QStringView{after, alen});
return *this;
}
@@ -3607,8 +3898,7 @@ QString &QString::replace(const QChar *before, qsizetype blen,
Replaces every occurrence of the character \a ch in the string with
\a after and returns a reference to this string.
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
*/
QString& QString::replace(QChar ch, const QString &after, Qt::CaseSensitivity cs)
{
@@ -3621,35 +3911,27 @@ QString& QString::replace(QChar ch, const QString &after, Qt::CaseSensitivity cs
if (size() == 0)
return *this;
- char16_t cc = (cs == Qt::CaseSensitive ? ch.unicode() : ch.toCaseFolded().unicode());
+ const char16_t cc = (cs == Qt::CaseSensitive ? ch.unicode() : ch.toCaseFolded().unicode());
- qsizetype index = 0;
- while (1) {
- size_t indices[1024];
- size_t pos = 0;
- if (cs == Qt::CaseSensitive) {
- while (pos < 1024 && index < size()) {
- if (d.data()[index] == cc)
- indices[pos++] = index;
- index++;
- }
- } else {
- while (pos < 1024 && index < size()) {
- if (QChar::toCaseFolded(d.data()[index]) == cc)
- indices[pos++] = index;
- index++;
- }
+ QVarLengthArray<size_t> indices;
+ if (cs == Qt::CaseSensitive) {
+ const char16_t *begin = d.begin();
+ const char16_t *end = d.end();
+ QStringView view(begin, end);
+ const char16_t *hit = nullptr;
+ while ((hit = QtPrivate::qustrchr(view, cc)) != end) {
+ indices.push_back(std::distance(begin, hit));
+ view = QStringView(std::next(hit), end);
}
- if (!pos) // Nothing to replace
- break;
-
- replace_helper(indices, pos, 1, after.constData(), after.size());
-
- if (Q_LIKELY(index == size())) // Nothing left to replace
- break;
- // The call to replace_helper just moved what index points at:
- index += pos*(after.size() - 1);
+ } else {
+ for (qsizetype i = 0; i < d.size; ++i)
+ if (QChar::toCaseFolded(d.data()[i]) == cc)
+ indices.push_back(i);
}
+ if (indices.isEmpty())
+ return *this;
+
+ replace_helper(*this, indices, 1, after);
return *this;
}
@@ -3658,34 +3940,43 @@ QString& QString::replace(QChar ch, const QString &after, Qt::CaseSensitivity cs
Replaces every occurrence of the character \a before with the
character \a after and returns a reference to this string.
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
*/
QString& QString::replace(QChar before, QChar after, Qt::CaseSensitivity cs)
{
- if (d.size) {
- const qsizetype idx = indexOf(before, 0, cs);
- if (idx != -1) {
- detach();
- const char16_t a = after.unicode();
- char16_t *i = d.data();
- char16_t *const e = i + d.size;
- i += idx;
- *i = a;
- if (cs == Qt::CaseSensitive) {
- const char16_t b = before.unicode();
- while (++i != e) {
- if (*i == b)
- *i = a;
- }
- } else {
- const char16_t b = foldCase(before.unicode());
- while (++i != e) {
- if (foldCase(*i) == b)
- *i = a;
- }
- }
+ const qsizetype idx = indexOf(before, 0, cs);
+ if (idx == -1)
+ return *this;
+
+ const char16_t achar = after.unicode();
+ char16_t bchar = before.unicode();
+
+ auto matchesCIS = [](char16_t beforeChar) {
+ return [beforeChar](char16_t ch) { return foldAndCompare(ch, beforeChar); };
+ };
+
+ auto hit = d.begin() + idx;
+ if (!d.needsDetach()) {
+ *hit++ = achar;
+ if (cs == Qt::CaseSensitive) {
+ std::replace(hit, d.end(), bchar, achar);
+ } else {
+ bchar = foldCase(bchar);
+ std::replace_if(hit, d.end(), matchesCIS(bchar), achar);
+ }
+ } else {
+ QString other{ d.size, Qt::Uninitialized };
+ auto dest = std::copy(d.begin(), hit, other.d.begin());
+ *dest++ = achar;
+ ++hit;
+ if (cs == Qt::CaseSensitive) {
+ std::replace_copy(hit, d.end(), dest, bchar, achar);
+ } else {
+ bchar = foldCase(bchar);
+ std::replace_copy_if(hit, d.end(), dest, matchesCIS(bchar), achar);
}
+
+ swap(other);
}
return *this;
}
@@ -3694,22 +3985,23 @@ QString& QString::replace(QChar before, QChar after, Qt::CaseSensitivity cs)
\since 4.5
\overload replace()
- Replaces every occurrence of the string \a before with the string \a
- after and returns a reference to this string.
+ Replaces every occurrence in this string of the Latin-1 string viewed
+ by \a before with the Latin-1 string viewed by \a after, and returns a
+ reference to this string.
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
\note The text is not rescanned after a replacement.
*/
-QString &QString::replace(QLatin1String before, QLatin1String after, Qt::CaseSensitivity cs)
+QString &QString::replace(QLatin1StringView before, QLatin1StringView after, Qt::CaseSensitivity cs)
{
- qsizetype alen = after.size();
- qsizetype blen = before.size();
- QVarLengthArray<char16_t> a(alen);
- QVarLengthArray<char16_t> b(blen);
- qt_from_latin1(a.data(), after.latin1(), alen);
- qt_from_latin1(b.data(), before.latin1(), blen);
+ const qsizetype alen = after.size();
+ const qsizetype blen = before.size();
+ if (blen == 1 && alen == 1)
+ return replace(before.front(), after.front(), cs);
+
+ QVarLengthArray<char16_t> a = qt_from_latin1_to_qvla(after);
+ QVarLengthArray<char16_t> b = qt_from_latin1_to_qvla(before);
return replace((const QChar *)b.data(), blen, (const QChar *)a.data(), alen, cs);
}
@@ -3717,19 +4009,21 @@ QString &QString::replace(QLatin1String before, QLatin1String after, Qt::CaseSen
\since 4.5
\overload replace()
- Replaces every occurrence of the string \a before with the string \a
- after and returns a reference to this string.
+ Replaces every occurrence in this string of the Latin-1 string viewed
+ by \a before with the string \a after, and returns a reference to this
+ string.
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
\note The text is not rescanned after a replacement.
*/
-QString &QString::replace(QLatin1String before, const QString &after, Qt::CaseSensitivity cs)
+QString &QString::replace(QLatin1StringView before, const QString &after, Qt::CaseSensitivity cs)
{
- qsizetype blen = before.size();
- QVarLengthArray<char16_t> b(blen);
- qt_from_latin1(b.data(), before.latin1(), blen);
+ const qsizetype blen = before.size();
+ if (blen == 1 && after.size() == 1)
+ return replace(before.front(), after.front(), cs);
+
+ QVarLengthArray<char16_t> b = qt_from_latin1_to_qvla(before);
return replace((const QChar *)b.data(), blen, after.constData(), after.d.size, cs);
}
@@ -3740,16 +4034,17 @@ QString &QString::replace(QLatin1String before, const QString &after, Qt::CaseSe
Replaces every occurrence of the string \a before with the string \a
after and returns a reference to this string.
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
\note The text is not rescanned after a replacement.
*/
-QString &QString::replace(const QString &before, QLatin1String after, Qt::CaseSensitivity cs)
+QString &QString::replace(const QString &before, QLatin1StringView after, Qt::CaseSensitivity cs)
{
- qsizetype alen = after.size();
- QVarLengthArray<char16_t> a(alen);
- qt_from_latin1(a.data(), after.latin1(), alen);
+ const qsizetype alen = after.size();
+ if (before.size() == 1 && alen == 1)
+ return replace(before.front(), after.front(), cs);
+
+ QVarLengthArray<char16_t> a = qt_from_latin1_to_qvla(after);
return replace(before.constData(), before.d.size, (const QChar *)a.data(), alen, cs);
}
@@ -3760,70 +4055,70 @@ QString &QString::replace(const QString &before, QLatin1String after, Qt::CaseSe
Replaces every occurrence of the character \a c with the string \a
after and returns a reference to this string.
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
\note The text is not rescanned after a replacement.
*/
-QString &QString::replace(QChar c, QLatin1String after, Qt::CaseSensitivity cs)
+QString &QString::replace(QChar c, QLatin1StringView after, Qt::CaseSensitivity cs)
{
- qsizetype alen = after.size();
- QVarLengthArray<char16_t> a(alen);
- qt_from_latin1(a.data(), after.latin1(), alen);
+ const qsizetype alen = after.size();
+ if (alen == 1)
+ return replace(c, after.front(), cs);
+
+ QVarLengthArray<char16_t> a = qt_from_latin1_to_qvla(after);
return replace(&c, 1, (const QChar *)a.data(), alen, cs);
}
-
/*!
- \fn bool QString::operator==(const QString &s1, const QString &s2)
+ \fn bool QString::operator==(const QString &lhs, const QString &rhs)
\overload operator==()
- Returns \c true if string \a s1 is equal to string \a s2; otherwise
+ Returns \c true if string \a lhs is equal to string \a rhs; otherwise
returns \c false.
+ \include qstring.cpp compare-isNull-vs-isEmpty
+
\sa {Comparing Strings}
*/
/*!
- \fn bool QString::operator==(const QString &s1, QLatin1String s2)
+ \fn bool QString::operator==(const QString &lhs, const QLatin1StringView &rhs)
\overload operator==()
- Returns \c true if \a s1 is equal to \a s2; otherwise
+ Returns \c true if \a lhs is equal to \a rhs; otherwise
returns \c false.
*/
/*!
- \fn bool QString::operator==(QLatin1String s1, const QString &s2)
+ \fn bool QString::operator==(const QLatin1StringView &lhs, const QString &rhs)
\overload operator==()
- Returns \c true if \a s1 is equal to \a s2; otherwise
+ Returns \c true if \a lhs is equal to \a rhs; otherwise
returns \c false.
*/
-/*! \fn bool QString::operator==(const QByteArray &other) const
+/*! \fn bool QString::operator==(const QString &lhs, const QByteArray &rhs)
\overload operator==()
- The \a other byte array is converted to a QString using the
- fromUtf8() function.
+ The \a rhs byte array is converted to a QUtf8StringView.
You can disable this operator by defining
\l QT_NO_CAST_FROM_ASCII when you compile your applications. This
can be useful if you want to ensure that all user-visible strings
go through QObject::tr(), for example.
- Returns \c true if this string is lexically equal to the parameter
- string \a other. Otherwise returns \c false.
+ Returns \c true if string \a lhs is lexically equal to \a rhs.
+ Otherwise returns \c false.
*/
-/*! \fn bool QString::operator==(const char *other) const
+/*! \fn bool QString::operator==(const QString &lhs, const char * const &rhs)
\overload operator==()
- The \a other const char pointer is converted to a QString using
- the fromUtf8() function.
+ The \a rhs const char pointer is converted to a QUtf8StringView.
You can disable this operator by defining
\l QT_NO_CAST_FROM_ASCII when you compile your applications. This
@@ -3832,41 +4127,41 @@ QString &QString::replace(QChar c, QLatin1String after, Qt::CaseSensitivity cs)
*/
/*!
- \fn bool QString::operator<(const QString &s1, const QString &s2)
+ \fn bool QString::operator<(const QString &lhs, const QString &rhs)
\overload operator<()
- Returns \c true if string \a s1 is lexically less than string
- \a s2; otherwise returns \c false.
+ Returns \c true if string \a lhs is lexically less than string
+ \a rhs; otherwise returns \c false.
\sa {Comparing Strings}
*/
/*!
- \fn bool QString::operator<(const QString &s1, QLatin1String s2)
+ \fn bool QString::operator<(const QString &lhs, const QLatin1StringView &rhs)
\overload operator<()
- Returns \c true if \a s1 is lexically less than \a s2;
+ Returns \c true if \a lhs is lexically less than \a rhs;
otherwise returns \c false.
*/
/*!
- \fn bool QString::operator<(QLatin1String s1, const QString &s2)
+ \fn bool QString::operator<(const QLatin1StringView &lhs, const QString &rhs)
\overload operator<()
- Returns \c true if \a s1 is lexically less than \a s2;
+ Returns \c true if \a lhs is lexically less than \a rhs;
otherwise returns \c false.
*/
-/*! \fn bool QString::operator<(const QByteArray &other) const
+/*! \fn bool QString::operator<(const QString &lhs, const QByteArray &rhs)
\overload operator<()
- The \a other byte array is converted to a QString using the
- fromUtf8() function. If any NUL characters ('\\0') are embedded
- in the byte array, they will be included in the transformation.
+ The \a rhs byte array is converted to a QUtf8StringView.
+ If any NUL characters ('\\0') are embedded in the byte array, they will be
+ included in the transformation.
You can disable this operator
\l QT_NO_CAST_FROM_ASCII when you compile your applications. This
@@ -3874,15 +4169,14 @@ QString &QString::replace(QChar c, QLatin1String after, Qt::CaseSensitivity cs)
go through QObject::tr(), for example.
*/
-/*! \fn bool QString::operator<(const char *other) const
+/*! \fn bool QString::operator<(const QString &lhs, const char * const &rhs)
- Returns \c true if this string is lexically less than string \a other.
+ Returns \c true if string \a lhs is lexically less than string \a rhs.
Otherwise returns \c false.
\overload operator<()
- The \a other const char pointer is converted to a QString using
- the fromUtf8() function.
+ The \a rhs const char pointer is converted to a QUtf8StringView.
You can disable this operator by defining
\l QT_NO_CAST_FROM_ASCII when you compile your applications. This
@@ -3890,39 +4184,39 @@ QString &QString::replace(QChar c, QLatin1String after, Qt::CaseSensitivity cs)
go through QObject::tr(), for example.
*/
-/*! \fn bool QString::operator<=(const QString &s1, const QString &s2)
+/*! \fn bool QString::operator<=(const QString &lhs, const QString &rhs)
- Returns \c true if string \a s1 is lexically less than or equal to
- string \a s2; otherwise returns \c false.
+ Returns \c true if string \a lhs is lexically less than or equal to
+ string \a rhs; otherwise returns \c false.
\sa {Comparing Strings}
*/
/*!
- \fn bool QString::operator<=(const QString &s1, QLatin1String s2)
+ \fn bool QString::operator<=(const QString &lhs, const QLatin1StringView &rhs)
\overload operator<=()
- Returns \c true if \a s1 is lexically less than or equal to \a s2;
+ Returns \c true if \a lhs is lexically less than or equal to \a rhs;
otherwise returns \c false.
*/
/*!
- \fn bool QString::operator<=(QLatin1String s1, const QString &s2)
+ \fn bool QString::operator<=(const QLatin1StringView &lhs, const QString &rhs)
\overload operator<=()
- Returns \c true if \a s1 is lexically less than or equal to \a s2;
+ Returns \c true if \a lhs is lexically less than or equal to \a rhs;
otherwise returns \c false.
*/
-/*! \fn bool QString::operator<=(const QByteArray &other) const
+/*! \fn bool QString::operator<=(const QString &lhs, const QByteArray &rhs)
\overload operator<=()
- The \a other byte array is converted to a QString using the
- fromUtf8() function. If any NUL characters ('\\0') are embedded
- in the byte array, they will be included in the transformation.
+ The \a rhs byte array is converted to a QUtf8StringView.
+ If any NUL characters ('\\0') are embedded in the byte array, they will be
+ included in the transformation.
You can disable this operator by defining
\l QT_NO_CAST_FROM_ASCII when you compile your applications. This
@@ -3930,12 +4224,11 @@ QString &QString::replace(QChar c, QLatin1String after, Qt::CaseSensitivity cs)
go through QObject::tr(), for example.
*/
-/*! \fn bool QString::operator<=(const char *other) const
+/*! \fn bool QString::operator<=(const QString &lhs, const char * const &rhs)
\overload operator<=()
- The \a other const char pointer is converted to a QString using
- the fromUtf8() function.
+ The \a rhs const char pointer is converted to a QUtf8StringView.
You can disable this operator by defining
\l QT_NO_CAST_FROM_ASCII when you compile your applications. This
@@ -3943,39 +4236,39 @@ QString &QString::replace(QChar c, QLatin1String after, Qt::CaseSensitivity cs)
go through QObject::tr(), for example.
*/
-/*! \fn bool QString::operator>(const QString &s1, const QString &s2)
+/*! \fn bool QString::operator>(const QString &lhs, const QString &rhs)
- Returns \c true if string \a s1 is lexically greater than string \a s2;
+ Returns \c true if string \a lhs is lexically greater than string \a rhs;
otherwise returns \c false.
\sa {Comparing Strings}
*/
/*!
- \fn bool QString::operator>(const QString &s1, QLatin1String s2)
+ \fn bool QString::operator>(const QString &lhs, const QLatin1StringView &rhs)
\overload operator>()
- Returns \c true if \a s1 is lexically greater than \a s2;
+ Returns \c true if \a lhs is lexically greater than \a rhs;
otherwise returns \c false.
*/
/*!
- \fn bool QString::operator>(QLatin1String s1, const QString &s2)
+ \fn bool QString::operator>(const QLatin1StringView &lhs, const QString &rhs)
\overload operator>()
- Returns \c true if \a s1 is lexically greater than \a s2;
+ Returns \c true if \a lhs is lexically greater than \a rhs;
otherwise returns \c false.
*/
-/*! \fn bool QString::operator>(const QByteArray &other) const
+/*! \fn bool QString::operator>(const QString &lhs, const QByteArray &rhs)
\overload operator>()
- The \a other byte array is converted to a QString using the
- fromUtf8() function. If any NUL characters ('\\0') are embedded
- in the byte array, they will be included in the transformation.
+ The \a rhs byte array is converted to a QUtf8StringView.
+ If any NUL characters ('\\0') are embedded in the byte array, they will be
+ included in the transformation.
You can disable this operator by defining
\l QT_NO_CAST_FROM_ASCII when you compile your applications. This
@@ -3983,12 +4276,11 @@ QString &QString::replace(QChar c, QLatin1String after, Qt::CaseSensitivity cs)
go through QObject::tr(), for example.
*/
-/*! \fn bool QString::operator>(const char *other) const
+/*! \fn bool QString::operator>(const QString &lhs, const char * const &rhs)
\overload operator>()
- The \a other const char pointer is converted to a QString using
- the fromUtf8() function.
+ The \a rhs const char pointer is converted to a QUtf8StringView.
You can disable this operator by defining \l QT_NO_CAST_FROM_ASCII
when you compile your applications. This can be useful if you want
@@ -3996,39 +4288,39 @@ QString &QString::replace(QChar c, QLatin1String after, Qt::CaseSensitivity cs)
for example.
*/
-/*! \fn bool QString::operator>=(const QString &s1, const QString &s2)
+/*! \fn bool QString::operator>=(const QString &lhs, const QString &rhs)
- Returns \c true if string \a s1 is lexically greater than or equal to
- string \a s2; otherwise returns \c false.
+ Returns \c true if string \a lhs is lexically greater than or equal to
+ string \a rhs; otherwise returns \c false.
\sa {Comparing Strings}
*/
/*!
- \fn bool QString::operator>=(const QString &s1, QLatin1String s2)
+ \fn bool QString::operator>=(const QString &lhs, const QLatin1StringView &rhs)
\overload operator>=()
- Returns \c true if \a s1 is lexically greater than or equal to \a s2;
+ Returns \c true if \a lhs is lexically greater than or equal to \a rhs;
otherwise returns \c false.
*/
/*!
- \fn bool QString::operator>=(QLatin1String s1, const QString &s2)
+ \fn bool QString::operator>=(const QLatin1StringView &lhs, const QString &rhs)
\overload operator>=()
- Returns \c true if \a s1 is lexically greater than or equal to \a s2;
+ Returns \c true if \a lhs is lexically greater than or equal to \a rhs;
otherwise returns \c false.
*/
-/*! \fn bool QString::operator>=(const QByteArray &other) const
+/*! \fn bool QString::operator>=(const QString &lhs, const QByteArray &rhs)
\overload operator>=()
- The \a other byte array is converted to a QString using the
- fromUtf8() function. If any NUL characters ('\\0') are embedded in
- the byte array, they will be included in the transformation.
+ The \a rhs byte array is converted to a QUtf8StringView.
+ If any NUL characters ('\\0') are embedded in the byte array, they will be
+ included in the transformation.
You can disable this operator by defining \l QT_NO_CAST_FROM_ASCII
when you compile your applications. This can be useful if you want
@@ -4036,12 +4328,11 @@ QString &QString::replace(QChar c, QLatin1String after, Qt::CaseSensitivity cs)
for example.
*/
-/*! \fn bool QString::operator>=(const char *other) const
+/*! \fn bool QString::operator>=(const QString &lhs, const char * const &rhs)
\overload operator>=()
- The \a other const char pointer is converted to a QString using
- the fromUtf8() function.
+ The \a rhs const char pointer is converted to a QUtf8StringView.
You can disable this operator by defining \l QT_NO_CAST_FROM_ASCII
when you compile your applications. This can be useful if you want
@@ -4049,29 +4340,29 @@ QString &QString::replace(QChar c, QLatin1String after, Qt::CaseSensitivity cs)
for example.
*/
-/*! \fn bool QString::operator!=(const QString &s1, const QString &s2)
+/*! \fn bool QString::operator!=(const QString &lhs, const QString &rhs)
- Returns \c true if string \a s1 is not equal to string \a s2;
+ Returns \c true if string \a lhs is not equal to string \a rhs;
otherwise returns \c false.
\sa {Comparing Strings}
*/
-/*! \fn bool QString::operator!=(const QString &s1, QLatin1String s2)
+/*! \fn bool QString::operator!=(const QString &lhs, const QLatin1StringView &rhs)
- Returns \c true if string \a s1 is not equal to string \a s2.
+ Returns \c true if string \a lhs is not equal to string \a rhs.
Otherwise returns \c false.
\overload operator!=()
*/
-/*! \fn bool QString::operator!=(const QByteArray &other) const
+/*! \fn bool QString::operator!=(const QString &lhs, const QByteArray &rhs)
\overload operator!=()
- The \a other byte array is converted to a QString using the
- fromUtf8() function. If any NUL characters ('\\0') are embedded
- in the byte array, they will be included in the transformation.
+ The \a rhs byte array is converted to a QUtf8StringView.
+ If any NUL characters ('\\0') are embedded in the byte array, they will be
+ included in the transformation.
You can disable this operator by defining \l QT_NO_CAST_FROM_ASCII
when you compile your applications. This can be useful if you want
@@ -4079,12 +4370,11 @@ QString &QString::replace(QChar c, QLatin1String after, Qt::CaseSensitivity cs)
for example.
*/
-/*! \fn bool QString::operator!=(const char *other) const
+/*! \fn bool QString::operator!=(const QString &lhs, const char * const &rhs)
\overload operator!=()
- The \a other const char pointer is converted to a QString using
- the fromUtf8() function.
+ The \a rhs const char pointer is converted to a QUtf8StringView.
You can disable this operator by defining
\l QT_NO_CAST_FROM_ASCII when you compile your applications. This
@@ -4092,94 +4382,158 @@ QString &QString::replace(QChar c, QLatin1String after, Qt::CaseSensitivity cs)
go through QObject::tr(), for example.
*/
-#if QT_STRINGVIEW_LEVEL < 2
+/*! \fn bool QString::operator==(const QByteArray &lhs, const QString &rhs)
+
+ Returns \c true if byte array \a lhs is equal to the UTF-8 encoding of
+ \a rhs; otherwise returns \c false.
+
+ The comparison is case sensitive.
+
+ You can disable this operator by defining \c
+ QT_NO_CAST_FROM_ASCII when you compile your applications. You
+ then need to call QString::fromUtf8(), QString::fromLatin1(),
+ or QString::fromLocal8Bit() explicitly if you want to convert the byte
+ array to a QString before doing the comparison.
+*/
+
+/*! \fn bool QString::operator!=(const QByteArray &lhs, const QString &rhs)
+
+ Returns \c true if byte array \a lhs is not equal to the UTF-8 encoding of
+ \a rhs; otherwise returns \c false.
+
+ The comparison is case sensitive.
+
+ You can disable this operator by defining \c
+ QT_NO_CAST_FROM_ASCII when you compile your applications. You
+ then need to call QString::fromUtf8(), QString::fromLatin1(),
+ or QString::fromLocal8Bit() explicitly if you want to convert the byte
+ array to a QString before doing the comparison.
+*/
+
+/*! \fn bool QString::operator<(const QByteArray &lhs, const QString &rhs)
+
+ Returns \c true if byte array \a lhs is lexically less than the UTF-8 encoding
+ of \a rhs; otherwise returns \c false.
+
+ The comparison is case sensitive.
+
+ You can disable this operator by defining \c
+ QT_NO_CAST_FROM_ASCII when you compile your applications. You
+ then need to call QString::fromUtf8(), QString::fromLatin1(),
+ or QString::fromLocal8Bit() explicitly if you want to convert the byte
+ array to a QString before doing the comparison.
+*/
+
+/*! \fn bool QString::operator>(const QByteArray &lhs, const QString &rhs)
+
+ Returns \c true if byte array \a lhs is lexically greater than the UTF-8
+ encoding of \a rhs; otherwise returns \c false.
+
+ The comparison is case sensitive.
+
+ You can disable this operator by defining \c
+ QT_NO_CAST_FROM_ASCII when you compile your applications. You
+ then need to call QString::fromUtf8(), QString::fromLatin1(),
+ or QString::fromLocal8Bit() explicitly if you want to convert the byte
+ array to a QString before doing the comparison.
+*/
+
+/*! \fn bool QString::operator<=(const QByteArray &lhs, const QString &rhs)
+
+ Returns \c true if byte array \a lhs is lexically less than or equal to the
+ UTF-8 encoding of \a rhs; otherwise returns \c false.
+
+ The comparison is case sensitive.
+
+ You can disable this operator by defining \c
+ QT_NO_CAST_FROM_ASCII when you compile your applications. You
+ then need to call QString::fromUtf8(), QString::fromLatin1(),
+ or QString::fromLocal8Bit() explicitly if you want to convert the byte
+ array to a QString before doing the comparison.
+*/
+
+/*! \fn bool QString::operator>=(const QByteArray &lhs, const QString &rhs)
+
+ Returns \c true if byte array \a lhs is greater than or equal to the UTF-8
+ encoding of \a rhs; otherwise returns \c false.
+
+ The comparison is case sensitive.
+
+ You can disable this operator by defining \c
+ QT_NO_CAST_FROM_ASCII when you compile your applications. You
+ then need to call QString::fromUtf8(), QString::fromLatin1(),
+ or QString::fromLocal8Bit() explicitly if you want to convert the byte
+ array to a QString before doing the comparison.
+*/
+
/*!
- Returns the index position of the first occurrence of the string \a
- str in this string, searching forward from index position \a
- from. Returns -1 if \a str is not found.
+ \include qstring.qdocinc {qstring-first-index-of} {string} {str}
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
Example:
\snippet qstring/main.cpp 24
- If \a from is -1, the search starts at the last character; if it is
- -2, at the next to last character and so on.
+ \include qstring.qdocinc negative-index-start-search-from-end
\sa lastIndexOf(), contains(), count()
*/
qsizetype QString::indexOf(const QString &str, qsizetype from, Qt::CaseSensitivity cs) const
{
- return QtPrivate::findString(QStringView(unicode(), length()), from, QStringView(str.unicode(), str.length()), cs);
+ return QtPrivate::findString(QStringView(unicode(), size()), from, QStringView(str.unicode(), str.size()), cs);
}
-#endif // QT_STRINGVIEW_LEVEL < 2
/*!
\fn qsizetype QString::indexOf(QStringView str, qsizetype from, Qt::CaseSensitivity cs) const
\since 5.14
\overload indexOf()
- Returns the index position of the first occurrence of the string view \a str
- in this string, searching forward from index position \a from.
- Returns -1 if \a str is not found.
+ \include qstring.qdocinc {qstring-first-index-of} {string view} {str}
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
- If \a from is -1, the search starts at the last character; if it is
- -2, at the next to last character and so on.
+ \include qstring.qdocinc negative-index-start-search-from-end
\sa QStringView::indexOf(), lastIndexOf(), contains(), count()
*/
/*!
\since 4.5
- Returns the index position of the first occurrence of the string \a
- str in this string, searching forward from index position \a
- from. Returns -1 if \a str is not found.
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
+ \include {qstring.qdocinc} {qstring-first-index-of} {Latin-1 string viewed by} {str}
+
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
Example:
\snippet qstring/main.cpp 24
- If \a from is -1, the search starts at the last character; if it is
- -2, at the next to last character and so on.
+ \include qstring.qdocinc negative-index-start-search-from-end
\sa lastIndexOf(), contains(), count()
*/
-qsizetype QString::indexOf(QLatin1String str, qsizetype from, Qt::CaseSensitivity cs) const
+qsizetype QString::indexOf(QLatin1StringView str, qsizetype from, Qt::CaseSensitivity cs) const
{
return QtPrivate::findString(QStringView(unicode(), size()), from, str, cs);
}
/*!
+ \fn qsizetype QString::indexOf(QChar ch, qsizetype from, Qt::CaseSensitivity cs) const
\overload indexOf()
- Returns the index position of the first occurrence of the
- character \a ch in the string, searching forward from index
- position \a from. Returns -1 if \a ch could not be found.
+ \include qstring.qdocinc {qstring-first-index-of} {character} {ch}
*/
-qsizetype QString::indexOf(QChar ch, qsizetype from, Qt::CaseSensitivity cs) const
-{
- return qFindChar(QStringView(unicode(), length()), ch, from, cs);
-}
-#if QT_STRINGVIEW_LEVEL < 2
/*!
- Returns the index position of the last occurrence of the string \a
- str in this string, searching backward from index position \a
- from. If \a from is -1, the search starts at the last
- character; if \a from is -2, at the next to last character and so
- on. Returns -1 if \a str is not found.
+ \include qstring.qdocinc {qstring-last-index-of} {string} {str}
+
+ \include qstring.qdocinc negative-index-start-search-from-end
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
+ Returns -1 if \a str is not found.
+
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
Example:
@@ -4207,8 +4561,7 @@ qsizetype QString::lastIndexOf(const QString &str, qsizetype from, Qt::CaseSensi
Returns the index position of the last occurrence of the string \a
str in this string. Returns -1 if \a str is not found.
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
Example:
@@ -4217,20 +4570,18 @@ qsizetype QString::lastIndexOf(const QString &str, qsizetype from, Qt::CaseSensi
\sa indexOf(), contains(), count()
*/
-#endif // QT_STRINGVIEW_LEVEL < 2
/*!
\since 4.5
\overload lastIndexOf()
- Returns the index position of the last occurrence of the string \a
- str in this string, searching backward from index position \a
- from. If \a from is -1, the search starts at the last
- character; if \a from is -2, at the next to last character and so
- on. Returns -1 if \a str is not found.
+ \include qstring.qdocinc {qstring-last-index-of} {Latin-1 string viewed by} {str}
+
+ \include qstring.qdocinc negative-index-start-search-from-end
+
+ Returns -1 if \a str is not found.
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
Example:
@@ -4245,21 +4596,20 @@ qsizetype QString::lastIndexOf(const QString &str, qsizetype from, Qt::CaseSensi
\sa indexOf(), contains(), count()
*/
-qsizetype QString::lastIndexOf(QLatin1String str, qsizetype from, Qt::CaseSensitivity cs) const
+qsizetype QString::lastIndexOf(QLatin1StringView str, qsizetype from, Qt::CaseSensitivity cs) const
{
return QtPrivate::lastIndexOf(*this, from, str, cs);
}
/*!
- \fn qsizetype QString::lastIndexOf(QLatin1String str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
+ \fn qsizetype QString::lastIndexOf(QLatin1StringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
\since 6.2
\overload lastIndexOf()
Returns the index position of the last occurrence of the string \a
str in this string. Returns -1 if \a str is not found.
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
Example:
@@ -4269,15 +4619,11 @@ qsizetype QString::lastIndexOf(QLatin1String str, qsizetype from, Qt::CaseSensit
*/
/*!
+ \fn qsizetype QString::lastIndexOf(QChar ch, qsizetype from, Qt::CaseSensitivity cs) const
\overload lastIndexOf()
- Returns the index position of the last occurrence of the character
- \a ch, searching backward from position \a from.
+ \include qstring.qdocinc {qstring-last-index-of} {character} {ch}
*/
-qsizetype QString::lastIndexOf(QChar ch, qsizetype from, Qt::CaseSensitivity cs) const
-{
- return qLastIndexOf(QStringView(*this), ch, from, cs);
-}
/*!
\fn QString::lastIndexOf(QChar ch, Qt::CaseSensitivity) const
@@ -4290,14 +4636,13 @@ qsizetype QString::lastIndexOf(QChar ch, qsizetype from, Qt::CaseSensitivity cs)
\since 5.14
\overload lastIndexOf()
- Returns the index position of the last occurrence of the string view \a
- str in this string, searching backward from index position \a
- from. If \a from is -1, the search starts at the last
- character; if \a from is -2, at the next to last character and so
- on. Returns -1 if \a str is not found.
+ \include qstring.qdocinc {qstring-last-index-of} {string view} {str}
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc negative-index-start-search-from-end
+
+ Returns -1 if \a str is not found.
+
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
\note When searching for a 0-length \a str, the match at the end of
the data is excluded from the search by a negative \a from, even
@@ -4317,8 +4662,7 @@ qsizetype QString::lastIndexOf(QChar ch, qsizetype from, Qt::CaseSensitivity cs)
Returns the index position of the last occurrence of the string view \a
str in this string. Returns -1 if \a str is not found.
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
\sa indexOf(), contains(), count()
*/
@@ -4353,7 +4697,7 @@ Q_DECLARE_TYPEINFO(QStringCapture, Q_PRIMITIVE_TYPE);
QString &QString::replace(const QRegularExpression &re, const QString &after)
{
if (!re.isValid()) {
- qWarning("QString::replace: invalid QRegularExpression object");
+ qtWarnAboutInvalidRegularExpression(re.pattern(), "QString::replace");
return *this;
}
@@ -4368,12 +4712,12 @@ QString &QString::replace(const QRegularExpression &re, const QString &after)
// 1. build the backreferences list, holding where the backreferences
// are in the replacement string
- QList<QStringCapture> backReferences;
- const qsizetype al = after.length();
+ QVarLengthArray<QStringCapture> backReferences;
+ const qsizetype al = after.size();
const QChar *ac = after.unicode();
for (qsizetype i = 0; i < al - 1; i++) {
- if (ac[i] == QLatin1Char('\\')) {
+ if (ac[i] == u'\\') {
int no = ac[i + 1].digitValue();
if (no > 0 && no <= numCaptures) {
QStringCapture backReference;
@@ -4400,7 +4744,7 @@ QString &QString::replace(const QRegularExpression &re, const QString &after)
qsizetype newLength = 0; // length of the new string, with all the replacements
qsizetype lastEnd = 0;
- QList<QStringView> chunks;
+ QVarLengthArray<QStringView> chunks;
const QStringView copyView{ copy }, afterView{ after };
while (iterator.hasNext()) {
QRegularExpressionMatch match = iterator.next();
@@ -4414,7 +4758,7 @@ QString &QString::replace(const QRegularExpression &re, const QString &after)
lastEnd = 0;
// add the after string, with replacements for the backreferences
- for (const QStringCapture &backReference : qAsConst(backReferences)) {
+ for (const QStringCapture &backReference : std::as_const(backReferences)) {
// part of "after" before the backreference
len = backReference.pos - lastEnd;
if (len > 0) {
@@ -4433,7 +4777,7 @@ QString &QString::replace(const QRegularExpression &re, const QString &after)
}
// add the last part of the after string
- len = afterView.length() - lastEnd;
+ len = afterView.size() - lastEnd;
if (len > 0) {
chunks << afterView.mid(lastEnd, len);
newLength += len;
@@ -4443,17 +4787,17 @@ QString &QString::replace(const QRegularExpression &re, const QString &after)
}
// 3. trailing string after the last match
- if (copyView.length() > lastEnd) {
+ if (copyView.size() > lastEnd) {
chunks << copyView.mid(lastEnd);
- newLength += copyView.length() - lastEnd;
+ newLength += copyView.size() - lastEnd;
}
// 4. assemble the chunks together
resize(newLength);
qsizetype i = 0;
QChar *uc = data();
- for (const QStringView &chunk : qAsConst(chunks)) {
- qsizetype len = chunk.length();
+ for (const QStringView &chunk : std::as_const(chunks)) {
+ qsizetype len = chunk.size();
memcpy(uc + i, chunk.constData(), len * sizeof(QChar));
i += len;
}
@@ -4466,8 +4810,7 @@ QString &QString::replace(const QRegularExpression &re, const QString &after)
Returns the number of (potentially overlapping) occurrences of
the string \a str in this string.
- If \a cs is Qt::CaseSensitive (default), the search is
- case sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
\sa contains(), indexOf()
*/
@@ -4482,8 +4825,7 @@ qsizetype QString::count(const QString &str, Qt::CaseSensitivity cs) const
Returns the number of occurrences of character \a ch in the string.
- If \a cs is Qt::CaseSensitive (default), the search is
- case sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
\sa contains(), indexOf()
*/
@@ -4499,8 +4841,7 @@ qsizetype QString::count(QChar ch, Qt::CaseSensitivity cs) const
Returns the number of (potentially overlapping) occurrences of the
string view \a str in this string.
- If \a cs is Qt::CaseSensitive (default), the search is
- case sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
\sa contains(), indexOf()
*/
@@ -4509,23 +4850,20 @@ qsizetype QString::count(QStringView str, Qt::CaseSensitivity cs) const
return QtPrivate::count(*this, str, cs);
}
-#if QT_STRINGVIEW_LEVEL < 2
/*! \fn bool QString::contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
Returns \c true if this string contains an occurrence of the string
\a str; otherwise returns \c false.
- If \a cs is Qt::CaseSensitive (default), the search is
- case sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
Example:
\snippet qstring/main.cpp 17
\sa indexOf(), count()
*/
-#endif // QT_STRINGVIEW_LEVEL < 2
-/*! \fn bool QString::contains(QLatin1String str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
+/*! \fn bool QString::contains(QLatin1StringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
\since 5.3
\overload contains()
@@ -4549,8 +4887,7 @@ qsizetype QString::count(QStringView str, Qt::CaseSensitivity cs) const
Returns \c true if this string contains an occurrence of the string view
\a str; otherwise returns \c false.
- If \a cs is Qt::CaseSensitive (default), the search is
- case sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
\sa indexOf(), count()
*/
@@ -4573,7 +4910,7 @@ qsizetype QString::count(QStringView str, Qt::CaseSensitivity cs) const
*/
qsizetype QString::indexOf(const QRegularExpression &re, qsizetype from, QRegularExpressionMatch *rmatch) const
{
- return QtPrivate::indexOf(QStringView(*this), re, from, rmatch);
+ return QtPrivate::indexOf(QStringView(*this), this, re, from, rmatch);
}
/*!
@@ -4581,9 +4918,11 @@ qsizetype QString::indexOf(const QRegularExpression &re, qsizetype from, QRegula
Returns the index position of the last match of the regular
expression \a re in the string, which starts before the index
- position \a from. If \a from is -1, the search starts at the last
- character; if \a from is -2, at the next to last character and so
- on. Returns -1 if \a re didn't match anywhere.
+ position \a from.
+
+ \include qstring.qdocinc negative-index-start-search-from-end
+
+ Returns -1 if \a re didn't match anywhere.
If the match is successful and \a rmatch is not \nullptr, it also
writes the results of the match into the QRegularExpressionMatch object
@@ -4607,7 +4946,7 @@ qsizetype QString::indexOf(const QRegularExpression &re, qsizetype from, QRegula
*/
qsizetype QString::lastIndexOf(const QRegularExpression &re, qsizetype from, QRegularExpressionMatch *rmatch) const
{
- return QtPrivate::lastIndexOf(QStringView(*this), re, from, rmatch);
+ return QtPrivate::lastIndexOf(QStringView(*this), this, re, from, rmatch);
}
/*!
@@ -4646,7 +4985,7 @@ qsizetype QString::lastIndexOf(const QRegularExpression &re, qsizetype from, QRe
bool QString::contains(const QRegularExpression &re, QRegularExpressionMatch *rmatch) const
{
- return QtPrivate::contains(QStringView(*this), re, rmatch);
+ return QtPrivate::contains(QStringView(*this), this, re, rmatch);
}
/*!
@@ -4673,13 +5012,14 @@ qsizetype QString::count(const QRegularExpression &re) const
}
#endif // QT_CONFIG(regularexpression)
+#if QT_DEPRECATED_SINCE(6, 4)
/*! \fn qsizetype QString::count() const
-
+ \deprecated [6.4] Use size() or length() instead.
\overload count()
Same as size().
*/
-
+#endif
/*!
\enum QString::SectionFlag
@@ -4803,7 +5143,7 @@ public:
};
Q_DECLARE_TYPEINFO(qt_section_chunk, Q_RELOCATABLE_TYPE);
-static QString extractSections(const QList<qt_section_chunk> &sections, qsizetype start, qsizetype end,
+static QString extractSections(QSpan<qt_section_chunk> sections, qsizetype start, qsizetype end,
QString::SectionFlags flags)
{
const qsizetype sectionsSize = sections.size();
@@ -4816,8 +5156,8 @@ static QString extractSections(const QList<qt_section_chunk> &sections, qsizetyp
} else {
qsizetype skip = 0;
for (qsizetype k = 0; k < sectionsSize; ++k) {
- const qt_section_chunk &section = sections.at(k);
- if (section.length == section.string.length())
+ const qt_section_chunk &section = sections[k];
+ if (section.length == section.string.size())
skip++;
}
if (start < 0)
@@ -4832,8 +5172,8 @@ static QString extractSections(const QList<qt_section_chunk> &sections, qsizetyp
qsizetype x = 0;
qsizetype first_i = start, last_i = end;
for (qsizetype i = 0; x <= end && i < sectionsSize; ++i) {
- const qt_section_chunk &section = sections.at(i);
- const bool empty = (section.length == section.string.length());
+ const qt_section_chunk &section = sections[i];
+ const bool empty = (section.length == section.string.size());
if (x >= start) {
if (x == start)
first_i = i;
@@ -4849,13 +5189,13 @@ static QString extractSections(const QList<qt_section_chunk> &sections, qsizetyp
}
if ((flags & QString::SectionIncludeLeadingSep) && first_i >= 0) {
- const qt_section_chunk &section = sections.at(first_i);
+ const qt_section_chunk &section = sections[first_i];
ret.prepend(section.string.left(section.length));
}
if ((flags & QString::SectionIncludeTrailingSep)
&& last_i < sectionsSize - 1) {
- const qt_section_chunk &section = sections.at(last_i+1);
+ const qt_section_chunk &section = sections[last_i + 1];
ret += section.string.left(section.length);
}
@@ -4879,7 +5219,7 @@ static QString extractSections(const QList<qt_section_chunk> &sections, qsizetyp
QString QString::section(const QRegularExpression &re, qsizetype start, qsizetype end, SectionFlags flags) const
{
if (!re.isValid()) {
- qWarning("QString::section: invalid QRegularExpression object");
+ qtWarnAboutInvalidRegularExpression(re.pattern(), "QString::section");
return QString();
}
@@ -4891,8 +5231,8 @@ QString QString::section(const QRegularExpression &re, qsizetype start, qsizetyp
if (flags & SectionCaseInsensitiveSeps)
sep.setPatternOptions(sep.patternOptions() | QRegularExpression::CaseInsensitiveOption);
- QList<qt_section_chunk> sections;
- qsizetype n = length(), m = 0, last_m = 0, last_len = 0;
+ QVarLengthArray<qt_section_chunk> sections;
+ qsizetype n = size(), m = 0, last_m = 0, last_len = 0;
QRegularExpressionMatchIterator iterator = sep.globalMatch(*this);
while (iterator.hasNext()) {
QRegularExpressionMatch match = iterator.next();
@@ -4908,6 +5248,9 @@ QString QString::section(const QRegularExpression &re, qsizetype start, qsizetyp
#endif // QT_CONFIG(regularexpression)
/*!
+ \fn QString QString::left(qsizetype n) const &
+ \fn QString QString::left(qsizetype n) &&
+
Returns a substring that contains the \a n leftmost characters
of the string.
@@ -4919,14 +5262,11 @@ QString QString::section(const QRegularExpression &re, qsizetype start, qsizetyp
\sa first(), last(), startsWith(), chopped(), chop(), truncate()
*/
-QString QString::left(qsizetype n) const
-{
- if (size_t(n) >= size_t(size()))
- return *this;
- return QString((const QChar*) d.data(), n);
-}
/*!
+ \fn QString QString::right(qsizetype n) const &
+ \fn QString QString::right(qsizetype n) &&
+
Returns a substring that contains the \a n rightmost characters
of the string.
@@ -4936,16 +5276,13 @@ QString QString::left(qsizetype n) const
The entire string is returned if \a n is greater than or equal
to size(), or less than zero.
- \sa endsWith(), last(), first(), sliced(), chopped(), chop(), truncate()
+ \sa endsWith(), last(), first(), sliced(), chopped(), chop(), truncate(), slice()
*/
-QString QString::right(qsizetype n) const
-{
- if (size_t(n) >= size_t(size()))
- return *this;
- return QString(constData() + size() - n, n);
-}
/*!
+ \fn QString QString::mid(qsizetype position, qsizetype n) const &
+ \fn QString QString::mid(qsizetype position, qsizetype n) &&
+
Returns a string that contains \a n characters of this string,
starting at the specified \a position index.
@@ -4958,11 +5295,9 @@ QString QString::right(qsizetype n) const
\a n is -1 (default), the function returns all characters that
are available from the specified \a position.
-
- \sa first(), last(), sliced(), chopped(), chop(), truncate()
+ \sa first(), last(), sliced(), chopped(), chop(), truncate(), slice()
*/
-
-QString QString::mid(qsizetype position, qsizetype n) const
+QString QString::mid(qsizetype position, qsizetype n) const &
{
qsizetype p = position;
qsizetype l = n;
@@ -4975,14 +5310,33 @@ QString QString::mid(qsizetype position, qsizetype n) const
case QContainerImplHelper::Full:
return *this;
case QContainerImplHelper::Subset:
- return QString(constData() + p, l);
+ return sliced(p, l);
+ }
+ Q_UNREACHABLE_RETURN(QString());
+}
+
+QString QString::mid(qsizetype position, qsizetype n) &&
+{
+ qsizetype p = position;
+ qsizetype l = n;
+ using namespace QtPrivate;
+ switch (QContainerImplHelper::mid(size(), &p, &l)) {
+ case QContainerImplHelper::Null:
+ return QString();
+ case QContainerImplHelper::Empty:
+ resize(0); // keep capacity if we've reserve()d
+ [[fallthrough]];
+ case QContainerImplHelper::Full:
+ return std::move(*this);
+ case QContainerImplHelper::Subset:
+ return std::move(*this).sliced(p, l);
}
- Q_UNREACHABLE();
- return QString();
+ Q_UNREACHABLE_RETURN(QString());
}
/*!
- \fn QString QString::first(qsizetype n) const
+ \fn QString QString::first(qsizetype n) const &
+ \fn QString QString::first(qsizetype n) &&
\since 6.0
Returns a string that contains the first \a n characters
@@ -4992,11 +5346,12 @@ QString QString::mid(qsizetype position, qsizetype n) const
\snippet qstring/main.cpp 31
- \sa last(), sliced(), startsWith(), chopped(), chop(), truncate()
+ \sa last(), sliced(), startsWith(), chopped(), chop(), truncate(), slice()
*/
/*!
- \fn QString QString::last(qsizetype n) const
+ \fn QString QString::last(qsizetype n) const &
+ \fn QString QString::last(qsizetype n) &&
\since 6.0
Returns the string that contains the last \a n characters of this string.
@@ -5005,11 +5360,12 @@ QString QString::mid(qsizetype position, qsizetype n) const
\snippet qstring/main.cpp 48
- \sa first(), sliced(), endsWith(), chopped(), chop(), truncate()
+ \sa first(), sliced(), endsWith(), chopped(), chop(), truncate(), slice()
*/
/*!
- \fn QString QString::sliced(qsizetype pos, qsizetype n) const
+ \fn QString QString::sliced(qsizetype pos, qsizetype n) const &
+ \fn QString QString::sliced(qsizetype pos, qsizetype n) &&
\since 6.0
Returns a string that contains \a n characters of this string,
@@ -5020,11 +5376,20 @@ QString QString::mid(qsizetype position, qsizetype n) const
\snippet qstring/main.cpp 34
- \sa first(), last(), chopped(), chop(), truncate()
+ \sa first(), last(), chopped(), chop(), truncate(), slice()
*/
+QString QString::sliced_helper(QString &str, qsizetype pos, qsizetype n)
+{
+ if (n == 0)
+ return QString(DataPointer::fromRawData(&_empty, 0));
+ DataPointer d = std::move(str.d).sliced(pos, n);
+ d.data()[n] = 0;
+ return QString(std::move(d));
+}
/*!
- \fn QString QString::sliced(qsizetype pos) const
+ \fn QString QString::sliced(qsizetype pos) const &
+ \fn QString QString::sliced(qsizetype pos) &&
\since 6.0
\overload
@@ -5033,11 +5398,40 @@ QString QString::mid(qsizetype position, qsizetype n) const
\note The behavior is undefined when \a pos < 0 or \a pos > size().
- \sa first(), last(), sliced(), chopped(), chop(), truncate()
+ \sa first(), last(), chopped(), chop(), truncate(), slice()
*/
/*!
- \fn QString QString::chopped(qsizetype len) const
+ \fn QString &QString::slice(qsizetype pos, qsizetype n)
+ \since 6.8
+
+ Modifies this string to start at position \a pos, extending for \a n
+ characters (code points), and returns a reference to this string.
+
+ \note The behavior is undefined if \a pos < 0, \a n < 0,
+ or \a pos + \a n > size().
+
+ \snippet qstring/main.cpp 86
+
+ \sa sliced(), first(), last(), chopped(), chop(), truncate()
+*/
+
+/*!
+ \fn QString &QString::slice(qsizetype pos)
+ \since 6.8
+ \overload
+
+ Modifies this string to start at position \a pos and extending to its end,
+ and returns a reference to this string.
+
+ \note The behavior is undefined if \a pos < 0 or \a pos > size().
+
+ \sa sliced(), first(), last(), chopped(), chop(), truncate()
+*/
+
+/*!
+ \fn QString QString::chopped(qsizetype len) const &
+ \fn QString QString::chopped(qsizetype len) &&
\since 5.10
Returns a string that contains the size() - \a len leftmost characters
@@ -5045,16 +5439,14 @@ QString QString::mid(qsizetype position, qsizetype n) const
\note The behavior is undefined if \a len is negative or greater than size().
- \sa endsWith(), first(), last(), sliced(), chop(), truncate()
+ \sa endsWith(), first(), last(), sliced(), chop(), truncate(), slice()
*/
-#if QT_STRINGVIEW_LEVEL < 2
/*!
Returns \c true if the string starts with \a s; otherwise returns
\c false.
- If \a cs is Qt::CaseSensitive (default), the search is
- case sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
\snippet qstring/main.cpp 65
@@ -5062,16 +5454,15 @@ QString QString::mid(qsizetype position, qsizetype n) const
*/
bool QString::startsWith(const QString& s, Qt::CaseSensitivity cs) const
{
- return qt_starts_with(*this, s, cs);
+ return qt_starts_with_impl(QStringView(*this), QStringView(s), cs);
}
-#endif
/*!
\overload startsWith()
*/
-bool QString::startsWith(QLatin1String s, Qt::CaseSensitivity cs) const
+bool QString::startsWith(QLatin1StringView s, Qt::CaseSensitivity cs) const
{
- return qt_starts_with(*this, s, cs);
+ return qt_starts_with_impl(QStringView(*this), s, cs);
}
/*!
@@ -5082,7 +5473,11 @@ bool QString::startsWith(QLatin1String s, Qt::CaseSensitivity cs) const
*/
bool QString::startsWith(QChar c, Qt::CaseSensitivity cs) const
{
- return qt_starts_with(*this, c, cs);
+ if (!size())
+ return false;
+ if (cs == Qt::CaseSensitive)
+ return at(0) == c;
+ return foldCase(at(0)) == foldCase(c);
}
/*!
@@ -5093,19 +5488,16 @@ bool QString::startsWith(QChar c, Qt::CaseSensitivity cs) const
Returns \c true if the string starts with the string view \a str;
otherwise returns \c false.
- If \a cs is Qt::CaseSensitive (default), the search is case-sensitive;
- otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
\sa endsWith()
*/
-#if QT_STRINGVIEW_LEVEL < 2
/*!
Returns \c true if the string ends with \a s; otherwise returns
\c false.
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
\snippet qstring/main.cpp 20
@@ -5113,9 +5505,8 @@ bool QString::startsWith(QChar c, Qt::CaseSensitivity cs) const
*/
bool QString::endsWith(const QString &s, Qt::CaseSensitivity cs) const
{
- return qt_ends_with(*this, s, cs);
+ return qt_ends_with_impl(QStringView(*this), QStringView(s), cs);
}
-#endif // QT_STRINGVIEW_LEVEL < 2
/*!
\fn bool QString::endsWith(QStringView str, Qt::CaseSensitivity cs) const
@@ -5124,8 +5515,7 @@ bool QString::endsWith(const QString &s, Qt::CaseSensitivity cs) const
Returns \c true if the string ends with the string view \a str;
otherwise returns \c false.
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
\sa startsWith()
*/
@@ -5133,9 +5523,9 @@ bool QString::endsWith(const QString &s, Qt::CaseSensitivity cs) const
/*!
\overload endsWith()
*/
-bool QString::endsWith(QLatin1String s, Qt::CaseSensitivity cs) const
+bool QString::endsWith(QLatin1StringView s, Qt::CaseSensitivity cs) const
{
- return qt_ends_with(*this, s, cs);
+ return qt_ends_with_impl(QStringView(*this), s, cs);
}
/*!
@@ -5146,7 +5536,32 @@ bool QString::endsWith(QLatin1String s, Qt::CaseSensitivity cs) const
*/
bool QString::endsWith(QChar c, Qt::CaseSensitivity cs) const
{
- return qt_ends_with(*this, c, cs);
+ if (!size())
+ return false;
+ if (cs == Qt::CaseSensitive)
+ return at(size() - 1) == c;
+ return foldCase(at(size() - 1)) == foldCase(c);
+}
+
+static bool checkCase(QStringView s, QUnicodeTables::Case c) noexcept
+{
+ QStringIterator it(s);
+ while (it.hasNext()) {
+ const char32_t uc = it.next();
+ if (qGetProp(uc)->cases[c].diff)
+ return false;
+ }
+ return true;
+}
+
+bool QtPrivate::isLower(QStringView s) noexcept
+{
+ return checkCase(s, QUnicodeTables::LowerCase);
+}
+
+bool QtPrivate::isUpper(QStringView s) noexcept
+{
+ return checkCase(s, QUnicodeTables::UpperCase);
}
/*!
@@ -5164,15 +5579,7 @@ bool QString::endsWith(QChar c, Qt::CaseSensitivity cs) const
*/
bool QString::isUpper() const
{
- QStringIterator it(*this);
-
- while (it.hasNext()) {
- const char32_t uc = it.next();
- if (qGetProp(uc)->cases[QUnicodeTables::UpperCase].diff)
- return false;
- }
-
- return true;
+ return QtPrivate::isUpper(qToStringViewIgnoringNull(*this));
}
/*!
@@ -5190,15 +5597,7 @@ bool QString::isUpper() const
*/
bool QString::isLower() const
{
- QStringIterator it(*this);
-
- while (it.hasNext()) {
- const char32_t uc = it.next();
- if (qGetProp(uc)->cases[QUnicodeTables::LowerCase].diff)
- return false;
- }
-
- return true;
+ return QtPrivate::isLower(qToStringViewIgnoringNull(*this));
}
static QByteArray qt_convert_to_latin1(QStringView string);
@@ -5246,7 +5645,7 @@ static QByteArray qt_convert_to_latin1(QStringView string)
if (Q_UNLIKELY(string.isNull()))
return QByteArray();
- QByteArray ba(string.length(), Qt::Uninitialized);
+ QByteArray ba(string.size(), Qt::Uninitialized);
// since we own the only copy, we're going to const_cast the constData;
// that avoids an unnecessary call to detach() and expansion code that will never get used
@@ -5284,6 +5683,21 @@ QByteArray QString::toLatin1_helper_inplace(QString &s)
return QByteArray(std::move(ba_d));
}
+// QLatin1 methods that use helpers from qstring.cpp
+char16_t *QLatin1::convertToUnicode(char16_t *out, QLatin1StringView in) noexcept
+{
+ const qsizetype len = in.size();
+ qt_from_latin1(out, in.data(), len);
+ return std::next(out, len);
+}
+
+char *QLatin1::convertFromUnicode(char *out, QStringView in) noexcept
+{
+ const qsizetype len = in.size();
+ qt_to_latin1(reinterpret_cast<uchar *>(out), in.utf16(), len);
+ return out + len;
+}
+
/*!
\fn QByteArray QString::toLatin1() const
@@ -5302,15 +5716,13 @@ static QByteArray qt_convert_to_local_8bit(QStringView string);
\fn QByteArray QString::toLocal8Bit() const
Returns the local 8-bit representation of the string as a
- QByteArray. The returned byte array is undefined if the string
- contains characters not supported by the local 8-bit encoding.
+ QByteArray.
- On Unix systems this is equivalen to toUtf8(), on Windows the systems
- current code page is being used.
+ \include qstring.qdocinc {qstring-local-8-bit-equivalent} {toUtf8}
If this string contains any characters that cannot be encoded in the
- locale, the returned byte array is undefined. Those characters may be
- suppressed or replaced by another.
+ local 8-bit encoding, the returned byte array is undefined. Those
+ characters may be suppressed or replaced by another.
\sa fromLocal8Bit(), toLatin1(), toUtf8(), QStringEncoder
*/
@@ -5335,7 +5747,7 @@ static QByteArray qt_convert_to_local_8bit(QStringView string)
Returns a local 8-bit representation of \a string as a QByteArray.
- On Unix systems this is equivalen to toUtf8(), on Windows the systems
+ On Unix systems this is equivalent to toUtf8(), on Windows the systems
current code page is being used.
The behavior is undefined if \a string contains characters not
@@ -5415,7 +5827,7 @@ QList<uint> QString::toUcs4() const
static QList<uint> qt_convert_to_ucs4(QStringView string)
{
- QList<uint> v(string.length());
+ QList<uint> v(string.size());
uint *a = const_cast<uint*>(v.constData());
QStringIterator it(string);
while (it.hasNext())
@@ -5464,7 +5876,7 @@ QString QString::fromLatin1(QByteArrayView ba)
} else if (ba.size() == 0) {
d = DataPointer::fromRawData(&_empty, 0);
} else {
- d = DataPointer(Data::allocate(ba.size()), ba.size());
+ d = DataPointer(ba.size(), ba.size());
Q_CHECK_PTR(d.data());
d.data()[ba.size()] = '\0';
char16_t *dst = d.data();
@@ -5503,8 +5915,7 @@ QString QString::fromLatin1(QByteArrayView ba)
If \a size is \c{-1}, \c{strlen(str)} is used instead.
- On Unix systems this is equivalen to fromUtf8(), on Windows the systems
- current code page is being used.
+ \include qstring.qdocinc {qstring-local-8-bit-equivalent} {fromUtf8}
\sa toLocal8Bit(), fromLatin1(), fromUtf8()
*/
@@ -5516,6 +5927,8 @@ QString QString::fromLatin1(QByteArrayView ba)
Returns a QString initialized with the 8-bit string \a str.
+ \include qstring.qdocinc {qstring-local-8-bit-equivalent} {fromUtf8}
+
\note: any null ('\\0') bytes in the byte array will be included in this
string, converted to Unicode null characters (U+0000). This behavior is
different from Qt 5.x.
@@ -5528,6 +5941,8 @@ QString QString::fromLatin1(QByteArrayView ba)
Returns a QString initialized with the 8-bit string \a str.
+ \include qstring.qdocinc {qstring-local-8-bit-equivalent} {fromUtf8}
+
\note: any null ('\\0') bytes in the byte array will be included in this
string, converted to Unicode null characters (U+0000).
*/
@@ -5609,6 +6024,7 @@ QString QString::fromUtf8(QByteArrayView ba)
return QUtf8::convertToUnicode(ba);
}
+#ifndef QT_BOOTSTRAPPED
/*!
\since 5.3
Returns a QString initialized with the first \a size characters
@@ -5620,7 +6036,7 @@ QString QString::fromUtf8(QByteArrayView ba)
host byte order is assumed.
This function is slow compared to the other Unicode conversions.
- Use QString(const QChar *, int) or QString(const QChar *) if possible.
+ Use QString(const QChar *, qsizetype) or QString(const QChar *) if possible.
QString makes a deep copy of the Unicode data.
@@ -5670,7 +6086,7 @@ QString QString::fromUcs4(const char32_t *unicode, qsizetype size)
QStringDecoder toUtf16(QStringDecoder::Utf32, QStringDecoder::Flag::Stateless);
return toUtf16(QByteArrayView(reinterpret_cast<const char *>(unicode), size * 4));
}
-
+#endif // !QT_BOOTSTRAPPED
/*!
Resizes the string to \a size characters and copies \a unicode
@@ -5735,16 +6151,14 @@ namespace {
template <typename StringView>
StringView qt_trimmed(StringView s) noexcept
{
- auto begin = s.begin();
- auto end = s.end();
- QStringAlgorithms<const StringView>::trimmed_helper_positions(begin, end);
+ const auto [begin, end] = QStringAlgorithms<const StringView>::trimmed_helper_positions(s);
return StringView{begin, end};
}
}
/*!
\fn QStringView QtPrivate::trimmed(QStringView s)
- \fn QLatin1String QtPrivate::trimmed(QLatin1String s)
+ \fn QLatin1StringView QtPrivate::trimmed(QLatin1StringView s)
\internal
\relates QStringView
\since 5.10
@@ -5755,14 +6169,14 @@ namespace {
\c true. This includes the ASCII characters '\\t', '\\n', '\\v',
'\\f', '\\r', and ' '.
- \sa QString::trimmed(), QStringView::trimmed(), QLatin1String::trimmed()
+ \sa QString::trimmed(), QStringView::trimmed(), QLatin1StringView::trimmed()
*/
QStringView QtPrivate::trimmed(QStringView s) noexcept
{
return qt_trimmed(s);
}
-QLatin1String QtPrivate::trimmed(QLatin1String s) noexcept
+QLatin1StringView QtPrivate::trimmed(QLatin1StringView s) noexcept
{
return qt_trimmed(s);
}
@@ -5944,12 +6358,8 @@ void QString::chop(qsizetype n)
QString& QString::fill(QChar ch, qsizetype size)
{
resize(size < 0 ? d.size : size);
- if (d.size) {
- QChar *i = (QChar*)d.data() + d.size;
- QChar *b = (QChar*)d.data();
- while (i != b)
- *--i = ch;
- }
+ if (d.size)
+ std::fill(d.data(), d.data() + d.size, ch.unicode());
return *this;
}
@@ -5975,6 +6385,16 @@ QString& QString::fill(QChar ch, qsizetype size)
\sa isEmpty(), resize()
*/
+/*!
+ \fn qsizetype QString::max_size()
+ \since 6.8
+
+ This function is provided for STL compatibility.
+ It returns the maximum number of elements that the string can
+ theoretically hold. In practice, the number can be much smaller,
+ limited by the amount of memory available to the system.
+*/
+
/*! \fn bool QString::isNull() const
Returns \c true if this string is null; otherwise returns \c false.
@@ -6020,11 +6440,18 @@ QString& QString::fill(QChar ch, qsizetype size)
\sa append(), prepend()
*/
-/*! \fn QString &QString::operator+=(QLatin1String str)
+/*! \fn QString &QString::operator+=(QLatin1StringView str)
\overload operator+=()
- Appends the Latin-1 string \a str to this string.
+ Appends the Latin-1 string viewed by \a str to this string.
+*/
+
+/*! \fn QString &QString::operator+=(QUtf8StringView str)
+ \since 6.5
+ \overload operator+=()
+
+ Appends the UTF-8 string view \a str to this string.
*/
/*! \fn QString &QString::operator+=(const QByteArray &ba)
@@ -6070,67 +6497,68 @@ QString& QString::fill(QChar ch, qsizetype size)
*/
/*!
- \fn bool QString::operator==(const char *s1, const QString &s2)
+ \fn bool QString::operator==(const char * const &lhs, const QString &rhs)
\overload operator==()
- Returns \c true if \a s1 is equal to \a s2; otherwise returns \c false.
- Note that no string is equal to \a s1 being 0.
+ Returns \c true if \a lhs is equal to \a rhs; otherwise returns \c false.
+ Note that no string is equal to \a lhs being 0.
- Equivalent to \c {s1 != 0 && compare(s1, s2) == 0}.
+ Equivalent to \c {lhs != 0 && compare(lhs, rhs) == 0}.
*/
/*!
- \fn bool QString::operator!=(const char *s1, const QString &s2)
+ \fn bool QString::operator!=(const char * const &lhs, const QString &rhs)
- Returns \c true if \a s1 is not equal to \a s2; otherwise returns
+ Returns \c true if \a lhs is not equal to \a rhs; otherwise returns
\c false.
- For \a s1 != 0, this is equivalent to \c {compare(} \a s1, \a s2
- \c {) != 0}. Note that no string is equal to \a s1 being 0.
+ For \a lhs != 0, this is equivalent to \c {compare(} \a lhs, \a rhs
+ \c {) != 0}. Note that no string is equal to \a lhs being 0.
*/
/*!
- \fn bool QString::operator<(const char *s1, const QString &s2)
+ \fn bool QString::operator<(const char * const &lhs, const QString &rhs)
- Returns \c true if \a s1 is lexically less than \a s2; otherwise
- returns \c false. For \a s1 != 0, this is equivalent to \c
- {compare(s1, s2) < 0}.
+ Returns \c true if \a lhs is lexically less than \a rhs; otherwise
+ returns \c false. For \a lhs != 0, this is equivalent to \c
+ {compare(lhs, rhs) < 0}.
\sa {Comparing Strings}
*/
/*!
- \fn bool QString::operator<=(const char *s1, const QString &s2)
+ \fn bool QString::operator<=(const char * const &lhs, const QString &rhs)
- Returns \c true if \a s1 is lexically less than or equal to \a s2;
- otherwise returns \c false. For \a s1 != 0, this is equivalent to \c
- {compare(s1, s2) <= 0}.
+ Returns \c true if \a lhs is lexically less than or equal to \a rhs;
+ otherwise returns \c false. For \a lhs != 0, this is equivalent to \c
+ {compare(lhs, rhs) <= 0}.
\sa {Comparing Strings}
*/
/*!
- \fn bool QString::operator>(const char *s1, const QString &s2)
+ \fn bool QString::operator>(const char * const &lhs, const QString &rhs)
- Returns \c true if \a s1 is lexically greater than \a s2; otherwise
- returns \c false. Equivalent to \c {compare(s1, s2) > 0}.
+ Returns \c true if \a lhs is lexically greater than \a rhs; otherwise
+ returns \c false. Equivalent to \c {compare(lhs, rhs) > 0}.
\sa {Comparing Strings}
*/
/*!
- \fn bool QString::operator>=(const char *s1, const QString &s2)
+ \fn bool QString::operator>=(const char * const &lhs, const QString &rhs)
- Returns \c true if \a s1 is lexically greater than or equal to \a s2;
- otherwise returns \c false. For \a s1 != 0, this is equivalent to \c
- {compare(s1, s2) >= 0}.
+ Returns \c true if \a lhs is lexically greater than or equal to \a rhs;
+ otherwise returns \c false. For \a lhs != 0, this is equivalent to \c
+ {compare(lhs, rhs) >= 0}.
\sa {Comparing Strings}
*/
/*!
- \fn const QString operator+(const QString &s1, const QString &s2)
+ \fn QString operator+(const QString &s1, const QString &s2)
+ \fn QString operator+(QString &&s1, const QString &s2)
\relates QString
Returns a string which is the result of concatenating \a s1 and \a
@@ -6138,7 +6566,7 @@ QString& QString::fill(QChar ch, qsizetype size)
*/
/*!
- \fn const QString operator+(const QString &s1, const char *s2)
+ \fn QString operator+(const QString &s1, const char *s2)
\relates QString
Returns a string which is the result of concatenating \a s1 and \a
@@ -6149,7 +6577,7 @@ QString& QString::fill(QChar ch, qsizetype size)
*/
/*!
- \fn const QString operator+(const char *s1, const QString &s2)
+ \fn QString operator+(const char *s1, const QString &s2)
\relates QString
Returns a string which is the result of concatenating \a s1 and \a
@@ -6163,12 +6591,11 @@ QString& QString::fill(QChar ch, qsizetype size)
\fn int QString::compare(const QString &s1, const QString &s2, Qt::CaseSensitivity cs)
\since 4.2
- Compares \a s1 with \a s2 and returns an integer less than, equal
- to, or greater than zero if \a s1 is less than, equal to, or
- greater than \a s2.
+ Compares the string \a s1 with the string \a s2 and returns a negative integer
+ if \a s1 is less than \a s2, a positive integer if it is greater than \a s2,
+ and zero if they are equal.
- If \a cs is Qt::CaseSensitive, the comparison is case sensitive;
- otherwise the comparison is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {comparison}
Case sensitive comparison is based exclusively on the numeric
Unicode values of the characters and is very fast, but is not what
@@ -6177,11 +6604,16 @@ QString& QString::fill(QChar ch, qsizetype size)
\snippet qstring/main.cpp 16
+//! [compare-isNull-vs-isEmpty]
+ \note This function treats null strings the same as empty strings,
+ for more details see \l {Distinction Between Null and Empty Strings}.
+//! [compare-isNull-vs-isEmpty]
+
\sa operator==(), operator<(), operator>(), {Comparing Strings}
*/
/*!
- \fn int QString::compare(const QString &s1, QLatin1String s2, Qt::CaseSensitivity cs)
+ \fn int QString::compare(const QString &s1, QLatin1StringView s2, Qt::CaseSensitivity cs)
\since 4.2
\overload compare()
@@ -6190,7 +6622,7 @@ QString& QString::fill(QChar ch, qsizetype size)
*/
/*!
- \fn int QString::compare(QLatin1String s1, const QString &s2, Qt::CaseSensitivity cs = Qt::CaseSensitive)
+ \fn int QString::compare(QLatin1StringView s1, const QString &s2, Qt::CaseSensitivity cs = Qt::CaseSensitive)
\since 4.2
\overload compare()
@@ -6219,15 +6651,13 @@ QString& QString::fill(QChar ch, qsizetype size)
sensitivity setting \a cs.
*/
-#if QT_STRINGVIEW_LEVEL < 2
/*!
\overload compare()
\since 4.2
- Lexically compares this string with the \a other string and
- returns an integer less than, equal to, or greater than zero if
- this string is less than, equal to, or greater than the other
- string.
+ Lexically compares this string with the string \a other and returns
+ a negative integer if this string is less than \a other, a positive
+ integer if it is greater than \a other, and zero if they are equal.
Same as compare(*this, \a other, \a cs).
*/
@@ -6235,7 +6665,6 @@ int QString::compare(const QString &other, Qt::CaseSensitivity cs) const noexcep
{
return QtPrivate::compareStrings(*this, other, cs);
}
-#endif
/*!
\internal
@@ -6257,7 +6686,7 @@ int QString::compare_helper(const QChar *data1, qsizetype length1, const QChar *
Same as compare(*this, \a other, \a cs).
*/
-int QString::compare(QLatin1String other, Qt::CaseSensitivity cs) const noexcept
+int QString::compare(QLatin1StringView other, Qt::CaseSensitivity cs) const noexcept
{
return QtPrivate::compareStrings(*this, other, cs);
}
@@ -6267,19 +6696,16 @@ int QString::compare(QLatin1String other, Qt::CaseSensitivity cs) const noexcept
\since 5.0
*/
int QString::compare_helper(const QChar *data1, qsizetype length1, const char *data2, qsizetype length2,
- Qt::CaseSensitivity cs)
+ Qt::CaseSensitivity cs) noexcept
{
Q_ASSERT(length1 >= 0);
Q_ASSERT(data1 || length1 == 0);
if (!data2)
- return length1;
+ return qt_lencmp(length1, 0);
if (Q_UNLIKELY(length2 < 0))
length2 = qsizetype(strlen(data2));
- // ### make me nothrow in all cases
- QVarLengthArray<ushort> s2(length2);
- const auto beg = reinterpret_cast<QChar *>(s2.data());
- const auto end = QUtf8::convertToUnicode(beg, QByteArrayView(data2, length2));
- return QtPrivate::compareStrings(QStringView(data1, length1), QStringView(beg, end - beg), cs);
+ return QtPrivate::compareStrings(QStringView(data1, length1),
+ QUtf8StringView(data2, length2), cs);
}
/*!
@@ -6292,12 +6718,116 @@ int QString::compare_helper(const QChar *data1, qsizetype length1, const char *d
\overload compare()
*/
+bool comparesEqual(const QByteArrayView &lhs, const QChar &rhs) noexcept
+{
+ return QtPrivate::equalStrings(QUtf8StringView(lhs), QStringView(&rhs, 1));
+}
+
+Qt::strong_ordering compareThreeWay(const QByteArrayView &lhs, const QChar &rhs) noexcept
+{
+ const int res = QtPrivate::compareStrings(QUtf8StringView(lhs), QStringView(&rhs, 1));
+ return Qt::compareThreeWay(res, 0);
+}
+
+bool comparesEqual(const QByteArrayView &lhs, char16_t rhs) noexcept
+{
+ return QtPrivate::equalStrings(QUtf8StringView(lhs), QStringView(&rhs, 1));
+}
+
+Qt::strong_ordering compareThreeWay(const QByteArrayView &lhs, char16_t rhs) noexcept
+{
+ const int res = QtPrivate::compareStrings(QUtf8StringView(lhs), QStringView(&rhs, 1));
+ return Qt::compareThreeWay(res, 0);
+}
+
+bool comparesEqual(const QByteArray &lhs, const QChar &rhs) noexcept
+{
+ return QtPrivate::equalStrings(QUtf8StringView(lhs), QStringView(&rhs, 1));
+}
+
+Qt::strong_ordering compareThreeWay(const QByteArray &lhs, const QChar &rhs) noexcept
+{
+ const int res = QtPrivate::compareStrings(QUtf8StringView(lhs), QStringView(&rhs, 1));
+ return Qt::compareThreeWay(res, 0);
+}
+
+bool comparesEqual(const QByteArray &lhs, char16_t rhs) noexcept
+{
+ return QtPrivate::equalStrings(QUtf8StringView(lhs), QStringView(&rhs, 1));
+}
+
+Qt::strong_ordering compareThreeWay(const QByteArray &lhs, char16_t rhs) noexcept
+{
+ const int res = QtPrivate::compareStrings(QUtf8StringView(lhs), QStringView(&rhs, 1));
+ return Qt::compareThreeWay(res, 0);
+}
+
+/*!
+ \internal
+ \since 6.8
+*/
+bool QT_FASTCALL QChar::equal_helper(QChar lhs, const char *rhs) noexcept
+{
+ return QtPrivate::equalStrings(QStringView(&lhs, 1), QUtf8StringView(rhs));
+}
+
+int QT_FASTCALL QChar::compare_helper(QChar lhs, const char *rhs) noexcept
+{
+ return QtPrivate::compareStrings(QStringView(&lhs, 1), QUtf8StringView(rhs));
+}
+
+/*!
+ \internal
+ \since 6.8
+*/
+bool QStringView::equal_helper(QStringView sv, const char *data, qsizetype len)
+{
+ Q_ASSERT(len >= 0);
+ Q_ASSERT(data || len == 0);
+ return QtPrivate::equalStrings(sv, QUtf8StringView(data, len));
+}
+
+/*!
+ \internal
+ \since 6.8
+*/
+int QStringView::compare_helper(QStringView sv, const char *data, qsizetype len)
+{
+ Q_ASSERT(len >= 0);
+ Q_ASSERT(data || len == 0);
+ return QtPrivate::compareStrings(sv, QUtf8StringView(data, len));
+}
+
+/*!
+ \internal
+ \since 6.8
+*/
+bool QLatin1StringView::equal_helper(QLatin1StringView s1, const char *s2, qsizetype len) noexcept
+{
+ // because qlatin1stringview.h can't include qutf8stringview.h
+ Q_ASSERT(len >= 0);
+ Q_ASSERT(s2 || len == 0);
+ return QtPrivate::equalStrings(s1, QUtf8StringView(s2, len));
+}
+
+/*!
+ \internal
+ \since 6.6
+*/
+int QLatin1StringView::compare_helper(const QLatin1StringView &s1, const char *s2, qsizetype len) noexcept
+{
+ // because qlatin1stringview.h can't include qutf8stringview.h
+ Q_ASSERT(len >= 0);
+ Q_ASSERT(s2 || len == 0);
+ return QtPrivate::compareStrings(s1, QUtf8StringView(s2, len));
+}
+
/*!
\internal
\since 4.5
*/
-int QLatin1String::compare_helper(const QChar *data1, qsizetype length1, QLatin1String s2,
- Qt::CaseSensitivity cs) noexcept
+int QLatin1StringView::compare_helper(const QChar *data1, qsizetype length1, QLatin1StringView s2,
+ Qt::CaseSensitivity cs) noexcept
{
Q_ASSERT(length1 >= 0);
Q_ASSERT(data1 || length1 == 0);
@@ -6376,7 +6906,7 @@ int QLatin1String::compare_helper(const QChar *data1, qsizetype length1, QLatin1
*/
int QString::localeAwareCompare(const QString &other) const
{
- return localeAwareCompare_helper(constData(), length(), other.constData(), other.length());
+ return localeAwareCompare_helper(constData(), size(), other.constData(), other.size());
}
/*!
@@ -6492,7 +7022,7 @@ const ushort *QString::utf16() const
QString QString::leftJustified(qsizetype width, QChar fill, bool truncate) const
{
QString result;
- qsizetype len = length();
+ qsizetype len = size();
qsizetype padlen = width - len;
if (padlen > 0) {
result.resize(len+padlen);
@@ -6531,7 +7061,7 @@ QString QString::leftJustified(qsizetype width, QChar fill, bool truncate) const
QString QString::rightJustified(qsizetype width, QChar fill, bool truncate) const
{
QString result;
- qsizetype len = length();
+ qsizetype len = size();
qsizetype padlen = width - len;
if (padlen > 0) {
result.resize(len+padlen);
@@ -6739,9 +7269,9 @@ QString QString::asprintf(const char *cformat, ...)
return s;
}
-static void append_utf8(QString &qs, const char *cs, int len)
+static void append_utf8(QString &qs, const char *cs, qsizetype len)
{
- const int oldSize = qs.size();
+ const qsizetype oldSize = qs.size();
qs.resize(oldSize + len);
const QChar *newEnd = QUtf8::convertToUnicode(qs.data() + oldSize, QByteArrayView(cs, len));
qs.resize(newEnd - qs.constData());
@@ -6769,19 +7299,19 @@ static uint parse_flag_characters(const char * &c) noexcept
static int parse_field_width(const char *&c, qsizetype size)
{
- Q_ASSERT(qIsDigit(*c));
+ Q_ASSERT(isAsciiDigit(*c));
const char *const stop = c + size;
// can't be negative - started with a digit
// contains at least one digit
- const char *endp;
- bool ok;
- const qulonglong result = qstrntoull(c, size, &endp, 10, &ok);
- c = endp;
+ auto [result, used] = qstrntoull(c, size, 10);
+ c += used;
+ if (used <= 0)
+ return false;
// preserve Qt 5.5 behavior of consuming all digits, no matter how many
- while (c < stop && qIsDigit(*c))
+ while (c < stop && isAsciiDigit(*c))
++c;
- return ok && result < qulonglong(std::numeric_limits<int>::max()) ? int(result) : 0;
+ return result < qulonglong(std::numeric_limits<int>::max()) ? int(result) : 0;
}
enum LengthMod { lm_none, lm_hh, lm_h, lm_l, lm_ll, lm_L, lm_j, lm_z, lm_t };
@@ -6851,11 +7381,11 @@ QString QString::vasprintf(const char *cformat, va_list ap)
++c;
if (*c == '\0') {
- result.append(QLatin1Char('%')); // a % at the end of the string - treat as non-escape text
+ result.append(u'%'); // a % at the end of the string - treat as non-escape text
break;
}
if (*c == '%') {
- result.append(QLatin1Char('%')); // %%
+ result.append(u'%'); // %%
++c;
continue;
}
@@ -6863,13 +7393,13 @@ QString QString::vasprintf(const char *cformat, va_list ap)
uint flags = parse_flag_characters(c);
if (*c == '\0') {
- result.append(QLatin1String(escape_start)); // incomplete escape, treat as non-escape text
+ result.append(QLatin1StringView(escape_start)); // incomplete escape, treat as non-escape text
break;
}
// Parse field width
int width = -1; // -1 means unspecified
- if (qIsDigit(*c)) {
+ if (isAsciiDigit(*c)) {
width = parse_field_width(c, formatEnd - c);
} else if (*c == '*') { // can't parse this in another function, not portably, at least
width = va_arg(ap, int);
@@ -6879,7 +7409,7 @@ QString QString::vasprintf(const char *cformat, va_list ap)
}
if (*c == '\0') {
- result.append(QLatin1String(escape_start)); // incomplete escape, treat as non-escape text
+ result.append(QLatin1StringView(escape_start)); // incomplete escape, treat as non-escape text
break;
}
@@ -6887,7 +7417,8 @@ QString QString::vasprintf(const char *cformat, va_list ap)
int precision = -1; // -1 means unspecified
if (*c == '.') {
++c;
- if (qIsDigit(*c)) {
+ precision = 0;
+ if (isAsciiDigit(*c)) {
precision = parse_field_width(c, formatEnd - c);
} else if (*c == '*') { // can't parse this in another function, not portably, at least
precision = va_arg(ap, int);
@@ -6898,14 +7429,14 @@ QString QString::vasprintf(const char *cformat, va_list ap)
}
if (*c == '\0') {
- result.append(QLatin1String(escape_start)); // incomplete escape, treat as non-escape text
+ result.append(QLatin1StringView(escape_start)); // incomplete escape, treat as non-escape text
break;
}
const LengthMod length_mod = parse_length_modifier(c);
if (*c == '\0') {
- result.append(QLatin1String(escape_start)); // incomplete escape, treat as non-escape text
+ result.append(QLatin1StringView(escape_start)); // incomplete escape, treat as non-escape text
break;
}
@@ -6948,11 +7479,11 @@ QString QString::vasprintf(const char *cformat, va_list ap)
default: u = 0; break;
}
- if (qIsUpper(*c))
+ if (isAsciiUpper(*c))
flags |= QLocaleData::CapitalEorX;
int base = 10;
- switch (qToLower(*c)) {
+ switch (QtMiscUtils::toAsciiLower(*c)) {
case 'o':
base = 8; break;
case 'u':
@@ -6979,11 +7510,11 @@ QString QString::vasprintf(const char *cformat, va_list ap)
else
d = va_arg(ap, double);
- if (qIsUpper(*c))
+ if (isAsciiUpper(*c))
flags |= QLocaleData::CapitalEorX;
QLocaleData::DoubleForm form = QLocaleData::DFDecimal;
- switch (qToLower(*c)) {
+ switch (QtMiscUtils::toAsciiLower(*c)) {
case 'e': form = QLocaleData::DFExponent; break;
case 'a': // not supported - decimal form used instead
case 'f': form = QLocaleData::DFDecimal; break;
@@ -7032,27 +7563,27 @@ QString QString::vasprintf(const char *cformat, va_list ap)
switch (length_mod) {
case lm_hh: {
signed char *n = va_arg(ap, signed char*);
- *n = result.length();
+ *n = result.size();
break;
}
case lm_h: {
short int *n = va_arg(ap, short int*);
- *n = result.length();
+ *n = result.size();
break;
}
case lm_l: {
long int *n = va_arg(ap, long int*);
- *n = result.length();
+ *n = result.size();
break;
}
case lm_ll: {
qint64 *n = va_arg(ap, qint64*);
- *n = result.length();
+ *n = result.size();
break;
}
default: {
int *n = va_arg(ap, int*);
- *n = result.length();
+ *n = int(result.size());
break;
}
}
@@ -7075,6 +7606,8 @@ QString QString::vasprintf(const char *cformat, va_list ap)
}
/*!
+ \fn QString::toLongLong(bool *ok, int base) const
+
Returns the string converted to a \c{long long} using base \a
base, which is 10 by default and must be between 2 and 36, or 0.
Returns 0 if the conversion fails.
@@ -7082,9 +7615,10 @@ QString QString::vasprintf(const char *cformat, va_list ap)
If \a ok is not \nullptr, failure is reported by setting *\a{ok}
to \c false, and success by setting *\a{ok} to \c true.
- If \a base is 0, the C language convention is used: if the string
- begins with "0x", base 16 is used; otherwise, if the string begins with "0",
- base 8 is used; otherwise, base 10 is used.
+ If \a base is 0, the C language convention is used: if the string begins
+ with "0x", base 16 is used; otherwise, if the string begins with "0b", base
+ 2 is used; otherwise, if the string begins with "0", base 8 is used;
+ otherwise, base 10 is used.
The string conversion will always happen in the 'C' locale. For
locale-dependent conversion use QLocale::toLongLong()
@@ -7095,28 +7629,41 @@ QString QString::vasprintf(const char *cformat, va_list ap)
This function ignores leading and trailing whitespace.
+ \note Support for the "0b" prefix was added in Qt 6.4.
+
\sa number(), toULongLong(), toInt(), QLocale::toLongLong()
*/
-qint64 QString::toLongLong(bool *ok, int base) const
-{
- return toIntegral_helper<qlonglong>(*this, ok, base);
-}
-
-qlonglong QString::toIntegral_helper(QStringView string, bool *ok, int base)
+template <typename Int>
+static Int toIntegral(QStringView string, bool *ok, int base)
{
#if defined(QT_CHECK_RANGE)
if (base != 0 && (base < 2 || base > 36)) {
- qWarning("QString::toULongLong: Invalid base (%d)", base);
+ qWarning("QString::toIntegral: Invalid base (%d)", base);
base = 10;
}
#endif
- return QLocaleData::c()->stringToLongLong(string, base, ok, QLocale::RejectGroupSeparator);
+ QVarLengthArray<uchar> latin1(string.size());
+ qt_to_latin1(latin1.data(), string.utf16(), string.size());
+ QSimpleParsedNumber<Int> r;
+ if constexpr (std::is_signed_v<Int>)
+ r = QLocaleData::bytearrayToLongLong(latin1, base);
+ else
+ r = QLocaleData::bytearrayToUnsLongLong(latin1, base);
+ if (ok)
+ *ok = r.ok();
+ return r.result;
}
+qlonglong QString::toIntegral_helper(QStringView string, bool *ok, int base)
+{
+ return toIntegral<qlonglong>(string, ok, base);
+}
/*!
+ \fn QString::toULongLong(bool *ok, int base) const
+
Returns the string converted to an \c{unsigned long long} using base \a
base, which is 10 by default and must be between 2 and 36, or 0.
Returns 0 if the conversion fails.
@@ -7124,9 +7671,10 @@ qlonglong QString::toIntegral_helper(QStringView string, bool *ok, int base)
If \a ok is not \nullptr, failure is reported by setting *\a{ok}
to \c false, and success by setting *\a{ok} to \c true.
- If \a base is 0, the C language convention is used: if the string
- begins with "0x", base 16 is used; otherwise, if the string begins with "0",
- base 8 is used; otherwise, base 10 is used.
+ If \a base is 0, the C language convention is used: if the string begins
+ with "0x", base 16 is used; otherwise, if the string begins with "0b", base
+ 2 is used; otherwise, if the string begins with "0", base 8 is used;
+ otherwise, base 10 is used.
The string conversion will always happen in the 'C' locale. For
locale-dependent conversion use QLocale::toULongLong()
@@ -7137,24 +7685,14 @@ qlonglong QString::toIntegral_helper(QStringView string, bool *ok, int base)
This function ignores leading and trailing whitespace.
+ \note Support for the "0b" prefix was added in Qt 6.4.
+
\sa number(), toLongLong(), QLocale::toULongLong()
*/
-quint64 QString::toULongLong(bool *ok, int base) const
-{
- return toIntegral_helper<qulonglong>(*this, ok, base);
-}
-
qulonglong QString::toIntegral_helper(QStringView string, bool *ok, uint base)
{
-#if defined(QT_CHECK_RANGE)
- if (base != 0 && (base < 2 || base > 36)) {
- qWarning("QString::toULongLong: Invalid base (%d)", base);
- base = 10;
- }
-#endif
-
- return QLocaleData::c()->stringToUnsLongLong(string, base, ok, QLocale::RejectGroupSeparator);
+ return toIntegral<qulonglong>(string, ok, base);
}
/*!
@@ -7167,9 +7705,10 @@ qulonglong QString::toIntegral_helper(QStringView string, bool *ok, uint base)
If \a ok is not \nullptr, failure is reported by setting *\a{ok}
to \c false, and success by setting *\a{ok} to \c true.
- If \a base is 0, the C language convention is used: if the string
- begins with "0x", base 16 is used; otherwise, if the string begins with "0",
- base 8 is used; otherwise, base 10 is used.
+ If \a base is 0, the C language convention is used: if the string begins
+ with "0x", base 16 is used; otherwise, if the string begins with "0b", base
+ 2 is used; otherwise, if the string begins with "0", base 8 is used;
+ otherwise, base 10 is used.
The string conversion will always happen in the 'C' locale. For
locale-dependent conversion use QLocale::toLongLong()
@@ -7180,6 +7719,8 @@ qulonglong QString::toIntegral_helper(QStringView string, bool *ok, uint base)
This function ignores leading and trailing whitespace.
+ \note Support for the "0b" prefix was added in Qt 6.4.
+
\sa number(), toULong(), toInt(), QLocale::toInt()
*/
@@ -7193,9 +7734,10 @@ qulonglong QString::toIntegral_helper(QStringView string, bool *ok, uint base)
If \a ok is not \nullptr, failure is reported by setting *\a{ok}
to \c false, and success by setting *\a{ok} to \c true.
- If \a base is 0, the C language convention is used: if the string
- begins with "0x", base 16 is used; otherwise, if the string begins with "0",
- base 8 is used; otherwise, base 10 is used.
+ If \a base is 0, the C language convention is used: if the string begins
+ with "0x", base 16 is used; otherwise, if the string begins with "0b", base
+ 2 is used; otherwise, if the string begins with "0", base 8 is used;
+ otherwise, base 10 is used.
The string conversion will always happen in the 'C' locale. For
locale-dependent conversion use QLocale::toULongLong()
@@ -7206,6 +7748,8 @@ qulonglong QString::toIntegral_helper(QStringView string, bool *ok, uint base)
This function ignores leading and trailing whitespace.
+ \note Support for the "0b" prefix was added in Qt 6.4.
+
\sa number(), QLocale::toUInt()
*/
@@ -7218,9 +7762,10 @@ qulonglong QString::toIntegral_helper(QStringView string, bool *ok, uint base)
If \a ok is not \nullptr, failure is reported by setting *\a{ok}
to \c false, and success by setting *\a{ok} to \c true.
- If \a base is 0, the C language convention is used: if the string
- begins with "0x", base 16 is used; otherwise, if the string begins with "0",
- base 8 is used; otherwise, base 10 is used.
+ If \a base is 0, the C language convention is used: if the string begins
+ with "0x", base 16 is used; otherwise, if the string begins with "0b", base
+ 2 is used; otherwise, if the string begins with "0", base 8 is used;
+ otherwise, base 10 is used.
The string conversion will always happen in the 'C' locale. For
locale-dependent conversion use QLocale::toInt()
@@ -7231,6 +7776,8 @@ qulonglong QString::toIntegral_helper(QStringView string, bool *ok, uint base)
This function ignores leading and trailing whitespace.
+ \note Support for the "0b" prefix was added in Qt 6.4.
+
\sa number(), toUInt(), toDouble(), QLocale::toInt()
*/
@@ -7243,9 +7790,10 @@ qulonglong QString::toIntegral_helper(QStringView string, bool *ok, uint base)
If \a ok is not \nullptr, failure is reported by setting *\a{ok}
to \c false, and success by setting *\a{ok} to \c true.
- If \a base is 0, the C language convention is used: if the string
- begins with "0x", base 16 is used; otherwise, if the string begins with "0",
- base 8 is used; otherwise, base 10 is used.
+ If \a base is 0, the C language convention is used: if the string begins
+ with "0x", base 16 is used; otherwise, if the string begins with "0b", base
+ 2 is used; otherwise, if the string begins with "0", base 8 is used;
+ otherwise, base 10 is used.
The string conversion will always happen in the 'C' locale. For
locale-dependent conversion use QLocale::toUInt()
@@ -7256,6 +7804,8 @@ qulonglong QString::toIntegral_helper(QStringView string, bool *ok, uint base)
This function ignores leading and trailing whitespace.
+ \note Support for the "0b" prefix was added in Qt 6.4.
+
\sa number(), toInt(), QLocale::toUInt()
*/
@@ -7269,9 +7819,10 @@ qulonglong QString::toIntegral_helper(QStringView string, bool *ok, uint base)
If \a ok is not \nullptr, failure is reported by setting *\a{ok}
to \c false, and success by setting *\a{ok} to \c true.
- If \a base is 0, the C language convention is used: if the string
- begins with "0x", base 16 is used; otherwise, if the string begins with "0",
- base 8 is used; otherwise, base 10 is used.
+ If \a base is 0, the C language convention is used: if the string begins
+ with "0x", base 16 is used; otherwise, if the string begins with "0b", base
+ 2 is used; otherwise, if the string begins with "0", base 8 is used;
+ otherwise, base 10 is used.
The string conversion will always happen in the 'C' locale. For
locale-dependent conversion use QLocale::toShort()
@@ -7282,6 +7833,8 @@ qulonglong QString::toIntegral_helper(QStringView string, bool *ok, uint base)
This function ignores leading and trailing whitespace.
+ \note Support for the "0b" prefix was added in Qt 6.4.
+
\sa number(), toUShort(), toInt(), QLocale::toShort()
*/
@@ -7295,9 +7848,10 @@ qulonglong QString::toIntegral_helper(QStringView string, bool *ok, uint base)
If \a ok is not \nullptr, failure is reported by setting *\a{ok}
to \c false, and success by setting *\a{ok} to \c true.
- If \a base is 0, the C language convention is used: if the string
- begins with "0x", base 16 is used; if the string begins with "0",
- base 8 is used; otherwise, base 10 is used.
+ If \a base is 0, the C language convention is used: if the string begins
+ with "0x", base 16 is used; otherwise, if the string begins with "0b", base
+ 2 is used; otherwise, if the string begins with "0", base 8 is used;
+ otherwise, base 10 is used.
The string conversion will always happen in the 'C' locale. For
locale-dependent conversion use QLocale::toUShort()
@@ -7308,6 +7862,8 @@ qulonglong QString::toIntegral_helper(QStringView string, bool *ok, uint base)
This function ignores leading and trailing whitespace.
+ \note Support for the "0b" prefix was added in Qt 6.4.
+
\sa number(), toShort(), QLocale::toUShort()
*/
@@ -7347,7 +7903,18 @@ qulonglong QString::toIntegral_helper(QStringView string, bool *ok, uint base)
double QString::toDouble(bool *ok) const
{
- return QLocaleData::c()->stringToDouble(*this, ok, QLocale::RejectGroupSeparator);
+ return QStringView(*this).toDouble(ok);
+}
+
+double QStringView::toDouble(bool *ok) const
+{
+ QStringView string = qt_trimmed(*this);
+ QVarLengthArray<uchar> latin1(string.size());
+ qt_to_latin1(latin1.data(), string.utf16(), string.size());
+ auto r = qt_asciiToDouble(reinterpret_cast<const char *>(latin1.data()), string.size());
+ if (ok != nullptr)
+ *ok = r.ok();
+ return r.result;
}
/*!
@@ -7385,6 +7952,11 @@ float QString::toFloat(bool *ok) const
return QLocaleData::convertDoubleToFloat(toDouble(ok), ok);
}
+float QStringView::toFloat(bool *ok) const
+{
+ return QLocaleData::convertDoubleToFloat(toDouble(ok), ok);
+}
+
/*! \fn QString &QString::setNum(int n, int base)
Sets the string to the printed value of \a n in the specified \a
@@ -7571,7 +8143,7 @@ QString QString::number(double n, char format, int precision)
{
QLocaleData::DoubleForm form = QLocaleData::DFDecimal;
- switch (qToLower(format)) {
+ switch (QtMiscUtils::toAsciiLower(format)) {
case 'f':
form = QLocaleData::DFDecimal;
break;
@@ -7588,7 +8160,7 @@ QString QString::number(double n, char format, int precision)
break;
}
- return qdtoBasicLatin(n, form, precision, qIsUpper(format));
+ return qdtoBasicLatin(n, form, precision, isAsciiUpper(format));
}
namespace {
@@ -7662,14 +8234,15 @@ QStringList QString::split(QChar sep, Qt::SplitBehavior behavior, Qt::CaseSensit
\fn QList<QStringView> QStringView::split(QStringView sep, Qt::SplitBehavior behavior, Qt::CaseSensitivity cs) const
- Splits the string into substring views wherever \a sep occurs, and
+ Splits the view into substring views wherever \a sep occurs, and
returns the list of those string views.
See QString::split() for how \a sep, \a behavior and \a cs interact to form
the result.
- \note All views are valid as long as this string is. Destroying this
- string will cause all views to be dangling pointers.
+ \note All the returned views are valid as long as the data referenced by
+ this string view is valid. Destroying the data will cause all views to
+ become dangling.
\since 6.0
*/
@@ -7685,19 +8258,20 @@ QList<QStringView> QStringView::split(QChar sep, Qt::SplitBehavior behavior, Qt:
#if QT_CONFIG(regularexpression)
namespace {
-template<class ResultList, typename String>
+template<class ResultList, typename String, typename MatchingFunction>
static ResultList splitString(const String &source, const QRegularExpression &re,
+ MatchingFunction matchingFunction,
Qt::SplitBehavior behavior)
{
ResultList list;
if (!re.isValid()) {
- qWarning("QString::split: invalid QRegularExpression object");
+ qtWarnAboutInvalidRegularExpression(re.pattern(), "QString::split");
return list;
}
qsizetype start = 0;
qsizetype end = 0;
- QRegularExpressionMatchIterator iterator = re.globalMatch(source);
+ QRegularExpressionMatchIterator iterator = (re.*matchingFunction)(source, 0, QRegularExpression::NormalMatch, QRegularExpression::NoMatchOption);
while (iterator.hasNext()) {
QRegularExpressionMatch match = iterator.next();
end = match.capturedStart();
@@ -7742,10 +8316,19 @@ static ResultList splitString(const String &source, const QRegularExpression &re
*/
QStringList QString::split(const QRegularExpression &re, Qt::SplitBehavior behavior) const
{
- return splitString<QStringList>(*this, re, behavior);
+#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0)
+ const auto matchingFunction = qOverload<const QString &, qsizetype, QRegularExpression::MatchType, QRegularExpression::MatchOptions>(&QRegularExpression::globalMatch);
+#else
+ const auto matchingFunction = &QRegularExpression::globalMatch;
+#endif
+ return splitString<QStringList>(*this,
+ re,
+ matchingFunction,
+ behavior);
}
/*!
+ \overload
\since 6.0
Splits the string into substring views wherever the regular expression \a re
@@ -7759,7 +8342,7 @@ QStringList QString::split(const QRegularExpression &re, Qt::SplitBehavior behav
*/
QList<QStringView> QStringView::split(const QRegularExpression &re, Qt::SplitBehavior behavior) const
{
- return splitString<QList<QStringView>>(*this, re, behavior);
+ return splitString<QList<QStringView>>(*this, re, &QRegularExpression::globalMatchView, behavior);
}
#endif // QT_CONFIG(regularexpression)
@@ -7830,7 +8413,7 @@ void qt_string_normalize(QString *data, QString::NormalizationForm mode, QChar::
// check if it's fully ASCII first, because then we have no work
auto start = reinterpret_cast<const char16_t *>(data->constData());
const char16_t *p = start + from;
- if (isAscii_helper(p, p + data->length() - from))
+ if (isAscii_helper(p, p + data->size() - from))
return;
if (p > start + from)
from = p - start - 1; // need one before the non-ASCII to perform NFC
@@ -7841,8 +8424,7 @@ void qt_string_normalize(QString *data, QString::NormalizationForm mode, QChar::
} else if (int(version) <= NormalizationCorrectionsVersionMax) {
const QString &s = *data;
QChar *d = nullptr;
- for (int i = 0; i < NumNormalizationCorrections; ++i) {
- const NormalizationCorrection &n = uc_normalization_corrections[i];
+ for (const NormalizationCorrection &n : uc_normalization_corrections) {
if (n.version > version) {
qsizetype pos = from;
if (QChar::requiresSurrogates(n.ucs4)) {
@@ -7850,7 +8432,7 @@ void qt_string_normalize(QString *data, QString::NormalizationForm mode, QChar::
char16_t ucs4Low = QChar::lowSurrogate(n.ucs4);
char16_t oldHigh = QChar::highSurrogate(n.old_mapping);
char16_t oldLow = QChar::lowSurrogate(n.old_mapping);
- while (pos < s.length() - 1) {
+ while (pos < s.size() - 1) {
if (s.at(pos).unicode() == ucs4High && s.at(pos + 1).unicode() == ucs4Low) {
if (!d)
d = data->data();
@@ -7860,7 +8442,7 @@ void qt_string_normalize(QString *data, QString::NormalizationForm mode, QChar::
++pos;
}
} else {
- while (pos < s.length()) {
+ while (pos < s.size()) {
if (s.at(pos).unicode() == n.ucs4) {
if (!d)
d = data->data();
@@ -7897,7 +8479,7 @@ QString QString::normalized(QString::NormalizationForm mode, QChar::UnicodeVersi
return copy;
}
-#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0)
+#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) && !defined(QT_BOOTSTRAPPED)
static void checkArgEscape(QStringView s)
{
// If we're in here, it means that qArgDigitValue has accepted the
@@ -7929,10 +8511,10 @@ static void checkArgEscape(QStringView s)
struct ArgEscapeData
{
int min_escape; // lowest escape sequence number
- int occurrences; // number of occurrences of the lowest escape sequence number
- int locale_occurrences; // number of occurrences of the lowest escape sequence number that
- // contain 'L'
- int escape_len; // total length of escape sequences which will be replaced
+ qsizetype occurrences; // number of occurrences of the lowest escape sequence number
+ qsizetype locale_occurrences; // number of occurrences of the lowest escape sequence number that
+ // contain 'L'
+ qsizetype escape_len; // total length of escape sequences which will be replaced
};
static ArgEscapeData findArgEscapes(QStringView s)
@@ -7971,7 +8553,7 @@ static ArgEscapeData findArgEscapes(QStringView s)
// ### Qt 7: do not allow anything but ASCII digits
// in arg()'s replacements.
-#if QT_VERSION <= QT_VERSION_CHECK(7, 0, 0)
+#if QT_VERSION <= QT_VERSION_CHECK(7, 0, 0) && !defined(QT_BOOTSTRAPPED)
const QChar *escapeBegin = c;
const QChar *escapeEnd = escapeBegin + 1;
#endif
@@ -7983,13 +8565,13 @@ static ArgEscapeData findArgEscapes(QStringView s)
if (next_escape != -1) {
escape = (10 * escape) + next_escape;
++c;
-#if QT_VERSION <= QT_VERSION_CHECK(7, 0, 0)
+#if QT_VERSION <= QT_VERSION_CHECK(7, 0, 0) && !defined(QT_BOOTSTRAPPED)
++escapeEnd;
#endif
}
}
-#if QT_VERSION <= QT_VERSION_CHECK(7, 0, 0)
+#if QT_VERSION <= QT_VERSION_CHECK(7, 0, 0) && !defined(QT_BOOTSTRAPPED)
checkArgEscape(QStringView(escapeBegin, escapeEnd));
#endif
@@ -8017,14 +8599,14 @@ static QString replaceArgEscapes(QStringView s, const ArgEscapeData &d, qsizetyp
// Negative field-width for right-padding, positive for left-padding:
const qsizetype abs_field_width = qAbs(field_width);
const qsizetype result_len =
- s.length() - d.escape_len
- + (d.occurrences - d.locale_occurrences) * qMax(abs_field_width, arg.length())
- + d.locale_occurrences * qMax(abs_field_width, larg.length());
+ s.size() - d.escape_len
+ + (d.occurrences - d.locale_occurrences) * qMax(abs_field_width, arg.size())
+ + d.locale_occurrences * qMax(abs_field_width, larg.size());
QString result(result_len, Qt::Uninitialized);
QChar *rc = const_cast<QChar *>(result.unicode());
QChar *const result_end = rc + result_len;
- int repl_cnt = 0;
+ qsizetype repl_cnt = 0;
const QChar *c = s.begin();
const QChar *const uc_end = s.end();
@@ -8062,20 +8644,19 @@ static QString replaceArgEscapes(QStringView s, const ArgEscapeData &d, qsizetyp
rc += escape_start - text_start;
const QStringView use = localize ? larg : arg;
- const qsizetype pad_chars = abs_field_width - use.length();
+ const qsizetype pad_chars = abs_field_width - use.size();
// (If negative, relevant loops are no-ops: no need to check.)
if (field_width > 0) { // left padded
- for (qsizetype i = 0; i < pad_chars; ++i)
- *rc++ = fillChar;
+ rc = std::fill_n(rc, pad_chars, fillChar);
}
- memcpy(rc, use.data(), use.length() * sizeof(QChar));
- rc += use.length();
+ if (use.size())
+ memcpy(rc, use.data(), use.size() * sizeof(QChar));
+ rc += use.size();
if (field_width < 0) { // right padded
- for (qsizetype i = 0; i < pad_chars; ++i)
- *rc++ = fillChar;
+ rc = std::fill_n(rc, pad_chars, fillChar);
}
if (++repl_cnt == d.occurrences) {
@@ -8091,7 +8672,6 @@ static QString replaceArgEscapes(QStringView s, const ArgEscapeData &d, qsizetyp
return result;
}
-#if QT_STRINGVIEW_LEVEL < 2
/*!
Returns a copy of this string with the lowest numbered place marker
replaced by string \a a, i.e., \c %1, \c %2, ..., \c %99.
@@ -8125,7 +8705,6 @@ QString QString::arg(const QString &a, int fieldWidth, QChar fillChar) const
{
return arg(qToStringViewIgnoringNull(a), fieldWidth, fillChar);
}
-#endif // QT_STRINGVIEW_LEVEL < 2
/*!
\overload
@@ -8176,7 +8755,7 @@ QString QString::arg(QStringView a, int fieldWidth, QChar fillChar) const
\since 5.10
Returns a copy of this string with the lowest-numbered place-marker
- replaced by string \a a, i.e., \c %1, \c %2, ..., \c %99.
+ replaced by the Latin-1 string viewed by \a a, i.e., \c %1, \c %2, ..., \c %99.
\a fieldWidth specifies the minimum amount of space that \a a
shall occupy. If \a a requires less space than \a fieldWidth, it
@@ -8195,10 +8774,9 @@ QString QString::arg(QStringView a, int fieldWidth, QChar fillChar) const
is printed and the result is undefined. Place-marker numbers must be
in the range 1 to 99.
*/
-QString QString::arg(QLatin1String a, int fieldWidth, QChar fillChar) const
+QString QString::arg(QLatin1StringView a, int fieldWidth, QChar fillChar) const
{
- QVarLengthArray<char16_t> utf16(a.size());
- qt_from_latin1(utf16.data(), a.data(), a.size());
+ QVarLengthArray<char16_t> utf16 = qt_from_latin1_to_qvla(a);
return arg(QStringView(utf16.data(), utf16.size()), fieldWidth, fillChar);
}
@@ -8300,14 +8878,13 @@ QString QString::arg(qlonglong a, int fieldWidth, int base, QChar fillChar) cons
unsigned flags = QLocaleData::NoFlags;
// ZeroPadded sorts out left-padding when the fill is zero, to the right of sign:
- if (fillChar == QLatin1Char('0'))
+ if (fillChar == u'0')
flags = QLocaleData::ZeroPadded;
QString arg;
if (d.occurrences > d.locale_occurrences) {
arg = QLocaleData::c()->longLongToString(a, -1, base, fieldWidth, flags);
- Q_ASSERT(fillChar != QLatin1Char('0') || !qIsFinite(a)
- || fieldWidth <= arg.length());
+ Q_ASSERT(fillChar != u'0' || fieldWidth <= arg.size());
}
QString localeArg;
@@ -8316,8 +8893,7 @@ QString QString::arg(qlonglong a, int fieldWidth, int base, QChar fillChar) cons
if (!(locale.numberOptions() & QLocale::OmitGroupSeparator))
flags |= QLocaleData::GroupDigits;
localeArg = locale.d->m_data->longLongToString(a, -1, base, fieldWidth, flags);
- Q_ASSERT(fillChar != QLatin1Char('0') || !qIsFinite(a)
- || fieldWidth <= localeArg.length());
+ Q_ASSERT(fillChar != u'0' || fieldWidth <= localeArg.size());
}
return replaceArgEscapes(*this, d, fieldWidth, arg, localeArg, fillChar);
@@ -8348,14 +8924,13 @@ QString QString::arg(qulonglong a, int fieldWidth, int base, QChar fillChar) con
unsigned flags = QLocaleData::NoFlags;
// ZeroPadded sorts out left-padding when the fill is zero, to the right of sign:
- if (fillChar == QLatin1Char('0'))
+ if (fillChar == u'0')
flags = QLocaleData::ZeroPadded;
QString arg;
if (d.occurrences > d.locale_occurrences) {
arg = QLocaleData::c()->unsLongLongToString(a, -1, base, fieldWidth, flags);
- Q_ASSERT(fillChar != QLatin1Char('0') || !qIsFinite(a)
- || fieldWidth <= arg.length());
+ Q_ASSERT(fillChar != u'0' || fieldWidth <= arg.size());
}
QString localeArg;
@@ -8364,8 +8939,7 @@ QString QString::arg(qulonglong a, int fieldWidth, int base, QChar fillChar) con
if (!(locale.numberOptions() & QLocale::OmitGroupSeparator))
flags |= QLocaleData::GroupDigits;
localeArg = locale.d->m_data->unsLongLongToString(a, -1, base, fieldWidth, flags);
- Q_ASSERT(fillChar != QLatin1Char('0') || !qIsFinite(a)
- || fieldWidth <= localeArg.length());
+ Q_ASSERT(fillChar != u'0' || fieldWidth <= localeArg.size());
}
return replaceArgEscapes(*this, d, fieldWidth, arg, localeArg, fillChar);
@@ -8448,14 +9022,14 @@ QString QString::arg(double a, int fieldWidth, char format, int precision, QChar
unsigned flags = QLocaleData::NoFlags;
// ZeroPadded sorts out left-padding when the fill is zero, to the right of sign:
- if (fillChar == QLatin1Char('0'))
+ if (fillChar == u'0')
flags |= QLocaleData::ZeroPadded;
- if (qIsUpper(format))
+ if (isAsciiUpper(format))
flags |= QLocaleData::CapitalEorX;
QLocaleData::DoubleForm form = QLocaleData::DFDecimal;
- switch (qToLower(format)) {
+ switch (QtMiscUtils::toAsciiLower(format)) {
case 'f':
form = QLocaleData::DFDecimal;
break;
@@ -8476,8 +9050,8 @@ QString QString::arg(double a, int fieldWidth, char format, int precision, QChar
if (d.occurrences > d.locale_occurrences) {
arg = QLocaleData::c()->doubleToString(a, precision, form, fieldWidth,
flags | QLocaleData::ZeroPadExponent);
- Q_ASSERT(fillChar != QLatin1Char('0') || !qIsFinite(a)
- || fieldWidth <= arg.length());
+ Q_ASSERT(fillChar != u'0' || !qt_is_finite(a)
+ || fieldWidth <= arg.size());
}
QString localeArg;
@@ -8492,8 +9066,8 @@ QString QString::arg(double a, int fieldWidth, char format, int precision, QChar
if (numberOptions & QLocale::IncludeTrailingZeroesAfterDot)
flags |= QLocaleData::AddTrailingZeroes;
localeArg = locale.d->m_data->doubleToString(a, precision, form, fieldWidth, flags);
- Q_ASSERT(fillChar != QLatin1Char('0') || !qIsFinite(a)
- || fieldWidth <= localeArg.length());
+ Q_ASSERT(fillChar != u'0' || !qt_is_finite(a)
+ || fieldWidth <= localeArg.size());
}
return replaceArgEscapes(*this, d, fieldWidth, arg, localeArg, fillChar);
@@ -8503,28 +9077,27 @@ static inline char16_t to_unicode(const QChar c) { return c.unicode(); }
static inline char16_t to_unicode(const char c) { return QLatin1Char{c}.unicode(); }
template <typename Char>
-static int getEscape(const Char *uc, qsizetype *pos, qsizetype len, int maxNumber = 999)
+static int getEscape(const Char *uc, qsizetype *pos, qsizetype len)
{
- int i = *pos;
+ qsizetype i = *pos;
++i;
- if (i < len && uc[i] == QLatin1Char('L'))
+ if (i < len && uc[i] == u'L')
++i;
if (i < len) {
int escape = to_unicode(uc[i]) - '0';
if (uint(escape) >= 10U)
return -1;
++i;
- while (i < len) {
+ if (i < len) {
+ // there's a second digit
int digit = to_unicode(uc[i]) - '0';
- if (uint(digit) >= 10U)
- break;
- escape = (escape * 10) + digit;
- ++i;
- }
- if (escape <= maxNumber) {
- *pos = i;
- return escape;
+ if (uint(digit) < 10U) {
+ escape = (escape * 10) + digit;
+ ++i;
+ }
}
+ *pos = i;
+ return escape;
}
return -1;
}
@@ -8569,11 +9142,11 @@ struct Part
Part() = default; // for QVarLengthArray; do not use
constexpr Part(QStringView s, int num = -1)
: tag{QtPrivate::ArgBase::U16}, number{num}, data{s.utf16()}, size{s.size()} {}
- constexpr Part(QLatin1String s, int num = -1)
+ constexpr Part(QLatin1StringView s, int num = -1)
: tag{QtPrivate::ArgBase::L1}, number{num}, data{s.data()}, size{s.size()} {}
void reset(QStringView s) noexcept { *this = {s, number}; }
- void reset(QLatin1String s) noexcept { *this = {s, number}; }
+ void reset(QLatin1StringView s) noexcept { *this = {s, number}; }
QtPrivate::ArgBase::Tag tag;
int number;
@@ -8603,7 +9176,7 @@ static ParseResult parseMultiArgFormatString(StringView s)
qsizetype last = 0;
while (i < end) {
- if (uc[i] == QLatin1Char('%')) {
+ if (uc[i] == u'%') {
qsizetype percent = i;
int number = getEscape(uc, &i, len);
if (number != -1) {
@@ -8627,7 +9200,7 @@ static ArgIndexToPlaceholderMap makeArgIndexToPlaceholderMap(const ParseResult &
{
ArgIndexToPlaceholderMap result;
- for (Part part : parts) {
+ for (const Part &part : parts) {
if (part.number >= 0)
result.push_back(part.number);
}
@@ -8668,7 +9241,7 @@ static qsizetype resolveStringRefsAndReturnTotalSize(ParseResult &parts, const A
} // unnamed namespace
-Q_ALWAYS_INLINE QString to_string(QLatin1String s) noexcept { return s; }
+Q_ALWAYS_INLINE QString to_string(QLatin1StringView s) noexcept { return s; }
Q_ALWAYS_INLINE QString to_string(QStringView s) noexcept { return s.toString(); }
template <typename StringView>
@@ -8693,7 +9266,7 @@ static QString argToQStringImpl(StringView pattern, size_t numArgs, const QtPriv
QString result(totalSize, Qt::Uninitialized);
auto out = const_cast<QChar*>(result.constData());
- for (Part part : parts) {
+ for (const Part &part : parts) {
switch (part.tag) {
case QtPrivate::ArgBase::L1:
if (part.size) {
@@ -8720,31 +9293,11 @@ QString QtPrivate::argToQString(QStringView pattern, size_t n, const ArgBase **a
return argToQStringImpl(pattern, n, args);
}
-QString QtPrivate::argToQString(QLatin1String pattern, size_t n, const ArgBase **args)
+QString QtPrivate::argToQString(QLatin1StringView pattern, size_t n, const ArgBase **args)
{
return argToQStringImpl(pattern, n, args);
}
-/*! \fn bool QString::isSimpleText() const
-
- \internal
-*/
-bool QString::isSimpleText() const
-{
- const char16_t *p = d.data();
- const char16_t * const end = p + d.size;
- while (p < end) {
- char16_t uc = *p;
- // sort out regions of complex text formatting
- if (uc > 0x058f && (uc < 0x1100 || uc > 0xfb0f)) {
- return false;
- }
- p++;
- }
-
- return true;
-}
-
/*! \fn bool QString::isRightToLeft() const
Returns \c true if the string is read right to left.
@@ -8852,7 +9405,8 @@ bool QString::isRightToLeft() const
Removes from the string the characters in the half-open range
[ \a first , \a last ). Returns an iterator to the character
- referred to by \a last before the erase.
+ immediately after the last erased character (i.e. the character
+ referred to by \a last before the erase).
*/
QString::iterator QString::erase(QString::const_iterator first, QString::const_iterator last)
{
@@ -8862,6 +9416,22 @@ QString::iterator QString::erase(QString::const_iterator first, QString::const_i
return begin() + start;
}
+/*!
+ \fn QString::iterator QString::erase(QString::const_iterator it)
+
+ \overload
+ \since 6.5
+
+ Removes the character denoted by \c it from the string.
+ Returns an iterator to the character immediately after the
+ erased character.
+
+ \code
+ QString c = "abcdefg";
+ auto it = c.erase(c.cbegin()); // c is now "bcdefg"; "it" points to "b"
+ \endcode
+*/
+
/*! \fn void QString::shrink_to_fit()
\since 5.10
@@ -8940,8 +9510,7 @@ QString &QString::setRawData(const QChar *unicode, qsizetype size)
/*! \fn QString QString::fromStdU16String(const std::u16string &str)
\since 5.5
- Returns a copy of the \a str string. The given string is assumed
- to be encoded in UTF-16.
+ \include qstring.cpp {from-std-string} {UTF-16} {fromUtf16()}
\sa fromUtf16(), fromStdWString(), fromStdU32String()
*/
@@ -8960,8 +9529,7 @@ QString &QString::setRawData(const QChar *unicode, qsizetype size)
/*! \fn QString QString::fromStdU32String(const std::u32string &str)
\since 5.5
- Returns a copy of the \a str string. The given string is assumed
- to be encoded in UCS-4.
+ \include qstring.cpp {from-std-string} {UCS-4} {fromUcs4()}
\sa fromUcs4(), fromStdWString(), fromStdU16String()
*/
@@ -8977,1108 +9545,7 @@ QString &QString::setRawData(const QChar *unicode, qsizetype size)
\sa toUcs4(), toStdWString(), toStdU16String()
*/
-/*! \class QLatin1String
- \inmodule QtCore
- \brief The QLatin1String class provides a thin wrapper around an US-ASCII/Latin-1 encoded string literal.
-
- \ingroup string-processing
- \reentrant
-
- Many of QString's member functions are overloaded to accept
- \c{const char *} instead of QString. This includes the copy
- constructor, the assignment operator, the comparison operators,
- and various other functions such as \l{QString::insert()}{insert()},
- \l{QString::replace()}{replace()}, and \l{QString::indexOf()}{indexOf()}.
- These functions are usually optimized to avoid constructing a
- QString object for the \c{const char *} data. For example,
- assuming \c str is a QString,
-
- \snippet code/src_corelib_text_qstring.cpp 3
-
- is much faster than
-
- \snippet code/src_corelib_text_qstring.cpp 4
-
- because it doesn't construct four temporary QString objects and
- make a deep copy of the character data.
-
- Applications that define \l QT_NO_CAST_FROM_ASCII (as explained
- in the QString documentation) don't have access to QString's
- \c{const char *} API. To provide an efficient way of specifying
- constant Latin-1 strings, Qt provides the QLatin1String, which is
- just a very thin wrapper around a \c{const char *}. Using
- QLatin1String, the example code above becomes
-
- \snippet code/src_corelib_text_qstring.cpp 5
-
- This is a bit longer to type, but it provides exactly the same
- benefits as the first version of the code, and is faster than
- converting the Latin-1 strings using QString::fromLatin1().
-
- Thanks to the QString(QLatin1String) constructor,
- QLatin1String can be used everywhere a QString is expected. For
- example:
-
- \snippet code/src_corelib_text_qstring.cpp 6
-
- \note If the function you're calling with a QLatin1String
- argument isn't actually overloaded to take QLatin1String, the
- implicit conversion to QString will trigger a memory allocation,
- which is usually what you want to avoid by using QLatin1String
- in the first place. In those cases, using QStringLiteral may be
- the better option.
-
- \sa QString, QLatin1Char, {QStringLiteral()}{QStringLiteral},
- QT_NO_CAST_FROM_ASCII
-*/
-
-/*!
- \typedef QLatin1String::value_type
- \since 5.10
-
- Alias for \c{const char}. Provided for compatibility with the STL.
-*/
-
-/*!
- \typedef QLatin1String::difference_type
- \since 5.10
-
- Alias for \c{qsizetype}. Provided for compatibility with the STL.
-*/
-
-/*!
- \typedef QLatin1String::size_type
- \since 5.10
-
- Alias for \c{qsizetype}. Provided for compatibility with the STL.
-
- \note In version prior to Qt 6, this was an alias for \c{int},
- restricting the amount of data that could be held in a QLatin1String
- on 64-bit architectures.
-*/
-
-/*!
- \typedef QLatin1String::reference
- \since 5.10
-
- Alias for \c{value_type &}. Provided for compatibility with the STL.
-*/
-
-/*!
- \typedef QLatin1String::const_reference
- \since 5.11
-
- Alias for \c{reference}. Provided for compatibility with the STL.
-*/
-
-/*!
- \typedef QLatin1String::iterator
- \since 5.10
-
- QLatin1String does not support mutable iterators, so this is the same
- as const_iterator.
-
- \sa const_iterator, reverse_iterator
-*/
-
-/*!
- \typedef QLatin1String::const_iterator
- \since 5.10
-
- \sa iterator, const_reverse_iterator
-*/
-
-/*!
- \typedef QLatin1String::reverse_iterator
- \since 5.10
-
- QLatin1String does not support mutable reverse iterators, so this is the
- same as const_reverse_iterator.
-
- \sa const_reverse_iterator, iterator
-*/
-
-/*!
- \typedef QLatin1String::const_reverse_iterator
- \since 5.10
-
- \sa reverse_iterator, const_iterator
-*/
-
-/*! \fn QLatin1String::QLatin1String()
- \since 5.6
-
- Constructs a QLatin1String object that stores a \nullptr.
-
- \sa data(), isEmpty(), isNull(), {Distinction Between Null and Empty Strings}
-*/
-
-/*! \fn QLatin1String::QLatin1String(const char *str)
-
- Constructs a QLatin1String object that stores \a str.
-
- The string data is \e not copied. The caller must be able to
- guarantee that \a str will not be deleted or modified as long as
- the QLatin1String object exists.
-
- \sa latin1()
-*/
-
-/*! \fn QLatin1String::QLatin1String(const char *str, qsizetype size)
-
- Constructs a QLatin1String object that stores \a str with \a size.
-
- The string data is \e not copied. The caller must be able to
- guarantee that \a str will not be deleted or modified as long as
- the QLatin1String object exists.
-
- \note: any null ('\\0') bytes in the byte array will be included in this
- string, which will be converted to Unicode null characters (U+0000) if this
- string is used by QString. This behavior is different from Qt 5.x.
-
- \sa latin1()
-*/
-
-/*!
- \fn QLatin1String::QLatin1String(const char *first, const char *last)
- \since 5.10
-
- Constructs a QLatin1String object that stores \a first with length
- (\a last - \a first).
-
- The range \c{[first,last)} must remain valid for the lifetime of
- this Latin-1 string object.
-
- Passing \nullptr as \a first is safe if \a last is \nullptr,
- too, and results in a null Latin-1 string.
-
- The behavior is undefined if \a last precedes \a first, \a first
- is \nullptr and \a last is not, or if \c{last - first >
- INT_MAX}.
-*/
-
-/*! \fn QLatin1String::QLatin1String(const QByteArray &str)
-
- Constructs a QLatin1String object that stores \a str.
-
- The string data is \e not copied. The caller must be able to
- guarantee that \a str will not be deleted or modified as long as
- the QLatin1String object exists.
-
- \sa latin1()
-*/
-
-/*! \fn QLatin1String::QLatin1String(QByteArrayView str)
- \since 6.3
-
- Constructs a QLatin1String object that stores \a str.
-
- The string data is \e not copied. The caller must be able to
- guarantee that the data which \a str is pointing to will not
- be deleted or modified as long as the QLatin1String object
- exists. The size is obtained from \a str as-is, without checking
- for a null-terminator.
-
- \note: any null ('\\0') bytes in the byte array will be included in this
- string, which will be converted to Unicode null characters (U+0000) if this
- string is used by QString.
-
- \sa latin1()
-*/
-
-/*!
- \fn QString QLatin1String::toString() const
- \since 6.0
-
- Converts this Latin-1 string into a QString. Equivalent to
- \code
- return QString(*this);
- \endcode
-*/
-
-/*! \fn const char *QLatin1String::latin1() const
-
- Returns the Latin-1 string stored in this object.
-*/
-
-/*! \fn const char *QLatin1String::data() const
-
- Returns the Latin-1 string stored in this object.
-*/
-
-/*! \fn qsizetype QLatin1String::size() const
-
- Returns the size of the Latin-1 string stored in this object.
-
- \note In version prior to Qt 6, this function returned \c{int},
- restricting the amount of data that could be held in a QLatin1String
- on 64-bit architectures.
-*/
-
-/*! \fn bool QLatin1String::isNull() const
- \since 5.10
-
- Returns whether the Latin-1 string stored in this object is null
- (\c{data() == nullptr}) or not.
-
- \sa isEmpty(), data()
-*/
-
-/*! \fn bool QLatin1String::isEmpty() const
- \since 5.10
-
- Returns whether the Latin-1 string stored in this object is empty
- (\c{size() == 0}) or not.
-
- \sa isNull(), size()
-*/
-
-/*! \fn QLatin1Char QLatin1String::at(qsizetype pos) const
- \since 5.8
-
- Returns the character at position \a pos in this object.
-
- \note This function performs no error checking.
- The behavior is undefined when \a pos < 0 or \a pos >= size().
-
- \sa operator[]()
-*/
-
-/*! \fn QLatin1Char QLatin1String::operator[](qsizetype pos) const
- \since 5.8
-
- Returns the character at position \a pos in this object.
-
- \note This function performs no error checking.
- The behavior is undefined when \a pos < 0 or \a pos >= size().
-
- \sa at()
-*/
-
-/*!
- \fn QLatin1Char QLatin1String::front() const
- \since 5.10
-
- Returns the first character in the string.
- Same as \c{at(0)}.
-
- This function is provided for STL compatibility.
-
- \warning Calling this function on an empty string constitutes
- undefined behavior.
-
- \sa back(), at(), operator[]()
-*/
-
-/*!
- \fn QLatin1Char QLatin1String::back() const
- \since 5.10
-
- Returns the last character in the string.
- Same as \c{at(size() - 1)}.
-
- This function is provided for STL compatibility.
-
- \warning Calling this function on an empty string constitutes
- undefined behavior.
-
- \sa front(), at(), operator[]()
-*/
-
-/*!
- \fn int QLatin1String::compare(QStringView str, Qt::CaseSensitivity cs) const
- \fn int QLatin1String::compare(QLatin1String l1, Qt::CaseSensitivity cs) const
- \fn int QLatin1String::compare(QChar ch) const
- \fn int QLatin1String::compare(QChar ch, Qt::CaseSensitivity cs) const
- \since 5.14
-
- Returns an integer that compares to zero as this Latin-1 string compares to the
- string-view \a str, Latin-1 string \a l1, or character \a ch, respectively.
-
- If \a cs is Qt::CaseSensitive (the default), the comparison is case sensitive;
- otherwise the comparison is case-insensitive.
-
- \sa operator==(), operator<(), operator>()
-*/
-
-/*!
- \fn int QLatin1String::compare(QLatin1Char ch, Qt::CaseSensitivity cs) const
- \since 6.3
- \overload
-*/
-
-
-/*!
- \fn bool QLatin1String::startsWith(QStringView str, Qt::CaseSensitivity cs) const
- \since 5.10
- \fn bool QLatin1String::startsWith(QLatin1String l1, Qt::CaseSensitivity cs) const
- \since 5.10
- \fn bool QLatin1String::startsWith(QChar ch) const
- \since 5.10
- \fn bool QLatin1String::startsWith(QChar ch, Qt::CaseSensitivity cs) const
- \since 5.10
-
- Returns \c true if this Latin-1 string starts with string-view \a str,
- Latin-1 string \a l1, or character \a ch, respectively;
- otherwise returns \c false.
-
- If \a cs is Qt::CaseSensitive (the default), the search is case-sensitive;
- otherwise the search is case-insensitive.
-
- \sa endsWith()
-*/
-
-/*!
- \fn bool QLatin1String::startsWith(QLatin1Char ch, Qt::CaseSensitivity cs) const
- \since 6.3
- \overload
-*/
-
-/*!
- \fn bool QLatin1String::endsWith(QStringView str, Qt::CaseSensitivity cs) const
- \since 5.10
- \fn bool QLatin1String::endsWith(QLatin1String l1, Qt::CaseSensitivity cs) const
- \since 5.10
- \fn bool QLatin1String::endsWith(QChar ch) const
- \since 5.10
- \fn bool QLatin1String::endsWith(QChar ch, Qt::CaseSensitivity cs) const
- \since 5.10
-
- Returns \c true if this Latin-1 string ends with string-view \a str,
- Latin-1 string \a l1, or character \a ch, respectively;
- otherwise returns \c false.
-
- If \a cs is Qt::CaseSensitive (the default), the search is case-sensitive;
- otherwise the search is case-insensitive.
-
- \sa startsWith()
-*/
-
-/*!
- \fn bool QLatin1String::endsWith(QLatin1Char ch, Qt::CaseSensitivity cs) const
- \since 6.3
- \overload
-*/
-
-/*!
- \fn qsizetype QLatin1String::indexOf(QStringView str, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
- \fn qsizetype QLatin1String::indexOf(QLatin1String l1, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
- \fn qsizetype QLatin1String::indexOf(QChar c, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
- \since 5.14
-
- Returns the index position of the first occurrence of the string-view
- \a str, Latin-1 string \a l1, or character \a ch, respectively, in this
- Latin-1 string, searching forward from index position \a from.
- Returns -1 if \a str is not found.
-
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
-
- If \a from is -1, the search starts at the last character; if it is
- -2, at the next to last character and so on.
-
- \sa QString::indexOf()
-*/
-
-/*!
- \fn qsizetype QLatin1String::indexOf(QLatin1Char ch, qsizetype from, Qt::CaseSensitivity cs) const
- \since 6.3
- \overload
-*/
-
-/*!
- \fn bool QLatin1String::contains(QStringView str, Qt::CaseSensitivity cs) const
- \fn bool QLatin1String::contains(QLatin1String l1, Qt::CaseSensitivity cs) const
- \fn bool QLatin1String::contains(QChar c, Qt::CaseSensitivity cs) const
- \since 5.14
-
- Returns \c true if this Latin-1 string contains an occurrence of the
- string-view \a str, Latin-1 string \a l1, or character \a ch;
- otherwise returns \c false.
-
- If \a cs is Qt::CaseSensitive (the default), the search is
- case-sensitive; otherwise the search is case-insensitive.
-
- \sa indexOf(), QStringView::contains(), QStringView::indexOf(),
- QString::indexOf()
-*/
-
-/*!
- \fn bool QLatin1String::contains(QLatin1Char ch, Qt::CaseSensitivity cs) const
- \since 6.3
- \overload
-*/
-
-/*!
- \fn qsizetype QLatin1String::lastIndexOf(QStringView str, qsizetype from, Qt::CaseSensitivity cs) const
- \fn qsizetype QLatin1String::lastIndexOf(QLatin1String l1, qsizetype from, Qt::CaseSensitivity cs) const
- \fn qsizetype QLatin1String::lastIndexOf(QChar c, qsizetype from, Qt::CaseSensitivity cs) const
- \since 5.14
-
- Returns the index position of the last occurrence of the string-view \a str,
- Latin-1 string \a l1, or character \a ch, respectively, in this Latin-1
- string, searching backward from index position \a from.
- Returns -1 if \a str is not found.
-
- If \a from is -1, the search starts at the last character;
- if \a from is -2, at the next to last character and so on.
-
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
-
- \note When searching for a 0-length \a str or \a l1, the match at
- the end of the data is excluded from the search by a negative \a
- from, even though \c{-1} is normally thought of as searching from
- the end of the string: the match at the end is \e after the last
- character, so it is excluded. To include such a final empty match,
- either give a positive value for \a from or omit the \a from
- parameter entirely.
-
- \sa indexOf(), QStringView::lastIndexOf(), QStringView::indexOf(),
- QString::indexOf()
-*/
-
-/*!
- \fn qsizetype QLatin1String::lastIndexOf(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
- \fn qsizetype QLatin1String::lastIndexOf(QLatin1String l1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
- \since 6.2
- \overload lastIndexOf()
-
- Returns the index position of the last occurrence of the
- string-view \a str or Latin-1 string \a l1, respectively, in this
- Latin-1 string. Returns -1 if \a str is not found.
-
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
-*/
-
-/*!
- \fn qsizetype QLatin1String::lastIndexOf(QChar ch, Qt::CaseSensitivity cs) const
- \fn qsizetype QLatin1String::lastIndexOf(QLatin1Char ch, qsizetype from, Qt::CaseSensitivity cs) const
- \since 6.3
- \overload
-*/
-
-/*!
- \fn QLatin1String::const_iterator QLatin1String::begin() const
- \since 5.10
-
- Returns a const \l{STL-style iterators}{STL-style iterator} pointing to the
- first character in the string.
-
- This function is provided for STL compatibility.
-
- \sa end(), cbegin(), rbegin(), data()
-*/
-
-/*!
- \fn QLatin1String::const_iterator QLatin1String::cbegin() const
- \since 5.10
-
- Same as begin().
-
- This function is provided for STL compatibility.
-
- \sa cend(), begin(), crbegin(), data()
-*/
-
-/*!
- \fn QLatin1String::const_iterator QLatin1String::end() const
- \since 5.10
-
- Returns a const \l{STL-style iterators}{STL-style iterator} pointing just
- after the last character in the string.
-
- This function is provided for STL compatibility.
-
- \sa begin(), cend(), rend()
-*/
-
-/*! \fn QLatin1String::const_iterator QLatin1String::cend() const
- \since 5.10
-
- Same as end().
-
- This function is provided for STL compatibility.
-
- \sa cbegin(), end(), crend()
-*/
-
-/*!
- \fn QLatin1String::const_reverse_iterator QLatin1String::rbegin() const
- \since 5.10
-
- Returns a const \l{STL-style iterators}{STL-style} reverse iterator pointing
- to the first character in the string, in reverse order.
-
- This function is provided for STL compatibility.
-
- \sa rend(), crbegin(), begin()
-*/
-
-/*!
- \fn QLatin1String::const_reverse_iterator QLatin1String::crbegin() const
- \since 5.10
-
- Same as rbegin().
-
- This function is provided for STL compatibility.
-
- \sa crend(), rbegin(), cbegin()
-*/
-
-/*!
- \fn QLatin1String::const_reverse_iterator QLatin1String::rend() const
- \since 5.10
-
- Returns a \l{STL-style iterators}{STL-style} reverse iterator pointing just
- after the last character in the string, in reverse order.
-
- This function is provided for STL compatibility.
-
- \sa rbegin(), crend(), end()
-*/
-
-/*!
- \fn QLatin1String::const_reverse_iterator QLatin1String::crend() const
- \since 5.10
-
- Same as rend().
-
- This function is provided for STL compatibility.
-
- \sa crbegin(), rend(), cend()
-*/
-
-/*!
- \fn QLatin1String QLatin1String::mid(qsizetype start, qsizetype length) const
- \since 5.8
-
- Returns the substring of length \a length starting at position
- \a start in this Latin-1 string.
-
- If you know that \a start and \a length cannot be out of bounds, use
- sliced() instead in new code, because it is faster.
-
- Returns an empty Latin-1 string if \a start exceeds the
- length of this Latin-1 string. If there are less than \a length characters
- available in this Latin-1 string starting at \a start, or if
- \a length is negative (default), the function returns all characters that
- are available from \a start.
-
- \sa first(), last(), sliced(), chopped(), chop(), truncate()
-*/
-
-/*!
- \fn QLatin1String QLatin1String::left(qsizetype length) const
- \since 5.8
-
- If you know that \a length cannot be out of bounds, use first() instead in
- new code, because it is faster.
-
- Returns the substring of length \a length starting at position
- 0 in this Latin-1 string.
-
- The entire Latin-1 string is returned if \a length is greater than or equal
- to size(), or less than zero.
-
- \sa first(), last(), sliced(), startsWith(), chopped(), chop(), truncate()
-*/
-
-/*!
- \fn QLatin1String QLatin1String::right(qsizetype length) const
- \since 5.8
-
- If you know that \a length cannot be out of bounds, use last() instead in
- new code, because it is faster.
-
- Returns the substring of length \a length starting at position
- size() - \a length in this Latin-1 string.
-
- The entire Latin-1 string is returned if \a length is greater than or equal
- to size(), or less than zero.
-
- \sa first(), last(), sliced(), endsWith(), chopped(), chop(), truncate()
-*/
-
-/*!
- \fn QLatin1String QLatin1String::first(qsizetype n) const
- \since 6.0
-
- Returns a Latin-1 string that contains the first \a n characters
- of this Latin-1 string.
-
- \note The behavior is undefined when \a n < 0 or \a n > size().
-
- \sa last(), startsWith(), chopped(), chop(), truncate()
-*/
-
-/*!
- \fn QLatin1String QLatin1String::last(qsizetype n) const
- \since 6.0
-
- Returns a Latin-1 string that contains the last \a n characters
- of this Latin-1 string.
-
- \note The behavior is undefined when \a n < 0 or \a n > size().
-
- \sa first(), endsWith(), chopped(), chop(), truncate()
-*/
-
-/*!
- \fn QLatin1String QLatin1String::sliced(qsizetype pos, qsizetype n) const
- \since 6.0
-
- Returns a Latin-1 string that points to \a n characters of this
- Latin-1 string, starting at position \a pos.
-
- \note The behavior is undefined when \a pos < 0, \a n < 0,
- or \c{pos + n > size()}.
-
- \sa first(), last(), chopped(), chop(), truncate()
-*/
-
-/*!
- \fn QLatin1String QLatin1String::sliced(qsizetype pos) const
- \since 6.0
-
- Returns a Latin-1 string starting at position \a pos in this
- Latin-1 string, and extending to its end.
-
- \note The behavior is undefined when \a pos < 0 or \a pos > size().
-
- \sa first(), last(), chopped(), chop(), truncate()
-*/
-
-/*!
- \fn QLatin1String QLatin1String::chopped(qsizetype length) const
- \since 5.10
-
- Returns the substring of length size() - \a length starting at the
- beginning of this object.
-
- Same as \c{left(size() - length)}.
-
- \note The behavior is undefined when \a length < 0 or \a length > size().
-
- \sa sliced(), first(), last(), chop(), truncate()
-*/
-
-/*!
- \fn void QLatin1String::truncate(qsizetype length)
- \since 5.10
-
- Truncates this string to length \a length.
-
- Same as \c{*this = left(length)}.
-
- \note The behavior is undefined when \a length < 0 or \a length > size().
-
- \sa sliced(), first(), last(), chopped(), chop()
-*/
-
-/*!
- \fn void QLatin1String::chop(qsizetype length)
- \since 5.10
-
- Truncates this string by \a length characters.
-
- Same as \c{*this = left(size() - length)}.
-
- \note The behavior is undefined when \a length < 0 or \a length > size().
-
- \sa sliced(), first(), last(), chopped(), truncate()
-*/
-
-/*!
- \fn QLatin1String QLatin1String::trimmed() const
- \since 5.10
-
- Strips leading and trailing whitespace and returns the result.
-
- Whitespace means any character for which QChar::isSpace() returns
- \c true. This includes the ASCII characters '\\t', '\\n', '\\v',
- '\\f', '\\r', and ' '.
-*/
-
-/*!
- \fn bool QLatin1String::operator==(const char *other) const
- \since 4.3
-
- Returns \c true if the string is equal to const char pointer \a other;
- otherwise returns \c false.
-
- The \a other const char pointer is converted to a QString using
- the QString::fromUtf8() function.
-
- You can disable this operator by defining
- \l QT_NO_CAST_FROM_ASCII when you compile your applications. This
- can be useful if you want to ensure that all user-visible strings
- go through QObject::tr(), for example.
-
- \sa {Comparing Strings}
-*/
-
-/*!
- \fn bool QLatin1String::operator==(const QByteArray &other) const
- \since 5.0
- \overload
-
- The \a other byte array is converted to a QString using
- the QString::fromUtf8() function.
-
- You can disable this operator by defining
- \l QT_NO_CAST_FROM_ASCII when you compile your applications. This
- can be useful if you want to ensure that all user-visible strings
- go through QObject::tr(), for example.
-*/
-
-/*!
- \fn bool QLatin1String::operator!=(const char *other) const
- \since 4.3
-
- Returns \c true if this string is not equal to const char pointer \a other;
- otherwise returns \c false.
-
- The \a other const char pointer is converted to a QString using
- the QString::fromUtf8() function.
-
- You can disable this operator by defining
- \l QT_NO_CAST_FROM_ASCII when you compile your applications. This
- can be useful if you want to ensure that all user-visible strings
- go through QObject::tr(), for example.
-
- \sa {Comparing Strings}
-*/
-
-/*!
- \fn bool QLatin1String::operator!=(const QByteArray &other) const
- \since 5.0
- \overload operator!=()
-
- The \a other byte array is converted to a QString using
- the QString::fromUtf8() function.
-
- You can disable this operator by defining
- \l QT_NO_CAST_FROM_ASCII when you compile your applications. This
- can be useful if you want to ensure that all user-visible strings
- go through QObject::tr(), for example.
-*/
-
-/*!
- \fn bool QLatin1String::operator>(const char *other) const
- \since 4.3
-
- Returns \c true if this string is lexically greater than const char pointer
- \a other; otherwise returns \c false.
-
- The \a other const char pointer is converted to a QString using
- the QString::fromUtf8() function.
-
- You can disable this operator by defining \l QT_NO_CAST_FROM_ASCII
- when you compile your applications. This can be useful if you want
- to ensure that all user-visible strings go through QObject::tr(),
- for example.
-
- \sa {Comparing Strings}
-*/
-
-/*!
- \fn bool QLatin1String::operator>(const QByteArray &other) const
- \since 5.0
- \overload
-
- The \a other byte array is converted to a QString using
- the QString::fromUtf8() function.
-
- You can disable this operator by defining \l QT_NO_CAST_FROM_ASCII
- when you compile your applications. This can be useful if you want
- to ensure that all user-visible strings go through QObject::tr(),
- for example.
-*/
-
-/*!
- \fn bool QLatin1String::operator<(const char *other) const
- \since 4.3
-
- Returns \c true if this string is lexically less than const char pointer
- \a other; otherwise returns \c false.
-
- The \a other const char pointer is converted to a QString using
- the QString::fromUtf8() function.
-
- You can disable this operator by defining
- \l QT_NO_CAST_FROM_ASCII when you compile your applications. This
- can be useful if you want to ensure that all user-visible strings
- go through QObject::tr(), for example.
-
- \sa {Comparing Strings}
-*/
-
-/*!
- \fn bool QLatin1String::operator<(const QByteArray &other) const
- \since 5.0
- \overload
-
- The \a other byte array is converted to a QString using
- the QString::fromUtf8() function.
-
- You can disable this operator by defining
- \l QT_NO_CAST_FROM_ASCII when you compile your applications. This
- can be useful if you want to ensure that all user-visible strings
- go through QObject::tr(), for example.
-*/
-
-/*!
- \fn bool QLatin1String::operator>=(const char *other) const
- \since 4.3
-
- Returns \c true if this string is lexically greater than or equal to
- const char pointer \a other; otherwise returns \c false.
-
- The \a other const char pointer is converted to a QString using
- the QString::fromUtf8() function.
-
- You can disable this operator by defining
- \l QT_NO_CAST_FROM_ASCII when you compile your applications. This
- can be useful if you want to ensure that all user-visible strings
- go through QObject::tr(), for example.
-
- \sa {Comparing Strings}
-*/
-
-/*!
- \fn bool QLatin1String::operator>=(const QByteArray &other) const
- \since 5.0
- \overload
-
- The \a other byte array is converted to a QString using
- the QString::fromUtf8() function.
-
- You can disable this operator by defining
- \l QT_NO_CAST_FROM_ASCII when you compile your applications. This
- can be useful if you want to ensure that all user-visible strings
- go through QObject::tr(), for example.
-*/
-
-/*!
- \fn bool QLatin1String::operator<=(const char *other) const
- \since 4.3
-
- Returns \c true if this string is lexically less than or equal to
- const char pointer \a other; otherwise returns \c false.
-
- The \a other const char pointer is converted to a QString using
- the QString::fromUtf8() function.
-
- You can disable this operator by defining
- \l QT_NO_CAST_FROM_ASCII when you compile your applications. This
- can be useful if you want to ensure that all user-visible strings
- go through QObject::tr(), for example.
-
- \sa {Comparing Strings}
-*/
-
-/*!
- \fn bool QLatin1String::operator<=(const QByteArray &other) const
- \since 5.0
- \overload
-
- The \a other byte array is converted to a QString using
- the QString::fromUtf8() function.
-
- You can disable this operator by defining
- \l QT_NO_CAST_FROM_ASCII when you compile your applications. This
- can be useful if you want to ensure that all user-visible strings
- go through QObject::tr(), for example.
-*/
-
-/*! \fn bool QLatin1String::operator==(QLatin1String s1, QLatin1String s2)
-
- Returns \c true if string \a s1 is lexically equal to string \a s2;
- otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator!=(QLatin1String s1, QLatin1String s2)
-
- Returns \c true if string \a s1 is lexically not equal to string \a s2;
- otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator<(QLatin1String s1, QLatin1String s2)
-
- Returns \c true if string \a s1 is lexically less than string \a s2;
- otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator<=(QLatin1String s1, QLatin1String s2)
-
- Returns \c true if string \a s1 is lexically less than or equal to
- string \a s2; otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator>(QLatin1String s1, QLatin1String s2)
-
- Returns \c true if string \a s1 is lexically greater than string \a s2;
- otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator>=(QLatin1String s1, QLatin1String s2)
-
- Returns \c true if string \a s1 is lexically greater than or equal
- to string \a s2; otherwise returns \c false.
-*/
-
-/*! \fn bool QLatin1String::operator==(QChar ch, QLatin1String s)
-
- Returns \c true if char \a ch is lexically equal to string \a s;
- otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator<(QChar ch, QLatin1String s)
-
- Returns \c true if char \a ch is lexically less than string \a s;
- otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator>(QChar ch, QLatin1String s)
- Returns \c true if char \a ch is lexically greater than string \a s;
- otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator!=(QChar ch, QLatin1String s)
-
- Returns \c true if char \a ch is lexically not equal to string \a s;
- otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator<=(QChar ch, QLatin1String s)
-
- Returns \c true if char \a ch is lexically less than or equal to
- string \a s; otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator>=(QChar ch, QLatin1String s)
-
- Returns \c true if char \a ch is lexically greater than or equal to
- string \a s; otherwise returns \c false.
-*/
-
-/*! \fn bool QLatin1String::operator==(QLatin1String s, QChar ch)
-
- Returns \c true if string \a s is lexically equal to char \a ch;
- otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator<(QLatin1String s, QChar ch)
-
- Returns \c true if string \a s is lexically less than char \a ch;
- otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator>(QLatin1String s, QChar ch)
-
- Returns \c true if string \a s is lexically greater than char \a ch;
- otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator!=(QLatin1String s, QChar ch)
-
- Returns \c true if string \a s is lexically not equal to char \a ch;
- otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator<=(QLatin1String s, QChar ch)
-
- Returns \c true if string \a s is lexically less than or equal to
- char \a ch; otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator>=(QLatin1String s, QChar ch)
-
- Returns \c true if string \a s is lexically greater than or equal to
- char \a ch; otherwise returns \c false.
-*/
-
-/*! \fn bool QLatin1String::operator==(QStringView s1, QLatin1String s2)
-
- Returns \c true if string view \a s1 is lexically equal to string \a s2;
- otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator<(QStringView s1, QLatin1String s2)
-
- Returns \c true if string view \a s1 is lexically less than string \a s2;
- otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator>(QStringView s1, QLatin1String s2)
-
- Returns \c true if string view \a s1 is lexically greater than string \a s2;
- otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator!=(QStringView s1, QLatin1String s2)
-
- Returns \c true if string view \a s1 is lexically not equal to string \a s2;
- otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator<=(QStringView s1, QLatin1String s2)
-
- Returns \c true if string view \a s1 is lexically less than or equal to
- string \a s2; otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator>=(QStringView s1, QLatin1String s2)
-
- Returns \c true if string view \a s1 is lexically greater than or equal to
- string \a s2; otherwise returns \c false.
-*/
-
-/*! \fn bool QLatin1String::operator==(QLatin1String s1, QStringView s2)
-
- Returns \c true if string \a s1 is lexically equal to string view \a s2;
- otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator<(QLatin1String s1, QStringView s2)
-
- Returns \c true if string \a s1 is lexically less than string view \a s2;
- otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator>(QLatin1String s1, QStringView s2)
-
- Returns \c true if string \a s1 is lexically greater than string view \a s2;
- otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator!=(QLatin1String s1, QStringView s2)
-
- Returns \c true if string \a s1 is lexically not equal to string view \a s2;
- otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator<=(QLatin1String s1, QStringView s2)
-
- Returns \c true if string \a s1 is lexically less than or equal to
- string view \a s2; otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator>=(QLatin1String s1, QStringView s2)
-
- Returns \c true if string \a s1 is lexically greater than or equal to
- string view \a s2; otherwise returns \c false.
-*/
-
-/*! \fn bool QLatin1String::operator==(const char *s1, QLatin1String s2)
-
- Returns \c true if const char pointer \a s1 is lexically equal to
- string \a s2; otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator<(const char *s1, QLatin1String s2)
-
- Returns \c true if const char pointer \a s1 is lexically less than
- string \a s2; otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator>(const char *s1, QLatin1String s2)
-
- Returns \c true if const char pointer \a s1 is lexically greater than
- string \a s2; otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator!=(const char *s1, QLatin1String s2)
-
- Returns \c true if const char pointer \a s1 is lexically not equal to
- string \a s2; otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator<=(const char *s1, QLatin1String s2)
-
- Returns \c true if const char pointer \a s1 is lexically less than or
- equal to string \a s2; otherwise returns \c false.
-*/
-/*! \fn bool QLatin1String::operator>=(const char *s1, QLatin1String s2)
-
- Returns \c true if const char pointer \a s1 is lexically greater than or
- equal to string \a s2; otherwise returns \c false.
-*/
-
-#if !defined(QT_NO_DATASTREAM) || defined(QT_BOOTSTRAPPED)
+#if !defined(QT_NO_DATASTREAM)
/*!
\fn QDataStream &operator<<(QDataStream &stream, const QString &string)
\relates QString
@@ -10096,16 +9563,15 @@ QDataStream &operator<<(QDataStream &out, const QString &str)
if (!str.isNull() || out.version() < 3) {
if ((out.byteOrder() == QDataStream::BigEndian) == (QSysInfo::ByteOrder == QSysInfo::BigEndian)) {
out.writeBytes(reinterpret_cast<const char *>(str.unicode()),
- static_cast<uint>(sizeof(QChar) * str.length()));
+ static_cast<qsizetype>(sizeof(QChar) * str.size()));
} else {
- QVarLengthArray<char16_t> buffer(str.length());
- qbswap<sizeof(char16_t)>(str.constData(), str.length(), buffer.data());
+ QVarLengthArray<char16_t> buffer(str.size());
+ qbswap<sizeof(char16_t)>(str.constData(), str.size(), buffer.data());
out.writeBytes(reinterpret_cast<const char *>(buffer.data()),
- static_cast<uint>(sizeof(char16_t) * buffer.size()));
+ static_cast<qsizetype>(sizeof(char16_t) * buffer.size()));
}
} else {
- // write null marker
- out << (quint32)0xffffffff;
+ QDataStream::writeQSizeType(out, -1); // write null marker
}
}
return out;
@@ -10127,20 +9593,25 @@ QDataStream &operator>>(QDataStream &in, QString &str)
in >> l;
str = QString::fromLatin1(l);
} else {
- quint32 bytes = 0;
- in >> bytes; // read size of string
- if (bytes == 0xffffffff) { // null string
+ qint64 size = QDataStream::readQSizeType(in);
+ qsizetype bytes = size;
+ if (size != bytes || size < -1) {
str.clear();
- } else if (bytes > 0) { // not empty
+ in.setStatus(QDataStream::SizeLimitExceeded);
+ return in;
+ }
+ if (bytes == -1) { // null string
+ str = QString();
+ } else if (bytes > 0) {
if (bytes & 0x1) {
str.clear();
in.setStatus(QDataStream::ReadCorruptData);
return in;
}
- const quint32 Step = 1024 * 1024;
- quint32 len = bytes / 2;
- quint32 allocated = 0;
+ const qsizetype Step = 1024 * 1024;
+ qsizetype len = bytes / 2;
+ qsizetype allocated = 0;
while (allocated < len) {
int blockSize = qMin(Step, len - allocated);
@@ -10160,7 +9631,7 @@ QDataStream &operator>>(QDataStream &in, QString &str)
qbswap<sizeof(*data)>(data, len, data);
}
} else {
- str = QString(QLatin1String(""));
+ str = QString(QLatin1StringView(""));
}
}
return in;
@@ -10254,64 +9725,81 @@ qsizetype QtPrivate::count(QStringView haystack, QStringView needle, Qt::CaseSen
return num;
}
-qsizetype QtPrivate::count(QStringView haystack, QChar ch, Qt::CaseSensitivity cs) noexcept
+qsizetype QtPrivate::count(QStringView haystack, QChar needle, Qt::CaseSensitivity cs) noexcept
{
- qsizetype num = 0;
- if (cs == Qt::CaseSensitive) {
- for (QChar c : haystack) {
- if (c == ch)
- ++num;
- }
- } else {
- ch = foldCase(ch);
- for (QChar c : haystack) {
- if (foldCase(c) == ch)
- ++num;
- }
- }
- return num;
+ if (cs == Qt::CaseSensitive)
+ return std::count(haystack.cbegin(), haystack.cend(), needle);
+
+ needle = foldCase(needle);
+ return std::count_if(haystack.cbegin(), haystack.cend(),
+ [needle](const QChar c) { return foldAndCompare(c, needle); });
}
-template <typename Haystack, typename Needle>
-bool qt_starts_with_impl(Haystack haystack, Needle needle, Qt::CaseSensitivity cs) noexcept
+qsizetype QtPrivate::count(QLatin1StringView haystack, QLatin1StringView needle, Qt::CaseSensitivity cs)
{
- if (haystack.isNull())
- return needle.isNull();
- const auto haystackLen = haystack.size();
- const auto needleLen = needle.size();
- if (haystackLen == 0)
- return needleLen == 0;
- if (needleLen > haystackLen)
- return false;
+ qsizetype num = 0;
+ qsizetype i = -1;
- return QtPrivate::compareStrings(haystack.left(needleLen), needle, cs) == 0;
+ QLatin1StringMatcher matcher(needle, cs);
+ while ((i = matcher.indexIn(haystack, i + 1)) != -1)
+ ++num;
+
+ return num;
}
-static inline bool qt_starts_with(QStringView haystack, QStringView needle, Qt::CaseSensitivity cs)
+qsizetype QtPrivate::count(QLatin1StringView haystack, QStringView needle, Qt::CaseSensitivity cs)
{
- return qt_starts_with_impl(haystack, needle, cs);
+ if (haystack.size() < needle.size())
+ return 0;
+
+ if (!QtPrivate::isLatin1(needle)) // won't find non-L1 UTF-16 needles in a L1 haystack!
+ return 0;
+
+ qsizetype num = 0;
+ qsizetype i = -1;
+
+ QVarLengthArray<uchar> s(needle.size());
+ qt_to_latin1_unchecked(s.data(), needle.utf16(), needle.size());
+
+ QLatin1StringMatcher matcher(QLatin1StringView(reinterpret_cast<char *>(s.data()), s.size()),
+ cs);
+ while ((i = matcher.indexIn(haystack, i + 1)) != -1)
+ ++num;
+
+ return num;
}
-static inline bool qt_starts_with(QStringView haystack, QLatin1String needle, Qt::CaseSensitivity cs)
+qsizetype QtPrivate::count(QStringView haystack, QLatin1StringView needle, Qt::CaseSensitivity cs)
{
- return qt_starts_with_impl(haystack, needle, cs);
+ if (haystack.size() < needle.size())
+ return -1;
+
+ QVarLengthArray<char16_t> s = qt_from_latin1_to_qvla(needle);
+ return QtPrivate::count(haystack, QStringView(s.data(), s.size()), cs);
}
-static inline bool qt_starts_with(QStringView haystack, QChar needle, Qt::CaseSensitivity cs)
+qsizetype QtPrivate::count(QLatin1StringView haystack, QChar needle, Qt::CaseSensitivity cs) noexcept
{
- return haystack.size()
- && (cs == Qt::CaseSensitive ? haystack.front() == needle
- : foldCase(haystack.front()) == foldCase(needle));
+ // non-L1 needles cannot possibly match in L1-only haystacks
+ if (needle.unicode() > 0xff)
+ return 0;
+
+ if (cs == Qt::CaseSensitive) {
+ return std::count(haystack.cbegin(), haystack.cend(), needle.toLatin1());
+ } else {
+ return std::count_if(haystack.cbegin(), haystack.cend(),
+ CaseInsensitiveL1::matcher(needle.toLatin1()));
+ }
}
/*!
\fn bool QtPrivate::startsWith(QStringView haystack, QStringView needle, Qt::CaseSensitivity cs)
\since 5.10
- \fn bool QtPrivate::startsWith(QStringView haystack, QLatin1String needle, Qt::CaseSensitivity cs)
+ \fn bool QtPrivate::startsWith(QStringView haystack, QLatin1StringView needle, Qt::CaseSensitivity cs)
\since 5.10
- \fn bool QtPrivate::startsWith(QLatin1String haystack, QStringView needle, Qt::CaseSensitivity cs)
+ \fn bool QtPrivate::startsWith(QLatin1StringView haystack, QStringView needle, Qt::CaseSensitivity cs)
\since 5.10
- \fn bool QtPrivate::startsWith(QLatin1String haystack, QLatin1String needle, Qt::CaseSensitivity cs)
+ \fn bool QtPrivate::startsWith(QLatin1StringView haystack, QLatin1StringView needle, Qt::CaseSensitivity cs)
\since 5.10
\internal
\relates QStringView
@@ -10319,10 +9807,9 @@ static inline bool qt_starts_with(QStringView haystack, QChar needle, Qt::CaseSe
Returns \c true if \a haystack starts with \a needle,
otherwise returns \c false.
- If \a cs is Qt::CaseSensitive (the default), the search is case-sensitive;
- otherwise the search is case-insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
- \sa QtPrivate::endsWith(), QString::endsWith(), QStringView::endsWith(), QLatin1String::endsWith()
+ \sa QtPrivate::endsWith(), QString::endsWith(), QStringView::endsWith(), QLatin1StringView::endsWith()
*/
bool QtPrivate::startsWith(QStringView haystack, QStringView needle, Qt::CaseSensitivity cs) noexcept
@@ -10330,61 +9817,29 @@ bool QtPrivate::startsWith(QStringView haystack, QStringView needle, Qt::CaseSen
return qt_starts_with_impl(haystack, needle, cs);
}
-bool QtPrivate::startsWith(QStringView haystack, QLatin1String needle, Qt::CaseSensitivity cs) noexcept
+bool QtPrivate::startsWith(QStringView haystack, QLatin1StringView needle, Qt::CaseSensitivity cs) noexcept
{
return qt_starts_with_impl(haystack, needle, cs);
}
-bool QtPrivate::startsWith(QLatin1String haystack, QStringView needle, Qt::CaseSensitivity cs) noexcept
+bool QtPrivate::startsWith(QLatin1StringView haystack, QStringView needle, Qt::CaseSensitivity cs) noexcept
{
return qt_starts_with_impl(haystack, needle, cs);
}
-bool QtPrivate::startsWith(QLatin1String haystack, QLatin1String needle, Qt::CaseSensitivity cs) noexcept
+bool QtPrivate::startsWith(QLatin1StringView haystack, QLatin1StringView needle, Qt::CaseSensitivity cs) noexcept
{
return qt_starts_with_impl(haystack, needle, cs);
}
-template <typename Haystack, typename Needle>
-bool qt_ends_with_impl(Haystack haystack, Needle needle, Qt::CaseSensitivity cs) noexcept
-{
- if (haystack.isNull())
- return needle.isNull();
- const auto haystackLen = haystack.size();
- const auto needleLen = needle.size();
- if (haystackLen == 0)
- return needleLen == 0;
- if (haystackLen < needleLen)
- return false;
-
- return QtPrivate::compareStrings(haystack.right(needleLen), needle, cs) == 0;
-}
-
-static inline bool qt_ends_with(QStringView haystack, QStringView needle, Qt::CaseSensitivity cs)
-{
- return qt_ends_with_impl(haystack, needle, cs);
-}
-
-static inline bool qt_ends_with(QStringView haystack, QLatin1String needle, Qt::CaseSensitivity cs)
-{
- return qt_ends_with_impl(haystack, needle, cs);
-}
-
-static inline bool qt_ends_with(QStringView haystack, QChar needle, Qt::CaseSensitivity cs)
-{
- return haystack.size()
- && (cs == Qt::CaseSensitive ? haystack.back() == needle
- : foldCase(haystack.back()) == foldCase(needle));
-}
-
/*!
\fn bool QtPrivate::endsWith(QStringView haystack, QStringView needle, Qt::CaseSensitivity cs)
\since 5.10
- \fn bool QtPrivate::endsWith(QStringView haystack, QLatin1String needle, Qt::CaseSensitivity cs)
+ \fn bool QtPrivate::endsWith(QStringView haystack, QLatin1StringView needle, Qt::CaseSensitivity cs)
\since 5.10
- \fn bool QtPrivate::endsWith(QLatin1String haystack, QStringView needle, Qt::CaseSensitivity cs)
+ \fn bool QtPrivate::endsWith(QLatin1StringView haystack, QStringView needle, Qt::CaseSensitivity cs)
\since 5.10
- \fn bool QtPrivate::endsWith(QLatin1String haystack, QLatin1String needle, Qt::CaseSensitivity cs)
+ \fn bool QtPrivate::endsWith(QLatin1StringView haystack, QLatin1StringView needle, Qt::CaseSensitivity cs)
\since 5.10
\internal
\relates QStringView
@@ -10392,10 +9847,9 @@ static inline bool qt_ends_with(QStringView haystack, QChar needle, Qt::CaseSens
Returns \c true if \a haystack ends with \a needle,
otherwise returns \c false.
- If \a cs is Qt::CaseSensitive (the default), the search is case-sensitive;
- otherwise the search is case-insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
- \sa QtPrivate::startsWith(), QString::endsWith(), QStringView::endsWith(), QLatin1String::endsWith()
+ \sa QtPrivate::startsWith(), QString::endsWith(), QStringView::endsWith(), QLatin1StringView::endsWith()
*/
bool QtPrivate::endsWith(QStringView haystack, QStringView needle, Qt::CaseSensitivity cs) noexcept
@@ -10403,17 +9857,17 @@ bool QtPrivate::endsWith(QStringView haystack, QStringView needle, Qt::CaseSensi
return qt_ends_with_impl(haystack, needle, cs);
}
-bool QtPrivate::endsWith(QStringView haystack, QLatin1String needle, Qt::CaseSensitivity cs) noexcept
+bool QtPrivate::endsWith(QStringView haystack, QLatin1StringView needle, Qt::CaseSensitivity cs) noexcept
{
return qt_ends_with_impl(haystack, needle, cs);
}
-bool QtPrivate::endsWith(QLatin1String haystack, QStringView needle, Qt::CaseSensitivity cs) noexcept
+bool QtPrivate::endsWith(QLatin1StringView haystack, QStringView needle, Qt::CaseSensitivity cs) noexcept
{
return qt_ends_with_impl(haystack, needle, cs);
}
-bool QtPrivate::endsWith(QLatin1String haystack, QLatin1String needle, Qt::CaseSensitivity cs) noexcept
+bool QtPrivate::endsWith(QLatin1StringView haystack, QLatin1StringView needle, Qt::CaseSensitivity cs) noexcept
{
return qt_ends_with_impl(haystack, needle, cs);
}
@@ -10422,6 +9876,8 @@ qsizetype QtPrivate::findString(QStringView haystack0, qsizetype from, QStringVi
{
const qsizetype l = haystack0.size();
const qsizetype sl = needle0.size();
+ if (sl == 1)
+ return findString(haystack0, from, needle0[0], cs);
if (from < 0)
from += l;
if (std::size_t(sl + from) > std::size_t(l))
@@ -10431,9 +9887,6 @@ qsizetype QtPrivate::findString(QStringView haystack0, qsizetype from, QStringVi
if (!l)
return -1;
- if (sl == 1)
- return qFindChar(haystack0, needle0[0], from, cs);
-
/*
We use the Boyer-Moore algorithm in cases where the overhead
for the skip table should pay off, otherwise we use a simple
@@ -10493,17 +9946,16 @@ qsizetype QtPrivate::findString(QStringView haystack0, qsizetype from, QStringVi
return -1;
}
-qsizetype QtPrivate::findString(QStringView haystack, qsizetype from, QLatin1String needle, Qt::CaseSensitivity cs) noexcept
+qsizetype QtPrivate::findString(QStringView haystack, qsizetype from, QLatin1StringView needle, Qt::CaseSensitivity cs) noexcept
{
if (haystack.size() < needle.size())
return -1;
- QVarLengthArray<char16_t> s(needle.size());
- qt_from_latin1(s.data(), needle.latin1(), needle.size());
+ QVarLengthArray<char16_t> s = qt_from_latin1_to_qvla(needle);
return QtPrivate::findString(haystack, from, QStringView(reinterpret_cast<const QChar*>(s.constData()), s.size()), cs);
}
-qsizetype QtPrivate::findString(QLatin1String haystack, qsizetype from, QStringView needle, Qt::CaseSensitivity cs) noexcept
+qsizetype QtPrivate::findString(QLatin1StringView haystack, qsizetype from, QStringView needle, Qt::CaseSensitivity cs) noexcept
{
if (haystack.size() < needle.size())
return -1;
@@ -10511,12 +9963,17 @@ qsizetype QtPrivate::findString(QLatin1String haystack, qsizetype from, QStringV
if (!QtPrivate::isLatin1(needle)) // won't find non-L1 UTF-16 needles in a L1 haystack!
return -1;
+ if (needle.size() == 1) {
+ const char n = needle.front().toLatin1();
+ return QtPrivate::findString(haystack, from, QLatin1StringView(&n, 1), cs);
+ }
+
QVarLengthArray<char> s(needle.size());
qt_to_latin1_unchecked(reinterpret_cast<uchar *>(s.data()), needle.utf16(), needle.size());
- return QtPrivate::findString(haystack, from, QLatin1String(s.data(), s.size()), cs);
+ return QtPrivate::findString(haystack, from, QLatin1StringView(s.data(), s.size()), cs);
}
-qsizetype QtPrivate::findString(QLatin1String haystack, qsizetype from, QLatin1String needle, Qt::CaseSensitivity cs) noexcept
+qsizetype QtPrivate::findString(QLatin1StringView haystack, qsizetype from, QLatin1StringView needle, Qt::CaseSensitivity cs) noexcept
{
if (from < 0)
from += haystack.size();
@@ -10529,7 +9986,15 @@ qsizetype QtPrivate::findString(QLatin1String haystack, qsizetype from, QLatin1S
return from;
if (cs == Qt::CaseSensitive) {
- const QByteArrayMatcher matcher(needle);
+
+ if (needle.size() == 1) {
+ Q_ASSERT(haystack.data() != nullptr); // see size check above
+ if (auto it = memchr(haystack.data() + from, needle.front().toLatin1(), adjustedSize))
+ return static_cast<const char *>(it) - haystack.data();
+ return -1;
+ }
+
+ const QLatin1StringMatcher matcher(needle, Qt::CaseSensitivity::CaseSensitive);
return matcher.indexIn(haystack, from);
}
@@ -10550,41 +10015,24 @@ qsizetype QtPrivate::findString(QLatin1String haystack, qsizetype from, QLatin1S
if (needle.size() <= threshold) {
const auto begin = haystack.begin();
const auto end = haystack.end() - needle.size() + 1;
- const uchar needle1 = latin1Lower[uchar(needle[0].toLatin1())];
- auto ciMatch = [needle1](const char ch) {
- return latin1Lower[uchar(ch)] == needle1;
- };
+ auto ciMatch = CaseInsensitiveL1::matcher(needle[0].toLatin1());
const qsizetype nlen1 = needle.size() - 1;
- for (auto it = std::find_if(begin + from, end, ciMatch); it < end;
+ for (auto it = std::find_if(begin + from, end, ciMatch); it != end;
it = std::find_if(it + 1, end, ciMatch)) {
// In this comparison we skip the first character because we know it's a match
- if (!nlen1 || QLatin1String(it + 1, nlen1).compare(needle.sliced(1), cs) == 0)
+ if (!nlen1 || QLatin1StringView(it + 1, nlen1).compare(needle.sliced(1), cs) == 0)
return std::distance(begin, it);
}
return -1;
}
-#ifdef __cpp_lib_boyer_moore_searcher
- const auto ciHasher = [](char a) { return latin1Lower[uchar(a)]; };
- const auto ciEqual = [](char a, char b) {
- return latin1Lower[uchar(a)] == latin1Lower[uchar(b)];
- };
- const auto it =
- std::search(haystack.begin() + from, haystack.end(),
- std::boyer_moore_searcher(needle.begin(), needle.end(), ciHasher, ciEqual));
- return it == haystack.end() ? -1 : std::distance(haystack.begin(), it);
-#else
- QVarLengthArray<char16_t> h(adjustedSize);
- const auto begin = haystack.end() - adjustedSize;
- qt_from_latin1(h.data(), begin, adjustedSize);
- QVarLengthArray<char16_t> n(needle.size());
- qt_from_latin1(n.data(), needle.latin1(), needle.size());
- qsizetype res = QtPrivate::findString(QStringView(h.constData(), h.size()), 0,
- QStringView(n.constData(), n.size()), cs);
- if (res == -1)
- return -1;
- return res + std::distance(haystack.begin(), begin);
-#endif
+ QLatin1StringMatcher matcher(needle, Qt::CaseSensitivity::CaseInsensitive);
+ return matcher.indexIn(haystack, from);
+}
+
+qsizetype QtPrivate::lastIndexOf(QStringView haystack, qsizetype from, char16_t needle, Qt::CaseSensitivity cs) noexcept
+{
+ return qLastIndexOf(haystack, QChar(needle), from, cs);
}
qsizetype QtPrivate::lastIndexOf(QStringView haystack, qsizetype from, QStringView needle, Qt::CaseSensitivity cs) noexcept
@@ -10592,30 +10040,32 @@ qsizetype QtPrivate::lastIndexOf(QStringView haystack, qsizetype from, QStringVi
return qLastIndexOf(haystack, from, needle, cs);
}
-qsizetype QtPrivate::lastIndexOf(QStringView haystack, qsizetype from, QLatin1String needle, Qt::CaseSensitivity cs) noexcept
+qsizetype QtPrivate::lastIndexOf(QStringView haystack, qsizetype from, QLatin1StringView needle, Qt::CaseSensitivity cs) noexcept
{
return qLastIndexOf(haystack, from, needle, cs);
}
-qsizetype QtPrivate::lastIndexOf(QLatin1String haystack, qsizetype from, QStringView needle, Qt::CaseSensitivity cs) noexcept
+qsizetype QtPrivate::lastIndexOf(QLatin1StringView haystack, qsizetype from, QStringView needle, Qt::CaseSensitivity cs) noexcept
{
return qLastIndexOf(haystack, from, needle, cs);
}
-qsizetype QtPrivate::lastIndexOf(QLatin1String haystack, qsizetype from, QLatin1String needle, Qt::CaseSensitivity cs) noexcept
+qsizetype QtPrivate::lastIndexOf(QLatin1StringView haystack, qsizetype from, QLatin1StringView needle, Qt::CaseSensitivity cs) noexcept
{
return qLastIndexOf(haystack, from, needle, cs);
}
#if QT_CONFIG(regularexpression)
-qsizetype QtPrivate::indexOf(QStringView haystack, const QRegularExpression &re, qsizetype from, QRegularExpressionMatch *rmatch)
+qsizetype QtPrivate::indexOf(QStringView viewHaystack, const QString *stringHaystack, const QRegularExpression &re, qsizetype from, QRegularExpressionMatch *rmatch)
{
if (!re.isValid()) {
- qWarning("QString(View)::indexOf: invalid QRegularExpression object");
+ qtWarnAboutInvalidRegularExpression(re.pattern(), "QString(View)::indexOf");
return -1;
}
- QRegularExpressionMatch match = re.match(haystack, from);
+ QRegularExpressionMatch match = stringHaystack
+ ? re.match(*stringHaystack, from)
+ : re.matchView(viewHaystack, from);
if (match.hasMatch()) {
const qsizetype ret = match.capturedStart();
if (rmatch)
@@ -10626,15 +10076,22 @@ qsizetype QtPrivate::indexOf(QStringView haystack, const QRegularExpression &re,
return -1;
}
-qsizetype QtPrivate::lastIndexOf(QStringView haystack, const QRegularExpression &re, qsizetype from, QRegularExpressionMatch *rmatch)
+qsizetype QtPrivate::indexOf(QStringView haystack, const QRegularExpression &re, qsizetype from, QRegularExpressionMatch *rmatch)
+{
+ return indexOf(haystack, nullptr, re, from, rmatch);
+}
+
+qsizetype QtPrivate::lastIndexOf(QStringView viewHaystack, const QString *stringHaystack, const QRegularExpression &re, qsizetype from, QRegularExpressionMatch *rmatch)
{
if (!re.isValid()) {
- qWarning("QString(View)::lastIndexOf: invalid QRegularExpression object");
+ qtWarnAboutInvalidRegularExpression(re.pattern(), "QString(View)::lastIndexOf");
return -1;
}
- qsizetype endpos = (from < 0) ? (haystack.size() + from + 1) : (from + 1);
- QRegularExpressionMatchIterator iterator = re.globalMatch(haystack);
+ qsizetype endpos = (from < 0) ? (viewHaystack.size() + from + 1) : (from + 1);
+ QRegularExpressionMatchIterator iterator = stringHaystack
+ ? re.globalMatch(*stringHaystack)
+ : re.globalMatchView(viewHaystack);
qsizetype lastIndex = -1;
while (iterator.hasNext()) {
QRegularExpressionMatch match = iterator.next();
@@ -10651,34 +10108,52 @@ qsizetype QtPrivate::lastIndexOf(QStringView haystack, const QRegularExpression
return lastIndex;
}
-bool QtPrivate::contains(QStringView haystack, const QRegularExpression &re, QRegularExpressionMatch *rmatch)
+qsizetype QtPrivate::lastIndexOf(QStringView haystack, const QRegularExpression &re, qsizetype from, QRegularExpressionMatch *rmatch)
+{
+ return lastIndexOf(haystack, nullptr, re, from, rmatch);
+}
+
+bool QtPrivate::contains(QStringView viewHaystack, const QString *stringHaystack, const QRegularExpression &re, QRegularExpressionMatch *rmatch)
{
if (!re.isValid()) {
- qWarning("QString(View)::contains: invalid QRegularExpression object");
+ qtWarnAboutInvalidRegularExpression(re.pattern(), "QString(View)::contains");
return false;
}
- QRegularExpressionMatch m = re.match(haystack);
+ QRegularExpressionMatch m = stringHaystack
+ ? re.match(*stringHaystack)
+ : re.matchView(viewHaystack);
bool hasMatch = m.hasMatch();
if (hasMatch && rmatch)
*rmatch = std::move(m);
return hasMatch;
}
+bool QtPrivate::contains(QStringView haystack, const QRegularExpression &re, QRegularExpressionMatch *rmatch)
+{
+ return contains(haystack, nullptr, re, rmatch);
+}
+
qsizetype QtPrivate::count(QStringView haystack, const QRegularExpression &re)
{
if (!re.isValid()) {
- qWarning("QString(View)::count: invalid QRegularExpression object");
+ qtWarnAboutInvalidRegularExpression(re.pattern(), "QString(View)::count");
return 0;
}
qsizetype count = 0;
qsizetype index = -1;
- qsizetype len = haystack.length();
+ qsizetype len = haystack.size();
while (index <= len - 1) {
- QRegularExpressionMatch match = re.match(haystack, index + 1);
+ QRegularExpressionMatch match = re.matchView(haystack, index + 1);
if (!match.hasMatch())
break;
- index = match.capturedStart();
count++;
+
+ // Search again, from the next character after the beginning of this
+ // capture. If the capture starts with a surrogate pair, both together
+ // count as "one character".
+ index = match.capturedStart();
+ if (index < len && haystack[index].isHighSurrogate())
+ ++index;
}
return count;
}
@@ -10698,20 +10173,24 @@ qsizetype QtPrivate::count(QStringView haystack, const QRegularExpression &re)
*/
QString QString::toHtmlEscaped() const
{
+ const auto pos = std::u16string_view(*this).find_first_of(u"<>&\"");
+ if (pos == std::u16string_view::npos)
+ return *this;
QString rich;
- const int len = length();
+ const qsizetype len = size();
rich.reserve(qsizetype(len * 1.1));
- for (int i = 0; i < len; ++i) {
- if (at(i) == QLatin1Char('<'))
- rich += QLatin1String("&lt;");
- else if (at(i) == QLatin1Char('>'))
- rich += QLatin1String("&gt;");
- else if (at(i) == QLatin1Char('&'))
- rich += QLatin1String("&amp;");
- else if (at(i) == QLatin1Char('"'))
- rich += QLatin1String("&quot;");
+ rich += qToStringViewIgnoringNull(*this).first(pos);
+ for (auto ch : qToStringViewIgnoringNull(*this).sliced(pos)) {
+ if (ch == u'<')
+ rich += "&lt;"_L1;
+ else if (ch == u'>')
+ rich += "&gt;"_L1;
+ else if (ch == u'&')
+ rich += "&amp;"_L1;
+ else if (ch == u'"')
+ rich += "&quot;"_L1;
else
- rich += at(i);
+ rich += ch;
}
rich.squeeze();
return rich;
@@ -10746,10 +10225,10 @@ QString QString::toHtmlEscaped() const
significantly speed up creation of QString instances from data known at
compile time.
- \note QLatin1String can still be more efficient than QStringLiteral
+ \note QLatin1StringView can still be more efficient than QStringLiteral
when the string is passed to a function that has an overload taking
- QLatin1String and this overload avoids conversion to QString. For
- instance, QString::operator==() can compare to a QLatin1String
+ QLatin1StringView and this overload avoids conversion to QString. For
+ instance, QString::operator==() can compare to a QLatin1StringView
directly:
\snippet code/src_corelib_text_qstring.cpp 11
@@ -10761,11 +10240,13 @@ QString QString::toHtmlEscaped() const
\sa QByteArrayLiteral
*/
+#if QT_DEPRECATED_SINCE(6, 8)
/*!
\fn QtLiterals::operator""_qs(const char16_t *str, size_t size)
\relates QString
\since 6.2
+ \deprecated [6.8] Use \c _s from Qt::StringLiterals namespace instead.
Literal operator that creates a QString out of the first \a size characters in
the char16_t string literal \a str.
@@ -10783,25 +10264,41 @@ QString QString::toHtmlEscaped() const
\sa QStringLiteral, QtLiterals::operator""_qba(const char *str, size_t size)
*/
+#endif // QT_DEPRECATED_SINCE(6, 8)
+
+/*!
+ \fn Qt::Literals::StringLiterals::operator""_s(const char16_t *str, size_t size)
+
+ \relates QString
+ \since 6.4
+
+ Literal operator that creates a QString out of the first \a size characters in
+ the char16_t string literal \a str.
+
+ The QString is created at compile time, and the generated string data is stored
+ in the read-only segment of the compiled object file. Duplicate literals may
+ share the same read-only memory. This functionality is interchangeable with
+ QStringLiteral, but saves typing when many string literals are present in the
+ code.
+
+ The following code creates a QString:
+ \code
+ using namespace Qt::Literals::StringLiterals;
+
+ auto str = u"hello"_s;
+ \endcode
+
+ \sa Qt::Literals::StringLiterals
+*/
/*!
\internal
*/
-void QAbstractConcatenable::appendLatin1To(QLatin1String in, QChar *out) noexcept
+void QAbstractConcatenable::appendLatin1To(QLatin1StringView in, QChar *out) noexcept
{
qt_from_latin1(reinterpret_cast<char16_t *>(out), in.data(), size_t(in.size()));
}
-double QStringView::toDouble(bool *ok) const
-{
- return QLocaleData::c()->stringToDouble(*this, ok, QLocale::RejectGroupSeparator);
-}
-
-float QStringView::toFloat(bool *ok) const
-{
- return QLocaleData::convertDoubleToFloat(toDouble(ok), ok);
-}
-
/*!
\fn template <typename T> qsizetype erase(QString &s, const T &t)
\relates QString
@@ -10825,4 +10322,67 @@ float QStringView::toFloat(bool *ok) const
\sa erase
*/
+/*!
+ \macro const char *qPrintable(const QString &str)
+ \relates QString
+
+ Returns \a str as a \c{const char *}. This is equivalent to
+ \a{str}.toLocal8Bit().constData().
+
+ The char pointer will be invalid after the statement in which
+ qPrintable() is used. This is because the array returned by
+ QString::toLocal8Bit() will fall out of scope.
+
+ \note qDebug(), qInfo(), qWarning(), qCritical(), qFatal() expect
+ %s arguments to be UTF-8 encoded, while qPrintable() converts to
+ local 8-bit encoding. Therefore qUtf8Printable() should be used
+ for logging strings instead of qPrintable().
+
+ \sa qUtf8Printable()
+*/
+
+/*!
+ \macro const char *qUtf8Printable(const QString &str)
+ \relates QString
+ \since 5.4
+
+ Returns \a str as a \c{const char *}. This is equivalent to
+ \a{str}.toUtf8().constData().
+
+ The char pointer will be invalid after the statement in which
+ qUtf8Printable() is used. This is because the array returned by
+ QString::toUtf8() will fall out of scope.
+
+ Example:
+
+ \snippet code/src_corelib_text_qstring.cpp qUtf8Printable
+
+ \sa qPrintable(), qDebug(), qInfo(), qWarning(), qCritical(), qFatal()
+*/
+
+/*!
+ \macro const wchar_t *qUtf16Printable(const QString &str)
+ \relates QString
+ \since 5.7
+
+ Returns \a str as a \c{const ushort *}, but cast to a \c{const wchar_t *}
+ to avoid warnings. This is equivalent to \a{str}.utf16() plus some casting.
+
+ The only useful thing you can do with the return value of this macro is to
+ pass it to QString::asprintf() for use in a \c{%ls} conversion. In particular,
+ the return value is \e{not} a valid \c{const wchar_t*}!
+
+ In general, the pointer will be invalid after the statement in which
+ qUtf16Printable() is used. This is because the pointer may have been
+ obtained from a temporary expression, which will fall out of scope.
+
+ Example:
+
+ \snippet code/src_corelib_text_qstring.cpp qUtf16Printable
+
+ \sa qPrintable(), qDebug(), qInfo(), qWarning(), qCritical(), qFatal()
+*/
+
QT_END_NAMESPACE
+
+#undef REHASH
diff --git a/src/corelib/text/qstring.h b/src/corelib/text/qstring.h
index e886f1182b..895ec4b5c0 100644
--- a/src/corelib/text/qstring.h
+++ b/src/corelib/text/qstring.h
@@ -1,44 +1,8 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Copyright (C) 2019 Intel Corporation.
-** Copyright (C) 2019 Mail.ru Group.
-** Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 The Qt Company Ltd.
+// Copyright (C) 2019 Intel Corporation.
+// Copyright (C) 2019 Mail.ru Group.
+// Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QSTRING_H
#define QSTRING_H
@@ -48,8 +12,11 @@
#endif
#include <QtCore/qchar.h>
+#include <QtCore/qcompare.h>
#include <QtCore/qbytearray.h>
+#include <QtCore/qbytearrayview.h>
#include <QtCore/qarraydata.h>
+#include <QtCore/qlatin1stringview.h>
#include <QtCore/qnamespace.h>
#include <QtCore/qstringliteral.h>
#include <QtCore/qstringalgorithms.h>
@@ -58,6 +25,8 @@
#include <string>
#include <iterator>
+#include <QtCore/q20memory.h>
+#include <string_view>
#include <stdarg.h>
@@ -70,6 +39,8 @@ Q_FORWARD_DECLARE_CF_TYPE(CFString);
Q_FORWARD_DECLARE_OBJC_CLASS(NSString);
#endif
+class tst_QString;
+
QT_BEGIN_NAMESPACE
class QRegularExpression;
@@ -78,301 +49,57 @@ class QString;
namespace QtPrivate {
template <bool...B> class BoolList;
-}
-
-class QLatin1String
-{
-public:
- constexpr inline QLatin1String() noexcept : m_size(0), m_data(nullptr) {}
- constexpr inline explicit QLatin1String(const char *s) noexcept : m_size(s ? qsizetype(strlen(s)) : 0), m_data(s) {}
- constexpr explicit QLatin1String(const char *f, const char *l)
- : QLatin1String(f, qsizetype(l - f)) {}
- constexpr inline explicit QLatin1String(const char *s, qsizetype sz) noexcept : m_size(sz), m_data(s) {}
- explicit QLatin1String(const QByteArray &s) noexcept : m_size(s.size()), m_data(s.constData()) {}
- constexpr explicit QLatin1String(QByteArrayView s) noexcept : m_size(s.size()), m_data(s.data()) {}
-
- inline QString toString() const;
-
- constexpr const char *latin1() const noexcept { return m_data; }
- constexpr qsizetype size() const noexcept { return m_size; }
- constexpr const char *data() const noexcept { return m_data; }
-
- constexpr bool isNull() const noexcept { return !data(); }
- constexpr bool isEmpty() const noexcept { return !size(); }
-
- template <typename...Args>
- [[nodiscard]] inline QString arg(Args &&...args) const;
-
- [[nodiscard]] constexpr QLatin1Char at(qsizetype i) const
- { return Q_ASSERT(i >= 0), Q_ASSERT(i < size()), QLatin1Char(m_data[i]); }
- [[nodiscard]] constexpr QLatin1Char operator[](qsizetype i) const { return at(i); }
-
- [[nodiscard]] constexpr QLatin1Char front() const { return at(0); }
- [[nodiscard]] constexpr QLatin1Char back() const { return at(size() - 1); }
-
- [[nodiscard]] int compare(QStringView other, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
- { return QtPrivate::compareStrings(*this, other, cs); }
- [[nodiscard]] int compare(QLatin1String other, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
- { return QtPrivate::compareStrings(*this, other, cs); }
- [[nodiscard]] constexpr int compare(QChar c) const noexcept
- { return isEmpty() ? -1 : front() == c ? int(size() > 1) : uchar(m_data[0]) - c.unicode(); }
- [[nodiscard]] int compare(QChar c, Qt::CaseSensitivity cs) const noexcept
- { return QtPrivate::compareStrings(*this, QStringView(&c, 1), cs); }
- [[nodiscard]] int compare(QLatin1Char c, Qt::CaseSensitivity cs) const noexcept
- { char ch = c.toLatin1(); return QtPrivate::compareStrings(*this, QLatin1String(&ch, 1), cs); }
-
- [[nodiscard]] bool startsWith(QStringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
- { return QtPrivate::startsWith(*this, s, cs); }
- [[nodiscard]] bool startsWith(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
- { return QtPrivate::startsWith(*this, s, cs); }
- [[nodiscard]] constexpr bool startsWith(QChar c) const noexcept
- { return !isEmpty() && front() == c; }
- [[nodiscard]] inline bool startsWith(QChar c, Qt::CaseSensitivity cs) const noexcept
- { return QtPrivate::startsWith(*this, QStringView(&c, 1), cs); }
- [[nodiscard]] inline bool startsWith(QLatin1Char c, Qt::CaseSensitivity cs) const noexcept
- { char ch = c.toLatin1(); return QtPrivate::startsWith(*this, QLatin1String(&ch, 1), cs); }
-
- [[nodiscard]] bool endsWith(QStringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
- { return QtPrivate::endsWith(*this, s, cs); }
- [[nodiscard]] bool endsWith(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
- { return QtPrivate::endsWith(*this, s, cs); }
- [[nodiscard]] constexpr bool endsWith(QChar c) const noexcept
- { return !isEmpty() && back() == c; }
- [[nodiscard]] inline bool endsWith(QChar c, Qt::CaseSensitivity cs) const noexcept
- { return QtPrivate::endsWith(*this, QStringView(&c, 1), cs); }
- [[nodiscard]] inline bool endsWith(QLatin1Char c, Qt::CaseSensitivity cs) const noexcept
- { char ch = c.toLatin1(); return QtPrivate::endsWith(*this, QLatin1String(&ch, 1), cs); }
-
- [[nodiscard]] qsizetype indexOf(QStringView s, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
- { return QtPrivate::findString(*this, from, s, cs); }
- [[nodiscard]] qsizetype indexOf(QLatin1String s, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
- { return QtPrivate::findString(*this, from, s, cs); }
- [[nodiscard]] qsizetype indexOf(QChar c, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
- { return QtPrivate::findString(*this, from, QStringView(&c, 1), cs); }
- [[nodiscard]] qsizetype indexOf(QLatin1Char c, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
- { char ch = c.toLatin1(); return QtPrivate::findString(*this, from, QLatin1String(&ch, 1), cs); }
-
- [[nodiscard]] bool contains(QStringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
- { return indexOf(s, 0, cs) != -1; }
- [[nodiscard]] bool contains(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
- { return indexOf(s, 0, cs) != -1; }
- [[nodiscard]] inline bool contains(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
- { return indexOf(QStringView(&c, 1), 0, cs) != -1; }
- [[nodiscard]] inline bool contains(QLatin1Char c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
- { char ch = c.toLatin1(); return indexOf(QLatin1String(&ch, 1), 0, cs) != -1; }
-
- [[nodiscard]] qsizetype lastIndexOf(QStringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
- { return lastIndexOf(s, size(), cs); }
- [[nodiscard]] qsizetype lastIndexOf(QStringView s, qsizetype from, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
- { return QtPrivate::lastIndexOf(*this, from, s, cs); }
- [[nodiscard]] qsizetype lastIndexOf(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
- { return lastIndexOf(s, size(), cs); }
- [[nodiscard]] qsizetype lastIndexOf(QLatin1String s, qsizetype from, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
- { return QtPrivate::lastIndexOf(*this, from, s, cs); }
- [[nodiscard]] qsizetype lastIndexOf(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
- { return lastIndexOf(c, -1, cs); }
- [[nodiscard]] qsizetype lastIndexOf(QChar c, qsizetype from, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
- { return QtPrivate::lastIndexOf(*this, from, QStringView(&c, 1), cs); }
- [[nodiscard]] qsizetype lastIndexOf(QLatin1Char c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
- { return lastIndexOf(c, -1, cs); }
- [[nodiscard]] qsizetype lastIndexOf(QLatin1Char c, qsizetype from, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
- { char ch = c.toLatin1(); return QtPrivate::lastIndexOf(*this, from, QLatin1String(&ch, 1), cs); }
-
- using value_type = const char;
- using reference = value_type&;
- using const_reference = reference;
- using iterator = value_type*;
- using const_iterator = iterator;
- using difference_type = qsizetype; // violates Container concept requirements
- using size_type = qsizetype; // violates Container concept requirements
-
- constexpr const_iterator begin() const noexcept { return data(); }
- constexpr const_iterator cbegin() const noexcept { return data(); }
- constexpr const_iterator end() const noexcept { return data() + size(); }
- constexpr const_iterator cend() const noexcept { return data() + size(); }
-
- using reverse_iterator = std::reverse_iterator<iterator>;
- using const_reverse_iterator = reverse_iterator;
-
- const_reverse_iterator rbegin() const noexcept { return const_reverse_iterator(end()); }
- const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator(end()); }
- const_reverse_iterator rend() const noexcept { return const_reverse_iterator(begin()); }
- const_reverse_iterator crend() const noexcept { return const_reverse_iterator(begin()); }
-
- [[nodiscard]] constexpr QLatin1String mid(qsizetype pos, qsizetype n = -1) const
- {
- using namespace QtPrivate;
- auto result = QContainerImplHelper::mid(size(), &pos, &n);
- return result == QContainerImplHelper::Null ? QLatin1String() : QLatin1String(m_data + pos, n);
- }
- [[nodiscard]] constexpr QLatin1String left(qsizetype n) const
- {
- if (size_t(n) >= size_t(size()))
- n = size();
- return QLatin1String(m_data, n);
- }
- [[nodiscard]] constexpr QLatin1String right(qsizetype n) const
- {
- if (size_t(n) >= size_t(size()))
- n = size();
- return QLatin1String(m_data + m_size - n, n);
- }
-
- [[nodiscard]] constexpr QLatin1String sliced(qsizetype pos) const
- { verify(pos); return QLatin1String(m_data + pos, m_size - pos); }
- [[nodiscard]] constexpr QLatin1String sliced(qsizetype pos, qsizetype n) const
- { verify(pos, n); return QLatin1String(m_data + pos, n); }
- [[nodiscard]] constexpr QLatin1String first(qsizetype n) const
- { verify(n); return QLatin1String(m_data, n); }
- [[nodiscard]] constexpr QLatin1String last(qsizetype n) const
- { verify(n); return QLatin1String(m_data + size() - n, n); }
- [[nodiscard]] constexpr QLatin1String chopped(qsizetype n) const
- { verify(n); return QLatin1String(m_data, size() - n); }
-
- constexpr void chop(qsizetype n)
- { verify(n); m_size -= n; }
- constexpr void truncate(qsizetype n)
- { verify(n); m_size = n; }
-
- [[nodiscard]] QLatin1String trimmed() const noexcept { return QtPrivate::trimmed(*this); }
-
- template <typename Needle, typename...Flags>
- [[nodiscard]] inline constexpr auto tokenize(Needle &&needle, Flags...flags) const
- noexcept(noexcept(qTokenize(std::declval<const QLatin1String &>(), std::forward<Needle>(needle), flags...)))
- -> decltype(qTokenize(*this, std::forward<Needle>(needle), flags...))
- { return qTokenize(*this, std::forward<Needle>(needle), flags...); }
-
- friend inline bool operator==(QLatin1String s1, QLatin1String s2) noexcept
- { return s1.size() == s2.size() && (!s1.size() || !memcmp(s1.latin1(), s2.latin1(), s1.size())); }
- friend inline bool operator!=(QLatin1String s1, QLatin1String s2) noexcept
- { return !(s1 == s2); }
- friend inline bool operator<(QLatin1String s1, QLatin1String s2) noexcept
- {
- const qsizetype len = qMin(s1.size(), s2.size());
- const int r = len ? memcmp(s1.latin1(), s2.latin1(), len) : 0;
- return r < 0 || (r == 0 && s1.size() < s2.size());
- }
- friend inline bool operator>(QLatin1String s1, QLatin1String s2) noexcept
- { return s2 < s1; }
- friend inline bool operator<=(QLatin1String s1, QLatin1String s2) noexcept
- { return !(s1 > s2); }
- friend inline bool operator>=(QLatin1String s1, QLatin1String s2) noexcept
- { return !(s1 < s2); }
-
- // QChar <> QLatin1String
- friend inline bool operator==(QChar lhs, QLatin1String rhs) noexcept { return rhs.size() == 1 && lhs == rhs.front(); }
- friend inline bool operator< (QChar lhs, QLatin1String rhs) noexcept { return compare_helper(&lhs, 1, rhs) < 0; }
- friend inline bool operator> (QChar lhs, QLatin1String rhs) noexcept { return compare_helper(&lhs, 1, rhs) > 0; }
- friend inline bool operator!=(QChar lhs, QLatin1String rhs) noexcept { return !(lhs == rhs); }
- friend inline bool operator<=(QChar lhs, QLatin1String rhs) noexcept { return !(lhs > rhs); }
- friend inline bool operator>=(QChar lhs, QLatin1String rhs) noexcept { return !(lhs < rhs); }
-
- friend inline bool operator==(QLatin1String lhs, QChar rhs) noexcept { return rhs == lhs; }
- friend inline bool operator!=(QLatin1String lhs, QChar rhs) noexcept { return !(rhs == lhs); }
- friend inline bool operator< (QLatin1String lhs, QChar rhs) noexcept { return rhs > lhs; }
- friend inline bool operator> (QLatin1String lhs, QChar rhs) noexcept { return rhs < lhs; }
- friend inline bool operator<=(QLatin1String lhs, QChar rhs) noexcept { return !(rhs < lhs); }
- friend inline bool operator>=(QLatin1String lhs, QChar rhs) noexcept { return !(rhs > lhs); }
-
- // QStringView <> QLatin1String
- friend inline bool operator==(QStringView lhs, QLatin1String rhs) noexcept
- { return lhs.size() == rhs.size() && QtPrivate::equalStrings(lhs, rhs); }
- friend inline bool operator!=(QStringView lhs, QLatin1String rhs) noexcept { return !(lhs == rhs); }
- friend inline bool operator< (QStringView lhs, QLatin1String rhs) noexcept { return QtPrivate::compareStrings(lhs, rhs) < 0; }
- friend inline bool operator<=(QStringView lhs, QLatin1String rhs) noexcept { return QtPrivate::compareStrings(lhs, rhs) <= 0; }
- friend inline bool operator> (QStringView lhs, QLatin1String rhs) noexcept { return QtPrivate::compareStrings(lhs, rhs) > 0; }
- friend inline bool operator>=(QStringView lhs, QLatin1String rhs) noexcept { return QtPrivate::compareStrings(lhs, rhs) >= 0; }
-
- friend inline bool operator==(QLatin1String lhs, QStringView rhs) noexcept
- { return lhs.size() == rhs.size() && QtPrivate::equalStrings(lhs, rhs); }
- friend inline bool operator!=(QLatin1String lhs, QStringView rhs) noexcept { return !(lhs == rhs); }
- friend inline bool operator< (QLatin1String lhs, QStringView rhs) noexcept { return QtPrivate::compareStrings(lhs, rhs) < 0; }
- friend inline bool operator<=(QLatin1String lhs, QStringView rhs) noexcept { return QtPrivate::compareStrings(lhs, rhs) <= 0; }
- friend inline bool operator> (QLatin1String lhs, QStringView rhs) noexcept { return QtPrivate::compareStrings(lhs, rhs) > 0; }
- friend inline bool operator>=(QLatin1String lhs, QStringView rhs) noexcept { return QtPrivate::compareStrings(lhs, rhs) >= 0; }
-
-
-#if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
- QT_ASCII_CAST_WARN inline bool operator==(const char *s) const;
- QT_ASCII_CAST_WARN inline bool operator!=(const char *s) const;
- QT_ASCII_CAST_WARN inline bool operator<(const char *s) const;
- QT_ASCII_CAST_WARN inline bool operator>(const char *s) const;
- QT_ASCII_CAST_WARN inline bool operator<=(const char *s) const;
- QT_ASCII_CAST_WARN inline bool operator>=(const char *s) const;
-
- QT_ASCII_CAST_WARN inline bool operator==(const QByteArray &s) const;
- QT_ASCII_CAST_WARN inline bool operator!=(const QByteArray &s) const;
- QT_ASCII_CAST_WARN inline bool operator<(const QByteArray &s) const;
- QT_ASCII_CAST_WARN inline bool operator>(const QByteArray &s) const;
- QT_ASCII_CAST_WARN inline bool operator<=(const QByteArray &s) const;
- QT_ASCII_CAST_WARN inline bool operator>=(const QByteArray &s) const;
-
- QT_ASCII_CAST_WARN friend bool operator==(const char *s1, QLatin1String s2) { return compare_helper(s2, s1) == 0; }
- QT_ASCII_CAST_WARN friend bool operator!=(const char *s1, QLatin1String s2) { return compare_helper(s2, s1) != 0; }
- QT_ASCII_CAST_WARN friend bool operator< (const char *s1, QLatin1String s2) { return compare_helper(s2, s1) > 0; }
- QT_ASCII_CAST_WARN friend bool operator> (const char *s1, QLatin1String s2) { return compare_helper(s2, s1) < 0; }
- QT_ASCII_CAST_WARN friend bool operator<=(const char *s1, QLatin1String s2) { return compare_helper(s2, s1) >= 0; }
- QT_ASCII_CAST_WARN friend bool operator>=(const char *s1, QLatin1String s2) { return compare_helper(s2, s1) <= 0; }
-#endif // !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
-private:
-#if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
- static inline int compare_helper(const QLatin1String &s1, const char *s2);
-#endif
- Q_ALWAYS_INLINE constexpr void verify(qsizetype pos, qsizetype n = 0) const
- {
- Q_ASSERT(pos >= 0);
- Q_ASSERT(pos <= size());
- Q_ASSERT(n >= 0);
- Q_ASSERT(n <= size() - pos);
- }
- Q_CORE_EXPORT static int compare_helper(const QChar *data1, qsizetype length1,
- QLatin1String s2,
- Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
- qsizetype m_size;
- const char *m_data;
-};
-Q_DECLARE_TYPEINFO(QLatin1String, Q_RELOCATABLE_TYPE);
+template <typename Char>
+using IsCompatibleChar32TypeHelper =
+ std::is_same<Char, char32_t>;
+template <typename Char>
+using IsCompatibleChar32Type
+ = IsCompatibleChar32TypeHelper<q20::remove_cvref_t<Char>>;
+}
// Qt 4.x compatibility
//
-// QLatin1String inline implementations
+// QLatin1StringView inline implementations
//
-constexpr bool QtPrivate::isLatin1(QLatin1String) noexcept
+constexpr bool QtPrivate::isLatin1(QLatin1StringView) noexcept
{ return true; }
//
-// QStringView members that require QLatin1String:
+// QStringView members that require QLatin1StringView:
//
-int QStringView::compare(QLatin1String s, Qt::CaseSensitivity cs) const noexcept
+int QStringView::compare(QLatin1StringView s, Qt::CaseSensitivity cs) const noexcept
{ return QtPrivate::compareStrings(*this, s, cs); }
-bool QStringView::startsWith(QLatin1String s, Qt::CaseSensitivity cs) const noexcept
+bool QStringView::startsWith(QLatin1StringView s, Qt::CaseSensitivity cs) const noexcept
{ return QtPrivate::startsWith(*this, s, cs); }
-bool QStringView::endsWith(QLatin1String s, Qt::CaseSensitivity cs) const noexcept
+bool QStringView::endsWith(QLatin1StringView s, Qt::CaseSensitivity cs) const noexcept
{ return QtPrivate::endsWith(*this, s, cs); }
-qsizetype QStringView::indexOf(QLatin1String s, qsizetype from, Qt::CaseSensitivity cs) const noexcept
+qsizetype QStringView::indexOf(QLatin1StringView s, qsizetype from, Qt::CaseSensitivity cs) const noexcept
{ return QtPrivate::findString(*this, from, s, cs); }
-bool QStringView::contains(QLatin1String s, Qt::CaseSensitivity cs) const noexcept
+bool QStringView::contains(QLatin1StringView s, Qt::CaseSensitivity cs) const noexcept
{ return indexOf(s, 0, cs) != qsizetype(-1); }
-qsizetype QStringView::lastIndexOf(QLatin1String s, Qt::CaseSensitivity cs) const noexcept
+qsizetype QStringView::lastIndexOf(QLatin1StringView s, Qt::CaseSensitivity cs) const noexcept
{ return QtPrivate::lastIndexOf(*this, size(), s, cs); }
-qsizetype QStringView::lastIndexOf(QLatin1String s, qsizetype from, Qt::CaseSensitivity cs) const noexcept
+qsizetype QStringView::lastIndexOf(QLatin1StringView s, qsizetype from, Qt::CaseSensitivity cs) const noexcept
{ return QtPrivate::lastIndexOf(*this, from, s, cs); }
+qsizetype QStringView::count(QLatin1StringView s, Qt::CaseSensitivity cs) const
+{ return QtPrivate::count(*this, s, cs); }
//
-// QAnyStringView members that require QLatin1String
+// QAnyStringView members that require QLatin1StringView
//
-constexpr QAnyStringView::QAnyStringView(QLatin1String str) noexcept
- : m_data{str.data()}, m_size{size_t(str.size()) | Tag::Latin1} {}
+constexpr QAnyStringView::QAnyStringView(QLatin1StringView str) noexcept
+ : m_data{str.data()}, m_size{size_t(str.size() << SizeShift) | Tag::Latin1} {}
-constexpr QLatin1String QAnyStringView::asLatin1StringView() const
+constexpr QLatin1StringView QAnyStringView::asLatin1StringView() const
{
Q_ASSERT(isLatin1());
- return QLatin1String{m_data_utf8, int(size())};
+ return {m_data_utf8, size()};
}
+
template <typename Visitor>
constexpr decltype(auto) QAnyStringView::visit(Visitor &&v) const
{
@@ -401,15 +128,47 @@ constexpr QChar QAnyStringView::back() const
class Q_CORE_EXPORT QString
{
typedef QTypedArrayData<char16_t> Data;
+
+ friend class ::tst_QString;
+
+ template <typename Iterator>
+ static constexpr bool is_contiguous_iterator_v =
+ // Can't use contiguous_iterator_tag here, as STL impls can't agree on feature macro.
+ // To avoid differences in C++20 and C++17 builds, treat only pointers as contiguous
+ // for now:
+ // std::contiguous_iterator<Iterator>;
+ std::is_pointer_v<Iterator>;
+
+ template <typename Char>
+ using is_compatible_char_helper = std::disjunction<
+ QtPrivate::IsCompatibleCharType<Char>,
+ QtPrivate::IsCompatibleChar32Type<Char>,
+ QtPrivate::IsCompatibleChar8Type<Char>,
+ std::is_same<Char, QLatin1Char> // special case
+ >;
+
+ template <typename Iterator>
+ static constexpr bool is_compatible_iterator_v = std::conjunction_v<
+ std::is_convertible<
+ typename std::iterator_traits<Iterator>::iterator_category,
+ std::input_iterator_tag
+ >,
+ is_compatible_char_helper<typename std::iterator_traits<Iterator>::value_type>
+ >;
+
+ template <typename Iterator>
+ using if_compatible_iterator = std::enable_if_t<is_compatible_iterator_v<Iterator>, bool>;
+
public:
typedef QStringPrivate DataPointer;
- inline constexpr QString() noexcept;
+ constexpr QString() noexcept;
explicit QString(const QChar *unicode, qsizetype size = -1);
QString(QChar c);
QString(qsizetype size, QChar c);
- inline QString(QLatin1String latin1);
-#if defined(__cpp_char8_t) || defined(Q_CLANG_QDOC)
+ inline QString(QLatin1StringView latin1);
+ explicit QString(QStringView sv) : QString(sv.data(), sv.size()) {}
+#if defined(__cpp_char8_t) || defined(Q_QDOC)
Q_WEAK_OVERLOAD
inline QString(const char8_t *str)
: QString(fromUtf8(str))
@@ -419,22 +178,37 @@ public:
inline ~QString();
QString &operator=(QChar c);
QString &operator=(const QString &) noexcept;
- QString &operator=(QLatin1String latin1);
+ QString &operator=(QLatin1StringView latin1);
inline QString(QString &&other) noexcept
- { qSwap(d, other.d); }
+ = default;
QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QString)
void swap(QString &other) noexcept { d.swap(other.d); }
- inline qsizetype size() const { return d.size; }
+ inline qsizetype size() const noexcept { return d.size; }
+#if QT_DEPRECATED_SINCE(6, 4)
+ QT_DEPRECATED_VERSION_X_6_4("Use size() or length() instead.")
inline qsizetype count() const { return d.size; }
- inline qsizetype length() const { return d.size; }
- inline bool isEmpty() const;
+#endif
+ inline qsizetype length() const noexcept { return d.size; }
+ inline bool isEmpty() const noexcept { return d.size == 0; }
void resize(qsizetype size);
void resize(qsizetype size, QChar fillChar);
+ void resizeForOverwrite(qsizetype size);
QString &fill(QChar c, qsizetype size = -1);
void truncate(qsizetype pos);
void chop(qsizetype n);
+ QString &slice(qsizetype pos)
+ { verify(pos, 0); return remove(0, pos); }
+ QString &slice(qsizetype pos, qsizetype n)
+ {
+ verify(pos, n);
+ if (isNull())
+ return *this;
+ resize(pos + n);
+ return remove(0, pos);
+ }
+
inline qsizetype capacity() const;
inline void reserve(qsizetype size);
inline void squeeze();
@@ -447,11 +221,11 @@ public:
inline void detach();
inline bool isDetached() const;
inline bool isSharedWith(const QString &other) const { return d.isSharedWith(other.d); }
- void clear();
+ inline void clear();
inline const QChar at(qsizetype i) const;
- const QChar operator[](qsizetype i) const;
- [[nodiscard]] QChar &operator[](qsizetype i);
+ inline const QChar operator[](qsizetype i) const;
+ [[nodiscard]] inline QChar &operator[](qsizetype i);
[[nodiscard]] inline QChar front() const { return at(0); }
[[nodiscard]] inline QChar &front();
@@ -459,49 +233,44 @@ public:
[[nodiscard]] inline QChar &back();
[[nodiscard]] QString arg(qlonglong a, int fieldwidth=0, int base=10,
- QChar fillChar = QLatin1Char(' ')) const;
+ QChar fillChar = u' ') const;
[[nodiscard]] QString arg(qulonglong a, int fieldwidth=0, int base=10,
- QChar fillChar = QLatin1Char(' ')) const;
- [[nodiscard]] QString arg(long a, int fieldwidth=0, int base=10,
- QChar fillChar = QLatin1Char(' ')) const;
- [[nodiscard]] QString arg(ulong a, int fieldwidth=0, int base=10,
- QChar fillChar = QLatin1Char(' ')) const;
- [[nodiscard]] QString arg(int a, int fieldWidth = 0, int base = 10,
- QChar fillChar = QLatin1Char(' ')) const;
- [[nodiscard]] QString arg(uint a, int fieldWidth = 0, int base = 10,
- QChar fillChar = QLatin1Char(' ')) const;
- [[nodiscard]] QString arg(short a, int fieldWidth = 0, int base = 10,
- QChar fillChar = QLatin1Char(' ')) const;
- [[nodiscard]] QString arg(ushort a, int fieldWidth = 0, int base = 10,
- QChar fillChar = QLatin1Char(' ')) const;
+ QChar fillChar = u' ') const;
+ [[nodiscard]] inline QString arg(long a, int fieldwidth=0, int base=10,
+ QChar fillChar = u' ') const;
+ [[nodiscard]] inline QString arg(ulong a, int fieldwidth=0, int base=10,
+ QChar fillChar = u' ') const;
+ [[nodiscard]] inline QString arg(int a, int fieldWidth = 0, int base = 10,
+ QChar fillChar = u' ') const;
+ [[nodiscard]] inline QString arg(uint a, int fieldWidth = 0, int base = 10,
+ QChar fillChar = u' ') const;
+ [[nodiscard]] inline QString arg(short a, int fieldWidth = 0, int base = 10,
+ QChar fillChar = u' ') const;
+ [[nodiscard]] inline QString arg(ushort a, int fieldWidth = 0, int base = 10,
+ QChar fillChar = u' ') const;
[[nodiscard]] QString arg(double a, int fieldWidth = 0, char format = 'g', int precision = -1,
- QChar fillChar = QLatin1Char(' ')) const;
+ QChar fillChar = u' ') const;
[[nodiscard]] QString arg(char a, int fieldWidth = 0,
- QChar fillChar = QLatin1Char(' ')) const;
+ QChar fillChar = u' ') const;
[[nodiscard]] QString arg(QChar a, int fieldWidth = 0,
- QChar fillChar = QLatin1Char(' ')) const;
-#if QT_STRINGVIEW_LEVEL < 2
+ QChar fillChar = u' ') const;
[[nodiscard]] QString arg(const QString &a, int fieldWidth = 0,
- QChar fillChar = QLatin1Char(' ')) const;
-#endif
+ QChar fillChar = u' ') const;
[[nodiscard]] QString arg(QStringView a, int fieldWidth = 0,
- QChar fillChar = QLatin1Char(' ')) const;
- [[nodiscard]] QString arg(QLatin1String a, int fieldWidth = 0,
- QChar fillChar = QLatin1Char(' ')) const;
+ QChar fillChar = u' ') const;
+ [[nodiscard]] QString arg(QLatin1StringView a, int fieldWidth = 0,
+ QChar fillChar = u' ') const;
private:
template <typename T>
- struct is_convertible_to_view_or_qstring_helper
- : std::integral_constant<bool,
- std::is_convertible<T, QString>::value ||
- std::is_convertible<T, QStringView>::value ||
- std::is_convertible<T, QLatin1String>::value> {};
- template <typename T>
- struct is_convertible_to_view_or_qstring
- : is_convertible_to_view_or_qstring_helper<typename std::decay<T>::type> {};
+ using is_convertible_to_view_or_qstring = std::disjunction<
+ std::is_convertible<T, QString>,
+ std::is_convertible<T, QStringView>,
+ std::is_convertible<T, QLatin1StringView>
+ >;
public:
template <typename...Args>
[[nodiscard]]
-#ifdef Q_CLANG_QDOC
+#ifdef Q_QDOC
QString
#else
typename std::enable_if<
@@ -518,24 +287,22 @@ public:
static QString vasprintf(const char *format, va_list ap) Q_ATTRIBUTE_FORMAT_PRINTF(1, 0);
static QString asprintf(const char *format, ...) Q_ATTRIBUTE_FORMAT_PRINTF(1, 2);
- [[nodiscard]] qsizetype indexOf(QChar c, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
- [[nodiscard]] qsizetype indexOf(QLatin1String s, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
-#if QT_STRINGVIEW_LEVEL < 2
+ [[nodiscard]] QT_CORE_INLINE_SINCE(6, 7)
+ qsizetype indexOf(QChar c, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ [[nodiscard]] qsizetype indexOf(QLatin1StringView s, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
[[nodiscard]] qsizetype indexOf(const QString &s, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
-#endif
[[nodiscard]] qsizetype indexOf(QStringView s, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
{ return QtPrivate::findString(*this, from, s, cs); }
[[nodiscard]] qsizetype lastIndexOf(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
{ return lastIndexOf(c, -1, cs); }
- [[nodiscard]] qsizetype lastIndexOf(QChar c, qsizetype from, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
- [[nodiscard]] qsizetype lastIndexOf(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
+ [[nodiscard]] QT_CORE_INLINE_SINCE(6, 7)
+ qsizetype lastIndexOf(QChar c, qsizetype from, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ [[nodiscard]] qsizetype lastIndexOf(QLatin1StringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
{ return lastIndexOf(s, size(), cs); }
- [[nodiscard]] qsizetype lastIndexOf(QLatin1String s, qsizetype from, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
-#if QT_STRINGVIEW_LEVEL < 2
+ [[nodiscard]] qsizetype lastIndexOf(QLatin1StringView s, qsizetype from, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
[[nodiscard]] qsizetype lastIndexOf(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
{ return lastIndexOf(s, size(), cs); }
[[nodiscard]] qsizetype lastIndexOf(const QString &s, qsizetype from, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
-#endif
[[nodiscard]] qsizetype lastIndexOf(QStringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
{ return lastIndexOf(s, size(), cs); }
@@ -543,10 +310,8 @@ public:
{ return QtPrivate::lastIndexOf(*this, from, s, cs); }
[[nodiscard]] inline bool contains(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
-#if QT_STRINGVIEW_LEVEL < 2
[[nodiscard]] inline bool contains(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
-#endif
- [[nodiscard]] inline bool contains(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ [[nodiscard]] inline bool contains(QLatin1StringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
[[nodiscard]] inline bool contains(QStringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
[[nodiscard]] qsizetype count(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
[[nodiscard]] qsizetype count(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
@@ -578,50 +343,95 @@ public:
};
Q_DECLARE_FLAGS(SectionFlags, SectionFlag)
- [[nodiscard]] QString section(QChar sep, qsizetype start, qsizetype end = -1, SectionFlags flags = SectionDefault) const;
+ [[nodiscard]] inline QString section(QChar sep, qsizetype start, qsizetype end = -1, SectionFlags flags = SectionDefault) const;
[[nodiscard]] QString section(const QString &in_sep, qsizetype start, qsizetype end = -1, SectionFlags flags = SectionDefault) const;
#if QT_CONFIG(regularexpression)
[[nodiscard]] QString section(const QRegularExpression &re, qsizetype start, qsizetype end = -1, SectionFlags flags = SectionDefault) const;
#endif
- [[nodiscard]] QString left(qsizetype n) const;
- [[nodiscard]] QString right(qsizetype n) const;
- [[nodiscard]] QString mid(qsizetype position, qsizetype n = -1) const;
-
- [[nodiscard]] QString first(qsizetype n) const
- { Q_ASSERT(n >= 0); Q_ASSERT(n <= size()); return QString(data(), n); }
- [[nodiscard]] QString last(qsizetype n) const
- { Q_ASSERT(n >= 0); Q_ASSERT(n <= size()); return QString(data() + size() - n, n); }
- [[nodiscard]] QString sliced(qsizetype pos) const
- { Q_ASSERT(pos >= 0); Q_ASSERT(pos <= size()); return QString(data() + pos, size() - pos); }
- [[nodiscard]] QString sliced(qsizetype pos, qsizetype n) const
- { Q_ASSERT(pos >= 0); Q_ASSERT(n >= 0); Q_ASSERT(size_t(pos) + size_t(n) <= size_t(size())); return QString(data() + pos, n); }
- [[nodiscard]] QString chopped(qsizetype n) const
- { Q_ASSERT(n >= 0); Q_ASSERT(n <= size()); return first(size() - n); }
-
-
-#if QT_STRINGVIEW_LEVEL < 2
- bool startsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+
+#if QT_CORE_REMOVED_SINCE(6, 7)
+ QString left(qsizetype n) const;
+ QString right(qsizetype n) const;
+ QString mid(qsizetype position, qsizetype n = -1) const;
+
+ QString first(qsizetype n) const;
+ QString last(qsizetype n) const;
+ QString sliced(qsizetype pos) const;
+ QString sliced(qsizetype pos, qsizetype n) const;
+ QString chopped(qsizetype n) const;
+#else
+ [[nodiscard]] QString left(qsizetype n) const &
+ {
+ if (size_t(n) >= size_t(size()))
+ return *this;
+ return first(n);
+ }
+ [[nodiscard]] QString left(qsizetype n) &&
+ {
+ if (size_t(n) >= size_t(size()))
+ return std::move(*this);
+ return std::move(*this).first(n);
+ }
+ [[nodiscard]] QString right(qsizetype n) const &
+ {
+ if (size_t(n) >= size_t(size()))
+ return *this;
+ return last(n);
+ }
+ [[nodiscard]] QString right(qsizetype n) &&
+ {
+ if (size_t(n) >= size_t(size()))
+ return std::move(*this);
+ return std::move(*this).last(n);
+ }
+ [[nodiscard]] QString mid(qsizetype position, qsizetype n = -1) const &;
+ [[nodiscard]] QString mid(qsizetype position, qsizetype n = -1) &&;
+
+ [[nodiscard]] QString first(qsizetype n) const &
+ { verify(0, n); return sliced(0, n); }
+ [[nodiscard]] QString last(qsizetype n) const &
+ { verify(0, n); return sliced(size() - n, n); }
+ [[nodiscard]] QString sliced(qsizetype pos) const &
+ { verify(pos, 0); return sliced(pos, size() - pos); }
+ [[nodiscard]] QString sliced(qsizetype pos, qsizetype n) const &
+ { verify(pos, n); return QString(begin() + pos, n); }
+ [[nodiscard]] QString chopped(qsizetype n) const &
+ { verify(0, n); return sliced(0, size() - n); }
+
+ [[nodiscard]] QString first(qsizetype n) &&
+ {
+ verify(0, n);
+ resize(n); // may detach and allocate memory
+ return std::move(*this);
+ }
+ [[nodiscard]] QString last(qsizetype n) &&
+ { verify(0, n); return sliced_helper(*this, size() - n, n); }
+ [[nodiscard]] QString sliced(qsizetype pos) &&
+ { verify(pos, 0); return sliced_helper(*this, pos, size() - pos); }
+ [[nodiscard]] QString sliced(qsizetype pos, qsizetype n) &&
+ { verify(pos, n); return sliced_helper(*this, pos, n); }
+ [[nodiscard]] QString chopped(qsizetype n) &&
+ { verify(0, n); return std::move(*this).first(size() - n); }
#endif
+ bool startsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
[[nodiscard]] bool startsWith(QStringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
{ return QtPrivate::startsWith(*this, s, cs); }
- bool startsWith(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ bool startsWith(QLatin1StringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
bool startsWith(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
-#if QT_STRINGVIEW_LEVEL < 2
bool endsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
-#endif
[[nodiscard]] bool endsWith(QStringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
{ return QtPrivate::endsWith(*this, s, cs); }
- bool endsWith(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ bool endsWith(QLatin1StringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
bool endsWith(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
bool isUpper() const;
bool isLower() const;
- [[nodiscard]] QString leftJustified(qsizetype width, QChar fill = QLatin1Char(' '), bool trunc = false) const;
- [[nodiscard]] QString rightJustified(qsizetype width, QChar fill = QLatin1Char(' '), bool trunc = false) const;
+ [[nodiscard]] QString leftJustified(qsizetype width, QChar fill = u' ', bool trunc = false) const;
+ [[nodiscard]] QString rightJustified(qsizetype width, QChar fill = u' ', bool trunc = false) const;
-#if !defined(Q_CLANG_QDOC)
+#if !defined(Q_QDOC)
[[nodiscard]] QString toLower() const &
{ return toLower_helper(*this); }
[[nodiscard]] QString toLower() &&
@@ -653,58 +463,119 @@ public:
QString &insert(qsizetype i, QChar c);
QString &insert(qsizetype i, const QChar *uc, qsizetype len);
-#if QT_STRINGVIEW_LEVEL < 2
- inline QString &insert(qsizetype i, const QString &s) { return insert(i, s.constData(), s.length()); }
-#endif
- inline QString &insert(qsizetype i, QStringView v) { return insert(i, v.data(), v.length()); }
- QString &insert(qsizetype i, QLatin1String s);
+ inline QString &insert(qsizetype i, const QString &s) { return insert(i, s.constData(), s.size()); }
+ inline QString &insert(qsizetype i, QStringView v) { return insert(i, v.data(), v.size()); }
+ QString &insert(qsizetype i, QLatin1StringView s);
+ QString &insert(qsizetype i, QUtf8StringView s);
QString &append(QChar c);
QString &append(const QChar *uc, qsizetype len);
-#if QT_STRINGVIEW_LEVEL < 2
QString &append(const QString &s);
-#endif
- inline QString &append(QStringView v) { return append(v.data(), v.length()); }
- QString &append(QLatin1String s);
+ inline QString &append(QStringView v) { return append(v.data(), v.size()); }
+ QString &append(QLatin1StringView s);
+ QString &append(QUtf8StringView s);
inline QString &prepend(QChar c) { return insert(0, c); }
inline QString &prepend(const QChar *uc, qsizetype len) { return insert(0, uc, len); }
-#if QT_STRINGVIEW_LEVEL < 2
inline QString &prepend(const QString &s) { return insert(0, s); }
-#endif
- inline QString &prepend(QStringView v) { return prepend(v.data(), v.length()); }
- inline QString &prepend(QLatin1String s) { return insert(0, s); }
+ inline QString &prepend(QStringView v) { return prepend(v.data(), v.size()); }
+ inline QString &prepend(QLatin1StringView s) { return insert(0, s); }
+ QString &prepend(QUtf8StringView s) { return insert(0, s); }
+
+ QString &assign(QAnyStringView s);
+ inline QString &assign(qsizetype n, QChar c)
+ {
+ Q_ASSERT(n >= 0);
+ return fill(c, n);
+ }
+ template <typename InputIterator, if_compatible_iterator<InputIterator> = true>
+ QString &assign(InputIterator first, InputIterator last)
+ {
+ using V = typename std::iterator_traits<InputIterator>::value_type;
+ constexpr bool IsL1C = std::is_same_v<std::remove_cv_t<V>, QLatin1Char>;
+ constexpr bool IsFwdIt = std::is_convertible_v<
+ typename std::iterator_traits<InputIterator>::iterator_category,
+ std::forward_iterator_tag
+ >;
+
+ if constexpr (is_contiguous_iterator_v<InputIterator>) {
+ const auto p = q20::to_address(first);
+ const auto len = qsizetype(last - first);
+ if constexpr (IsL1C)
+ return assign(QLatin1StringView(reinterpret_cast<const char*>(p), len));
+ else if constexpr (sizeof(V) == 4)
+ return assign_helper(p, len);
+ else
+ return assign(QAnyStringView(p, len));
+ } else if constexpr (sizeof(V) == 4) { // non-contiguous iterator, feed data piecemeal
+ resize(0);
+ if constexpr (IsFwdIt) {
+ const qsizetype requiredCapacity = 2 * std::distance(first, last);
+ reserve(requiredCapacity);
+ }
+ while (first != last) {
+ append(QChar::fromUcs4(*first));
+ ++first;
+ }
+ return *this;
+ } else if constexpr (QtPrivate::IsCompatibleChar8Type<V>::value) {
+ assign_helper_char8(first, last);
+ d.data()[d.size] = u'\0';
+ return *this;
+ } else {
+ d.assign(first, last, [](QChar ch) -> char16_t { return ch.unicode(); });
+ d.data()[d.size] = u'\0';
+ return *this;
+ }
+ }
inline QString &operator+=(QChar c) { return append(c); }
-#if QT_STRINGVIEW_LEVEL < 2
inline QString &operator+=(const QString &s) { return append(s); }
-#endif
inline QString &operator+=(QStringView v) { return append(v); }
- inline QString &operator+=(QLatin1String s) { return append(s); }
+ inline QString &operator+=(QLatin1StringView s) { return append(s); }
+ QString &operator+=(QUtf8StringView s) { return append(s); }
+
+#if defined(QT_RESTRICTED_CAST_FROM_ASCII)
+ template <qsizetype N>
+ QString &insert(qsizetype i, const char (&ch)[N]) { return insert(i, QUtf8StringView(ch)); }
+ template <qsizetype N>
+ QString &append(const char (&ch)[N]) { return append(QUtf8StringView(ch)); }
+ template <qsizetype N>
+ QString &prepend(const char (&ch)[N]) { return prepend(QUtf8StringView(ch)); }
+ template <qsizetype N>
+ QString &operator+=(const char (&ch)[N]) { return append(QUtf8StringView(ch)); }
+#endif
QString &remove(qsizetype i, qsizetype len);
QString &remove(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive);
- QString &remove(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QString &remove(QLatin1StringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive);
QString &remove(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+
+ QString &removeAt(qsizetype pos)
+ { return size_t(pos) < size_t(size()) ? remove(pos, 1) : *this; }
+ QString &removeFirst() { return !isEmpty() ? remove(0, 1) : *this; }
+ QString &removeLast() { return !isEmpty() ? remove(size() - 1, 1) : *this; }
+
template <typename Predicate>
QString &removeIf(Predicate pred)
{
- QtPrivate::sequential_erase_if(*this, pred);
+ removeIf_helper(pred);
return *this;
}
+
QString &replace(qsizetype i, qsizetype len, QChar after);
QString &replace(qsizetype i, qsizetype len, const QChar *s, qsizetype slen);
QString &replace(qsizetype i, qsizetype len, const QString &after);
QString &replace(QChar before, QChar after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
QString &replace(const QChar *before, qsizetype blen, const QChar *after, qsizetype alen, Qt::CaseSensitivity cs = Qt::CaseSensitive);
- QString &replace(QLatin1String before, QLatin1String after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
- QString &replace(QLatin1String before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
- QString &replace(const QString &before, QLatin1String after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QString &replace(QLatin1StringView before, QLatin1StringView after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QString &replace(QLatin1StringView before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QString &replace(const QString &before, QLatin1StringView after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
QString &replace(const QString &before, const QString &after,
Qt::CaseSensitivity cs = Qt::CaseSensitive);
QString &replace(QChar c, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
- QString &replace(QChar c, QLatin1String after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QString &replace(QChar c, QLatin1StringView after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
#if QT_CONFIG(regularexpression)
QString &replace(const QRegularExpression &re, const QString &after);
inline QString &remove(const QRegularExpression &re)
@@ -755,7 +626,7 @@ public:
const ushort *utf16() const; // ### Qt 7 char16_t
-#if !defined(Q_CLANG_QDOC)
+#if !defined(Q_QDOC)
[[nodiscard]] QByteArray toLatin1() const &
{ return toLatin1_helper(*this); }
[[nodiscard]] QByteArray toLatin1() &&
@@ -790,7 +661,7 @@ public:
{
return fromUtf8(QByteArrayView(utf8, !utf8 || size < 0 ? qstrlen(utf8) : size));
}
-#if defined(__cpp_char8_t) || defined(Q_CLANG_QDOC)
+#if defined(__cpp_char8_t) || defined(Q_QDOC)
Q_WEAK_OVERLOAD
static inline QString fromUtf8(const char8_t *str)
{ return fromUtf8(reinterpret_cast<const char *>(str)); }
@@ -825,10 +696,8 @@ public:
QString &setUnicode(const QChar *unicode, qsizetype size);
inline QString &setUtf16(const ushort *utf16, qsizetype size); // ### Qt 7 char16_t
-#if QT_STRINGVIEW_LEVEL < 2
int compare(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
-#endif
- int compare(QLatin1String other, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
+ int compare(QLatin1StringView other, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
inline int compare(QStringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
int compare(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
{ return compare(QStringView{&ch, 1}, cs); }
@@ -837,10 +706,10 @@ public:
Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept
{ return s1.compare(s2, cs); }
- static inline int compare(const QString &s1, QLatin1String s2,
+ static inline int compare(const QString &s1, QLatin1StringView s2,
Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept
{ return s1.compare(s2, cs); }
- static inline int compare(QLatin1String s1, const QString &s2,
+ static inline int compare(QLatin1StringView s1, const QString &s2,
Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept
{ return -s2.compare(s1, cs); }
static int compare(const QString &s1, QStringView s2, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept
@@ -849,11 +718,11 @@ public:
{ return -s2.compare(s1, cs); }
int localeAwareCompare(const QString& s) const;
- int localeAwareCompare(QStringView s) const;
+ inline int localeAwareCompare(QStringView s) const;
static int localeAwareCompare(const QString& s1, const QString& s2)
{ return s1.localeAwareCompare(s2); }
- static int localeAwareCompare(QStringView s1, QStringView s2);
+ static inline int localeAwareCompare(QStringView s1, QStringView s2);
short toShort(bool *ok=nullptr, int base=10) const
{ return toIntegral_helper<short>(*this, ok, base); }
@@ -867,20 +736,22 @@ public:
{ return toIntegral_helper<long>(*this, ok, base); }
ulong toULong(bool *ok=nullptr, int base=10) const
{ return toIntegral_helper<ulong>(*this, ok, base); }
+ QT_CORE_INLINE_SINCE(6, 5)
qlonglong toLongLong(bool *ok=nullptr, int base=10) const;
+ QT_CORE_INLINE_SINCE(6, 5)
qulonglong toULongLong(bool *ok=nullptr, int base=10) const;
float toFloat(bool *ok=nullptr) const;
double toDouble(bool *ok=nullptr) const;
- QString &setNum(short, int base=10);
- QString &setNum(ushort, int base=10);
- QString &setNum(int, int base=10);
- QString &setNum(uint, int base=10);
- QString &setNum(long, int base=10);
- QString &setNum(ulong, int base=10);
+ inline QString &setNum(short, int base=10);
+ inline QString &setNum(ushort, int base=10);
+ inline QString &setNum(int, int base=10);
+ inline QString &setNum(uint, int base=10);
+ inline QString &setNum(long, int base=10);
+ inline QString &setNum(ulong, int base=10);
QString &setNum(qlonglong, int base=10);
QString &setNum(qulonglong, int base=10);
- QString &setNum(float, char format='g', int precision=6);
+ inline QString &setNum(float, char format='g', int precision=6);
QString &setNum(double, char format='g', int precision=6);
static QString number(int, int base=10);
@@ -891,78 +762,63 @@ public:
static QString number(qulonglong, int base=10);
static QString number(double, char format='g', int precision=6);
- friend bool operator==(const QString &s1, const QString &s2) noexcept
- { return (s1.size() == s2.size()) && QtPrivate::compareStrings(s1, s2, Qt::CaseSensitive) == 0; }
- friend bool operator< (const QString &s1, const QString &s2) noexcept
- { return QtPrivate::compareStrings(s1, s2, Qt::CaseSensitive) < 0; }
- friend bool operator> (const QString &s1, const QString &s2) noexcept { return s2 < s1; }
- friend bool operator!=(const QString &s1, const QString &s2) noexcept { return !(s1 == s2); }
- friend bool operator<=(const QString &s1, const QString &s2) noexcept { return !(s1 > s2); }
- friend bool operator>=(const QString &s1, const QString &s2) noexcept { return !(s1 < s2); }
-
- friend bool operator==(const QString &s1, QLatin1String s2) noexcept
- { return (s1.size() == s2.size()) && QtPrivate::compareStrings(s1, s2, Qt::CaseSensitive) == 0; }
- friend bool operator< (const QString &s1, QLatin1String s2) noexcept
- { return QtPrivate::compareStrings(s1, s2, Qt::CaseSensitive) < 0; }
- friend bool operator> (const QString &s1, QLatin1String s2) noexcept
- { return QtPrivate::compareStrings(s1, s2, Qt::CaseSensitive) > 0; }
- friend bool operator!=(const QString &s1, QLatin1String s2) noexcept { return !(s1 == s2); }
- friend bool operator<=(const QString &s1, QLatin1String s2) noexcept { return !(s1 > s2); }
- friend bool operator>=(const QString &s1, QLatin1String s2) noexcept { return !(s1 < s2); }
-
- friend bool operator==(QLatin1String s1, const QString &s2) noexcept { return s2 == s1; }
- friend bool operator< (QLatin1String s1, const QString &s2) noexcept { return s2 > s1; }
- friend bool operator> (QLatin1String s1, const QString &s2) noexcept { return s2 < s1; }
- friend bool operator!=(QLatin1String s1, const QString &s2) noexcept { return s2 != s1; }
- friend bool operator<=(QLatin1String s1, const QString &s2) noexcept { return s2 >= s1; }
- friend bool operator>=(QLatin1String s1, const QString &s2) noexcept { return s2 <= s1; }
+ friend bool comparesEqual(const QString &s1, const QString &s2) noexcept
+ { return comparesEqual(QStringView(s1), QStringView(s2)); }
+ friend Qt::strong_ordering compareThreeWay(const QString &s1, const QString &s2) noexcept
+ { return compareThreeWay(QStringView(s1), QStringView(s2)); }
+ Q_DECLARE_STRONGLY_ORDERED(QString)
+
+ Q_WEAK_OVERLOAD
+ friend bool comparesEqual(const QString &s1, QUtf8StringView s2) noexcept
+ { return QtPrivate::equalStrings(s1, s2); }
+ Q_WEAK_OVERLOAD
+ friend Qt::strong_ordering compareThreeWay(const QString &s1, QUtf8StringView s2) noexcept
+ {
+ const int res = QtPrivate::compareStrings(s1, s2, Qt::CaseSensitive);
+ return Qt::compareThreeWay(res, 0);
+ }
+ Q_DECLARE_STRONGLY_ORDERED(QString, QUtf8StringView, Q_WEAK_OVERLOAD)
+
+#ifdef __cpp_char8_t
+ friend bool comparesEqual(const QString &s1, const char8_t *s2) noexcept
+ { return comparesEqual(s1, QUtf8StringView(s2)); }
+ friend Qt::strong_ordering compareThreeWay(const QString &s1, const char8_t *s2) noexcept
+ { return compareThreeWay(s1, QUtf8StringView(s2)); }
+ Q_DECLARE_STRONGLY_ORDERED(QString, const char8_t *)
+#endif // __cpp_char8_t
+
+ friend bool comparesEqual(const QString &s1, QLatin1StringView s2) noexcept
+ { return (s1.size() == s2.size()) && QtPrivate::equalStrings(s1, s2); }
+ friend Qt::strong_ordering
+ compareThreeWay(const QString &s1, QLatin1StringView s2) noexcept
+ {
+ const int res = QtPrivate::compareStrings(s1, s2, Qt::CaseSensitive);
+ return Qt::compareThreeWay(res, 0);
+ }
+ Q_DECLARE_STRONGLY_ORDERED(QString, QLatin1StringView)
// Check isEmpty() instead of isNull() for backwards compatibility.
- friend bool operator==(const QString &s1, std::nullptr_t) noexcept { return s1.isEmpty(); }
- friend bool operator!=(const QString &s1, std::nullptr_t) noexcept { return !s1.isEmpty(); }
- friend bool operator< (const QString & , std::nullptr_t) noexcept { return false; }
- friend bool operator> (const QString &s1, std::nullptr_t) noexcept { return !s1.isEmpty(); }
- friend bool operator<=(const QString &s1, std::nullptr_t) noexcept { return s1.isEmpty(); }
- friend bool operator>=(const QString & , std::nullptr_t) noexcept { return true; }
- friend bool operator==(std::nullptr_t, const QString &s2) noexcept { return s2 == nullptr; }
- friend bool operator!=(std::nullptr_t, const QString &s2) noexcept { return s2 != nullptr; }
- friend bool operator< (std::nullptr_t, const QString &s2) noexcept { return s2 > nullptr; }
- friend bool operator> (std::nullptr_t, const QString &s2) noexcept { return s2 < nullptr; }
- friend bool operator<=(std::nullptr_t, const QString &s2) noexcept { return s2 >= nullptr; }
- friend bool operator>=(std::nullptr_t, const QString &s2) noexcept { return s2 <= nullptr; }
-
- friend bool operator==(const QString &s1, const char16_t *s2) noexcept { return s1 == QStringView(s2); }
- friend bool operator!=(const QString &s1, const char16_t *s2) noexcept { return s1 != QStringView(s2); }
- friend bool operator< (const QString &s1, const char16_t *s2) noexcept { return s1 < QStringView(s2); }
- friend bool operator> (const QString &s1, const char16_t *s2) noexcept { return s1 > QStringView(s2); }
- friend bool operator<=(const QString &s1, const char16_t *s2) noexcept { return s1 <= QStringView(s2); }
- friend bool operator>=(const QString &s1, const char16_t *s2) noexcept { return s1 >= QStringView(s2); }
-
- friend bool operator==(const char16_t *s1, const QString &s2) noexcept { return s2 == s1; }
- friend bool operator!=(const char16_t *s1, const QString &s2) noexcept { return s2 != s1; }
- friend bool operator< (const char16_t *s1, const QString &s2) noexcept { return s2 > s1; }
- friend bool operator> (const char16_t *s1, const QString &s2) noexcept { return s2 < s1; }
- friend bool operator<=(const char16_t *s1, const QString &s2) noexcept { return s2 >= s1; }
- friend bool operator>=(const char16_t *s1, const QString &s2) noexcept { return s2 <= s1; }
+ friend bool comparesEqual(const QString &s1, std::nullptr_t) noexcept
+ { return s1.isEmpty(); }
+ friend Qt::strong_ordering compareThreeWay(const QString &s1, std::nullptr_t) noexcept
+ { return s1.isEmpty() ? Qt::strong_ordering::equivalent : Qt::strong_ordering::greater; }
+ Q_DECLARE_STRONGLY_ORDERED(QString, std::nullptr_t)
+
+ friend bool comparesEqual(const QString &s1, const char16_t *s2) noexcept
+ { return comparesEqual(s1, QStringView(s2)); }
+ friend Qt::strong_ordering compareThreeWay(const QString &s1, const char16_t *s2) noexcept
+ { return compareThreeWay(s1, QStringView(s2)); }
+ Q_DECLARE_STRONGLY_ORDERED(QString, const char16_t *)
// QChar <> QString
- friend inline bool operator==(QChar lhs, const QString &rhs) noexcept
- { return rhs.size() == 1 && lhs == rhs.front(); }
- friend inline bool operator< (QChar lhs, const QString &rhs) noexcept
- { return compare_helper(&lhs, 1, rhs.data(), rhs.size()) < 0; }
- friend inline bool operator> (QChar lhs, const QString &rhs) noexcept
- { return compare_helper(&lhs, 1, rhs.data(), rhs.size()) > 0; }
-
- friend inline bool operator!=(QChar lhs, const QString &rhs) noexcept { return !(lhs == rhs); }
- friend inline bool operator<=(QChar lhs, const QString &rhs) noexcept { return !(lhs > rhs); }
- friend inline bool operator>=(QChar lhs, const QString &rhs) noexcept { return !(lhs < rhs); }
-
- friend inline bool operator==(const QString &lhs, QChar rhs) noexcept { return rhs == lhs; }
- friend inline bool operator!=(const QString &lhs, QChar rhs) noexcept { return !(rhs == lhs); }
- friend inline bool operator< (const QString &lhs, QChar rhs) noexcept { return rhs > lhs; }
- friend inline bool operator> (const QString &lhs, QChar rhs) noexcept { return rhs < lhs; }
- friend inline bool operator<=(const QString &lhs, QChar rhs) noexcept { return !(rhs < lhs); }
- friend inline bool operator>=(const QString &lhs, QChar rhs) noexcept { return !(rhs > lhs); }
+ friend bool comparesEqual(const QString &lhs, QChar rhs) noexcept
+ { return lhs.size() == 1 && rhs == lhs.front(); }
+ friend Qt::strong_ordering compareThreeWay(const QString &lhs, QChar rhs) noexcept
+ {
+ const int res = compare_helper(lhs.data(), lhs.size(), &rhs, 1);
+ return Qt::compareThreeWay(res, 0);
+ }
+ Q_DECLARE_STRONGLY_ORDERED(QString, QChar)
// ASCII compatibility
#if defined(QT_RESTRICTED_CAST_FROM_ASCII)
@@ -986,28 +842,40 @@ public:
: QString(fromUtf8(a))
{}
QT_ASCII_CAST_WARN inline QString &operator=(const char *ch)
- { return (*this = fromUtf8(ch)); }
+ {
+ if (!ch) {
+ clear();
+ return *this;
+ }
+ return assign(ch);
+ }
QT_ASCII_CAST_WARN inline QString &operator=(const QByteArray &a)
- { return (*this = fromUtf8(a)); }
-
+ {
+ if (a.isNull()) {
+ clear();
+ return *this;
+ }
+ return assign(a);
+ }
// these are needed, so it compiles with STL support enabled
QT_ASCII_CAST_WARN inline QString &prepend(const char *s)
- { return prepend(QString::fromUtf8(s)); }
+ { return prepend(QUtf8StringView(s)); }
QT_ASCII_CAST_WARN inline QString &prepend(const QByteArray &s)
- { return prepend(QString::fromUtf8(s)); }
+ { return prepend(QUtf8StringView(s)); }
QT_ASCII_CAST_WARN inline QString &append(const char *s)
- { return append(QString::fromUtf8(s)); }
+ { return append(QUtf8StringView(s)); }
QT_ASCII_CAST_WARN inline QString &append(const QByteArray &s)
- { return append(QString::fromUtf8(s)); }
+ { return append(QUtf8StringView(s)); }
QT_ASCII_CAST_WARN inline QString &insert(qsizetype i, const char *s)
- { return insert(i, QString::fromUtf8(s)); }
+ { return insert(i, QUtf8StringView(s)); }
QT_ASCII_CAST_WARN inline QString &insert(qsizetype i, const QByteArray &s)
- { return insert(i, QString::fromUtf8(s)); }
+ { return insert(i, QUtf8StringView(s)); }
QT_ASCII_CAST_WARN inline QString &operator+=(const char *s)
- { return append(QString::fromUtf8(s)); }
+ { return append(QUtf8StringView(s)); }
QT_ASCII_CAST_WARN inline QString &operator+=(const QByteArray &s)
- { return append(QString::fromUtf8(s)); }
+ { return append(QUtf8StringView(s)); }
+#if QT_CORE_REMOVED_SINCE(6, 8)
QT_ASCII_CAST_WARN inline bool operator==(const char *s) const;
QT_ASCII_CAST_WARN inline bool operator!=(const char *s) const;
QT_ASCII_CAST_WARN inline bool operator<(const char *s) const;
@@ -1021,20 +889,41 @@ public:
QT_ASCII_CAST_WARN inline bool operator>(const QByteArray &s) const;
QT_ASCII_CAST_WARN inline bool operator<=(const QByteArray &s) const;
QT_ASCII_CAST_WARN inline bool operator>=(const QByteArray &s) const;
+#else
+ friend bool comparesEqual(const QString &lhs, QByteArrayView rhs) noexcept
+ {
+ return QString::compare_helper(lhs.constData(), lhs.size(),
+ rhs.constData(), rhs.size()) == 0;
+ }
+ friend Qt::strong_ordering
+ compareThreeWay(const QString &lhs, QByteArrayView rhs) noexcept
+ {
+ const int res = QString::compare_helper(lhs.constData(), lhs.size(),
+ rhs.constData(), rhs.size());
+ return Qt::compareThreeWay(res, 0);
+ }
+ Q_DECLARE_STRONGLY_ORDERED(QString, QByteArrayView, QT_ASCII_CAST_WARN)
- QT_ASCII_CAST_WARN friend bool operator==(const char *s1, const QString &s2)
- { return QString::compare_helper(s2.constData(), s2.size(), s1, -1) == 0; }
- QT_ASCII_CAST_WARN friend bool operator!=(const char *s1, const QString &s2)
- { return QString::compare_helper(s2.constData(), s2.size(), s1, -1) != 0; }
- QT_ASCII_CAST_WARN friend bool operator< (const char *s1, const QString &s2)
- { return QString::compare_helper(s2.constData(), s2.size(), s1, -1) > 0; }
- QT_ASCII_CAST_WARN friend bool operator> (const char *s1, const QString &s2)
- { return QString::compare_helper(s2.constData(), s2.size(), s1, -1) < 0; }
- QT_ASCII_CAST_WARN friend bool operator<=(const char *s1, const QString &s2)
- { return QString::compare_helper(s2.constData(), s2.size(), s1, -1) >= 0; }
- QT_ASCII_CAST_WARN friend bool operator>=(const char *s1, const QString &s2)
- { return QString::compare_helper(s2.constData(), s2.size(), s1, -1) <= 0; }
-#endif
+ friend bool comparesEqual(const QString &lhs, const QByteArray &rhs) noexcept
+ { return comparesEqual(lhs, QByteArrayView(rhs)); }
+ friend Qt::strong_ordering
+ compareThreeWay(const QString &lhs, const QByteArray &rhs) noexcept
+ {
+ return compareThreeWay(lhs, QByteArrayView(rhs));
+ }
+ Q_DECLARE_STRONGLY_ORDERED(QString, QByteArray, QT_ASCII_CAST_WARN)
+
+ friend bool comparesEqual(const QString &lhs, const char *rhs) noexcept
+ { return comparesEqual(lhs, QByteArrayView(rhs)); }
+ friend Qt::strong_ordering
+ compareThreeWay(const QString &lhs, const char *rhs) noexcept
+ {
+ return compareThreeWay(lhs, QByteArrayView(rhs));
+ }
+ Q_DECLARE_STRONGLY_ORDERED(QString, const char *, QT_ASCII_CAST_WARN)
+#endif // QT_CORE_REMOVED_SINCE(6, 8)
+
+#endif // !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
typedef QChar *iterator;
typedef const QChar *const_iterator;
@@ -1071,6 +960,12 @@ public:
inline void push_front(const QString &s) { prepend(s); }
void shrink_to_fit() { squeeze(); }
iterator erase(const_iterator first, const_iterator last);
+ inline iterator erase(const_iterator it) { return erase(it, it + 1); }
+ static constexpr qsizetype max_size() noexcept
+ {
+ // -1 to deal with the NUL terminator
+ return Data::max_size() - 1;
+ }
static inline QString fromStdString(const std::string &s);
inline std::string toStdString() const;
@@ -1082,6 +977,8 @@ public:
static inline QString fromStdU32String(const std::u32string &s);
inline std::u32string toStdU32String() const;
+ Q_IMPLICIT inline operator std::u16string_view() const noexcept;
+
#if defined(Q_OS_DARWIN) || defined(Q_QDOC)
static QString fromCFString(CFStringRef string);
CFStringRef toCFString() const Q_DECL_CF_RETURNS_RETAINED;
@@ -1089,10 +986,13 @@ public:
NSString *toNSString() const Q_DECL_NS_RETURNS_AUTORELEASED;
#endif
- inline bool isNull() const { return d->isNull(); }
+#if defined(Q_OS_WASM) || defined(Q_QDOC)
+ static QString fromEcmaString(emscripten::val jsString);
+ emscripten::val toEcmaString() const;
+#endif
+ inline bool isNull() const { return d->isNull(); }
- bool isSimpleText() const;
bool isRightToLeft() const;
[[nodiscard]] bool isValidUtf16() const noexcept
{ return QStringView(*this).isValidUtf16(); }
@@ -1115,14 +1015,20 @@ private:
void reallocData(qsizetype alloc, QArrayData::AllocationOption option);
void reallocGrowData(qsizetype n);
+ // ### remove once QAnyStringView supports UTF-32:
+ QString &assign_helper(const char32_t *data, qsizetype len);
+ // Defined in qstringconverter.h
+ template <typename InputIterator>
+ void assign_helper_char8(InputIterator first, InputIterator last);
static int compare_helper(const QChar *data1, qsizetype length1,
const QChar *data2, qsizetype length2,
Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
static int compare_helper(const QChar *data1, qsizetype length1,
const char *data2, qsizetype length2,
- Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
static int localeAwareCompare_helper(const QChar *data1, qsizetype length1,
const QChar *data2, qsizetype length2);
+ static QString sliced_helper(QString &str, qsizetype pos, qsizetype n);
static QString toLower_helper(const QString &str);
static QString toLower_helper(QString &str);
static QString toUpper_helper(const QString &str);
@@ -1137,14 +1043,26 @@ private:
static QByteArray toLatin1_helper_inplace(QString &);
static QByteArray toUtf8_helper(const QString &);
static QByteArray toLocal8Bit_helper(const QChar *data, qsizetype size);
- static qsizetype toUcs4_helper(const ushort *uc, qsizetype length, uint *out); // ### Qt 7 char16_t
+#if QT_CORE_REMOVED_SINCE(6, 6)
+ static qsizetype toUcs4_helper(const ushort *uc, qsizetype length, uint *out);
+#endif
+ static qsizetype toUcs4_helper(const char16_t *uc, qsizetype length, char32_t *out);
static qlonglong toIntegral_helper(QStringView string, bool *ok, int base);
static qulonglong toIntegral_helper(QStringView string, bool *ok, uint base);
- void replace_helper(size_t *indices, qsizetype nIndices, qsizetype blen, const QChar *after, qsizetype alen);
+ template <typename Predicate>
+ qsizetype removeIf_helper(Predicate pred)
+ {
+ const qsizetype result = d->eraseIf(pred);
+ if (result > 0)
+ d.data()[d.size] = u'\0';
+ return result;
+ }
+
friend class QStringView;
friend class QByteArray;
- friend class QCollator;
friend struct QAbstractConcatenable;
+ template <typename T> friend qsizetype erase(QString &s, const T &t);
+ template <typename Predicate> friend qsizetype erase_if(QString &s, Predicate pred);
template <typename T> static
T toIntegral_helper(QStringView string, bool *ok, int base)
@@ -1162,23 +1080,46 @@ private:
return T(val);
}
+ Q_ALWAYS_INLINE constexpr void verify([[maybe_unused]] qsizetype pos = 0,
+ [[maybe_unused]] qsizetype n = 1) const
+ {
+ Q_ASSERT(pos >= 0);
+ Q_ASSERT(pos <= d.size);
+ Q_ASSERT(n >= 0);
+ Q_ASSERT(n <= d.size - pos);
+ }
+
public:
inline DataPointer &data_ptr() { return d; }
inline const DataPointer &data_ptr() const { return d; }
};
//
-// QLatin1String inline members that require QString:
+// QLatin1StringView inline members that require QUtf8StringView:
+//
+
+int QLatin1StringView::compare(QUtf8StringView other, Qt::CaseSensitivity cs) const noexcept
+{ return QtPrivate::compareStrings(*this, other, cs); }
+
+//
+// QLatin1StringView inline members that require QString:
+//
+
+QString QLatin1StringView::toString() const { return *this; }
+
+//
+// QStringView inline members that require QUtf8StringView:
//
-QString QLatin1String::toString() const { return *this; }
+int QStringView::compare(QUtf8StringView other, Qt::CaseSensitivity cs) const noexcept
+{ return QtPrivate::compareStrings(*this, other, cs); }
//
// QStringView inline members that require QString:
//
QString QStringView::toString() const
-{ return Q_ASSERT(size() == length()), QString(data(), length()); }
+{ return QString(*this); }
qint64 QStringView::toLongLong(bool *ok, int base) const
{ return QString::toIntegral_helper<qint64>(*this, ok, base); }
@@ -1198,14 +1139,71 @@ ushort QStringView::toUShort(bool *ok, int base) const
{ return QString::toIntegral_helper<ushort>(*this, ok, base); }
//
-// QUtf8StringView inline members that require QString:
+// QUtf8StringView inline members that require QStringView:
+//
+
+template <bool UseChar8T>
+int QBasicUtf8StringView<UseChar8T>::compare(QChar other, Qt::CaseSensitivity cs) const noexcept
+{
+ return QtPrivate::compareStrings(*this, QStringView(&other, 1), cs);
+}
+
+template <bool UseChar8T>
+int QBasicUtf8StringView<UseChar8T>::compare(QStringView other, Qt::CaseSensitivity cs) const noexcept
+{
+ return QtPrivate::compareStrings(*this, other, cs);
+}
+
+template <bool UseChar8T>
+[[nodiscard]] bool QBasicUtf8StringView<UseChar8T>::equal(QChar other) const noexcept
+{
+ return QtPrivate::equalStrings(*this, QStringView(&other, 1));
+}
+
+template <bool UseChar8T>
+[[nodiscard]] bool QBasicUtf8StringView<UseChar8T>::equal(QStringView other) const noexcept
+{
+ return QtPrivate::equalStrings(*this, other);
+}
+
+//
+// QUtf8StringView inline members that require QString, QL1SV or QBA:
//
template <bool UseChar8T>
QString QBasicUtf8StringView<UseChar8T>::toString() const
{
- Q_ASSERT(size() == int(size()));
- return QString::fromUtf8(data(), int(size()));
+ return QString::fromUtf8(data(), size());
+}
+
+template<bool UseChar8T>
+[[nodiscard]] int QBasicUtf8StringView<UseChar8T>::compare(QLatin1StringView other,
+ Qt::CaseSensitivity cs) const noexcept
+{
+ return QtPrivate::compareStrings(*this, other, cs);
+}
+
+template<bool UseChar8T>
+[[nodiscard]] int QBasicUtf8StringView<UseChar8T>::compare(const QByteArray &other,
+ Qt::CaseSensitivity cs) const noexcept
+{
+ return QtPrivate::compareStrings(*this,
+ QBasicUtf8StringView<UseChar8T>(other.data(), other.size()),
+ cs);
+}
+
+template <bool UseChar8T>
+[[nodiscard]] bool QBasicUtf8StringView<UseChar8T>::equal(QLatin1StringView other) const noexcept
+{
+ return QtPrivate::equalStrings(*this, other);
+}
+
+template <bool UseChar8T>
+[[nodiscard]] bool QBasicUtf8StringView<UseChar8T>::equal(const QByteArray &other) const noexcept
+{
+ return size() == other.size()
+ && QtPrivate::equalStrings(*this, QBasicUtf8StringView<UseChar8T>(other.data(),
+ other.size()));
}
//
@@ -1223,17 +1221,15 @@ QString QAnyStringView::toString() const
//
// QString inline members
//
-inline QString::QString(QLatin1String latin1)
+QString::QString(QLatin1StringView latin1)
{ *this = QString::fromLatin1(latin1.data(), latin1.size()); }
-inline const QChar QString::at(qsizetype i) const
-{ Q_ASSERT(size_t(i) < size_t(size())); return QChar(d.data()[i]); }
-inline const QChar QString::operator[](qsizetype i) const
-{ Q_ASSERT(size_t(i) < size_t(size())); return QChar(d.data()[i]); }
-inline bool QString::isEmpty() const
-{ return d.size == 0; }
-inline const QChar *QString::unicode() const
+const QChar QString::at(qsizetype i) const
+{ verify(i, 1); return QChar(d.data()[i]); }
+const QChar QString::operator[](qsizetype i) const
+{ verify(i, 1); return QChar(d.data()[i]); }
+const QChar *QString::unicode() const
{ return data(); }
-inline const QChar *QString::data() const
+const QChar *QString::data() const
{
#if QT5_NULL_STRINGS == 1
return reinterpret_cast<const QChar *>(d.data() ? d.data() : &_empty);
@@ -1241,58 +1237,58 @@ inline const QChar *QString::data() const
return reinterpret_cast<const QChar *>(d.data());
#endif
}
-inline QChar *QString::data()
+QChar *QString::data()
{
detach();
Q_ASSERT(d.data());
return reinterpret_cast<QChar *>(d.data());
}
-inline const QChar *QString::constData() const
+const QChar *QString::constData() const
{ return data(); }
-inline void QString::detach()
+void QString::detach()
{ if (d->needsDetach()) reallocData(d.size, QArrayData::KeepSize); }
-inline bool QString::isDetached() const
+bool QString::isDetached() const
{ return !d->isShared(); }
-inline void QString::clear()
+void QString::clear()
{ if (!isNull()) *this = QString(); }
-inline QString::QString(const QString &other) noexcept : d(other.d)
+QString::QString(const QString &other) noexcept : d(other.d)
{ }
-inline qsizetype QString::capacity() const { return qsizetype(d->constAllocatedCapacity()); }
-inline QString &QString::setNum(short n, int base)
+qsizetype QString::capacity() const { return qsizetype(d->constAllocatedCapacity()); }
+QString &QString::setNum(short n, int base)
{ return setNum(qlonglong(n), base); }
-inline QString &QString::setNum(ushort n, int base)
+QString &QString::setNum(ushort n, int base)
{ return setNum(qulonglong(n), base); }
-inline QString &QString::setNum(int n, int base)
+QString &QString::setNum(int n, int base)
{ return setNum(qlonglong(n), base); }
-inline QString &QString::setNum(uint n, int base)
+QString &QString::setNum(uint n, int base)
{ return setNum(qulonglong(n), base); }
-inline QString &QString::setNum(long n, int base)
+QString &QString::setNum(long n, int base)
{ return setNum(qlonglong(n), base); }
-inline QString &QString::setNum(ulong n, int base)
+QString &QString::setNum(ulong n, int base)
{ return setNum(qulonglong(n), base); }
-inline QString &QString::setNum(float n, char f, int prec)
+QString &QString::setNum(float n, char f, int prec)
{ return setNum(double(n),f,prec); }
-inline QString QString::arg(int a, int fieldWidth, int base, QChar fillChar) const
+QString QString::arg(int a, int fieldWidth, int base, QChar fillChar) const
{ return arg(qlonglong(a), fieldWidth, base, fillChar); }
-inline QString QString::arg(uint a, int fieldWidth, int base, QChar fillChar) const
+QString QString::arg(uint a, int fieldWidth, int base, QChar fillChar) const
{ return arg(qulonglong(a), fieldWidth, base, fillChar); }
-inline QString QString::arg(long a, int fieldWidth, int base, QChar fillChar) const
+QString QString::arg(long a, int fieldWidth, int base, QChar fillChar) const
{ return arg(qlonglong(a), fieldWidth, base, fillChar); }
-inline QString QString::arg(ulong a, int fieldWidth, int base, QChar fillChar) const
+QString QString::arg(ulong a, int fieldWidth, int base, QChar fillChar) const
{ return arg(qulonglong(a), fieldWidth, base, fillChar); }
-inline QString QString::arg(short a, int fieldWidth, int base, QChar fillChar) const
+QString QString::arg(short a, int fieldWidth, int base, QChar fillChar) const
{ return arg(qlonglong(a), fieldWidth, base, fillChar); }
-inline QString QString::arg(ushort a, int fieldWidth, int base, QChar fillChar) const
+QString QString::arg(ushort a, int fieldWidth, int base, QChar fillChar) const
{ return arg(qulonglong(a), fieldWidth, base, fillChar); }
-inline QString QString::section(QChar asep, qsizetype astart, qsizetype aend, SectionFlags aflags) const
+QString QString::section(QChar asep, qsizetype astart, qsizetype aend, SectionFlags aflags) const
{ return section(QString(asep), astart, aend, aflags); }
QT_WARNING_PUSH
QT_WARNING_DISABLE_MSVC(4127) // "conditional expression is constant"
QT_WARNING_DISABLE_INTEL(111) // "statement is unreachable"
-inline qsizetype QString::toWCharArray(wchar_t *array) const
+qsizetype QString::toWCharArray(wchar_t *array) const
{
return qToStringViewIgnoringNull(*this).toWCharArray(array);
}
@@ -1304,23 +1300,29 @@ qsizetype QStringView::toWCharArray(wchar_t *array) const
memcpy(array, src, sizeof(QChar) * size());
return size();
} else {
- return QString::toUcs4_helper(reinterpret_cast<const ushort *>(data()), size(),
- reinterpret_cast<uint *>(array));
+ return QString::toUcs4_helper(utf16(), size(), reinterpret_cast<char32_t *>(array));
}
}
QT_WARNING_POP
-inline QString QString::fromWCharArray(const wchar_t *string, qsizetype size)
+QString QString::fromWCharArray(const wchar_t *string, qsizetype size)
{
- return sizeof(wchar_t) == sizeof(QChar) ? fromUtf16(reinterpret_cast<const char16_t *>(string), size)
- : fromUcs4(reinterpret_cast<const char32_t *>(string), size);
+ if constexpr (sizeof(wchar_t) == sizeof(QChar)) {
+ return QString(reinterpret_cast<const QChar *>(string), size);
+ } else {
+#ifdef QT_BOOTSTRAPPED
+ Q_UNREACHABLE_RETURN(QString());
+#else
+ return fromUcs4(reinterpret_cast<const char32_t *>(string), size);
+#endif
+ }
}
-inline constexpr QString::QString() noexcept {}
-inline QString::~QString() {}
+constexpr QString::QString() noexcept {}
+QString::~QString() {}
-inline void QString::reserve(qsizetype asize)
+void QString::reserve(qsizetype asize)
{
if (d->needsDetach() || asize >= capacity() - d.freeSpaceAtBegin())
reallocData(qMax(asize, size()), QArrayData::KeepSize);
@@ -1328,7 +1330,7 @@ inline void QString::reserve(qsizetype asize)
d->setFlag(Data::CapacityReserved);
}
-inline void QString::squeeze()
+void QString::squeeze()
{
if (!d.isMutable())
return;
@@ -1338,165 +1340,147 @@ inline void QString::squeeze()
d->clearFlag(Data::CapacityReserved);
}
-inline QString &QString::setUtf16(const ushort *autf16, qsizetype asize)
+QString &QString::setUtf16(const ushort *autf16, qsizetype asize)
{ return setUnicode(reinterpret_cast<const QChar *>(autf16), asize); }
-inline QChar &QString::operator[](qsizetype i)
-{ Q_ASSERT(i >= 0 && i < size()); return data()[i]; }
-inline QChar &QString::front() { return operator[](0); }
-inline QChar &QString::back() { return operator[](size() - 1); }
-inline QString::iterator QString::begin()
+QChar &QString::operator[](qsizetype i)
+{ verify(i, 1); return data()[i]; }
+QChar &QString::front() { return operator[](0); }
+QChar &QString::back() { return operator[](size() - 1); }
+QString::iterator QString::begin()
{ detach(); return reinterpret_cast<QChar*>(d.data()); }
-inline QString::const_iterator QString::begin() const
+QString::const_iterator QString::begin() const
{ return reinterpret_cast<const QChar*>(d.data()); }
-inline QString::const_iterator QString::cbegin() const
+QString::const_iterator QString::cbegin() const
{ return reinterpret_cast<const QChar*>(d.data()); }
-inline QString::const_iterator QString::constBegin() const
+QString::const_iterator QString::constBegin() const
{ return reinterpret_cast<const QChar*>(d.data()); }
-inline QString::iterator QString::end()
+QString::iterator QString::end()
{ detach(); return reinterpret_cast<QChar*>(d.data() + d.size); }
-inline QString::const_iterator QString::end() const
+QString::const_iterator QString::end() const
{ return reinterpret_cast<const QChar*>(d.data() + d.size); }
-inline QString::const_iterator QString::cend() const
+QString::const_iterator QString::cend() const
{ return reinterpret_cast<const QChar*>(d.data() + d.size); }
-inline QString::const_iterator QString::constEnd() const
+QString::const_iterator QString::constEnd() const
{ return reinterpret_cast<const QChar*>(d.data() + d.size); }
-#if QT_STRINGVIEW_LEVEL < 2
-inline bool QString::contains(const QString &s, Qt::CaseSensitivity cs) const
+bool QString::contains(const QString &s, Qt::CaseSensitivity cs) const
{ return indexOf(s, 0, cs) != -1; }
-#endif
-inline bool QString::contains(QLatin1String s, Qt::CaseSensitivity cs) const
+bool QString::contains(QLatin1StringView s, Qt::CaseSensitivity cs) const
{ return indexOf(s, 0, cs) != -1; }
-inline bool QString::contains(QChar c, Qt::CaseSensitivity cs) const
+bool QString::contains(QChar c, Qt::CaseSensitivity cs) const
{ return indexOf(c, 0, cs) != -1; }
-inline bool QString::contains(QStringView s, Qt::CaseSensitivity cs) const noexcept
+bool QString::contains(QStringView s, Qt::CaseSensitivity cs) const noexcept
{ return indexOf(s, 0, cs) != -1; }
#if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
-inline bool QString::operator==(const char *s) const
+#if QT_CORE_REMOVED_SINCE(6, 8)
+bool QString::operator==(const char *s) const
{ return QString::compare_helper(constData(), size(), s, -1) == 0; }
-inline bool QString::operator!=(const char *s) const
+bool QString::operator!=(const char *s) const
{ return QString::compare_helper(constData(), size(), s, -1) != 0; }
-inline bool QString::operator<(const char *s) const
+bool QString::operator<(const char *s) const
{ return QString::compare_helper(constData(), size(), s, -1) < 0; }
-inline bool QString::operator>(const char *s) const
+bool QString::operator>(const char *s) const
{ return QString::compare_helper(constData(), size(), s, -1) > 0; }
-inline bool QString::operator<=(const char *s) const
+bool QString::operator<=(const char *s) const
{ return QString::compare_helper(constData(), size(), s, -1) <= 0; }
-inline bool QString::operator>=(const char *s) const
+bool QString::operator>=(const char *s) const
{ return QString::compare_helper(constData(), size(), s, -1) >= 0; }
-QT_ASCII_CAST_WARN inline bool QLatin1String::operator==(const char *s) const
-{ return QString::fromUtf8(s) == *this; }
-QT_ASCII_CAST_WARN inline bool QLatin1String::operator!=(const char *s) const
-{ return QString::fromUtf8(s) != *this; }
-QT_ASCII_CAST_WARN inline bool QLatin1String::operator<(const char *s) const
-{ return QString::fromUtf8(s) > *this; }
-QT_ASCII_CAST_WARN inline bool QLatin1String::operator>(const char *s) const
-{ return QString::fromUtf8(s) < *this; }
-QT_ASCII_CAST_WARN inline bool QLatin1String::operator<=(const char *s) const
-{ return QString::fromUtf8(s) >= *this; }
-QT_ASCII_CAST_WARN inline bool QLatin1String::operator>=(const char *s) const
-{ return QString::fromUtf8(s) <= *this; }
-
-QT_ASCII_CAST_WARN inline bool QLatin1String::operator==(const QByteArray &s) const
-{ return QString::fromUtf8(s) == *this; }
-QT_ASCII_CAST_WARN inline bool QLatin1String::operator!=(const QByteArray &s) const
-{ return QString::fromUtf8(s) != *this; }
-QT_ASCII_CAST_WARN inline bool QLatin1String::operator<(const QByteArray &s) const
-{ return QString::fromUtf8(s) > *this; }
-QT_ASCII_CAST_WARN inline bool QLatin1String::operator>(const QByteArray &s) const
-{ return QString::fromUtf8(s) < *this; }
-QT_ASCII_CAST_WARN inline bool QLatin1String::operator<=(const QByteArray &s) const
-{ return QString::fromUtf8(s) >= *this; }
-QT_ASCII_CAST_WARN inline bool QLatin1String::operator>=(const QByteArray &s) const
-{ return QString::fromUtf8(s) <= *this; }
-
-inline int QLatin1String::compare_helper(const QLatin1String &s1, const char *s2)
-{
- return QString::compare(s1, QString::fromUtf8(s2));
-}
-
-QT_ASCII_CAST_WARN inline bool QString::operator==(const QByteArray &s) const
+QT_ASCII_CAST_WARN bool QString::operator==(const QByteArray &s) const
{ return QString::compare_helper(constData(), size(), s.constData(), s.size()) == 0; }
-QT_ASCII_CAST_WARN inline bool QString::operator!=(const QByteArray &s) const
+QT_ASCII_CAST_WARN bool QString::operator!=(const QByteArray &s) const
{ return QString::compare_helper(constData(), size(), s.constData(), s.size()) != 0; }
-QT_ASCII_CAST_WARN inline bool QString::operator<(const QByteArray &s) const
+QT_ASCII_CAST_WARN bool QString::operator<(const QByteArray &s) const
{ return QString::compare_helper(constData(), size(), s.constData(), s.size()) < 0; }
-QT_ASCII_CAST_WARN inline bool QString::operator>(const QByteArray &s) const
+QT_ASCII_CAST_WARN bool QString::operator>(const QByteArray &s) const
{ return QString::compare_helper(constData(), size(), s.constData(), s.size()) > 0; }
-QT_ASCII_CAST_WARN inline bool QString::operator<=(const QByteArray &s) const
+QT_ASCII_CAST_WARN bool QString::operator<=(const QByteArray &s) const
{ return QString::compare_helper(constData(), size(), s.constData(), s.size()) <= 0; }
-QT_ASCII_CAST_WARN inline bool QString::operator>=(const QByteArray &s) const
+QT_ASCII_CAST_WARN bool QString::operator>=(const QByteArray &s) const
{ return QString::compare_helper(constData(), size(), s.constData(), s.size()) >= 0; }
-inline bool QByteArray::operator==(const QString &s) const
+bool QByteArray::operator==(const QString &s) const
{ return QString::compare_helper(s.constData(), s.size(), constData(), size()) == 0; }
-inline bool QByteArray::operator!=(const QString &s) const
+bool QByteArray::operator!=(const QString &s) const
{ return QString::compare_helper(s.constData(), s.size(), constData(), size()) != 0; }
-inline bool QByteArray::operator<(const QString &s) const
+bool QByteArray::operator<(const QString &s) const
{ return QString::compare_helper(s.constData(), s.size(), constData(), size()) > 0; }
-inline bool QByteArray::operator>(const QString &s) const
+bool QByteArray::operator>(const QString &s) const
{ return QString::compare_helper(s.constData(), s.size(), constData(), size()) < 0; }
-inline bool QByteArray::operator<=(const QString &s) const
+bool QByteArray::operator<=(const QString &s) const
{ return QString::compare_helper(s.constData(), s.size(), constData(), size()) >= 0; }
-inline bool QByteArray::operator>=(const QString &s) const
+bool QByteArray::operator>=(const QString &s) const
{ return QString::compare_helper(s.constData(), s.size(), constData(), size()) <= 0; }
+#endif // QT_CORE_REMOVED_SINCE(6, 8)
#endif // !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
#if !defined(QT_USE_FAST_OPERATOR_PLUS) && !defined(QT_USE_QSTRINGBUILDER)
-inline const QString operator+(const QString &s1, const QString &s2)
+inline QString operator+(const QString &s1, const QString &s2)
{ QString t(s1); t += s2; return t; }
-inline const QString operator+(const QString &s1, QChar s2)
+inline QString operator+(QString &&lhs, const QString &rhs)
+{ return std::move(lhs += rhs); }
+inline QString operator+(const QString &s1, QChar s2)
{ QString t(s1); t += s2; return t; }
-inline const QString operator+(QChar s1, const QString &s2)
+inline QString operator+(QString &&lhs, QChar rhs)
+{ return std::move(lhs += rhs); }
+inline QString operator+(QChar s1, const QString &s2)
{ QString t(s1); t += s2; return t; }
# if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
-QT_ASCII_CAST_WARN inline const QString operator+(const QString &s1, const char *s2)
-{ QString t(s1); t += QString::fromUtf8(s2); return t; }
-QT_ASCII_CAST_WARN inline const QString operator+(const char *s1, const QString &s2)
+QT_ASCII_CAST_WARN inline QString operator+(const QString &s1, const char *s2)
+{ QString t(s1); t += QUtf8StringView(s2); return t; }
+QT_ASCII_CAST_WARN inline QString operator+(QString &&lhs, const char *rhs)
+{ QT_IGNORE_DEPRECATIONS(return std::move(lhs += rhs);) }
+QT_ASCII_CAST_WARN inline QString operator+(const char *s1, const QString &s2)
{ QString t = QString::fromUtf8(s1); t += s2; return t; }
-QT_ASCII_CAST_WARN inline const QString operator+(const QByteArray &ba, const QString &s)
+QT_ASCII_CAST_WARN inline QString operator+(const QByteArray &ba, const QString &s)
{ QString t = QString::fromUtf8(ba); t += s; return t; }
-QT_ASCII_CAST_WARN inline const QString operator+(const QString &s, const QByteArray &ba)
-{ QString t(s); t += QString::fromUtf8(ba); return t; }
+QT_ASCII_CAST_WARN inline QString operator+(const QString &s, const QByteArray &ba)
+{ QString t(s); t += QUtf8StringView(ba); return t; }
+QT_ASCII_CAST_WARN inline QString operator+(QString &&lhs, const QByteArray &rhs)
+{ QT_IGNORE_DEPRECATIONS(return std::move(lhs += rhs);) }
# endif // QT_NO_CAST_FROM_ASCII
#endif // QT_USE_QSTRINGBUILDER
-inline std::string QString::toStdString() const
+std::string QString::toStdString() const
{ return toUtf8().toStdString(); }
-inline QString QString::fromStdString(const std::string &s)
-{ return fromUtf8(s.data(), int(s.size())); }
+QString QString::fromStdString(const std::string &s)
+{ return fromUtf8(s.data(), qsizetype(s.size())); }
-inline std::wstring QString::toStdWString() const
+std::wstring QString::toStdWString() const
{
std::wstring str;
- str.resize(length());
+ str.resize(size());
str.resize(toWCharArray(str.data()));
return str;
}
-inline QString QString::fromStdWString(const std::wstring &s)
-{ return fromWCharArray(s.data(), int(s.size())); }
+QString QString::fromStdWString(const std::wstring &s)
+{ return fromWCharArray(s.data(), qsizetype(s.size())); }
-inline QString QString::fromStdU16String(const std::u16string &s)
-{ return fromUtf16(s.data(), int(s.size())); }
+QString QString::fromStdU16String(const std::u16string &s)
+{ return fromUtf16(s.data(), qsizetype(s.size())); }
-inline std::u16string QString::toStdU16String() const
-{ return std::u16string(reinterpret_cast<const char16_t*>(utf16()), length()); }
+std::u16string QString::toStdU16String() const
+{ return std::u16string(reinterpret_cast<const char16_t*>(data()), size()); }
-inline QString QString::fromStdU32String(const std::u32string &s)
-{ return fromUcs4(s.data(), int(s.size())); }
+QString QString::fromStdU32String(const std::u32string &s)
+{ return fromUcs4(s.data(), qsizetype(s.size())); }
-inline std::u32string QString::toStdU32String() const
+std::u32string QString::toStdU32String() const
{
- std::u32string u32str(length(), char32_t(0));
- qsizetype len = toUcs4_helper(reinterpret_cast<const ushort *>(constData()),
- length(), reinterpret_cast<uint*>(&u32str[0]));
+ std::u32string u32str(size(), char32_t(0));
+ const qsizetype len = toUcs4_helper(reinterpret_cast<const char16_t *>(data()),
+ size(), u32str.data());
u32str.resize(len);
return u32str;
}
+QString::operator std::u16string_view() const noexcept
+{
+ return std::u16string_view(d.data(), size_t(d.size));
+}
+
#if !defined(QT_NO_DATASTREAM) || defined(QT_BOOTSTRAPPED)
Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QString &);
Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QString &);
@@ -1505,13 +1489,37 @@ Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QString &);
Q_DECLARE_SHARED(QString)
Q_DECLARE_OPERATORS_FOR_FLAGS(QString::SectionFlags)
-inline int QString::compare(QStringView s, Qt::CaseSensitivity cs) const noexcept
+int QString::compare(QStringView s, Qt::CaseSensitivity cs) const noexcept
{ return -s.compare(*this, cs); }
-inline int QString::localeAwareCompare(QStringView s) const
-{ return localeAwareCompare_helper(constData(), length(), s.constData(), s.length()); }
-inline int QString::localeAwareCompare(QStringView s1, QStringView s2)
-{ return localeAwareCompare_helper(s1.constData(), s1.length(), s2.constData(), s2.length()); }
+int QString::localeAwareCompare(QStringView s) const
+{ return localeAwareCompare_helper(constData(), size(), s.constData(), s.size()); }
+int QString::localeAwareCompare(QStringView s1, QStringView s2)
+{ return localeAwareCompare_helper(s1.constData(), s1.size(), s2.constData(), s2.size()); }
+int QStringView::localeAwareCompare(QStringView other) const
+{ return QString::localeAwareCompare(*this, other); }
+
+#if QT_CORE_INLINE_IMPL_SINCE(6, 5)
+qint64 QString::toLongLong(bool *ok, int base) const
+{
+ return toIntegral_helper<qlonglong>(*this, ok, base);
+}
+
+quint64 QString::toULongLong(bool *ok, int base) const
+{
+ return toIntegral_helper<qulonglong>(*this, ok, base);
+}
+#endif
+#if QT_CORE_INLINE_IMPL_SINCE(6, 7)
+qsizetype QString::indexOf(QChar ch, qsizetype from, Qt::CaseSensitivity cs) const
+{
+ return qToStringViewIgnoringNull(*this).indexOf(ch, from, cs);
+}
+qsizetype QString::lastIndexOf(QChar ch, qsizetype from, Qt::CaseSensitivity cs) const
+{
+ return qToStringViewIgnoringNull(*this).lastIndexOf(ch, from, cs);
+}
+#endif
namespace QtPrivate {
// used by qPrintable() and qUtf8Printable() macros
@@ -1519,6 +1527,23 @@ inline const QString &asString(const QString &s) { return s; }
inline QString &&asString(QString &&s) { return std::move(s); }
}
+#ifndef qPrintable
+# define qPrintable(string) QtPrivate::asString(string).toLocal8Bit().constData()
+#endif
+
+#ifndef qUtf8Printable
+# define qUtf8Printable(string) QtPrivate::asString(string).toUtf8().constData()
+#endif
+
+/*
+ Wrap QString::utf16() with enough casts to allow passing it
+ to QString::asprintf("%ls") without warnings.
+*/
+#ifndef qUtf16Printable
+# define qUtf16Printable(string) \
+ static_cast<const wchar_t*>(static_cast<const void*>(QtPrivate::asString(string).utf16()))
+#endif
+
//
// QStringView::arg() implementation
//
@@ -1536,13 +1561,13 @@ struct QStringViewArg : ArgBase {
};
struct QLatin1StringArg : ArgBase {
- QLatin1String string;
+ QLatin1StringView string;
QLatin1StringArg() = default;
- constexpr explicit QLatin1StringArg(QLatin1String v) noexcept : ArgBase{L1}, string{v} {}
+ constexpr explicit QLatin1StringArg(QLatin1StringView v) noexcept : ArgBase{L1}, string{v} {}
};
[[nodiscard]] Q_CORE_EXPORT QString argToQString(QStringView pattern, size_t n, const ArgBase **args);
-[[nodiscard]] Q_CORE_EXPORT QString argToQString(QLatin1String pattern, size_t n, const ArgBase **args);
+[[nodiscard]] Q_CORE_EXPORT QString argToQString(QLatin1StringView pattern, size_t n, const ArgBase **args);
template <typename StringView, typename...Args>
[[nodiscard]] Q_ALWAYS_INLINE QString argToQStringDispatch(StringView pattern, const Args &...args)
@@ -1554,7 +1579,7 @@ template <typename StringView, typename...Args>
inline QStringViewArg qStringLikeToArg(const QString &s) noexcept { return QStringViewArg{qToStringViewIgnoringNull(s)}; }
constexpr inline QStringViewArg qStringLikeToArg(QStringView s) noexcept { return QStringViewArg{s}; }
inline QStringViewArg qStringLikeToArg(const QChar &c) noexcept { return QStringViewArg{QStringView{&c, 1}}; }
-constexpr inline QLatin1StringArg qStringLikeToArg(QLatin1String s) noexcept { return QLatin1StringArg{s}; }
+constexpr inline QLatin1StringArg qStringLikeToArg(QLatin1StringView s) noexcept { return QLatin1StringArg{s}; }
} // namespace QtPrivate
@@ -1567,7 +1592,7 @@ QString QStringView::arg(Args &&...args) const
template <typename...Args>
Q_ALWAYS_INLINE
-QString QLatin1String::arg(Args &&...args) const
+QString QLatin1StringView::arg(Args &&...args) const
{
return QtPrivate::argToQStringDispatch(*this, QtPrivate::qStringLikeToArg(args)...);
}
@@ -1575,26 +1600,46 @@ QString QLatin1String::arg(Args &&...args) const
template <typename T>
qsizetype erase(QString &s, const T &t)
{
- return QtPrivate::sequential_erase(s, t);
+ return s.removeIf_helper([&t](const auto &e) { return t == e; });
}
template <typename Predicate>
qsizetype erase_if(QString &s, Predicate pred)
{
- return QtPrivate::sequential_erase_if(s, pred);
+ return s.removeIf_helper(pred);
}
-inline namespace QtLiterals {
-inline QString operator"" _qs(const char16_t *str, size_t size) noexcept
+namespace Qt {
+inline namespace Literals {
+inline namespace StringLiterals {
+inline QString operator""_s(const char16_t *str, size_t size) noexcept
{
return QString(QStringPrivate(nullptr, const_cast<char16_t *>(str), qsizetype(size)));
}
+
+} // StringLiterals
+} // Literals
+} // Qt
+
+inline namespace QtLiterals {
+#if QT_DEPRECATED_SINCE(6, 8)
+
+QT_DEPRECATED_VERSION_X_6_8("Use _s from Qt::StringLiterals namespace instead.")
+inline QString operator""_qs(const char16_t *str, size_t size) noexcept
+{
+ return Qt::StringLiterals::operator""_s(str, size);
+}
+
+#endif // QT_DEPRECATED_SINCE(6, 8)
} // QtLiterals
QT_END_NAMESPACE
-#if defined(QT_USE_FAST_OPERATOR_PLUS) || defined(QT_USE_QSTRINGBUILDER)
#include <QtCore/qstringbuilder.h>
+#include <QtCore/qstringconverter.h>
+
+#ifdef Q_L1S_VIEW_IS_PRIMARY
+# undef Q_L1S_VIEW_IS_PRIMARY
#endif
#endif // QSTRING_H
diff --git a/src/corelib/text/qstring_mips_dsp_asm.S b/src/corelib/text/qstring_mips_dsp_asm.S
index 202f322310..da764b2e9a 100644
--- a/src/corelib/text/qstring_mips_dsp_asm.S
+++ b/src/corelib/text/qstring_mips_dsp_asm.S
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Imagination Technologies Limited, www.imgtec.com
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2013 Imagination Technologies Limited, www.imgtec.com
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "../../gui/painting/qt_mips_asm_dsp_p.h"
diff --git a/src/corelib/text/qstringalgorithms.h b/src/corelib/text/qstringalgorithms.h
index 68d47b2893..71a1dbd526 100644
--- a/src/corelib/text/qstringalgorithms.h
+++ b/src/corelib/text/qstringalgorithms.h
@@ -1,138 +1,112 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QSTRINGALGORITHMS_H
#define QSTRINGALGORITHMS_H
-#include <QtCore/qnamespace.h>
+#include <QtCore/qbytearrayalgorithms.h>
#include <QtCore/qcontainerfwd.h>
+#include <QtCore/qnamespace.h>
+#include <QtCore/qstringfwd.h>
#if 0
#pragma qt_class(QStringAlgorithms)
#endif
-QT_BEGIN_NAMESPACE
+#include <algorithm> // std::find
+#include <iterator> // std::size
-#if QT_VERSION >= QT_VERSION_CHECK(7, 0, 0)
-# define QT_BEGIN_HAS_CHAR8_T_NAMESPACE inline namespace q_has_char8_t {
-# define QT_BEGIN_NO_CHAR8_T_NAMESPACE namespace q_no_char8_t {
-#else
-# define QT_BEGIN_HAS_CHAR8_T_NAMESPACE namespace q_has_char8_t {
-# define QT_BEGIN_NO_CHAR8_T_NAMESPACE inline namespace q_no_char8_t {
-#endif
-#define QT_END_HAS_CHAR8_T_NAMESPACE }
-#define QT_END_NO_CHAR8_T_NAMESPACE }
-
-// declare namespaces:
-QT_BEGIN_HAS_CHAR8_T_NAMESPACE
-QT_END_HAS_CHAR8_T_NAMESPACE
-QT_BEGIN_NO_CHAR8_T_NAMESPACE
-QT_END_NO_CHAR8_T_NAMESPACE
-
-class QByteArray;
-class QLatin1String;
-class QStringView;
-template <bool> class QBasicUtf8StringView;
-class QAnyStringView;
-class QChar;
-class QRegularExpression;
-class QRegularExpressionMatch;
+#include <QtCore/q20type_traits.h> // q20::is_constant_evaluated
+
+QT_BEGIN_NAMESPACE
namespace QtPrivate {
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype qustrlen(const char16_t *str) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype qustrnlen(const char16_t *str, qsizetype maxlen) noexcept;
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION const char16_t *qustrchr(QStringView str, char16_t ch) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION const char16_t *qustrcasechr(QStringView str, char16_t ch) noexcept;
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION int compareStrings(QStringView lhs, QStringView rhs, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
-[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION int compareStrings(QStringView lhs, QLatin1String rhs, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION int compareStrings(QStringView lhs, QLatin1StringView rhs, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION int compareStrings(QStringView lhs, QBasicUtf8StringView<false> rhs, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
-[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION int compareStrings(QLatin1String lhs, QStringView rhs, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
-[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION int compareStrings(QLatin1String lhs, QLatin1String rhs, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
-[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION int compareStrings(QLatin1String lhs, QBasicUtf8StringView<false> rhs, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION int compareStrings(QLatin1StringView lhs, QStringView rhs, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION int compareStrings(QLatin1StringView lhs, QLatin1StringView rhs, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION int compareStrings(QLatin1StringView lhs, QBasicUtf8StringView<false> rhs, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION int compareStrings(QBasicUtf8StringView<false> lhs, QStringView rhs, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
-[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION int compareStrings(QBasicUtf8StringView<false> lhs, QLatin1String rhs, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION int compareStrings(QBasicUtf8StringView<false> lhs, QLatin1StringView rhs, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION int compareStrings(QBasicUtf8StringView<false> lhs, QBasicUtf8StringView<false> rhs, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool equalStrings(QStringView lhs, QStringView rhs) noexcept;
-[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool equalStrings(QStringView lhs, QLatin1String rhs) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool equalStrings(QStringView lhs, QLatin1StringView rhs) noexcept;
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool equalStrings(QStringView lhs, QBasicUtf8StringView<false> rhs) noexcept;
-[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool equalStrings(QLatin1String lhs, QStringView rhs) noexcept;
-[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool equalStrings(QLatin1String lhs, QLatin1String rhs) noexcept;
-[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool equalStrings(QLatin1String lhs, QBasicUtf8StringView<false> rhs) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool equalStrings(QLatin1StringView lhs, QStringView rhs) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool equalStrings(QLatin1StringView lhs, QLatin1StringView rhs) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool equalStrings(QLatin1StringView lhs, QBasicUtf8StringView<false> rhs) noexcept;
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool equalStrings(QBasicUtf8StringView<false> lhs, QStringView rhs) noexcept;
-[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool equalStrings(QBasicUtf8StringView<false> lhs, QLatin1String rhs) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool equalStrings(QBasicUtf8StringView<false> lhs, QLatin1StringView rhs) noexcept;
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool equalStrings(QBasicUtf8StringView<false> lhs, QBasicUtf8StringView<false> rhs) noexcept;
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool startsWith(QStringView haystack, QStringView needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
-[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool startsWith(QStringView haystack, QLatin1String needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
-[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool startsWith(QLatin1String haystack, QStringView needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
-[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool startsWith(QLatin1String haystack, QLatin1String needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool startsWith(QStringView haystack, QLatin1StringView needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool startsWith(QLatin1StringView haystack, QStringView needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool startsWith(QLatin1StringView haystack, QLatin1StringView needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool endsWith(QStringView haystack, QStringView needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
-[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool endsWith(QStringView haystack, QLatin1String needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
-[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool endsWith(QLatin1String haystack, QStringView needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
-[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool endsWith(QLatin1String haystack, QLatin1String needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool endsWith(QStringView haystack, QLatin1StringView needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool endsWith(QLatin1StringView haystack, QStringView needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool endsWith(QLatin1StringView haystack, QLatin1StringView needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype findStringInsensitive(QStringView haystack, qsizetype from, char16_t needle) noexcept;
+[[nodiscard]] inline qsizetype findString(QStringView str, qsizetype from, QChar needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype findString(QStringView haystack, qsizetype from, QStringView needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
-[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype findString(QStringView haystack, qsizetype from, QLatin1String needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
-[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype findString(QLatin1String haystack, qsizetype from, QStringView needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
-[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype findString(QLatin1String haystack, qsizetype from, QLatin1String needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype findString(QStringView haystack, qsizetype from, QLatin1StringView needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype findString(QLatin1StringView haystack, qsizetype from, QStringView needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype findString(QLatin1StringView haystack, qsizetype from, QLatin1StringView needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype lastIndexOf(QStringView haystack, qsizetype from, char16_t needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype lastIndexOf(QStringView haystack, qsizetype from, QStringView needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
-[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype lastIndexOf(QStringView haystack, qsizetype from, QLatin1String needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
-[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype lastIndexOf(QLatin1String haystack, qsizetype from, QStringView needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
-[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype lastIndexOf(QLatin1String haystack, qsizetype from, QLatin1String needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype lastIndexOf(QStringView haystack, qsizetype from, QLatin1StringView needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype lastIndexOf(QLatin1StringView haystack, qsizetype from, QStringView needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype lastIndexOf(QLatin1StringView haystack, qsizetype from, QLatin1StringView needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION QStringView trimmed(QStringView s) noexcept;
-[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION QLatin1String trimmed(QLatin1String s) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION QLatin1StringView trimmed(QLatin1StringView s) noexcept;
+
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool isLower(QStringView s) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool isUpper(QStringView s) noexcept;
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype count(QStringView haystack, QChar needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype count(QStringView haystack, QStringView needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype count(QStringView haystack, QLatin1StringView needle, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype count(QLatin1StringView haystack, QLatin1StringView needle, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype count(QLatin1StringView haystack, QStringView needle, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION qsizetype count(QLatin1StringView haystack, QChar needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
#if QT_CONFIG(regularexpression)
+// ### Qt 7: unify these overloads;
+// remove the ones taking only a QStringView, export the others, adjust callers
+[[nodiscard]] qsizetype indexOf(QStringView viewHaystack,
+ const QString *stringHaystack,
+ const QRegularExpression &re,
+ qsizetype from = 0,
+ QRegularExpressionMatch *rmatch = nullptr);
[[nodiscard]] Q_CORE_EXPORT qsizetype indexOf(QStringView haystack,
const QRegularExpression &re,
qsizetype from = 0,
QRegularExpressionMatch *rmatch = nullptr);
+[[nodiscard]] qsizetype lastIndexOf(QStringView viewHaystack,
+ const QString *stringHaystack,
+ const QRegularExpression &re,
+ qsizetype from = -1,
+ QRegularExpressionMatch *rmatch = nullptr);
[[nodiscard]] Q_CORE_EXPORT qsizetype lastIndexOf(QStringView haystack,
const QRegularExpression &re,
qsizetype from = -1,
QRegularExpressionMatch *rmatch = nullptr);
+[[nodiscard]] bool contains(QStringView viewHaystack,
+ const QString *stringHaystack,
+ const QRegularExpression &re,
+ QRegularExpressionMatch *rmatch = nullptr);
[[nodiscard]] Q_CORE_EXPORT bool contains(QStringView haystack,
const QRegularExpression &re,
QRegularExpressionMatch *rmatch = nullptr);
@@ -148,13 +122,88 @@ namespace QtPrivate {
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool isRightToLeft(QStringView string) noexcept;
-[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool isAscii(QLatin1String s) noexcept;
+[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool isAscii(QLatin1StringView s) noexcept;
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool isAscii(QStringView s) noexcept;
-[[nodiscard]] constexpr inline bool isLatin1(QLatin1String s) noexcept;
+[[nodiscard]] constexpr inline bool isLatin1(QLatin1StringView s) noexcept;
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool isLatin1(QStringView s) noexcept;
[[nodiscard]] Q_CORE_EXPORT Q_DECL_PURE_FUNCTION bool isValidUtf16(QStringView s) noexcept;
-} // namespace QtPRivate
+template <typename Char, size_t N> [[nodiscard]] constexpr Q_ALWAYS_INLINE
+qsizetype lengthHelperContainerLoop(const Char (&str)[N])
+{
+#if defined(__cpp_lib_constexpr_algorithms) && defined(Q_CC_GNU_ONLY)
+ // libstdc++'s std::find / std::find_if manages to execute more steps
+ // than the loop below
+ const auto it = std::find(str, str + N, Char(0));
+ return it - str;
+#else
+ // std::char_traits<C> is deprecated for C not one of the standard char
+ // types, so we have to roll out our own loop.
+ for (size_t i = 0; i < N; ++i) {
+ if (str[i] == Char(0))
+ return qsizetype(i);
+ }
+ return qsizetype(N);
+#endif
+}
+
+template <typename Char, size_t N> [[nodiscard]] constexpr Q_ALWAYS_INLINE
+std::enable_if_t<sizeof(Char) == sizeof(char16_t), qsizetype>
+lengthHelperContainer(const Char (&str)[N])
+{
+ // The following values were empirically determined to detect the threshold
+ // at which the compiler gives up pre-calculating the std::find() below and
+ // instead inserts code to be executed at runtime.
+ constexpr size_t RuntimeThreshold =
+#if defined(Q_CC_CLANG)
+ // tested on Clang 15, 16 & 17
+ 1023
+#elif defined(Q_CC_GNU)
+ // tested through GCC 13.1 at -O3 compilation level
+ // note: at -O2, GCC always generates a loop!
+ __cplusplus >= 202002L ? 39 : 17
+#else
+ 0
+#endif
+ ;
+ if constexpr (N == 1) {
+ return str[0] == Char(0) ? 0 : 1;
+ } else if constexpr (N > RuntimeThreshold) {
+#ifdef QT_SUPPORTS_IS_CONSTANT_EVALUATED
+ if (!q20::is_constant_evaluated())
+ return QtPrivate::qustrnlen(reinterpret_cast<const char16_t *>(str), N);
+#endif
+ }
+
+ return lengthHelperContainerLoop(str);
+}
+
+inline qsizetype qstrnlen_helper(const char *str, size_t maxlen)
+{
+#if !defined(Q_COMPILER_SLOW_QSTRNLEN_COMPILATION)
+ return qstrnlen(str, maxlen);
+#else
+ return strnlen_s(str, maxlen);
+#endif
+}
+
+template <typename Char, size_t N> [[nodiscard]] constexpr inline
+std::enable_if_t<sizeof(Char) == 1, qsizetype> lengthHelperContainer(const Char (&str)[N])
+{
+#ifdef QT_SUPPORTS_IS_CONSTANT_EVALUATED
+ if (!q20::is_constant_evaluated())
+ return qstrnlen_helper(reinterpret_cast<const char *>(str), N);
+#endif
+
+ return lengthHelperContainerLoop(str);
+}
+
+template <typename Container>
+constexpr qsizetype lengthHelperContainer(const Container &c) noexcept
+{
+ return qsizetype(std::size(c));
+}
+} // namespace QtPrivate
QT_END_NAMESPACE
diff --git a/src/corelib/text/qstringalgorithms_p.h b/src/corelib/text/qstringalgorithms_p.h
index 64d9f2e676..f34acb01e8 100644
--- a/src/corelib/text/qstringalgorithms_p.h
+++ b/src/corelib/text/qstringalgorithms_p.h
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 Intel Corporation.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 Intel Corporation.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QSTRINGALGORITHMS_P_H
#define QSTRINGALGORITHMS_P_H
@@ -83,26 +47,34 @@ template <typename StringType> struct QStringAlgorithms
static inline StringType trimmed_helper_inplace(const NakedStringType &, const Char *, const Char *)
{
// can't happen
- Q_UNREACHABLE();
- return StringType();
+ Q_UNREACHABLE_RETURN(StringType());
}
- static inline void trimmed_helper_positions(const Char *&begin, const Char *&end)
+ struct TrimPositions {
+ const Char *begin;
+ const Char *end;
+ };
+ // Returns {begin, end} where:
+ // - "begin" refers to the first non-space character
+ // - if there is a sequence of one or more space chacaters at the end,
+ // "end" refers to the first character in that sequence, otherwise
+ // "end" is str.cend()
+ [[nodiscard]] static TrimPositions trimmed_helper_positions(const StringType &str)
{
+ const Char *begin = str.cbegin();
+ const Char *end = str.cend();
// skip white space from end
while (begin < end && isSpace(end[-1]))
--end;
// skip white space from start
while (begin < end && isSpace(*begin))
begin++;
+ return {begin, end};
}
static inline StringType trimmed_helper(StringType &str)
{
- const Char *begin = str.cbegin();
- const Char *end = str.cend();
- trimmed_helper_positions(begin, end);
-
+ const auto [begin, end] = trimmed_helper_positions(str);
if (begin == str.cbegin() && end == str.cend())
return str;
if (!isConst && str.isDetached())
@@ -137,7 +109,7 @@ template <typename StringType> struct QStringAlgorithms
if (ptr != dst && ptr[-1] == QChar::Space)
--ptr;
- int newlen = ptr - dst;
+ qsizetype newlen = ptr - dst;
if (isConst && newlen == str.size() && unmodified) {
// nothing happened, return the original
return str;
diff --git a/src/corelib/text/qstringbuilder.cpp b/src/corelib/text/qstringbuilder.cpp
index dcb3644fb0..738ce833ef 100644
--- a/src/corelib/text/qstringbuilder.cpp
+++ b/src/corelib/text/qstringbuilder.cpp
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qstringbuilder.h"
#include <private/qstringconverter_p.h>
@@ -74,7 +38,7 @@ QT_BEGIN_NAMESPACE
\list
\li QString, (since 5.10:) QStringView
\li QChar, QLatin1Char, (since 5.10:) \c char16_t,
- \li QLatin1String,
+ \li QLatin1StringView,
\li (since 5.10:) \c{const char16_t[]} (\c{u"foo"}),
\li QByteArray, \c char, \c{const char[]}.
\endlist
@@ -93,36 +57,57 @@ QT_BEGIN_NAMESPACE
if there are three or more of them, and performs equally well in other
cases.
- \sa QLatin1String, QString
+ \note Defining \c QT_USE_QSTRINGBUILDER at build time (this is the
+ default when building Qt libraries and tools), will make using \c {'+'}
+ when concatenating strings work the same way as \c operator%().
+
+ \sa QLatin1StringView, QString
*/
-/*! \fn template <typename A, typename B> QStringBuilder<A, B>::QStringBuilder(const A &a, const B &b)
- Constructs a QStringBuilder from \a a and \a b.
+/*!
+ \internal
+ \fn template <typename A, typename B> QStringBuilder<A, B>::QStringBuilder(const A &a, const B &b)
+
+ Constructs a QStringBuilder from \a a and \a b.
*/
-/* \fn template <typename A, typename B> QStringBuilder<A, B>::operator%(const A &a, const B &b)
+/*!
+ \internal
+ \fn template <typename A, typename B> QStringBuilder<A, B>::operator%(const A &a, const B &b)
Returns a \c QStringBuilder object that is converted to a QString object
when assigned to a variable of QString type or passed to a function that
takes a QString parameter.
- This function is usable with arguments of type \c QString,
- \c QLatin1String,
- \c QChar, \c QLatin1Char, and \c char.
+ This function is usable with arguments of any of the following types:
+ \list
+ \li \c QAnyStringView,
+ \li \c QString, \c QStringView
+ \li \c QByteArray, \c QByteArrayView, \c QLatin1StringView
+ \li \c QChar, \c QLatin1Char, \c char, (since 5.10:) \c char16_t
+ \li (since 5.10:) \c{const char16_t[]} (\c{u"foo"}),
+ \endlist
*/
-/* \fn template <typename A, typename B> QByteArray QStringBuilder<A, B>::toLatin1() const
- Returns a Latin-1 representation of the string as a QByteArray. The
- returned byte array is undefined if the string contains non-Latin1
- characters.
- */
-/* \fn template <typename A, typename B> QByteArray QStringBuilder<A, B>::toUtf8() const
- Returns a UTF-8 representation of the string as a QByteArray.
+/*!
+ \internal
+ \fn template <typename A, typename B> QByteArray QStringBuilder<A, B>::toLatin1() const
+
+ Returns a Latin-1 representation of the string as a QByteArray. It
+ is undefined behavior if the string contains non-Latin1 characters.
*/
+/*!
+ \internal
+ \fn template <typename A, typename B> QByteArray QStringBuilder<A, B>::toUtf8() const
+
+ Returns a UTF-8 representation of the string as a QByteArray.
+ */
/*!
\internal
+ Converts the UTF-8 string viewed by \a in to UTF-16 and writes the result
+ to the buffer starting at \a out.
*/
void QAbstractConcatenable::convertFromUtf8(QByteArrayView in, QChar *&out) noexcept
{
diff --git a/src/corelib/text/qstringbuilder.h b/src/corelib/text/qstringbuilder.h
index f5219232b1..853033b2d9 100644
--- a/src/corelib/text/qstringbuilder.h
+++ b/src/corelib/text/qstringbuilder.h
@@ -1,41 +1,7 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#include <QtCore/qstring.h>
#ifndef QSTRINGBUILDER_H
#define QSTRINGBUILDER_H
@@ -47,7 +13,6 @@
#pragma qt_sync_stop_processing
#endif
-#include <QtCore/qstring.h>
#include <QtCore/qbytearray.h>
#include <string.h>
@@ -63,16 +28,28 @@ protected:
{
*out++ = QLatin1Char(a);
}
- static void appendLatin1To(QLatin1String in, QChar *out) noexcept;
+ static void appendLatin1To(QLatin1StringView in, QChar *out) noexcept;
};
-template <typename T> struct QConcatenable {};
+template <typename T> struct QConcatenable;
+
+template <typename T>
+using QConcatenableEx = QConcatenable<q20::remove_cvref_t<T>>;
namespace QtStringBuilder {
template <typename A, typename B> struct ConvertToTypeHelper
{ typedef A ConvertTo; };
template <typename T> struct ConvertToTypeHelper<T, QString>
{ typedef QString ConvertTo; };
+
+ template <typename T> using HasIsNull = decltype(std::declval<const T &>().isNull());
+ template <typename T> bool isNull(const T &t)
+ {
+ if constexpr (qxp::is_detected_v<HasIsNull, T>)
+ return t.isNull();
+ else
+ return false;
+ }
}
template<typename Builder, typename T>
@@ -99,28 +76,50 @@ struct QStringBuilderBase<Builder, QString> : public QStringBuilderCommon<Builde
};
template <typename A, typename B>
-class QStringBuilder : public QStringBuilderBase<QStringBuilder<A, B>, typename QtStringBuilder::ConvertToTypeHelper<typename QConcatenable<A>::ConvertTo, typename QConcatenable<B>::ConvertTo>::ConvertTo>
+class QStringBuilder : public QStringBuilderBase<QStringBuilder<A, B>,
+ typename QtStringBuilder::ConvertToTypeHelper<
+ typename QConcatenableEx<A>::ConvertTo,
+ typename QConcatenableEx<B>::ConvertTo
+ >::ConvertTo
+ >
{
public:
- QStringBuilder(const A &a_, const B &b_) : a(a_), b(b_) {}
+ QStringBuilder(A &&a_, B &&b_) : a(std::forward<A>(a_)), b(std::forward<B>(b_)) {}
+
+ QStringBuilder(QStringBuilder &&) = default;
+ QStringBuilder(const QStringBuilder &) = default;
+ ~QStringBuilder() = default;
+
private:
friend class QByteArray;
friend class QString;
template <typename T> T convertTo() const
{
- const qsizetype len = QConcatenable< QStringBuilder<A, B> >::size(*this);
- T s(len, Qt::Uninitialized);
+ if (isNull()) {
+ // appending two null strings must give back a null string,
+ // so we're special casing this one out, QTBUG-114206
+ return T();
+ }
- // we abuse const_cast / constData here because we know we've just
- // allocated the data and we're the only reference count
- typename T::iterator d = const_cast<typename T::iterator>(s.constData());
- typename T::const_iterator const start = d;
- QConcatenable< QStringBuilder<A, B> >::appendTo(*this, d);
+ const qsizetype len = Concatenable::size(*this);
+ T s(len, Qt::Uninitialized);
- if (!QConcatenable< QStringBuilder<A, B> >::ExactSize && len != d - start) {
- // this resize is necessary since we allocate a bit too much
- // when dealing with variable sized 8-bit encodings
- s.resize(d - start);
+ // Using data_ptr() here (private API) so we can bypass the
+ // isDetached() and the replacement of a null pointer with _empty in
+ // both QString and QByteArray's data() and constData(). The result is
+ // the same if len != 0.
+ auto d = reinterpret_cast<typename T::iterator>(s.data_ptr().data());
+ const auto start = d;
+ Concatenable::appendTo(*this, d);
+
+ if constexpr (Concatenable::ExactSize) {
+ Q_UNUSED(start)
+ } else {
+ if (len != d - start) {
+ // this resize is necessary since we allocate a bit too much
+ // when dealing with variable sized 8-bit encodings
+ s.resize(d - start);
+ }
}
return s;
}
@@ -132,45 +131,19 @@ public:
qsizetype size() const { return Concatenable::size(*this); }
- const A &a;
- const B &b;
-};
-
-template <>
-class QStringBuilder <QString, QString> : public QStringBuilderBase<QStringBuilder<QString, QString>, QString>
-{
- public:
- QStringBuilder(const QString &a_, const QString &b_) : a(a_), b(b_) {}
- QStringBuilder(const QStringBuilder &other) : a(other.a), b(other.b) {}
-
- operator QString() const
- { QString r(a); r += b; return r; }
-
- const QString &a;
- const QString &b;
-
- private:
- QStringBuilder &operator=(const QStringBuilder &) = delete;
-};
-
-template <>
-class QStringBuilder <QByteArray, QByteArray> : public QStringBuilderBase<QStringBuilder<QByteArray, QByteArray>, QByteArray>
-{
- public:
- QStringBuilder(const QByteArray &a_, const QByteArray &b_) : a(a_), b(b_) {}
- QStringBuilder(const QStringBuilder &other) : a(other.a), b(other.b) {}
-
- operator QByteArray() const
- { QByteArray r(a); r += b; return r; }
+ bool isNull() const
+ {
+ return QtStringBuilder::isNull(a) && QtStringBuilder::isNull(b);
+ }
- const QByteArray &a;
- const QByteArray &b;
+ A a;
+ B b;
- private:
- QStringBuilder &operator=(const QStringBuilder &) = delete;
+private:
+ QStringBuilder &operator=(QStringBuilder &&) = delete;
+ QStringBuilder &operator=(const QStringBuilder &) = delete;
};
-
template <> struct QConcatenable<char> : private QAbstractConcatenable
{
typedef char type;
@@ -250,18 +223,18 @@ template <> struct QConcatenable<QChar::SpecialCharacter> : private QAbstractCon
{ *out++ = c; }
};
-template <> struct QConcatenable<QLatin1String> : private QAbstractConcatenable
+template <> struct QConcatenable<QLatin1StringView> : private QAbstractConcatenable
{
- typedef QLatin1String type;
+ typedef QLatin1StringView type;
typedef QString ConvertTo;
enum { ExactSize = true };
- static qsizetype size(const QLatin1String a) { return a.size(); }
- static inline void appendTo(const QLatin1String a, QChar *&out)
+ static qsizetype size(const QLatin1StringView a) { return a.size(); }
+ static inline void appendTo(const QLatin1StringView a, QChar *&out)
{
appendLatin1To(a, out);
out += a.size();
}
- static inline void appendTo(const QLatin1String a, char *&out)
+ static inline void appendTo(const QLatin1StringView a, char *&out)
{
if (const char *data = a.data()) {
memcpy(out, data, a.size());
@@ -400,10 +373,10 @@ template <> struct QConcatenable<QByteArray> : private QAbstractConcatenable
#endif
static inline void appendTo(const QByteArray &ba, char *&out)
{
- const char *a = ba.constData();
- const char * const end = ba.end();
- while (a != end)
- *out++ = *a++;
+ const qsizetype n = ba.size();
+ if (n)
+ memcpy(out, ba.begin(), n);
+ out += n;
}
};
@@ -412,34 +385,37 @@ template <typename A, typename B>
struct QConcatenable< QStringBuilder<A, B> >
{
typedef QStringBuilder<A, B> type;
- typedef typename QtStringBuilder::ConvertToTypeHelper<typename QConcatenable<A>::ConvertTo, typename QConcatenable<B>::ConvertTo>::ConvertTo ConvertTo;
- enum { ExactSize = QConcatenable<A>::ExactSize && QConcatenable<B>::ExactSize };
+ using ConvertTo = typename QtStringBuilder::ConvertToTypeHelper<
+ typename QConcatenableEx<A>::ConvertTo,
+ typename QConcatenableEx<B>::ConvertTo
+ >::ConvertTo;
+ enum { ExactSize = QConcatenableEx<A>::ExactSize && QConcatenableEx<B>::ExactSize };
static qsizetype size(const type &p)
{
- return QConcatenable<A>::size(p.a) + QConcatenable<B>::size(p.b);
+ return QConcatenableEx<A>::size(p.a) + QConcatenableEx<B>::size(p.b);
}
template<typename T> static inline void appendTo(const type &p, T *&out)
{
- QConcatenable<A>::appendTo(p.a, out);
- QConcatenable<B>::appendTo(p.b, out);
+ QConcatenableEx<A>::appendTo(p.a, out);
+ QConcatenableEx<B>::appendTo(p.b, out);
}
};
-template <typename A, typename B>
-QStringBuilder<typename QConcatenable<A>::type, typename QConcatenable<B>::type>
-operator%(const A &a, const B &b)
+template <typename A, typename B,
+ typename = std::void_t<typename QConcatenableEx<A>::type, typename QConcatenableEx<B>::type>>
+auto operator%(A &&a, B &&b)
{
- return QStringBuilder<typename QConcatenable<A>::type, typename QConcatenable<B>::type>(a, b);
+ return QStringBuilder<A, B>(std::forward<A>(a), std::forward<B>(b));
}
// QT_USE_FAST_OPERATOR_PLUS was introduced in 4.7, QT_USE_QSTRINGBUILDER is to be used from 4.8 onwards
// QT_USE_FAST_OPERATOR_PLUS does not remove the normal operator+ for QByteArray
#if defined(QT_USE_FAST_OPERATOR_PLUS) || defined(QT_USE_QSTRINGBUILDER)
-template <typename A, typename B>
-QStringBuilder<typename QConcatenable<A>::type, typename QConcatenable<B>::type>
-operator+(const A &a, const B &b)
+template <typename A, typename B,
+ typename = std::void_t<typename QConcatenableEx<A>::type, typename QConcatenableEx<B>::type>>
+auto operator+(A &&a, B &&b)
{
- return QStringBuilder<typename QConcatenable<A>::type, typename QConcatenable<B>::type>(a, b);
+ return std::forward<A>(a) % std::forward<B>(b);
}
#endif
@@ -488,15 +464,6 @@ QString &operator+=(QString &a, const QStringBuilder<A, B> &b)
return a;
}
-//
-// inline QAnyStringView members requiring QStringBuilder:
-//
-
-template <typename A, typename B>
-QAnyStringView::QAnyStringView(const QStringBuilder<A, B> &expr,
- typename QConcatenable<QStringBuilder<A, B>>::ConvertTo &&capacity)
- : QAnyStringView(capacity = expr) {}
-
QT_END_NAMESPACE
#endif // QSTRINGBUILDER_H
diff --git a/src/corelib/text/qstringconverter.cpp b/src/corelib/text/qstringconverter.cpp
index 95e49da32b..565e3e598b 100644
--- a/src/corelib/text/qstringconverter.cpp
+++ b/src/corelib/text/qstringconverter.cpp
@@ -1,42 +1,6 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Copyright (C) 2020 Intel Corporation.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 The Qt Company Ltd.
+// Copyright (C) 2020 Intel Corporation.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include <qstringconverter.h>
#include <private/qstringconverter_p.h>
@@ -44,24 +8,47 @@
#include "private/qsimd_p.h"
#include "private/qstringiterator_p.h"
+#include "private/qtools_p.h"
#include "qbytearraymatcher.h"
+#include "qcontainertools_impl.h"
+#include <QtCore/qbytearraylist.h>
+
+#if QT_CONFIG(icu)
+#include <unicode/ucnv.h>
+#include <unicode/ucnv_cb.h>
+#include <unicode/ucnv_err.h>
+#include <unicode/ustring.h>
+#endif
#ifdef Q_OS_WIN
#include <qt_windows.h>
+#ifndef QT_BOOTSTRAPPED
+#include <QtCore/qvarlengtharray.h>
+#include <QtCore/q20iterator.h>
+#include <QtCore/private/qnumeric_p.h>
+#endif // !QT_BOOTSTRAPPED
#endif
+#include <array>
+
#if __has_include(<bit>) && __cplusplus > 201703L
#include <bit>
#endif
QT_BEGIN_NAMESPACE
+using namespace QtMiscUtils;
+
+static_assert(std::is_nothrow_move_constructible_v<QStringEncoder>);
+static_assert(std::is_nothrow_move_assignable_v<QStringEncoder>);
+static_assert(std::is_nothrow_move_constructible_v<QStringDecoder>);
+static_assert(std::is_nothrow_move_assignable_v<QStringDecoder>);
+
enum { Endian = 0, Data = 1 };
static const uchar utf8bom[] = { 0xef, 0xbb, 0xbf };
-#if (defined(__SSE2__) && defined(QT_COMPILER_SUPPORTS_SSE2)) \
- || defined(__ARM_NEON__)
+#if defined(__SSE2__) || defined(__ARM_NEON__)
static Q_ALWAYS_INLINE uint qBitScanReverse(unsigned v) noexcept
{
#if defined(__cpp_lib_int_pow2) && __cpp_lib_int_pow2 >= 202002L
@@ -77,7 +64,7 @@ static Q_ALWAYS_INLINE uint qBitScanReverse(unsigned v) noexcept
}
#endif
-#if defined(__SSE2__) && defined(QT_COMPILER_SUPPORTS_SSE2)
+#if defined(__SSE2__)
static inline bool simdEncodeAscii(uchar *&dst, const char16_t *&nextAscii, const char16_t *&src, const char16_t *end)
{
// do sixteen characters at a time
@@ -214,14 +201,14 @@ static inline const uchar *simdFindNonAscii(const uchar *src, const uchar *end,
#ifdef __AVX2__
// do 32 characters at a time
// (this is similar to simdTestMask in qstring.cpp)
- const __m256i mask = _mm256_set1_epi8(0x80);
+ const __m256i mask = _mm256_set1_epi8(char(0x80));
for ( ; end - src >= 32; src += 32) {
__m256i data = _mm256_loadu_si256(reinterpret_cast<const __m256i *>(src));
if (_mm256_testz_si256(mask, data))
continue;
uint n = _mm256_movemask_epi8(data);
- Q_ASSUME(n);
+ Q_ASSERT(n);
// find the next probable ASCII character
// we don't want to load 32 bytes again in this loop if we know there are non-ASCII
@@ -271,7 +258,7 @@ static inline const uchar *simdFindNonAscii(const uchar *src, const uchar *end,
// Compare only the US-ASCII beginning of [src8, end8) and [src16, end16)
// and advance src8 and src16 to the first character that could not be compared
-static void simdCompareAscii(const char8_t *&src8, const char8_t *end8, const char16_t *&src16, const char16_t *end16)
+static void simdCompareAscii(const qchar8_t *&src8, const qchar8_t *end8, const char16_t *&src16, const char16_t *end16)
{
int bitSpacing = 1;
qptrdiff len = qMin(end8 - src8, end16 - src16);
@@ -457,7 +444,7 @@ static inline const uchar *simdFindNonAscii(const uchar *src, const uchar *end,
return src;
}
-static void simdCompareAscii(const char8_t *&, const char8_t *, const char16_t *&, const char16_t *)
+static void simdCompareAscii(const qchar8_t *&, const qchar8_t *, const char16_t *&, const char16_t *)
{
}
#else
@@ -477,7 +464,7 @@ static inline const uchar *simdFindNonAscii(const uchar *src, const uchar *end,
return src;
}
-static void simdCompareAscii(const char8_t *&, const char8_t *, const char16_t *&, const char16_t *)
+static void simdCompareAscii(const qchar8_t *&, const qchar8_t *, const char16_t *&, const char16_t *)
{
}
#endif
@@ -524,8 +511,7 @@ QByteArray QUtf8::convertFromUnicode(QStringView in, QStringConverterBase::State
char *QUtf8::convertFromUnicode(char *out, QStringView in, QStringConverter::State *state)
{
Q_ASSERT(state);
- const QChar *uc = in.data();
- qsizetype len = in.length();
+ qsizetype len = in.size();
if (!len)
return out;
@@ -542,7 +528,7 @@ char *QUtf8::convertFromUnicode(char *out, QStringView in, QStringConverter::Sta
};
uchar *cursor = reinterpret_cast<uchar *>(out);
- const char16_t *src = reinterpret_cast<const char16_t *>(uc);
+ const char16_t *src = in.utf16();
const char16_t *const end = src + len;
if (!(state->flags & QStringDecoder::Flag::Stateless)) {
@@ -592,6 +578,21 @@ char *QUtf8::convertFromUnicode(char *out, QStringView in, QStringConverter::Sta
return reinterpret_cast<char *>(cursor);
}
+char *QUtf8::convertFromLatin1(char *out, QLatin1StringView in)
+{
+ // ### SIMD-optimize:
+ for (uchar ch : in) {
+ if (ch < 128) {
+ *out++ = ch;
+ } else {
+ // as per https://en.wikipedia.org/wiki/UTF-8#Encoding, 2nd row
+ *out++ = 0b110'0'0000u | (ch >> 6);
+ *out++ = 0b10'00'0000u | (ch & 0b0011'1111);
+ }
+ }
+ return out;
+}
+
QString QUtf8::convertToUnicode(QByteArrayView in)
{
// UTF-8 to UTF-16 always needs the exact same number of words or less:
@@ -613,14 +614,14 @@ QString QUtf8::convertToUnicode(QByteArrayView in)
return result;
}
-/*!
- \since 5.7
+/*! \internal
+ \since 6.6
\overload
Converts the UTF-8 sequence of bytes viewed by \a in to a sequence of
- QChar starting at \a buffer. The buffer is expected to be large enough
- to hold the result. An upper bound for the size of the buffer is
- \c in.size() QChars.
+ QChar starting at \a dst in the destination buffer. The buffer is expected
+ to be large enough to hold the result. An upper bound for the size of the
+ buffer is \c in.size() QChars.
If, during decoding, an error occurs, a QChar::ReplacementCharacter is
written.
@@ -628,11 +629,12 @@ QString QUtf8::convertToUnicode(QByteArrayView in)
Returns a pointer to one past the last QChar written.
This function never throws.
-*/
-QChar *QUtf8::convertToUnicode(QChar *buffer, QByteArrayView in) noexcept
+ For QChar buffers, instead of casting manually, you can use the static
+ QUtf8::convertToUnicode(QChar *, QByteArrayView) directly.
+*/
+char16_t *QUtf8::convertToUnicode(char16_t *dst, QByteArrayView in) noexcept
{
- char16_t *dst = reinterpret_cast<char16_t *>(buffer);
const uchar *const start = reinterpret_cast<const uchar *>(in.data());
const uchar *src = start;
const uchar *end = src + in.size();
@@ -655,7 +657,7 @@ QChar *QUtf8::convertToUnicode(QChar *buffer, QByteArrayView in) noexcept
do {
uchar b = *src++;
- int res = QUtf8Functions::fromUtf8<QUtf8BaseTraits>(b, dst, src, end);
+ const qsizetype res = QUtf8Functions::fromUtf8<QUtf8BaseTraits>(b, dst, src, end);
if (res < 0) {
// decoding error
*dst++ = QChar::ReplacementCharacter;
@@ -664,7 +666,7 @@ QChar *QUtf8::convertToUnicode(QChar *buffer, QByteArrayView in) noexcept
}
}
- return reinterpret_cast<QChar *>(dst);
+ return dst;
}
QString QUtf8::convertToUnicode(QByteArrayView in, QStringConverter::State *state)
@@ -685,23 +687,22 @@ QString QUtf8::convertToUnicode(QByteArrayView in, QStringConverter::State *stat
return result;
}
-QChar *QUtf8::convertToUnicode(QChar *out, QByteArrayView in, QStringConverter::State *state)
+char16_t *QUtf8::convertToUnicode(char16_t *dst, QByteArrayView in, QStringConverter::State *state)
{
qsizetype len = in.size();
Q_ASSERT(state);
if (!len)
- return out;
+ return dst;
char16_t replacement = QChar::ReplacementCharacter;
if (state->flags & QStringConverter::Flag::ConvertInvalidToNull)
replacement = QChar::Null;
- int res;
+ qsizetype res;
uchar ch = 0;
- char16_t *dst = reinterpret_cast<char16_t *>(out);
const uchar *src = reinterpret_cast<const uchar *>(in.data());
const uchar *end = src + len;
@@ -729,7 +730,7 @@ QChar *QUtf8::convertToUnicode(QChar *out, QByteArrayView in, QStringConverter::
// copy to our state and return
state->remainingChars = remainingCharsCount + newCharsToCopy;
memcpy(&state->state_data[0], remainingCharsData, state->remainingChars);
- return out;
+ return dst;
} else if (!headerdone) {
// eat the UTF-8 BOM
if (dst[-1] == 0xfeff)
@@ -785,7 +786,7 @@ QChar *QUtf8::convertToUnicode(QChar *out, QByteArrayView in, QStringConverter::
state->remainingChars = 0;
}
- return reinterpret_cast<QChar *>(dst);
+ return dst;
}
struct QUtf8NoOutputTraits : public QUtf8BaseTraitsNoAscii
@@ -815,7 +816,7 @@ QUtf8::ValidUtf8Result QUtf8::isValidUtf8(QByteArrayView in)
isValidAscii = false;
QUtf8NoOutputTraits::NoOutput output;
- int res = QUtf8Functions::fromUtf8<QUtf8NoOutputTraits>(b, output, src, end);
+ const qsizetype res = QUtf8Functions::fromUtf8<QUtf8NoOutputTraits>(b, output, src, end);
if (res < 0) {
// decoding error
return { false, false };
@@ -826,9 +827,9 @@ QUtf8::ValidUtf8Result QUtf8::isValidUtf8(QByteArrayView in)
return { true, isValidAscii };
}
-int QUtf8::compareUtf8(QByteArrayView utf8, QStringView utf16) noexcept
+int QUtf8::compareUtf8(QByteArrayView utf8, QStringView utf16, Qt::CaseSensitivity cs) noexcept
{
- auto src1 = reinterpret_cast<const char8_t *>(utf8.data());
+ auto src1 = reinterpret_cast<const qchar8_t *>(utf8.data());
auto end1 = src1 + utf8.size();
auto src2 = reinterpret_cast<const char16_t *>(utf16.data());
auto end2 = src2 + utf16.size();
@@ -842,7 +843,7 @@ int QUtf8::compareUtf8(QByteArrayView utf8, QStringView utf16) noexcept
if (uc1 >= 0x80) {
char32_t *output = &uc1;
- int res = QUtf8Functions::fromUtf8<QUtf8BaseTraitsNoAscii>(uc1, output, src1, end1);
+ qsizetype res = QUtf8Functions::fromUtf8<QUtf8BaseTraitsNoAscii>(uc1, output, src1, end1);
if (res < 0) {
// decoding error
uc1 = QChar::ReplacementCharacter;
@@ -853,7 +854,10 @@ int QUtf8::compareUtf8(QByteArrayView utf8, QStringView utf16) noexcept
if (QChar::isHighSurrogate(uc2) && src2 < end2 && QChar::isLowSurrogate(*src2))
uc2 = QChar::surrogateToUcs4(uc2, *src2++);
}
-
+ if (cs == Qt::CaseInsensitive) {
+ uc1 = QChar::toCaseFolded(uc1);
+ uc2 = QChar::toCaseFolded(uc2);
+ }
if (uc1 != uc2)
return int(uc1) - int(uc2);
}
@@ -863,7 +867,7 @@ int QUtf8::compareUtf8(QByteArrayView utf8, QStringView utf16) noexcept
return (end1 > src1) - int(end2 > src2);
}
-int QUtf8::compareUtf8(QByteArrayView utf8, QLatin1String s)
+int QUtf8::compareUtf8(QByteArrayView utf8, QLatin1StringView s, Qt::CaseSensitivity cs)
{
char32_t uc1 = QChar::Null;
auto src1 = reinterpret_cast<const uchar *>(utf8.data());
@@ -874,13 +878,17 @@ int QUtf8::compareUtf8(QByteArrayView utf8, QLatin1String s)
while (src1 < end1 && src2 < end2) {
uchar b = *src1++;
char32_t *output = &uc1;
- int res = QUtf8Functions::fromUtf8<QUtf8BaseTraits>(b, output, src1, end1);
+ const qsizetype res = QUtf8Functions::fromUtf8<QUtf8BaseTraits>(b, output, src1, end1);
if (res < 0) {
// decoding error
uc1 = QChar::ReplacementCharacter;
}
char32_t uc2 = *src2++;
+ if (cs == Qt::CaseInsensitive) {
+ uc1 = QChar::toCaseFolded(uc1);
+ uc2 = QChar::toCaseFolded(uc2);
+ }
if (uc1 != uc2)
return int(uc1) - int(uc2);
}
@@ -889,6 +897,52 @@ int QUtf8::compareUtf8(QByteArrayView utf8, QLatin1String s)
return (end1 > src1) - (end2 > src2);
}
+int QUtf8::compareUtf8(QByteArrayView lhs, QByteArrayView rhs, Qt::CaseSensitivity cs) noexcept
+{
+ if (lhs.isEmpty())
+ return qt_lencmp(0, rhs.size());
+
+ if (cs == Qt::CaseSensitive) {
+ const auto l = std::min(lhs.size(), rhs.size());
+ int r = memcmp(lhs.data(), rhs.data(), l);
+ return r ? r : qt_lencmp(lhs.size(), rhs.size());
+ }
+
+ char32_t uc1 = QChar::Null;
+ auto src1 = reinterpret_cast<const uchar *>(lhs.data());
+ auto end1 = src1 + lhs.size();
+ char32_t uc2 = QChar::Null;
+ auto src2 = reinterpret_cast<const uchar *>(rhs.data());
+ auto end2 = src2 + rhs.size();
+
+ while (src1 < end1 && src2 < end2) {
+ uchar b = *src1++;
+ char32_t *output = &uc1;
+ qsizetype res = QUtf8Functions::fromUtf8<QUtf8BaseTraits>(b, output, src1, end1);
+ if (res < 0) {
+ // decoding error
+ uc1 = QChar::ReplacementCharacter;
+ }
+
+ b = *src2++;
+ output = &uc2;
+ res = QUtf8Functions::fromUtf8<QUtf8BaseTraits>(b, output, src2, end2);
+ if (res < 0) {
+ // decoding error
+ uc2 = QChar::ReplacementCharacter;
+ }
+
+ uc1 = QChar::toCaseFolded(uc1);
+ uc2 = QChar::toCaseFolded(uc2);
+ if (uc1 != uc2)
+ return int(uc1) - int(uc2);
+ }
+
+ // the shorter string sorts first
+ return (end1 > src1) - (end2 > src2);
+}
+
+#ifndef QT_BOOTSTRAPPED
QByteArray QUtf16::convertFromUnicode(QStringView in, QStringConverter::State *state, DataEndianness endian)
{
bool writeBom = !(state->internalState & HeaderDone) && state->flags & QStringConverter::Flag::WriteBom;
@@ -898,7 +952,7 @@ QByteArray QUtf16::convertFromUnicode(QStringView in, QStringConverter::State *s
QByteArray d(length, Qt::Uninitialized);
char *end = convertFromUnicode(d.data(), in, state, endian);
- Q_ASSERT(end - d.constData() == d.length());
+ Q_ASSERT(end - d.constData() == d.size());
Q_UNUSED(end);
return d;
}
@@ -921,13 +975,13 @@ char *QUtf16::convertFromUnicode(char *out, QStringView in, QStringConverter::St
out += 2;
}
if (endian == BigEndianness)
- qToBigEndian<char16_t>(in.data(), in.length(), out);
+ qToBigEndian<char16_t>(in.data(), in.size(), out);
else
- qToLittleEndian<char16_t>(in.data(), in.length(), out);
+ qToLittleEndian<char16_t>(in.data(), in.size(), out);
state->remainingChars = 0;
state->internalState |= HeaderDone;
- return out + 2*in.length();
+ return out + 2*in.size();
}
QString QUtf16::convertToUnicode(QByteArrayView in, QStringConverter::State *state, DataEndianness endian)
@@ -1057,7 +1111,7 @@ char *QUtf32::convertFromUnicode(char *out, QStringView in, QStringConverter::St
}
const QChar *uc = in.data();
- const QChar *end = in.data() + in.length();
+ const QChar *end = in.data() + in.size();
QChar ch;
char32_t ucs4;
if (state->remainingChars == 1) {
@@ -1198,193 +1252,378 @@ QChar *QUtf32::convertToUnicode(QChar *out, QByteArrayView in, QStringConverter:
return out;
}
+#endif // !QT_BOOTSTRAPPED
#if defined(Q_OS_WIN) && !defined(QT_BOOTSTRAPPED)
-static QString convertToUnicodeCharByChar(QByteArrayView in, QStringConverter::State *state)
+int QLocal8Bit::checkUtf8()
{
- qsizetype length = in.size();
- const char *chars = in.data();
-
- Q_ASSERT(state);
- if (state->flags & QStringConverter::Flag::Stateless) // temporary
- state = nullptr;
-
- if (!chars || !length)
- return QString();
-
- qsizetype copyLocation = 0;
- qsizetype extra = 2;
- if (state && state->remainingChars) {
- copyLocation = state->remainingChars;
- extra += copyLocation;
- }
- qsizetype newLength = length + extra;
- char *mbcs = new char[newLength];
- //ensure that we have a NULL terminated string
- mbcs[newLength-1] = 0;
- mbcs[newLength-2] = 0;
- memcpy(&(mbcs[copyLocation]), chars, length);
- if (copyLocation) {
- //copy the last character from the state
- mbcs[0] = (char)state->state_data[0];
- state->remainingChars = 0;
- }
- const char *mb = mbcs;
- const char *next = 0;
- QString s;
- while ((next = CharNextExA(CP_ACP, mb, 0)) != mb) {
- wchar_t wc[2] ={0};
- int charlength = next - mb;
- int len = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED|MB_ERR_INVALID_CHARS, mb, charlength, wc, 2);
- if (len>0) {
- s.append(QChar(wc[0]));
- } else {
- int r = GetLastError();
- //check if the character being dropped is the last character
- if (r == ERROR_NO_UNICODE_TRANSLATION && mb == (mbcs+newLength -3) && state) {
- state->remainingChars = 1;
- state->state_data[0] = (char)*mb;
- }
- }
- mb = next;
- }
- delete [] mbcs;
- return s;
+ return GetACP() == CP_UTF8 ? 1 : -1;
}
-
-QString QLocal8Bit::convertToUnicode(QByteArrayView in, QStringConverter::State *state)
+QString QLocal8Bit::convertToUnicode_sys(QByteArrayView in, QStringConverter::State *state)
{
- qsizetype length = in.size();
+ return convertToUnicode_sys(in, CP_ACP, state);
+}
- Q_ASSERT(length < INT_MAX); // ### FIXME
+QString QLocal8Bit::convertToUnicode_sys(QByteArrayView in, quint32 codePage,
+ QStringConverter::State *state)
+{
const char *mb = in.data();
- int mblen = length;
+ qsizetype mblen = in.size();
+
+ Q_ASSERT(state);
+ qsizetype &invalidChars = state->invalidChars;
+ using Flag = QStringConverter::Flag;
+ const bool useNullForReplacement = !!(state->flags & Flag::ConvertInvalidToNull);
+ const char16_t replacementCharacter = useNullForReplacement ? QChar::Null
+ : QChar::ReplacementCharacter;
+ if (state->flags & Flag::Stateless) {
+ Q_ASSERT(state->remainingChars == 0);
+ state = nullptr;
+ }
if (!mb || !mblen)
return QString();
- QVarLengthArray<wchar_t, 4096> wc(4096);
- int len;
+ // Use a local stack-buffer at first to allow us a decently large container
+ // to avoid a lot of resizing, without also returning an overallocated
+ // QString to the user for small strings.
+ // Then we can be fast for small strings and take the hit of extra resizes
+ // and measuring how much storage is needed for large strings.
+ std::array<wchar_t, 4096> buf;
+ wchar_t *out = buf.data();
+ qsizetype outlen = buf.size();
+
QString sp;
- bool prepend = false;
- char state_data = 0;
- int remainingChars = 0;
-
- //save the current state information
- if (state) {
- state_data = (char)state->state_data[0];
- remainingChars = state->remainingChars;
- }
- //convert the pending character (if available)
- if (state && remainingChars) {
- char prev[3] = {0};
- prev[0] = state_data;
- prev[1] = mb[0];
- remainingChars = 0;
- len = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED,
- prev, 2, wc.data(), wc.length());
- if (len) {
- sp.append(QChar(wc[0]));
- if (mblen == 1) {
- state->remainingChars = 0;
- return sp;
- }
- prepend = true;
- mb++;
- mblen--;
- wc[0] = 0;
+ // Return a pointer to storage where we have enough space for `size`
+ const auto growOut = [&](qsizetype size) -> std::tuple<wchar_t *, qsizetype> {
+ if (outlen >= size)
+ return {out, outlen};
+ const bool wasStackBuffer = sp.isEmpty();
+ const auto begin = wasStackBuffer ? buf.data() : reinterpret_cast<wchar_t *>(sp.data());
+ const qsizetype offset = qsizetype(std::distance(begin, out));
+ qsizetype newSize = 0;
+ if (Q_UNLIKELY(qAddOverflow(offset, size, &newSize))) {
+ Q_CHECK_PTR(false);
+ return {nullptr, 0};
+ }
+ sp.resize(newSize);
+ auto it = reinterpret_cast<wchar_t *>(sp.data());
+ if (wasStackBuffer)
+ it = std::copy_n(buf.data(), offset, it);
+ else
+ it += offset;
+ return {it, size};
+ };
+
+ // Convert the pending characters (if available)
+ while (state && state->remainingChars && mblen) {
+ QStringConverter::State localState;
+ localState.flags = state->flags;
+ // Use at most 6 characters as a guess for the longest encoded character
+ // in any multibyte encoding.
+ // Even with a total of 2 bytes of overhead that would leave around
+ // 2^(4 * 8) possible characters
+ std::array<char, 6> prev = {0};
+ Q_ASSERT(state->remainingChars <= q20::ssize(state->state_data));
+ qsizetype index = 0;
+ for (; index < state->remainingChars; ++index)
+ prev[index] = state->state_data[index];
+ const qsizetype toCopy = std::min(q20::ssize(prev) - index, mblen);
+ for (qsizetype i = 0; i < toCopy; ++i, ++index)
+ prev[index] = mb[i];
+ mb += toCopy;
+ mblen -= toCopy;
+
+ // Recursing:
+ // Since we are using a clean local state it will try to decode what was
+ // stored in our state + some extra octets from input (`prev`). If some
+ // part fails we will have those characters stored in the local state's
+ // storage, and we can extract those. It may also output some
+ // replacement characters, which we'll count in the invalidChars.
+ // In the best case we only do this once, but we will loop until we have
+ // resolved all the remaining characters or we have run out of new input
+ // in which case we may still have remaining characters.
+ const QString tmp = convertToUnicode_sys(QByteArrayView(prev.data(), index), codePage,
+ &localState);
+ std::tie(out, outlen) = growOut(tmp.size());
+ if (!out)
+ return {};
+ out = std::copy_n(reinterpret_cast<const wchar_t *>(tmp.constData()), tmp.size(), out);
+ outlen -= tmp.size();
+ const qsizetype tail = toCopy - localState.remainingChars;
+ if (tail >= 0) {
+ // Everything left to process comes from `in`, so we can stop
+ // looping. Adjust the window for `in` and unset remainingChars to
+ // signal that we're done.
+ mb -= localState.remainingChars;
+ mblen += localState.remainingChars;
+ localState.remainingChars = 0;
}
+ state->remainingChars = localState.remainingChars;
+ state->invalidChars += localState.invalidChars;
+ std::copy_n(localState.state_data, state->remainingChars, state->state_data);
}
- while (!(len=MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED|MB_ERR_INVALID_CHARS,
- mb, mblen, wc.data(), wc.length()))) {
- int r = GetLastError();
- if (r == ERROR_INSUFFICIENT_BUFFER) {
- const int wclen = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED,
- mb, mblen, 0, 0);
- wc.resize(wclen);
- } else if (r == ERROR_NO_UNICODE_TRANSLATION) {
- //find the last non NULL character
- while (mblen > 1 && !(mb[mblen-1]))
- mblen--;
- //check whether, we hit an invalid character in the middle
- if ((mblen <= 1) || (remainingChars && state_data))
- return convertToUnicodeCharByChar(in, state);
- //Remove the last character and try again...
- state_data = mb[mblen-1];
- remainingChars = 1;
- mblen--;
+ Q_ASSERT(!state || state->remainingChars == 0 || mblen == 0);
+
+ // Need it in this scope, since we try to decrease our window size if we
+ // encounter an error
+ int nextIn = qt_saturate<int>(mblen);
+ while (mblen > 0) {
+ std::tie(out, outlen) = growOut(1); // Need space for at least one character
+ if (!out)
+ return {};
+ const int nextOut = qt_saturate<int>(outlen);
+ int len = MultiByteToWideChar(codePage, MB_ERR_INVALID_CHARS, mb, nextIn, out, nextOut);
+ if (len) {
+ mb += nextIn;
+ mblen -= nextIn;
+ out += len;
+ outlen -= len;
} else {
- // Fail.
- qWarning("MultiByteToWideChar: Cannot convert multibyte text");
- break;
+ int r = GetLastError();
+ if (r == ERROR_INSUFFICIENT_BUFFER) {
+ const int wclen = MultiByteToWideChar(codePage, 0, mb, nextIn, 0, 0);
+ std::tie(out, outlen) = growOut(wclen);
+ if (!out)
+ return {};
+ } else if (r == ERROR_NO_UNICODE_TRANSLATION) {
+ // Can't decode the current window, so either store the state,
+ // reduce window size or output a replacement character.
+
+ // Check if we can store all remaining characters in the state
+ // to be used next time we're called:
+ if (state && mblen <= q20::ssize(state->state_data)) {
+ state->remainingChars = mblen;
+ std::copy_n(mb, mblen, state->state_data);
+ mb += mblen;
+ mblen = 0;
+ break;
+ }
+
+ // .. if not, try to find the last valid character in the window
+ // and try again with a shrunken window:
+ if (nextIn > 1) {
+ // There may be some incomplete data at the end of our current
+ // window, so decrease the window size and try again.
+ // In the worst case scenario there is gigs of undecodable
+ // garbage, but what are we supposed to do about that?
+ const auto it = CharPrevExA(codePage, mb, mb + nextIn, 0);
+ if (it != mb)
+ nextIn = int(it - mb);
+ else
+ --nextIn;
+ continue;
+ }
+
+ // Finally, we are forced to output a replacement character for
+ // the first byte in the window:
+ std::tie(out, outlen) = growOut(1);
+ if (!out)
+ return {};
+ *out = replacementCharacter;
+ ++invalidChars;
+ ++out;
+ --outlen;
+ ++mb;
+ --mblen;
+ } else {
+ // Fail.
+ qWarning("MultiByteToWideChar: Cannot convert multibyte text");
+ break;
+ }
}
+ nextIn = qt_saturate<int>(mblen);
}
- if (len <= 0)
- return QString();
+ if (sp.isEmpty()) {
+ // We must have only used the stack buffer
+ if (out != buf.data()) // else: we return null-string
+ sp = QStringView(buf.data(), out).toString();
+ } else{
+ const auto begin = reinterpret_cast<wchar_t *>(sp.data());
+ sp.truncate(std::distance(begin, out));
+ }
- if (wc[len-1] == 0) // len - 1: we don't want terminator
- --len;
+ if (sp.size() && sp.back().isNull())
+ sp.chop(1);
- //save the new state information
- if (state) {
- state->state_data[0] = (char)state_data;
- state->remainingChars = remainingChars;
+ if (!state && mblen > 0) {
+ // We have trailing character(s) that could not be converted, and
+ // nowhere to cache them
+ sp.resize(sp.size() + mblen, replacementCharacter);
+ invalidChars += mblen;
}
- QString s((QChar*)wc.data(), len);
- if (prepend) {
- return sp+s;
- }
- return s;
+ return sp;
}
-QByteArray QLocal8Bit::convertFromUnicode(QStringView in, QStringConverter::State *state)
+QByteArray QLocal8Bit::convertFromUnicode_sys(QStringView in, QStringConverter::State *state)
{
- const QChar *ch = in.data();
+ return convertFromUnicode_sys(in, CP_ACP, state);
+}
+
+QByteArray QLocal8Bit::convertFromUnicode_sys(QStringView in, quint32 codePage,
+ QStringConverter::State *state)
+{
+ const wchar_t *ch = reinterpret_cast<const wchar_t *>(in.data());
qsizetype uclen = in.size();
- Q_ASSERT(uclen < INT_MAX); // ### FIXME
Q_ASSERT(state);
- Q_UNUSED(state); // ### Fixme
- if (state->flags & QStringConverter::Flag::Stateless) // temporary
+ // The Windows API has a *boolean* out-parameter that says if a replacement
+ // character was used, but it gives us no way to know _how many_ were used.
+ // Since we cannot simply scan the string for replacement characters
+ // (which is potentially a question mark, and thus a valid character),
+ // we simply do not track the number of invalid characters here.
+ // auto &invalidChars = state->invalidChars;
+
+ using Flag = QStringConverter::Flag;
+ if (state->flags & Flag::Stateless) { // temporary
+ Q_ASSERT(state->remainingChars == 0);
state = nullptr;
+ }
if (!ch)
return QByteArray();
if (uclen == 0)
return QByteArray("");
- BOOL used_def;
- QByteArray mb(4096, 0);
- int len;
- while (!(len=WideCharToMultiByte(CP_ACP, 0, (const wchar_t*)ch, uclen,
- mb.data(), mb.size()-1, 0, &used_def)))
- {
- int r = GetLastError();
- if (r == ERROR_INSUFFICIENT_BUFFER) {
- mb.resize(1+WideCharToMultiByte(CP_ACP, 0,
- (const wchar_t*)ch, uclen,
- 0, 0, 0, &used_def));
- // and try again...
+
+ // Use a local stack-buffer at first to allow us a decently large container
+ // to avoid a lot of resizing, without also returning an overallocated
+ // QByteArray to the user for small strings.
+ // Then we can be fast for small strings and take the hit of extra resizes
+ // and measuring how much storage is needed for large strings.
+ std::array<char, 4096> buf;
+ char *out = buf.data();
+ qsizetype outlen = buf.size();
+ QByteArray mb;
+
+ if (state && state->remainingChars > 0) {
+ Q_ASSERT(state->remainingChars == 1);
+ // Let's try to decode the pending character
+ wchar_t wc[2] = { wchar_t(state->state_data[0]), ch[0] };
+ // Check if the second character is a valid low surrogate,
+ // otherwise we'll just decode the first character, for which windows
+ // will output a replacement character.
+ const bool validCodePoint = QChar::isLowSurrogate(wc[1]);
+ int len = WideCharToMultiByte(codePage, 0, wc, validCodePoint ? 2 : 1, out, outlen, nullptr,
+ nullptr);
+ if (!len)
+ return {}; // Cannot recover, and I refuse to believe it was a size limitation
+ out += len;
+ outlen -= len;
+ if (validCodePoint) {
+ ++ch;
+ --uclen;
+ }
+ state->remainingChars = 0;
+ state->state_data[0] = 0;
+ if (uclen == 0)
+ return QByteArrayView(buf.data(), len).toByteArray();
+ }
+
+ if (state && QChar::isHighSurrogate(ch[uclen - 1])) {
+ // We can handle a missing low surrogate at the end of the string,
+ // so if there is one, exclude it now and store it in the state.
+ state->remainingChars = 1;
+ state->state_data[0] = ch[uclen - 1];
+ --uclen;
+ if (uclen == 0)
+ return QByteArray();
+ }
+
+ Q_ASSERT(uclen > 0);
+
+ // Return a pointer to storage where we have enough space for `size`
+ const auto growOut = [&](qsizetype size) -> std::tuple<char *, qsizetype> {
+ if (outlen >= size)
+ return {out, outlen};
+ const bool wasStackBuffer = mb.isEmpty();
+ const auto begin = wasStackBuffer ? buf.data() : mb.data();
+ const qsizetype offset = qsizetype(std::distance(begin, out));
+ qsizetype newSize = 0;
+ if (Q_UNLIKELY(qAddOverflow(offset, size, &newSize))) {
+ Q_CHECK_PTR(false);
+ return {nullptr, 0};
+ }
+ mb.resize(newSize);
+ auto it = mb.data();
+ if (wasStackBuffer)
+ it = std::copy_n(buf.data(), offset, it);
+ else
+ it += offset;
+ return {it, size};
+ };
+
+ const auto getNextWindowSize = [&]() {
+ int nextIn = qt_saturate<int>(uclen);
+ // The Windows API has some issues if the current window ends in the
+ // middle of a surrogate pair, so we avoid that:
+ if (nextIn > 1 && QChar::isHighSurrogate(ch[nextIn - 1]))
+ --nextIn;
+ return nextIn;
+ };
+
+ int len = 0;
+ while (uclen > 0) {
+ const int nextIn = getNextWindowSize();
+ std::tie(out, outlen) = growOut(1); // We need at least one byte
+ if (!out)
+ return {};
+ const int nextOut = qt_saturate<int>(outlen);
+ len = WideCharToMultiByte(codePage, 0, ch, nextIn, out, nextOut, nullptr, nullptr);
+ if (len > 0) {
+ ch += nextIn;
+ uclen -= nextIn;
+ out += len;
+ outlen -= len;
} else {
- // Fail. Probably can't happen in fact (dwFlags is 0).
+ int r = GetLastError();
+ if (r == ERROR_INSUFFICIENT_BUFFER) {
+ int neededLength = WideCharToMultiByte(codePage, 0, ch, nextIn, nullptr, 0,
+ nullptr, nullptr);
+ if (neededLength <= 0) {
+ // Fail. Observed with UTF8 where the input window was max int and ended in an
+ // incomplete sequence, probably a Windows bug. We try to avoid that from
+ // happening by reducing the window size in that case. But let's keep this
+ // branch just in case of other bugs.
#ifndef QT_NO_DEBUG
- // Can't use qWarning(), as it'll recurse to handle %ls
- fprintf(stderr,
- "WideCharToMultiByte: Cannot convert multibyte text (error %d): %ls\n",
- r, reinterpret_cast<const wchar_t*>(QString(ch, uclen).utf16()));
+ r = GetLastError();
+ fprintf(stderr,
+ "WideCharToMultiByte: Cannot convert multibyte text (error %d)\n", r);
+#endif // !QT_NO_DEBUG
+ break;
+ }
+ std::tie(out, outlen) = growOut(neededLength);
+ if (!out)
+ return {};
+ // and try again...
+ } else {
+ // Fail. Probably can't happen in fact (dwFlags is 0).
+#ifndef QT_NO_DEBUG
+ // Can't use qWarning(), as it'll recurse to handle %ls
+ fprintf(stderr,
+ "WideCharToMultiByte: Cannot convert multibyte text (error %d): %ls\n", r,
+ reinterpret_cast<const wchar_t *>(
+ QStringView(ch, uclen).left(100).toString().utf16()));
#endif
- break;
+ break;
+ }
}
}
- mb.resize(len);
+ if (mb.isEmpty()) {
+ // We must have only used the stack buffer
+ if (out != buf.data()) // else: we return null-array
+ mb = QByteArrayView(buf.data(), out).toByteArray();
+ } else {
+ mb.truncate(std::distance(mb.data(), out));
+ }
return mb;
}
#endif
-void QStringConverter::State::clear()
+void QStringConverter::State::clear() noexcept
{
if (clearFn)
clearFn(this);
@@ -1395,6 +1634,22 @@ void QStringConverter::State::clear()
internalState = 0;
}
+void QStringConverter::State::reset() noexcept
+{
+ if (flags & Flag::UsesIcu) {
+#if QT_CONFIG(icu)
+ UConverter *converter = static_cast<UConverter *>(d[0]);
+ if (converter)
+ ucnv_reset(converter);
+#else
+ Q_UNREACHABLE();
+#endif
+ } else {
+ clear();
+ }
+}
+
+#ifndef QT_BOOTSTRAPPED
static QChar *fromUtf16(QChar *out, QByteArrayView in, QStringConverter::State *state)
{
return QUtf16::convertToUnicode(out, in, state, DetectEndianness);
@@ -1454,20 +1709,9 @@ static char *toUtf32LE(char *out, QStringView in, QStringConverter::State *state
{
return QUtf32::convertFromUnicode(out, in, state, LittleEndianness);
}
+#endif // !QT_BOOTSTRAPPED
-void qt_from_latin1(char16_t *dst, const char *str, size_t size) noexcept;
-
-static QChar *fromLatin1(QChar *out, QByteArrayView in, QStringConverter::State *state)
-{
- Q_ASSERT(state);
- Q_UNUSED(state);
-
- qt_from_latin1(reinterpret_cast<char16_t *>(out), in.data(), size_t(in.size()));
- return out + in.size();
-}
-
-
-static char *toLatin1(char *out, QStringView in, QStringConverter::State *state)
+char *QLatin1::convertFromUnicode(char *out, QStringView in, QStringConverter::State *state) noexcept
{
Q_ASSERT(state);
if (state->flags & QStringConverter::Flag::Stateless) // temporary
@@ -1475,7 +1719,7 @@ static char *toLatin1(char *out, QStringView in, QStringConverter::State *state)
const char replacement = (state && state->flags & QStringConverter::Flag::ConvertInvalidToNull) ? 0 : '?';
qsizetype invalid = 0;
- for (qsizetype i = 0; i < in.length(); ++i) {
+ for (qsizetype i = 0; i < in.size(); ++i) {
if (in[i] > QChar(0xff)) {
*out = replacement;
++invalid;
@@ -1492,26 +1736,28 @@ static char *toLatin1(char *out, QStringView in, QStringConverter::State *state)
static QChar *fromLocal8Bit(QChar *out, QByteArrayView in, QStringConverter::State *state)
{
QString s = QLocal8Bit::convertToUnicode(in, state);
- memcpy(out, s.constData(), s.length()*sizeof(QChar));
- return out + s.length();
+ memcpy(out, s.constData(), s.size()*sizeof(QChar));
+ return out + s.size();
}
static char *toLocal8Bit(char *out, QStringView in, QStringConverter::State *state)
{
QByteArray s = QLocal8Bit::convertFromUnicode(in, state);
- memcpy(out, s.constData(), s.length());
- return out + s.length();
+ memcpy(out, s.constData(), s.size());
+ return out + s.size();
}
static qsizetype fromUtf8Len(qsizetype l) { return l + 1; }
static qsizetype toUtf8Len(qsizetype l) { return 3*(l + 1); }
+#ifndef QT_BOOTSTRAPPED
static qsizetype fromUtf16Len(qsizetype l) { return l/2 + 2; }
static qsizetype toUtf16Len(qsizetype l) { return 2*(l + 1); }
static qsizetype fromUtf32Len(qsizetype l) { return l/2 + 2; }
static qsizetype toUtf32Len(qsizetype l) { return 4*(l + 1); }
+#endif
static qsizetype fromLatin1Len(qsizetype l) { return l + 1; }
static qsizetype toLatin1Len(qsizetype l) { return l + 1; }
@@ -1544,7 +1790,7 @@ static qsizetype toLatin1Len(qsizetype l) { return l + 1; }
operation, encoding UTF-16 encoded data (usually in the form of a QString) to
the requested encoding.
- The supported encodings are:
+ The following encodings are always supported:
\list
\li UTF-8
@@ -1558,6 +1804,10 @@ static qsizetype toLatin1Len(qsizetype l) { return l + 1; }
\li The system encoding
\endlist
+ QStringConverter may support more encodings depending on how Qt was
+ compiled. If more codecs are supported, they can be listed using
+ availableCodecs().
+
\l {QStringConverter}s can be used as follows to convert some encoded
string to and from UTF-16.
@@ -1616,6 +1866,7 @@ static qsizetype toLatin1Len(qsizetype l) { return l + 1; }
\value Stateless Ignore possible converter states between different function calls
to encode or decode strings. This will also cause the QStringConverter to raise an error if an incomplete
sequence of data is encountered.
+ \omitvalue UsesIcu
*/
/*!
@@ -1646,34 +1897,31 @@ static qsizetype toLatin1Len(qsizetype l) { return l + 1; }
const QStringConverter::Interface QStringConverter::encodingInterfaces[QStringConverter::LastEncoding + 1] =
{
{ "UTF-8", QUtf8::convertToUnicode, fromUtf8Len, QUtf8::convertFromUnicode, toUtf8Len },
+#ifndef QT_BOOTSTRAPPED
{ "UTF-16", fromUtf16, fromUtf16Len, toUtf16, toUtf16Len },
{ "UTF-16LE", fromUtf16LE, fromUtf16Len, toUtf16LE, toUtf16Len },
{ "UTF-16BE", fromUtf16BE, fromUtf16Len, toUtf16BE, toUtf16Len },
{ "UTF-32", fromUtf32, fromUtf32Len, toUtf32, toUtf32Len },
{ "UTF-32LE", fromUtf32LE, fromUtf32Len, toUtf32LE, toUtf32Len },
{ "UTF-32BE", fromUtf32BE, fromUtf32Len, toUtf32BE, toUtf32Len },
- { "ISO-8859-1", fromLatin1, fromLatin1Len, toLatin1, toLatin1Len },
+#endif
+ { "ISO-8859-1", QLatin1::convertToUnicode, fromLatin1Len, QLatin1::convertFromUnicode, toLatin1Len },
{ "Locale", fromLocal8Bit, fromUtf8Len, toLocal8Bit, toUtf8Len }
};
// match names case insensitive and skipping '-' and '_'
static bool nameMatch(const char *a, const char *b)
{
- while (*a && *b) {
- if (*a == '-' || *a == '_') {
+ do {
+ while (*a == '-' || *a == '_')
++a;
- continue;
- }
- if (*b == '-' || *b == '_') {
+ while (*b == '-' || *b == '_')
++b;
- continue;
- }
- if (toupper(*a) != toupper(*b))
- return false;
- ++a;
- ++b;
- }
- return !*a && !*b;
+ if (!*a && !*b) // end of both strings
+ return true;
+ } while (QtMiscUtils::toAsciiLower(*a++) == QtMiscUtils::toAsciiLower(*b++));
+
+ return false;
}
@@ -1687,6 +1935,234 @@ static bool nameMatch(const char *a, const char *b)
\internal
*/
+
+#if QT_CONFIG(icu)
+// only derives from QStringConverter to get access to protected types
+struct QStringConverterICU : QStringConverter
+{
+ static void clear_function(QStringConverterBase::State *state) noexcept
+ {
+ ucnv_close(static_cast<UConverter *>(state->d[0]));
+ state->d[0] = nullptr;
+ }
+
+ static void ensureConverter(QStringConverter::State *state)
+ {
+ // old code might reset the state via clear instead of reset
+ // in that case, the converter has been closed, and we have to reopen it
+ if (state->d[0] == nullptr)
+ state->d[0] = createConverterForName(static_cast<const char *>(state->d[1]), state);
+ }
+
+ static QChar *toUtf16(QChar *out, QByteArrayView in, QStringConverter::State *state)
+ {
+ ensureConverter(state);
+
+ auto icu_conv = static_cast<UConverter *>(state->d[0]);
+ UErrorCode err = U_ZERO_ERROR;
+ auto source = in.data();
+ auto sourceLimit = in.data() + in.size();
+
+ qsizetype length = toLen(in.size());
+
+ UChar *target = reinterpret_cast<UChar *>(out);
+ auto targetLimit = target + length;
+ // We explicitly clean up anyway, so no need to set flush to true,
+ // which would just reset the converter.
+ UBool flush = false;
+
+ // If the QStringConverter was moved, the state that we used as a context is stale now.
+ UConverterToUCallback action;
+ const void *context;
+ ucnv_getToUCallBack(icu_conv, &action, &context);
+ if (context != state)
+ ucnv_setToUCallBack(icu_conv, action, state, nullptr, nullptr, &err);
+
+ ucnv_toUnicode(icu_conv, &target, targetLimit, &source, sourceLimit, nullptr, flush, &err);
+ // We did reserve enough space:
+ Q_ASSERT(err != U_BUFFER_OVERFLOW_ERROR);
+ if (state->flags.testFlag(QStringConverter::Flag::Stateless)) {
+ if (auto leftOver = ucnv_toUCountPending(icu_conv, &err)) {
+ ucnv_reset(icu_conv);
+ state->invalidChars += leftOver;
+ }
+ }
+ return reinterpret_cast<QChar *>(target);
+ }
+
+ static char *fromUtf16(char *out, QStringView in, QStringConverter::State *state)
+ {
+ ensureConverter(state);
+ auto icu_conv = static_cast<UConverter *>(state->d[0]);
+ UErrorCode err = U_ZERO_ERROR;
+ auto source = reinterpret_cast<const UChar *>(in.data());
+ auto sourceLimit = reinterpret_cast<const UChar *>(in.data() + in.size());
+
+ qsizetype length = UCNV_GET_MAX_BYTES_FOR_STRING(in.size(), ucnv_getMaxCharSize(icu_conv));
+
+ char *target = out;
+ char *targetLimit = out + length;
+ UBool flush = false;
+
+ // If the QStringConverter was moved, the state that we used as a context is stale now.
+ UConverterFromUCallback action;
+ const void *context;
+ ucnv_getFromUCallBack(icu_conv, &action, &context);
+ if (context != state)
+ ucnv_setFromUCallBack(icu_conv, action, state, nullptr, nullptr, &err);
+
+ ucnv_fromUnicode(icu_conv, &target, targetLimit, &source, sourceLimit, nullptr, flush, &err);
+ // We did reserve enough space:
+ Q_ASSERT(err != U_BUFFER_OVERFLOW_ERROR);
+ if (state->flags.testFlag(QStringConverter::Flag::Stateless)) {
+ if (auto leftOver = ucnv_fromUCountPending(icu_conv, &err)) {
+ ucnv_reset(icu_conv);
+ state->invalidChars += leftOver;
+ }
+ }
+ return target;
+ }
+
+ Q_DISABLE_COPY_MOVE(QStringConverterICU)
+
+ template<qsizetype X>
+ static qsizetype fromLen(qsizetype inLength)
+ {
+ return X * inLength * sizeof(UChar);
+ }
+
+ static qsizetype toLen(qsizetype inLength)
+ {
+
+ /* Assumption: each input char might map to a different codepoint
+ Each codepoint can take up to 4 bytes == 2 QChar
+ We can ignore reserving space for a BOM, as only UTF encodings use one
+ and those are not handled by the ICU converter.
+ */
+ return 2 * inLength;
+ }
+
+ static constexpr QStringConverter::Interface forLength[] = {
+ {"icu, recompile if you see this", QStringConverterICU::toUtf16, QStringConverterICU::toLen, QStringConverterICU::fromUtf16, QStringConverterICU::fromLen<1>},
+ {"icu, recompile if you see this", QStringConverterICU::toUtf16, QStringConverterICU::toLen, QStringConverterICU::fromUtf16, QStringConverterICU::fromLen<2>},
+ {"icu, recompile if you see this", QStringConverterICU::toUtf16, QStringConverterICU::toLen, QStringConverterICU::fromUtf16, QStringConverterICU::fromLen<3>},
+ {"icu, recompile if you see this", QStringConverterICU::toUtf16, QStringConverterICU::toLen, QStringConverterICU::fromUtf16, QStringConverterICU::fromLen<4>},
+ {"icu, recompile if you see this", QStringConverterICU::toUtf16, QStringConverterICU::toLen, QStringConverterICU::fromUtf16, QStringConverterICU::fromLen<5>},
+ {"icu, recompile if you see this", QStringConverterICU::toUtf16, QStringConverterICU::toLen, QStringConverterICU::fromUtf16, QStringConverterICU::fromLen<6>},
+ {"icu, recompile if you see this", QStringConverterICU::toUtf16, QStringConverterICU::toLen, QStringConverterICU::fromUtf16, QStringConverterICU::fromLen<7>},
+ {"icu, recompile if you see this", QStringConverterICU::toUtf16, QStringConverterICU::toLen, QStringConverterICU::fromUtf16, QStringConverterICU::fromLen<8>}
+ };
+
+ static UConverter *createConverterForName(const char *name, const State *state)
+ {
+ Q_ASSERT(name);
+ Q_ASSERT(state);
+ UErrorCode status = U_ZERO_ERROR;
+ UConverter *conv = ucnv_open(name, &status);
+ if (status != U_ZERO_ERROR && status != U_AMBIGUOUS_ALIAS_WARNING) {
+ ucnv_close(conv);
+ return nullptr;
+ }
+
+ if (state->flags.testFlag(Flag::ConvertInvalidToNull)) {
+ UErrorCode error = U_ZERO_ERROR;
+
+ auto nullToSubstituter = [](const void *context, UConverterToUnicodeArgs *toUArgs,
+ const char *, int32_t length,
+ UConverterCallbackReason reason, UErrorCode *err) {
+ if (reason <= UCNV_IRREGULAR) {
+ *err = U_ZERO_ERROR;
+ UChar c = '\0';
+ ucnv_cbToUWriteUChars(toUArgs, &c, 1, 0, err);
+ // Recover outer scope's state (which isn't const) from context:
+ auto state = const_cast<State *>(static_cast<const State *>(context));
+ state->invalidChars += length;
+ }
+ };
+ ucnv_setToUCallBack(conv, nullToSubstituter, state, nullptr, nullptr, &error);
+
+ auto nullFromSubstituter = [](const void *context, UConverterFromUnicodeArgs *fromUArgs,
+ const UChar *, int32_t length,
+ UChar32, UConverterCallbackReason reason, UErrorCode *err) {
+ if (reason <= UCNV_IRREGULAR) {
+ *err = U_ZERO_ERROR;
+ const UChar replacement[] = { 0 };
+ const UChar *stringBegin = std::begin(replacement);
+ ucnv_cbFromUWriteUChars(fromUArgs, &stringBegin, std::end(replacement), 0, err);
+ // Recover outer scope's state (which isn't const) from context:
+ auto state = const_cast<State *>(static_cast<const State *>(context));
+ state->invalidChars += length;
+ }
+ };
+ ucnv_setFromUCallBack(conv, nullFromSubstituter, state, nullptr, nullptr, &error);
+ } else {
+ UErrorCode error = U_ZERO_ERROR;
+
+ auto qmarkToSubstituter = [](const void *context, UConverterToUnicodeArgs *toUArgs,
+ const char *codeUnits,int32_t length,
+ UConverterCallbackReason reason, UErrorCode *err) {
+ if (reason <= UCNV_IRREGULAR) {
+ // Recover outer scope's state (which isn't const) from context:
+ auto state = const_cast<State *>(static_cast<const State *>(context));
+ state->invalidChars += length;
+ }
+ // use existing ICU callback for logic
+ UCNV_TO_U_CALLBACK_SUBSTITUTE(nullptr, toUArgs, codeUnits, length, reason, err);
+
+ };
+ ucnv_setToUCallBack(conv, qmarkToSubstituter, state, nullptr, nullptr, &error);
+
+ auto qmarkFromSubstituter = [](const void *context, UConverterFromUnicodeArgs *fromUArgs,
+ const UChar *codeUnits, int32_t length,
+ UChar32 codePoint, UConverterCallbackReason reason, UErrorCode *err) {
+ if (reason <= UCNV_IRREGULAR) {
+ // Recover outer scope's state (which isn't const) from context:
+ auto state = const_cast<State *>(static_cast<const State *>(context));
+ state->invalidChars += length;
+ }
+ // use existing ICU callback for logic
+ UCNV_FROM_U_CALLBACK_SUBSTITUTE(nullptr, fromUArgs, codeUnits, length,
+ codePoint, reason, err);
+ };
+ ucnv_setFromUCallBack(conv, qmarkFromSubstituter, state, nullptr, nullptr, &error);
+ }
+ return conv;
+ }
+
+ static const QStringConverter::Interface *make_icu_converter(
+ QStringConverterBase::State *state,
+ const char *name)
+ {
+ UErrorCode status = U_ZERO_ERROR;
+ UConverter *conv = createConverterForName(name, state);
+ if (!conv)
+ return nullptr;
+
+ const char *icuName = ucnv_getName(conv, &status);
+ // ucnv_getStandardName returns a name which is owned by the library
+ // we can thus store it in the state without worrying aobut its lifetime
+ const char *persistentName = ucnv_getStandardName(icuName, "MIME", &status);
+ if (U_FAILURE(status) || !persistentName) {
+ status = U_ZERO_ERROR;
+ persistentName = ucnv_getStandardName(icuName, "IANA", &status);
+ }
+ state->d[1] = const_cast<char *>(persistentName);
+ state->d[0] = conv;
+ state->flags |= QStringConverterBase::Flag::UsesIcu;
+ qsizetype maxCharSize = ucnv_getMaxCharSize(conv);
+ state->clearFn = QStringConverterICU::clear_function;
+ if (maxCharSize > 8 || maxCharSize < 1) {
+ qWarning("Encountered unexpected codec \"%s\" which requires >8x space", name);
+ return nullptr;
+ } else {
+ return &forLength[maxCharSize - 1];
+ }
+
+ }
+
+};
+#endif
+
/*!
\internal
*/
@@ -1695,7 +2171,27 @@ QStringConverter::QStringConverter(const char *name, Flags f)
{
auto e = encodingForName(name);
if (e)
- iface = encodingInterfaces + int(e.value());
+ iface = encodingInterfaces + int(*e);
+#if QT_CONFIG(icu)
+ else
+ iface = QStringConverterICU::make_icu_converter(&state, name);
+#endif
+}
+
+
+const char *QStringConverter::name() const noexcept
+{
+ if (!iface)
+ return nullptr;
+ if (state.flags & QStringConverter::Flag::UsesIcu) {
+#if QT_CONFIG(icu)
+ return static_cast<const char*>(state.d[1]);
+#else
+ return nullptr;
+#endif
+ } else {
+ return iface->name;
+ }
}
/*!
@@ -1728,17 +2224,26 @@ QStringConverter::QStringConverter(const char *name, Flags f)
Returns the canonical name of the encoding this QStringConverter can encode or decode.
Returns a nullptr if the converter is not valid.
+ The returned name is UTF-8 encoded.
\sa isValid()
*/
/*!
- Returns an optional encoding for \a name. The optional is empty if the name could
- not get converted to a valid encoding.
+ Convert \a name to the corresponding \l Encoding member, if there is one.
+
+ If the \a name is not the name of a codec listed in the Encoding enumeration,
+ \c{std::nullopt} is returned. Such a name may, none the less, be accepted by
+ the QStringConverter constructor when Qt is built with ICU, if ICU provides a
+ converter with the given name.
+
+ \a name is expected to be UTF-8 encoded.
*/
-std::optional<QStringConverter::Encoding> QStringConverter::encodingForName(const char *name)
+std::optional<QStringConverter::Encoding> QStringConverter::encodingForName(const char *name) noexcept
{
- for (int i = 0; i < LastEncoding + 1; ++i) {
+ if (!name)
+ return std::nullopt;
+ for (qsizetype i = 0; i < LastEncoding + 1; ++i) {
if (nameMatch(encodingInterfaces[i].name, name))
return QStringConverter::Encoding(i);
}
@@ -1747,6 +2252,7 @@ std::optional<QStringConverter::Encoding> QStringConverter::encodingForName(cons
return std::nullopt;
}
+#ifndef QT_BOOTSTRAPPED
/*!
Returns the encoding for the content of \a data if it can be determined.
\a expectedFirstCharacter can be passed as an additional hint to help determine
@@ -1754,7 +2260,8 @@ std::optional<QStringConverter::Encoding> QStringConverter::encodingForName(cons
The returned optional is empty, if the encoding is unclear.
*/
-std::optional<QStringConverter::Encoding> QStringConverter::encodingForData(QByteArrayView data, char16_t expectedFirstCharacter)
+std::optional<QStringConverter::Encoding>
+QStringConverter::encodingForData(QByteArrayView data, char16_t expectedFirstCharacter) noexcept
{
// someone set us up the BOM?
qsizetype arraySize = data.size();
@@ -1795,20 +2302,8 @@ std::optional<QStringConverter::Encoding> QStringConverter::encodingForData(QByt
return std::nullopt;
}
-/*!
- Tries to determine the encoding of the HTML in \a data by looking at leading byte
- order marks or a charset specifier in the HTML meta tag. If the optional is empty,
- the encoding specified is not supported by QStringConverter. If no encoding is
- detected, the method returns Utf8.
-*/
-std::optional<QStringConverter::Encoding> QStringConverter::encodingForHtml(QByteArrayView data)
+static QByteArray parseHtmlMetaForEncoding(QByteArrayView data)
{
- // determine charset
- auto encoding = encodingForData(data);
- if (encoding)
- // trust the initial BOM
- return encoding;
-
static constexpr auto metaSearcher = qMakeStaticByteArrayMatcher("meta ");
static constexpr auto charsetSearcher = qMakeStaticByteArrayMatcher("charset=");
@@ -1817,7 +2312,7 @@ std::optional<QStringConverter::Encoding> QStringConverter::encodingForHtml(QByt
if (pos != -1) {
pos = charsetSearcher.indexIn(header, pos);
if (pos != -1) {
- pos += int(qstrlen("charset="));
+ pos += qstrlen("charset=");
if (pos < header.size() && (header.at(pos) == '\"' || header.at(pos) == '\''))
++pos;
@@ -1835,14 +2330,119 @@ std::optional<QStringConverter::Encoding> QStringConverter::encodingForHtml(QByt
if (name == "unicode") // QTBUG-41998, ICU will return UTF-16.
name = QByteArrayLiteral("UTF-8");
if (!name.isEmpty())
- return encodingForName(name);
+ return name;
}
}
}
}
+ return QByteArray();
+}
+
+/*!
+ Tries to determine the encoding of the HTML in \a data by looking at leading byte
+ order marks or a charset specifier in the HTML meta tag. If the optional is empty,
+ the encoding specified is not supported by QStringConverter. If no encoding is
+ detected, the method returns Utf8.
+
+ \sa QStringDecoder::decoderForHtml()
+*/
+std::optional<QStringConverter::Encoding> QStringConverter::encodingForHtml(QByteArrayView data)
+{
+ // determine charset
+ std::optional<QStringConverter::Encoding> encoding = encodingForData(data);
+ if (encoding)
+ // trust the initial BOM
+ return encoding;
+
+ QByteArray encodingTag = parseHtmlMetaForEncoding(data);
+ if (!encodingTag.isEmpty())
+ return encodingForName(encodingTag);
+
return Utf8;
}
+static qsizetype availableCodecCount()
+{
+#if !QT_CONFIG(icu)
+ return QStringConverter::Encoding::LastEncoding;
+#else
+ /* icu contains also the names of what Qt provides
+ except for the special Locale one (so add one for it)
+ */
+ return 1 + ucnv_countAvailable();
+#endif
+}
+
+/*!
+ Returns a list of names of supported codecs. The names returned
+ by this function can be passed to QStringEncoder's and
+ QStringDecoder's constructor to create a en- or decoder for
+ the given codec.
+
+ This function may be used to obtain a listing of additional codecs beyond
+ the standard ones. Support for additional codecs requires Qt be compiled
+ with support for the ICU library.
+
+ \note The order of codecs is an internal implementation detail
+ and not guaranteed to be stable.
+ */
+QStringList QStringConverter::availableCodecs()
+{
+ auto availableCodec = [](qsizetype index) -> QString
+ {
+ #if !QT_CONFIG(icu)
+ return QString::fromLatin1(encodingInterfaces[index].name);
+ #else
+ if (index == 0) // "Locale", not provided by icu
+ return QString::fromLatin1(
+ encodingInterfaces[QStringConverter::Encoding::System].name);
+ // this mirrors the setup we do to set a converters name
+ UErrorCode status = U_ZERO_ERROR;
+ auto icuName = ucnv_getAvailableName(int32_t(index - 1));
+ const char *standardName = ucnv_getStandardName(icuName, "MIME", &status);
+ if (U_FAILURE(status) || !standardName) {
+ status = U_ZERO_ERROR;
+ standardName = ucnv_getStandardName(icuName, "IANA", &status);
+ }
+ if (!standardName)
+ standardName = icuName;
+ return QString::fromLatin1(standardName);
+ #endif
+ };
+
+ qsizetype codecCount = availableCodecCount();
+ QStringList result;
+ result.reserve(codecCount);
+ for (qsizetype i = 0; i < codecCount; ++i)
+ result.push_back(availableCodec(i));
+ return result;
+}
+
+/*!
+ Tries to determine the encoding of the HTML in \a data by looking at leading byte
+ order marks or a charset specifier in the HTML meta tag and returns a QStringDecoder
+ matching the encoding. If the returned decoder is not valid,
+ the encoding specified is not supported by QStringConverter. If no encoding is
+ detected, the method returns a decoder for Utf8.
+
+ \sa isValid()
+*/
+QStringDecoder QStringDecoder::decoderForHtml(QByteArrayView data)
+{
+ // determine charset
+ std::optional<QStringConverter::Encoding> encoding = encodingForData(data);
+ if (encoding)
+ // trust the initial BOM
+ return QStringDecoder(encoding.value());
+
+ QByteArray encodingTag = parseHtmlMetaForEncoding(data);
+ if (!encodingTag.isEmpty())
+ return QStringDecoder(encodingTag);
+
+ return QStringDecoder(Utf8);
+}
+#endif // !QT_BOOTSTRAPPED
+
/*!
Returns the canonical name for encoding \a e.
*/
@@ -1910,12 +2510,14 @@ const char *QStringConverter::nameForEncoding(QStringConverter::Encoding e)
*/
/*!
- \fn QByteArray QStringEncoder::encode(const QString &in)
- \fn QByteArray QStringEncoder::encode(QStringView in)
- \fn QByteArray QStringEncoder::operator()(const QString &in)
- \fn QByteArray QStringEncoder::operator()(QStringView in)
+ \fn QStringEncoder::DecodedData<const QString &> QStringEncoder::encode(const QString &in)
+ \fn QStringEncoder::DecodedData<QStringView> QStringEncoder::encode(QStringView in)
+ \fn QStringEncoder::DecodedData<const QString &> QStringEncoder::operator()(const QString &in)
+ \fn QStringEncoder::DecodedData<QStringView> QStringEncoder::operator()(QStringView in)
+
+ Converts \a in and returns a struct that is implicitly convertible to QByteArray.
- Converts \a in and returns the data as a byte array.
+ \snippet code/src_corelib_text_qstringconverter.cpp 5
*/
/*!
@@ -1999,12 +2601,15 @@ const char *QStringConverter::nameForEncoding(QStringConverter::Encoding e)
*/
/*!
- \fn QString QStringDecoder::operator()(const QByteArray &ba)
- \fn QString QStringDecoder::decode(const QByteArray &ba)
- \fn QString QStringDecoder::operator()(QByteArrayView ba)
- \fn QString QStringDecoder::decode(QByteArrayView ba)
+ \fn QStringDecoder::EncodedData<const QByteArray &> QStringDecoder::operator()(const QByteArray &ba)
+ \fn QStringDecoder::EncodedData<const QByteArray &> QStringDecoder::decode(const QByteArray &ba)
+ \fn QStringDecoder::EncodedData<QByteArrayView> QStringDecoder::operator()(QByteArrayView ba)
+ \fn QStringDecoder::EncodedData<QByteArrayView> QStringDecoder::decode(QByteArrayView ba)
+
+ Converts \a ba and returns a struct that is implicitly convertible to QString.
+
- Converts \a ba and returns the data as a QString.
+ \snippet code/src_corelib_text_qstringconverter.cpp 4
*/
/*!
@@ -2029,4 +2634,10 @@ const char *QStringConverter::nameForEncoding(QStringConverter::Encoding e)
\sa requiredSpace
*/
+/*!
+ \fn char16_t *QStringDecoder::appendToBuffer(char16_t *out, QByteArrayView in)
+ \since 6.6
+ \overload
+*/
+
QT_END_NAMESPACE
diff --git a/src/corelib/text/qstringconverter.h b/src/corelib/text/qstringconverter.h
index 829b19d568..055019836a 100644
--- a/src/corelib/text/qstringconverter.h
+++ b/src/corelib/text/qstringconverter.h
@@ -1,216 +1,39 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#if 0
+// keep existing syncqt header working after the move of the class
+// into qstringconverter_base
+#pragma qt_class(QStringConverter)
+#pragma qt_class(QStringConverterBase)
+#endif
#ifndef QSTRINGCONVERTER_H
#define QSTRINGCONVERTER_H
+#include <QtCore/qstringconverter_base.h>
#include <QtCore/qstring.h>
-#if defined(QT_USE_FAST_OPERATOR_PLUS) || defined(QT_USE_QSTRINGBUILDER)
#include <QtCore/qstringbuilder.h>
-#endif
-
-#include <optional>
QT_BEGIN_NAMESPACE
-// work around a compiler bug in GCC 7
-#if (defined(Q_CC_GNU) && __GNUC__ == 7) || defined(Q_QDOC)
-#define QSTRINGCONVERTER_CONSTEXPR
-#else
-#define QSTRINGCONVERTER_CONSTEXPR constexpr
-#endif
-
-class QStringConverterBase
-{
-public:
- enum class Flag {
- Default = 0,
- Stateless = 0x1,
- ConvertInvalidToNull = 0x2,
- WriteBom = 0x4,
- ConvertInitialBom = 0x8
- };
- Q_DECLARE_FLAGS(Flags, Flag)
-
- struct State {
- constexpr State(Flags f = Flag::Default)
- : flags(f), state_data{0, 0, 0, 0} {}
- ~State() { clear(); }
- State(State &&other)
- : flags(other.flags),
- remainingChars(other.remainingChars),
- invalidChars(other.invalidChars),
- d{other.d[0], other.d[1]},
- clearFn(other.clearFn)
- { other.clearFn = nullptr; }
- State &operator=(State &&other)
- {
- clear();
- flags = other.flags;
- remainingChars = other.remainingChars;
- invalidChars = other.invalidChars;
- d[0] = other.d[0];
- d[1] = other.d[1];
- clearFn = other.clearFn;
- other.clearFn = nullptr;
- return *this;
- }
- Q_CORE_EXPORT void clear();
-
- Flags flags;
- int internalState = 0;
- qsizetype remainingChars = 0;
- qsizetype invalidChars = 0;
-
- union {
- uint state_data[4];
- void *d[2];
- };
- using ClearDataFn = void (*)(State *);
- ClearDataFn clearFn = nullptr;
- private:
- Q_DISABLE_COPY(State)
- };
-};
-Q_DECLARE_OPERATORS_FOR_FLAGS(QStringConverterBase::Flags)
-
-class QStringConverter : public QStringConverterBase
-{
-public:
-
- enum Encoding {
- Utf8,
- Utf16,
- Utf16LE,
- Utf16BE,
- Utf32,
- Utf32LE,
- Utf32BE,
- Latin1,
- System,
- LastEncoding = System
- };
-#ifdef Q_QDOC
- // document the flags here
- enum class Flag {
- Default = 0,
- Stateless = 0x1,
- ConvertInvalidToNull = 0x2,
- WriteBom = 0x4,
- ConvertInitialBom = 0x8
- };
- Q_DECLARE_FLAGS(Flags, Flag)
-#endif
-
-protected:
-
- struct Interface
- {
- using DecoderFn = QChar * (*)(QChar *out, QByteArrayView in, State *state);
- using LengthFn = qsizetype (*)(qsizetype inLength);
- using EncoderFn = char * (*)(char *out, QStringView in, State *state);
- const char *name = nullptr;
- DecoderFn toUtf16 = nullptr;
- LengthFn toUtf16Len = nullptr;
- EncoderFn fromUtf16 = nullptr;
- LengthFn fromUtf16Len = nullptr;
- };
-
- QSTRINGCONVERTER_CONSTEXPR QStringConverter()
- : iface(nullptr)
- {}
- QSTRINGCONVERTER_CONSTEXPR QStringConverter(Encoding encoding, Flags f)
- : iface(&encodingInterfaces[int(encoding)]), state(f)
- {}
- QSTRINGCONVERTER_CONSTEXPR QStringConverter(const Interface *i)
- : iface(i)
- {}
- Q_CORE_EXPORT QStringConverter(const char *name, Flags f);
-
-
-public:
- bool isValid() const { return iface != nullptr; }
-
- void resetState()
- {
- state.clear();
- }
- bool hasError() const { return state.invalidChars != 0; }
-
- const char *name() const
- { return isValid() ? iface->name : nullptr; }
-
- Q_CORE_EXPORT static std::optional<Encoding> encodingForName(const char *name);
- Q_CORE_EXPORT static const char *nameForEncoding(Encoding e);
- Q_CORE_EXPORT static std::optional<Encoding> encodingForData(QByteArrayView data, char16_t expectedFirstCharacter = 0);
- Q_CORE_EXPORT static std::optional<Encoding> encodingForHtml(QByteArrayView data);
-
-protected:
- const Interface *iface;
- State state;
-private:
- Q_CORE_EXPORT static const Interface encodingInterfaces[Encoding::LastEncoding + 1];
-};
-
class QStringEncoder : public QStringConverter
{
protected:
- QSTRINGCONVERTER_CONSTEXPR QStringEncoder(const Interface *i)
+ constexpr explicit QStringEncoder(const Interface *i) noexcept
: QStringConverter(i)
{}
public:
- QSTRINGCONVERTER_CONSTEXPR QStringEncoder()
+ constexpr QStringEncoder() noexcept
: QStringConverter()
{}
- QSTRINGCONVERTER_CONSTEXPR QStringEncoder(Encoding encoding, Flags flags = Flag::Default)
+ constexpr explicit QStringEncoder(Encoding encoding, Flags flags = Flag::Default)
: QStringConverter(encoding, flags)
{}
- QStringEncoder(const char *name, Flags flags = Flag::Default)
+ explicit QStringEncoder(const char *name, Flags flags = Flag::Default)
: QStringConverter(name, flags)
{}
-#if defined(Q_QDOC)
- QByteArray operator()(const QString &in);
- QByteArray operator()(QStringView in);
- QByteArray encode(const QString &in);
- QByteArray encode(QStringView in);
-#else
template<typename T>
struct DecodedData
{
@@ -228,15 +51,25 @@ public:
{ return DecodedData<const QString &>{this, str}; }
DecodedData<QStringView> encode(QStringView in)
{ return DecodedData<QStringView>{this, in}; }
-#endif
qsizetype requiredSpace(qsizetype inputLength) const
- { return iface->fromUtf16Len(inputLength); }
+ { return iface ? iface->fromUtf16Len(inputLength) : 0; }
char *appendToBuffer(char *out, QStringView in)
- { return iface->fromUtf16(out, in, &state); }
+ {
+ if (!iface) {
+ state.invalidChars = 1;
+ return out;
+ }
+ return iface->fromUtf16(out, in, &state);
+ }
private:
QByteArray encodeAsByteArray(QStringView in)
{
+ if (!iface) {
+ // ensure that hasError returns true
+ state.invalidChars = 1;
+ return {};
+ }
QByteArray result(iface->fromUtf16Len(in.size()), Qt::Uninitialized);
char *out = result.data();
out = iface->fromUtf16(out, in, &state);
@@ -249,26 +82,20 @@ private:
class QStringDecoder : public QStringConverter
{
protected:
- QSTRINGCONVERTER_CONSTEXPR QStringDecoder(const Interface *i)
+ constexpr explicit QStringDecoder(const Interface *i) noexcept
: QStringConverter(i)
{}
public:
- QSTRINGCONVERTER_CONSTEXPR QStringDecoder(Encoding encoding, Flags flags = Flag::Default)
+ constexpr explicit QStringDecoder(Encoding encoding, Flags flags = Flag::Default)
: QStringConverter(encoding, flags)
{}
- QSTRINGCONVERTER_CONSTEXPR QStringDecoder()
+ constexpr QStringDecoder() noexcept
: QStringConverter()
{}
- QStringDecoder(const char *name, Flags f = Flag::Default)
+ explicit QStringDecoder(const char *name, Flags f = Flag::Default)
: QStringConverter(name, f)
{}
-#if defined(Q_QDOC)
- QString operator()(const QByteArray &ba);
- QString operator()(QByteArrayView ba);
- QString decode(const QByteArray &ba);
- QString decode(QByteArrayView ba);
-#else
template<typename T>
struct EncodedData
{
@@ -286,15 +113,30 @@ public:
{ return EncodedData<const QByteArray &>{this, ba}; }
EncodedData<QByteArrayView> decode(QByteArrayView ba)
{ return EncodedData<QByteArrayView>{this, ba}; }
-#endif
qsizetype requiredSpace(qsizetype inputLength) const
- { return iface->toUtf16Len(inputLength); }
+ { return iface ? iface->toUtf16Len(inputLength) : 0; }
QChar *appendToBuffer(QChar *out, QByteArrayView ba)
- { return iface->toUtf16(out, ba, &state); }
+ {
+ if (!iface) {
+ state.invalidChars = 1;
+ return out;
+ }
+ return iface->toUtf16(out, ba, &state);
+ }
+ char16_t *appendToBuffer(char16_t *out, QByteArrayView ba)
+ { return reinterpret_cast<char16_t *>(appendToBuffer(reinterpret_cast<QChar *>(out), ba)); }
+
+ Q_CORE_EXPORT static QStringDecoder decoderForHtml(QByteArrayView data);
+
private:
QString decodeAsString(QByteArrayView in)
{
+ if (!iface) {
+ // ensure that hasError returns true
+ state.invalidChars = 1;
+ return {};
+ }
QString result(iface->toUtf16Len(in.size()), Qt::Uninitialized);
const QChar *out = iface->toUtf16(result.data(), in, &state);
result.truncate(out - result.constData());
@@ -355,8 +197,66 @@ QByteArray &operator+=(QByteArray &a, const QStringEncoder::DecodedData<T> &b)
}
#endif
-QT_END_NAMESPACE
+template <typename InputIterator>
+void QString::assign_helper_char8(InputIterator first, InputIterator last)
+{
+ static_assert(!QString::is_contiguous_iterator_v<InputIterator>,
+ "Internal error: Should have been handed over to the QAnyStringView overload."
+ );
+
+ using ValueType = typename std::iterator_traits<InputIterator>::value_type;
+ constexpr bool IsFwdIt = std::is_convertible_v<
+ typename std::iterator_traits<InputIterator>::iterator_category,
+ std::forward_iterator_tag
+ >;
+
+ resize(0);
+ // In case of not being shared, there is the possibility of having free space at begin
+ // even after the resize to zero.
+ if (const auto offset = d.freeSpaceAtBegin())
+ d.setBegin(d.begin() - offset);
+
+ if constexpr (IsFwdIt)
+ reserve(static_cast<qsizetype>(std::distance(first, last)));
+
+ auto toUtf16 = QStringDecoder(QStringDecoder::Utf8);
+ auto availableCapacity = d.constAllocatedCapacity();
+ auto *dst = d.data();
+ auto *dend = d.data() + availableCapacity;
+
+ while (true) {
+ if (first == last) { // ran out of input elements
+ Q_ASSERT(!std::less<>{}(dend, dst));
+ d.size = dst - d.begin();
+ return;
+ }
+ const ValueType next = *first; // decays proxies, if any
+ const auto chunk = QUtf8StringView(&next, 1);
+ // UTF-8 characters can have a maximum size of 4 bytes and may result in a surrogate
+ // pair of UTF-16 code units. In the input-iterator case, we don't know the size
+ // and would need to always reserve space for 2 code units. To keep our promise
+ // of 'not allocating if it fits', we have to pre-check this condition.
+ // We know that it fits in the forward-iterator case.
+ if constexpr (!IsFwdIt) {
+ constexpr qsizetype Pair = 2;
+ char16_t buf[Pair];
+ const qptrdiff n = toUtf16.appendToBuffer(buf, chunk) - buf;
+ if (dend - dst < n) { // ran out of allocated memory
+ const auto offset = dst - d.begin();
+ reallocData(d.constAllocatedCapacity() + Pair, QArrayData::Grow);
+ // update the pointers since we've re-allocated
+ availableCapacity = d.constAllocatedCapacity();
+ dst = d.data() + offset;
+ dend = d.data() + availableCapacity;
+ }
+ dst = std::copy_n(buf, n, dst);
+ } else { // take the fast path
+ dst = toUtf16.appendToBuffer(dst, chunk);
+ }
+ ++first;
+ }
+}
-#undef QSTRINGCONVERTER_CONSTEXPR
+QT_END_NAMESPACE
#endif
diff --git a/src/corelib/text/qstringconverter_base.h b/src/corelib/text/qstringconverter_base.h
new file mode 100644
index 0000000000..d6b6fcb484
--- /dev/null
+++ b/src/corelib/text/qstringconverter_base.h
@@ -0,0 +1,176 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef QSTRINGCONVERTER_BASE_H
+#define QSTRINGCONVERTER_BASE_H
+
+#if 0
+// QStringConverter(Base) class are handled in qstringconverter
+#pragma qt_sync_stop_processing
+#endif
+
+#include <optional>
+
+#include <QtCore/qglobal.h> // QT_{BEGIN,END}_NAMESPACE
+#include <QtCore/qflags.h> // Q_DECLARE_FLAGS
+#include <QtCore/qcontainerfwd.h>
+
+#include <cstring>
+
+QT_BEGIN_NAMESPACE
+
+class QByteArrayView;
+class QChar;
+class QByteArrayView;
+class QStringView;
+
+class QStringConverterBase
+{
+public:
+ enum class Flag {
+ Default = 0,
+ Stateless = 0x1,
+ ConvertInvalidToNull = 0x2,
+ WriteBom = 0x4,
+ ConvertInitialBom = 0x8,
+ UsesIcu = 0x10,
+ };
+ Q_DECLARE_FLAGS(Flags, Flag)
+
+ struct State {
+ constexpr State(Flags f = Flag::Default) noexcept
+ : flags(f), state_data{0, 0, 0, 0} {}
+ ~State() { clear(); }
+
+ State(State &&other) noexcept
+ : flags(other.flags),
+ remainingChars(other.remainingChars),
+ invalidChars(other.invalidChars),
+ state_data{other.state_data[0], other.state_data[1],
+ other.state_data[2], other.state_data[3]},
+ clearFn(other.clearFn)
+ { other.clearFn = nullptr; }
+ State &operator=(State &&other) noexcept
+ {
+ clear();
+ flags = other.flags;
+ remainingChars = other.remainingChars;
+ invalidChars = other.invalidChars;
+ std::memmove(state_data, other.state_data, sizeof state_data); // self-assignment-safe
+ clearFn = other.clearFn;
+ other.clearFn = nullptr;
+ return *this;
+ }
+ Q_CORE_EXPORT void clear() noexcept;
+ Q_CORE_EXPORT void reset() noexcept;
+
+ Flags flags;
+ int internalState = 0;
+ qsizetype remainingChars = 0;
+ qsizetype invalidChars = 0;
+
+ union {
+ uint state_data[4];
+ void *d[2];
+ };
+ using ClearDataFn = void (*)(State *) noexcept;
+ ClearDataFn clearFn = nullptr;
+ private:
+ Q_DISABLE_COPY(State)
+ };
+protected:
+ ~QStringConverterBase() = default;
+};
+Q_DECLARE_OPERATORS_FOR_FLAGS(QStringConverterBase::Flags)
+
+class QStringConverter : public QStringConverterBase
+{
+public:
+
+ enum Encoding {
+ Utf8,
+#ifndef QT_BOOTSTRAPPED
+ Utf16,
+ Utf16LE,
+ Utf16BE,
+ Utf32,
+ Utf32LE,
+ Utf32BE,
+#endif
+ Latin1,
+ System,
+ LastEncoding = System
+ };
+#ifdef Q_QDOC
+ // document the flags here
+ enum class Flag {
+ Default = 0,
+ Stateless = 0x1,
+ ConvertInvalidToNull = 0x2,
+ WriteBom = 0x4,
+ ConvertInitialBom = 0x8,
+ UsesIcu = 0x10,
+ };
+ Q_DECLARE_FLAGS(Flags, Flag)
+#endif
+
+protected:
+
+ struct Interface
+ {
+ using DecoderFn = QChar * (*)(QChar *out, QByteArrayView in, State *state);
+ using LengthFn = qsizetype (*)(qsizetype inLength);
+ using EncoderFn = char * (*)(char *out, QStringView in, State *state);
+ const char *name = nullptr;
+ DecoderFn toUtf16 = nullptr;
+ LengthFn toUtf16Len = nullptr;
+ EncoderFn fromUtf16 = nullptr;
+ LengthFn fromUtf16Len = nullptr;
+ };
+
+ constexpr QStringConverter() noexcept
+ : iface(nullptr)
+ {}
+ constexpr explicit QStringConverter(Encoding encoding, Flags f)
+ : iface(&encodingInterfaces[qsizetype(encoding)]), state(f)
+ {}
+ constexpr explicit QStringConverter(const Interface *i) noexcept
+ : iface(i)
+ {}
+ Q_CORE_EXPORT explicit QStringConverter(const char *name, Flags f);
+
+
+ ~QStringConverter() = default;
+
+public:
+ QStringConverter(QStringConverter &&) = default;
+ QStringConverter &operator=(QStringConverter &&) = default;
+
+ bool isValid() const noexcept { return iface != nullptr; }
+
+ void resetState() noexcept
+ {
+ state.reset();
+ }
+ bool hasError() const noexcept { return state.invalidChars != 0; }
+
+ Q_CORE_EXPORT const char *name() const noexcept;
+
+ Q_CORE_EXPORT static std::optional<Encoding> encodingForName(const char *name) noexcept;
+ Q_CORE_EXPORT static const char *nameForEncoding(Encoding e);
+ Q_CORE_EXPORT static std::optional<Encoding>
+ encodingForData(QByteArrayView data, char16_t expectedFirstCharacter = 0) noexcept;
+ Q_CORE_EXPORT static std::optional<Encoding> encodingForHtml(QByteArrayView data);
+
+ Q_CORE_EXPORT static QStringList availableCodecs();
+
+protected:
+ const Interface *iface;
+ State state;
+private:
+ Q_CORE_EXPORT static const Interface encodingInterfaces[Encoding::LastEncoding + 1];
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/corelib/text/qstringconverter_p.h b/src/corelib/text/qstringconverter_p.h
index 2ad59af23c..e68ffb2bb0 100644
--- a/src/corelib/text/qstringconverter_p.h
+++ b/src/corelib/text/qstringconverter_p.h
@@ -1,42 +1,6 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Copyright (C) 2020 Intel Corporation.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 The Qt Company Ltd.
+// Copyright (C) 2020 Intel Corporation.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QSTRINGCONVERTER_P_H
#define QSTRINGCONVERTER_P_H
@@ -55,13 +19,42 @@
#include <QtCore/qstring.h>
#include <QtCore/qendian.h>
#include <QtCore/qstringconverter.h>
+#include <QtCore/private/qglobal_p.h>
QT_BEGIN_NAMESPACE
#ifndef __cpp_char8_t
-enum char8_t : uchar {};
+enum qchar8_t : uchar {};
+#else
+using qchar8_t = char8_t;
#endif
+struct QLatin1
+{
+ // Defined in qstring.cpp
+ static char16_t *convertToUnicode(char16_t *dst, QLatin1StringView in) noexcept;
+
+ static QChar *convertToUnicode(QChar *buffer, QLatin1StringView in) noexcept
+ {
+ char16_t *dst = reinterpret_cast<char16_t *>(buffer);
+ dst = convertToUnicode(dst, in);
+ return reinterpret_cast<QChar *>(dst);
+ }
+
+ static QChar *convertToUnicode(QChar *dst, QByteArrayView in,
+ [[maybe_unused]] QStringConverterBase::State *state) noexcept
+ {
+ Q_ASSERT(state);
+
+ return convertToUnicode(dst, QLatin1StringView(in.data(), in.size()));
+ }
+
+ static char *convertFromUnicode(char *out, QStringView in, QStringConverter::State *state) noexcept;
+
+ // Defined in qstring.cpp
+ static char *convertFromUnicode(char *out, QStringView in) noexcept;
+};
+
struct QUtf8BaseTraits
{
static const bool isTrusted = false;
@@ -73,25 +66,34 @@ struct QUtf8BaseTraits
static void appendByte(uchar *&ptr, uchar b)
{ *ptr++ = b; }
- static void appendByte(char8_t *&ptr, char8_t b)
+ static void appendByte(qchar8_t *&ptr, qchar8_t b)
{ *ptr++ = b; }
+ static uchar peekByte(const char *ptr, qsizetype n = 0)
+ { return ptr[n]; }
+
static uchar peekByte(const uchar *ptr, qsizetype n = 0)
{ return ptr[n]; }
- static uchar peekByte(const char8_t *ptr, int n = 0)
+ static uchar peekByte(const qchar8_t *ptr, qsizetype n = 0)
{ return ptr[n]; }
+ static qptrdiff availableBytes(const char *ptr, const char *end)
+ { return end - ptr; }
+
static qptrdiff availableBytes(const uchar *ptr, const uchar *end)
{ return end - ptr; }
- static qptrdiff availableBytes(const char8_t *ptr, const char8_t *end)
+ static qptrdiff availableBytes(const qchar8_t *ptr, const qchar8_t *end)
{ return end - ptr; }
+ static void advanceByte(const char *&ptr, qsizetype n = 1)
+ { ptr += n; }
+
static void advanceByte(const uchar *&ptr, qsizetype n = 1)
{ ptr += n; }
- static void advanceByte(const char8_t *&ptr, int n = 1)
+ static void advanceByte(const qchar8_t *&ptr, qsizetype n = 1)
{ ptr += n; }
static void appendUtf16(char16_t *&ptr, char16_t uc)
@@ -296,20 +298,41 @@ enum DataEndianness
struct QUtf8
{
- Q_CORE_EXPORT static QChar *convertToUnicode(QChar *buffer, QByteArrayView in) noexcept;
+ static QChar *convertToUnicode(QChar *buffer, QByteArrayView in) noexcept
+ {
+ char16_t *dst = reinterpret_cast<char16_t *>(buffer);
+ dst = QUtf8::convertToUnicode(dst, in);
+ return reinterpret_cast<QChar *>(dst);
+ }
+
+ Q_CORE_EXPORT static char16_t* convertToUnicode(char16_t *dst, QByteArrayView in) noexcept;
static QString convertToUnicode(QByteArrayView in);
Q_CORE_EXPORT static QString convertToUnicode(QByteArrayView in, QStringConverter::State *state);
- static QChar *convertToUnicode(QChar *out, QByteArrayView in, QStringConverter::State *state);
+
+ static QChar *convertToUnicode(QChar *out, QByteArrayView in, QStringConverter::State *state)
+ {
+ char16_t *buffer = reinterpret_cast<char16_t *>(out);
+ buffer = convertToUnicode(buffer, in, state);
+ return reinterpret_cast<QChar *>(buffer);
+ }
+
+ static char16_t *convertToUnicode(char16_t *dst, QByteArrayView in, QStringConverter::State *state);
+
Q_CORE_EXPORT static QByteArray convertFromUnicode(QStringView in);
Q_CORE_EXPORT static QByteArray convertFromUnicode(QStringView in, QStringConverterBase::State *state);
static char *convertFromUnicode(char *out, QStringView in, QStringConverter::State *state);
+ Q_CORE_EXPORT static char *convertFromLatin1(char *out, QLatin1StringView in);
struct ValidUtf8Result {
bool isValidUtf8;
bool isValidAscii;
};
static ValidUtf8Result isValidUtf8(QByteArrayView in);
- static int compareUtf8(QByteArrayView utf8, QStringView utf16) noexcept;
- static int compareUtf8(QByteArrayView utf8, QLatin1String s);
+ static int compareUtf8(QByteArrayView utf8, QStringView utf16,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
+ static int compareUtf8(QByteArrayView utf8, QLatin1StringView s,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ static int compareUtf8(QByteArrayView lhs, QByteArrayView rhs,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive) noexcept;
};
struct QUtf16
@@ -336,8 +359,34 @@ struct Q_CORE_EXPORT QLocal8Bit
static QByteArray convertFromUnicode(QStringView in, QStringConverter::State *state)
{ return QUtf8::convertFromUnicode(in, state); }
#else
- static QString convertToUnicode(QByteArrayView, QStringConverter::State *);
- static QByteArray convertFromUnicode(QStringView, QStringConverter::State *);
+ static int checkUtf8();
+ static bool isUtf8()
+ {
+ Q_CONSTINIT
+ static QBasicAtomicInteger<qint8> result = { 0 };
+ int r = result.loadRelaxed();
+ if (r == 0) {
+ r = checkUtf8();
+ result.storeRelaxed(r);
+ }
+ return r > 0;
+ }
+ static QString convertToUnicode_sys(QByteArrayView, quint32, QStringConverter::State *);
+ static QString convertToUnicode_sys(QByteArrayView, QStringConverter::State *);
+ static QString convertToUnicode(QByteArrayView in, QStringConverter::State *state)
+ {
+ if (isUtf8())
+ return QUtf8::convertToUnicode(in, state);
+ return convertToUnicode_sys(in, state);
+ }
+ static QByteArray convertFromUnicode_sys(QStringView, quint32, QStringConverter::State *);
+ static QByteArray convertFromUnicode_sys(QStringView, QStringConverter::State *);
+ static QByteArray convertFromUnicode(QStringView in, QStringConverter::State *state)
+ {
+ if (isUtf8())
+ return QUtf8::convertFromUnicode(in, state);
+ return convertFromUnicode_sys(in, state);
+ }
#endif
};
diff --git a/src/corelib/text/qstringfwd.h b/src/corelib/text/qstringfwd.h
new file mode 100644
index 0000000000..2e3c9e8248
--- /dev/null
+++ b/src/corelib/text/qstringfwd.h
@@ -0,0 +1,56 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#include <QtCore/qglobal.h>
+
+#ifndef QSTRINGFWD_H
+#define QSTRINGFWD_H
+
+QT_BEGIN_NAMESPACE
+
+#if QT_VERSION >= QT_VERSION_CHECK(7, 0, 0)
+# define QT_BEGIN_HAS_CHAR8_T_NAMESPACE inline namespace q_has_char8_t {
+# define QT_BEGIN_NO_CHAR8_T_NAMESPACE namespace q_no_char8_t {
+#else
+# define QT_BEGIN_HAS_CHAR8_T_NAMESPACE namespace q_has_char8_t {
+# define QT_BEGIN_NO_CHAR8_T_NAMESPACE inline namespace q_no_char8_t {
+#endif
+#define QT_END_HAS_CHAR8_T_NAMESPACE }
+#define QT_END_NO_CHAR8_T_NAMESPACE }
+
+// declare namespaces:
+QT_BEGIN_HAS_CHAR8_T_NAMESPACE
+QT_END_HAS_CHAR8_T_NAMESPACE
+QT_BEGIN_NO_CHAR8_T_NAMESPACE
+QT_END_NO_CHAR8_T_NAMESPACE
+
+class QByteArray;
+class QByteArrayView;
+#if QT_VERSION >= QT_VERSION_CHECK(7, 0, 0) || defined(QT_BOOTSTRAPPED) || defined(Q_QDOC)
+class QLatin1StringView;
+using QLatin1String = QLatin1StringView;
+#else
+class QLatin1String;
+using QLatin1StringView = QLatin1String;
+#endif
+class QStringView;
+template <bool> class QBasicUtf8StringView;
+class QAnyStringView;
+class QChar;
+class QRegularExpression;
+class QRegularExpressionMatch;
+
+#ifndef Q_QDOC
+// ### Qt 7: remove the non-char8_t version of QUtf8StringView
+QT_BEGIN_NO_CHAR8_T_NAMESPACE
+using QUtf8StringView = QBasicUtf8StringView<false>;
+QT_END_NO_CHAR8_T_NAMESPACE
+
+QT_BEGIN_HAS_CHAR8_T_NAMESPACE
+using QUtf8StringView = QBasicUtf8StringView<true>;
+QT_END_HAS_CHAR8_T_NAMESPACE
+#endif // Q_QDOC
+
+QT_END_NAMESPACE
+
+#endif // QSTRINGFWD_H
diff --git a/src/corelib/text/qstringiterator.qdoc b/src/corelib/text/qstringiterator.qdoc
index 9be610161f..9b1e43163e 100644
--- a/src/corelib/text/qstringiterator.qdoc
+++ b/src/corelib/text/qstringiterator.qdoc
@@ -1,29 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2014 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\class QStringIterator
diff --git a/src/corelib/text/qstringiterator_p.h b/src/corelib/text/qstringiterator_p.h
index e7e4166c6f..bb1a861637 100644
--- a/src/corelib/text/qstringiterator_p.h
+++ b/src/corelib/text/qstringiterator_p.h
@@ -1,42 +1,6 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Copyright (C) 2014 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// Copyright (C) 2014 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QSTRINGITERATOR_H
#define QSTRINGITERATOR_H
@@ -61,6 +25,8 @@ class QStringIterator
{
QString::const_iterator i, pos, e;
static_assert((std::is_same<QString::const_iterator, const QChar *>::value));
+ static bool less(const QChar *lhs, const QChar *rhs) noexcept
+ { return std::less{}(lhs, rhs); }
public:
explicit QStringIterator(QStringView string, qsizetype idx = 0)
: i(string.begin()),
@@ -76,7 +42,7 @@ public:
{
}
- inline explicit QStringIterator(const QChar *begin, int idx, const QChar *end)
+ explicit QStringIterator(const QChar *begin, qsizetype idx, const QChar *end)
: i(begin),
pos(begin + idx),
e(end)
@@ -88,14 +54,15 @@ public:
return pos;
}
- inline int index() const
+ qsizetype index() const
{
- return int(pos - i);
+ return pos - i;
}
inline void setPosition(QString::const_iterator position)
{
- Q_ASSERT_X(i <= position && position <= e, Q_FUNC_INFO, "position out of bounds");
+ Q_ASSERT_X(!less(position, i) && !less(e, position),
+ Q_FUNC_INFO, "position out of bounds");
pos = position;
}
@@ -103,7 +70,7 @@ public:
inline bool hasNext() const
{
- return pos < e;
+ return less(pos, e);
}
inline void advance()
@@ -121,7 +88,7 @@ public:
Q_ASSERT_X(hasNext(), Q_FUNC_INFO, "iterator hasn't a next item");
if (Q_UNLIKELY((pos++)->isHighSurrogate())) {
- Q_ASSERT(pos < e && pos->isLowSurrogate());
+ Q_ASSERT(hasNext() && pos->isLowSurrogate());
++pos;
}
}
@@ -131,7 +98,7 @@ public:
Q_ASSERT_X(hasNext(), Q_FUNC_INFO, "iterator hasn't a next item");
if (Q_UNLIKELY(pos->isHighSurrogate())) {
- Q_ASSERT(pos + 1 < e && pos[1].isLowSurrogate());
+ Q_ASSERT(less(pos + 1, e) && pos[1].isLowSurrogate());
return QChar::surrogateToUcs4(pos[0], pos[1]);
}
@@ -160,7 +127,7 @@ public:
const QChar cur = *pos++;
if (Q_UNLIKELY(cur.isHighSurrogate())) {
- Q_ASSERT(pos < e && pos->isLowSurrogate());
+ Q_ASSERT(hasNext() && pos->isLowSurrogate());
return QChar::surrogateToUcs4(cur, *pos++);
}
return cur.unicode();
@@ -172,7 +139,7 @@ public:
const QChar uc = *pos++;
if (Q_UNLIKELY(uc.isSurrogate())) {
- if (Q_LIKELY(uc.isHighSurrogate() && pos < e && pos->isLowSurrogate()))
+ if (Q_LIKELY(uc.isHighSurrogate() && hasNext() && pos->isLowSurrogate()))
return QChar::surrogateToUcs4(uc, *pos++);
return invalidAs;
}
@@ -184,7 +151,7 @@ public:
inline bool hasPrevious() const
{
- return pos > i;
+ return less(i, pos);
}
inline void recede()
@@ -203,7 +170,7 @@ public:
Q_ASSERT_X(hasPrevious(), Q_FUNC_INFO, "iterator hasn't a previous item");
if (Q_UNLIKELY((--pos)->isLowSurrogate())) {
- Q_ASSERT(pos > i && pos[-1].isHighSurrogate());
+ Q_ASSERT(hasPrevious() && pos[-1].isHighSurrogate());
--pos;
}
}
@@ -213,7 +180,7 @@ public:
Q_ASSERT_X(hasPrevious(), Q_FUNC_INFO, "iterator hasn't a previous item");
if (Q_UNLIKELY(pos[-1].isLowSurrogate())) {
- Q_ASSERT(pos > i + 1 && pos[-2].isHighSurrogate());
+ Q_ASSERT(less(i + 1, pos) && pos[-2].isHighSurrogate());
return QChar::surrogateToUcs4(pos[-2], pos[-1]);
}
return pos[-1].unicode();
@@ -241,7 +208,7 @@ public:
const QChar cur = *--pos;
if (Q_UNLIKELY(cur.isLowSurrogate())) {
- Q_ASSERT(pos > i && pos[-1].isHighSurrogate());
+ Q_ASSERT(hasPrevious() && pos[-1].isHighSurrogate());
return QChar::surrogateToUcs4(*--pos, cur);
}
return cur.unicode();
@@ -253,7 +220,7 @@ public:
const QChar uc = *--pos;
if (Q_UNLIKELY(uc.isSurrogate())) {
- if (Q_LIKELY(uc.isLowSurrogate() && pos > i && pos[-1].isHighSurrogate()))
+ if (Q_LIKELY(uc.isLowSurrogate() && hasPrevious() && pos[-1].isHighSurrogate()))
return QChar::surrogateToUcs4(*--pos, uc);
return invalidAs;
}
diff --git a/src/corelib/text/qstringlist.cpp b/src/corelib/text/qstringlist.cpp
index 687c83b8ab..61923e0b3f 100644
--- a/src/corelib/text/qstringlist.cpp
+++ b/src/corelib/text/qstringlist.cpp
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include <qstringlist.h>
#include <qset.h>
@@ -120,25 +84,7 @@ QT_BEGIN_NAMESPACE
\section1 Iterating Over the Strings
- To iterate over a list, you can either use index positions or
- QList's Java-style and STL-style iterator types:
-
- Indexing:
-
- \snippet qstringlist/main.cpp 1
-
- Java-style iterator:
-
- \snippet qstringlist/main.cpp 2
-
- STL-style iterator:
-
- \snippet qstringlist/main.cpp 3
-
- The QStringListIterator class is simply a type definition for
- QListIterator<QString>. QStringList also provide the
- QMutableStringListIterator class which is a type definition for
- QMutableListIterator<QString>.
+ See \l {Iterating over Containers}.
\section1 Manipulating the Strings
@@ -243,8 +189,11 @@ QT_BEGIN_NAMESPACE
\fn void QStringList::sort(Qt::CaseSensitivity cs)
Sorts the list of strings in ascending order.
+
+//! [comparison-case-sensitivity]
If \a cs is \l Qt::CaseSensitive (the default), the string comparison
is case sensitive; otherwise the comparison is case insensitive.
+//! [comparison-case-sensitivity]
Sorting is performed using the STL's std::sort() algorithm,
which averages \l{linear-logarithmic time}, i.e. O(\e{n} log \e{n}).
@@ -257,34 +206,25 @@ QT_BEGIN_NAMESPACE
integer index.
*/
-namespace {
-struct CaseInsensitiveLessThan {
- typedef bool result_type;
- result_type operator()(const QString &s1, const QString &s2) const
- {
- return s1.compare(s2, Qt::CaseInsensitive) < 0;
- }
-};
-}
-
void QtPrivate::QStringList_sort(QStringList *that, Qt::CaseSensitivity cs)
{
- if (cs == Qt::CaseSensitive)
+ if (cs == Qt::CaseSensitive) {
std::sort(that->begin(), that->end());
- else
- std::sort(that->begin(), that->end(), CaseInsensitiveLessThan());
+ } else {
+ auto CISCompare = [](const auto &s1, const auto &s2) {
+ return s1.compare(s2, Qt::CaseInsensitive) < 0;
+ };
+ std::sort(that->begin(), that->end(), CISCompare);
+ }
}
-#if QT_STRINGVIEW_LEVEL < 2
/*!
\fn QStringList QStringList::filter(const QString &str, Qt::CaseSensitivity cs) const
Returns a list of all the strings containing the substring \a str.
- If \a cs is \l Qt::CaseSensitive (the default), the string
- comparison is case sensitive; otherwise the comparison is case
- insensitive.
+ \include qstringlist.cpp comparison-case-sensitivity
\snippet qstringlist/main.cpp 5
\snippet qstringlist/main.cpp 10
@@ -296,7 +236,17 @@ void QtPrivate::QStringList_sort(QStringList *that, Qt::CaseSensitivity cs)
\sa contains()
*/
-#endif
+
+template <typename String>
+static QStringList filter_helper(const QStringList &that, const String &needle, Qt::CaseSensitivity cs)
+{
+ QStringList res;
+ for (const auto &s : that) {
+ if (s.contains(needle, cs))
+ res.append(s);
+ }
+ return res;
+}
/*!
\fn QStringList QStringList::filter(QStringView str, Qt::CaseSensitivity cs) const
@@ -306,14 +256,48 @@ void QtPrivate::QStringList_sort(QStringList *that, Qt::CaseSensitivity cs)
QStringList QtPrivate::QStringList_filter(const QStringList *that, QStringView str,
Qt::CaseSensitivity cs)
{
- QStringMatcher matcher(str, cs);
+ return filter_helper(*that, str, cs);
+}
+
+/*!
+ \fn QStringList QStringList::filter(const QStringMatcher &matcher) const
+ \since 6.7
+ \overload
+
+ Returns a list of all the strings matched by \a matcher (i.e. for which
+ \c matcher.indexIn() returns an index >= 0).
+
+ Using a QStringMatcher may be faster when searching in large lists and/or
+ in lists with long strings (the best way to find out is benchmarking).
+
+ For example:
+ \snippet qstringlist/main.cpp 18
+
+ \sa contains()
+*/
+
+QStringList QtPrivate::QStringList_filter(const QStringList &that, const QStringMatcher &matcher)
+{
QStringList res;
- for (qsizetype i = 0; i < that->size(); ++i)
- if (matcher.indexIn(that->at(i)) != -1)
- res << that->at(i);
+ for (const auto &s : that) {
+ if (matcher.indexIn(s) != -1)
+ res.append(s);
+ }
return res;
}
+/*!
+ \fn QStringList QStringList::filter(QLatin1StringView str, Qt::CaseSensitivity cs) const
+ \since 6.7
+ \overload
+*/
+
+QStringList QtPrivate::QStringList_filter(const QStringList &that, QLatin1StringView needle,
+ Qt::CaseSensitivity cs)
+{
+ return filter_helper(that, needle, cs);
+}
+
template<typename T>
static bool stringList_contains(const QStringList &stringList, const T &str, Qt::CaseSensitivity cs)
{
@@ -325,17 +309,16 @@ static bool stringList_contains(const QStringList &stringList, const T &str, Qt:
}
-#if QT_STRINGVIEW_LEVEL < 2
/*!
\fn bool QStringList::contains(const QString &str, Qt::CaseSensitivity cs) const
Returns \c true if the list contains the string \a str; otherwise
- returns \c false. The search is case insensitive if \a cs is
- Qt::CaseInsensitive; the search is case sensitive by default.
+ returns \c false.
+
+ \include qstringlist.cpp comparison-case-sensitivity
\sa indexOf(), lastIndexOf(), QString::contains()
*/
-#endif
/*!
\fn bool QStringList::contains(QStringView str, Qt::CaseSensitivity cs) const
@@ -343,8 +326,9 @@ static bool stringList_contains(const QStringList &stringList, const T &str, Qt:
\since 5.12
Returns \c true if the list contains the string \a str; otherwise
- returns \c false. The search is case insensitive if \a cs is
- Qt::CaseInsensitive; the search is case sensitive by default.
+ returns \c false.
+
+ \include qstringlist.cpp comparison-case-sensitivity
*/
bool QtPrivate::QStringList_contains(const QStringList *that, QStringView str,
Qt::CaseSensitivity cs)
@@ -353,17 +337,18 @@ bool QtPrivate::QStringList_contains(const QStringList *that, QStringView str,
}
/*!
- \fn bool QStringList::contains(QLatin1String str, Qt::CaseSensitivity cs) const
+ \fn bool QStringList::contains(QLatin1StringView str, Qt::CaseSensitivity cs) const
\overload
\since 5.10
- Returns \c true if the list contains the string \a str; otherwise
- returns \c false. The search is case insensitive if \a cs is
- Qt::CaseInsensitive; the search is case sensitive by default.
+ Returns \c true if the list contains the Latin-1 string viewed by \a str; otherwise
+ returns \c false.
+
+ \include qstringlist.cpp comparison-case-sensitivity
\sa indexOf(), lastIndexOf(), QString::contains()
*/
-bool QtPrivate::QStringList_contains(const QStringList *that, QLatin1String str,
+bool QtPrivate::QStringList_contains(const QStringList *that, QLatin1StringView str,
Qt::CaseSensitivity cs)
{
return stringList_contains(*that, str, cs);
@@ -382,22 +367,22 @@ bool QtPrivate::QStringList_contains(const QStringList *that, QLatin1String str,
QStringList QtPrivate::QStringList_filter(const QStringList *that, const QRegularExpression &re)
{
QStringList res;
- for (qsizetype i = 0; i < that->size(); ++i) {
- if (that->at(i).contains(re))
- res << that->at(i);
+ for (const auto &str : *that) {
+ if (str.contains(re))
+ res.append(str);
}
return res;
}
#endif // QT_CONFIG(regularexpression)
-#if QT_STRINGVIEW_LEVEL < 2
/*!
\fn QStringList &QStringList::replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs)
Returns a string list where every string has had the \a before
text replaced with the \a after text wherever the \a before text
- is found. The \a before text is matched case-sensitively or not
- depending on the \a cs flag.
+ is found.
+
+ \include qstringlist.cpp comparison-case-sensitivity
For example:
@@ -418,7 +403,6 @@ QStringList QtPrivate::QStringList_filter(const QStringList *that, const QRegula
\overload
\since 5.14
*/
-#endif
/*!
\fn QStringList &QStringList::replaceInStrings(QStringView before, QStringView after, Qt::CaseSensitivity cs)
@@ -428,8 +412,19 @@ QStringList QtPrivate::QStringList_filter(const QStringList *that, const QRegula
void QtPrivate::QStringList_replaceInStrings(QStringList *that, QStringView before,
QStringView after, Qt::CaseSensitivity cs)
{
- for (qsizetype i = 0; i < that->size(); ++i)
- (*that)[i].replace(before.data(), before.length(), after.data(), after.length(), cs);
+ // Before potentially detaching "that" list, check if any string contains "before"
+ qsizetype i = -1;
+ for (qsizetype j = 0; j < that->size(); ++j) {
+ if (that->at(j).contains(before, cs)) {
+ i = j;
+ break;
+ }
+ }
+ if (i == -1)
+ return;
+
+ for (; i < that->size(); ++i)
+ (*that)[i].replace(before.data(), before.size(), after.data(), after.size(), cs);
}
#if QT_CONFIG(regularexpression)
@@ -456,9 +451,21 @@ void QtPrivate::QStringList_replaceInStrings(QStringList *that, QStringView befo
\snippet qstringlist/main.cpp 5
\snippet qstringlist/main.cpp 17
*/
-void QtPrivate::QStringList_replaceInStrings(QStringList *that, const QRegularExpression &re, const QString &after)
+void QtPrivate::QStringList_replaceInStrings(QStringList *that, const QRegularExpression &re,
+ const QString &after)
{
- for (qsizetype i = 0; i < that->size(); ++i)
+ // Before potentially detaching "that" list, check if any string contains "before"
+ qsizetype i = -1;
+ for (qsizetype j = 0; j < that->size(); ++j) {
+ if (that->at(j).contains(re)) {
+ i = j;
+ break;
+ }
+ }
+ if (i == -1)
+ return;
+
+ for (; i < that->size(); ++i)
(*that)[i].replace(re, after);
}
#endif // QT_CONFIG(regularexpression)
@@ -474,7 +481,6 @@ static qsizetype accumulatedSize(const QStringList &list, qsizetype seplen)
return result;
}
-#if QT_STRINGVIEW_LEVEL < 2
/*!
\fn QString QStringList::join(const QString &separator) const
@@ -484,7 +490,6 @@ static qsizetype accumulatedSize(const QStringList &list, qsizetype seplen)
\sa QString::split()
*/
-#endif
/*!
\fn QString QStringList::join(QChar separator) const
@@ -509,11 +514,11 @@ QString QtPrivate::QStringList_join(const QStringList *that, const QChar *sep, q
}
/*!
- \fn QString QStringList::join(QLatin1String separator) const
+ \fn QString QStringList::join(QLatin1StringView separator) const
\since 5.8
\overload join()
*/
-QString QtPrivate::QStringList_join(const QStringList &list, QLatin1String sep)
+QString QtPrivate::QStringList_join(const QStringList &list, QLatin1StringView sep)
{
QString result;
if (!list.isEmpty()) {
@@ -536,7 +541,7 @@ QString QtPrivate::QStringList_join(const QStringList &list, QLatin1String sep)
*/
QString QtPrivate::QStringList_join(const QStringList *that, QStringView sep)
{
- return QStringList_join(that, sep.data(), sep.length());
+ return QStringList_join(that, sep.data(), sep.size());
}
/*!
@@ -576,6 +581,102 @@ QString QtPrivate::QStringList_join(const QStringList *that, QStringView sep)
the latter string list.
*/
+/*!
+ \fn qsizetype QStringList::indexOf(const QString &str, qsizetype from, Qt::CaseSensitivity cs) const
+ \fn qsizetype QStringList::indexOf(QStringView str, qsizetype from, Qt::CaseSensitivity cs) const
+ \fn qsizetype QStringList::indexOf(QLatin1StringView str, qsizetype from, Qt::CaseSensitivity cs) const
+
+ Returns the index position of the first match of \a str in the list,
+ searching forward from index position \a from. Returns -1 if no item
+ matched.
+
+ \include qstringlist.cpp comparison-case-sensitivity
+
+//! [overloading-base-class-methods]
+ \note The \a cs parameter was added in Qt 6.7, i.e. these methods now overload
+ the methods inherited from the base class. Prior to that these methods only
+ had two parameters. This change is source compatible and existing code should
+ continue to work.
+//! [overloading-base-class-methods]
+
+ \sa lastIndexOf()
+*/
+
+template <typename String>
+qsizetype indexOf_helper(const QStringList &that, String needle, qsizetype from,
+ Qt::CaseSensitivity cs)
+{
+ if (from < 0) // Historical behavior
+ from = qMax(from + that.size(), 0);
+
+ if (from >= that.size())
+ return -1;
+
+ for (qsizetype i = from; i < that.size(); ++i) {
+ if (needle.compare(that.at(i), cs) == 0)
+ return i;
+ }
+ return -1;
+}
+
+qsizetype QtPrivate::QStringList_indexOf(const QStringList &that, QStringView needle,
+ qsizetype from, Qt::CaseSensitivity cs)
+{
+ return indexOf_helper(that, needle, from, cs);
+}
+
+qsizetype QtPrivate::QStringList_indexOf(const QStringList &that, QLatin1StringView needle,
+ qsizetype from, Qt::CaseSensitivity cs)
+{
+ return indexOf_helper(that, needle, from, cs);
+}
+
+/*!
+ \fn qsizetype QStringList::lastIndexOf(const QString &str, qsizetype from, Qt::CaseSensitivity cs) const
+ \fn qsizetype QStringList::lastIndexOf(QStringView str, qsizetype from, Qt::CaseSensitivity cs) const
+ \fn qsizetype QStringList::lastIndexOf(QLatin1StringView str, qsizetype from, Qt::CaseSensitivity cs) const
+
+ Returns the index position of the last match of \a str in the list,
+ searching backward from index position \a from. If \a from is -1 (the
+ default), the search starts at the last item. Returns -1 if no item
+ matched.
+
+ \include qstringlist.cpp comparison-case-sensitivity
+
+ \include qstringlist.cpp overloading-base-class-methods
+
+ \sa indexOf()
+*/
+
+template <typename String>
+qsizetype lastIndexof_helper(const QStringList &that, String needle, qsizetype from,
+ Qt::CaseSensitivity cs)
+{
+ if (from < 0)
+ from += that.size();
+ else if (from >= that.size())
+ from = that.size() - 1;
+
+ for (qsizetype i = from; i >= 0; --i) {
+ if (needle.compare(that.at(i), cs) == 0)
+ return i;
+ }
+
+ return -1;
+}
+
+qsizetype QtPrivate::QStringList_lastIndexOf(const QStringList &that, QLatin1StringView needle,
+ qsizetype from, Qt::CaseSensitivity cs)
+{
+ return lastIndexof_helper(that, needle, from, cs);
+}
+
+qsizetype QtPrivate::QStringList_lastIndexOf(const QStringList &that, QStringView needle,
+ qsizetype from, Qt::CaseSensitivity cs)
+{
+ return lastIndexof_helper(that, needle, from, cs);
+}
+
#if QT_CONFIG(regularexpression)
/*!
\fn qsizetype QStringList::indexOf(const QRegularExpression &re, qsizetype from) const
diff --git a/src/corelib/text/qstringlist.h b/src/corelib/text/qstringlist.h
index 5ec95036be..fc5c49bfe1 100644
--- a/src/corelib/text/qstringlist.h
+++ b/src/corelib/text/qstringlist.h
@@ -1,42 +1,6 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Copyright (C) 2016 Intel Corporation.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 The Qt Company Ltd.
+// Copyright (C) 2016 Intel Corporation.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include <QtCore/qlist.h>
@@ -63,14 +27,29 @@ namespace QtPrivate {
qsizetype Q_CORE_EXPORT QStringList_removeDuplicates(QStringList *that);
QString Q_CORE_EXPORT QStringList_join(const QStringList *that, QStringView sep);
QString Q_CORE_EXPORT QStringList_join(const QStringList *that, const QChar *sep, qsizetype seplen);
- Q_CORE_EXPORT QString QStringList_join(const QStringList &list, QLatin1String sep);
+ Q_CORE_EXPORT QString QStringList_join(const QStringList &list, QLatin1StringView sep);
QStringList Q_CORE_EXPORT QStringList_filter(const QStringList *that, QStringView str,
Qt::CaseSensitivity cs);
+ Q_CORE_EXPORT QStringList QStringList_filter(const QStringList &that, QLatin1StringView needle,
+ Qt::CaseSensitivity cs);
+ Q_CORE_EXPORT QStringList QStringList_filter(const QStringList &that,
+ const QStringMatcher &matcher);
+
bool Q_CORE_EXPORT QStringList_contains(const QStringList *that, QStringView str, Qt::CaseSensitivity cs);
- bool Q_CORE_EXPORT QStringList_contains(const QStringList *that, QLatin1String str, Qt::CaseSensitivity cs);
+ bool Q_CORE_EXPORT QStringList_contains(const QStringList *that, QLatin1StringView str, Qt::CaseSensitivity cs);
void Q_CORE_EXPORT QStringList_replaceInStrings(QStringList *that, QStringView before, QStringView after,
Qt::CaseSensitivity cs);
+ qsizetype Q_CORE_EXPORT QStringList_indexOf(const QStringList &that, QStringView str,
+ qsizetype from, Qt::CaseSensitivity cs);
+ qsizetype Q_CORE_EXPORT QStringList_indexOf(const QStringList &that, QLatin1StringView str,
+ qsizetype from, Qt::CaseSensitivity cs);
+
+ Q_CORE_EXPORT qsizetype QStringList_lastIndexOf(const QStringList &that, QStringView str,
+ qsizetype from, Qt::CaseSensitivity cs);
+ Q_CORE_EXPORT qsizetype QStringList_lastIndexOf(const QStringList &that, QLatin1StringView str,
+ qsizetype from, Qt::CaseSensitivity cs);
+
#if QT_CONFIG(regularexpression)
void Q_CORE_EXPORT QStringList_replaceInStrings(QStringList *that, const QRegularExpression &rx, const QString &after);
QStringList Q_CORE_EXPORT QStringList_filter(const QStringList *that, const QRegularExpression &re);
@@ -109,11 +88,15 @@ public:
inline QString join(QStringView sep) const
{ return QtPrivate::QStringList_join(self(), sep); }
- inline QString join(QLatin1String sep) const
+ inline QString join(QLatin1StringView sep) const
{ return QtPrivate::QStringList_join(*self(), sep); }
inline QString join(QChar sep) const
{ return QtPrivate::QStringList_join(self(), &sep, 1); }
+ QStringList filter(const QStringMatcher &matcher) const
+ { return QtPrivate::QStringList_filter(*self(), matcher); }
+ QStringList filter(QLatin1StringView needle, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
+ { return QtPrivate::QStringList_filter(*self(), needle, cs); }
inline QStringList filter(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
{ return QtPrivate::QStringList_filter(self(), str, cs); }
inline QStringList &replaceInStrings(QStringView before, QStringView after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
@@ -122,9 +105,8 @@ public:
return *self();
}
-#if QT_STRINGVIEW_LEVEL < 2
inline QString join(const QString &sep) const
- { return QtPrivate::QStringList_join(self(), sep.constData(), sep.length()); }
+ { return QtPrivate::QStringList_join(self(), sep.constData(), sep.size()); }
inline QStringList filter(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
{ return QtPrivate::QStringList_filter(self(), str, cs); }
inline QStringList &replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
@@ -142,24 +124,37 @@ public:
QtPrivate::QStringList_replaceInStrings(self(), before, after, cs);
return *self();
}
-#endif
using QListSpecialMethodsBase<QString>::contains;
using QListSpecialMethodsBase<QString>::indexOf;
using QListSpecialMethodsBase<QString>::lastIndexOf;
- inline bool contains(QLatin1String str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ inline bool contains(QLatin1StringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
{ return QtPrivate::QStringList_contains(self(), str, cs); }
inline bool contains(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
{ return QtPrivate::QStringList_contains(self(), str, cs); }
-#if QT_STRINGVIEW_LEVEL < 2
inline bool contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
{ return QtPrivate::QStringList_contains(self(), str, cs); }
- qsizetype indexOf(const QString &str, qsizetype from = 0) const noexcept
- { return indexOf(QStringView(str), from); }
- qsizetype lastIndexOf(const QString &str, qsizetype from = -1) const noexcept
- { return lastIndexOf(QStringView(str), from); }
-#endif
+
+ qsizetype indexOf(const QString &str, qsizetype from = 0,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ { return indexOf(QStringView(str), from, cs); }
+ qsizetype indexOf(QStringView needle, qsizetype from = 0,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ { return QtPrivate::QStringList_indexOf(*self(), needle, from, cs); }
+ qsizetype indexOf(QLatin1StringView needle, qsizetype from = 0,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ { return QtPrivate::QStringList_indexOf(*self(), needle, from, cs); }
+
+ qsizetype lastIndexOf(const QString &str, qsizetype from = -1,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ { return lastIndexOf(QStringView(str), from, cs); }
+ qsizetype lastIndexOf(QStringView str, qsizetype from = -1,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ { return QtPrivate::QStringList_lastIndexOf(*self(), str, from, cs); }
+ qsizetype lastIndexOf(QLatin1StringView needle, qsizetype from = -1,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ { return QtPrivate::QStringList_lastIndexOf(*self(), needle, from, cs); }
#if QT_CONFIG(regularexpression)
inline QStringList filter(const QRegularExpression &re) const
diff --git a/src/corelib/text/qstringliteral.h b/src/corelib/text/qstringliteral.h
index d9804b31d6..429d9c02ad 100644
--- a/src/corelib/text/qstringliteral.h
+++ b/src/corelib/text/qstringliteral.h
@@ -1,42 +1,6 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Copyright (C) 2020 Intel Corporation.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// Copyright (C) 2020 Intel Corporation.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QSTRINGLITERAL_H
#define QSTRINGLITERAL_H
diff --git a/src/corelib/text/qstringmatcher.cpp b/src/corelib/text/qstringmatcher.cpp
index 2fba8daa88..379d555e54 100644
--- a/src/corelib/text/qstringmatcher.cpp
+++ b/src/corelib/text/qstringmatcher.cpp
@@ -1,52 +1,19 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Copyright (C) 2019 Mail.ru Group.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 The Qt Company Ltd.
+// Copyright (C) 2019 Mail.ru Group.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qstringmatcher.h"
QT_BEGIN_NAMESPACE
+static constexpr qsizetype FoldBufferCapacity = 256;
+
static void bm_init_skiptable(QStringView needle, uchar *skiptable, Qt::CaseSensitivity cs)
{
const char16_t *uc = needle.utf16();
- const qsizetype len = needle.size();
- qsizetype l = qMin(len, qsizetype(255));
+ const qsizetype len =
+ cs == Qt::CaseSensitive ? needle.size() : qMin(needle.size(), FoldBufferCapacity);
+ int l = qMin(int(len), 255);
memset(skiptable, l, 256 * sizeof(uchar));
uc += len - l;
if (cs == Qt::CaseSensitive) {
@@ -73,11 +40,12 @@ static inline qsizetype bm_find(QStringView haystack, qsizetype index, QStringVi
if (pl == 0)
return index > l ? -1 : index;
- const qsizetype pl_minus_one = pl - 1;
- const char16_t *current = uc + index + pl_minus_one;
- const char16_t *end = uc + l;
if (cs == Qt::CaseSensitive) {
+ const qsizetype pl_minus_one = pl - 1;
+ const char16_t *current = uc + index + pl_minus_one;
+ const char16_t *end = uc + l;
+
while (current < end) {
qsizetype skip = skiptable[*current & 0xff];
if (!skip) {
@@ -102,21 +70,38 @@ static inline qsizetype bm_find(QStringView haystack, qsizetype index, QStringVi
current += skip;
}
} else {
+ char16_t foldBuffer[FoldBufferCapacity];
+ const qsizetype foldBufferLength = qMin(FoldBufferCapacity, pl);
+ const char16_t *start = puc;
+ for (qsizetype i = 0; i < foldBufferLength; ++i)
+ foldBuffer[i] = foldCase(&puc[i], start);
+ QStringView restNeedle = needle.sliced(foldBufferLength);
+ const qsizetype foldBufferEnd = foldBufferLength - 1;
+ const char16_t *current = uc + index + foldBufferEnd;
+ const char16_t *end = uc + l;
+
while (current < end) {
qsizetype skip = skiptable[foldCase(current, uc) & 0xff];
if (!skip) {
// possible match
- while (skip < pl) {
- if (foldCase(current - skip, uc) != foldCase(puc + pl_minus_one - skip, puc))
+ while (skip < foldBufferLength) {
+ if (foldCase(current - skip, uc) != foldBuffer[foldBufferEnd - skip])
break;
++skip;
}
- if (skip > pl_minus_one) // we have a match
- return (current - uc) - pl_minus_one;
+ if (skip > foldBufferEnd) { // Matching foldBuffer
+ qsizetype candidatePos = (current - uc) - foldBufferEnd;
+ QStringView restHaystack =
+ haystack.sliced(qMin(haystack.size(), candidatePos + foldBufferLength));
+ if (restNeedle.size() == 0
+ || restHaystack.startsWith(
+ restNeedle, Qt::CaseInsensitive)) // Check the rest of the string
+ return candidatePos;
+ }
// in case we don't have a match we are a bit inefficient as we only skip by one
// when we have the non matching char in the string.
- if (skiptable[foldCase(current - skip, uc) & 0xff] == pl)
- skip = pl - skip;
+ if (skiptable[foldCase(current - skip, uc) & 0xff] == foldBufferLength)
+ skip = foldBufferLength - skip;
else
skip = 1;
}
@@ -258,6 +243,15 @@ QString QStringMatcher::pattern() const
}
/*!
+ \fn QStringView QStringMatcher::patternView() const noexcept
+ \since 6.7
+
+ Returns a string view of the pattern that this string matcher will search for.
+
+ \sa setPattern()
+*/
+
+/*!
Sets the case sensitivity setting of this string matcher to \a
cs.
diff --git a/src/corelib/text/qstringmatcher.h b/src/corelib/text/qstringmatcher.h
index 39cb877151..937f17df0a 100644
--- a/src/corelib/text/qstringmatcher.h
+++ b/src/corelib/text/qstringmatcher.h
@@ -1,42 +1,6 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Copyright (C) 2019 Mail.ru Group.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 The Qt Company Ltd.
+// Copyright (C) 2019 Mail.ru Group.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QSTRINGMATCHER_H
#define QSTRINGMATCHER_H
@@ -76,6 +40,9 @@ public:
{ return indexIn(QStringView(str, length), from); }
qsizetype indexIn(QStringView str, qsizetype from = 0) const;
QString pattern() const;
+ QStringView patternView() const noexcept
+ { return q_sv; }
+
inline Qt::CaseSensitivity caseSensitivity() const { return q_cs; }
private:
diff --git a/src/corelib/text/qstringtokenizer.cpp b/src/corelib/text/qstringtokenizer.cpp
index cad70c6718..fc6faed27f 100644
--- a/src/corelib/text/qstringtokenizer.cpp
+++ b/src/corelib/text/qstringtokenizer.cpp
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qstringtokenizer.h"
#include "qstringalgorithms.h"
@@ -73,7 +37,7 @@ QT_BEGIN_NAMESPACE
Argument Deduction (CTAD), you may write
\c{QStringTokenizer{string, separator}} (without template
arguments). If you can't use C++17 CTAD, you must use the
- QStringView::split() or QLatin1String::split() member functions
+ QStringView::split() or QLatin1StringView::split() member functions
and store the return value only in \c{auto} variables:
\code
@@ -149,7 +113,7 @@ QT_BEGIN_NAMESPACE
/*!
\typealias QStringTokenizer::value_type
- Alias for \c{const QStringView} or \c{const QLatin1String},
+ Alias for \c{const QStringView} or \c{const QLatin1StringView},
depending on the tokenizer's \c Haystack template argument.
*/
diff --git a/src/corelib/text/qstringtokenizer.h b/src/corelib/text/qstringtokenizer.h
index d14099ffbb..7a627b4508 100644
--- a/src/corelib/text/qstringtokenizer.h
+++ b/src/corelib/text/qstringtokenizer.h
@@ -1,46 +1,11 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QSTRINGTOKENIZER_H
#define QSTRINGTOKENIZER_H
#include <QtCore/qnamespace.h>
#include <QtCore/qcontainerfwd.h>
+#include <iterator>
QT_BEGIN_NAMESPACE
@@ -168,7 +133,7 @@ namespace Tok {
template <typename String> struct ViewForImpl {};
template <> struct ViewForImpl<QStringView> { using type = QStringView; };
- template <> struct ViewForImpl<QLatin1String> { using type = QLatin1String; };
+ template <> struct ViewForImpl<QLatin1StringView> { using type = QLatin1StringView; };
template <> struct ViewForImpl<QChar> { using type = QChar; };
template <> struct ViewForImpl<QString> : ViewForImpl<QStringView> {};
template <> struct ViewForImpl<QLatin1Char> : ViewForImpl<QChar> {};
@@ -185,7 +150,7 @@ namespace Tok {
#endif
// This metafunction maps a StringLike to a View (currently, QChar,
- // QStringView, QLatin1String). This is what QStringTokenizerBase
+ // QStringView, QLatin1StringView). This is what QStringTokenizerBase
// operates on. QStringTokenizer adds pinning to keep rvalues alive
// for the duration of the algorithm.
template <typename String>
@@ -292,7 +257,7 @@ class QStringTokenizer
using if_haystack_not_pinned = typename if_haystack_not_pinned_impl<Container, HPin>::type;
template <typename Container, typename Iterator = decltype(std::begin(std::declval<Container>()))>
using if_compatible_container = typename std::enable_if<
- std::is_same<
+ std::is_convertible<
typename Base::value_type,
typename std::iterator_traits<Iterator>::value_type
>::value,
diff --git a/src/corelib/text/qstringview.cpp b/src/corelib/text/qstringview.cpp
index faaed16044..29b83ffe8f 100644
--- a/src/corelib/text/qstringview.cpp
+++ b/src/corelib/text/qstringview.cpp
@@ -1,45 +1,7 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2017 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qstringview.h"
-#include "qstring.h"
-#include "qlocale_p.h"
QT_BEGIN_NAMESPACE
@@ -70,7 +32,7 @@ QT_BEGIN_NAMESPACE
When used as an interface type, QStringView allows a single function to accept
a wide variety of UTF-16 string data sources. One function accepting QStringView
thus replaces three function overloads (taking QString and
- \c{(const QChar*, int)}), while at the same time enabling even more string data
+ \c{(const QChar*, qsizetype)}), while at the same time enabling even more string data
sources to be passed to the function, such as \c{u"Hello World"}, a \c char16_t
string literal.
@@ -87,11 +49,11 @@ QT_BEGIN_NAMESPACE
QChar constructor by itself.
\li \e QString: if you store an unmodified copy of the string and thus would
like to take advantage of QString's implicit sharing.
- \li QLatin1String: if you can implement the function without converting the
- QLatin1String to UTF-16 first; users expect a function overloaded on
- QLatin1String to perform strictly less memory allocations than the
+ \li QLatin1StringView: if you can implement the function without converting the
+ QLatin1StringView to UTF-16 first; users expect a function overloaded on
+ QLatin1StringView to perform strictly less memory allocations than the
semantically equivalent call of the QStringView version, involving
- construction of a QString from the QLatin1String.
+ construction of a QString from the QLatin1StringView.
\endlist
QStringView can also be used as the return value of a function. If you call a
@@ -217,7 +179,7 @@ QT_BEGIN_NAMESPACE
*/
/*!
- \fn template <typename Char> QStringView::QStringView(const Char *str, qsizetype len)
+ \fn template <typename Char, QStringView::if_compatible_char<Char> = true> QStringView::QStringView(const Char *str, qsizetype len)
Constructs a string view on \a str with length \a len.
@@ -233,7 +195,7 @@ QT_BEGIN_NAMESPACE
*/
/*!
- \fn template <typename Char> QStringView::QStringView(const Char *first, const Char *last)
+ \fn template <typename Char, QStringView::if_compatible_char<Char> = true> QStringView::QStringView(const Char *first, const Char *last)
Constructs a string view on \a first with length (\a last - \a first).
@@ -300,26 +262,26 @@ QT_BEGIN_NAMESPACE
*/
/*!
- \fn template <typename Container, if_compatible_container<Container>> QStringView::QStringView(const Container &str)
+ \fn template <typename Container, QStringView::if_compatible_container<Container>> QStringView::QStringView(const Container &str)
- Constructs a string view on \a str. The length is taken from \c{str.size()}.
+ Constructs a string view on \a str. The length is taken from \c{std::size(str)}.
- \c{str.data()} must remain valid for the lifetime of this string view object.
+ \c{std::data(str)} must remain valid for the lifetime of this string view object.
- This constructor only participates in overload resolution if \c StdBasicString is an
- instantiation of \c std::basic_string with a compatible character type. The
+ This constructor only participates in overload resolution if \c Container is a
+ container with a compatible character type as \c{value_type}. The
compatible character types are: \c QChar, \c ushort, \c char16_t and
(on platforms, such as Windows, where it is a 16-bit type) \c wchar_t.
- The string view will be empty if and only if \c{str.empty()}. It is unspecified
- whether this constructor can result in a null string view (\c{str.data()} would
+ The string view will be empty if and only if \c{std::size(str) == 0}. It is unspecified
+ whether this constructor can result in a null string view (\c{std::data(str)} would
have to return \nullptr for this).
\sa isNull(), isEmpty()
*/
/*!
- \fn template <typename Char, size_t Size> static QStringView QStringView::fromArray(const Char (&string)[Size]) noexcept
+ \fn template <typename Char, size_t Size, QStringView::if_compatible_char<Char> = true> static QStringView QStringView::fromArray(const Char (&string)[Size]) noexcept
Constructs a string view on the full character string literal \a string,
including any trailing \c{Char(0)}. If you don't want the
@@ -343,18 +305,16 @@ QT_BEGIN_NAMESPACE
Returns a deep copy of this string view's data as a QString.
The return value will be the null QString if and only if this string view is null.
-
- \warning QStringView can store strings with more than 2\sup{30} characters
- while QString cannot. Calling this function on a string view for which size()
- returns a value greater than \c{INT_MAX / 2} constitutes undefined behavior.
*/
/*!
\fn const QChar *QStringView::data() const
+//! [const-pointer-to-first-ch]
Returns a const pointer to the first character in the string view.
\note The character array represented by the return value is \e not null-terminated.
+//! [const-pointer-to-first-ch]
\sa begin(), end(), utf16()
*/
@@ -363,9 +323,7 @@ QT_BEGIN_NAMESPACE
\fn const QChar *QStringView::constData() const
\since 6.0
- Returns a const pointer to the first character in the string view.
-
- \note The character array represented by the return value is \e not null-terminated.
+ \include qstringview.cpp const-pointer-to-first-ch
\sa data(), begin(), end(), utf16()
*/
@@ -373,12 +331,10 @@ QT_BEGIN_NAMESPACE
/*!
\fn const storage_type *QStringView::utf16() const
- Returns a const pointer to the first character in the string view.
+ \include qstringview.cpp const-pointer-to-first-ch
\c{storage_type} is \c{char16_t}.
- \note The character array represented by the return value is \e not null-terminated.
-
\sa begin(), end(), data()
*/
@@ -515,7 +471,7 @@ QT_BEGIN_NAMESPACE
/*!
\fn qsizetype QStringView::size() const
- Returns the size of this string view, in UTF-16 code points (that is,
+ Returns the size of this string view, in UTF-16 code units (that is,
surrogate pairs count as two for the purposes of this function, the same
as in QString).
@@ -523,7 +479,7 @@ QT_BEGIN_NAMESPACE
*/
/*!
- \fn int QStringView::length() const
+ \fn QStringView::length() const
Same as size().
@@ -554,7 +510,7 @@ QT_BEGIN_NAMESPACE
/*!
\fn template <typename...Args> QString QStringView::arg(Args &&...args) const
- \fn template <typename...Args> QString QLatin1String::arg(Args &&...args) const
+ \fn template <typename...Args> QString QLatin1StringView::arg(Args &&...args) const
\fn template <typename...Args> QString QString::arg(Args &&...args) const
\since 5.14
@@ -564,7 +520,7 @@ QT_BEGIN_NAMESPACE
second of the \a args the \c{%N} with the next-lowest \c{N} etc.
\c Args can consist of anything that implicitly converts to QString,
- QStringView or QLatin1String.
+ QStringView or QLatin1StringView.
In addition, the following types are also supported: QChar, QLatin1Char.
@@ -578,8 +534,10 @@ QT_BEGIN_NAMESPACE
This function is provided for STL compatibility.
+//! [calling-on-empty-is-UB]
\warning Calling this function on an empty string view constitutes
undefined behavior.
+//! [calling-on-empty-is-UB]
\sa back(), first(), last()
*/
@@ -591,8 +549,7 @@ QT_BEGIN_NAMESPACE
This function is provided for STL compatibility.
- \warning Calling this function on an empty string view constitutes
- undefined behavior.
+ \include qstringview.cpp calling-on-empty-is-UB
\sa front(), first(), last()
*/
@@ -604,8 +561,7 @@ QT_BEGIN_NAMESPACE
This function is provided for compatibility with other Qt containers.
- \warning Calling this function on an empty string view constitutes
- undefined behavior.
+ \include qstringview.cpp calling-on-empty-is-UB
\sa front(), back(), last()
*/
@@ -617,8 +573,7 @@ QT_BEGIN_NAMESPACE
This function is provided for compatibility with other Qt containers.
- \warning Calling this function on an empty string view constitutes
- undefined behavior.
+ \include qstringview.cpp calling-on-empty-is-UB
\sa back(), front(), first()
*/
@@ -699,8 +654,10 @@ QT_BEGIN_NAMESPACE
Returns a string view that points to \a n characters of this string view,
starting at position \a pos.
+//! [UB-sliced-index-length]
\note The behavior is undefined when \a pos < 0, \a n < 0,
or \a pos + \a n > size().
+//! [UB-sliced-index-length]
\sa first(), last(), chopped(), chop(), truncate()
*/
@@ -713,7 +670,9 @@ QT_BEGIN_NAMESPACE
Returns a string view starting at position \a pos in this object,
and extending to its end.
+//! [UB-sliced-index-only]
\note The behavior is undefined when \a pos < 0 or \a pos > size().
+//! [UB-sliced-index-only]
\sa first(), last(), chopped(), chop(), truncate()
*/
@@ -769,37 +728,50 @@ QT_BEGIN_NAMESPACE
\fn int QStringView::compare(QStringView str, Qt::CaseSensitivity cs) const
\since 5.12
- Returns an integer that compares to zero as this string view compares to the
- string view \a str.
+ Compares this string view with string view \a str and returns a negative integer if
+ this string view is less than \a str, a positive integer if it is greater than
+ \a str, and zero if they are equal.
- If \a cs is Qt::CaseSensitive (the default), the comparison is case sensitive;
- otherwise the comparison is case-insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {comparison}
\sa operator==(), operator<(), operator>()
*/
/*!
- \fn int QStringView::compare(QLatin1String l1, Qt::CaseSensitivity cs) const
+ \fn int QStringView::compare(QUtf8StringView str, Qt::CaseSensitivity cs) const
+ \since 6.5
+
+ Compares this string view with QUtf8StringView \a str and returns a negative integer if
+ this string view is less than \a str, a positive integer if it is greater than
+ \a str, and zero if they are equal.
+
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {comparison}
+
+ \sa operator==(), operator<(), operator>()
+*/
+
+/*!
+ \fn int QStringView::compare(QLatin1StringView l1, Qt::CaseSensitivity cs) const
\fn int QStringView::compare(QChar ch) const
\fn int QStringView::compare(QChar ch, Qt::CaseSensitivity cs) const
\since 5.15
- Returns an integer that compares to zero as this string view compares to the
- Latin-1 string \a l1, or character \a ch, respectively.
+ Compares this string view to the Latin-1 string view \a l1, or the character \a ch.
+ Returns a negative integer if this string view is less than \a l1 or \a ch,
+ a positive integer if it is greater than \a l1 or \a ch, and zero if they are equal.
- If \a cs is Qt::CaseSensitive (the default), the comparison is case sensitive;
- otherwise the comparison is case-insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {comparison}
\sa operator==(), operator<(), operator>()
*/
/*!
- \fn QStringView::operator==(QStringView lhs, QStringView rhs)
- \fn QStringView::operator!=(QStringView lhs, QStringView rhs)
- \fn QStringView::operator< (QStringView lhs, QStringView rhs)
- \fn QStringView::operator<=(QStringView lhs, QStringView rhs)
- \fn QStringView::operator> (QStringView lhs, QStringView rhs)
- \fn QStringView::operator>=(QStringView lhs, QStringView rhs)
+ \fn QStringView::operator==(const QStringView &lhs, const QStringView &rhs)
+ \fn QStringView::operator!=(const QStringView &lhs, const QStringView &rhs)
+ \fn QStringView::operator< (const QStringView &lhs, const QStringView &rhs)
+ \fn QStringView::operator<=(const QStringView &lhs, const QStringView &rhs)
+ \fn QStringView::operator> (const QStringView &lhs, const QStringView &rhs)
+ \fn QStringView::operator>=(const QStringView &lhs, const QStringView &rhs)
Operators for comparing \a lhs to \a rhs.
@@ -807,85 +779,106 @@ QT_BEGIN_NAMESPACE
*/
/*!
+ \fn int QStringView::localeAwareCompare(QStringView other) const
+ \since 6.4
+
+ Compares this string view with the \a other string view and returns
+ an integer less than, equal to, or greater than zero if this string
+ view is less than, equal to, or greater than the \a other string view.
+
+ The comparison is performed in a locale- and also platform-dependent
+ manner. Use this function to present sorted lists of strings to the
+ user.
+
+ \sa {Comparing Strings}
+*/
+
+/*
+//! [utf16-or-latin1-or-ch]
+the UTF-16 string viewed by \a str, the Latin-1 string viewed by \a l1,
+or the character \a ch
+//! [utf16-or-latin1-or-ch]
+*/
+
+/*!
\fn bool QStringView::startsWith(QStringView str, Qt::CaseSensitivity cs) const
- \fn bool QStringView::startsWith(QLatin1String l1, Qt::CaseSensitivity cs) const
+ \fn bool QStringView::startsWith(QLatin1StringView l1, Qt::CaseSensitivity cs) const
\fn bool QStringView::startsWith(QChar ch) const
\fn bool QStringView::startsWith(QChar ch, Qt::CaseSensitivity cs) const
- Returns \c true if this string view starts with string view \a str,
- Latin-1 string \a l1, or character \a ch, respectively;
- otherwise returns \c false.
+ Returns \c true if this string view starts with
+ \include qstringview.cpp utf16-or-latin1-or-ch
+ respectively; otherwise returns \c false.
- If \a cs is Qt::CaseSensitive (the default), the search is case-sensitive;
- otherwise the search is case-insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
\sa endsWith()
*/
/*!
\fn bool QStringView::endsWith(QStringView str, Qt::CaseSensitivity cs) const
- \fn bool QStringView::endsWith(QLatin1String l1, Qt::CaseSensitivity cs) const
+ \fn bool QStringView::endsWith(QLatin1StringView l1, Qt::CaseSensitivity cs) const
\fn bool QStringView::endsWith(QChar ch) const
\fn bool QStringView::endsWith(QChar ch, Qt::CaseSensitivity cs) const
- Returns \c true if this string view ends with string view \a str,
- Latin-1 string \a l1, or character \a ch, respectively;
- otherwise returns \c false.
+ Returns \c true if this string view ends with
+ \include qstringview.cpp utf16-or-latin1-or-ch
+ respectively; otherwise returns \c false.
- If \a cs is Qt::CaseSensitive (the default), the search is case-sensitive;
- otherwise the search is case-insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
\sa startsWith()
*/
/*!
\fn qsizetype QStringView::indexOf(QStringView str, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
- \fn qsizetype QStringView::indexOf(QLatin1String l1, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
+ \fn qsizetype QStringView::indexOf(QLatin1StringView l1, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
\fn qsizetype QStringView::indexOf(QChar c, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
\since 5.14
- Returns the index position of the first occurrence of the string view \a str,
- Latin-1 string \a l1, or character \a ch, respectively, in this string view,
- searching forward from index position \a from. Returns -1 if \a str is not found.
+ Returns the index position of the first occurrence of
+ \include qstringview.cpp utf16-or-latin1-or-ch
+ respectively, in this string view, searching forward from index position
+ \a from. Returns -1 if \a str, \a l1 or \a ch is not found, respectively.
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
- If \a from is -1, the search starts at the last character; if it is
- -2, at the next to last character and so on.
+ \include qstring.qdocinc negative-index-start-search-from-end
\sa QString::indexOf()
*/
/*!
\fn bool QStringView::contains(QStringView str, Qt::CaseSensitivity cs) const
- \fn bool QStringView::contains(QLatin1String l1, Qt::CaseSensitivity cs) const
+ \fn bool QStringView::contains(QLatin1StringView l1, Qt::CaseSensitivity cs) const
\fn bool QStringView::contains(QChar c, Qt::CaseSensitivity cs) const
\since 5.14
- Returns \c true if this string view contains an occurrence of the string view
- \a str, Latin-1 string \a l1, or character \a ch; otherwise returns \c false.
+ Returns \c true if this string view contains an occurrence of
+ \include qstringview.cpp utf16-or-latin1-or-ch
+ respectively; otherwise returns \c false.
- If \a cs is Qt::CaseSensitive (the default), the search is
- case-sensitive; otherwise the search is case-insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
\sa indexOf()
*/
/*!
\fn qsizetype QStringView::lastIndexOf(QStringView str, qsizetype from, Qt::CaseSensitivity cs) const
- \fn qsizetype QStringView::lastIndexOf(QLatin1String l1, qsizetype from, Qt::CaseSensitivity cs) const
+ \fn qsizetype QStringView::lastIndexOf(QLatin1StringView l1, qsizetype from, Qt::CaseSensitivity cs) const
\fn qsizetype QStringView::lastIndexOf(QChar c, qsizetype from, Qt::CaseSensitivity cs) const
\since 5.14
- Returns the index position of the last occurrence of the string view \a str,
- Latin-1 string \a l1, or character \a ch, respectively, in this string view,
- searching backward from index position \a from. If \a from is -1,
- the search starts at the last character; if \a from is -2, at the next to last
- character and so on. Returns -1 if \a str is not found.
+ Returns the index position of the last occurrence of
+ \include qstringview.cpp utf16-or-latin1-or-ch
+ respectively, in this string view, searching backward from index
+ position \a from.
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc negative-index-start-search-from-end
+
+ Returns -1 if \a str, \a l1 or \a c is not found, respectively.
+
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
\note When searching for a 0-length \a str or \a l1, the match at
the end of the data is excluded from the search by a negative \a
@@ -900,17 +893,16 @@ QT_BEGIN_NAMESPACE
/*!
\fn qsizetype QStringView::lastIndexOf(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
- \fn qsizetype QStringView::lastIndexOf(QLatin1String l1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
+ \fn qsizetype QStringView::lastIndexOf(QLatin1StringView l1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
\since 6.2
\overload lastIndexOf()
- Returns the index position of the last occurrence of the string view \a str
- or Latin-1 string \a l1, respectively, in this string view,
- searching backward from the last character of this string view.
- Returns -1 if \a str is not found.
+ Returns the index position of the last occurrence of the UTF-16 string viewed
+ by \a str or the Latin-1 string viewed by \a l1 respectively, in this string
+ view searching backward from the last character of this string view. Returns
+ -1 if \a str or \a l1 is not found, respectively.
- If \a cs is Qt::CaseSensitive (default), the search is case
- sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
\sa QString::lastIndexOf()
*/
@@ -945,9 +937,11 @@ QT_BEGIN_NAMESPACE
Returns the index position of the last match of the regular
expression \a re in the string view, which starts before the index
- position \a from. If \a from is -1, the search starts at the last
- character; if \a from is -2, at the next to last character and so
- on. Returns -1 if \a re didn't match anywhere.
+ position \a from.
+
+ \include qstring.qdocinc negative-index-start-search-from-end
+
+ Returns -1 if \a re didn't match anywhere.
If the match is successful and \a rmatch is not \nullptr, it also
writes the results of the match into the QRegularExpressionMatch object
@@ -1103,6 +1097,32 @@ QT_BEGIN_NAMESPACE
*/
/*!
+ \fn bool QStringView::isLower() const
+ \since 6.7
+ Returns \c true if this view is identical to its lowercase folding.
+
+ Note that this does \e not mean that the string view does not contain
+ uppercase letters (some uppercase letters do not have a lowercase
+ folding; they are left unchanged by toString().toLower()).
+ For more information, refer to the Unicode standard, section 3.13.
+
+ \sa QChar::toLower(), isUpper()
+*/
+
+/*!
+ \fn bool QStringView::isUpper() const
+ \since 6.7
+ Returns \c true if this view is identical to its uppercase folding.
+
+ Note that this does \e not mean that the the string view does not contain
+ lowercase letters (some lowercase letters do not have a uppercase
+ folding; they are left unchanged by toString().toUpper()).
+ For more information, refer to the Unicode standard, section 3.13.
+
+ \sa QChar::toUpper(), isLower()
+*/
+
+/*!
\fn QStringView::toWCharArray(wchar_t *array) const
\since 5.14
@@ -1131,8 +1151,7 @@ QT_BEGIN_NAMESPACE
Returns the number of occurrences of the character \a ch in the
string view.
- If \a cs is Qt::CaseSensitive (default), the search is
- case sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
\sa QString::count(), contains(), indexOf()
*/
@@ -1146,8 +1165,21 @@ QT_BEGIN_NAMESPACE
Returns the number of (potentially overlapping) occurrences of the
string view \a str in this string view.
- If \a cs is Qt::CaseSensitive (default), the search is
- case sensitive; otherwise the search is case insensitive.
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
+
+ \sa QString::count(), contains(), indexOf()
+*/
+
+/*!
+ \fn qsizetype QStringView::count(QLatin1StringView l1, Qt::CaseSensitivity cs) const noexcept
+
+ \since 6.4
+ \overload count()
+
+ Returns the number of (potentially overlapping) occurrences of the
+ Latin-1 string viewed by \a l1 in this string view.
+
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {search}
\sa QString::count(), contains(), indexOf()
*/
@@ -1373,7 +1405,7 @@ QT_BEGIN_NAMESPACE
/*!
\fn template <typename Needle, typename...Flags> auto QStringView::tokenize(Needle &&sep, Flags...flags) const
- \fn template <typename Needle, typename...Flags> auto QLatin1String::tokenize(Needle &&sep, Flags...flags) const
+ \fn template <typename Needle, typename...Flags> auto QLatin1StringView::tokenize(Needle &&sep, Flags...flags) const
\fn template <typename Needle, typename...Flags> auto QString::tokenize(Needle &&sep, Flags...flags) const &
\fn template <typename Needle, typename...Flags> auto QString::tokenize(Needle &&sep, Flags...flags) const &&
\fn template <typename Needle, typename...Flags> auto QString::tokenize(Needle &&sep, Flags...flags) &&
@@ -1412,4 +1444,13 @@ QT_BEGIN_NAMESPACE
\sa QStringTokenizer, qTokenize()
*/
+/*!
+ \fn QStringView::operator std::u16string_view() const
+ \since 6.7
+
+ Converts this QStringView object to a \c{std::u16string_view} object.
+ The returned view will have the same data pointer and length of
+ this view.
+*/
+
QT_END_NAMESPACE
diff --git a/src/corelib/text/qstringview.h b/src/corelib/text/qstringview.h
index 5d05dd6edd..ab97d834d3 100644
--- a/src/corelib/text/qstringview.h
+++ b/src/corelib/text/qstringview.h
@@ -1,65 +1,18 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
-** Copyright (C) 2019 Mail.ru Group.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
+// Copyright (C) 2019 Mail.ru Group.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QSTRINGVIEW_H
#define QSTRINGVIEW_H
-/*
- This macro enables three "levels" of QStringView support:
-
- 1. offer QStringView, overload some functions taking QString with
- QStringView
-
- 2. Obsolete: QStringRef and its overloads have been removed.
-
- 3. like 2, but replace functions taking QString, too.
-*/
-#ifndef QT_STRINGVIEW_LEVEL
-# define QT_STRINGVIEW_LEVEL 1
-#endif
-
#include <QtCore/qchar.h>
+#include <QtCore/qcompare.h>
#include <QtCore/qbytearray.h>
#include <QtCore/qstringliteral.h>
#include <QtCore/qstringalgorithms.h>
#include <string>
+#include <string_view>
+#include <QtCore/q20type_traits.h>
#if defined(Q_OS_DARWIN) || defined(Q_QDOC)
Q_FORWARD_DECLARE_CF_TYPE(CFString);
@@ -72,6 +25,9 @@ class QString;
class QStringView;
class QRegularExpression;
class QRegularExpressionMatch;
+#ifdef Q_QDOC
+class QUtf8StringView;
+#endif
namespace QtPrivate {
template <typename Char>
@@ -83,7 +39,7 @@ struct IsCompatibleCharTypeHelper
(std::is_same<Char, wchar_t>::value && sizeof(wchar_t) == sizeof(QChar))> {};
template <typename Char>
struct IsCompatibleCharType
- : IsCompatibleCharTypeHelper<typename std::remove_cv<typename std::remove_reference<Char>::type>::type> {};
+ : IsCompatibleCharTypeHelper<q20::remove_cvref_t<Char>> {};
template <typename Pointer>
struct IsCompatiblePointerHelper : std::false_type {};
@@ -92,7 +48,7 @@ struct IsCompatiblePointerHelper<Char*>
: IsCompatibleCharType<Char> {};
template <typename Pointer>
struct IsCompatiblePointer
- : IsCompatiblePointerHelper<typename std::remove_cv<typename std::remove_reference<Pointer>::type>::type> {};
+ : IsCompatiblePointerHelper<q20::remove_cvref_t<Pointer>> {};
template <typename T, typename Enable = void>
struct IsContainerCompatibleWithQStringView : std::false_type {};
@@ -149,15 +105,10 @@ private:
using if_compatible_container = typename std::enable_if<QtPrivate::IsContainerCompatibleWithQStringView<T>::value, bool>::type;
template <typename Char>
- static qsizetype lengthHelperPointer(const Char *str) noexcept
+ static constexpr qsizetype lengthHelperPointer(const Char *str) noexcept
{
-#if defined(__cpp_lib_is_constant_evaluated)
- if (std::is_constant_evaluated())
- return std::char_traits<Char>::length(str);
-#elif defined(Q_CC_GNU) && !defined(Q_CC_CLANG) && !defined(Q_CC_INTEL)
- if (__builtin_constant_p(*str))
+ if (q20::is_constant_evaluated())
return std::char_traits<Char>::length(str);
-#endif
return QtPrivate::qustrlen(reinterpret_cast<const char16_t *>(str));
}
static qsizetype lengthHelperPointer(const QChar *str) noexcept
@@ -165,20 +116,6 @@ private:
return QtPrivate::qustrlen(reinterpret_cast<const char16_t *>(str));
}
- template <typename Container>
- static constexpr qsizetype lengthHelperContainer(const Container &c) noexcept
- {
- return qsizetype(std::size(c));
- }
-
- template <typename Char, size_t N>
- static constexpr qsizetype lengthHelperContainer(const Char (&str)[N]) noexcept
- {
- const auto it = std::char_traits<Char>::find(str, N, Char(0));
- const auto end = it ? it : std::end(str);
- return qsizetype(std::distance(str, end));
- }
-
template <typename Char>
static const storage_type *castHelper(const Char *str) noexcept
{ return reinterpret_cast<const storage_type*>(str); }
@@ -186,21 +123,26 @@ private:
{ return str; }
public:
- constexpr QStringView() noexcept
- : m_size(0), m_data(nullptr) {}
+ constexpr QStringView() noexcept {}
constexpr QStringView(std::nullptr_t) noexcept
: QStringView() {}
template <typename Char, if_compatible_char<Char> = true>
constexpr QStringView(const Char *str, qsizetype len)
+#if QT_VERSION >= QT_VERSION_CHECK(7, 0, 0) || defined(QT_BOOTSTRAPPED)
+ : m_data(castHelper(str)),
+ m_size((Q_ASSERT(len >= 0), Q_ASSERT(str || !len), len))
+#else
: m_size((Q_ASSERT(len >= 0), Q_ASSERT(str || !len), len)),
- m_data(castHelper(str)) {}
+ m_data(castHelper(str))
+#endif
+ {}
template <typename Char, if_compatible_char<Char> = true>
constexpr QStringView(const Char *f, const Char *l)
: QStringView(f, l - f) {}
-#ifdef Q_CLANG_QDOC
+#ifdef Q_QDOC
template <typename Char, size_t N>
constexpr QStringView(const Char (&array)[N]) noexcept;
@@ -213,7 +155,7 @@ public:
: QStringView(str, str ? lengthHelperPointer(str) : 0) {}
#endif
-#ifdef Q_CLANG_QDOC
+#ifdef Q_QDOC
QStringView(const QString &str) noexcept;
#else
template <typename String, if_compatible_qstring_like<String> = true>
@@ -222,8 +164,8 @@ public:
#endif
template <typename Container, if_compatible_container<Container> = true>
- constexpr QStringView(const Container &c) noexcept
- : QStringView(std::data(c), lengthHelperContainer(c)) {}
+ constexpr Q_ALWAYS_INLINE QStringView(const Container &c) noexcept
+ : QStringView(std::data(c), QtPrivate::lengthHelperContainer(c)) {}
template <typename Char, size_t Size, if_compatible_char<Char> = true>
[[nodiscard]] constexpr static QStringView fromArray(const Char (&string)[Size]) noexcept
@@ -242,7 +184,7 @@ public:
[[nodiscard]] constexpr const storage_type *utf16() const noexcept { return m_data; }
[[nodiscard]] constexpr QChar operator[](qsizetype n) const
- { return Q_ASSERT(n >= 0), Q_ASSERT(n < size()), QChar(m_data[n]); }
+ { verify(n, 1); return QChar(m_data[n]); }
//
// QString API
@@ -278,20 +220,20 @@ public:
}
[[nodiscard]] constexpr QStringView first(qsizetype n) const noexcept
- { Q_ASSERT(n >= 0); Q_ASSERT(n <= size()); return QStringView(m_data, n); }
+ { verify(0, n); return sliced(0, n); }
[[nodiscard]] constexpr QStringView last(qsizetype n) const noexcept
- { Q_ASSERT(n >= 0); Q_ASSERT(n <= size()); return QStringView(m_data + size() - n, n); }
+ { verify(0, n); return sliced(size() - n, n); }
[[nodiscard]] constexpr QStringView sliced(qsizetype pos) const noexcept
- { Q_ASSERT(pos >= 0); Q_ASSERT(pos <= size()); return QStringView(m_data + pos, size() - pos); }
+ { verify(pos, 0); return QStringView(m_data + pos, size() - pos); }
[[nodiscard]] constexpr QStringView sliced(qsizetype pos, qsizetype n) const noexcept
- { Q_ASSERT(pos >= 0); Q_ASSERT(n >= 0); Q_ASSERT(size_t(pos) + size_t(n) <= size_t(size())); return QStringView(m_data + pos, n); }
+ { verify(pos, n); return QStringView(m_data + pos, n); }
[[nodiscard]] constexpr QStringView chopped(qsizetype n) const noexcept
- { return Q_ASSERT(n >= 0), Q_ASSERT(n <= size()), QStringView(m_data, m_size - n); }
+ { verify(0, n); return sliced(0, m_size - n); }
constexpr void truncate(qsizetype n) noexcept
- { Q_ASSERT(n >= 0); Q_ASSERT(n <= size()); m_size = n; }
+ { verify(0, n); ; m_size = n; }
constexpr void chop(qsizetype n) noexcept
- { Q_ASSERT(n >= 0); Q_ASSERT(n <= size()); m_size -= n; }
+ { verify(0, n); m_size -= n; }
[[nodiscard]] QStringView trimmed() const noexcept { return QtPrivate::trimmed(*this); }
@@ -303,15 +245,18 @@ public:
[[nodiscard]] int compare(QStringView other, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
{ return QtPrivate::compareStrings(*this, other, cs); }
- [[nodiscard]] inline int compare(QLatin1String other, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
+ [[nodiscard]] inline int compare(QLatin1StringView other, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
+ [[nodiscard]] inline int compare(QUtf8StringView other, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
[[nodiscard]] constexpr int compare(QChar c) const noexcept
{ return size() >= 1 ? compare_single_char_helper(*utf16() - c.unicode()) : -1; }
[[nodiscard]] int compare(QChar c, Qt::CaseSensitivity cs) const noexcept
{ return QtPrivate::compareStrings(*this, QStringView(&c, 1), cs); }
+ [[nodiscard]] inline int localeAwareCompare(QStringView other) const;
+
[[nodiscard]] bool startsWith(QStringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
{ return QtPrivate::startsWith(*this, s, cs); }
- [[nodiscard]] inline bool startsWith(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
+ [[nodiscard]] inline bool startsWith(QLatin1StringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
[[nodiscard]] bool startsWith(QChar c) const noexcept
{ return !empty() && front() == c; }
[[nodiscard]] bool startsWith(QChar c, Qt::CaseSensitivity cs) const noexcept
@@ -319,39 +264,40 @@ public:
[[nodiscard]] bool endsWith(QStringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
{ return QtPrivate::endsWith(*this, s, cs); }
- [[nodiscard]] inline bool endsWith(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
+ [[nodiscard]] inline bool endsWith(QLatin1StringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
[[nodiscard]] bool endsWith(QChar c) const noexcept
{ return !empty() && back() == c; }
[[nodiscard]] bool endsWith(QChar c, Qt::CaseSensitivity cs) const noexcept
{ return QtPrivate::endsWith(*this, QStringView(&c, 1), cs); }
[[nodiscard]] qsizetype indexOf(QChar c, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
- { return QtPrivate::findString(*this, from, QStringView(&c, 1), cs); }
+ { return QtPrivate::findString(*this, from, c.unicode(), cs); }
[[nodiscard]] qsizetype indexOf(QStringView s, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
{ return QtPrivate::findString(*this, from, s, cs); }
- [[nodiscard]] inline qsizetype indexOf(QLatin1String s, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
+ [[nodiscard]] inline qsizetype indexOf(QLatin1StringView s, qsizetype from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
[[nodiscard]] bool contains(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
{ return indexOf(QStringView(&c, 1), 0, cs) != qsizetype(-1); }
[[nodiscard]] bool contains(QStringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
{ return indexOf(s, 0, cs) != qsizetype(-1); }
- [[nodiscard]] inline bool contains(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
+ [[nodiscard]] inline bool contains(QLatin1StringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
[[nodiscard]] qsizetype count(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
{ return QtPrivate::count(*this, c, cs); }
[[nodiscard]] qsizetype count(QStringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
{ return QtPrivate::count(*this, s, cs); }
+ [[nodiscard]] inline qsizetype count(QLatin1StringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
[[nodiscard]] qsizetype lastIndexOf(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
{ return lastIndexOf(c, -1, cs); }
[[nodiscard]] qsizetype lastIndexOf(QChar c, qsizetype from, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
- { return QtPrivate::lastIndexOf(*this, from, QStringView(&c, 1), cs); }
+ { return QtPrivate::lastIndexOf(*this, from, c.unicode(), cs); }
[[nodiscard]] qsizetype lastIndexOf(QStringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
{ return lastIndexOf(s, size(), cs); }
[[nodiscard]] qsizetype lastIndexOf(QStringView s, qsizetype from, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
{ return QtPrivate::lastIndexOf(*this, from, s, cs); }
- [[nodiscard]] inline qsizetype lastIndexOf(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
- [[nodiscard]] inline qsizetype lastIndexOf(QLatin1String s, qsizetype from, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
+ [[nodiscard]] inline qsizetype lastIndexOf(QLatin1StringView s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
+ [[nodiscard]] inline qsizetype lastIndexOf(QLatin1StringView s, qsizetype from, Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
#if QT_CONFIG(regularexpression)
[[nodiscard]] qsizetype indexOf(const QRegularExpression &re, qsizetype from = 0, QRegularExpressionMatch *rmatch = nullptr) const
@@ -387,6 +333,11 @@ public:
[[nodiscard]] bool isValidUtf16() const noexcept
{ return QtPrivate::isValidUtf16(*this); }
+ [[nodiscard]] bool isUpper() const noexcept
+ { return QtPrivate::isUpper(*this); }
+ [[nodiscard]] bool isLower() const noexcept
+ { return QtPrivate::isLower(*this); }
+
[[nodiscard]] inline short toShort(bool *ok = nullptr, int base = 10) const;
[[nodiscard]] inline ushort toUShort(bool *ok = nullptr, int base = 10) const;
[[nodiscard]] inline int toInt(bool *ok = nullptr, int base = 10) const;
@@ -416,27 +367,22 @@ public:
#endif
// QStringView <> QStringView
- friend bool operator==(QStringView lhs, QStringView rhs) noexcept { return lhs.size() == rhs.size() && QtPrivate::equalStrings(lhs, rhs); }
- friend bool operator!=(QStringView lhs, QStringView rhs) noexcept { return !(lhs == rhs); }
- friend bool operator< (QStringView lhs, QStringView rhs) noexcept { return QtPrivate::compareStrings(lhs, rhs) < 0; }
- friend bool operator<=(QStringView lhs, QStringView rhs) noexcept { return QtPrivate::compareStrings(lhs, rhs) <= 0; }
- friend bool operator> (QStringView lhs, QStringView rhs) noexcept { return QtPrivate::compareStrings(lhs, rhs) > 0; }
- friend bool operator>=(QStringView lhs, QStringView rhs) noexcept { return QtPrivate::compareStrings(lhs, rhs) >= 0; }
+ friend bool comparesEqual(const QStringView &lhs, const QStringView &rhs) noexcept
+ { return lhs.size() == rhs.size() && QtPrivate::equalStrings(lhs, rhs); }
+ friend Qt::strong_ordering
+ compareThreeWay(const QStringView &lhs, const QStringView &rhs) noexcept
+ {
+ const int res = QtPrivate::compareStrings(lhs, rhs);
+ return Qt::compareThreeWay(res, 0);
+ }
+ Q_DECLARE_STRONGLY_ORDERED(QStringView)
// QStringView <> QChar
- friend bool operator==(QStringView lhs, QChar rhs) noexcept { return lhs == QStringView(&rhs, 1); }
- friend bool operator!=(QStringView lhs, QChar rhs) noexcept { return lhs != QStringView(&rhs, 1); }
- friend bool operator< (QStringView lhs, QChar rhs) noexcept { return lhs < QStringView(&rhs, 1); }
- friend bool operator<=(QStringView lhs, QChar rhs) noexcept { return lhs <= QStringView(&rhs, 1); }
- friend bool operator> (QStringView lhs, QChar rhs) noexcept { return lhs > QStringView(&rhs, 1); }
- friend bool operator>=(QStringView lhs, QChar rhs) noexcept { return lhs >= QStringView(&rhs, 1); }
-
- friend bool operator==(QChar lhs, QStringView rhs) noexcept { return QStringView(&lhs, 1) == rhs; }
- friend bool operator!=(QChar lhs, QStringView rhs) noexcept { return QStringView(&lhs, 1) != rhs; }
- friend bool operator< (QChar lhs, QStringView rhs) noexcept { return QStringView(&lhs, 1) < rhs; }
- friend bool operator<=(QChar lhs, QStringView rhs) noexcept { return QStringView(&lhs, 1) <= rhs; }
- friend bool operator> (QChar lhs, QStringView rhs) noexcept { return QStringView(&lhs, 1) > rhs; }
- friend bool operator>=(QChar lhs, QStringView rhs) noexcept { return QStringView(&lhs, 1) >= rhs; }
+ friend bool comparesEqual(const QStringView &lhs, QChar rhs) noexcept
+ { return lhs.size() == 1 && lhs[0] == rhs; }
+ friend Qt::strong_ordering compareThreeWay(const QStringView &lhs, QChar rhs) noexcept
+ { return compareThreeWay(lhs, QStringView(&rhs, 1)); }
+ Q_DECLARE_STRONGLY_ORDERED(QStringView, QChar)
//
// STL compatibility API:
@@ -454,6 +400,9 @@ public:
[[nodiscard]] constexpr QChar front() const { return Q_ASSERT(!empty()), QChar(m_data[0]); }
[[nodiscard]] constexpr QChar back() const { return Q_ASSERT(!empty()), QChar(m_data[m_size - 1]); }
+ [[nodiscard]] Q_IMPLICIT operator std::u16string_view() const noexcept
+ { return std::u16string_view(m_data, size_t(m_size)); }
+
//
// Qt compatibility API:
//
@@ -466,11 +415,42 @@ public:
[[nodiscard]] constexpr QChar first() const { return front(); }
[[nodiscard]] constexpr QChar last() const { return back(); }
private:
- qsizetype m_size;
- const storage_type *m_data;
+#if QT_VERSION >= QT_VERSION_CHECK(7, 0, 0) || defined(QT_BOOTSTRAPPED)
+ const storage_type *m_data = nullptr;
+ qsizetype m_size = 0;
+#else
+ qsizetype m_size = 0;
+ const storage_type *m_data = nullptr;
+#endif
+
+ Q_ALWAYS_INLINE constexpr void verify([[maybe_unused]] qsizetype pos = 0,
+ [[maybe_unused]] qsizetype n = 1) const
+ {
+ Q_ASSERT(pos >= 0);
+ Q_ASSERT(pos <= size());
+ Q_ASSERT(n >= 0);
+ Q_ASSERT(n <= size() - pos);
+ }
constexpr int compare_single_char_helper(int diff) const noexcept
{ return diff ? diff : size() > 1 ? 1 : 0; }
+
+ Q_CORE_EXPORT static bool equal_helper(QStringView sv, const char *data, qsizetype len);
+ Q_CORE_EXPORT static int compare_helper(QStringView sv, const char *data, qsizetype len);
+
+#if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
+ friend bool comparesEqual(const QStringView &lhs, const QByteArrayView &rhs) noexcept
+ { return equal_helper(lhs, rhs.data(), rhs.size()); }
+ friend Qt::strong_ordering
+ compareThreeWay(const QStringView &lhs, const QByteArrayView &rhs) noexcept
+ {
+ const int res = compare_helper(lhs, rhs.data(), rhs.size());
+ return Qt::compareThreeWay(res, 0);
+ }
+ Q_DECLARE_STRONGLY_ORDERED(QStringView, QByteArrayView, QT_ASCII_CAST_WARN)
+ Q_DECLARE_STRONGLY_ORDERED(QStringView, QByteArray, QT_ASCII_CAST_WARN)
+ Q_DECLARE_STRONGLY_ORDERED(QStringView, const char *, QT_ASCII_CAST_WARN)
+#endif // !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
};
Q_DECLARE_TYPEINFO(QStringView, Q_PRIMITIVE_TYPE);
@@ -478,7 +458,7 @@ template <typename QStringLike, typename std::enable_if<
std::is_same<QStringLike, QString>::value,
bool>::type = true>
inline QStringView qToStringViewIgnoringNull(const QStringLike &s) noexcept
-{ return QStringView(s.data(), s.size()); }
+{ return QStringView(s.begin(), s.size()); }
// QChar inline functions:
@@ -496,6 +476,27 @@ inline QStringView qToStringViewIgnoringNull(const QStringLike &s) noexcept
R{{char16_t(c), u'\0'}} ;
}
+qsizetype QtPrivate::findString(QStringView str, qsizetype from, QChar ch, Qt::CaseSensitivity cs) noexcept
+{
+ if (from < -str.size()) // from < 0 && abs(from) > str.size(), avoiding overflow
+ return -1;
+ if (from < 0)
+ from = qMax(from + str.size(), qsizetype(0));
+ if (from < str.size()) {
+ const char16_t *s = str.utf16();
+ char16_t c = ch.unicode();
+ const char16_t *n = s + from;
+ const char16_t *e = s + str.size();
+ if (cs == Qt::CaseSensitive)
+ n = qustrchr(QStringView(n, e), c);
+ else
+ n = qustrcasechr(QStringView(n, e), c);
+ if (n != e)
+ return n - s;
+ }
+ return -1;
+}
+
QT_END_NAMESPACE
#endif /* QSTRINGVIEW_H */
diff --git a/src/corelib/text/qt_attribution.json b/src/corelib/text/qt_attribution.json
index 7e36e624cb..6235ec5c16 100644
--- a/src/corelib/text/qt_attribution.json
+++ b/src/corelib/text/qt_attribution.json
@@ -4,37 +4,41 @@
"Name": "Unicode Character Database (UCD)",
"QDocModule": "qtcore",
"QtUsage": "Qt Core uses data obtained from UCD files for working with characters and strings.",
- "Files": "For update, see qtbase/util/unicode/README",
- "Files": "qunicodetables_p.h qunicodetables.cpp",
+ "Comment": { "Files": "For update, see qtbase/util/unicode/README" },
+ "Files": [ "qunicodetables_p.h", "qunicodetables.cpp" ],
"Description": "The Unicode Character Database (UCD) is a set of files that
define the Unicode character properties and internal mappings.",
"Homepage": "https://www.unicode.org/ucd/",
- "Version": "Don't use the Unicode standard version;
- UCD has its own 'Revision' numbers, see the 'UAX #44, UCD' page (https://www.unicode.org/reports/tr44/)",
- "Version": "28",
+ "Comment": {
+ "Version": [ "Don't use the Unicode standard version;",
+ "UCD has its own 'Revision' numbers",
+ "see the 'UAX #44, UCD' page (https://www.unicode.org/reports/tr44/)" ],
+ "License": [ "Will change to Unicode-3.0 on next update",
+ "util/unicode/main.cpp is updated to do that already",
+ "Please update the following and delete this note when that happens" ] },
+ "Version": "30",
"License": "Unicode License Agreement - Data Files and Software (2016)",
"LicenseId": "Unicode-DFS-2016",
- "LicenseFile": "UNICODE_LICENSE.txt",
- "Copyright": "Copyright (C) 1991-2021 Unicode, Inc."
+ "Copyright": "Copyright (C) 1991-2022 Unicode, Inc."
},
{
"Id": "unicode-cldr",
"Name": "Unicode Common Locale Data Repository (CLDR)",
"QDocModule": "qtcore",
"QtUsage": "Used in Qt Core (QTimeZone, QLocale).",
- "Files": "For update, see qtbase/util/locale_database/cldr2qlocalexml.py",
- "Files": "qlocale_data_p.h qtimezoneprivate_data_p.h",
+ "Comment": { "Files": "For update, see qtbase/util/locale_database/cldr2qlocalexml.py" },
+ "Files": [ "qlocale_data_p.h",
+ "../time/qtimezoneprivate_data_p.h", "../time/qhijricalendar_data_p.h",
+ "../time/qjalalicalendar_data_p.h", "../time/qromancalendar_data_p.h" ],
"Description": "The Unicode CLDR provides key building blocks for software to support the
world's languages, with the largest and most extensive standard repository of locale data
available.",
"Homepage": "https://cldr.unicode.org/",
- "Version": "v40",
- "License": "// as specified in https://spdx.org/licenses/Unicode-DFS-2016.html",
- "License": "Unicode License Agreement - Data Files and Software (2016)",
- "LicenseId": "Unicode-DFS-2016",
- "LicenseFile": "UNICODE_LICENSE.txt",
- "Copyright": "Copyright (C) 1991-2021 Unicode, Inc."
+ "Version": "v44.1",
+ "License": "Unicode License v3",
+ "LicenseId": "Unicode-3.0",
+ "Copyright": "Copyright (C) 2004-2023 Unicode, Inc."
}
]
diff --git a/src/corelib/text/qtextboundaryfinder.cpp b/src/corelib/text/qtextboundaryfinder.cpp
index 0ac2cec3ff..21d4c5153e 100644
--- a/src/corelib/text/qtextboundaryfinder.cpp
+++ b/src/corelib/text/qtextboundaryfinder.cpp
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include <QtCore/qtextboundaryfinder.h>
#include <QtCore/qvarlengtharray.h>
@@ -56,7 +20,7 @@ static void init(QTextBoundaryFinder::BoundaryType type, QStringView str, QCharA
case QTextBoundaryFinder::Line: options |= QUnicodeTools::LineBreaks; break;
default: break;
}
- QUnicodeTools::initCharAttributes(str, scriptItems.data(), scriptItems.count(), attributes, options);
+ QUnicodeTools::initCharAttributes(str, scriptItems.data(), scriptItems.size(), attributes, options);
}
/*!
@@ -123,11 +87,11 @@ static void init(QTextBoundaryFinder::BoundaryType type, QStringView str, QCharA
Such a break opportunity might also be an item boundary
(either StartOfItem, EndOfItem, or combination of both),
a mandatory line break, or a soft hyphen.
- \value StartOfItem Since 5.0. The boundary finder is at the start of
+ \value [since 5.0] StartOfItem The boundary finder is at the start of
a grapheme, a word, a sentence, or a line.
- \value EndOfItem Since 5.0. The boundary finder is at the end of
+ \value [since 5.0] EndOfItem The boundary finder is at the end of
a grapheme, a word, a sentence, or a line.
- \value MandatoryBreak Since 5.0. The boundary finder is at the end of line
+ \value [since 5.0] MandatoryBreak The boundary finder is at the end of line
(can occur for a Line boundary type only).
\value SoftHyphen The boundary finder is at the soft hyphen
(can occur for a Line boundary type only).
@@ -209,9 +173,7 @@ QTextBoundaryFinder::QTextBoundaryFinder(BoundaryType type, const QString &strin
: t(type)
, s(string)
, sv(s)
- , pos(0)
, freeBuffer(true)
- , attributes(nullptr)
{
if (sv.size() > 0) {
attributes = (QCharAttributes *) malloc((sv.size() + 1) * sizeof(QCharAttributes));
@@ -244,12 +206,10 @@ QTextBoundaryFinder::QTextBoundaryFinder(BoundaryType type, const QString &strin
QTextBoundaryFinder::QTextBoundaryFinder(BoundaryType type, QStringView string, unsigned char *buffer, qsizetype bufferSize)
: t(type)
, sv(string)
- , pos(0)
, freeBuffer(true)
- , attributes(nullptr)
{
if (!sv.isEmpty()) {
- if (buffer && (uint)bufferSize >= (sv.size() + 1) * sizeof(QCharAttributes)) {
+ if (buffer && bufferSize / int(sizeof(QCharAttributes)) >= sv.size() + 1) {
attributes = reinterpret_cast<QCharAttributes *>(buffer);
freeBuffer = false;
} else {
diff --git a/src/corelib/text/qtextboundaryfinder.h b/src/corelib/text/qtextboundaryfinder.h
index 0b1c910728..04e64fd69b 100644
--- a/src/corelib/text/qtextboundaryfinder.h
+++ b/src/corelib/text/qtextboundaryfinder.h
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QTEXTBOUNDARYFINDER_H
#define QTEXTBOUNDARYFINDER_H
@@ -99,7 +63,7 @@ private:
BoundaryType t = Grapheme;
QString s;
QStringView sv;
- qsizetype pos;
+ qsizetype pos = 0;
uint freeBuffer : 1;
uint unused : 31;
QCharAttributes *attributes = nullptr;
diff --git a/src/corelib/text/qtliterals.qdoc b/src/corelib/text/qtliterals.qdoc
index d5875c3e08..d108aeb615 100644
--- a/src/corelib/text/qtliterals.qdoc
+++ b/src/corelib/text/qtliterals.qdoc
@@ -1,29 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\namespace QtLiterals
@@ -31,3 +7,38 @@
\brief The QtLiterals namespace declares literal operators for Qt types.
*/
+
+/*!
+ \namespace Qt::Literals
+ \inmodule QtCore
+ \inheaderfile QString
+
+ \brief The Literals inline namespace declares literal operators for Qt types.
+*/
+
+/*!
+ \namespace Qt::Literals::StringLiterals
+ \inmodule QtCore
+ \inheaderfile QString
+
+ \brief The StringLiterals namespace declares string literal operators
+ for Qt types.
+
+ The inline Qt::Literals::StringLiterals namespace declares string literal
+ operators for Qt types. Because both \c Literals and \c StringLiterals
+ namespaces are declared as inline, the symbols from this namespace can be
+ accessed by adding one of the following to your code:
+
+ \code
+ // Makes visible only the literal operators declared in StringLiterals
+ using namespace Qt::Literals::StringLiterals;
+
+ // Makes visible literal operators declared in all inline namespaces
+ // inside Literals
+ using namespace Qt::Literals;
+
+ // Makes visible all symbols (including all literal operators) declared
+ // in the Qt namespace
+ using namespace Qt;
+ \endcode
+*/
diff --git a/src/corelib/text/qunicodetables.cpp b/src/corelib/text/qunicodetables.cpp
index 34367cdb15..dc93b99668 100644
--- a/src/corelib/text/qunicodetables.cpp
+++ b/src/corelib/text/qunicodetables.cpp
@@ -1,43 +1,7 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/* This file is autogenerated from the Unicode 14.0 database. Do not edit */
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: Unicode-DFS-2016
+
+/* This file is autogenerated from the Unicode 15.1 database. Do not edit */
#include "qunicodetables_p.h"
@@ -45,7 +9,7 @@ QT_BEGIN_NAMESPACE
namespace QUnicodeTables {
-static const unsigned short uc_property_trie[] = {
+static constexpr unsigned short uc_property_trie[] = {
// [0x0..0x11000)
6256, 6288, 6320, 6352, 6384, 6416, 6448, 6480,
@@ -87,107 +51,22 @@ static const unsigned short uc_property_trie[] = {
14032, 14064, 14096, 14128, 14160, 14192, 14224, 14256,
14288, 14320, 14352, 14384, 14416, 14448, 14480, 14512,
14544, 14576, 14608, 14640, 14672, 14704, 14736, 14768,
- 14544, 14544, 14544, 14544, 14800, 14832, 14864, 14896,
- 14928, 14960, 14992, 15024, 15056, 15088, 15120, 15152,
- 15184, 15216, 15248, 15280, 15312, 15344, 15376, 15408,
- 15440, 15440, 15440, 15440, 15440, 15440, 15440, 15440,
- 15472, 15504, 15472, 15472, 15536, 15568, 15600, 15632,
- 15664, 15696, 15472, 15728, 15760, 15792, 15824, 15856,
- 15888, 15920, 15952, 15984, 16016, 16048, 16080, 16112,
- 16144, 16176, 16208, 16240, 16272, 16272, 16272, 16304,
- 16336, 16368, 16400, 16432, 16464, 16496, 16496, 16528,
- 16560, 16592, 16624, 9936, 16656, 16688, 16688, 16720,
- 16752, 16752, 16752, 16752, 16752, 16752, 16784, 16816,
-
- 16848, 16880, 16912, 16944, 16976, 17008, 17040, 17072,
- 17104, 17136, 17168, 17200, 17232, 17264, 17296, 17328,
- 17360, 17392, 17424, 17456, 17488, 17520, 17552, 17584,
- 17616, 17616, 17648, 17680, 17712, 17712, 17744, 17776,
- 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808,
- 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808,
- 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808,
- 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808,
- 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808,
- 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808,
- 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808,
- 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808,
- 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808,
- 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808,
- 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808,
- 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808,
-
- 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808,
- 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808,
- 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808,
- 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808,
- 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808,
- 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808,
- 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808,
- 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808,
- 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808,
- 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808,
- 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808,
- 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808,
- 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808,
- 17808, 17808, 17808, 17808, 17808, 17840, 17872, 17872,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
-
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
-
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
-
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
-
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
+ 14800, 14800, 14832, 14864, 14896, 14928, 14960, 14992,
+ 15024, 15056, 15088, 15120, 15152, 15184, 15216, 15248,
+ 15280, 15312, 15344, 15376, 15408, 15440, 15472, 15504,
+ 15536, 15536, 15536, 15536, 15536, 15536, 15536, 15536,
+ 15568, 15600, 15568, 15568, 15632, 15664, 15696, 15728,
+ 15760, 15792, 15568, 15824, 15856, 15888, 15920, 15952,
+ 15984, 16016, 16048, 16080, 16112, 16144, 16176, 16208,
+ 16240, 16272, 16304, 16336, 16368, 16368, 16368, 16400,
+ 16432, 16464, 16496, 16528, 16560, 16592, 16592, 16624,
+ 16656, 16688, 16720, 9936, 16752, 16784, 16784, 16816,
+ 16848, 16848, 16848, 16848, 16848, 16848, 16880, 16912,
+
+ 16944, 16976, 17008, 17040, 17072, 17104, 17136, 17168,
+ 17200, 17232, 17264, 17296, 17328, 17360, 17392, 17424,
+ 17456, 17488, 17520, 17552, 17584, 17616, 17648, 17680,
+ 17712, 17712, 17744, 17776, 17808, 17808, 17840, 17872,
17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
@@ -214,657 +93,742 @@ static const unsigned short uc_property_trie[] = {
17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904,
- 17904, 17904, 17904, 17904, 17904, 17936, 17968, 18000,
-
- 18032, 18064, 18064, 18064, 18064, 18064, 18064, 18064,
- 18064, 18064, 18064, 18064, 18064, 18064, 18064, 18064,
- 18064, 18064, 18064, 18064, 18064, 18064, 18064, 18064,
- 18064, 18064, 18064, 18064, 18064, 18064, 18064, 18064,
- 18064, 18064, 18064, 18064, 18096, 18128, 18160, 18192,
- 18224, 18224, 18224, 18224, 18224, 18224, 18224, 18224,
- 18256, 18288, 18320, 18352, 18384, 18416, 18416, 18448,
- 18480, 18512, 18544, 18576, 18608, 18640, 18672, 18704,
- 18736, 18768, 18800, 18832, 18864, 18896, 18928, 18960,
- 18992, 19024, 19056, 19088, 19120, 19152, 19184, 19216,
- 19248, 19280, 19312, 19344, 19376, 19408, 19440, 19472,
- 19504, 19536, 19568, 19600, 19632, 19664, 19696, 19728,
- 19760, 19792, 19824, 19856, 19888, 19920, 19952, 19760,
- 19792, 19824, 19856, 19888, 19920, 19952, 19760, 19792,
- 19824, 19856, 19888, 19920, 19952, 19760, 19792, 19824,
- 19856, 19888, 19920, 19952, 19760, 19792, 19824, 19856,
-
- 19888, 19920, 19952, 19760, 19792, 19824, 19856, 19888,
- 19920, 19952, 19760, 19792, 19824, 19856, 19888, 19920,
- 19952, 19760, 19792, 19824, 19856, 19888, 19920, 19952,
- 19760, 19792, 19824, 19856, 19888, 19920, 19952, 19760,
- 19792, 19824, 19856, 19888, 19920, 19952, 19760, 19792,
- 19824, 19856, 19888, 19920, 19952, 19760, 19792, 19824,
- 19856, 19888, 19920, 19952, 19760, 19792, 19824, 19856,
- 19888, 19920, 19952, 19760, 19792, 19824, 19856, 19888,
- 19920, 19952, 19760, 19792, 19824, 19856, 19888, 19920,
- 19952, 19760, 19792, 19824, 19856, 19888, 19920, 19952,
- 19760, 19792, 19824, 19856, 19888, 19920, 19952, 19760,
- 19792, 19824, 19856, 19888, 19920, 19952, 19760, 19792,
- 19824, 19856, 19888, 19920, 19952, 19760, 19792, 19824,
- 19856, 19888, 19920, 19952, 19760, 19792, 19824, 19856,
- 19888, 19920, 19952, 19760, 19792, 19824, 19856, 19888,
- 19920, 19952, 19760, 19792, 19824, 19856, 19888, 19920,
-
- 19952, 19760, 19792, 19824, 19856, 19888, 19920, 19952,
- 19760, 19792, 19824, 19856, 19888, 19920, 19952, 19760,
- 19792, 19824, 19856, 19888, 19920, 19952, 19760, 19792,
- 19824, 19856, 19888, 19920, 19952, 19760, 19792, 19824,
- 19856, 19888, 19920, 19952, 19760, 19792, 19824, 19856,
- 19888, 19920, 19952, 19760, 19792, 19824, 19856, 19888,
- 19920, 19952, 19760, 19792, 19824, 19856, 19888, 19920,
- 19952, 19760, 19792, 19824, 19856, 19888, 19920, 19952,
- 19760, 19792, 19824, 19856, 19888, 19920, 19952, 19760,
- 19792, 19824, 19856, 19888, 19920, 19952, 19760, 19792,
- 19824, 19856, 19888, 19920, 19952, 19760, 19792, 19824,
- 19856, 19888, 19920, 19952, 19760, 19792, 19824, 19856,
- 19888, 19920, 19952, 19760, 19792, 19824, 19856, 19888,
- 19920, 19952, 19760, 19792, 19824, 19856, 19888, 19920,
- 19952, 19760, 19792, 19824, 19856, 19888, 19920, 19952,
- 19760, 19792, 19824, 19856, 19888, 19920, 19952, 19760,
-
- 19792, 19824, 19856, 19888, 19920, 19952, 19760, 19792,
- 19824, 19856, 19888, 19920, 19952, 19760, 19792, 19824,
- 19856, 19888, 19920, 19952, 19760, 19792, 19824, 19856,
- 19888, 19920, 19952, 19760, 19792, 19824, 19856, 19888,
- 19920, 19952, 19760, 19792, 19824, 19856, 19888, 19920,
- 19952, 19760, 19792, 19824, 19856, 19888, 19920, 19952,
- 19760, 19792, 19824, 19856, 19888, 19920, 19952, 19760,
- 19792, 19824, 19856, 19888, 19920, 19984, 20016, 20048,
- 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080,
- 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080,
- 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080,
- 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080,
- 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080,
- 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080,
- 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080,
- 20080, 20080, 20080, 20080, 20080, 20080, 20080, 20080,
-
- 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112,
- 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112,
- 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112,
- 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112,
- 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112,
- 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112,
- 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112,
- 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112,
- 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112,
- 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112,
- 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112,
- 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112,
- 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112,
- 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112,
- 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112,
- 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112,
-
- 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112,
- 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112,
- 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112,
- 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112,
- 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112,
- 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112,
- 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112,
- 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112,
- 20112, 20112, 20112, 20112, 20112, 20112, 20112, 20112,
- 20144, 20144, 20144, 20144, 20144, 20144, 20144, 20144,
- 20176, 20208, 20240, 20272, 20304, 20304, 20336, 20368,
- 20400, 20432, 20464, 20496, 20496, 20528, 20560, 20496,
- 20496, 20496, 20592, 20624, 20496, 20496, 20496, 20496,
- 20496, 20656, 20688, 20496, 20720, 20496, 20752, 20784,
- 20816, 20848, 20880, 20912, 20496, 20496, 20496, 20944,
- 20976, 21008, 21040, 21072, 21104, 21136, 21168, 21200,
-
- 21232, 21264, 21296, 9936, 21328, 21328, 21328, 21360,
- 21392, 21424, 21456, 21488, 21520, 21552, 21584, 21616,
- 9936, 9936, 9936, 9936, 21648, 21680, 21712, 21744,
- 21776, 21808, 21840, 21872, 21904, 21936, 21968, 9936,
- 22000, 22032, 22064, 22096, 22128, 22160, 22192, 22224,
- 22256, 22288, 22320, 22352, 22384, 22416, 9936, 9936,
- 22448, 22448, 22448, 22448, 22448, 22448, 22448, 22448,
- 22448, 22480, 22512, 22544, 22576, 22608, 9936, 9936,
- 22640, 22672, 22704, 22736, 22768, 22800, 22832, 22864,
- 22896, 22928, 22832, 22832, 22960, 22992, 23024, 23056,
- 23088, 23120, 23152, 23184, 23216, 22832, 23248, 23280,
- 23312, 23344, 23376, 23408, 23440, 23472, 22832, 22832,
- 23504, 23504, 23536, 22832, 23568, 23600, 23632, 23664,
- 23696, 23728, 22832, 22832, 22832, 22832, 22832, 22832,
- 22832, 22832, 22832, 23760, 23792, 23824, 22832, 22832,
- 23856, 23888, 23920, 23952, 23984, 24016, 24048, 24080,
+ 17904, 17904, 17904, 17904, 17904, 17936, 17968, 17968,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18000, 18000, 18000,
+ 18000, 18000, 18000, 18000, 18000, 18032, 18064, 18096,
+
+ 18128, 18160, 18160, 18160, 18160, 18160, 18160, 18160,
+ 18160, 18160, 18160, 18160, 18160, 18160, 18160, 18160,
+ 18160, 18160, 18160, 18160, 18160, 18160, 18160, 18160,
+ 18160, 18160, 18160, 18160, 18160, 18160, 18160, 18160,
+ 18160, 18160, 18160, 18160, 18192, 18224, 18256, 18288,
+ 18320, 18320, 18320, 18320, 18320, 18320, 18320, 18320,
+ 18352, 18384, 18416, 18448, 18480, 18512, 18512, 18544,
+ 18576, 18608, 18640, 18672, 18704, 18736, 18768, 18800,
+ 18832, 18864, 18896, 18928, 18960, 18992, 19024, 19056,
+ 19088, 19120, 19152, 19184, 19216, 19248, 19280, 19312,
+ 19344, 19376, 19408, 19440, 19472, 19504, 19536, 19568,
+ 19600, 19632, 19664, 19696, 19728, 19760, 19792, 19824,
+ 19856, 19888, 19920, 19952, 19984, 20016, 20048, 19856,
+ 19888, 19920, 19952, 19984, 20016, 20048, 19856, 19888,
+ 19920, 19952, 19984, 20016, 20048, 19856, 19888, 19920,
+ 19952, 19984, 20016, 20048, 19856, 19888, 19920, 19952,
+
+ 19984, 20016, 20048, 19856, 19888, 19920, 19952, 19984,
+ 20016, 20048, 19856, 19888, 19920, 19952, 19984, 20016,
+ 20048, 19856, 19888, 19920, 19952, 19984, 20016, 20048,
+ 19856, 19888, 19920, 19952, 19984, 20016, 20048, 19856,
+ 19888, 19920, 19952, 19984, 20016, 20048, 19856, 19888,
+ 19920, 19952, 19984, 20016, 20048, 19856, 19888, 19920,
+ 19952, 19984, 20016, 20048, 19856, 19888, 19920, 19952,
+ 19984, 20016, 20048, 19856, 19888, 19920, 19952, 19984,
+ 20016, 20048, 19856, 19888, 19920, 19952, 19984, 20016,
+ 20048, 19856, 19888, 19920, 19952, 19984, 20016, 20048,
+ 19856, 19888, 19920, 19952, 19984, 20016, 20048, 19856,
+ 19888, 19920, 19952, 19984, 20016, 20048, 19856, 19888,
+ 19920, 19952, 19984, 20016, 20048, 19856, 19888, 19920,
+ 19952, 19984, 20016, 20048, 19856, 19888, 19920, 19952,
+ 19984, 20016, 20048, 19856, 19888, 19920, 19952, 19984,
+ 20016, 20048, 19856, 19888, 19920, 19952, 19984, 20016,
+
+ 20048, 19856, 19888, 19920, 19952, 19984, 20016, 20048,
+ 19856, 19888, 19920, 19952, 19984, 20016, 20048, 19856,
+ 19888, 19920, 19952, 19984, 20016, 20048, 19856, 19888,
+ 19920, 19952, 19984, 20016, 20048, 19856, 19888, 19920,
+ 19952, 19984, 20016, 20048, 19856, 19888, 19920, 19952,
+ 19984, 20016, 20048, 19856, 19888, 19920, 19952, 19984,
+ 20016, 20048, 19856, 19888, 19920, 19952, 19984, 20016,
+ 20048, 19856, 19888, 19920, 19952, 19984, 20016, 20048,
+ 19856, 19888, 19920, 19952, 19984, 20016, 20048, 19856,
+ 19888, 19920, 19952, 19984, 20016, 20048, 19856, 19888,
+ 19920, 19952, 19984, 20016, 20048, 19856, 19888, 19920,
+ 19952, 19984, 20016, 20048, 19856, 19888, 19920, 19952,
+ 19984, 20016, 20048, 19856, 19888, 19920, 19952, 19984,
+ 20016, 20048, 19856, 19888, 19920, 19952, 19984, 20016,
+ 20048, 19856, 19888, 19920, 19952, 19984, 20016, 20048,
+ 19856, 19888, 19920, 19952, 19984, 20016, 20048, 19856,
+
+ 19888, 19920, 19952, 19984, 20016, 20048, 19856, 19888,
+ 19920, 19952, 19984, 20016, 20048, 19856, 19888, 19920,
+ 19952, 19984, 20016, 20048, 19856, 19888, 19920, 19952,
+ 19984, 20016, 20048, 19856, 19888, 19920, 19952, 19984,
+ 20016, 20048, 19856, 19888, 19920, 19952, 19984, 20016,
+ 20048, 19856, 19888, 19920, 19952, 19984, 20016, 20048,
+ 19856, 19888, 19920, 19952, 19984, 20016, 20048, 19856,
+ 19888, 19920, 19952, 19984, 20016, 20080, 20112, 20144,
+ 20176, 20176, 20176, 20176, 20176, 20176, 20176, 20176,
+ 20176, 20176, 20176, 20176, 20176, 20176, 20176, 20176,
+ 20176, 20176, 20176, 20176, 20176, 20176, 20176, 20176,
+ 20176, 20176, 20176, 20176, 20176, 20176, 20176, 20176,
+ 20176, 20176, 20176, 20176, 20176, 20176, 20176, 20176,
+ 20176, 20176, 20176, 20176, 20176, 20176, 20176, 20176,
+ 20176, 20176, 20176, 20176, 20176, 20176, 20176, 20176,
+ 20176, 20176, 20176, 20176, 20176, 20176, 20176, 20176,
+
+ 20208, 20208, 20208, 20208, 20208, 20208, 20208, 20208,
+ 20208, 20208, 20208, 20208, 20208, 20208, 20208, 20208,
+ 20208, 20208, 20208, 20208, 20208, 20208, 20208, 20208,
+ 20208, 20208, 20208, 20208, 20208, 20208, 20208, 20208,
+ 20208, 20208, 20208, 20208, 20208, 20208, 20208, 20208,
+ 20208, 20208, 20208, 20208, 20208, 20208, 20208, 20208,
+ 20208, 20208, 20208, 20208, 20208, 20208, 20208, 20208,
+ 20208, 20208, 20208, 20208, 20208, 20208, 20208, 20208,
+ 20208, 20208, 20208, 20208, 20208, 20208, 20208, 20208,
+ 20208, 20208, 20208, 20208, 20208, 20208, 20208, 20208,
+ 20208, 20208, 20208, 20208, 20208, 20208, 20208, 20208,
+ 20208, 20208, 20208, 20208, 20208, 20208, 20208, 20208,
+ 20208, 20208, 20208, 20208, 20208, 20208, 20208, 20208,
+ 20208, 20208, 20208, 20208, 20208, 20208, 20208, 20208,
+ 20208, 20208, 20208, 20208, 20208, 20208, 20208, 20208,
+ 20208, 20208, 20208, 20208, 20208, 20208, 20208, 20208,
+
+ 20208, 20208, 20208, 20208, 20208, 20208, 20208, 20208,
+ 20208, 20208, 20208, 20208, 20208, 20208, 20208, 20208,
+ 20208, 20208, 20208, 20208, 20208, 20208, 20208, 20208,
+ 20208, 20208, 20208, 20208, 20208, 20208, 20208, 20208,
+ 20208, 20208, 20208, 20208, 20208, 20208, 20208, 20208,
+ 20208, 20208, 20208, 20208, 20208, 20208, 20208, 20208,
+ 20208, 20208, 20208, 20208, 20208, 20208, 20208, 20208,
+ 20208, 20208, 20208, 20208, 20208, 20208, 20208, 20208,
+ 20208, 20208, 20208, 20208, 20208, 20208, 20208, 20208,
+ 20240, 20240, 20240, 20240, 20240, 20240, 20240, 20240,
+ 20272, 20304, 20336, 20368, 20400, 20400, 20432, 20464,
+ 20496, 20528, 20560, 20592, 20592, 20624, 20656, 20592,
+ 20592, 20592, 20688, 20720, 20592, 20592, 20592, 20592,
+ 20592, 20752, 20784, 20592, 20816, 20592, 20848, 20880,
+ 20912, 20944, 20976, 21008, 20592, 20592, 20592, 21040,
+ 21072, 21104, 21136, 21168, 21200, 21232, 21264, 21296,
+
+ 21328, 21360, 21392, 9936, 21424, 21424, 21424, 21456,
+ 21488, 21520, 21552, 21584, 21616, 21648, 21680, 21712,
+ 9936, 9936, 9936, 9936, 21744, 21776, 21808, 21840,
+ 21872, 21904, 21936, 21968, 22000, 22032, 22064, 9936,
+ 22096, 22128, 22160, 22192, 22224, 22256, 22288, 22320,
+ 22352, 22384, 22416, 22448, 22480, 22512, 9936, 9936,
+ 22544, 22544, 22544, 22544, 22544, 22544, 22544, 22544,
+ 22544, 22576, 22608, 22640, 22672, 22704, 9936, 9936,
+ 22736, 22768, 22800, 22832, 22864, 22896, 22928, 22960,
+ 22992, 23024, 22928, 22928, 23056, 23088, 23120, 23152,
+ 23184, 23216, 23248, 23280, 23312, 22928, 23344, 23376,
+ 23408, 23440, 23472, 23504, 23536, 23568, 22928, 22928,
+ 23600, 23600, 23632, 22928, 23664, 23696, 23728, 23760,
+ 23792, 23824, 22928, 22928, 22928, 22928, 22928, 22928,
+ 22928, 22928, 22928, 23856, 23888, 23920, 22928, 23952,
+ 23984, 24016, 24048, 24080, 24112, 24144, 24176, 24208,
// [0x11000..0x110000)
- 24112, 24368, 24624, 24880, 25136, 25392, 25648, 25904,
- 26160, 26416, 26672, 26928, 27184, 27440, 27696, 27952,
- 28208, 28208, 28208, 28464, 28720, 28976, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 29232,
- 29488, 29488, 29744, 30000, 30256, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 30512, 30768, 31024, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 31280, 31280, 31536, 31792, 26928, 26928, 32048, 32304,
- 32560, 32560, 32560, 32560, 32560, 32560, 32560, 32560,
- 32560, 32560, 32560, 32560, 32560, 32560, 32560, 32560,
- 32560, 32560, 32560, 32560, 32560, 32560, 32560, 32816,
- 32560, 32560, 33072, 33328, 33584, 33840, 26928, 26928,
-
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 34096,
- 34352, 34608, 34864, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 35120, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 35376,
- 35632, 35888, 36144, 36400, 36656, 36912, 37168, 37424,
- 37680, 37680, 37936, 26928, 26928, 26928, 26928, 38192,
- 38448, 38704, 38960, 26928, 26928, 26928, 26928, 39216,
- 39472, 39728, 39984, 39984, 40240, 40496, 40752, 39984,
- 41008, 41264, 41520, 41776, 42032, 42288, 42544, 42800,
- 43056, 43312, 43568, 43824, 44080, 44080, 44080, 44336,
- 44592, 44592, 44592, 44592, 44592, 44592, 44592, 44592,
- 44592, 44592, 44592, 44592, 44592, 44592, 44592, 44592,
- 44592, 44592, 44592, 44592, 44592, 44592, 44592, 44592,
- 44592, 44592, 44592, 44592, 44592, 44592, 44592, 44592,
- 44592, 44592, 44592, 44592, 44592, 44592, 44592, 44592,
- 44592, 44592, 44592, 44592, 44592, 44592, 44592, 44592,
- 44592, 44592, 44592, 44592, 44592, 44592, 44592, 44592,
- 44592, 44592, 44592, 44592, 44592, 44592, 44592, 44592,
- 44592, 44592, 44592, 44592, 44592, 44592, 44592, 44592,
- 44592, 44592, 44592, 44592, 44592, 44592, 44592, 44592,
- 44592, 44592, 44592, 44592, 44592, 44592, 44592, 44592,
- 44592, 44592, 44592, 44592, 44592, 44592, 44592, 44592,
- 44592, 44592, 44592, 44592, 44592, 44592, 44592, 44592,
- 44592, 44592, 44592, 44592, 44592, 44592, 44592, 44592,
- 44592, 44592, 44592, 44592, 44592, 44592, 44592, 44592,
- 44592, 44592, 44592, 44592, 44592, 44592, 44592, 44592,
- 44592, 44592, 44592, 44592, 44592, 44592, 44592, 44592,
- 44592, 44592, 44592, 44592, 44592, 44592, 44592, 44592,
-
- 44592, 44592, 44592, 44592, 44592, 44592, 44592, 44592,
- 44592, 44592, 44592, 44592, 44592, 44592, 44592, 44592,
- 44592, 44592, 44592, 44592, 44592, 44592, 44848, 45104,
- 45104, 45104, 45104, 45104, 45104, 45104, 45104, 45104,
- 45104, 45104, 45104, 45104, 45104, 45104, 45104, 45360,
- 45616, 45872, 45872, 45872, 45872, 45872, 45872, 45872,
- 45872, 45872, 45872, 45872, 45872, 45872, 45872, 45872,
- 45872, 45872, 45872, 45872, 45872, 45872, 46128, 46384,
- 46384, 46384, 46384, 46384, 46384, 46384, 46384, 46384,
- 46384, 46384, 46384, 46384, 46384, 46384, 46384, 46384,
- 46384, 46384, 46384, 46384, 46384, 46384, 46384, 46384,
- 46384, 46384, 46384, 46640, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 47152, 47408, 47664, 46896, 46896, 46896, 46896, 47920,
- 48176, 48176, 48176, 48176, 48176, 48176, 48176, 48176,
- 48176, 48176, 48176, 48176, 48176, 48176, 48176, 48176,
- 48176, 48176, 48176, 48432, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
-
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 46896,
- 46896, 46896, 46896, 46896, 46896, 46896, 46896, 47920,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
-
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 48688,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
-
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 48688,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
-
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 48688,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
-
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 48688,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
-
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 48688,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
-
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 48688,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
-
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 48688,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
-
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 48688,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
-
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 48688,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
-
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 48688,
- 48944, 49200, 49456, 49456, 49456, 49456, 49456, 49456,
- 49456, 49456, 49456, 49456, 49456, 49456, 49456, 49456,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
-
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 26928,
- 26928, 26928, 26928, 26928, 26928, 26928, 26928, 48688,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
-
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49968,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
-
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49712,
- 49712, 49712, 49712, 49712, 49712, 49712, 49712, 49968,
+ 24240, 24496, 24752, 25008, 25264, 25520, 25776, 26032,
+ 26288, 26544, 26800, 27056, 27312, 27568, 27824, 28080,
+ 28336, 28336, 28336, 28592, 28848, 29104, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29616,
+ 29872, 29872, 30128, 30384, 30640, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 30896, 31152, 31408, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 31664, 31664, 31920, 32176, 29360, 29360, 32432, 32688,
+ 32944, 32944, 32944, 32944, 32944, 32944, 32944, 32944,
+ 32944, 32944, 32944, 32944, 32944, 32944, 32944, 32944,
+ 32944, 32944, 32944, 32944, 32944, 32944, 32944, 33200,
+ 32944, 32944, 33456, 33712, 33968, 34224, 29360, 29360,
+
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 34480,
+ 34736, 34992, 35248, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 35504, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 35760,
+ 36016, 36272, 36528, 36784, 37040, 37296, 37552, 37808,
+ 38064, 38064, 38320, 29360, 29360, 29360, 29360, 38576,
+ 38832, 39088, 39344, 29360, 39600, 29360, 29360, 39856,
+ 40112, 40368, 40624, 40624, 40880, 41136, 41392, 40624,
+ 41648, 41904, 42160, 42416, 42672, 42928, 43184, 43440,
+ 43696, 43952, 44208, 44464, 44720, 44720, 44720, 44976,
+ 45232, 45232, 45232, 45232, 45232, 45232, 45232, 45232,
+ 45232, 45232, 45232, 45232, 45232, 45232, 45232, 45232,
+ 45232, 45232, 45232, 45232, 45232, 45232, 45232, 45232,
+ 45232, 45232, 45232, 45232, 45232, 45232, 45232, 45232,
+ 45232, 45232, 45232, 45232, 45232, 45232, 45232, 45232,
+ 45232, 45232, 45232, 45232, 45232, 45232, 45232, 45232,
+ 45232, 45232, 45232, 45232, 45232, 45232, 45232, 45232,
+ 45232, 45232, 45232, 45232, 45232, 45232, 45232, 45232,
+ 45232, 45232, 45232, 45232, 45232, 45232, 45232, 45232,
+ 45232, 45232, 45232, 45232, 45232, 45232, 45232, 45232,
+ 45232, 45232, 45232, 45232, 45232, 45232, 45232, 45232,
+ 45232, 45232, 45232, 45232, 45232, 45232, 45232, 45232,
+ 45232, 45232, 45232, 45232, 45232, 45232, 45232, 45232,
+ 45232, 45232, 45232, 45232, 45232, 45232, 45232, 45232,
+ 45232, 45232, 45232, 45232, 45232, 45232, 45232, 45232,
+ 45232, 45232, 45232, 45232, 45232, 45232, 45232, 45232,
+ 45232, 45232, 45232, 45232, 45232, 45232, 45232, 45232,
+ 45232, 45232, 45232, 45232, 45232, 45232, 45232, 45232,
+
+ 45232, 45232, 45232, 45232, 45232, 45232, 45232, 45232,
+ 45232, 45232, 45232, 45232, 45232, 45232, 45232, 45232,
+ 45232, 45232, 45232, 45232, 45232, 45232, 45488, 45744,
+ 45744, 45744, 45744, 45744, 45744, 45744, 45744, 45744,
+ 45744, 45744, 45744, 45744, 45744, 45744, 45744, 46000,
+ 46256, 46512, 46512, 46512, 46512, 46512, 46512, 46512,
+ 46512, 46512, 46512, 46512, 46512, 46512, 46512, 46512,
+ 46512, 46512, 46512, 46512, 46512, 46512, 46768, 47024,
+ 47024, 47024, 47024, 47024, 47024, 47024, 47024, 47024,
+ 47024, 47024, 47024, 47024, 47024, 47024, 47024, 47024,
+ 47024, 47024, 47024, 47024, 47024, 47024, 47024, 47024,
+ 47024, 47024, 47024, 47280, 47536, 47536, 47792, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48304, 48560, 48816, 48048, 48048, 48048, 48048, 49072,
+ 49328, 49328, 49328, 49328, 49328, 49328, 49328, 49328,
+ 49328, 49328, 49328, 49328, 49328, 49328, 49328, 49328,
+ 49328, 49328, 49328, 49584, 49840, 49840, 49840, 49840,
+ 49840, 49840, 49840, 49840, 49840, 49840, 49840, 49840,
+ 49840, 49840, 49840, 50096, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 48048,
+ 48048, 48048, 48048, 48048, 48048, 48048, 48048, 49072,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 50352,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 50352,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 50352,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 50352,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 50352,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 50352,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 50352,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 50352,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 50352,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 50352,
+ 50608, 50864, 51120, 51120, 51120, 51120, 51120, 51120,
+ 51120, 51120, 51120, 51120, 51120, 51120, 51120, 51120,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 29360,
+ 29360, 29360, 29360, 29360, 29360, 29360, 29360, 50352,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51632,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51376,
+ 51376, 51376, 51376, 51376, 51376, 51376, 51376, 51632,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -892,5278 +856,4308 @@ static const unsigned short uc_property_trie[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 48, 49, 50, 51, 51, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 55, 54,
- 60, 61, 62, 63, 64, 65, 53, 66,
- 54, 67, 56, 68, 69, 69, 69, 49,
-
- 70, 70, 70, 70, 70, 70, 38, 70,
- 70, 70, 70, 70, 70, 70, 70, 70,
- 38, 70, 70, 70, 70, 70, 70, 58,
- 38, 70, 70, 70, 70, 70, 38, 71,
-
- 72, 72, 72, 72, 72, 72, 44, 72,
- 72, 72, 72, 72, 72, 72, 72, 72,
- 44, 72, 72, 72, 72, 72, 72, 58,
- 44, 72, 72, 72, 72, 72, 44, 73,
-
- 74, 75, 74, 75, 74, 75, 74, 75,
- 74, 75, 74, 75, 74, 75, 74, 75,
- 76, 77, 74, 75, 74, 75, 74, 75,
- 74, 75, 74, 75, 74, 75, 74, 75,
-
- 74, 75, 74, 75, 74, 75, 76, 77,
- 74, 75, 74, 75, 74, 75, 74, 75,
- 78, 79, 80, 81, 74, 75, 74, 75,
- 82, 74, 75, 74, 75, 74, 75, 80,
-
- 81, 76, 77, 74, 75, 74, 75, 74,
- 75, 83, 76, 77, 74, 75, 74, 75,
- 74, 75, 76, 77, 74, 75, 74, 75,
- 74, 75, 74, 75, 74, 75, 74, 75,
-
- 74, 75, 74, 75, 74, 75, 76, 77,
- 74, 75, 74, 75, 74, 75, 74, 75,
- 74, 75, 74, 75, 74, 75, 74, 75,
- 84, 74, 75, 74, 75, 74, 75, 85,
-
- 86, 87, 76, 77, 76, 77, 88, 76,
- 77, 89, 89, 76, 77, 82, 90, 91,
- 92, 76, 77, 89, 93, 94, 95, 96,
- 76, 77, 97, 82, 95, 98, 99, 100,
-
- 74, 75, 76, 77, 76, 77, 101, 76,
- 77, 101, 82, 82, 76, 77, 101, 74,
- 75, 102, 102, 76, 77, 76, 77, 103,
- 76, 77, 82, 104, 76, 77, 82, 105,
-
- 104, 104, 104, 104, 106, 107, 108, 106,
- 107, 108, 106, 107, 108, 74, 75, 74,
- 75, 74, 75, 74, 75, 74, 75, 74,
- 75, 74, 75, 74, 75, 109, 74, 75,
-
- 74, 75, 74, 75, 76, 77, 74, 75,
- 74, 75, 74, 75, 74, 75, 74, 75,
- 110, 106, 107, 108, 74, 75, 111, 112,
- 113, 114, 74, 75, 74, 75, 74, 75,
-
- 74, 75, 74, 75, 74, 75, 74, 75,
- 74, 75, 74, 75, 74, 75, 74, 75,
- 74, 75, 74, 75, 74, 75, 74, 75,
- 113, 114, 113, 114, 115, 116, 113, 114,
-
- 117, 118, 115, 116, 115, 116, 113, 114,
- 113, 114, 113, 114, 113, 114, 113, 114,
- 113, 114, 113, 114, 118, 118, 118, 119,
- 119, 119, 120, 121, 122, 123, 124, 125,
-
- 126, 121, 127, 128, 129, 130, 131, 127,
- 131, 127, 131, 127, 131, 127, 131, 127,
- 132, 133, 134, 135, 136, 82, 137, 137,
- 82, 138, 82, 139, 140, 82, 82, 82,
-
- 137, 141, 82, 142, 82, 143, 144, 82,
- 145, 146, 147, 148, 149, 82, 82, 146,
- 82, 150, 151, 82, 82, 152, 82, 82,
- 82, 82, 82, 82, 82, 153, 82, 82,
-
- 154, 82, 155, 154, 82, 82, 82, 156,
- 154, 157, 158, 158, 159, 82, 82, 82,
- 82, 82, 160, 82, 104, 82, 82, 82,
- 82, 82, 82, 82, 82, 161, 162, 82,
-
- 82, 82, 82, 82, 82, 82, 82, 82,
- 82, 163, 163, 163, 163, 163, 118, 118,
- 164, 164, 164, 164, 164, 164, 164, 164,
- 164, 165, 165, 166, 166, 166, 166, 166,
-
- 167, 167, 168, 168, 168, 168, 165, 165,
- 169, 165, 165, 165, 169, 165, 165, 165,
- 166, 166, 168, 168, 168, 168, 168, 168,
- 54, 54, 54, 54, 54, 54, 168, 170,
-
- 164, 164, 164, 164, 164, 168, 168, 168,
- 168, 168, 171, 171, 172, 173, 174, 175,
- 175, 175, 175, 175, 175, 175, 175, 175,
+ 48, 49, 50, 51, 52, 51, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 54, 69,
+ 55, 70, 57, 71, 72, 72, 72, 49,
+
+ 73, 73, 73, 73, 73, 73, 74, 73,
+ 73, 73, 73, 73, 73, 73, 73, 73,
+ 74, 73, 73, 73, 73, 73, 73, 75,
+ 74, 73, 73, 73, 73, 73, 74, 76,
+
+ 77, 77, 78, 78, 78, 78, 79, 78,
+ 77, 77, 77, 78, 77, 77, 78, 78,
+ 79, 78, 77, 77, 78, 78, 78, 75,
+ 79, 77, 77, 78, 77, 78, 79, 80,
+
+ 81, 82, 81, 83, 81, 83, 81, 83,
+ 81, 83, 81, 83, 81, 83, 81, 83,
+ 84, 85, 81, 82, 81, 83, 81, 83,
+ 81, 83, 81, 82, 81, 83, 81, 83,
+
+ 81, 83, 81, 83, 81, 83, 86, 85,
+ 81, 83, 81, 82, 81, 83, 81, 83,
+ 87, 88, 89, 90, 81, 83, 81, 83,
+ 91, 81, 83, 81, 83, 81, 83, 89,
+
+ 90, 86, 85, 81, 82, 81, 83, 81,
+ 82, 92, 86, 85, 81, 82, 81, 83,
+ 81, 83, 86, 85, 81, 83, 81, 83,
+ 81, 83, 81, 83, 81, 83, 81, 83,
+
+ 81, 83, 81, 83, 81, 83, 86, 85,
+ 81, 83, 81, 82, 81, 83, 81, 83,
+ 81, 83, 81, 83, 81, 83, 81, 83,
+ 93, 81, 83, 81, 83, 81, 83, 94,
+
+ 95, 96, 84, 97, 84, 97, 98, 84,
+ 97, 99, 99, 84, 97, 100, 101, 102,
+ 103, 84, 97, 99, 104, 105, 106, 107,
+ 84, 97, 108, 100, 106, 109, 110, 111,
+
+ 81, 83, 84, 97, 84, 97, 112, 84,
+ 97, 112, 100, 100, 84, 97, 112, 81,
+ 83, 113, 113, 84, 97, 84, 97, 114,
+ 84, 97, 100, 115, 84, 97, 100, 116,
+
+ 115, 115, 115, 115, 117, 118, 119, 117,
+ 118, 119, 117, 118, 119, 81, 82, 81,
+ 82, 81, 82, 81, 82, 81, 82, 81,
+ 82, 81, 82, 81, 82, 120, 81, 83,
+
+ 81, 83, 81, 83, 84, 97, 81, 83,
+ 81, 83, 81, 83, 81, 83, 81, 83,
+ 121, 117, 118, 119, 81, 83, 122, 123,
+ 124, 125, 81, 83, 81, 83, 81, 83,
+
+ 81, 83, 81, 83, 81, 83, 81, 83,
+ 81, 83, 81, 83, 81, 83, 81, 83,
+ 81, 83, 81, 83, 81, 83, 81, 83,
+ 124, 125, 124, 125, 126, 127, 124, 125,
+
+ 128, 129, 126, 127, 126, 127, 124, 125,
+ 124, 125, 124, 125, 124, 125, 124, 125,
+ 124, 125, 124, 125, 129, 129, 129, 130,
+ 130, 130, 131, 132, 133, 134, 135, 136,
+
+ 137, 132, 138, 139, 140, 141, 142, 138,
+ 142, 138, 142, 138, 142, 138, 142, 138,
+ 143, 144, 145, 146, 147, 100, 148, 148,
+ 100, 149, 100, 150, 151, 100, 100, 100,
+
+ 148, 152, 100, 153, 100, 154, 155, 100,
+ 156, 157, 158, 159, 160, 100, 100, 157,
+ 100, 161, 162, 100, 100, 163, 100, 100,
+ 100, 100, 100, 100, 100, 164, 100, 100,
+
+ 165, 100, 166, 165, 100, 100, 100, 167,
+ 165, 168, 169, 169, 170, 100, 100, 100,
+ 100, 100, 171, 100, 115, 100, 100, 100,
+ 100, 100, 100, 100, 100, 172, 173, 100,
+
+ 100, 100, 100, 100, 100, 100, 100, 100,
+ 100, 174, 174, 174, 174, 174, 129, 129,
175, 175, 175, 175, 175, 175, 175, 175,
+ 175, 176, 176, 177, 177, 177, 177, 177,
+
+ 178, 178, 179, 179, 180, 179, 176, 181,
+ 182, 181, 181, 181, 182, 181, 176, 176,
+ 183, 177, 179, 179, 179, 179, 179, 179,
+ 55, 55, 55, 55, 184, 55, 179, 185,
+
+ 175, 175, 175, 175, 175, 179, 179, 179,
+ 179, 179, 186, 186, 187, 188, 189, 190,
+ 190, 190, 190, 190, 190, 190, 190, 190,
+ 190, 190, 190, 190, 190, 190, 190, 190,
+
+ 191, 191, 191, 191, 191, 192, 191, 191,
+ 191, 191, 191, 191, 191, 192, 192, 191,
+ 192, 191, 192, 191, 191, 193, 194, 194,
+ 194, 194, 193, 195, 194, 194, 194, 194,
+
+ 194, 196, 196, 197, 197, 197, 197, 198,
+ 198, 194, 194, 194, 194, 197, 197, 194,
+ 197, 197, 194, 194, 199, 199, 199, 199,
+ 200, 194, 194, 194, 194, 192, 192, 192,
+
+ 201, 201, 191, 201, 201, 202, 203, 204,
+ 204, 204, 203, 203, 203, 204, 204, 205,
+ 206, 206, 206, 207, 207, 207, 207, 206,
+ 208, 209, 209, 210, 211, 212, 212, 213,
+
+ 214, 214, 215, 216, 216, 216, 216, 216,
+ 216, 216, 216, 216, 216, 216, 216, 216,
+ 217, 218, 217, 218, 219, 220, 217, 218,
+ 221, 221, 222, 223, 223, 223, 224, 225,
+
+ 221, 221, 221, 221, 226, 227, 228, 229,
+ 230, 230, 230, 221, 231, 221, 232, 232,
+ 233, 234, 234, 234, 234, 234, 234, 234,
+ 234, 234, 234, 234, 234, 234, 234, 234,
+
+ 234, 234, 221, 234, 234, 234, 234, 234,
+ 234, 234, 235, 235, 236, 237, 237, 237,
+ 238, 239, 239, 239, 239, 239, 239, 239,
+ 239, 239, 239, 239, 239, 239, 239, 239,
+
+ 239, 239, 240, 239, 239, 239, 239, 239,
+ 239, 239, 241, 241, 242, 243, 243, 244,
+ 245, 246, 247, 248, 248, 249, 250, 251,
+ 252, 253, 254, 255, 254, 255, 254, 255,
+
+ 254, 255, 256, 257, 256, 257, 256, 257,
+ 256, 257, 256, 257, 256, 257, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 265, 266, 268, 269, 269, 269,
+
+ 270, 271, 272, 273, 272, 272, 272, 273,
+ 272, 272, 272, 272, 273, 270, 273, 272,
+ 274, 274, 274, 274, 274, 274, 274, 274,
+ 274, 275, 274, 274, 274, 274, 274, 274,
+
+ 274, 274, 274, 274, 274, 274, 274, 274,
+ 274, 274, 274, 274, 274, 274, 274, 274,
+ 276, 276, 276, 276, 276, 276, 276, 276,
+ 276, 277, 276, 276, 276, 276, 276, 276,
+
+ 276, 276, 276, 276, 276, 276, 276, 276,
+ 276, 276, 276, 276, 276, 276, 276, 276,
+ 278, 279, 280, 281, 280, 280, 280, 281,
+ 280, 280, 280, 280, 281, 278, 281, 280,
+
+ 282, 283, 282, 283, 282, 283, 282, 283,
+ 282, 283, 282, 283, 282, 283, 282, 283,
+ 282, 283, 282, 283, 282, 283, 284, 285,
+ 282, 283, 282, 283, 282, 283, 282, 283,
+
+ 282, 283, 286, 287, 287, 288, 288, 289,
+ 290, 290, 291, 292, 293, 294, 293, 294,
+ 282, 283, 282, 283, 282, 283, 282, 283,
+ 282, 283, 282, 283, 282, 283, 282, 283,
+
+ 282, 283, 282, 283, 282, 283, 282, 283,
+ 282, 283, 282, 283, 282, 283, 282, 283,
+ 282, 283, 282, 283, 282, 283, 282, 283,
+ 282, 283, 282, 283, 282, 283, 282, 283,
+
+ 295, 284, 285, 282, 283, 291, 292, 282,
+ 283, 291, 292, 282, 283, 291, 292, 296,
+ 284, 285, 284, 285, 282, 283, 284, 285,
+ 282, 283, 284, 285, 284, 285, 284, 285,
+
+ 282, 283, 284, 285, 284, 285, 284, 285,
+ 282, 283, 284, 285, 297, 298, 284, 285,
+ 284, 285, 284, 285, 284, 285, 299, 300,
+ 284, 285, 301, 302, 301, 302, 301, 302,
- 176, 176, 176, 176, 176, 177, 176, 176,
- 176, 176, 176, 176, 176, 177, 177, 176,
- 177, 176, 177, 176, 176, 178, 179, 179,
- 179, 179, 178, 180, 179, 179, 179, 179,
-
- 179, 181, 181, 182, 182, 182, 182, 183,
- 183, 179, 179, 179, 179, 182, 182, 179,
- 182, 182, 179, 179, 184, 184, 184, 184,
- 185, 179, 179, 179, 179, 177, 177, 177,
-
- 186, 186, 176, 186, 186, 187, 188, 189,
- 189, 189, 188, 188, 188, 189, 189, 190,
- 191, 191, 191, 192, 192, 192, 192, 191,
- 193, 194, 194, 195, 196, 197, 197, 198,
-
- 199, 199, 200, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 202, 203, 202, 203, 204, 205, 202, 203,
- 206, 206, 207, 208, 208, 208, 209, 210,
-
- 206, 206, 206, 206, 211, 212, 213, 214,
- 215, 215, 215, 206, 216, 206, 217, 217,
- 218, 219, 219, 219, 219, 219, 219, 219,
- 219, 219, 219, 219, 219, 219, 219, 219,
-
- 219, 219, 206, 219, 219, 219, 219, 219,
- 219, 219, 220, 220, 221, 222, 222, 222,
- 223, 224, 224, 224, 224, 224, 224, 224,
- 224, 224, 224, 224, 224, 224, 224, 224,
-
- 224, 224, 225, 224, 224, 224, 224, 224,
- 224, 224, 226, 226, 227, 228, 228, 229,
- 230, 231, 232, 233, 233, 234, 235, 236,
- 237, 238, 239, 240, 239, 240, 239, 240,
-
- 239, 240, 241, 242, 241, 242, 241, 242,
- 241, 242, 241, 242, 241, 242, 241, 242,
- 243, 244, 245, 246, 247, 248, 249, 250,
- 251, 252, 250, 251, 253, 254, 254, 254,
-
- 255, 256, 257, 256, 257, 257, 257, 256,
- 257, 257, 257, 257, 256, 255, 256, 257,
- 258, 258, 258, 258, 258, 258, 258, 258,
- 258, 259, 258, 258, 258, 258, 258, 258,
-
- 258, 258, 258, 258, 258, 258, 258, 258,
- 258, 258, 258, 258, 258, 258, 258, 258,
- 260, 260, 260, 260, 260, 260, 260, 260,
- 260, 261, 260, 260, 260, 260, 260, 260,
-
- 260, 260, 260, 260, 260, 260, 260, 260,
- 260, 260, 260, 260, 260, 260, 260, 260,
- 262, 263, 264, 263, 264, 264, 264, 263,
- 264, 264, 264, 264, 263, 262, 263, 264,
-
- 265, 266, 265, 266, 265, 266, 265, 266,
- 265, 266, 265, 266, 265, 266, 265, 266,
- 265, 266, 265, 266, 265, 266, 267, 268,
- 265, 266, 265, 266, 265, 266, 265, 266,
-
- 265, 266, 269, 270, 270, 177, 177, 271,
- 272, 272, 273, 274, 275, 276, 275, 276,
- 265, 266, 265, 266, 265, 266, 265, 266,
- 265, 266, 265, 266, 265, 266, 265, 266,
-
- 265, 266, 265, 266, 265, 266, 265, 266,
- 265, 266, 265, 266, 265, 266, 265, 266,
- 265, 266, 265, 266, 265, 266, 265, 266,
- 265, 266, 265, 266, 265, 266, 265, 266,
-
- 277, 267, 268, 265, 266, 273, 274, 265,
- 266, 273, 274, 265, 266, 273, 274, 278,
- 267, 268, 267, 268, 265, 266, 267, 268,
- 265, 266, 267, 268, 267, 268, 267, 268,
-
- 265, 266, 267, 268, 267, 268, 267, 268,
- 265, 266, 267, 268, 279, 280, 267, 268,
- 267, 268, 267, 268, 267, 268, 281, 282,
- 267, 268, 283, 284, 283, 284, 283, 284,
-
- 273, 274, 273, 274, 273, 274, 273, 274,
- 273, 274, 273, 274, 273, 274, 273, 274,
- 283, 284, 283, 284, 285, 286, 285, 286,
- 285, 286, 285, 286, 285, 286, 285, 286,
-
- 285, 286, 285, 286, 287, 288, 289, 290,
291, 292, 291, 292, 291, 292, 291, 292,
- 206, 293, 293, 293, 293, 293, 293, 293,
- 293, 293, 293, 293, 293, 293, 293, 293,
-
- 293, 293, 293, 293, 293, 293, 293, 293,
- 293, 293, 293, 293, 293, 293, 293, 293,
- 293, 293, 293, 293, 293, 293, 293, 206,
- 206, 294, 295, 295, 295, 296, 295, 297,
-
- 298, 299, 299, 299, 299, 299, 299, 299,
- 299, 299, 299, 299, 299, 299, 299, 299,
- 299, 299, 299, 299, 299, 299, 299, 299,
- 299, 299, 299, 299, 299, 299, 299, 299,
-
- 299, 299, 299, 299, 299, 299, 299, 300,
- 298, 301, 302, 206, 206, 303, 303, 304,
- 305, 306, 307, 307, 307, 307, 306, 307,
- 307, 307, 308, 306, 307, 307, 307, 307,
-
- 307, 307, 309, 306, 306, 306, 306, 306,
- 307, 307, 306, 307, 307, 308, 310, 307,
- 311, 312, 313, 314, 315, 316, 317, 318,
- 319, 320, 321, 322, 323, 324, 325, 326,
-
- 327, 328, 329, 327, 307, 309, 330, 331,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332,
-
- 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 305, 305, 305, 305, 333,
- 332, 332, 332, 334, 335, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
-
- 336, 336, 336, 336, 337, 338, 339, 339,
- 340, 341, 341, 342, 343, 344, 345, 345,
- 346, 346, 346, 346, 346, 346, 347, 347,
- 348, 349, 350, 351, 352, 353, 354, 355,
-
- 356, 357, 358, 358, 358, 358, 359, 360,
- 361, 360, 361, 361, 361, 361, 361, 360,
- 360, 360, 360, 361, 361, 361, 361, 361,
- 361, 361, 361, 362, 362, 362, 362, 362,
-
- 363, 361, 361, 361, 361, 361, 361, 361,
- 360, 361, 361, 364, 365, 366, 367, 368,
- 369, 370, 371, 372, 372, 373, 374, 346,
- 346, 375, 375, 375, 376, 375, 375, 377,
-
- 378, 379, 380, 381, 382, 383, 384, 385,
- 386, 387, 388, 389, 390, 391, 392, 392,
- 393, 360, 360, 360, 357, 394, 394, 394,
- 395, 361, 361, 361, 361, 361, 361, 361,
-
- 361, 361, 361, 361, 361, 361, 361, 361,
- 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 360, 360, 360, 360,
- 360, 360, 361, 361, 361, 361, 361, 361,
-
- 361, 361, 361, 361, 361, 361, 361, 361,
- 361, 361, 361, 361, 361, 361, 361, 361,
- 361, 361, 361, 361, 361, 361, 361, 361,
- 396, 396, 361, 361, 361, 361, 361, 396,
-
- 358, 361, 359, 360, 360, 360, 360, 360,
- 360, 360, 360, 360, 361, 360, 361, 397,
- 361, 361, 360, 358, 398, 360, 399, 399,
- 399, 399, 399, 399, 399, 400, 401, 399,
-
- 399, 399, 399, 402, 399, 403, 403, 399,
- 399, 401, 402, 399, 399, 402, 404, 404,
- 405, 406, 407, 408, 409, 410, 411, 412,
- 413, 414, 396, 396, 396, 415, 415, 416,
-
- 417, 417, 417, 418, 418, 418, 418, 418,
- 418, 418, 418, 418, 418, 418, 419, 420,
- 421, 422, 423, 423, 423, 421, 421, 421,
- 421, 421, 423, 423, 423, 423, 421, 423,
-
- 423, 423, 423, 423, 423, 423, 423, 423,
- 421, 423, 421, 423, 421, 424, 424, 425,
- 426, 427, 426, 426, 427, 426, 426, 427,
- 427, 427, 426, 427, 427, 426, 427, 426,
-
- 426, 426, 427, 426, 427, 426, 427, 426,
- 427, 426, 426, 419, 419, 425, 424, 424,
- 428, 428, 428, 428, 428, 428, 428, 428,
- 428, 429, 429, 429, 428, 428, 428, 428,
-
- 428, 428, 428, 428, 428, 428, 428, 428,
- 428, 428, 428, 429, 429, 428, 362, 362,
- 362, 430, 362, 430, 430, 362, 362, 362,
- 430, 430, 362, 362, 362, 362, 362, 362,
-
- 431, 431, 431, 431, 431, 431, 431, 431,
- 431, 431, 431, 431, 431, 431, 431, 431,
- 431, 431, 431, 431, 431, 431, 431, 431,
- 431, 431, 431, 431, 431, 431, 431, 431,
-
- 431, 431, 431, 431, 431, 431, 432, 432,
- 432, 432, 432, 432, 432, 432, 432, 432,
- 432, 433, 419, 419, 419, 419, 419, 419,
- 419, 419, 419, 419, 419, 419, 419, 419,
-
- 434, 435, 436, 437, 438, 439, 440, 441,
- 442, 443, 444, 444, 444, 444, 444, 444,
- 444, 444, 444, 444, 444, 444, 444, 444,
- 444, 444, 444, 444, 444, 444, 444, 444,
-
- 444, 444, 444, 444, 444, 444, 444, 444,
- 444, 444, 444, 445, 445, 445, 445, 445,
- 445, 445, 446, 445, 447, 447, 448, 449,
- 450, 451, 452, 305, 305, 453, 454, 454,
-
- 455, 455, 455, 455, 455, 455, 455, 455,
- 455, 455, 455, 455, 455, 455, 455, 455,
- 455, 455, 455, 455, 455, 455, 456, 456,
- 456, 456, 457, 456, 456, 456, 456, 456,
-
- 456, 456, 456, 456, 457, 456, 456, 456,
- 457, 456, 456, 456, 456, 456, 305, 305,
- 458, 458, 458, 458, 458, 458, 458, 459,
- 458, 459, 458, 458, 458, 459, 459, 305,
-
- 460, 461, 461, 461, 461, 461, 460, 460,
- 461, 460, 461, 461, 461, 461, 461, 461,
- 461, 461, 461, 461, 460, 461, 460, 460,
- 460, 462, 462, 462, 305, 305, 463, 305,
-
- 464, 465, 464, 464, 464, 464, 465, 466,
- 464, 466, 466, 305, 305, 305, 305, 305,
- 467, 467, 467, 467, 467, 467, 467, 467,
- 467, 467, 467, 467, 467, 467, 467, 467,
-
- 467, 467, 467, 468, 468, 468, 469, 470,
- 471, 469, 469, 469, 469, 469, 467, 305,
- 472, 472, 305, 305, 305, 305, 305, 305,
- 473, 474, 474, 474, 473, 473, 473, 473,
-
- 475, 476, 475, 475, 475, 475, 475, 475,
- 475, 475, 477, 477, 477, 478, 479, 476,
- 476, 479, 479, 480, 480, 469, 481, 481,
- 481, 482, 481, 481, 481, 481, 483, 483,
-
- 483, 483, 483, 483, 483, 483, 483, 483,
- 469, 484, 473, 473, 473, 473, 473, 474,
- 474, 474, 474, 485, 486, 486, 486, 486,
- 486, 486, 486, 486, 486, 486, 486, 486,
-
- 486, 486, 487, 488, 489, 489, 490, 489,
- 489, 490, 489, 489, 489, 490, 490, 490,
- 491, 492, 493, 489, 489, 489, 490, 489,
- 489, 490, 490, 489, 489, 489, 489, 494,
-
- 495, 496, 496, 497, 498, 499, 499, 499,
- 499, 499, 499, 499, 499, 499, 499, 499,
- 499, 499, 499, 499, 499, 499, 499, 499,
- 499, 499, 499, 499, 499, 499, 499, 499,
-
- 499, 499, 499, 499, 499, 499, 499, 499,
- 499, 500, 499, 499, 499, 499, 499, 499,
- 499, 500, 499, 499, 500, 499, 499, 499,
- 499, 499, 501, 502, 503, 499, 497, 497,
-
- 497, 496, 496, 496, 496, 496, 496, 496,
- 496, 497, 497, 497, 497, 504, 505, 502,
- 499, 177, 179, 177, 177, 495, 501, 501,
- 506, 506, 506, 506, 506, 506, 506, 506,
-
- 499, 499, 496, 496, 507, 507, 508, 509,
- 510, 511, 512, 513, 514, 515, 516, 517,
- 518, 519, 520, 521, 521, 521, 521, 521,
- 522, 523, 523, 524, 524, 525, 524, 524,
-
- 526, 527, 528, 528, 206, 529, 529, 529,
- 529, 529, 529, 529, 529, 206, 206, 529,
- 529, 206, 206, 529, 529, 529, 529, 529,
- 529, 529, 529, 529, 529, 529, 529, 529,
-
- 529, 529, 529, 529, 529, 529, 529, 529,
- 529, 206, 529, 529, 529, 529, 529, 529,
- 529, 206, 529, 206, 206, 206, 529, 529,
- 529, 529, 206, 206, 530, 531, 532, 528,
-
- 528, 527, 527, 527, 527, 206, 206, 528,
- 528, 206, 206, 533, 533, 534, 535, 206,
- 206, 206, 206, 206, 206, 206, 206, 532,
- 206, 206, 206, 206, 536, 536, 206, 536,
-
- 529, 529, 527, 527, 206, 206, 537, 538,
- 539, 540, 541, 542, 543, 544, 545, 546,
- 529, 529, 547, 547, 548, 548, 548, 548,
- 548, 549, 550, 551, 552, 553, 554, 206,
-
- 206, 555, 556, 557, 206, 558, 558, 558,
- 558, 558, 558, 206, 206, 206, 206, 558,
- 558, 206, 206, 558, 558, 558, 558, 558,
- 558, 558, 558, 558, 558, 558, 558, 558,
-
- 558, 558, 558, 558, 558, 558, 558, 558,
- 558, 206, 558, 558, 558, 558, 558, 558,
- 558, 206, 558, 559, 206, 558, 559, 206,
- 558, 558, 206, 206, 560, 206, 561, 561,
-
- 561, 556, 556, 206, 206, 206, 206, 556,
- 556, 206, 206, 556, 556, 562, 206, 206,
- 206, 563, 206, 206, 206, 206, 206, 206,
- 206, 559, 559, 559, 558, 206, 559, 206,
-
- 206, 206, 206, 206, 206, 206, 564, 565,
- 566, 567, 568, 569, 570, 571, 572, 573,
- 556, 556, 558, 558, 558, 563, 574, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 206, 575, 575, 576, 206, 577, 577, 577,
- 577, 577, 577, 577, 578, 577, 206, 577,
- 577, 577, 206, 577, 577, 577, 577, 577,
+ 291, 292, 291, 292, 291, 292, 291, 292,
+ 301, 302, 301, 302, 303, 304, 303, 304,
+ 303, 304, 303, 304, 303, 304, 303, 304,
+
+ 303, 304, 303, 304, 305, 306, 307, 308,
+ 309, 310, 309, 310, 309, 310, 309, 310,
+ 221, 311, 311, 311, 311, 311, 311, 311,
+ 311, 311, 311, 311, 311, 311, 311, 311,
+
+ 311, 311, 311, 311, 311, 311, 311, 311,
+ 311, 311, 311, 311, 311, 311, 311, 311,
+ 311, 311, 311, 311, 311, 311, 311, 221,
+ 221, 312, 313, 313, 313, 314, 313, 315,
+
+ 316, 317, 317, 317, 317, 317, 317, 317,
+ 317, 317, 317, 317, 317, 317, 317, 317,
+ 317, 317, 317, 317, 317, 317, 317, 317,
+ 317, 317, 317, 317, 317, 317, 317, 317,
+
+ 317, 317, 317, 317, 317, 317, 317, 318,
+ 316, 319, 320, 221, 221, 321, 321, 322,
+ 323, 324, 325, 325, 325, 325, 324, 325,
+ 325, 325, 326, 324, 325, 325, 325, 325,
+
+ 325, 325, 327, 324, 324, 324, 324, 324,
+ 325, 325, 324, 325, 325, 326, 328, 325,
+ 329, 330, 331, 332, 333, 334, 335, 336,
+ 337, 338, 339, 340, 341, 342, 343, 344,
+
+ 345, 346, 347, 345, 325, 327, 348, 349,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 350, 350, 350, 350, 350, 350, 350, 350,
+ 350, 350, 350, 350, 350, 350, 350, 350,
+
+ 350, 350, 350, 350, 350, 350, 350, 350,
+ 350, 350, 350, 323, 323, 323, 323, 351,
+ 350, 350, 350, 352, 353, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+
+ 354, 354, 354, 354, 355, 356, 357, 357,
+ 358, 359, 359, 360, 361, 362, 363, 363,
+ 364, 364, 364, 364, 364, 364, 365, 365,
+ 366, 367, 368, 369, 370, 371, 372, 373,
+
+ 374, 375, 376, 376, 376, 376, 377, 378,
+ 379, 378, 379, 379, 379, 379, 379, 378,
+ 378, 378, 378, 379, 379, 379, 379, 379,
+ 379, 379, 379, 380, 380, 380, 380, 380,
+
+ 381, 379, 379, 379, 379, 379, 379, 379,
+ 378, 379, 379, 382, 383, 384, 385, 386,
+ 387, 388, 389, 390, 390, 391, 392, 364,
+ 364, 393, 393, 393, 394, 393, 393, 395,
+
+ 396, 397, 398, 399, 400, 401, 402, 403,
+ 404, 405, 406, 407, 408, 409, 410, 410,
+ 411, 378, 378, 378, 375, 412, 412, 412,
+ 413, 379, 379, 379, 379, 379, 379, 379,
+
+ 379, 379, 379, 379, 379, 379, 379, 379,
+ 378, 378, 378, 378, 378, 378, 378, 378,
+ 378, 378, 378, 378, 378, 378, 378, 378,
+ 378, 378, 379, 379, 379, 379, 379, 379,
+
+ 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379,
+ 379, 379, 379, 379, 379, 379, 379, 379,
+ 414, 414, 379, 379, 379, 379, 379, 414,
+
+ 376, 379, 377, 378, 378, 378, 378, 378,
+ 378, 378, 378, 378, 379, 378, 379, 415,
+ 379, 379, 378, 376, 416, 378, 417, 417,
+ 417, 417, 417, 417, 417, 418, 419, 417,
+
+ 417, 417, 417, 420, 417, 421, 421, 417,
+ 417, 419, 420, 417, 417, 420, 422, 422,
+ 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 414, 414, 414, 433, 433, 434,
+
+ 435, 435, 435, 436, 436, 436, 436, 436,
+ 436, 436, 436, 436, 436, 436, 437, 438,
+ 439, 440, 441, 441, 441, 439, 439, 439,
+ 439, 439, 441, 441, 441, 441, 439, 441,
+
+ 441, 441, 441, 441, 441, 441, 441, 441,
+ 439, 441, 439, 441, 439, 442, 442, 443,
+ 444, 445, 444, 444, 445, 444, 444, 445,
+ 445, 445, 444, 445, 445, 444, 445, 444,
+
+ 444, 444, 445, 444, 445, 444, 445, 444,
+ 445, 444, 444, 437, 437, 443, 442, 442,
+ 446, 446, 446, 446, 446, 446, 446, 446,
+ 446, 447, 447, 447, 446, 446, 446, 446,
+
+ 446, 446, 446, 446, 446, 446, 446, 446,
+ 446, 446, 446, 447, 447, 446, 380, 380,
+ 380, 448, 380, 448, 448, 380, 380, 380,
+ 448, 448, 380, 380, 380, 380, 380, 380,
+
+ 449, 449, 449, 449, 449, 449, 449, 449,
+ 449, 449, 449, 449, 449, 449, 449, 449,
+ 449, 449, 449, 449, 449, 449, 449, 449,
+ 449, 449, 449, 449, 449, 449, 449, 449,
+
+ 449, 449, 449, 449, 449, 449, 450, 450,
+ 450, 450, 450, 450, 450, 450, 450, 450,
+ 450, 451, 437, 437, 437, 437, 437, 437,
+ 437, 437, 437, 437, 437, 437, 437, 437,
+
+ 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 462, 462, 462, 462, 462, 462,
+ 462, 462, 462, 462, 462, 462, 462, 462,
+ 462, 462, 462, 462, 462, 462, 462, 462,
+
+ 462, 462, 462, 462, 462, 462, 462, 462,
+ 462, 462, 462, 463, 463, 463, 463, 463,
+ 463, 463, 464, 463, 465, 465, 466, 467,
+ 468, 469, 470, 323, 323, 471, 472, 472,
+
+ 473, 473, 473, 473, 473, 473, 473, 473,
+ 473, 473, 473, 473, 473, 473, 473, 473,
+ 473, 473, 473, 473, 473, 473, 474, 474,
+ 474, 474, 475, 474, 474, 474, 474, 474,
+
+ 474, 474, 474, 474, 475, 474, 474, 474,
+ 475, 474, 474, 474, 474, 474, 323, 323,
+ 476, 476, 476, 476, 476, 476, 476, 477,
+ 476, 477, 476, 476, 476, 477, 477, 323,
+
+ 478, 479, 479, 479, 479, 479, 478, 478,
+ 479, 478, 479, 479, 479, 479, 479, 479,
+ 479, 479, 479, 479, 478, 479, 478, 478,
+ 478, 480, 480, 480, 323, 323, 481, 323,
+
+ 482, 483, 482, 482, 482, 482, 483, 484,
+ 482, 484, 484, 323, 323, 323, 323, 323,
+ 485, 485, 485, 485, 485, 485, 485, 485,
+ 485, 485, 485, 485, 485, 485, 485, 485,
+
+ 485, 485, 485, 486, 486, 486, 487, 488,
+ 489, 487, 487, 487, 487, 487, 485, 323,
+ 490, 490, 323, 323, 323, 323, 323, 323,
+ 491, 492, 492, 492, 491, 491, 491, 491,
+
+ 493, 494, 493, 493, 493, 493, 493, 493,
+ 493, 493, 495, 495, 495, 496, 497, 494,
+ 494, 497, 497, 498, 498, 487, 499, 499,
+ 499, 500, 499, 499, 499, 499, 501, 501,
+
+ 501, 501, 501, 501, 501, 501, 501, 501,
+ 487, 502, 491, 491, 491, 491, 491, 492,
+ 492, 492, 492, 503, 504, 504, 504, 504,
+ 504, 504, 504, 504, 504, 504, 504, 504,
+
+ 504, 504, 505, 506, 507, 507, 508, 507,
+ 507, 508, 507, 507, 507, 508, 508, 508,
+ 509, 510, 511, 507, 507, 507, 508, 507,
+ 507, 508, 508, 507, 507, 507, 507, 512,
+
+ 513, 514, 514, 515, 516, 517, 517, 517,
+ 517, 517, 517, 517, 517, 517, 517, 517,
+ 517, 517, 517, 517, 517, 517, 517, 517,
+ 517, 517, 517, 517, 517, 517, 517, 517,
+
+ 517, 517, 517, 517, 517, 517, 517, 517,
+ 517, 518, 517, 517, 517, 517, 517, 517,
+ 517, 518, 517, 517, 518, 517, 517, 517,
+ 517, 517, 519, 520, 521, 517, 515, 515,
+
+ 515, 514, 514, 514, 514, 514, 514, 514,
+ 514, 515, 515, 515, 515, 522, 523, 520,
+ 517, 288, 524, 288, 288, 513, 519, 519,
+ 525, 525, 525, 525, 525, 525, 525, 525,
+
+ 517, 517, 514, 514, 526, 526, 527, 528,
+ 529, 530, 531, 532, 533, 534, 535, 536,
+ 537, 538, 539, 540, 540, 540, 540, 540,
+ 541, 542, 542, 543, 543, 544, 543, 543,
+
+ 545, 546, 547, 547, 221, 548, 548, 548,
+ 548, 548, 548, 548, 548, 221, 221, 548,
+ 548, 221, 221, 548, 548, 548, 548, 548,
+ 548, 548, 548, 548, 548, 548, 548, 548,
+
+ 548, 548, 548, 548, 548, 548, 548, 548,
+ 548, 221, 548, 548, 548, 548, 548, 548,
+ 548, 221, 548, 221, 221, 221, 548, 548,
+ 548, 548, 221, 221, 549, 550, 551, 547,
+
+ 547, 546, 546, 546, 546, 221, 221, 547,
+ 547, 221, 221, 552, 552, 553, 554, 221,
+ 221, 221, 221, 221, 221, 221, 221, 551,
+ 221, 221, 221, 221, 555, 555, 221, 555,
+
+ 548, 548, 546, 546, 221, 221, 556, 557,
+ 558, 559, 560, 561, 562, 563, 564, 565,
+ 548, 548, 566, 566, 567, 567, 567, 567,
+ 567, 568, 569, 570, 571, 572, 573, 221,
+
+ 221, 574, 575, 576, 221, 577, 577, 577,
+ 577, 577, 577, 221, 221, 221, 221, 577,
+ 577, 221, 221, 577, 577, 577, 577, 577,
577, 577, 577, 577, 577, 577, 577, 577,
577, 577, 577, 577, 577, 577, 577, 577,
- 577, 206, 577, 577, 577, 577, 577, 577,
- 577, 206, 577, 577, 206, 577, 577, 577,
- 577, 577, 206, 206, 579, 577, 576, 576,
-
- 576, 575, 575, 575, 575, 575, 206, 575,
- 575, 576, 206, 576, 576, 580, 206, 206,
- 577, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 577, 578, 581, 581, 206, 206, 582, 583,
- 584, 585, 586, 587, 588, 589, 590, 591,
- 592, 593, 206, 206, 206, 206, 206, 206,
- 206, 594, 595, 595, 595, 595, 595, 595,
-
- 206, 596, 597, 597, 206, 598, 598, 598,
- 598, 598, 598, 598, 598, 206, 206, 598,
- 598, 206, 206, 598, 598, 598, 598, 598,
- 598, 598, 598, 598, 598, 598, 598, 598,
-
- 598, 598, 598, 598, 598, 598, 598, 598,
- 598, 206, 598, 598, 598, 598, 598, 598,
- 598, 206, 598, 598, 206, 599, 598, 598,
- 598, 598, 206, 206, 600, 598, 601, 596,
-
- 597, 596, 596, 596, 602, 206, 206, 597,
- 603, 206, 206, 603, 603, 604, 206, 206,
- 206, 206, 206, 206, 206, 605, 606, 601,
- 206, 206, 206, 206, 607, 607, 206, 598,
-
- 598, 598, 602, 602, 206, 206, 608, 609,
- 610, 611, 612, 613, 614, 615, 616, 617,
- 618, 599, 619, 619, 619, 619, 619, 619,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 206, 206, 620, 621, 206, 621, 621, 621,
- 621, 621, 621, 206, 206, 206, 621, 621,
- 621, 206, 621, 621, 622, 621, 206, 206,
- 206, 621, 621, 206, 621, 206, 621, 621,
-
- 206, 206, 206, 621, 621, 206, 206, 206,
- 621, 621, 621, 206, 206, 206, 621, 621,
- 621, 621, 621, 621, 621, 621, 623, 621,
- 621, 621, 206, 206, 206, 206, 624, 625,
-
- 620, 625, 625, 206, 206, 206, 625, 625,
- 625, 206, 626, 626, 626, 627, 206, 206,
- 628, 206, 206, 206, 206, 206, 206, 624,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 206, 206, 206, 206, 206, 206, 629, 630,
- 631, 632, 633, 634, 635, 636, 637, 638,
- 639, 639, 639, 640, 640, 640, 640, 640,
- 640, 641, 640, 206, 206, 206, 206, 206,
-
- 642, 643, 643, 643, 644, 645, 645, 645,
- 645, 645, 645, 645, 645, 206, 645, 645,
- 645, 206, 645, 645, 645, 645, 645, 645,
- 645, 645, 645, 645, 645, 645, 645, 645,
-
- 645, 645, 645, 645, 645, 645, 645, 645,
- 645, 206, 645, 645, 645, 645, 645, 645,
- 645, 645, 645, 645, 646, 645, 645, 645,
- 645, 645, 206, 206, 647, 648, 649, 649,
-
- 649, 643, 643, 643, 643, 206, 649, 649,
- 650, 206, 649, 649, 649, 651, 206, 206,
- 206, 206, 206, 206, 206, 652, 653, 206,
- 648, 648, 654, 206, 206, 655, 206, 206,
-
- 645, 645, 656, 656, 206, 206, 657, 658,
- 659, 660, 661, 662, 663, 664, 665, 666,
- 206, 206, 206, 206, 206, 206, 206, 667,
- 668, 668, 668, 668, 668, 668, 668, 669,
-
- 670, 671, 672, 672, 673, 674, 674, 674,
- 674, 674, 674, 674, 674, 206, 674, 674,
- 674, 206, 674, 674, 674, 674, 674, 674,
- 674, 674, 674, 674, 674, 674, 674, 674,
-
- 674, 674, 674, 674, 674, 674, 674, 674,
- 674, 206, 674, 674, 674, 674, 674, 674,
- 674, 674, 674, 674, 206, 674, 674, 674,
- 674, 674, 206, 206, 675, 676, 672, 677,
-
- 678, 672, 679, 672, 672, 206, 677, 678,
- 678, 206, 678, 678, 680, 681, 206, 206,
- 206, 206, 206, 206, 206, 679, 679, 206,
- 206, 206, 206, 206, 206, 682, 674, 206,
-
- 674, 674, 683, 683, 206, 206, 684, 685,
- 686, 687, 688, 689, 690, 691, 692, 693,
- 206, 694, 694, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 695, 696, 697, 697, 698, 699, 699, 699,
- 699, 699, 699, 699, 699, 206, 699, 699,
- 699, 206, 699, 699, 699, 699, 699, 699,
- 699, 699, 699, 699, 699, 699, 699, 699,
-
- 699, 699, 699, 699, 699, 699, 699, 699,
- 699, 700, 699, 699, 699, 699, 699, 699,
- 699, 699, 699, 699, 699, 699, 699, 699,
- 699, 699, 700, 701, 701, 702, 703, 697,
-
- 697, 704, 704, 704, 705, 206, 697, 697,
- 697, 206, 706, 706, 706, 707, 708, 709,
- 206, 206, 206, 206, 710, 710, 710, 703,
- 711, 711, 711, 711, 711, 711, 711, 712,
-
- 699, 699, 705, 705, 206, 206, 713, 714,
- 715, 716, 717, 718, 719, 720, 721, 722,
- 723, 723, 723, 723, 723, 723, 711, 711,
- 711, 724, 702, 702, 702, 702, 702, 702,
-
- 206, 725, 726, 726, 206, 727, 727, 727,
- 727, 727, 727, 727, 727, 727, 727, 727,
- 727, 727, 727, 727, 727, 727, 727, 206,
- 206, 206, 727, 727, 727, 727, 727, 727,
-
- 727, 727, 727, 727, 727, 727, 727, 727,
- 727, 727, 727, 727, 727, 727, 727, 727,
- 727, 727, 206, 727, 727, 727, 727, 727,
- 727, 727, 727, 727, 206, 727, 206, 206,
-
- 727, 727, 727, 727, 727, 727, 727, 206,
- 206, 206, 728, 206, 206, 206, 206, 729,
- 726, 726, 730, 730, 730, 206, 730, 206,
- 726, 726, 731, 726, 731, 731, 731, 729,
-
- 206, 206, 206, 206, 206, 206, 732, 733,
- 734, 735, 736, 737, 738, 739, 740, 741,
- 206, 206, 726, 726, 742, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 206, 743, 743, 743, 743, 743, 743, 743,
- 743, 743, 743, 743, 743, 743, 743, 743,
- 743, 743, 743, 743, 743, 743, 743, 743,
- 743, 743, 743, 743, 743, 743, 743, 743,
-
- 743, 743, 743, 743, 743, 743, 743, 743,
- 743, 743, 743, 743, 743, 743, 743, 743,
- 743, 744, 743, 745, 744, 744, 744, 744,
- 746, 746, 747, 206, 206, 206, 206, 51,
-
- 743, 743, 743, 743, 743, 743, 748, 744,
- 749, 749, 749, 749, 744, 744, 744, 750,
- 751, 752, 753, 754, 755, 756, 757, 758,
- 759, 760, 761, 761, 206, 206, 206, 206,
-
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 206, 762, 762, 206, 762, 206, 763, 762,
- 762, 763, 762, 206, 763, 762, 763, 763,
- 763, 763, 763, 763, 762, 762, 762, 762,
- 763, 762, 762, 762, 762, 762, 762, 762,
-
- 763, 762, 762, 762, 206, 762, 206, 762,
- 763, 763, 762, 762, 763, 762, 762, 762,
- 762, 764, 762, 765, 764, 764, 764, 764,
- 766, 766, 767, 764, 764, 762, 206, 206,
-
- 762, 762, 762, 762, 762, 206, 768, 206,
- 769, 769, 769, 769, 764, 764, 206, 206,
- 770, 771, 772, 773, 774, 775, 776, 777,
- 778, 779, 206, 206, 780, 780, 781, 781,
-
- 782, 783, 783, 783, 784, 785, 784, 784,
- 786, 784, 784, 787, 788, 789, 789, 789,
- 789, 789, 786, 790, 789, 790, 790, 790,
- 791, 791, 790, 790, 790, 790, 790, 790,
-
+ 577, 221, 577, 577, 577, 577, 577, 577,
+ 577, 221, 577, 578, 221, 577, 578, 221,
+ 577, 577, 221, 221, 579, 221, 580, 580,
+
+ 580, 575, 575, 221, 221, 221, 221, 575,
+ 575, 221, 221, 575, 575, 581, 221, 221,
+ 221, 582, 221, 221, 221, 221, 221, 221,
+ 221, 578, 578, 578, 577, 221, 578, 221,
+
+ 221, 221, 221, 221, 221, 221, 583, 584,
+ 585, 586, 587, 588, 589, 590, 591, 592,
+ 575, 575, 577, 577, 577, 582, 593, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 221, 594, 594, 595, 221, 596, 596, 596,
+ 596, 596, 596, 596, 597, 596, 221, 596,
+ 596, 596, 221, 596, 596, 596, 596, 596,
+ 596, 596, 596, 596, 596, 596, 596, 596,
+
+ 596, 596, 596, 596, 596, 596, 596, 596,
+ 596, 221, 596, 596, 596, 596, 596, 596,
+ 596, 221, 596, 596, 221, 596, 596, 596,
+ 596, 596, 221, 221, 598, 596, 595, 595,
+
+ 595, 594, 594, 594, 594, 594, 221, 594,
+ 594, 595, 221, 595, 595, 599, 221, 221,
+ 596, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 596, 597, 600, 600, 221, 221, 601, 602,
+ 603, 604, 605, 606, 607, 608, 609, 610,
+ 611, 612, 221, 221, 221, 221, 221, 221,
+ 221, 613, 614, 614, 614, 614, 614, 614,
+
+ 221, 615, 616, 616, 221, 617, 617, 617,
+ 617, 617, 617, 617, 617, 221, 221, 617,
+ 617, 221, 221, 617, 617, 617, 617, 617,
+ 617, 617, 617, 617, 617, 617, 617, 617,
+
+ 617, 617, 617, 617, 617, 617, 617, 617,
+ 617, 221, 617, 617, 617, 617, 617, 617,
+ 617, 221, 617, 617, 221, 618, 617, 617,
+ 617, 617, 221, 221, 619, 617, 620, 615,
+
+ 616, 615, 615, 615, 621, 221, 221, 616,
+ 622, 221, 221, 622, 622, 623, 221, 221,
+ 221, 221, 221, 221, 221, 624, 625, 620,
+ 221, 221, 221, 221, 626, 626, 221, 617,
+
+ 617, 617, 621, 621, 221, 221, 627, 628,
+ 629, 630, 631, 632, 633, 634, 635, 636,
+ 637, 618, 638, 638, 638, 638, 638, 638,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 221, 221, 639, 640, 221, 640, 640, 640,
+ 640, 640, 640, 221, 221, 221, 640, 640,
+ 640, 221, 640, 640, 641, 640, 221, 221,
+ 221, 640, 640, 221, 640, 221, 640, 640,
+
+ 221, 221, 221, 640, 640, 221, 221, 221,
+ 640, 640, 640, 221, 221, 221, 640, 640,
+ 640, 640, 640, 640, 640, 640, 642, 640,
+ 640, 640, 221, 221, 221, 221, 643, 644,
+
+ 639, 644, 644, 221, 221, 221, 644, 644,
+ 644, 221, 645, 645, 645, 646, 221, 221,
+ 647, 221, 221, 221, 221, 221, 221, 643,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 221, 221, 221, 221, 221, 221, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657,
+ 658, 658, 658, 659, 659, 659, 659, 659,
+ 659, 660, 659, 221, 221, 221, 221, 221,
+
+ 661, 662, 662, 662, 663, 664, 664, 664,
+ 664, 664, 664, 664, 664, 221, 664, 664,
+ 664, 221, 664, 664, 664, 664, 664, 664,
+ 664, 664, 664, 664, 664, 664, 664, 664,
+
+ 664, 664, 664, 664, 664, 664, 664, 664,
+ 664, 221, 664, 664, 664, 664, 664, 664,
+ 664, 664, 664, 664, 665, 664, 664, 664,
+ 664, 664, 221, 221, 666, 667, 668, 668,
+
+ 668, 662, 662, 662, 662, 221, 668, 668,
+ 669, 221, 668, 668, 668, 670, 221, 221,
+ 221, 221, 221, 221, 221, 671, 672, 221,
+ 667, 667, 673, 221, 221, 674, 221, 221,
+
+ 664, 664, 675, 675, 221, 221, 676, 677,
+ 678, 679, 680, 681, 682, 683, 684, 685,
+ 221, 221, 221, 221, 221, 221, 221, 686,
+ 687, 687, 687, 687, 687, 687, 687, 688,
+
+ 689, 690, 691, 691, 692, 693, 693, 693,
+ 693, 693, 693, 693, 693, 221, 693, 693,
+ 693, 221, 693, 693, 693, 693, 693, 693,
+ 693, 693, 693, 693, 693, 693, 693, 693,
+
+ 693, 693, 693, 693, 693, 693, 693, 693,
+ 693, 221, 693, 693, 693, 693, 693, 693,
+ 693, 693, 693, 693, 221, 693, 693, 693,
+ 693, 693, 221, 221, 694, 695, 691, 696,
+
+ 697, 691, 698, 691, 691, 221, 696, 697,
+ 697, 221, 697, 697, 699, 700, 221, 221,
+ 221, 221, 221, 221, 221, 698, 698, 221,
+ 221, 221, 221, 221, 221, 701, 693, 221,
+
+ 693, 693, 702, 702, 221, 221, 703, 704,
+ 705, 706, 707, 708, 709, 710, 711, 712,
+ 221, 713, 713, 714, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 715, 716, 717, 717, 718, 719, 719, 719,
+ 719, 719, 719, 719, 719, 221, 719, 719,
+ 719, 221, 719, 719, 719, 719, 719, 719,
+ 719, 719, 719, 719, 719, 719, 719, 719,
+
+ 719, 719, 719, 719, 719, 719, 719, 719,
+ 719, 720, 719, 719, 719, 719, 719, 719,
+ 719, 719, 719, 719, 719, 719, 719, 719,
+ 719, 719, 720, 721, 721, 722, 723, 717,
+
+ 717, 724, 724, 724, 725, 221, 717, 717,
+ 717, 221, 726, 726, 726, 727, 728, 729,
+ 221, 221, 221, 221, 730, 730, 730, 723,
+ 731, 731, 731, 731, 731, 731, 731, 732,
+
+ 719, 719, 725, 725, 221, 221, 733, 734,
+ 735, 736, 737, 738, 739, 740, 741, 742,
+ 743, 743, 743, 743, 743, 743, 731, 731,
+ 731, 744, 722, 722, 722, 722, 722, 722,
+
+ 221, 745, 746, 746, 221, 747, 747, 747,
+ 747, 747, 747, 747, 747, 747, 747, 747,
+ 747, 747, 747, 747, 747, 747, 747, 221,
+ 221, 221, 747, 747, 747, 747, 747, 747,
+
+ 747, 747, 747, 747, 747, 747, 747, 747,
+ 747, 747, 747, 747, 747, 747, 747, 747,
+ 747, 747, 221, 747, 747, 747, 747, 747,
+ 747, 747, 747, 747, 221, 747, 221, 221,
+
+ 747, 747, 747, 747, 747, 747, 747, 221,
+ 221, 221, 748, 221, 221, 221, 221, 749,
+ 746, 746, 750, 750, 750, 221, 750, 221,
+ 746, 746, 751, 746, 751, 751, 751, 749,
+
+ 221, 221, 221, 221, 221, 221, 752, 753,
+ 754, 755, 756, 757, 758, 759, 760, 761,
+ 221, 221, 746, 746, 762, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 221, 763, 763, 763, 763, 763, 763, 763,
+ 763, 763, 763, 763, 763, 763, 763, 763,
+ 763, 763, 763, 763, 763, 763, 763, 763,
+ 763, 763, 763, 763, 763, 763, 763, 763,
+
+ 763, 763, 763, 763, 763, 763, 763, 763,
+ 763, 763, 763, 763, 763, 763, 763, 763,
+ 763, 764, 763, 765, 764, 764, 764, 764,
+ 766, 766, 767, 221, 221, 221, 221, 768,
+
+ 763, 763, 763, 763, 763, 763, 769, 764,
+ 770, 770, 770, 770, 764, 764, 764, 771,
+ 772, 773, 774, 775, 776, 777, 778, 779,
+ 780, 781, 782, 782, 221, 221, 221, 221,
+
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 221, 783, 783, 221, 783, 221, 784, 783,
+ 783, 784, 783, 221, 784, 783, 784, 784,
+ 784, 784, 784, 784, 783, 783, 783, 783,
+ 784, 783, 783, 783, 783, 783, 783, 783,
+
+ 784, 783, 783, 783, 221, 783, 221, 783,
+ 784, 784, 783, 783, 784, 783, 783, 783,
+ 783, 785, 783, 786, 785, 785, 785, 785,
+ 787, 787, 788, 785, 785, 783, 221, 221,
+
+ 783, 783, 783, 783, 783, 221, 789, 221,
+ 790, 790, 790, 790, 785, 785, 791, 221,
792, 793, 794, 795, 796, 797, 798, 799,
- 800, 801, 802, 802, 802, 802, 802, 802,
- 802, 802, 802, 802, 803, 791, 790, 791,
- 790, 804, 805, 806, 805, 806, 807, 807,
-
- 782, 782, 782, 808, 782, 782, 782, 782,
- 206, 782, 782, 782, 782, 808, 782, 782,
- 782, 782, 808, 782, 782, 782, 782, 808,
- 782, 782, 782, 782, 808, 782, 782, 782,
-
- 782, 782, 782, 782, 782, 782, 782, 782,
- 782, 808, 809, 810, 810, 206, 206, 206,
- 206, 811, 812, 813, 814, 813, 813, 815,
- 813, 815, 812, 812, 812, 812, 816, 817,
-
- 812, 813, 818, 818, 819, 787, 818, 818,
- 782, 782, 782, 782, 820, 821, 821, 821,
- 816, 816, 816, 813, 816, 816, 822, 816,
- 206, 816, 816, 816, 816, 813, 816, 816,
-
- 816, 816, 813, 816, 816, 816, 816, 813,
- 816, 816, 816, 816, 813, 816, 822, 822,
- 822, 816, 816, 816, 816, 816, 816, 816,
- 822, 813, 822, 822, 822, 206, 823, 823,
-
- 824, 824, 824, 824, 824, 824, 825, 824,
- 824, 824, 824, 824, 824, 206, 826, 824,
- 827, 827, 828, 829, 830, 831, 831, 831,
- 831, 832, 832, 206, 206, 206, 206, 206,
-
- 833, 833, 833, 833, 833, 833, 833, 833,
- 833, 833, 833, 833, 833, 833, 833, 833,
- 833, 833, 833, 833, 833, 833, 833, 833,
- 833, 833, 833, 833, 833, 833, 833, 833,
-
- 833, 833, 834, 833, 833, 833, 835, 833,
- 834, 833, 833, 836, 837, 838, 839, 838,
- 838, 840, 838, 841, 841, 841, 838, 842,
- 837, 843, 844, 845, 845, 841, 841, 834,
-
- 846, 847, 848, 849, 850, 851, 852, 853,
- 854, 855, 856, 856, 857, 857, 857, 857,
- 833, 833, 833, 833, 833, 833, 840, 840,
- 838, 838, 834, 834, 834, 834, 841, 841,
-
- 841, 834, 836, 836, 836, 834, 834, 836,
- 836, 836, 836, 836, 836, 836, 834, 834,
- 834, 841, 841, 841, 841, 834, 834, 834,
- 834, 834, 834, 834, 834, 834, 834, 834,
-
- 834, 834, 841, 836, 845, 841, 841, 836,
- 836, 836, 836, 836, 836, 858, 834, 836,
- 859, 860, 861, 862, 863, 864, 865, 866,
- 867, 868, 869, 869, 869, 870, 871, 871,
-
- 872, 872, 872, 872, 872, 872, 872, 872,
- 872, 872, 872, 872, 872, 872, 872, 872,
- 872, 872, 872, 872, 872, 872, 872, 872,
- 872, 872, 872, 872, 872, 872, 872, 872,
-
- 872, 872, 872, 872, 872, 872, 206, 873,
- 206, 206, 206, 206, 206, 873, 206, 206,
- 874, 874, 874, 874, 874, 874, 874, 874,
- 874, 874, 874, 874, 874, 874, 874, 874,
-
- 874, 874, 874, 874, 874, 874, 874, 874,
- 874, 874, 874, 874, 874, 874, 874, 874,
- 874, 874, 874, 874, 874, 874, 874, 875,
- 875, 876, 876, 877, 878, 879, 879, 879,
-
- 880, 880, 880, 880, 880, 880, 880, 880,
- 880, 880, 880, 880, 880, 880, 880, 880,
- 880, 880, 880, 880, 880, 880, 880, 880,
- 880, 880, 880, 880, 880, 880, 880, 880,
-
- 880, 880, 880, 880, 880, 880, 880, 880,
- 880, 880, 880, 880, 880, 880, 880, 880,
- 880, 880, 880, 880, 880, 880, 880, 880,
- 880, 880, 881, 881, 881, 881, 881, 882,
-
- 883, 884, 884, 884, 884, 884, 884, 884,
- 884, 884, 884, 884, 884, 884, 884, 884,
- 884, 884, 884, 884, 884, 884, 885, 885,
- 885, 885, 885, 885, 885, 885, 885, 885,
-
- 885, 885, 885, 885, 885, 885, 885, 885,
- 885, 885, 885, 885, 885, 885, 885, 885,
- 885, 885, 885, 885, 885, 885, 885, 885,
- 885, 885, 885, 885, 885, 885, 885, 885,
-
- 885, 885, 885, 886, 886, 886, 886, 886,
- 887, 887, 887, 887, 887, 887, 887, 887,
- 887, 887, 887, 887, 887, 887, 887, 887,
- 887, 887, 887, 887, 887, 887, 887, 887,
-
- 887, 887, 887, 888, 888, 888, 888, 888,
- 888, 888, 888, 888, 888, 888, 888, 888,
- 888, 888, 888, 888, 888, 888, 888, 888,
- 888, 888, 888, 888, 888, 888, 888, 888,
-
- 888, 888, 888, 888, 888, 888, 888, 888,
- 888, 888, 888, 888, 888, 888, 888, 888,
- 888, 888, 888, 888, 888, 888, 888, 888,
- 888, 888, 889, 889, 889, 889, 889, 889,
-
- 890, 890, 890, 890, 890, 890, 890, 891,
- 890, 890, 890, 890, 890, 890, 890, 890,
- 890, 890, 890, 890, 890, 890, 890, 890,
- 890, 890, 890, 890, 890, 890, 890, 890,
-
- 890, 890, 890, 890, 890, 890, 890, 890,
- 890, 890, 890, 890, 890, 890, 890, 890,
- 890, 890, 890, 890, 890, 890, 890, 890,
- 890, 890, 890, 890, 890, 890, 890, 890,
-
- 890, 890, 890, 890, 890, 890, 890, 891,
- 890, 206, 890, 890, 890, 890, 206, 206,
- 890, 890, 890, 890, 890, 890, 890, 206,
- 890, 206, 890, 890, 890, 890, 206, 206,
-
- 890, 890, 890, 890, 890, 890, 890, 891,
- 890, 206, 890, 890, 890, 890, 206, 206,
- 890, 890, 890, 890, 890, 890, 890, 890,
- 890, 890, 890, 890, 890, 890, 890, 890,
-
- 890, 890, 890, 890, 890, 890, 890, 890,
- 890, 890, 890, 890, 890, 890, 890, 891,
- 890, 206, 890, 890, 890, 890, 206, 206,
- 890, 890, 890, 890, 890, 890, 890, 206,
-
- 890, 206, 890, 890, 890, 890, 206, 206,
- 890, 890, 890, 890, 890, 890, 890, 891,
- 890, 890, 890, 890, 890, 890, 890, 206,
- 890, 890, 890, 890, 890, 890, 890, 890,
-
- 890, 890, 890, 890, 890, 890, 890, 890,
- 890, 890, 890, 890, 890, 890, 890, 891,
- 890, 890, 890, 890, 890, 890, 890, 890,
- 890, 890, 890, 890, 890, 890, 890, 890,
-
- 890, 890, 890, 890, 890, 890, 890, 890,
- 890, 890, 890, 890, 890, 890, 890, 891,
- 890, 206, 890, 890, 890, 890, 206, 206,
- 890, 890, 890, 890, 890, 890, 890, 891,
-
- 890, 890, 890, 890, 890, 890, 890, 891,
- 890, 890, 890, 890, 890, 890, 890, 890,
- 890, 890, 890, 890, 890, 890, 890, 890,
- 890, 890, 890, 206, 206, 892, 892, 893,
-
- 894, 895, 896, 897, 897, 897, 897, 896,
- 896, 898, 899, 900, 901, 902, 903, 904,
- 905, 906, 907, 907, 907, 907, 907, 907,
- 907, 907, 907, 907, 907, 206, 206, 206,
-
- 891, 891, 891, 891, 891, 891, 891, 891,
- 891, 891, 891, 891, 891, 891, 891, 891,
- 908, 908, 908, 908, 908, 908, 908, 908,
- 908, 908, 206, 206, 206, 206, 206, 206,
-
- 909, 910, 911, 912, 913, 914, 915, 916,
- 917, 918, 919, 920, 921, 922, 923, 924,
- 925, 926, 927, 928, 929, 930, 931, 932,
- 933, 934, 935, 936, 937, 938, 939, 940,
-
- 941, 942, 943, 944, 945, 946, 947, 948,
- 949, 950, 951, 952, 953, 954, 955, 956,
- 957, 958, 959, 960, 961, 962, 963, 964,
- 965, 966, 967, 968, 969, 970, 971, 972,
-
- 973, 974, 975, 976, 977, 978, 979, 980,
- 981, 982, 983, 984, 985, 986, 987, 988,
- 989, 989, 989, 989, 989, 990, 206, 206,
- 991, 991, 991, 991, 991, 991, 206, 206,
-
- 992, 993, 993, 993, 993, 993, 993, 993,
- 993, 993, 993, 993, 993, 993, 993, 993,
- 993, 993, 993, 993, 993, 993, 993, 993,
- 993, 993, 993, 993, 993, 993, 993, 993,
-
- 993, 993, 993, 993, 993, 993, 993, 993,
- 993, 993, 993, 993, 993, 993, 993, 993,
- 993, 993, 993, 993, 993, 993, 993, 993,
- 993, 993, 993, 993, 993, 993, 993, 993,
-
- 993, 993, 993, 993, 993, 993, 993, 993,
- 993, 993, 993, 993, 993, 994, 995, 993,
- 993, 993, 993, 993, 993, 993, 993, 996,
- 996, 996, 996, 996, 996, 996, 996, 996,
-
- 997, 998, 998, 998, 998, 998, 998, 998,
- 998, 998, 998, 998, 998, 998, 998, 998,
- 998, 998, 998, 998, 998, 998, 998, 998,
- 998, 998, 998, 999, 1000, 206, 206, 206,
-
- 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
- 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
- 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
- 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
-
- 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001,
- 1001, 1001, 1001, 1002, 1002, 1002, 1003, 1003,
- 1003, 1004, 1004, 1004, 1004, 1004, 1004, 1004,
- 1004, 206, 206, 206, 206, 206, 206, 206,
-
- 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005,
- 1005, 1005, 1005, 1005, 1005, 1006, 1005, 1005,
- 1005, 1005, 1007, 1007, 1008, 1009, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 1006,
-
- 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010,
- 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010,
- 1010, 1010, 1011, 1011, 1012, 1013, 1013, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014,
- 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014,
- 1014, 1014, 1015, 1015, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016,
- 1016, 1016, 1016, 1016, 1016, 206, 1016, 1016,
- 1016, 206, 1017, 1017, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
+ 800, 801, 221, 221, 802, 802, 803, 803,
+
+ 804, 805, 805, 805, 806, 807, 806, 806,
+ 808, 806, 806, 809, 810, 811, 811, 811,
+ 811, 811, 808, 812, 811, 812, 812, 812,
+ 813, 813, 812, 812, 812, 812, 812, 812,
+
+ 814, 815, 816, 817, 818, 819, 820, 821,
+ 822, 823, 824, 824, 824, 824, 824, 824,
+ 824, 824, 824, 824, 825, 813, 812, 813,
+ 812, 826, 827, 828, 827, 828, 829, 829,
+
+ 804, 804, 804, 830, 804, 804, 804, 804,
+ 221, 804, 804, 804, 804, 830, 804, 804,
+ 804, 804, 830, 804, 804, 804, 804, 830,
+ 804, 804, 804, 804, 830, 804, 804, 804,
+
+ 804, 804, 804, 804, 804, 804, 804, 804,
+ 804, 830, 831, 832, 832, 221, 221, 221,
+ 221, 833, 834, 835, 836, 835, 835, 837,
+ 835, 837, 834, 834, 834, 834, 838, 839,
+
+ 834, 835, 840, 840, 841, 809, 840, 840,
+ 804, 804, 804, 804, 842, 843, 843, 843,
+ 838, 838, 838, 835, 838, 838, 844, 838,
+ 221, 838, 838, 838, 838, 835, 838, 838,
+
+ 838, 838, 835, 838, 838, 838, 838, 835,
+ 838, 838, 838, 838, 835, 838, 844, 844,
+ 844, 838, 838, 838, 838, 838, 838, 838,
+ 844, 835, 844, 844, 844, 221, 845, 845,
+
+ 846, 846, 846, 846, 846, 846, 847, 846,
+ 846, 846, 846, 846, 846, 221, 848, 846,
+ 849, 849, 850, 851, 852, 853, 853, 853,
+ 853, 854, 854, 221, 221, 221, 221, 221,
+
+ 855, 855, 855, 855, 855, 855, 855, 855,
+ 855, 855, 855, 855, 855, 855, 855, 855,
+ 855, 855, 855, 855, 855, 855, 855, 855,
+ 855, 855, 855, 855, 855, 855, 855, 855,
+
+ 855, 855, 856, 855, 855, 855, 857, 855,
+ 856, 855, 855, 858, 859, 860, 861, 860,
+ 860, 862, 860, 863, 863, 863, 860, 864,
+ 859, 865, 866, 867, 867, 863, 863, 856,
+
+ 868, 869, 870, 871, 872, 873, 874, 875,
+ 876, 877, 878, 878, 879, 879, 879, 879,
+ 855, 855, 855, 855, 855, 855, 862, 862,
+ 860, 860, 856, 856, 856, 856, 863, 863,
+
+ 863, 856, 858, 858, 858, 856, 856, 858,
+ 858, 858, 858, 858, 858, 858, 856, 856,
+ 856, 863, 863, 863, 863, 856, 856, 856,
+ 856, 856, 856, 856, 856, 856, 856, 856,
+
+ 856, 856, 863, 858, 867, 863, 863, 858,
+ 858, 858, 858, 858, 858, 880, 856, 858,
+ 881, 882, 883, 884, 885, 886, 887, 888,
+ 889, 890, 891, 891, 891, 892, 893, 893,
+
+ 894, 894, 894, 894, 894, 894, 894, 894,
+ 894, 894, 894, 894, 894, 894, 894, 894,
+ 894, 894, 894, 894, 894, 894, 894, 894,
+ 894, 894, 894, 894, 894, 894, 894, 894,
+
+ 894, 894, 894, 894, 894, 894, 221, 895,
+ 221, 221, 221, 221, 221, 895, 221, 221,
+ 896, 896, 896, 896, 896, 896, 896, 896,
+ 896, 896, 896, 896, 896, 896, 896, 896,
+
+ 896, 896, 896, 896, 896, 896, 896, 896,
+ 896, 896, 896, 896, 896, 896, 896, 896,
+ 896, 896, 896, 896, 896, 896, 896, 897,
+ 897, 898, 898, 899, 900, 901, 901, 901,
+
+ 902, 902, 902, 902, 902, 902, 902, 902,
+ 902, 902, 902, 902, 902, 902, 902, 902,
+ 902, 902, 902, 902, 902, 902, 902, 902,
+ 902, 902, 902, 902, 902, 902, 902, 902,
+
+ 902, 902, 902, 902, 902, 902, 902, 902,
+ 902, 902, 902, 902, 902, 902, 902, 902,
+ 902, 902, 902, 902, 902, 902, 902, 902,
+ 902, 902, 903, 903, 903, 903, 903, 904,
+
+ 905, 906, 906, 906, 906, 906, 906, 906,
+ 906, 906, 906, 906, 906, 906, 906, 906,
+ 906, 906, 906, 906, 906, 906, 907, 907,
+ 907, 907, 907, 907, 907, 907, 907, 907,
+
+ 907, 907, 907, 907, 907, 907, 907, 907,
+ 907, 907, 907, 907, 907, 907, 907, 907,
+ 907, 907, 907, 907, 907, 907, 907, 907,
+ 907, 907, 907, 907, 907, 907, 907, 907,
+
+ 907, 907, 907, 908, 908, 908, 908, 908,
+ 909, 909, 909, 909, 909, 909, 909, 909,
+ 909, 909, 909, 909, 909, 909, 909, 909,
+ 909, 909, 909, 909, 909, 909, 909, 909,
+
+ 909, 909, 909, 910, 910, 910, 910, 910,
+ 910, 910, 910, 910, 910, 910, 910, 910,
+ 910, 910, 910, 910, 910, 910, 910, 910,
+ 910, 910, 910, 910, 910, 910, 910, 910,
+
+ 910, 910, 910, 910, 910, 910, 910, 910,
+ 910, 910, 910, 910, 910, 910, 910, 910,
+ 910, 910, 910, 910, 910, 910, 910, 910,
+ 910, 910, 911, 911, 911, 911, 911, 911,
+
+ 912, 912, 912, 912, 912, 912, 912, 913,
+ 912, 912, 912, 912, 912, 912, 912, 912,
+ 912, 912, 912, 912, 912, 912, 912, 912,
+ 912, 912, 912, 912, 912, 912, 912, 912,
+
+ 912, 912, 912, 912, 912, 912, 912, 912,
+ 912, 912, 912, 912, 912, 912, 912, 912,
+ 912, 912, 912, 912, 912, 912, 912, 912,
+ 912, 912, 912, 912, 912, 912, 912, 912,
+
+ 912, 912, 912, 912, 912, 912, 912, 913,
+ 912, 221, 912, 912, 912, 912, 221, 221,
+ 912, 912, 912, 912, 912, 912, 912, 221,
+ 912, 221, 912, 912, 912, 912, 221, 221,
+
+ 912, 912, 912, 912, 912, 912, 912, 913,
+ 912, 221, 912, 912, 912, 912, 221, 221,
+ 912, 912, 912, 912, 912, 912, 912, 912,
+ 912, 912, 912, 912, 912, 912, 912, 912,
+
+ 912, 912, 912, 912, 912, 912, 912, 912,
+ 912, 912, 912, 912, 912, 912, 912, 913,
+ 912, 221, 912, 912, 912, 912, 221, 221,
+ 912, 912, 912, 912, 912, 912, 912, 221,
+
+ 912, 221, 912, 912, 912, 912, 221, 221,
+ 912, 912, 912, 912, 912, 912, 912, 913,
+ 912, 912, 912, 912, 912, 912, 912, 221,
+ 912, 912, 912, 912, 912, 912, 912, 912,
+
+ 912, 912, 912, 912, 912, 912, 912, 912,
+ 912, 912, 912, 912, 912, 912, 912, 913,
+ 912, 912, 912, 912, 912, 912, 912, 912,
+ 912, 912, 912, 912, 912, 912, 912, 912,
+
+ 912, 912, 912, 912, 912, 912, 912, 912,
+ 912, 912, 912, 912, 912, 912, 912, 913,
+ 912, 221, 912, 912, 912, 912, 221, 221,
+ 912, 912, 912, 912, 912, 912, 912, 913,
+
+ 912, 912, 912, 912, 912, 912, 912, 913,
+ 912, 912, 912, 912, 912, 912, 912, 912,
+ 912, 912, 912, 912, 912, 912, 912, 912,
+ 912, 912, 912, 221, 221, 914, 914, 915,
+
+ 916, 917, 918, 919, 919, 919, 919, 918,
+ 918, 920, 921, 922, 923, 924, 925, 926,
+ 927, 928, 929, 929, 929, 929, 929, 929,
+ 929, 929, 929, 929, 929, 221, 221, 221,
+
+ 913, 913, 913, 913, 913, 913, 913, 913,
+ 913, 913, 913, 913, 913, 913, 913, 913,
+ 930, 930, 930, 930, 930, 930, 930, 930,
+ 930, 930, 221, 221, 221, 221, 221, 221,
+
+ 931, 932, 933, 934, 935, 936, 937, 938,
+ 939, 940, 941, 942, 943, 944, 945, 946,
+ 947, 948, 949, 950, 951, 952, 953, 954,
+ 955, 956, 957, 958, 959, 960, 961, 962,
+
+ 963, 964, 965, 966, 967, 968, 969, 970,
+ 971, 972, 973, 974, 975, 976, 977, 978,
+ 979, 980, 981, 982, 983, 984, 985, 986,
+ 987, 988, 989, 990, 991, 992, 993, 994,
+
+ 995, 996, 997, 998, 999, 1000, 1001, 1002,
+ 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010,
+ 1011, 1011, 1011, 1011, 1011, 1012, 221, 221,
+ 1013, 1013, 1013, 1013, 1013, 1013, 221, 221,
+
+ 1014, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
+ 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
+ 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
+ 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
+
+ 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
+ 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
+ 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
+ 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
+
+ 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
+ 1015, 1015, 1015, 1015, 1015, 1016, 1017, 1015,
+ 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1018,
+ 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018,
+ 1019, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
+ 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
+ 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020,
+ 1020, 1020, 1020, 1021, 1022, 221, 221, 221,
+
+ 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023,
+ 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023,
+ 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023,
+ 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023,
+
+ 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023,
+ 1023, 1023, 1023, 1024, 1024, 1024, 1025, 1025,
+ 1025, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
+ 1026, 221, 221, 221, 221, 221, 221, 221,
+
+ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
+ 1027, 1027, 1027, 1027, 1027, 1028, 1027, 1027,
+ 1027, 1027, 1029, 1029, 1030, 1031, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 1028,
+
+ 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032,
+ 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032,
+ 1032, 1032, 1033, 1033, 1034, 1035, 1035, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1037, 1037, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
+ 1038, 1038, 1038, 1038, 1038, 221, 1038, 1038,
+ 1038, 221, 1039, 1039, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040,
+ 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040,
+ 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040,
+ 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040,
+
+ 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040,
+ 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040,
+ 1040, 1040, 1040, 1040, 1041, 1041, 1042, 1043,
+ 1043, 1043, 1043, 1043, 1043, 1043, 1042, 1042,
+
+ 1042, 1042, 1042, 1042, 1042, 1042, 1043, 1042,
+ 1042, 1043, 1043, 1043, 1043, 1043, 1043, 1043,
+ 1043, 1043, 1044, 1043, 1045, 1045, 1046, 1047,
+ 1048, 1049, 1048, 1050, 1040, 1051, 221, 221,
+
+ 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059,
+ 1060, 1061, 221, 221, 221, 221, 221, 221,
+ 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
+ 1062, 1062, 221, 221, 221, 221, 221, 221,
+
+ 1063, 1063, 1064, 1065, 1066, 1067, 1068, 1069,
+ 1070, 1071, 1072, 1073, 1073, 1073, 1074, 1075,
+ 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083,
+ 1084, 1085, 221, 221, 221, 221, 221, 221,
+
+ 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086,
+ 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086,
+ 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086,
+ 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086,
+
+ 1086, 1086, 1086, 1087, 1086, 1086, 1086, 1086,
+ 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086,
+ 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086,
+ 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086,
+
+ 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086,
+ 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086,
+ 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086,
+ 1088, 221, 221, 221, 221, 221, 221, 221,
+
+ 1089, 1089, 1089, 1089, 1089, 1090, 1090, 1086,
+ 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086,
+ 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086,
+ 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086,
+
+ 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086,
+ 1086, 1091, 1092, 221, 221, 221, 221, 221,
1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018,
1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018,
+
1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018,
1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018,
-
1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018,
1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018,
- 1018, 1018, 1018, 1018, 1019, 1019, 1020, 1021,
- 1021, 1021, 1021, 1021, 1021, 1021, 1020, 1020,
-
- 1020, 1020, 1020, 1020, 1020, 1020, 1021, 1020,
- 1020, 1021, 1021, 1021, 1021, 1021, 1021, 1021,
- 1021, 1021, 1022, 1021, 1023, 1023, 1024, 1025,
- 1023, 1026, 1023, 1027, 1018, 1028, 206, 206,
-
- 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036,
- 1037, 1038, 206, 206, 206, 206, 206, 206,
- 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
- 1039, 1039, 206, 206, 206, 206, 206, 206,
-
- 1040, 1040, 1041, 1042, 1043, 1044, 1045, 1046,
- 1047, 1048, 1049, 1050, 1050, 1050, 1051, 1052,
- 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060,
- 1061, 1062, 206, 206, 206, 206, 206, 206,
-
- 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
- 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
- 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
- 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
-
- 1063, 1063, 1063, 1064, 1063, 1063, 1063, 1063,
- 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
- 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
- 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
-
- 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
- 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
- 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
- 1065, 206, 206, 206, 206, 206, 206, 206,
-
- 1066, 1066, 1066, 1066, 1066, 1067, 1067, 1063,
- 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
- 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
- 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
-
- 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
- 1063, 1068, 1069, 206, 206, 206, 206, 206,
- 996, 996, 996, 996, 996, 996, 996, 996,
- 996, 996, 996, 996, 996, 996, 996, 996,
-
- 996, 996, 996, 996, 996, 996, 996, 996,
- 996, 996, 996, 996, 996, 996, 996, 996,
- 996, 996, 996, 996, 996, 996, 996, 996,
- 996, 996, 996, 996, 996, 996, 996, 996,
-
- 996, 996, 996, 996, 996, 996, 996, 996,
- 996, 996, 996, 996, 996, 996, 996, 996,
- 996, 996, 996, 996, 996, 996, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
- 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
- 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
- 1070, 1070, 1070, 1070, 1070, 1071, 1071, 206,
-
- 1072, 1072, 1072, 1073, 1073, 1073, 1073, 1072,
- 1072, 1073, 1073, 1073, 206, 206, 206, 206,
- 1073, 1073, 1072, 1073, 1073, 1073, 1073, 1073,
- 1073, 1074, 1075, 1076, 206, 206, 206, 206,
-
- 1077, 206, 206, 206, 1078, 1078, 1079, 1080,
- 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088,
- 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
- 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
-
- 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
- 1089, 1089, 1089, 1089, 1089, 1089, 206, 206,
- 1089, 1089, 1089, 1089, 1089, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090,
- 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090,
- 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090,
- 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090,
-
- 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090,
- 1090, 1090, 1091, 1091, 206, 206, 206, 206,
- 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090,
- 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090,
-
- 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090,
- 1090, 1090, 206, 206, 206, 206, 206, 206,
- 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099,
- 1100, 1101, 1102, 206, 206, 206, 1103, 1103,
-
- 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104,
- 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104,
- 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104,
- 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104,
-
- 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105,
- 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105,
- 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1106,
- 1107, 1108, 1108, 1109, 206, 206, 1110, 1110,
-
- 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
- 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
- 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
- 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
-
- 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
- 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
- 1111, 1111, 1111, 1111, 1111, 1112, 1113, 1112,
- 1113, 1113, 1113, 1113, 1113, 1113, 1113, 206,
-
- 1114, 1115, 1113, 1115, 1115, 1113, 1113, 1113,
- 1113, 1113, 1113, 1113, 1113, 1112, 1112, 1112,
- 1112, 1112, 1112, 1113, 1113, 1116, 1116, 1116,
- 1116, 1116, 1116, 1116, 1116, 206, 206, 1117,
-
- 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125,
- 1126, 1127, 206, 206, 206, 206, 206, 206,
- 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125,
- 1126, 1127, 206, 206, 206, 206, 206, 206,
+ 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018,
+ 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018,
+ 1018, 1018, 1018, 1018, 1018, 1018, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
+ 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
+ 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
+ 1093, 1093, 1093, 1093, 1093, 1094, 1094, 221,
+
+ 1095, 1095, 1095, 1096, 1096, 1096, 1096, 1095,
+ 1095, 1096, 1096, 1096, 221, 221, 221, 221,
+ 1096, 1096, 1095, 1096, 1096, 1096, 1096, 1096,
+ 1096, 1097, 1098, 1099, 221, 221, 221, 221,
+
+ 1100, 221, 221, 221, 1101, 1101, 1102, 1103,
+ 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111,
+ 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112,
+ 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112,
+
+ 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112,
+ 1112, 1112, 1112, 1112, 1112, 1112, 221, 221,
+ 1112, 1112, 1112, 1112, 1112, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
+ 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
+ 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
+ 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
+
+ 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
+ 1113, 1113, 1114, 1114, 221, 221, 221, 221,
+ 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
+ 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
+
+ 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
+ 1113, 1113, 221, 221, 221, 221, 221, 221,
+ 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122,
+ 1123, 1124, 1125, 221, 221, 221, 1126, 1126,
+
+ 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127,
+ 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127,
+ 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127,
+ 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127,
+
+ 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128,
+ 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128,
1128, 1128, 1128, 1128, 1128, 1128, 1128, 1129,
- 1130, 1130, 1130, 1130, 1128, 1128, 206, 206,
- 1131, 1131, 1131, 1131, 1131, 1132, 1132, 1132,
- 1132, 1132, 1132, 1131, 1131, 1132, 1133, 1134,
-
- 1134, 1135, 1135, 1136, 1136, 1135, 1135, 1135,
- 1135, 1135, 1136, 1135, 1135, 1135, 1135, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 1137, 1137, 1137, 1137, 1138, 1139, 1140, 1139,
- 1140, 1139, 1140, 1139, 1140, 1139, 1140, 1139,
- 1139, 1139, 1140, 1139, 1139, 1139, 1139, 1139,
- 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139,
-
- 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139,
- 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139,
- 1139, 1139, 1139, 1139, 1141, 1142, 1137, 1137,
- 1137, 1137, 1137, 1143, 1137, 1143, 1138, 1138,
-
- 1143, 1143, 1137, 1143, 1144, 1139, 1139, 1139,
- 1139, 1139, 1139, 1139, 1145, 206, 206, 206,
- 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153,
- 1154, 1155, 1156, 1156, 1157, 1158, 1156, 1156,
-
- 1158, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
- 1159, 1159, 1159, 1160, 1161, 1160, 1160, 1160,
- 1160, 1160, 1160, 1160, 1159, 1159, 1159, 1159,
- 1159, 1159, 1159, 1159, 1159, 1162, 1162, 206,
-
- 1163, 1163, 1164, 1165, 1165, 1165, 1165, 1165,
- 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
- 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
- 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
-
- 1165, 1164, 1163, 1163, 1163, 1163, 1164, 1164,
- 1163, 1163, 1166, 1167, 1168, 1168, 1165, 1165,
+ 1130, 1131, 1131, 1132, 221, 221, 1133, 1133,
+
+ 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134,
+ 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134,
+ 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134,
+ 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134,
+
+ 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134,
+ 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134,
+ 1134, 1134, 1134, 1134, 1134, 1135, 1136, 1135,
+ 1136, 1136, 1136, 1136, 1136, 1136, 1136, 221,
+
+ 1137, 1138, 1136, 1138, 1138, 1136, 1136, 1136,
+ 1136, 1136, 1136, 1136, 1136, 1135, 1135, 1135,
+ 1135, 1135, 1135, 1136, 1136, 1139, 1139, 1139,
+ 1139, 1139, 1139, 1139, 1139, 221, 221, 1140,
+
+ 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148,
+ 1149, 1150, 221, 221, 221, 221, 221, 221,
+ 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148,
+ 1149, 1150, 221, 221, 221, 221, 221, 221,
+
+ 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1152,
+ 1153, 1153, 1153, 1153, 1151, 1151, 221, 221,
+ 1154, 1154, 1154, 1154, 1154, 1155, 1155, 1155,
+ 1155, 1155, 1155, 1154, 1154, 1155, 1156, 1157,
+
+ 1157, 1158, 1158, 1159, 1159, 1158, 1158, 1158,
+ 1158, 1158, 1159, 1158, 1158, 1158, 1158, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 1160, 1160, 1160, 1160, 1161, 1162, 1163, 1162,
+ 1163, 1162, 1163, 1162, 1163, 1162, 1163, 1162,
+ 1162, 1162, 1163, 1162, 1162, 1162, 1162, 1162,
+ 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162,
+
+ 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162,
+ 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162,
+ 1162, 1162, 1162, 1162, 1164, 1165, 1160, 1160,
+ 1160, 1160, 1160, 1166, 1160, 1166, 1161, 1161,
+
+ 1166, 1166, 1160, 1166, 1167, 1162, 1162, 1162,
+ 1162, 1162, 1162, 1162, 1168, 221, 221, 221,
1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176,
- 1177, 1178, 1179, 1179, 1179, 1179, 1179, 1179,
-
- 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180,
- 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180,
- 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180,
- 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180,
+ 1177, 1178, 1179, 1179, 1180, 1181, 1179, 1179,
- 1180, 1180, 1180, 1180, 1180, 1180, 1181, 1182,
- 1183, 1183, 1182, 1182, 1182, 1183, 1182, 1183,
- 1183, 1183, 1184, 1184, 206, 206, 206, 206,
- 206, 206, 206, 206, 1185, 1185, 1185, 1185,
+ 1181, 1182, 1182, 1182, 1182, 1182, 1182, 1182,
+ 1182, 1182, 1182, 1183, 1184, 1183, 1183, 1183,
+ 1183, 1183, 1183, 1183, 1182, 1182, 1182, 1182,
+ 1182, 1182, 1182, 1182, 1182, 1185, 1185, 221,
- 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186,
- 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186,
- 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186,
- 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186,
-
- 1186, 1186, 1186, 1186, 1187, 1187, 1187, 1187,
- 1187, 1187, 1187, 1187, 1188, 1188, 1188, 1188,
- 1188, 1188, 1188, 1188, 1187, 1187, 1188, 1189,
- 206, 206, 206, 1190, 1190, 1191, 1191, 1191,
+ 1186, 1186, 1187, 1188, 1188, 1188, 1188, 1188,
+ 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188,
+ 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188,
+ 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188,
+ 1188, 1187, 1186, 1186, 1186, 1186, 1187, 1187,
+ 1186, 1186, 1189, 1190, 1191, 1191, 1188, 1188,
1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199,
- 1200, 1201, 206, 206, 206, 1186, 1186, 1186,
- 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209,
- 1210, 1211, 1212, 1212, 1212, 1212, 1212, 1212,
-
- 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212,
- 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212,
- 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212,
- 1213, 1213, 1213, 1213, 1213, 1213, 1214, 1214,
-
- 1215, 1216, 1217, 1218, 1218, 1219, 1220, 1221,
- 1222, 206, 206, 206, 206, 206, 206, 206,
- 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
- 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
-
- 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
- 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
- 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
- 1223, 1223, 1223, 206, 206, 1223, 1223, 1223,
-
- 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 1225, 1225, 1225, 1226, 1227, 1228, 1228, 1228,
- 1228, 1228, 1225, 1225, 1228, 1228, 1228, 1228,
-
- 1225, 1229, 1227, 1227, 1227, 1227, 1227, 1227,
- 1227, 1230, 1230, 1230, 1230, 1228, 1230, 1230,
- 1230, 1230, 1230, 1231, 1232, 1231, 1231, 1233,
- 1131, 1131, 1234, 206, 206, 206, 206, 206,
-
- 118, 118, 118, 118, 118, 118, 118, 118,
- 118, 118, 118, 118, 118, 118, 118, 118,
- 118, 118, 118, 118, 118, 118, 118, 118,
- 118, 118, 118, 118, 118, 118, 118, 118,
-
- 118, 118, 118, 118, 118, 118, 1235, 1235,
- 1235, 1235, 1235, 1236, 1237, 1237, 1237, 1238,
- 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237,
- 1237, 1237, 1237, 1238, 1237, 1237, 1237, 1237,
-
- 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237,
- 1237, 1237, 1237, 1237, 1237, 1237, 1238, 1237,
- 1237, 1237, 1237, 1237, 1237, 1237, 1237, 1237,
- 1237, 1237, 1237, 1237, 1237, 1239, 1239, 1239,
-
- 1239, 1239, 1237, 1237, 1237, 1237, 1239, 1239,
- 1239, 1239, 1239, 118, 119, 119, 119, 119,
- 119, 119, 119, 119, 119, 119, 119, 119,
- 1240, 1241, 119, 119, 119, 1242, 119, 119,
-
- 119, 119, 119, 119, 119, 119, 119, 119,
- 119, 119, 119, 119, 119, 119, 1243, 119,
- 119, 119, 119, 119, 119, 119, 119, 119,
- 119, 119, 119, 1244, 1244, 1244, 1244, 1244,
-
- 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244,
- 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244,
- 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244,
- 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1245,
-
- 195, 195, 194, 195, 1246, 1246, 1246, 1246,
- 1246, 1246, 1247, 1248, 1248, 1249, 1250, 1251,
- 1252, 1248, 1248, 1248, 1248, 1248, 1248, 1248,
- 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248,
-
- 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1131,
- 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131,
- 1131, 1131, 1131, 1131, 1131, 1131, 1253, 1254,
- 1254, 1255, 1256, 1257, 1258, 1228, 1246, 1247,
-
- 74, 75, 74, 75, 74, 75, 74, 75,
- 74, 75, 74, 75, 74, 75, 74, 75,
- 74, 75, 74, 75, 74, 75, 74, 75,
- 74, 75, 74, 75, 74, 75, 74, 75,
-
- 74, 75, 74, 75, 74, 75, 74, 75,
- 74, 75, 74, 75, 74, 75, 74, 75,
- 74, 75, 74, 75, 74, 75, 1259, 1260,
- 1261, 1262, 1263, 1264, 1265, 1265, 1266, 1265,
-
- 74, 75, 74, 75, 74, 75, 74, 75,
- 74, 75, 74, 75, 74, 75, 74, 75,
- 74, 75, 74, 75, 74, 75, 74, 75,
- 74, 75, 1267, 1268, 1267, 1268, 1267, 1268,
-
- 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269,
- 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270,
- 1269, 1269, 1269, 1269, 1269, 1269, 206, 206,
- 1270, 1270, 1270, 1270, 1270, 1270, 206, 206,
-
- 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269,
- 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270,
- 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269,
- 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270,
-
- 1269, 1269, 1269, 1269, 1269, 1269, 206, 206,
- 1270, 1270, 1270, 1270, 1270, 1270, 206, 206,
- 1271, 1269, 1272, 1269, 1273, 1269, 1274, 1269,
- 206, 1270, 206, 1270, 206, 1270, 206, 1270,
-
- 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269,
- 1270, 1270, 1270, 1270, 1270, 1270, 1270, 1270,
- 1275, 1276, 1277, 1278, 1277, 1278, 1279, 1280,
- 1281, 1282, 1283, 1284, 1285, 1286, 206, 206,
-
- 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294,
- 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302,
- 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310,
- 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318,
-
- 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326,
- 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334,
- 1269, 1269, 1335, 1336, 1337, 206, 1338, 1339,
- 1270, 1270, 1340, 1341, 1342, 211, 1343, 211,
-
- 211, 1344, 1345, 1346, 1347, 206, 1348, 1349,
- 1350, 1351, 1350, 1351, 1352, 1344, 1344, 1344,
- 1269, 1269, 1353, 1354, 206, 206, 1355, 1356,
- 1270, 1270, 1357, 1358, 206, 1344, 1344, 1344,
-
- 1269, 1269, 1359, 1360, 1361, 1362, 1363, 1364,
- 1270, 1270, 1365, 1366, 1367, 1344, 1368, 1368,
- 206, 206, 1369, 1370, 1371, 206, 1372, 1373,
- 1374, 1375, 1376, 1377, 1378, 1379, 211, 206,
-
- 1380, 1380, 1381, 1381, 1381, 1381, 1381, 1382,
- 1381, 1381, 1381, 1383, 1384, 1385, 1386, 1387,
- 1388, 1389, 1388, 1390, 1391, 1392, 53, 1393,
- 1394, 1395, 1396, 1397, 1397, 1398, 1396, 1397,
-
- 53, 53, 53, 53, 1399, 1400, 1400, 1401,
- 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409,
- 1410, 1410, 1410, 1411, 1411, 1412, 1413, 1413,
- 53, 1414, 1415, 53, 1416, 1417, 1393, 43,
-
- 43, 53, 53, 53, 1418, 1419, 1420, 1421,
- 1422, 1423, 1424, 1424, 1424, 1424, 1425, 1425,
- 1425, 1425, 1426, 1427, 1428, 1429, 1430, 1431,
- 1430, 1430, 1430, 1430, 1429, 1430, 1430, 1432,
-
- 1433, 1434, 1434, 1434, 1435, 1436, 1437, 1438,
- 1439, 1440, 1441, 1441, 1441, 1441, 1441, 1441,
- 1442, 1443, 206, 206, 1444, 1445, 1446, 1447,
- 1448, 1449, 1450, 1451, 1452, 1453, 1454, 164,
-
- 1442, 67, 62, 63, 1444, 1445, 1446, 1447,
- 1448, 1449, 1450, 1451, 1452, 1453, 1454, 206,
- 1244, 1244, 1244, 1244, 1244, 1455, 1455, 1455,
- 1455, 1455, 1455, 1455, 1455, 206, 206, 206,
-
- 51, 51, 51, 51, 51, 51, 51, 50,
- 1456, 51, 51, 1457, 1458, 1459, 1459, 1459,
- 1460, 1460, 1461, 1461, 1461, 1461, 1462, 1463,
- 1463, 1464, 1465, 1466, 1467, 1467, 1468, 1469,
-
- 1470, 1471, 1471, 1471, 1471, 1471, 1471, 1471,
- 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471,
- 177, 177, 184, 184, 177, 177, 177, 177,
- 184, 184, 184, 177, 177, 1472, 1472, 1472,
-
- 1472, 177, 1473, 1473, 1474, 1475, 1475, 201,
- 1476, 201, 1475, 1477, 1247, 1247, 1247, 1247,
- 1248, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 1478, 1478, 1479, 1480, 52, 1478, 1478, 1479,
- 52, 1480, 1481, 1479, 1479, 1479, 1481, 1481,
- 1479, 1479, 1479, 1481, 52, 1479, 1482, 52,
- 58, 1479, 1479, 1479, 1479, 1479, 52, 52,
-
- 1483, 1483, 1484, 52, 1479, 52, 1485, 52,
- 1479, 52, 1486, 1487, 1479, 1479, 1488, 1481,
- 1479, 1479, 1489, 1479, 1481, 1490, 1490, 1490,
- 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1496,
-
- 1497, 1426, 1426, 1426, 1426, 1496, 1495, 1495,
- 1495, 1495, 1498, 1426, 1499, 1500, 1501, 1502,
- 1503, 1503, 1503, 69, 69, 69, 69, 69,
- 69, 69, 69, 69, 69, 69, 69, 69,
-
- 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
- 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504,
- 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505,
- 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1505,
-
- 1506, 1506, 1506, 1507, 127, 1508, 1508, 1508,
- 1508, 1503, 1509, 1509, 206, 206, 206, 206,
- 58, 58, 58, 58, 1510, 55, 55, 55,
- 55, 55, 1511, 1511, 52, 52, 52, 52,
-
- 58, 52, 52, 58, 52, 52, 58, 52,
- 52, 55, 55, 52, 52, 52, 1511, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
-
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 1512, 1511, 1511,
- 52, 52, 58, 52, 58, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
-
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 1492, 1492, 1492, 1492, 1492,
- 1492, 1492, 1492, 1492, 1426, 1426, 1426, 1426,
- 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426,
-
- 58, 58, 58, 58, 1511, 58, 58, 58,
- 1513, 1514, 1513, 1515, 1516, 1515, 58, 58,
- 58, 58, 1517, 61, 58, 1518, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 1519,
-
- 1520, 1521, 1522, 58, 1523, 58, 1511, 58,
- 58, 58, 58, 58, 1524, 1524, 58, 1524,
- 1524, 58, 58, 58, 58, 58, 58, 58,
- 58, 58, 58, 58, 1525, 1526, 58, 58,
-
- 58, 1511, 58, 1527, 1511, 1528, 58, 1511,
- 58, 1511, 58, 58, 1529, 58, 58, 58,
- 58, 58, 1525, 1526, 1525, 1526, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 58,
-
- 1530, 58, 1511, 58, 1525, 1526, 1525, 1526,
- 1525, 1526, 1525, 1526, 58, 1511, 1531, 1532,
- 1533, 1534, 1525, 1526, 1533, 1534, 1525, 1526,
- 1533, 1534, 1525, 1526, 1525, 1526, 1525, 1526,
-
- 1533, 1534, 1525, 1526, 1533, 1534, 1525, 1526,
- 1533, 1534, 1525, 1526, 58, 58, 58, 1525,
- 1526, 1525, 1526, 58, 58, 58, 58, 58,
- 1535, 58, 58, 58, 58, 58, 58, 58,
-
- 58, 58, 1525, 1526, 58, 58, 1536, 58,
- 1537, 1538, 58, 1538, 1511, 1511, 1511, 1511,
- 1525, 1526, 1525, 1526, 1525, 1526, 1525, 1526,
- 1539, 58, 58, 58, 58, 58, 58, 58,
-
- 58, 58, 58, 58, 58, 58, 58, 58,
- 58, 1525, 1526, 1525, 1526, 1540, 58, 58,
- 1525, 1526, 58, 58, 58, 58, 1525, 1526,
- 1525, 1526, 1525, 1526, 1525, 1526, 1525, 1526,
-
- 1533, 1534, 1533, 1534, 1525, 1526, 1525, 1526,
- 1525, 1526, 1533, 1534, 1533, 1534, 58, 1541,
- 1525, 1526, 1542, 1542, 1542, 1426, 1543, 1543,
- 1426, 1426, 1544, 1544, 1544, 1545, 1545, 1426,
-
- 52, 1492, 52, 52, 52, 52, 52, 52,
- 1419, 1420, 1419, 1420, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 1546, 1546, 52, 52, 52, 52,
-
- 58, 58, 52, 52, 52, 52, 52, 52,
- 55, 1547, 1548, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 1549, 1549,
- 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549,
-
- 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549,
- 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549,
- 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549,
+ 1200, 1201, 1202, 1202, 1202, 1202, 1202, 1202,
+
+ 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203,
+ 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203,
+ 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203,
+ 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203,
+
+ 1203, 1203, 1203, 1203, 1203, 1203, 1204, 1205,
+ 1206, 1206, 1205, 1205, 1205, 1206, 1205, 1206,
+ 1206, 1206, 1207, 1207, 221, 221, 221, 221,
+ 221, 221, 221, 221, 1208, 1208, 1208, 1208,
+
+ 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
+ 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
+ 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
+ 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
+
+ 1209, 1209, 1209, 1209, 1210, 1210, 1210, 1210,
+ 1210, 1210, 1210, 1210, 1211, 1211, 1211, 1211,
+ 1211, 1211, 1211, 1211, 1210, 1210, 1211, 1212,
+ 221, 221, 221, 1213, 1213, 1214, 1214, 1214,
+
+ 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222,
+ 1223, 1224, 221, 221, 221, 1209, 1209, 1209,
+ 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232,
+ 1233, 1234, 1235, 1235, 1235, 1235, 1235, 1235,
+
+ 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+ 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+ 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+ 1236, 1236, 1236, 1236, 1236, 1236, 1237, 1237,
+
+ 1238, 1239, 1240, 1241, 1241, 1242, 1243, 1244,
+ 1245, 221, 221, 221, 221, 221, 221, 221,
+ 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246,
+ 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246,
+
+ 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246,
+ 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246,
+ 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246,
+ 1246, 1246, 1246, 221, 221, 1246, 1246, 1246,
+
+ 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 1248, 1248, 1248, 1249, 1250, 1251, 1251, 1251,
+ 1251, 1251, 1248, 1248, 1251, 1251, 1251, 1251,
+
+ 1248, 1252, 1250, 1250, 1250, 1250, 1250, 1250,
+ 1250, 1253, 1253, 1253, 1253, 1251, 1253, 1253,
+ 1253, 1253, 1253, 1254, 1255, 1254, 1254, 1256,
+ 1154, 1154, 1257, 221, 221, 221, 221, 221,
+
+ 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129,
+ 129, 129, 129, 129, 129, 129, 129, 129,
+
+ 129, 129, 129, 129, 129, 129, 1258, 1258,
+ 1258, 1258, 1258, 1259, 1260, 1260, 1260, 1261,
+ 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260,
+ 1260, 1260, 1260, 1261, 1260, 1260, 1260, 1260,
+
+ 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260,
+ 1260, 1260, 1260, 1260, 1260, 1260, 1261, 1260,
+ 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260,
+ 1260, 1260, 1260, 1260, 1260, 1262, 1262, 1262,
+
+ 1262, 1262, 1260, 1260, 1260, 1260, 1262, 1262,
+ 1262, 1262, 1262, 129, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130,
+ 1263, 1264, 130, 130, 130, 1265, 130, 130,
+
+ 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 130, 130, 130, 1266, 130,
+ 130, 130, 130, 130, 130, 130, 130, 130,
+ 130, 130, 130, 1267, 1267, 1267, 1267, 1267,
+
+ 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267,
+ 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267,
+ 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267,
+ 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1268,
+
+ 1269, 1269, 1270, 1269, 1271, 1271, 1271, 1271,
+ 1271, 1271, 1272, 1273, 1273, 1274, 1275, 1276,
+ 1277, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
+ 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
+
+ 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1154,
+ 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154,
+ 1154, 1154, 1154, 1154, 1154, 1154, 1278, 1279,
+ 1279, 1280, 1281, 1282, 1283, 1251, 1271, 1272,
+
+ 81, 83, 81, 83, 81, 83, 81, 83,
+ 81, 83, 81, 83, 81, 83, 81, 83,
+ 81, 83, 81, 83, 81, 83, 81, 83,
+ 81, 83, 81, 83, 81, 83, 81, 83,
+
+ 81, 83, 81, 83, 81, 83, 81, 83,
+ 81, 83, 81, 83, 81, 83, 81, 83,
+ 81, 83, 81, 83, 81, 83, 1284, 1285,
+ 1286, 1287, 1288, 1289, 1290, 1290, 1291, 1290,
+
+ 81, 83, 81, 83, 81, 83, 81, 83,
+ 81, 83, 81, 83, 81, 83, 81, 83,
+ 81, 83, 81, 83, 81, 83, 81, 83,
+ 81, 83, 1292, 1293, 1292, 1293, 1292, 1293,
+
+ 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294,
+ 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295,
+ 1294, 1294, 1294, 1294, 1294, 1294, 221, 221,
+ 1295, 1295, 1295, 1295, 1295, 1295, 221, 221,
+
+ 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294,
+ 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295,
+ 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294,
+ 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295,
+
+ 1294, 1294, 1294, 1294, 1294, 1294, 221, 221,
+ 1295, 1295, 1295, 1295, 1295, 1295, 221, 221,
+ 1296, 1294, 1297, 1294, 1298, 1294, 1299, 1294,
+ 221, 1295, 221, 1295, 221, 1295, 221, 1295,
+
+ 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294,
+ 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295,
+ 1300, 1301, 1302, 1303, 1302, 1303, 1304, 1305,
+ 1306, 1307, 1308, 1309, 1310, 1311, 221, 221,
+
+ 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319,
+ 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327,
+ 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335,
+ 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343,
+
+ 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351,
+ 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359,
+ 1294, 1294, 1360, 1361, 1362, 221, 1363, 1364,
+ 1295, 1295, 1365, 1366, 1367, 226, 1368, 226,
+
+ 226, 1369, 1370, 1371, 1372, 221, 1373, 1374,
+ 1375, 1376, 1375, 1376, 1377, 1369, 1369, 1369,
+ 1294, 1294, 1378, 1379, 221, 221, 1380, 1381,
+ 1295, 1295, 1382, 1383, 221, 1369, 1369, 1369,
+
+ 1294, 1294, 1384, 1385, 1386, 1387, 1388, 1389,
+ 1295, 1295, 1390, 1391, 1392, 1369, 1393, 1393,
+ 221, 221, 1394, 1395, 1396, 221, 1397, 1398,
+ 1399, 1400, 1401, 1402, 1403, 1404, 226, 221,
+
+ 1405, 1405, 1406, 1406, 1406, 1406, 1406, 1407,
+ 1406, 1406, 1406, 1408, 1409, 1410, 1411, 1412,
+ 1413, 1414, 1415, 1416, 1417, 1418, 54, 1419,
+ 1420, 1421, 1422, 1423, 1424, 1425, 1422, 1423,
+
+ 54, 54, 54, 1426, 1427, 1428, 1428, 1429,
+ 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437,
+ 1438, 1439, 1438, 1440, 1441, 1442, 1443, 1443,
+ 1426, 1444, 1445, 54, 1446, 1447, 1448, 1449,
+
+ 1449, 1426, 1426, 1426, 1450, 1451, 1452, 1453,
+ 1454, 1455, 1456, 1456, 1456, 1456, 1457, 1457,
+ 1457, 1457, 1458, 1459, 1460, 1461, 1462, 1463,
+ 1462, 1462, 1462, 1462, 1461, 1462, 1462, 1464,
+
+ 1465, 1466, 1466, 1466, 1467, 1468, 1469, 1470,
+ 1471, 1472, 1473, 1473, 1473, 1473, 1473, 1473,
+ 1474, 1475, 221, 221, 1476, 1477, 1478, 1479,
+ 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487,
+
+ 1474, 70, 65, 66, 1476, 1477, 1478, 1479,
+ 1480, 1481, 1482, 1483, 1484, 1485, 1486, 221,
+ 1267, 1267, 1267, 1267, 1267, 1488, 1488, 1488,
+ 1488, 1488, 1488, 1488, 1488, 221, 221, 221,
+
+ 768, 768, 768, 768, 768, 768, 768, 1489,
+ 1490, 1491, 768, 1492, 1493, 1494, 1494, 1494,
+ 1495, 1495, 1496, 1496, 1496, 1496, 1497, 1498,
+ 1498, 1499, 1500, 1501, 1502, 1502, 1503, 1504,
+
+ 1505, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 288, 288, 1507, 1507, 288, 288, 288, 288,
+ 1507, 1507, 1507, 288, 288, 1508, 1508, 1508,
+
+ 1508, 288, 1509, 1509, 1510, 1511, 1511, 1512,
+ 1513, 1512, 1511, 1514, 1272, 1272, 1272, 1272,
+ 1273, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 1515, 1515, 1516, 1517, 1518, 1519, 1515, 1516,
+ 1518, 1517, 1520, 1516, 1516, 1516, 1520, 1520,
+ 1516, 1516, 1516, 1521, 1518, 1516, 1522, 1518,
+ 1523, 1516, 1516, 1516, 1516, 1516, 1518, 1518,
+
+ 1524, 1525, 1526, 1518, 1516, 1518, 1527, 1518,
+ 1516, 1518, 1528, 1529, 1516, 1516, 1530, 1520,
+ 1516, 1516, 1531, 1516, 1520, 1532, 1532, 1532,
+ 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1538,
+
+ 1539, 1458, 1458, 1458, 1458, 1538, 1537, 1537,
+ 1537, 1537, 1540, 1458, 1541, 1542, 1543, 1544,
+ 1545, 1545, 1545, 72, 72, 1546, 1546, 1546,
+ 1546, 1546, 1546, 72, 72, 72, 72, 1546,
+
+ 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
+ 1547, 1547, 1547, 1547, 1548, 1548, 1548, 1548,
1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549,
+ 1549, 1549, 1550, 1550, 1550, 1550, 1550, 1550,
+
+ 1551, 1551, 1551, 1552, 138, 1553, 1553, 1553,
+ 1553, 1554, 1555, 1555, 221, 221, 221, 221,
+ 75, 75, 75, 75, 1556, 61, 61, 61,
+ 61, 61, 1557, 1557, 1518, 1518, 1518, 1518,
+
+ 1523, 1518, 1518, 1523, 1518, 1518, 1523, 1518,
+ 1518, 56, 56, 1518, 1518, 1518, 1557, 1518,
+ 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518,
+ 1558, 1558, 1518, 1518, 1518, 1518, 1518, 1518,
+
+ 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518,
+ 1518, 1518, 1518, 1518, 1518, 1559, 1557, 1557,
+ 1518, 1518, 75, 1518, 75, 1518, 1518, 1518,
+ 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518,
+
+ 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1558,
+ 1518, 1518, 1518, 1534, 1534, 1534, 1534, 1534,
+ 1534, 1534, 1534, 1534, 1458, 1458, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458,
+
+ 75, 1523, 75, 75, 1557, 1523, 1523, 75,
+ 1560, 1561, 1562, 1563, 1564, 1565, 1523, 75,
+ 1523, 75, 1566, 1567, 1523, 1568, 1523, 1523,
+ 1523, 1523, 75, 1523, 1523, 75, 75, 1569,
+
+ 1570, 1571, 1572, 75, 1573, 75, 1557, 75,
+ 75, 75, 75, 75, 1574, 1575, 75, 1575,
+ 1575, 1523, 1523, 1523, 75, 75, 75, 75,
+ 1523, 1523, 1523, 1523, 1576, 1577, 1523, 1523,
+
+ 1523, 1557, 1523, 1578, 1557, 1579, 1523, 1557,
+ 75, 1557, 1523, 1523, 1580, 1523, 1523, 1523,
+ 1523, 1523, 1576, 1581, 1582, 1581, 1523, 1523,
+ 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523,
+
+ 1583, 75, 1557, 1523, 1576, 1577, 1576, 1577,
+ 1582, 1581, 1576, 1577, 1523, 1557, 1584, 1585,
+ 1586, 1587, 1582, 1581, 1586, 1587, 1582, 1581,
+ 1586, 1587, 1582, 1581, 1582, 1581, 1582, 1581,
+
+ 1586, 1587, 1576, 1577, 1586, 1587, 1576, 1577,
+ 1586, 1587, 1582, 1581, 1523, 1523, 1523, 1582,
+ 1581, 1582, 1581, 1523, 1523, 75, 1523, 1523,
+ 1588, 75, 1523, 1523, 1523, 1523, 1523, 1523,
+
+ 1523, 1523, 1582, 1581, 1523, 75, 1589, 1523,
+ 1590, 1591, 1523, 1591, 1557, 1557, 1557, 1557,
+ 1582, 1581, 1582, 1581, 1582, 1581, 1582, 1581,
+ 1592, 1523, 1523, 1523, 1523, 1523, 1523, 75,
+
+ 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523,
+ 1523, 1582, 1581, 1582, 1581, 1593, 1523, 1523,
+ 1582, 1581, 1523, 1523, 1523, 1523, 1582, 1581,
+ 1582, 1581, 1582, 1581, 1582, 1581, 1582, 1581,
+
+ 1586, 1587, 1586, 1587, 1582, 1581, 1582, 1581,
+ 1582, 1581, 1586, 1587, 1586, 1587, 1523, 1594,
+ 1582, 1581, 1595, 1595, 1595, 1458, 1596, 1596,
+ 1458, 1458, 1597, 1597, 1597, 1598, 1598, 1458,
+
+ 1518, 1534, 1518, 1518, 1518, 1518, 1518, 1518,
+ 1451, 1452, 1451, 1452, 1518, 1518, 1518, 1518,
+ 1518, 1518, 1558, 1518, 1518, 1518, 1518, 1518,
+ 1518, 1518, 1599, 1599, 1518, 1518, 1518, 1518,
+
+ 1523, 1523, 1518, 1518, 1518, 1518, 1518, 1518,
+ 56, 1600, 1601, 1518, 1518, 1518, 1518, 1518,
+ 1518, 1518, 1518, 1518, 1518, 1518, 1602, 1602,
+ 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602,
+
+ 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602,
+ 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602,
+ 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602,
+ 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602,
+
+ 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602,
+ 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602,
+ 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602,
+ 1602, 1602, 1602, 1534, 1458, 1534, 1534, 1534,
+
+ 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534,
+ 1603, 1534, 1534, 1534, 1534, 1534, 1534, 1534,
+ 1534, 1534, 1534, 1534, 1534, 1604, 1534, 1534,
+ 1534, 1534, 1534, 1458, 1458, 1458, 1458, 1458,
+
+ 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1540, 1540, 1540, 1540,
+ 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540,
+
+ 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540,
+ 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1605,
+ 1606, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
+ 1541, 1541, 1541, 1541, 1607, 1607, 1607, 1607,
+
+ 1607, 1607, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1608, 1609, 1609, 1609, 1609, 1610, 1610, 1610,
+ 1611, 1612, 1612, 1611, 1613, 1613, 1613, 1613,
+ 1614, 1614, 1614, 1615, 1615, 1615, 1615, 1616,
+
+ 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518,
+ 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518,
+ 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518,
+ 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518,
+
+ 1518, 1518, 1518, 1518, 1518, 1534, 1534, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518,
+ 1518, 1518, 1518, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624,
+ 1625, 72, 72, 72, 72, 72, 72, 72,
+ 72, 72, 72, 72, 1626, 1627, 1628, 1629,
+ 1630, 1631, 1632, 1633, 1634, 1635, 1635, 1635,
+
+ 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635,
+ 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643,
+ 1644, 1645, 1645, 1645, 1645, 1645, 1645, 1645,
+ 1645, 1645, 1645, 1645, 1646, 1646, 1646, 1646,
- 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549,
- 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549,
- 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549,
- 1549, 1549, 1549, 1492, 1426, 1492, 1492, 1492,
-
- 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492,
- 1550, 1492, 1492, 1492, 1492, 1492, 1492, 1492,
- 1492, 1492, 1492, 1492, 1492, 1551, 1492, 1492,
- 1492, 1492, 1492, 1426, 1426, 1426, 1426, 1426,
-
- 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426,
- 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426,
- 1426, 1426, 1426, 1426, 1498, 1498, 1498, 1498,
- 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498,
-
- 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498,
- 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1552,
- 1553, 1499, 1499, 1499, 1499, 1499, 1499, 1499,
- 1499, 1499, 1499, 1499, 1554, 1554, 1554, 1554,
-
- 1554, 1554, 1500, 1500, 1500, 1500, 1500, 1500,
- 1555, 1556, 1556, 1556, 1556, 1556, 1556, 1556,
- 1557, 1557, 1557, 1557, 1558, 1558, 1558, 1558,
- 1559, 1559, 1559, 1560, 1560, 1560, 1560, 1561,
-
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
-
- 52, 52, 52, 52, 52, 1492, 1492, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569,
- 1570, 69, 69, 69, 69, 69, 69, 69,
- 69, 69, 69, 69, 1571, 1572, 1573, 1574,
- 1575, 1576, 1577, 1578, 1579, 1580, 1580, 1580,
-
- 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580,
- 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588,
- 1589, 1590, 1590, 1590, 1590, 1590, 1590, 1590,
- 1590, 1590, 1590, 1590, 1591, 1591, 1591, 1591,
-
- 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591,
- 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591,
- 1591, 1591, 1591, 1591, 1591, 1591, 1592, 1592,
- 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
-
- 1592, 1592, 1593, 1592, 1592, 1592, 1592, 1592,
- 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
- 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594,
- 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594,
-
- 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594,
- 1594, 1594, 1595, 1596, 1596, 1596, 1596, 1596,
- 1596, 1596, 1596, 1596, 1596, 1597, 1598, 1599,
- 1600, 1601, 1602, 1603, 1604, 1605, 1596, 1606,
-
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 1498, 1498,
- 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498,
-
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 55, 55, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 55, 58,
- 52, 52, 52, 52, 52, 52, 52, 52,
-
- 55, 58, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
-
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492,
- 1426, 1426, 1426, 1607, 1607, 1607, 1607, 1426,
-
- 1546, 1546, 1546, 1546, 55, 55, 52, 55,
- 55, 55, 55, 55, 55, 55, 55, 55,
- 55, 55, 55, 52, 1608, 1608, 1609, 1609,
- 1610, 1550, 1546, 1546, 1546, 1611, 1546, 1546,
-
- 55, 55, 55, 55, 55, 55, 55, 55,
- 55, 55, 55, 55, 55, 55, 55, 55,
- 55, 55, 55, 55, 55, 55, 55, 55,
- 55, 1546, 1546, 1546, 55, 55, 55, 55,
-
- 55, 55, 55, 55, 55, 55, 55, 55,
- 55, 55, 55, 55, 55, 55, 55, 55,
- 55, 55, 55, 55, 55, 55, 55, 55,
- 55, 55, 55, 55, 55, 55, 55, 55,
-
- 55, 55, 55, 55, 55, 55, 55, 55,
- 1546, 55, 55, 55, 55, 55, 55, 1510,
- 1550, 1550, 1609, 1609, 1609, 1609, 1609, 1609,
- 1609, 1609, 1609, 1609, 1609, 1609, 1612, 1610,
-
- 1609, 1609, 1609, 1609, 1609, 1609, 1498, 1498,
- 1498, 1498, 1553, 1553, 1553, 1553, 1553, 1553,
- 1552, 1552, 1612, 1612, 1612, 1612, 1612, 1612,
- 1612, 1612, 1612, 1612, 1612, 1613, 1614, 1614,
-
- 1552, 1552, 1612, 1612, 1612, 1612, 1612, 1612,
- 1612, 1612, 1612, 1612, 1615, 1612, 1612, 1612,
- 1612, 1612, 1616, 1613, 1613, 1613, 1613, 1613,
- 1613, 1613, 1613, 1613, 1613, 1617, 1617, 1617,
-
- 1618, 1618, 1618, 1618, 1617, 1617, 1617, 1617,
- 1617, 1614, 1614, 1614, 1614, 1617, 1556, 1617,
- 1617, 1617, 1614, 1617, 1617, 1614, 1614, 1614,
- 1617, 1617, 1614, 1614, 1617, 1614, 1614, 1617,
-
- 1617, 1617, 1556, 1614, 1556, 1556, 1556, 1556,
- 1614, 1614, 1617, 1614, 1614, 1614, 1614, 1614,
- 1614, 1617, 1617, 1617, 1617, 1617, 1614, 1617,
- 1617, 1619, 1617, 1614, 1614, 1617, 1617, 1617,
-
- 1620, 1546, 1546, 1546, 1546, 1556, 52, 52,
- 1546, 1546, 1621, 1621, 1611, 1611, 55, 55,
- 55, 55, 55, 52, 55, 52, 55, 52,
- 52, 52, 52, 52, 52, 55, 52, 52,
-
- 52, 55, 52, 52, 52, 52, 52, 52,
- 1556, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 55, 55, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
-
- 52, 52, 52, 52, 55, 52, 52, 55,
- 52, 52, 52, 52, 1556, 52, 1556, 52,
- 52, 52, 52, 1556, 1556, 1556, 52, 1614,
- 52, 52, 52, 1622, 1622, 1622, 1622, 1623,
-
- 1623, 52, 1624, 1625, 1546, 55, 55, 55,
- 1626, 1627, 1626, 1627, 1626, 1627, 1626, 1627,
- 1626, 1627, 1626, 1627, 1626, 1627, 1628, 1629,
- 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637,
-
- 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635,
- 1636, 1637, 1628, 1629, 1630, 1631, 1632, 1633,
- 1634, 1635, 1636, 1637, 52, 1556, 1556, 1556,
- 52, 52, 52, 52, 52, 52, 52, 52,
-
- 52, 55, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 1556, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 1556,
-
- 1638, 1638, 1638, 1639, 1640, 1641, 1642, 1554,
- 1643, 1644, 1554, 1645, 1646, 1647, 1648, 1648,
- 1426, 1426, 1426, 1426, 1426, 1649, 1650, 1426,
- 1426, 1426, 1426, 1426, 1651, 1649, 1650, 1426,
-
- 1426, 1426, 1649, 1650, 1649, 1650, 1626, 1627,
- 1626, 1627, 1626, 1627, 1652, 1653, 1652, 1653,
- 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426,
- 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426,
-
- 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654,
- 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654,
- 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654,
- 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654,
-
- 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426,
- 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426,
- 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426,
- 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426,
-
- 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426,
- 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426,
- 1426, 1426, 1426, 1426, 1607, 1607, 1426, 1426,
- 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426,
-
- 1426, 1426, 1426, 1626, 1627, 1626, 1627, 1626,
- 1627, 1626, 1627, 1626, 1627, 1655, 1656, 1657,
- 1658, 1626, 1627, 1626, 1627, 1626, 1627, 1626,
- 1627, 1426, 1426, 1659, 1426, 1426, 1426, 1426,
-
- 1660, 1426, 1426, 1661, 1649, 1650, 1426, 1426,
- 1649, 1650, 1649, 1650, 1649, 1650, 1649, 1650,
- 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426,
- 1662, 1426, 1426, 1426, 1426, 1426, 1426, 1426,
-
- 1649, 1650, 1426, 1426, 1649, 1650, 1426, 1426,
- 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1649,
- 1650, 1649, 1650, 1426, 1649, 1650, 1426, 1426,
- 1626, 1627, 1626, 1627, 1426, 1426, 1426, 1426,
-
- 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426,
- 1649, 1650, 1426, 1426, 1426, 1426, 1426, 1426,
- 1426, 1426, 1426, 1426, 1426, 1663, 1426, 1426,
- 1649, 1650, 1426, 1426, 1626, 1627, 1426, 1426,
-
- 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426,
- 1426, 1426, 1426, 1426, 1497, 1426, 1426, 1426,
- 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426,
- 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426,
-
- 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426,
- 1426, 1426, 1426, 1649, 1650, 1649, 1650, 1426,
- 1426, 1426, 1426, 1426, 1649, 1650, 1426, 1426,
- 1426, 1426, 1426, 1426, 1649, 1650, 1426, 1426,
-
- 1426, 1426, 1426, 1426, 1649, 1650, 1426, 1426,
- 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426,
- 1426, 1426, 1426, 1426, 1664, 1664, 1664, 1426,
- 1426, 1649, 1650, 1649, 1650, 1649, 1650, 1649,
-
- 1650, 1649, 1650, 1649, 1650, 1649, 1650, 1649,
- 1650, 1649, 1650, 1649, 1650, 1649, 1650, 1649,
- 1650, 1649, 1650, 1649, 1650, 1649, 1650, 1649,
- 1650, 1649, 1650, 1649, 1650, 1649, 1650, 1649,
-
- 1650, 1649, 1650, 1426, 1426, 1426, 1649, 1650,
- 1649, 1650, 1649, 1650, 1649, 1650, 1426, 1649,
- 1650, 1649, 1650, 1649, 1650, 1649, 1650, 1649,
- 1650, 1649, 1650, 1649, 1650, 1649, 1650, 1649,
-
- 1650, 1649, 1650, 1649, 1650, 1649, 1650, 1649,
- 1650, 1649, 1650, 1649, 1650, 1649, 1650, 1649,
- 1650, 1649, 1650, 1649, 1650, 1649, 1650, 1426,
- 1426, 1426, 1426, 1426, 1665, 1426, 1666, 1426,
-
- 1426, 1426, 1426, 1667, 1668, 1667, 1426, 1426,
- 1426, 1426, 1426, 1426, 1649, 1650, 1669, 1426,
- 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1649,
- 1650, 1649, 1650, 1426, 1426, 1426, 1426, 1426,
-
- 1553, 1553, 1553, 1553, 1553, 1552, 1552, 1552,
- 1553, 1553, 1553, 1553, 1553, 1553, 1499, 1499,
- 1499, 1499, 1499, 1499, 1500, 1500, 1500, 1500,
- 1500, 1500, 1500, 1613, 1613, 1670, 1670, 1670,
-
- 1500, 1500, 1500, 1500, 1670, 1670, 1670, 1670,
- 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670,
1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646,
1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646,
+ 1646, 1646, 1646, 1646, 1646, 1646, 1647, 1647,
+ 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647,
+
+ 1647, 1647, 1648, 1647, 1647, 1647, 1647, 1647,
+ 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647,
+ 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649,
+ 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649,
- 1646, 1646, 1646, 1646, 1646, 1670, 1670, 1646,
- 1646, 1646, 1646, 1646, 1646, 1558, 1558, 1558,
- 1613, 1670, 1670, 1670, 1670, 1614, 1555, 1555,
- 1555, 1555, 1558, 1558, 1558, 1558, 1558, 1558,
+ 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649,
+ 1649, 1649, 1650, 1651, 1651, 1651, 1651, 1651,
+ 1651, 1651, 1651, 1651, 1651, 1652, 1653, 1654,
+ 1655, 1656, 1657, 1658, 1659, 1660, 1651, 1661,
1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 206, 206, 1558, 1558,
+ 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
+ 1558, 1558, 1558, 1558, 1518, 1518, 1518, 1518,
1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 206, 1671,
1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1672, 1672, 1672, 1558, 1558, 1558,
+ 1558, 1558, 1558, 1558, 1518, 1518, 1518, 1518,
+ 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518,
1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1673, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1561, 1672, 1672, 1672, 1672, 1672,
- 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672,
-
- 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672,
- 1672, 1672, 1672, 1672, 1509, 1509, 1509, 1509,
- 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672,
- 1672, 1672, 1672, 1672, 1672, 1672, 1674, 1673,
-
- 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675,
- 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675,
- 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675,
- 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675,
-
- 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675,
- 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1676,
- 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677,
- 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677,
-
- 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677,
- 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677,
- 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677,
- 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1678,
-
- 131, 127, 1679, 1680, 1681, 1682, 1683, 131,
- 127, 131, 127, 131, 127, 1684, 1685, 1686,
- 1687, 1265, 1267, 1268, 1688, 131, 127, 1688,
- 1265, 1265, 1265, 1265, 1689, 1689, 1690, 1691,
-
- 1692, 1693, 1692, 1693, 1692, 1693, 1692, 1693,
- 1692, 1693, 1692, 1693, 1692, 1693, 1692, 1693,
- 1692, 1693, 1692, 1693, 1692, 1693, 1692, 1693,
- 1692, 1693, 1692, 1693, 1692, 1693, 1692, 1693,
-
- 1692, 1693, 1692, 1693, 1694, 1695, 1695, 1695,
- 1695, 1695, 1695, 1696, 1697, 1696, 1697, 1698,
- 1698, 1698, 1699, 1700, 206, 206, 206, 206,
- 206, 1701, 1702, 1702, 1702, 1703, 1701, 1702,
-
- 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704,
- 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704,
- 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704,
- 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704,
-
- 1704, 1704, 1704, 1704, 1704, 1704, 206, 1705,
- 206, 206, 206, 206, 206, 1705, 206, 206,
- 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
- 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
-
- 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
- 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
- 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
- 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
-
- 1706, 1706, 1706, 1706, 1706, 1706, 1707, 1707,
- 206, 206, 206, 206, 206, 206, 206, 1708,
- 1709, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 1710,
-
- 891, 891, 891, 891, 891, 891, 891, 891,
- 891, 891, 891, 891, 891, 891, 891, 891,
- 891, 891, 891, 891, 891, 891, 891, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 891, 891, 891, 891, 891, 891, 891, 206,
- 891, 891, 891, 891, 891, 891, 891, 206,
- 891, 891, 891, 891, 891, 891, 891, 206,
- 891, 891, 891, 891, 891, 891, 891, 206,
-
- 271, 271, 271, 271, 271, 271, 271, 271,
- 271, 271, 271, 271, 271, 271, 271, 271,
- 271, 271, 271, 271, 271, 271, 271, 271,
- 271, 271, 271, 271, 271, 271, 271, 271,
-
- 1711, 1711, 1712, 1713, 1712, 1713, 1711, 1711,
- 1711, 1712, 1713, 1711, 1712, 1713, 1430, 1430,
- 1430, 1430, 1430, 1430, 1430, 1430, 1429, 1714,
- 1715, 1716, 1717, 1718, 1712, 1713, 1718, 1718,
-
- 1719, 1720, 1652, 1653, 1652, 1653, 1652, 1653,
- 1652, 1653, 1716, 1716, 1716, 1716, 1721, 1722,
- 1716, 1723, 1724, 1725, 1725, 1724, 1724, 1724,
- 1724, 1724, 1726, 1726, 1727, 1728, 1728, 1729,
-
- 1730, 1728, 1731, 1732, 1732, 1733, 1733, 1733,
- 1733, 1733, 1734, 1735, 1734, 1735, 1734, 1736,
- 1671, 1671, 1737, 1738, 1738, 1739, 1740, 1739,
- 1740, 1739, 1740, 1739, 1740, 1741, 206, 206,
-
- 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742,
- 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742,
- 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742,
- 1742, 1742, 206, 1742, 1742, 1742, 1742, 1743,
-
- 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742,
- 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742,
- 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742,
- 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742,
-
- 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742,
- 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742,
- 1742, 1742, 1742, 1743, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743,
- 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743,
- 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743,
- 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743,
-
- 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743,
- 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743,
- 1743, 1743, 1743, 1743, 1743, 1743, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744,
- 1744, 1744, 1744, 1744, 206, 206, 206, 206,
-
- 1381, 1745, 1746, 1747, 1748, 1749, 1750, 1751,
- 1419, 1420, 1419, 1420, 1419, 1420, 1419, 1420,
- 1419, 1420, 1748, 1748, 1419, 1420, 1419, 1420,
- 1419, 1420, 1419, 1420, 1752, 1396, 1753, 1753,
-
- 1748, 1751, 1751, 1751, 1751, 1751, 1751, 1751,
- 1751, 1751, 1754, 1755, 178, 1756, 1757, 1757,
- 1758, 1759, 1759, 1759, 1759, 1760, 1761, 1748,
- 1762, 1762, 1762, 1763, 1764, 1765, 1766, 1748,
-
- 206, 1767, 1768, 1767, 1768, 1767, 1768, 1767,
- 1768, 1767, 1768, 1768, 1769, 1768, 1769, 1768,
- 1769, 1768, 1769, 1768, 1769, 1768, 1769, 1768,
- 1769, 1768, 1769, 1768, 1769, 1768, 1769, 1768,
-
- 1769, 1768, 1769, 1767, 1768, 1769, 1768, 1769,
- 1768, 1769, 1768, 1768, 1768, 1768, 1768, 1768,
- 1769, 1769, 1768, 1769, 1769, 1768, 1769, 1769,
- 1768, 1769, 1769, 1768, 1769, 1769, 1768, 1768,
-
- 1768, 1768, 1768, 1767, 1768, 1767, 1768, 1767,
- 1768, 1768, 1768, 1768, 1768, 1768, 1767, 1768,
- 1768, 1768, 1768, 1768, 1769, 1770, 1770, 206,
- 206, 1771, 1771, 1772, 1772, 1773, 1774, 1775,
-
- 1776, 1777, 1778, 1777, 1778, 1777, 1778, 1777,
- 1778, 1777, 1778, 1778, 1779, 1778, 1779, 1778,
- 1779, 1778, 1779, 1778, 1779, 1778, 1779, 1778,
- 1779, 1778, 1779, 1778, 1779, 1778, 1779, 1778,
-
- 1779, 1778, 1779, 1777, 1778, 1779, 1778, 1779,
- 1778, 1779, 1778, 1778, 1778, 1778, 1778, 1778,
- 1779, 1779, 1778, 1779, 1779, 1778, 1779, 1779,
- 1778, 1779, 1779, 1778, 1779, 1779, 1778, 1778,
-
- 1778, 1778, 1778, 1777, 1778, 1777, 1778, 1777,
- 1778, 1778, 1778, 1778, 1778, 1778, 1777, 1778,
- 1778, 1778, 1778, 1778, 1779, 1777, 1777, 1779,
- 1779, 1779, 1779, 1780, 1781, 1782, 1783, 1784,
-
- 206, 206, 206, 206, 206, 1785, 1785, 1785,
- 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785,
- 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785,
- 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785,
-
- 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785,
- 1785, 1785, 1785, 1785, 1785, 1786, 1787, 1788,
- 206, 1789, 1789, 1789, 1789, 1789, 1789, 1789,
- 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789,
-
- 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789,
- 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789,
- 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789,
- 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789,
-
- 1789, 1789, 1789, 1789, 1790, 1789, 1789, 1789,
- 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789,
- 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789,
- 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789,
-
- 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789,
- 1789, 1789, 1789, 1789, 1789, 1789, 1789, 206,
- 1791, 1791, 1792, 1792, 1792, 1792, 1793, 1793,
- 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793,
-
- 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794,
- 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794,
- 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794,
- 1795, 1795, 1795, 1796, 1796, 1796, 1796, 1796,
-
- 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797,
- 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797,
- 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798,
- 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798,
-
- 1798, 1798, 1798, 1798, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799,
- 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799,
-
- 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800,
- 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800,
- 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800,
- 1800, 1800, 1800, 1800, 1800, 1801, 1801, 206,
-
- 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802,
- 1802, 1802, 1803, 1803, 1803, 1803, 1803, 1803,
- 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803,
- 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803,
-
- 1803, 1803, 1803, 1803, 1804, 1804, 1804, 1804,
- 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
- 1806, 1807, 1807, 1807, 1807, 1807, 1807, 1807,
- 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807,
-
- 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808,
- 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808,
- 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808,
- 1808, 1808, 1808, 1808, 1809, 1809, 1810, 1791,
-
- 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792,
- 1792, 1792, 1793, 1793, 1793, 1793, 1793, 1793,
- 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1811,
- 1793, 1811, 1793, 1793, 1793, 1793, 1793, 1793,
-
- 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793,
- 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793,
- 1793, 1807, 1807, 1807, 1807, 1807, 1807, 1807,
- 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807,
-
- 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793,
- 1793, 1793, 1793, 1793, 1806, 1806, 1806, 1806,
- 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812,
- 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812,
-
- 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812,
- 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812,
- 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812,
- 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1813,
-
- 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812,
- 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812,
- 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812,
- 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812,
-
- 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812,
- 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812,
- 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812,
- 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793,
-
- 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793,
- 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793,
- 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1806,
- 1806, 1806, 1806, 1793, 1793, 1793, 1793, 1793,
-
- 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793,
- 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793,
- 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793,
- 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793,
-
- 1793, 1793, 1803, 1793, 1793, 1793, 1793, 1803,
- 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793,
- 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793,
- 1803, 1793, 1793, 1793, 1793, 1793, 1806, 1806,
-
- 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793,
- 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793,
- 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793,
- 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1806,
-
- 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
- 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
- 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
- 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
-
- 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
- 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
- 1814, 1814, 1814, 1814, 1814, 1814, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
-
- 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553,
- 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553,
- 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553,
- 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553,
-
- 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816,
- 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816,
- 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816,
- 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816,
-
- 1816, 1816, 1816, 1816, 1816, 1816, 1817, 1817,
- 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817,
- 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817,
- 1817, 1817, 1817, 1817, 1818, 1818, 1818, 1818,
-
- 1818, 1818, 1818, 1818, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1820, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1822, 1822,
+ 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
+ 1518, 1518, 1558, 1558, 1558, 1558, 1540, 1540,
+ 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540,
+
+ 1558, 1558, 1518, 1558, 1558, 1558, 1558, 1558,
+ 1558, 1558, 56, 56, 1518, 1518, 1518, 1518,
+ 1518, 1518, 1558, 1558, 1518, 1518, 61, 75,
+ 1518, 1518, 1518, 1518, 1558, 1558, 1518, 1518,
+
+ 61, 75, 1518, 1518, 1518, 1518, 1558, 1558,
+ 1558, 1518, 1518, 1558, 1518, 1518, 1558, 1558,
+ 1558, 1558, 1518, 1518, 1518, 1518, 1518, 1518,
+ 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518,
+
+ 1518, 1518, 1558, 1558, 1558, 1558, 1518, 1518,
+ 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1558,
+ 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534,
+ 1458, 1458, 1458, 1662, 1662, 1663, 1663, 1458,
+
+ 1664, 1664, 1664, 1664, 56, 61, 1558, 56,
+ 56, 61, 56, 56, 56, 56, 61, 61,
+ 56, 56, 56, 1518, 1665, 1665, 1666, 1666,
+ 1667, 1603, 1664, 1664, 1668, 1669, 1668, 1664,
+
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 1664, 1664, 1664, 56, 56, 56, 56,
+
+ 61, 56, 61, 56, 56, 56, 56, 56,
+ 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670,
+ 1670, 1670, 1670, 1670, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56,
+
+ 61, 61, 56, 61, 61, 61, 56, 61,
+ 1668, 61, 61, 56, 61, 61, 56, 1556,
+ 1603, 1603, 1666, 1666, 1666, 1666, 1666, 1666,
+ 1666, 1666, 1666, 1666, 1666, 1666, 1671, 1672,
+
+ 1666, 1666, 1666, 1666, 1666, 1666, 1540, 1540,
+ 1540, 1540, 1606, 1606, 1606, 1606, 1606, 1606,
+ 1605, 1605, 1671, 1673, 1671, 1671, 1671, 1671,
+ 1671, 1671, 1671, 1671, 1671, 1674, 1675, 1675,
+
+ 1605, 1676, 1671, 1671, 1671, 1671, 1671, 1671,
+ 1671, 1671, 1673, 1673, 1677, 1671, 1671, 1671,
+ 1671, 1671, 1678, 1674, 1674, 1674, 1674, 1674,
+ 1674, 1674, 1674, 1674, 1674, 1679, 1679, 1680,
+
+ 1681, 1681, 1681, 1681, 1679, 1679, 1680, 1680,
+ 1680, 1675, 1675, 1675, 1675, 1680, 1609, 1680,
+ 1680, 1680, 1675, 1680, 1679, 1675, 1675, 1675,
+ 1680, 1680, 1675, 1675, 1680, 1675, 1675, 1680,
+
+ 1680, 1680, 1610, 1675, 1610, 1610, 1610, 1610,
+ 1675, 1675, 1679, 1675, 1675, 1675, 1675, 1675,
+ 1675, 1680, 1679, 1679, 1680, 1679, 1675, 1680,
+ 1680, 1682, 1679, 1675, 1675, 1679, 1680, 1680,
+
+ 1683, 1664, 1664, 1664, 1664, 1609, 1518, 1518,
+ 1664, 1664, 1684, 1684, 1669, 1669, 56, 56,
+ 56, 56, 56, 1518, 56, 1518, 56, 1518,
+ 1518, 1518, 1518, 1518, 1518, 56, 1518, 1518,
+
+ 1518, 56, 1518, 1518, 1518, 1518, 1518, 1518,
+ 1609, 1518, 1518, 1518, 1518, 1518, 1518, 1518,
+ 1518, 1518, 1518, 56, 56, 1518, 1518, 1518,
+ 1518, 1518, 1518, 1518, 1518, 1558, 1518, 1518,
+
+ 1518, 1518, 1518, 1518, 56, 1518, 1518, 56,
+ 1518, 1518, 1518, 1518, 1609, 1518, 1609, 1518,
+ 1518, 1518, 1518, 1609, 1609, 1609, 1518, 1685,
+ 1518, 1518, 1518, 1686, 1686, 1686, 1686, 1687,
+
+ 1687, 1518, 1688, 1689, 1664, 56, 56, 56,
+ 1690, 1691, 1690, 1691, 1690, 1691, 1690, 1691,
+ 1690, 1691, 1690, 1691, 1690, 1691, 1692, 1693,
+ 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701,
+
+ 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709,
+ 1710, 1711, 1702, 1703, 1704, 1705, 1706, 1707,
+ 1708, 1709, 1710, 1711, 1518, 1609, 1609, 1609,
+ 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518,
+
+ 1518, 56, 1518, 1518, 1518, 1518, 1518, 1518,
+ 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518,
+ 1609, 1518, 1518, 1518, 1518, 1518, 1518, 1518,
+ 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1609,
+
+ 1712, 1712, 1712, 1713, 1714, 1715, 1716, 1607,
+ 1717, 1718, 1607, 1719, 1720, 1721, 1722, 1722,
+ 1458, 1458, 1458, 1458, 1458, 1723, 1724, 1458,
+ 1458, 1458, 1458, 1458, 1725, 1723, 1724, 1458,
+
+ 1458, 1458, 1723, 1724, 1723, 1724, 1726, 1727,
+ 1726, 1727, 1726, 1727, 1728, 1729, 1730, 1731,
+ 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458,
+
+ 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732,
+ 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732,
+ 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732,
+ 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732,
+
+ 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458,
+
+ 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1662, 1662, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458,
+
+ 1458, 1458, 1458, 1690, 1691, 1726, 1727, 1690,
+ 1691, 1690, 1691, 1690, 1691, 1733, 1734, 1735,
+ 1736, 1690, 1691, 1690, 1691, 1690, 1691, 1690,
+ 1691, 1458, 1458, 1737, 1458, 1458, 1458, 1458,
+
+ 1738, 1458, 1458, 1739, 1723, 1724, 1458, 1458,
+ 1723, 1724, 1723, 1724, 1723, 1724, 1723, 1724,
+ 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458,
+ 1740, 1458, 1458, 1458, 1458, 1458, 1458, 1458,
+
+ 1723, 1724, 1458, 1458, 1723, 1724, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1723,
+ 1724, 1723, 1724, 1458, 1723, 1724, 1458, 1458,
+ 1690, 1691, 1690, 1691, 1458, 1458, 1458, 1458,
+
+ 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458,
+ 1723, 1724, 1458, 1458, 1458, 1458, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1458, 1741, 1458, 1458,
+ 1723, 1724, 1458, 1458, 1690, 1691, 1458, 1458,
+
+ 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1539, 1458, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458,
+
+ 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458,
+ 1458, 1458, 1458, 1723, 1724, 1723, 1724, 1458,
+ 1458, 1458, 1458, 1458, 1723, 1724, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1723, 1724, 1458, 1458,
+
+ 1458, 1458, 1458, 1458, 1723, 1724, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1742, 1742, 1742, 1458,
+ 1458, 1723, 1724, 1723, 1724, 1723, 1724, 1723,
+
+ 1724, 1723, 1724, 1723, 1724, 1723, 1724, 1723,
+ 1724, 1723, 1724, 1723, 1724, 1723, 1724, 1723,
+ 1724, 1723, 1724, 1723, 1724, 1723, 1724, 1723,
+ 1724, 1723, 1724, 1723, 1724, 1723, 1724, 1723,
+
+ 1724, 1723, 1724, 1458, 1458, 1458, 1723, 1724,
+ 1723, 1724, 1723, 1724, 1723, 1724, 1458, 1723,
+ 1724, 1723, 1724, 1723, 1724, 1723, 1724, 1723,
+ 1724, 1723, 1724, 1723, 1724, 1723, 1724, 1723,
+
+ 1724, 1723, 1724, 1723, 1724, 1723, 1724, 1723,
+ 1724, 1723, 1724, 1723, 1724, 1723, 1724, 1723,
+ 1724, 1723, 1724, 1723, 1724, 1723, 1724, 1458,
+ 1458, 1458, 1458, 1458, 1743, 1458, 1744, 1458,
+
+ 1458, 1458, 1458, 1745, 1746, 1745, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1723, 1724, 1747, 1458,
+ 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1723,
+ 1724, 1723, 1724, 1458, 1458, 1458, 1458, 1458,
+
+ 1606, 1606, 1606, 1606, 1606, 1605, 1605, 1605,
+ 1606, 1606, 1606, 1606, 1606, 1606, 1541, 1541,
+ 1541, 1541, 1541, 1541, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1748, 1748, 1749, 1749, 1749,
+
+ 1542, 1542, 1542, 1542, 1749, 1749, 1749, 1749,
+ 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749,
+ 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720,
+ 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720,
+
+ 1720, 1720, 1720, 1720, 1720, 1749, 1749, 1720,
+ 1720, 1720, 1720, 1720, 1720, 1613, 1613, 1613,
+ 1748, 1749, 1749, 1749, 1749, 1685, 1750, 1750,
+ 1750, 1750, 1613, 1613, 1613, 1613, 1613, 1613,
+
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 221, 221, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 221, 1751,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1752, 1752, 1752, 1613, 1613, 1613,
+
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1753, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1616, 1752, 1752, 1752, 1752, 1752,
+ 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752,
+
+ 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752,
+ 1752, 1752, 1752, 1752, 1555, 1555, 1555, 1555,
+ 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752,
+ 1752, 1752, 1752, 1752, 1752, 1752, 1754, 1753,
+
+ 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755,
+ 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755,
+ 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755,
+ 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755,
+
+ 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755,
+ 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1756,
+ 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757,
+ 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757,
+
+ 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757,
+ 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757,
+ 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757,
+ 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1758,
+
+ 142, 138, 1759, 1760, 1761, 1762, 1763, 142,
+ 138, 142, 138, 142, 138, 1764, 1765, 1766,
+ 1767, 1290, 1292, 1293, 1768, 142, 138, 1768,
+ 1290, 1290, 1290, 1290, 1769, 1769, 1770, 1771,
+
+ 1772, 1773, 1772, 1773, 1772, 1773, 1772, 1773,
+ 1772, 1773, 1772, 1773, 1772, 1773, 1772, 1773,
+ 1772, 1773, 1772, 1773, 1772, 1773, 1772, 1773,
+ 1772, 1773, 1772, 1773, 1772, 1773, 1772, 1773,
+
+ 1772, 1773, 1772, 1773, 1774, 1775, 1775, 1775,
+ 1775, 1775, 1775, 1776, 1777, 1776, 1777, 1778,
+ 1778, 1778, 1779, 1780, 221, 221, 221, 221,
+ 221, 1781, 1782, 1782, 1782, 1783, 1781, 1782,
+
+ 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784,
+ 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784,
+ 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784,
+ 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784,
+
+ 1784, 1784, 1784, 1784, 1784, 1784, 221, 1785,
+ 221, 221, 221, 221, 221, 1785, 221, 221,
+ 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786,
+ 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786,
+
+ 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786,
+ 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786,
+ 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786,
+ 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786,
+
+ 1786, 1786, 1786, 1786, 1786, 1786, 1787, 1787,
+ 221, 221, 221, 221, 221, 221, 221, 1788,
+ 1789, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 1790,
+
+ 913, 913, 913, 913, 913, 913, 913, 913,
+ 913, 913, 913, 913, 913, 913, 913, 913,
+ 913, 913, 913, 913, 913, 913, 913, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 913, 913, 913, 913, 913, 913, 913, 221,
+ 913, 913, 913, 913, 913, 913, 913, 221,
+ 913, 913, 913, 913, 913, 913, 913, 221,
+ 913, 913, 913, 913, 913, 913, 913, 221,
+
+ 289, 289, 289, 289, 289, 289, 289, 289,
+ 289, 289, 289, 289, 289, 289, 289, 289,
+ 289, 289, 289, 289, 289, 289, 289, 289,
+ 289, 289, 289, 289, 289, 289, 289, 289,
+
+ 1791, 1791, 1792, 1793, 1792, 1793, 1791, 1791,
+ 1791, 1792, 1793, 1791, 1792, 1793, 1462, 1462,
+ 1462, 1462, 1462, 1462, 1462, 1462, 1461, 1794,
+ 1795, 1796, 1797, 1798, 1792, 1793, 1798, 1798,
+
+ 1799, 1800, 1730, 1731, 1730, 1731, 1730, 1731,
+ 1730, 1731, 1796, 1796, 1796, 1796, 1801, 1802,
+ 1796, 1803, 1804, 1805, 1805, 1804, 1804, 1804,
+ 1804, 1804, 1806, 1806, 1807, 1808, 1808, 1809,
+
+ 1810, 1808, 1811, 1812, 1812, 1813, 1813, 1813,
+ 1813, 1813, 1814, 1815, 1814, 1815, 1814, 1816,
+ 1751, 1751, 1817, 1818, 1818, 1819, 1820, 1819,
+ 1820, 1819, 1820, 1819, 1820, 1821, 221, 221,
+
1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
+ 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
+ 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
+ 1822, 1822, 221, 1822, 1822, 1822, 1822, 1823,
1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1823, 1823, 1823, 1823, 1823,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1824, 1824, 1824,
-
- 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825,
- 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825,
- 1825, 1825, 1825, 1825, 1825, 1826, 1825, 1825,
- 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825,
-
- 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825,
- 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825,
- 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825,
- 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825,
-
- 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825,
- 1825, 1825, 1825, 1825, 1825, 206, 206, 206,
- 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827,
- 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827,
-
- 1827, 1827, 1828, 1828, 1827, 1827, 1827, 1827,
- 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827,
- 1827, 1827, 1827, 1827, 1828, 1827, 1827, 1827,
- 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827,
-
- 1827, 1828, 1827, 1827, 1827, 1828, 1827, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829,
- 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829,
-
- 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829,
- 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829,
- 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829,
- 1830, 1830, 1830, 1830, 1830, 1830, 1831, 1832,
-
- 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833,
- 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833,
- 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833,
- 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833,
-
- 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833,
- 1833, 1833, 1833, 1833, 1834, 1835, 1836, 1837,
- 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833,
- 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833,
-
- 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845,
- 1846, 1847, 1833, 1833, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 285, 286, 285, 286, 285, 286, 285, 286,
- 285, 286, 285, 286, 285, 286, 285, 286,
- 285, 286, 285, 286, 285, 286, 285, 286,
- 285, 286, 285, 286, 285, 286, 285, 286,
-
- 289, 290, 285, 286, 285, 286, 285, 286,
- 285, 286, 285, 286, 285, 286, 1848, 271,
- 1849, 1849, 1849, 1850, 1851, 1851, 1851, 1851,
- 1851, 1851, 1851, 1851, 271, 271, 1850, 1852,
-
- 285, 286, 285, 286, 285, 286, 285, 286,
- 285, 286, 285, 286, 285, 286, 285, 286,
- 285, 286, 285, 286, 285, 286, 285, 286,
- 291, 292, 291, 292, 1853, 1853, 1854, 1851,
-
- 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855,
- 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855,
- 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855,
- 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855,
-
- 1855, 1855, 1855, 1855, 1855, 1855, 1856, 1856,
- 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856,
- 1857, 1857, 1858, 1859, 1860, 1860, 1860, 1859,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
- 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
- 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1863,
- 1863, 1863, 1863, 1722, 1722, 1722, 1722, 1722,
-
- 1864, 1864, 1267, 1268, 1267, 1268, 1267, 1268,
- 1267, 1268, 1267, 1268, 1267, 1268, 1267, 1268,
- 1265, 1265, 1267, 1268, 1267, 1268, 1267, 1268,
- 1267, 1268, 1267, 1268, 1267, 1268, 1267, 1268,
-
- 1267, 1268, 1267, 1268, 1267, 1268, 1267, 1268,
- 1267, 1268, 1267, 1268, 1267, 1268, 1267, 1268,
- 1267, 1268, 1267, 1268, 1267, 1268, 1267, 1268,
- 1267, 1268, 1267, 1268, 1267, 1268, 1267, 1268,
-
- 1267, 1268, 1267, 1268, 1267, 1268, 1267, 1268,
- 1267, 1268, 1267, 1268, 1267, 1268, 1267, 1268,
- 1689, 1265, 1265, 1265, 1265, 1265, 1265, 1265,
- 1265, 1267, 1268, 1267, 1268, 1865, 1267, 1268,
-
- 1267, 1268, 1267, 1268, 1267, 1268, 1267, 1268,
- 1722, 1866, 1866, 1267, 1268, 1867, 1868, 1869,
- 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877,
- 1876, 1877, 1876, 1877, 1876, 1877, 1876, 1877,
-
- 1870, 1871, 1870, 1871, 1870, 1871, 1870, 1871,
- 1870, 1871, 1878, 1879, 1880, 1881, 1882, 1883,
- 1884, 1885, 1886, 1887, 1888, 1889, 1888, 1889,
- 1890, 1891, 1892, 1893, 1892, 1893, 1892, 1893,
-
- 1894, 1895, 1892, 1893, 1896, 1897, 1898, 1899,
- 1900, 1899, 1900, 206, 206, 206, 206, 206,
- 1894, 1895, 206, 1901, 206, 1901, 1894, 1895,
- 1894, 1895, 206, 206, 206, 206, 206, 206,
-
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 1902, 1902, 1902, 1899, 1900, 1903,
- 1904, 1904, 1868, 1905, 1905, 1905, 1905, 1905,
-
- 1906, 1906, 1907, 1906, 1906, 1906, 1908, 1906,
- 1906, 1906, 1906, 1907, 1906, 1906, 1906, 1906,
- 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
- 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
+ 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
+ 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1906, 1906, 1906, 1909, 1909, 1907, 1907, 1909,
- 1910, 1910, 1910, 1910, 1911, 206, 206, 206,
- 1805, 1805, 1805, 1805, 1805, 1805, 831, 831,
- 1462, 1912, 206, 206, 206, 206, 206, 206,
-
- 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913,
- 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913,
- 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913,
- 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913,
-
- 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913,
- 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913,
- 1913, 1913, 1914, 1915, 1916, 1916, 1917, 1917,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 1918, 1918, 1919, 1919, 1919, 1919, 1919, 1919,
- 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919,
- 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919,
- 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919,
-
- 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919,
- 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919,
- 1919, 1919, 1919, 1919, 1918, 1918, 1918, 1918,
- 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918,
-
- 1918, 1918, 1918, 1918, 1920, 1921, 206, 206,
- 206, 206, 206, 206, 206, 206, 1922, 1922,
- 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930,
- 1931, 1932, 206, 206, 206, 206, 206, 206,
-
- 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933,
- 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933,
- 1933, 1933, 523, 523, 523, 523, 523, 523,
- 1934, 1934, 1934, 523, 1935, 1936, 1937, 1938,
-
- 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946,
- 1947, 1948, 1949, 1949, 1949, 1949, 1949, 1949,
- 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949,
- 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949,
+ 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
+ 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
+ 1822, 1822, 1822, 1823, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823,
+ 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823,
+ 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823,
+ 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823,
+
+ 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823,
+ 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823,
+ 1823, 1823, 1823, 1823, 1823, 1823, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824,
+ 1824, 1824, 1824, 1824, 1825, 1825, 1825, 1825,
+
+ 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833,
+ 1834, 1835, 1834, 1835, 1834, 1835, 1834, 1835,
+ 1834, 1835, 1830, 1830, 1834, 1835, 1834, 1835,
+ 1834, 1835, 1834, 1835, 1836, 1837, 1838, 1838,
+
+ 1830, 1833, 1833, 1833, 1833, 1833, 1833, 1833,
+ 1833, 1833, 1839, 1840, 1841, 1842, 1843, 1843,
+ 1844, 1845, 1845, 1845, 1845, 1846, 1847, 1830,
+ 1848, 1848, 1848, 1849, 1850, 1851, 1852, 1853,
+
+ 221, 1854, 1855, 1854, 1855, 1854, 1855, 1854,
+ 1855, 1854, 1855, 1855, 1856, 1855, 1856, 1855,
+ 1856, 1855, 1856, 1855, 1856, 1855, 1856, 1855,
+ 1856, 1855, 1856, 1855, 1856, 1855, 1856, 1855,
+
+ 1856, 1855, 1856, 1854, 1855, 1856, 1855, 1856,
+ 1855, 1856, 1855, 1855, 1855, 1855, 1855, 1855,
+ 1856, 1856, 1855, 1856, 1856, 1855, 1856, 1856,
+ 1855, 1856, 1856, 1855, 1856, 1856, 1855, 1855,
+
+ 1855, 1855, 1855, 1854, 1855, 1854, 1855, 1854,
+ 1855, 1855, 1855, 1855, 1855, 1855, 1854, 1855,
+ 1855, 1855, 1855, 1855, 1856, 1857, 1857, 221,
+ 221, 1858, 1858, 1859, 1859, 1860, 1861, 1862,
+
+ 1863, 1864, 1865, 1864, 1865, 1864, 1865, 1864,
+ 1865, 1864, 1865, 1865, 1866, 1865, 1866, 1865,
+ 1866, 1865, 1866, 1865, 1866, 1865, 1866, 1865,
+ 1866, 1865, 1866, 1865, 1866, 1865, 1866, 1865,
+
+ 1866, 1865, 1866, 1864, 1865, 1866, 1865, 1866,
+ 1865, 1866, 1865, 1865, 1865, 1865, 1865, 1865,
+ 1866, 1866, 1865, 1866, 1866, 1865, 1866, 1866,
+ 1865, 1866, 1866, 1865, 1866, 1866, 1865, 1865,
+
+ 1865, 1865, 1865, 1864, 1865, 1864, 1865, 1864,
+ 1865, 1865, 1865, 1865, 1865, 1865, 1864, 1865,
+ 1865, 1865, 1865, 1865, 1866, 1864, 1864, 1866,
+ 1866, 1866, 1866, 1867, 1868, 1869, 1870, 1871,
+
+ 221, 221, 221, 221, 221, 1872, 1872, 1872,
+ 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872,
+ 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872,
+ 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872,
+
+ 1872, 1872, 1872, 1872, 1872, 1872, 1872, 1872,
+ 1872, 1872, 1872, 1872, 1872, 1873, 1874, 1875,
+ 221, 1876, 1876, 1876, 1876, 1876, 1876, 1876,
+ 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876,
+
+ 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876,
+ 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876,
+ 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876,
+ 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876,
+
+ 1876, 1876, 1876, 1876, 1877, 1876, 1876, 1876,
+ 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876,
+ 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876,
+ 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876,
+
+ 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876,
+ 1876, 1876, 1876, 1876, 1876, 1876, 1876, 221,
+ 1878, 1878, 1879, 1879, 1879, 1879, 1880, 1880,
+ 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880,
+
+ 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881,
+ 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881,
+ 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881,
+ 1882, 1882, 1882, 1883, 1883, 1883, 1883, 1883,
+
+ 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884,
+ 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884,
+ 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885,
+ 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885,
+
+ 1885, 1885, 1885, 1885, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 1825,
+ 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886,
+ 1886, 1886, 1886, 1886, 1886, 1886, 1886, 1886,
+
+ 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887,
+ 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887,
+ 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887,
+ 1887, 1887, 1887, 1887, 1887, 1888, 1888, 221,
+
+ 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889,
+ 1889, 1889, 1890, 1890, 1890, 1890, 1890, 1890,
+ 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890,
+ 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890,
+
+ 1890, 1890, 1890, 1890, 1891, 1891, 1891, 1891,
+ 1892, 1892, 1892, 1892, 1892, 1892, 1892, 1892,
+ 1893, 1894, 1894, 1894, 1894, 1894, 1894, 1894,
+ 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894,
+
+ 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895,
+ 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895,
+ 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895,
+ 1895, 1895, 1895, 1895, 1896, 1896, 1897, 1878,
+
+ 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879,
+ 1879, 1879, 1880, 1880, 1880, 1880, 1880, 1880,
+ 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1898,
+ 1880, 1898, 1880, 1880, 1880, 1880, 1880, 1880,
+
+ 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880,
+ 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880,
+ 1880, 1894, 1894, 1894, 1894, 1894, 1894, 1894,
+ 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894,
+
+ 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880,
+ 1880, 1880, 1880, 1880, 1893, 1893, 1893, 1893,
+ 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899,
+ 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899,
+
+ 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899,
+ 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899,
+ 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899,
+ 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1900,
+
+ 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899,
+ 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899,
+ 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899,
+ 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899,
+
+ 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899,
+ 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899,
+ 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899,
+ 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880,
+
+ 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880,
+ 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880,
+ 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1893,
+ 1893, 1893, 1893, 1880, 1880, 1880, 1880, 1880,
+
+ 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880,
+ 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880,
+ 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880,
+ 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880,
+
+ 1880, 1880, 1890, 1880, 1880, 1880, 1880, 1890,
+ 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880,
+ 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880,
+ 1890, 1880, 1880, 1880, 1880, 1880, 1893, 1893,
+
+ 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880,
+ 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880,
+ 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880,
+ 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1893,
- 1949, 1949, 1949, 1949, 1949, 1949, 1950, 1950,
- 1950, 1950, 1950, 1951, 1951, 1951, 1952, 1953,
- 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954,
- 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1954,
-
- 1954, 1954, 1954, 1954, 1954, 1954, 1954, 1955,
- 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955,
- 1955, 1955, 1956, 1957, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 1958,
-
- 881, 881, 881, 881, 881, 881, 881, 881,
- 881, 881, 881, 881, 881, 881, 881, 881,
- 881, 881, 881, 881, 881, 881, 881, 881,
- 881, 881, 881, 881, 881, 206, 206, 206,
-
- 1959, 1959, 1959, 1960, 1961, 1961, 1961, 1961,
- 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961,
- 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961,
- 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961,
-
- 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961,
- 1961, 1961, 1961, 1961, 1961, 1961, 1961, 1961,
- 1961, 1961, 1961, 1962, 1960, 1960, 1959, 1959,
- 1959, 1959, 1960, 1960, 1959, 1959, 1960, 1960,
-
- 1963, 1964, 1964, 1964, 1964, 1964, 1964, 1965,
- 1966, 1966, 1964, 1964, 1964, 1964, 206, 1967,
- 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975,
- 1976, 1977, 206, 206, 206, 206, 1964, 1964,
-
- 1978, 1978, 1978, 1978, 1978, 1979, 1980, 1978,
- 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978,
- 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988,
- 1989, 1990, 1978, 1978, 1978, 1978, 1978, 206,
-
- 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991,
- 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991,
- 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991,
- 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991,
-
- 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991,
- 1991, 1992, 1992, 1992, 1992, 1992, 1992, 1993,
- 1993, 1992, 1992, 1993, 1993, 1992, 1992, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 1991, 1991, 1991, 1992, 1991, 1991, 1991, 1991,
- 1991, 1991, 1991, 1991, 1992, 1993, 206, 206,
- 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
- 2002, 2003, 206, 206, 2004, 2005, 2005, 2005,
+ 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
+ 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
+ 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
+ 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
+ 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
+ 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
+ 1901, 1901, 1901, 1901, 1901, 1901, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+
+ 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606,
+ 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606,
+ 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606,
+ 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606,
+
+ 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903,
+ 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903,
+ 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903,
+ 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903,
+
+ 1903, 1903, 1903, 1903, 1903, 1903, 1904, 1904,
+ 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904,
+ 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904,
+ 1904, 1904, 1904, 1904, 1905, 1905, 1905, 1905,
+
+ 1905, 1905, 1905, 1905, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1907, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1910, 1910, 1910, 1910, 1910,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1911, 1911, 1911,
+
+ 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912,
+ 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912,
+ 1912, 1912, 1912, 1912, 1912, 1913, 1912, 1912,
+ 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912,
+
+ 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912,
+ 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912,
+ 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912,
+ 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912,
+
+ 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912,
+ 1912, 1912, 1912, 1912, 1912, 221, 221, 221,
+ 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914,
+ 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914,
+
+ 1914, 1914, 1915, 1915, 1914, 1914, 1914, 1914,
+ 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914,
+ 1914, 1914, 1914, 1914, 1915, 1914, 1914, 1914,
+ 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914,
+
+ 1914, 1915, 1914, 1914, 1914, 1915, 1914, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916,
+ 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916,
+
+ 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916,
+ 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916,
+ 1916, 1916, 1916, 1916, 1916, 1916, 1916, 1916,
+ 1917, 1917, 1917, 1917, 1917, 1917, 1918, 1919,
+
+ 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920,
+ 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920,
+ 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920,
+ 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920,
+
+ 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920,
+ 1920, 1920, 1920, 1920, 1921, 1922, 1923, 1924,
+ 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920,
+ 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920,
+
+ 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932,
+ 1933, 1934, 1920, 1920, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 303, 304, 303, 304, 303, 304, 303, 304,
+ 303, 304, 303, 304, 303, 304, 303, 304,
+ 303, 304, 303, 304, 303, 304, 303, 304,
+ 303, 304, 303, 304, 303, 304, 303, 304,
+
+ 307, 308, 303, 304, 303, 304, 303, 304,
+ 303, 304, 303, 304, 303, 304, 1935, 289,
+ 1936, 1936, 1936, 1937, 1938, 1938, 1938, 1938,
+ 1938, 1938, 1938, 1938, 289, 289, 1937, 1939,
+
+ 303, 304, 303, 304, 303, 304, 303, 304,
+ 303, 304, 303, 304, 303, 304, 303, 304,
+ 303, 304, 303, 304, 303, 304, 303, 304,
+ 309, 310, 309, 310, 1940, 1940, 1941, 1938,
+
+ 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942,
+ 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942,
+ 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942,
+ 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942,
+
+ 1942, 1942, 1942, 1942, 1942, 1942, 1943, 1943,
+ 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943,
+ 1944, 1944, 1945, 1946, 1947, 1947, 1947, 1946,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948,
+ 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949,
+ 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1950,
+ 1950, 1950, 1950, 1802, 1802, 1802, 1802, 1802,
+
+ 1951, 1951, 1292, 1293, 1292, 1293, 1292, 1293,
+ 1292, 1293, 1292, 1293, 1292, 1293, 1292, 1293,
+ 1290, 1290, 1292, 1293, 1292, 1293, 1292, 1293,
+ 1292, 1293, 1292, 1293, 1292, 1293, 1292, 1293,
+
+ 1292, 1293, 1292, 1293, 1292, 1293, 1292, 1293,
+ 1292, 1293, 1292, 1293, 1292, 1293, 1292, 1293,
+ 1292, 1293, 1292, 1293, 1292, 1293, 1292, 1293,
+ 1292, 1293, 1292, 1293, 1292, 1293, 1292, 1293,
+
+ 1292, 1293, 1292, 1293, 1292, 1293, 1292, 1293,
+ 1292, 1293, 1292, 1293, 1292, 1293, 1292, 1293,
+ 1769, 1290, 1290, 1290, 1290, 1290, 1290, 1290,
+ 1290, 1292, 1293, 1292, 1293, 1952, 1292, 1293,
+
+ 1292, 1293, 1292, 1293, 1292, 1293, 1292, 1293,
+ 1802, 1953, 1953, 1292, 1293, 1954, 1955, 1956,
+ 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964,
+ 1963, 1964, 1963, 1964, 1963, 1964, 1963, 1964,
+
+ 1957, 1958, 1957, 1958, 1957, 1958, 1957, 1958,
+ 1957, 1958, 1965, 1966, 1967, 1968, 1969, 1970,
+ 1971, 1972, 1973, 1974, 1975, 1976, 1975, 1976,
+ 1977, 1978, 1979, 1980, 1979, 1980, 1979, 1980,
+
+ 1981, 1982, 1979, 1980, 1983, 1984, 1985, 1986,
+ 1987, 1986, 1987, 221, 221, 221, 221, 221,
+ 1981, 1982, 221, 1988, 221, 1988, 1981, 1982,
+ 1981, 1982, 221, 221, 221, 221, 221, 221,
+
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 1989, 1989, 1989, 1986, 1987, 1990,
+ 1991, 1991, 1955, 1992, 1992, 1992, 1992, 1992,
+
+ 1993, 1993, 1994, 1993, 1993, 1993, 1995, 1993,
+ 1993, 1993, 1993, 1994, 1993, 1993, 1993, 1993,
+ 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
+ 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
+
+ 1993, 1993, 1993, 1996, 1996, 1994, 1994, 1996,
+ 1997, 1997, 1997, 1997, 1998, 221, 221, 221,
+ 1999, 1999, 1999, 1999, 1999, 1999, 853, 853,
+ 1497, 2000, 221, 221, 221, 221, 221, 221,
+
+ 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001,
+ 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001,
+ 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001,
+ 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001,
+
+ 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001,
+ 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001,
+ 2001, 2001, 2002, 2003, 2004, 2004, 2005, 2005,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 2006, 2006, 2007, 2007, 2007, 2007, 2007, 2007,
+ 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007,
+ 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007,
+ 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007,
+
+ 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007,
+ 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007,
+ 2007, 2007, 2007, 2007, 2006, 2006, 2006, 2006,
2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006,
- 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006,
- 2007, 2006, 2006, 2006, 2006, 2006, 2006, 2008,
- 2008, 2008, 2006, 869, 1979, 2009, 1978, 1978,
-
- 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010,
- 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010,
- 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010,
- 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010,
-
- 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010,
- 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010,
- 2011, 2010, 2011, 2011, 2012, 2010, 2010, 2011,
- 2011, 2010, 2010, 2010, 2010, 2010, 2011, 2011,
-
- 2010, 2011, 2010, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 2010, 2010, 2013, 2014, 2014,
-
- 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015,
- 2015, 2015, 2015, 2016, 2017, 2017, 2016, 2016,
- 2018, 2018, 2015, 2019, 2019, 2016, 2020, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 206, 2021, 2021, 2021, 2021, 2021, 2021, 206,
- 206, 2021, 2021, 2021, 2021, 2021, 2021, 206,
- 206, 2021, 2021, 2021, 2021, 2021, 2021, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2021, 2021, 2021, 2021, 2021, 2021, 2021, 206,
- 2021, 2021, 2021, 2021, 2021, 2021, 2021, 206,
- 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875,
- 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875,
-
- 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875,
- 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875,
- 1875, 1875, 1875, 2022, 1875, 1875, 1875, 1875,
- 1875, 1875, 1875, 2023, 2024, 2024, 2024, 2024,
-
- 2025, 2025, 2025, 2025, 1875, 2026, 2027, 2027,
- 2028, 2029, 2030, 2030, 206, 206, 206, 206,
- 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038,
- 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046,
-
- 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054,
- 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062,
- 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070,
- 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078,
-
- 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086,
- 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094,
- 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2102,
- 2103, 2104, 2105, 2106, 2107, 2108, 2109, 2110,
-
- 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111,
- 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111,
- 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111,
- 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111,
-
- 2111, 2111, 2111, 2112, 2112, 2113, 2112, 2112,
- 2113, 2112, 2112, 2114, 2112, 2115, 206, 206,
- 2116, 2117, 2118, 2119, 2120, 2121, 2122, 2123,
- 2124, 2125, 206, 206, 206, 206, 206, 206,
-
- 2126, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
- 2127, 2127, 2127, 2127, 2126, 2127, 2127, 2127,
-
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
- 2126, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
-
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
- 2127, 2127, 2127, 2127, 2126, 2127, 2127, 2127,
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
-
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
- 2126, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
-
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
- 2127, 2127, 2127, 2127, 2126, 2127, 2127, 2127,
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
-
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
- 2126, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
-
- 2127, 2127, 2127, 2127, 2126, 2127, 2127, 2127,
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
-
- 2127, 2127, 2127, 2127, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 886, 886, 886, 886, 886, 886, 886, 886,
- 886, 886, 886, 886, 886, 886, 886, 886,
-
- 886, 886, 886, 886, 886, 886, 886, 206,
- 206, 206, 206, 889, 889, 889, 889, 889,
- 889, 889, 889, 889, 889, 889, 889, 889,
- 889, 889, 889, 889, 889, 889, 889, 889,
-
- 889, 889, 889, 889, 889, 889, 889, 889,
- 889, 889, 889, 889, 889, 889, 889, 889,
- 889, 889, 889, 889, 889, 889, 889, 889,
- 889, 889, 889, 889, 206, 206, 206, 206,
-
- 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128,
- 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128,
- 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128,
- 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128,
-
- 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129,
- 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129,
- 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129,
- 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129,
-
- 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130,
- 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130,
- 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130,
- 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130,
-
- 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130,
- 2130, 2130, 2130, 2130, 2130, 2130, 1816, 1816,
- 2130, 1816, 2130, 1816, 1816, 2130, 2130, 2130,
- 2130, 2130, 2130, 2130, 2130, 2130, 2130, 1816,
-
- 2130, 1816, 2130, 1816, 1816, 2130, 2130, 1816,
- 1816, 1816, 2130, 2130, 2130, 2130, 2131, 2131,
- 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132,
- 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132,
-
- 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132,
- 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132,
- 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132,
- 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132,
-
- 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132,
- 2132, 2132, 2132, 2133, 2133, 2133, 2134, 2134,
- 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135,
- 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135,
-
- 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135,
- 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135,
- 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135,
- 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135,
-
- 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135,
- 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135,
- 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135,
- 2135, 2135, 2134, 2134, 2134, 2134, 2134, 2134,
-
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
-
- 2136, 2137, 2138, 2139, 2140, 2141, 2141, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 2142, 2143, 2144, 2145, 2146,
- 206, 206, 206, 206, 206, 2147, 2148, 2149,
-
- 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150,
- 2150, 2151, 2149, 2149, 2149, 2149, 2149, 2149,
- 2149, 2149, 2149, 2149, 2149, 2149, 2149, 305,
- 2149, 2149, 2149, 2149, 2149, 305, 2149, 305,
-
- 2149, 2149, 305, 2149, 2149, 305, 2149, 2149,
- 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2150,
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
-
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
-
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
- 2152, 2152, 2153, 2153, 2153, 2153, 2153, 2153,
- 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153,
-
- 2153, 2153, 471, 419, 419, 419, 419, 419,
- 419, 419, 419, 419, 419, 419, 419, 419,
- 419, 419, 419, 2152, 2152, 2152, 2152, 2152,
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
-
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
- 2152, 2152, 2152, 2152, 2152, 2152, 2154, 2154,
-
- 2154, 2154, 2154, 2154, 2152, 2152, 2152, 2152,
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
-
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
- 2152, 2152, 2152, 2152, 2152, 2152, 1753, 1396,
-
- 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155,
- 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155,
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
-
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
- 419, 419, 2152, 2152, 2152, 2152, 2152, 2152,
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
-
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
- 419, 419, 419, 419, 419, 419, 419, 2155,
- 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156,
- 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156,
-
- 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156,
- 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156,
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
- 2152, 2152, 2154, 2154, 2157, 345, 2155, 2155,
-
- 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158,
- 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158,
- 2159, 2160, 2161, 2162, 2163, 2164, 2164, 2165,
- 2166, 2167, 206, 206, 206, 206, 206, 206,
-
- 177, 177, 177, 177, 1248, 1248, 1248, 1132,
- 1132, 1132, 1132, 1132, 1132, 1132, 1854, 1854,
- 2168, 2169, 2169, 2170, 2170, 2171, 2172, 2171,
- 2172, 2173, 2174, 2173, 2174, 2173, 2174, 2173,
-
- 2174, 2173, 2174, 2173, 2174, 2175, 2175, 2176,
- 2177, 2168, 2168, 2168, 2168, 2170, 2170, 2170,
- 2178, 2179, 2180, 206, 2181, 2182, 2183, 2183,
- 2169, 1453, 1454, 1453, 1454, 2184, 2185, 2186,
-
- 2168, 2168, 2187, 2188, 2189, 2190, 2191, 206,
- 2168, 2192, 2193, 2168, 206, 206, 206, 206,
- 2154, 2152, 2154, 2194, 2154, 419, 2154, 2152,
- 2154, 2152, 2154, 2152, 2154, 2152, 2154, 2152,
-
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
- 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
- 2152, 2152, 2152, 2152, 2152, 419, 419, 2195,
-
- 206, 2183, 2168, 2186, 2192, 2193, 2168, 2196,
- 1453, 1454, 2168, 2187, 2178, 2188, 2197, 2198,
- 2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206,
- 2207, 2208, 2182, 2181, 2209, 2191, 2210, 2183,
-
- 2168, 2211, 2211, 2211, 2211, 2211, 2211, 2211,
- 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211,
- 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211,
- 2211, 2211, 2211, 2212, 2168, 2213, 2214, 2170,
-
- 2214, 2215, 2215, 2215, 2215, 2215, 2215, 2215,
- 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215,
- 2215, 2215, 2215, 2215, 2215, 2215, 2215, 2215,
- 2215, 2215, 2215, 2212, 2191, 2213, 2191, 2216,
-
- 2217, 2218, 2184, 2185, 2219, 2220, 2221, 2222,
- 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222,
- 2223, 2221, 2221, 2221, 2221, 2221, 2221, 2221,
+
+ 2006, 2006, 2006, 2006, 2008, 2009, 221, 221,
+ 221, 221, 221, 221, 221, 221, 2010, 2010,
+ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018,
+ 2019, 2020, 221, 221, 221, 221, 221, 221,
+
+ 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021,
+ 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021,
+ 2021, 2021, 542, 542, 542, 542, 542, 542,
+ 2022, 2022, 2022, 542, 2023, 2024, 2025, 2026,
+
+ 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034,
+ 2035, 2036, 2037, 2037, 2037, 2037, 2037, 2037,
+ 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037,
+ 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037,
+
+ 2037, 2037, 2037, 2037, 2037, 2037, 2038, 2038,
+ 2038, 2038, 2038, 2039, 2039, 2039, 2040, 2041,
+ 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042,
+ 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042,
+
+ 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2043,
+ 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043,
+ 2043, 2043, 2044, 2045, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 2046,
+
+ 903, 903, 903, 903, 903, 903, 903, 903,
+ 903, 903, 903, 903, 903, 903, 903, 903,
+ 903, 903, 903, 903, 903, 903, 903, 903,
+ 903, 903, 903, 903, 903, 221, 221, 221,
+
+ 2047, 2047, 2047, 2048, 2049, 2049, 2049, 2049,
+ 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049,
+ 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049,
+ 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049,
+
+ 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049,
+ 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049,
+ 2049, 2049, 2049, 2050, 2048, 2048, 2047, 2047,
+ 2047, 2047, 2048, 2048, 2047, 2047, 2048, 2048,
+
+ 2051, 2052, 2052, 2052, 2052, 2052, 2052, 2053,
+ 2054, 2054, 2052, 2052, 2052, 2052, 221, 2055,
+ 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063,
+ 2064, 2065, 221, 221, 221, 221, 2052, 2052,
+
+ 2066, 2066, 2066, 2066, 2066, 2067, 2068, 2066,
+ 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066,
+ 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076,
+ 2077, 2078, 2066, 2066, 2066, 2066, 2066, 221,
+
+ 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079,
+ 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079,
+ 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079,
+ 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079,
+
+ 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079,
+ 2079, 2080, 2080, 2080, 2080, 2080, 2080, 2081,
+ 2081, 2080, 2080, 2081, 2081, 2080, 2080, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 2082, 2082, 2082, 2080, 2082, 2082, 2082, 2082,
+ 2082, 2082, 2082, 2082, 2080, 2081, 221, 221,
+ 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090,
+ 2091, 2092, 221, 221, 2093, 2094, 2094, 2094,
+
+ 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095,
+ 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095,
+ 2096, 2095, 2095, 2095, 2095, 2095, 2095, 2097,
+ 2097, 2097, 2095, 891, 2067, 2098, 2066, 2066,
+
+ 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099,
+ 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099,
+ 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099,
+ 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099,
+
+ 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099,
+ 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099,
+ 2100, 2099, 2100, 2100, 2101, 2099, 2099, 2100,
+ 2100, 2099, 2099, 2099, 2099, 2099, 2100, 2100,
+
+ 2099, 2100, 2099, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 2099, 2099, 2102, 2103, 2103,
+
+ 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104,
+ 2104, 2104, 2104, 2105, 2106, 2106, 2105, 2105,
+ 2107, 2107, 2104, 2108, 2108, 2105, 2109, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 221, 2110, 2110, 2110, 2110, 2110, 2110, 221,
+ 221, 2110, 2110, 2110, 2110, 2110, 2110, 221,
+ 221, 2110, 2110, 2110, 2110, 2110, 2110, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 2110, 2110, 2110, 2110, 2110, 2110, 2110, 221,
+ 2110, 2110, 2110, 2110, 2110, 2110, 2110, 221,
+ 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962,
+ 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962,
+
+ 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962,
+ 1962, 1962, 1962, 1962, 1962, 1962, 1962, 1962,
+ 1962, 1962, 1962, 2111, 1962, 1962, 1962, 1962,
+ 1962, 1962, 1962, 2112, 2113, 2113, 2113, 2113,
+
+ 2114, 2114, 2114, 2114, 1962, 2115, 2116, 2116,
+ 2117, 2118, 2119, 2119, 221, 221, 221, 221,
+ 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2127,
+ 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135,
+
+ 2136, 2137, 2138, 2139, 2140, 2141, 2142, 2143,
+ 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151,
+ 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159,
+ 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167,
+
+ 2168, 2169, 2170, 2171, 2172, 2173, 2174, 2175,
+ 2176, 2177, 2178, 2179, 2180, 2181, 2182, 2183,
+ 2184, 2185, 2186, 2187, 2188, 2189, 2190, 2191,
+ 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199,
+
+ 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200,
+ 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200,
+ 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200,
+ 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200,
+
+ 2200, 2200, 2200, 2201, 2201, 2202, 2201, 2201,
+ 2202, 2201, 2201, 2203, 2201, 2204, 221, 221,
+ 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212,
+ 2213, 2214, 221, 221, 221, 221, 221, 221,
+
+ 2215, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+ 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+ 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+ 2216, 2216, 2216, 2216, 2215, 2216, 2216, 2216,
+
+ 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+ 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+ 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+ 2215, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+
+ 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+ 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+ 2216, 2216, 2216, 2216, 2215, 2216, 2216, 2216,
+ 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+
+ 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+ 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+ 2215, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+ 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+
+ 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+ 2216, 2216, 2216, 2216, 2215, 2216, 2216, 2216,
+ 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+ 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+
+ 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+ 2215, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+ 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+ 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+
+ 2216, 2216, 2216, 2216, 2215, 2216, 2216, 2216,
+ 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+ 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+ 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+
+ 2216, 2216, 2216, 2216, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 908, 908, 908, 908, 908, 908, 908, 908,
+ 908, 908, 908, 908, 908, 908, 908, 908,
+
+ 908, 908, 908, 908, 908, 908, 908, 221,
+ 221, 221, 221, 911, 911, 911, 911, 911,
+ 911, 911, 911, 911, 911, 911, 911, 911,
+ 911, 911, 911, 911, 911, 911, 911, 911,
+
+ 911, 911, 911, 911, 911, 911, 911, 911,
+ 911, 911, 911, 911, 911, 911, 911, 911,
+ 911, 911, 911, 911, 911, 911, 911, 911,
+ 911, 911, 911, 911, 221, 221, 221, 221,
+
+ 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217,
+ 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217,
+ 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217,
+ 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2217,
+
+ 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218,
+ 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218,
+ 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218,
+ 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218,
+
+ 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219,
+ 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219,
+ 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219,
+ 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219,
+
+ 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219,
+ 2219, 2219, 2219, 2219, 2219, 2219, 1903, 1903,
+ 2219, 1903, 2219, 1903, 1903, 2219, 2219, 2219,
+ 2219, 2219, 2219, 2219, 2219, 2219, 2219, 1903,
+
+ 2219, 1903, 2219, 1903, 1903, 2219, 2219, 1903,
+ 1903, 1903, 2219, 2219, 2219, 2219, 2220, 2220,
+ 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221,
2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221,
2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221,
2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221,
2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221,
- 2221, 2221, 2221, 2221, 2221, 2221, 2224, 2224,
-
- 1790, 1789, 1789, 1789, 1789, 1789, 1789, 1789,
- 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789,
- 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789,
- 1789, 1789, 1789, 1789, 1789, 1789, 1789, 206,
-
- 206, 206, 1789, 1789, 1789, 1789, 1789, 1789,
- 206, 206, 1789, 1789, 1789, 1789, 1789, 1789,
- 206, 206, 1789, 1789, 1789, 1789, 1789, 1789,
- 206, 206, 1789, 1789, 1789, 206, 206, 206,
-
- 2225, 1456, 2226, 2214, 1761, 1456, 1456, 206,
- 1483, 1524, 1524, 1524, 1524, 1483, 1483, 206,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 2227, 2227, 2227, 2228, 2229, 2230, 2230,
-
- 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231,
- 2231, 2231, 2231, 2231, 206, 2231, 2231, 2231,
- 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231,
- 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231,
-
- 2231, 2231, 2231, 2231, 2231, 2231, 2231, 206,
- 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231,
- 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231,
- 2231, 2231, 2231, 206, 2231, 2231, 206, 2231,
-
- 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231,
- 2231, 2231, 2231, 2231, 2231, 2231, 206, 206,
- 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231,
- 2231, 2231, 2231, 2231, 2231, 2231, 206, 206,
-
- 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231,
- 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231,
- 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231,
- 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231,
-
- 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231,
- 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231,
- 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231,
- 2231, 2231, 2231, 206, 206, 206, 206, 206,
-
- 2232, 2233, 2232, 206, 206, 206, 206, 2234,
- 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234,
- 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234,
- 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234,
-
- 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234,
- 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234,
- 2234, 2234, 2234, 2234, 206, 206, 206, 2235,
- 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235,
-
- 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236,
- 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236,
- 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236,
- 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236,
-
- 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236,
- 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2236,
- 2236, 2236, 2236, 2236, 2236, 2237, 2237, 2237,
- 2237, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
-
- 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
- 2238, 2238, 2237, 2239, 2240, 2241, 2241, 206,
- 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670,
- 1670, 1670, 1670, 1670, 1671, 206, 206, 206,
+ 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221,
+
+ 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221,
+ 2221, 2221, 2221, 2222, 2222, 2222, 2223, 2223,
+ 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224,
+ 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224,
+
+ 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224,
+ 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224,
+ 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224,
+ 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224,
+
+ 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224,
+ 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224,
+ 2224, 2224, 2224, 2224, 2224, 2224, 2224, 2224,
+ 2224, 2224, 2223, 2223, 2223, 2223, 2223, 2223,
+
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+
+ 2225, 2226, 2227, 2228, 2229, 2230, 2231, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 2232, 2233, 2234, 2235, 2236,
+ 221, 221, 221, 221, 221, 2237, 2238, 2239,
+
+ 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240,
+ 2240, 2241, 2239, 2239, 2239, 2239, 2239, 2239,
+ 2239, 2239, 2239, 2239, 2239, 2239, 2239, 323,
+ 2239, 2239, 2239, 2239, 2239, 323, 2239, 323,
+
+ 2239, 2239, 323, 2239, 2239, 323, 2239, 2239,
+ 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2240,
+ 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
+ 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
- 2240, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
+ 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
+ 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
+ 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
+ 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502,
- 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502,
+ 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
+ 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
+ 2242, 2242, 2243, 2243, 2243, 2243, 2243, 2243,
+ 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
- 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502,
- 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502,
- 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502,
- 1502, 1502, 1502, 1502, 1502, 1251, 206, 206,
+ 2243, 2243, 489, 437, 437, 437, 437, 437,
+ 437, 437, 437, 437, 437, 437, 437, 437,
+ 437, 437, 437, 2242, 2242, 2242, 2242, 2242,
+ 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
- 2242, 2242, 2242, 2242, 2242, 206, 206, 206,
+ 2242, 2242, 2242, 2242, 2242, 2242, 2244, 2244,
- 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
- 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
- 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
- 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
+ 2244, 2244, 2244, 2244, 2242, 2242, 2242, 2242,
+ 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
+ 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
+ 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
- 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
- 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
- 2243, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
+ 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
+ 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
+ 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
+ 2242, 2242, 2242, 2242, 2242, 2242, 2245, 1422,
- 1132, 2244, 2244, 2244, 2244, 2244, 2244, 2244,
- 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244,
- 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244,
- 2244, 2244, 2244, 2244, 206, 206, 206, 206,
+ 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246,
+ 2246, 2246, 2246, 2246, 2246, 2246, 2246, 2246,
+ 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
+ 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
+
+ 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
+ 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
+ 437, 437, 2242, 2242, 2242, 2242, 2242, 2242,
+ 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
+
+ 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
+ 437, 437, 437, 437, 437, 437, 437, 2246,
+ 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247,
+ 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247,
- 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245,
- 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245,
- 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245,
- 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2246,
+ 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247,
+ 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247,
+ 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
+ 2242, 2242, 2244, 2244, 2248, 363, 2246, 2246,
- 2247, 2247, 2247, 2247, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 2248, 2248, 2248,
2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249,
2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249,
+ 2250, 2251, 2252, 2253, 2254, 2255, 2255, 2256,
+ 2257, 2258, 221, 221, 221, 221, 221, 221,
- 2249, 2250, 2249, 2249, 2249, 2249, 2249, 2249,
- 2249, 2249, 2250, 206, 206, 206, 206, 206,
- 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251,
- 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251,
-
- 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251,
- 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251,
- 2251, 2251, 2251, 2251, 2251, 2251, 2252, 2252,
- 2252, 2252, 2252, 206, 206, 206, 206, 206,
-
- 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253,
- 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253,
- 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253,
- 2253, 2253, 2253, 2253, 2253, 2253, 206, 2254,
-
- 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255,
- 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255,
- 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255,
- 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255,
-
- 2255, 2255, 2255, 2255, 206, 206, 206, 206,
- 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255,
- 2256, 2257, 2257, 2257, 2257, 2257, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258,
- 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258,
- 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258,
- 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258,
-
- 2258, 2258, 2258, 2258, 2258, 2258, 2259, 2259,
- 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260,
- 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260,
- 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260,
-
- 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260,
- 2260, 2260, 2260, 2260, 2260, 2260, 2261, 2261,
- 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262,
- 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262,
-
- 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262,
- 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262,
- 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262,
- 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262,
-
- 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263,
- 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263,
- 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263,
- 2263, 2263, 2263, 2263, 2263, 2263, 206, 206,
-
- 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271,
- 2272, 2273, 206, 206, 206, 206, 206, 206,
- 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274,
- 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274,
-
- 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274,
- 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274,
- 2274, 2274, 2274, 2274, 206, 206, 206, 206,
- 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275,
-
- 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275,
- 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275,
- 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275,
- 2275, 2275, 2275, 2275, 206, 206, 206, 206,
-
- 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276,
- 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276,
- 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276,
- 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276,
-
- 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277,
- 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277,
-
- 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277,
- 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277,
- 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277,
- 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277,
-
- 2277, 2277, 2277, 2277, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 2278,
- 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279,
- 2279, 2279, 2279, 206, 2279, 2279, 2279, 2279,
-
- 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279,
- 2279, 2279, 2279, 206, 2279, 2279, 2279, 2279,
- 2279, 2279, 2279, 206, 2279, 2279, 206, 2280,
- 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280,
-
- 2280, 2280, 206, 2280, 2280, 2280, 2280, 2280,
- 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280,
- 2280, 2280, 206, 2280, 2280, 2280, 2280, 2280,
- 2280, 2280, 206, 2280, 2280, 206, 206, 206,
-
- 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281,
- 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281,
- 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281,
- 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281,
-
- 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281,
- 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281,
- 2281, 2281, 2281, 2281, 2281, 2281, 2281, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281,
- 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281,
- 2281, 2281, 2281, 2281, 2281, 2281, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2282, 1902, 1902, 2283, 2283, 2283, 206, 2283,
- 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283,
- 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283,
- 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283,
-
- 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283,
- 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283,
- 2283, 206, 2283, 2283, 2283, 2283, 2283, 2283,
- 2283, 2283, 2283, 206, 206, 206, 206, 206,
-
- 2284, 2284, 2284, 2284, 2284, 2284, 305, 305,
- 2284, 305, 2284, 2284, 2284, 2284, 2284, 2284,
- 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284,
- 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284,
-
- 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284,
- 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284,
- 2284, 2284, 2284, 2284, 2284, 2284, 305, 2284,
- 2284, 305, 305, 305, 2284, 305, 305, 2284,
-
- 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285,
- 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285,
- 2285, 2285, 2285, 2285, 2285, 2285, 305, 2286,
- 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287,
-
- 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288,
- 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288,
- 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2289,
- 2289, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
-
- 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291,
- 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291,
- 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291,
- 2291, 2291, 2291, 2291, 2291, 2291, 2291, 305,
-
- 305, 305, 305, 305, 305, 305, 305, 2292,
- 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
-
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
-
- 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293,
- 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293,
- 2293, 2293, 2293, 305, 2293, 2293, 305, 305,
- 305, 305, 305, 2294, 2294, 2294, 2294, 2294,
-
- 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295,
- 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295,
- 2295, 2295, 2295, 2295, 2295, 2295, 2296, 2296,
- 2296, 2296, 2297, 2297, 305, 305, 305, 2298,
-
- 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299,
- 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299,
- 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299,
- 2299, 2299, 305, 305, 305, 305, 305, 2300,
-
- 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301,
- 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301,
- 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301,
- 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301,
-
- 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302,
- 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302,
- 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302,
- 305, 305, 305, 305, 2303, 2303, 2302, 2302,
-
- 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303,
- 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303,
- 305, 305, 2303, 2303, 2303, 2303, 2303, 2303,
- 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303,
-
- 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303,
- 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303,
- 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303,
- 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2303,
-
- 2304, 2305, 2305, 2305, 305, 2305, 2305, 305,
- 305, 305, 305, 305, 2305, 2306, 2305, 2307,
- 2304, 2304, 2304, 2304, 305, 2304, 2304, 2304,
- 305, 2304, 2304, 2304, 2304, 2304, 2304, 2304,
-
- 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304,
- 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304,
- 2304, 2304, 2304, 2304, 2308, 2308, 305, 305,
- 2307, 2309, 2306, 305, 305, 305, 305, 2310,
-
- 2311, 2312, 2313, 2314, 2315, 2315, 2315, 2315,
- 2316, 305, 305, 305, 305, 305, 305, 305,
- 2317, 2317, 2317, 2317, 2317, 2317, 2318, 2318,
- 2319, 305, 305, 305, 305, 305, 305, 305,
-
- 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320,
- 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320,
- 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320,
- 2320, 2320, 2320, 2320, 2320, 2321, 2321, 2322,
-
- 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323,
- 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323,
- 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323,
- 2323, 2323, 2323, 2323, 2323, 2324, 2324, 2324,
-
- 2325, 2325, 2325, 2325, 2325, 2326, 2327, 2326,
- 2328, 2326, 2326, 2327, 2327, 2329, 2326, 2326,
- 2326, 2326, 2326, 2325, 2325, 2325, 2325, 2329,
- 2325, 2325, 2325, 2325, 2325, 2326, 2325, 2325,
-
- 2325, 2326, 2327, 2327, 2326, 2330, 2331, 305,
- 305, 305, 305, 2332, 2332, 2332, 2332, 2333,
- 2334, 2334, 2334, 2334, 2334, 2334, 2335, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
-
- 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336,
- 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336,
- 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336,
- 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336,
-
- 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336,
- 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336,
- 2336, 2336, 2336, 2336, 2336, 2336, 305, 305,
- 305, 2337, 2337, 2337, 2337, 2337, 2337, 2337,
-
- 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338,
- 2338, 2338, 2338, 2338, 2338, 2338, 2338, 2338,
- 2338, 2338, 2338, 2338, 2338, 2338, 305, 305,
- 2339, 2339, 2339, 2339, 2339, 2339, 2339, 2339,
-
- 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340,
- 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340,
- 2340, 2340, 2340, 305, 305, 305, 305, 305,
- 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341,
-
- 2342, 2343, 2342, 2343, 2343, 2343, 2342, 2342,
- 2342, 2343, 2342, 2342, 2343, 2342, 2343, 2343,
- 2342, 2343, 305, 305, 305, 305, 305, 305,
- 305, 2344, 2344, 2344, 2344, 305, 305, 305,
-
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 2345, 2345, 2345, 2345, 2346, 2346, 2347,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
-
- 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348,
- 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348,
- 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348,
- 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348,
-
- 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348,
- 2348, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
+ 288, 288, 288, 288, 1273, 1273, 1273, 1155,
+ 1155, 1155, 1155, 1155, 1155, 1155, 1941, 1941,
+ 2259, 2260, 2260, 2261, 2261, 2262, 2263, 2262,
+ 2263, 2264, 2265, 2264, 2265, 2264, 2265, 2264,
- 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349,
+ 2265, 2264, 2265, 2264, 2265, 2266, 2266, 2267,
+ 2268, 2259, 2259, 2259, 2259, 2261, 2261, 2261,
+ 2269, 2270, 2271, 221, 2272, 2273, 2274, 2274,
+ 2260, 2275, 2276, 2275, 2276, 2277, 2278, 2279,
+
+ 2259, 2259, 2280, 2281, 2282, 2283, 2284, 221,
+ 2259, 2285, 2286, 2259, 221, 221, 221, 221,
+ 2244, 2242, 2244, 2287, 2244, 437, 2244, 2242,
+ 2244, 2242, 2244, 2242, 2244, 2242, 2244, 2242,
+
+ 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
+ 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
+ 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242,
+ 2242, 2242, 2242, 2242, 2242, 437, 437, 2288,
+
+ 221, 2289, 2290, 2291, 2292, 2293, 2290, 2294,
+ 2295, 2296, 2290, 2297, 2298, 2299, 2300, 2301,
+ 2302, 2303, 2304, 2305, 2306, 2307, 2308, 2309,
+ 2310, 2311, 2312, 2313, 2314, 2315, 2316, 2289,
+
+ 2290, 2317, 2317, 2317, 2317, 2317, 2317, 2317,
+ 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317,
+ 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317,
+ 2317, 2317, 2317, 2318, 2290, 2319, 2320, 2321,
+
+ 2320, 2322, 2322, 2322, 2322, 2322, 2322, 2322,
+ 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322,
+ 2322, 2322, 2322, 2322, 2322, 2322, 2322, 2322,
+ 2322, 2322, 2322, 2318, 2315, 2319, 2315, 2323,
+
+ 2324, 2325, 2326, 2327, 2328, 2329, 2330, 2331,
+ 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331,
+ 2332, 2330, 2330, 2330, 2330, 2330, 2330, 2330,
+ 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330,
+
+ 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330,
+ 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330,
+ 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330,
+ 2330, 2330, 2330, 2330, 2330, 2330, 2333, 2333,
+
+ 2334, 2335, 2335, 2335, 2335, 2335, 2335, 2335,
+ 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335,
+ 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335,
+ 2335, 2335, 2335, 2335, 2335, 2335, 2335, 221,
+
+ 221, 221, 2335, 2335, 2335, 2335, 2335, 2335,
+ 221, 221, 2335, 2335, 2335, 2335, 2335, 2335,
+ 221, 221, 2335, 2335, 2335, 2335, 2335, 2335,
+ 221, 221, 2335, 2335, 2335, 221, 221, 221,
+
+ 2336, 2337, 2338, 2320, 2339, 2337, 2337, 221,
+ 2340, 2341, 2341, 2341, 2341, 2340, 2340, 221,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 2342, 2342, 2342, 2343, 2344, 2345, 2345,
+
+ 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346,
+ 2346, 2346, 2346, 2346, 221, 2346, 2346, 2346,
+ 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346,
+ 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346,
+
+ 2346, 2346, 2346, 2346, 2346, 2346, 2346, 221,
+ 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346,
+ 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346,
+ 2346, 2346, 2346, 221, 2346, 2346, 221, 2346,
+
+ 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346,
+ 2346, 2346, 2346, 2346, 2346, 2346, 221, 221,
+ 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346,
+ 2346, 2346, 2346, 2346, 2346, 2346, 221, 221,
+
+ 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346,
+ 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346,
+ 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346,
+ 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346,
+
+ 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346,
+ 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346,
+ 2346, 2346, 2346, 2346, 2346, 2346, 2346, 2346,
+ 2346, 2346, 2346, 221, 221, 221, 221, 221,
+
+ 2347, 2348, 2347, 221, 221, 221, 221, 2349,
2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349,
2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349,
2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349,
2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349,
2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349,
- 2349, 2349, 2349, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
-
- 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350,
- 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350,
- 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350,
+ 2349, 2349, 2349, 2349, 221, 221, 221, 2350,
2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350,
- 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350,
- 2350, 2350, 2350, 2350, 2350, 2350, 2350, 2350,
- 2350, 2350, 2350, 305, 305, 305, 305, 305,
- 305, 305, 2351, 2351, 2351, 2351, 2351, 2351,
+ 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351,
+ 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351,
+ 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351,
+ 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351,
+ 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351,
+ 2351, 2351, 2351, 2351, 2351, 2351, 2351, 2351,
+ 2351, 2351, 2351, 2351, 2351, 2352, 2352, 2352,
2352, 2353, 2353, 2353, 2353, 2353, 2353, 2353,
- 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353,
- 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353,
- 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353,
- 2353, 2353, 2354, 2353, 2355, 2355, 2355, 2355,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 2356, 2357, 2358, 2359, 2360, 2361, 2362, 2363,
- 2364, 2365, 305, 305, 305, 305, 305, 305,
+ 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353,
+ 2353, 2353, 2352, 2354, 2355, 2356, 2356, 221,
+ 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749,
+ 1749, 1749, 1749, 1749, 1751, 221, 221, 221,
+
+ 2355, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1276, 221, 221,
+
+ 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357,
+ 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357,
+ 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357,
+ 2357, 2357, 2357, 2357, 2357, 221, 221, 221,
+
+ 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358,
+ 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358,
+ 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358,
+ 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358,
+
+ 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358,
+ 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358,
+ 2358, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 1155, 2359, 2359, 2359, 2359, 2359, 2359, 2359,
+ 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359,
+ 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359,
+ 2359, 2359, 2359, 2359, 221, 221, 221, 221,
+
+ 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360,
+ 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360,
+ 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360,
+ 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2361,
+
+ 2362, 2362, 2362, 2362, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 2363, 2363, 2363,
+ 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364,
+ 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364,
+
+ 2364, 2365, 2364, 2364, 2364, 2364, 2364, 2364,
+ 2364, 2364, 2365, 221, 221, 221, 221, 221,
+ 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366,
+ 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366,
+
+ 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366,
+ 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366,
+ 2366, 2366, 2366, 2366, 2366, 2366, 2367, 2367,
+ 2367, 2367, 2367, 221, 221, 221, 221, 221,
+
+ 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368,
+ 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368,
+ 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368,
+ 2368, 2368, 2368, 2368, 2368, 2368, 221, 2369,
+
+ 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370,
+ 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370,
+ 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370,
+ 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370,
+
+ 2370, 2370, 2370, 2370, 221, 221, 221, 221,
+ 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370,
+ 2371, 2372, 2372, 2372, 2372, 2372, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373,
+ 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373,
+ 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373,
+ 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373,
+
+ 2373, 2373, 2373, 2373, 2373, 2373, 2374, 2374,
+ 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375,
+ 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375,
+ 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375,
- 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373,
- 2374, 2375, 2375, 2375, 2375, 2375, 2375, 2375,
2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375,
- 2375, 2375, 2375, 2375, 2375, 2375, 2375, 305,
-
- 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376,
- 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376,
- 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376,
- 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376,
-
- 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376,
- 2376, 2376, 305, 2377, 2377, 2378, 305, 305,
- 2376, 2376, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
-
- 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379,
- 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379,
- 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379,
- 2379, 2379, 2379, 2379, 2379, 2380, 2380, 2380,
-
- 2380, 2380, 2380, 2380, 2380, 2380, 2380, 2379,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 2381, 2381, 2381, 2382, 2381, 2381, 2381, 2381,
- 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381,
-
- 2381, 2381, 2381, 2381, 2381, 2383, 2384, 2384,
- 2385, 2385, 2385, 2384, 2385, 2384, 2384, 2384,
- 2384, 2386, 2386, 2386, 2387, 2388, 2388, 2388,
- 2388, 2388, 305, 305, 305, 305, 305, 305,
-
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 2389, 2389, 2389, 2389, 2390, 2390, 2389, 2389,
+ 2375, 2375, 2375, 2375, 2375, 2375, 2376, 2376,
+ 2377, 2377, 2377, 2377, 2377, 2377, 2377, 2377,
+ 2377, 2377, 2377, 2377, 2377, 2377, 2377, 2377,
+
+ 2377, 2377, 2377, 2377, 2377, 2377, 2377, 2377,
+ 2377, 2377, 2377, 2377, 2377, 2377, 2377, 2377,
+ 2377, 2377, 2377, 2377, 2377, 2377, 2377, 2377,
+ 2377, 2377, 2377, 2377, 2377, 2377, 2377, 2377,
+
+ 2378, 2378, 2378, 2378, 2378, 2378, 2378, 2378,
+ 2378, 2378, 2378, 2378, 2378, 2378, 2378, 2378,
+ 2378, 2378, 2378, 2378, 2378, 2378, 2378, 2378,
+ 2378, 2378, 2378, 2378, 2378, 2378, 221, 221,
+
+ 2379, 2380, 2381, 2382, 2383, 2384, 2385, 2386,
+ 2387, 2388, 221, 221, 221, 221, 221, 221,
2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389,
+ 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389,
+
+ 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389,
+ 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389,
+ 2389, 2389, 2389, 2389, 221, 221, 221, 221,
+ 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390,
+
+ 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390,
+ 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390,
+ 2390, 2390, 2390, 2390, 2390, 2390, 2390, 2390,
+ 2390, 2390, 2390, 2390, 221, 221, 221, 221,
+
+ 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391,
+ 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391,
+ 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391,
+ 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391,
+
+ 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392,
+ 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392,
+
+ 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392,
+ 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392,
+ 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392,
+ 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392,
+
+ 2392, 2392, 2392, 2392, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 2393,
+ 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394,
+ 2394, 2394, 2394, 221, 2394, 2394, 2394, 2394,
+
+ 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394,
+ 2394, 2394, 2394, 221, 2394, 2394, 2394, 2394,
+ 2394, 2394, 2394, 221, 2394, 2394, 221, 2395,
+ 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395,
+
+ 2395, 2395, 221, 2395, 2395, 2395, 2395, 2395,
+ 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395,
+ 2395, 2395, 221, 2395, 2395, 2395, 2395, 2395,
+ 2395, 2395, 221, 2395, 2395, 221, 221, 221,
+
+ 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396,
+ 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396,
+ 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396,
+ 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396,
+
+ 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396,
+ 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396,
+ 2396, 2396, 2396, 2396, 2396, 2396, 2396, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396,
+ 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396,
+ 2396, 2396, 2396, 2396, 2396, 2396, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 2397, 2398, 2398, 1989, 1989, 1989, 221, 1989,
+ 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989,
+ 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989,
+ 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989,
+
+ 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989,
+ 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989,
+ 1989, 221, 1989, 1989, 1989, 1989, 1989, 1989,
+ 1989, 1989, 1989, 221, 221, 221, 221, 221,
+
+ 2399, 2399, 2399, 2399, 2399, 2399, 323, 323,
+ 2399, 323, 2399, 2399, 2399, 2399, 2399, 2399,
+ 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399,
+ 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399,
+
+ 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399,
+ 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399,
+ 2399, 2399, 2399, 2399, 2399, 2399, 323, 2399,
+ 2399, 323, 323, 323, 2399, 323, 323, 2399,
+
+ 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400,
+ 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400,
+ 2400, 2400, 2400, 2400, 2400, 2400, 323, 2401,
+ 2402, 2402, 2402, 2402, 2402, 2402, 2402, 2402,
- 2389, 2389, 2391, 2392, 2391, 2392, 2393, 2393,
- 2393, 2393, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
-
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 2394, 2395, 2394, 2394, 2396, 2396, 2396, 2395,
- 2394, 2396, 2396, 2394, 2394, 2396, 2394, 2394,
-
- 2395, 2394, 2396, 2396, 2394, 2397, 2397, 2397,
- 2397, 2398, 2399, 2400, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
-
- 2401, 2401, 2401, 2401, 2401, 2401, 2401, 2401,
- 2401, 2401, 2401, 2401, 2401, 2401, 2401, 2401,
- 2401, 2401, 2401, 2401, 2401, 2401, 2401, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
-
- 2402, 2403, 2402, 2404, 2404, 2404, 2404, 2404,
- 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404,
- 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404,
- 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404,
- 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404,
- 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404,
- 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404,
2403, 2403, 2403, 2403, 2403, 2403, 2403, 2403,
- 2403, 2403, 2403, 2403, 2403, 2403, 2405, 2406,
- 2406, 2407, 2407, 2407, 2407, 2407, 206, 206,
- 206, 206, 2408, 2409, 2410, 2411, 2412, 2413,
- 2414, 2415, 2416, 2417, 2417, 2417, 2417, 2417,
- 2417, 2417, 2417, 2417, 2417, 2417, 2418, 2419,
- 2420, 2421, 2422, 2423, 2424, 2425, 2426, 2427,
- 2428, 2429, 2429, 2430, 2430, 2429, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 2431,
- 2432, 2432, 2433, 2434, 2434, 2434, 2434, 2434,
- 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434,
- 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434,
- 2434, 2434, 2435, 2434, 2435, 2434, 2434, 2434,
- 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434,
- 2434, 2434, 2434, 2435, 2434, 2434, 2434, 2434,
- 2433, 2433, 2433, 2432, 2432, 2432, 2432, 2433,
- 2433, 2436, 2437, 2438, 2438, 2439, 2440, 2440,
- 2440, 2440, 2441, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 2442, 206, 206,
- 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443,
- 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443,
- 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443,
- 2443, 206, 206, 206, 206, 206, 206, 206,
- 2444, 2445, 2446, 2447, 2448, 2449, 2450, 2451,
- 2452, 2453, 206, 206, 206, 206, 206, 206,
-
- 2454, 2454, 2454, 2455, 2455, 2455, 2455, 2455,
- 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455,
+ 2403, 2403, 2403, 2403, 2403, 2403, 2403, 2403,
+ 2403, 2403, 2403, 2403, 2403, 2403, 2403, 2404,
+ 2404, 2405, 2405, 2405, 2405, 2405, 2405, 2405,
+
+ 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406,
+ 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406,
+ 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406,
+ 2406, 2406, 2406, 2406, 2406, 2406, 2406, 323,
+
+ 323, 323, 323, 323, 323, 323, 323, 2407,
+ 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+
+ 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408,
+ 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408,
+ 2408, 2408, 2408, 323, 2408, 2408, 323, 323,
+ 323, 323, 323, 2409, 2409, 2409, 2409, 2409,
+
+ 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410,
+ 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410,
+ 2410, 2410, 2410, 2410, 2410, 2410, 2411, 2411,
+ 2411, 2411, 2412, 2412, 323, 323, 323, 2413,
+
+ 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414,
+ 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414,
+ 2414, 2414, 2414, 2414, 2414, 2414, 2414, 2414,
+ 2414, 2414, 323, 323, 323, 323, 323, 2415,
+
+ 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416,
+ 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416,
+ 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416,
+ 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416,
+
+ 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417,
+ 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417,
+ 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417,
+ 323, 323, 323, 323, 2418, 2418, 2417, 2417,
+
+ 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418,
+ 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418,
+ 323, 323, 2418, 2418, 2418, 2418, 2418, 2418,
+ 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418,
+
+ 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418,
+ 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418,
+ 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418,
+ 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418,
+
+ 2419, 2420, 2420, 2420, 323, 2420, 2420, 323,
+ 323, 323, 323, 323, 2420, 2421, 2420, 2422,
+ 2419, 2419, 2419, 2419, 323, 2419, 2419, 2419,
+ 323, 2419, 2419, 2419, 2419, 2419, 2419, 2419,
+
+ 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419,
+ 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419,
+ 2419, 2419, 2419, 2419, 2423, 2423, 323, 323,
+ 2422, 2424, 2421, 323, 323, 323, 323, 2425,
+
+ 2426, 2427, 2428, 2429, 2430, 2430, 2430, 2430,
+ 2431, 323, 323, 323, 323, 323, 323, 323,
+ 2432, 2432, 2432, 2432, 2432, 2432, 2433, 2433,
+ 2434, 323, 323, 323, 323, 323, 323, 323,
+
+ 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435,
+ 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435,
+ 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435,
+ 2435, 2435, 2435, 2435, 2435, 2436, 2436, 2437,
+
+ 2438, 2438, 2438, 2438, 2438, 2438, 2438, 2438,
+ 2438, 2438, 2438, 2438, 2438, 2438, 2438, 2438,
+ 2438, 2438, 2438, 2438, 2438, 2438, 2438, 2438,
+ 2438, 2438, 2438, 2438, 2438, 2439, 2439, 2439,
+
+ 2440, 2440, 2440, 2440, 2440, 2441, 2442, 2441,
+ 2443, 2441, 2441, 2442, 2442, 2444, 2441, 2441,
+ 2441, 2441, 2441, 2440, 2440, 2440, 2440, 2444,
+ 2440, 2440, 2440, 2440, 2440, 2441, 2440, 2440,
+
+ 2440, 2441, 2442, 2442, 2441, 2445, 2446, 323,
+ 323, 323, 323, 2447, 2447, 2447, 2447, 2448,
+ 2449, 2449, 2449, 2449, 2449, 2449, 2450, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+
+ 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451,
+ 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451,
+ 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451,
+ 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451,
+
+ 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451,
+ 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451,
+ 2451, 2451, 2451, 2451, 2451, 2451, 323, 323,
+ 323, 2452, 2452, 2452, 2452, 2452, 2452, 2452,
+
+ 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453,
+ 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453,
+ 2453, 2453, 2453, 2453, 2453, 2453, 323, 323,
+ 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454,
+
2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455,
2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455,
- 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2456,
- 2457, 2457, 2457, 2457, 2458, 2457, 2459, 2459,
- 2457, 2457, 2457, 2460, 2460, 206, 2461, 2462,
- 2463, 2464, 2465, 2466, 2467, 2468, 2469, 2470,
- 2471, 2472, 2472, 2472, 2473, 2474, 2474, 2475,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476,
- 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476,
- 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476,
- 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476,
- 2476, 2476, 2476, 2477, 2478, 2479, 2476, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2480, 2480, 2481, 2482, 2482, 2482, 2482, 2482,
- 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482,
- 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482,
- 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482,
- 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482,
- 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482,
- 2482, 2482, 2482, 2481, 2481, 2481, 2480, 2480,
- 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2481,
- 2483, 2482, 2484, 2484, 2482, 2485, 2485, 2486,
- 2487, 2488, 2489, 2488, 2488, 2490, 2491, 2492,
- 2493, 2494, 2495, 2496, 2497, 2498, 2499, 2500,
- 2501, 2502, 2503, 2504, 2505, 2506, 2507, 2507,
- 206, 2508, 2508, 2508, 2508, 2508, 2508, 2508,
- 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508,
- 2508, 2508, 2508, 2508, 2508, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509,
- 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509,
- 2509, 2509, 206, 2509, 2509, 2509, 2509, 2509,
- 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509,
- 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509,
- 2509, 2509, 2509, 2509, 2510, 2510, 2510, 2511,
- 2511, 2511, 2510, 2510, 2511, 2512, 2513, 2511,
- 2514, 2514, 2515, 2514, 2514, 2515, 2516, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2517, 2517, 2517, 2517, 2517, 2517, 2517, 206,
- 2517, 206, 2517, 2517, 2517, 2517, 206, 2517,
+ 2455, 2455, 2455, 323, 323, 323, 323, 323,
+ 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456,
+
+ 2457, 2458, 2457, 2458, 2458, 2458, 2457, 2457,
+ 2457, 2458, 2457, 2457, 2458, 2457, 2458, 2458,
+ 2457, 2458, 323, 323, 323, 323, 323, 323,
+ 323, 2459, 2459, 2459, 2459, 323, 323, 323,
+
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 2460, 2460, 2460, 2460, 2461, 2461, 2462,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+
+ 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463,
+ 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463,
+ 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463,
+ 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463,
+
+ 2463, 2463, 2463, 2463, 2463, 2463, 2463, 2463,
+ 2463, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+
+ 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464,
+ 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464,
+ 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464,
+ 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464,
+
+ 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464,
+ 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464,
+ 2464, 2464, 2464, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+
+ 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465,
+ 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465,
+ 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465,
+ 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465,
+
+ 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465,
+ 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465,
+ 2465, 2465, 2465, 323, 323, 323, 323, 323,
+ 323, 323, 2466, 2466, 2466, 2466, 2466, 2466,
+
+ 2467, 2468, 2468, 2468, 2468, 2468, 2468, 2468,
+ 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468,
+ 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468,
+ 2468, 2468, 2468, 2468, 2468, 2468, 2468, 2468,
+
+ 2468, 2468, 2469, 2468, 2470, 2470, 2470, 2470,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 2471, 2472, 2473, 2474, 2475, 2476, 2477, 2478,
+ 2479, 2480, 323, 323, 323, 323, 323, 323,
+
+ 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488,
+ 2489, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
+ 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
+ 2490, 2490, 2490, 2490, 2490, 2490, 2490, 323,
+
+ 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491,
+ 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491,
+ 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491,
+ 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491,
+
+ 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491,
+ 2491, 2491, 323, 2492, 2492, 2493, 323, 323,
+ 2491, 2491, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 2494, 2494, 2494,
+
+ 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495,
+ 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495,
+ 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495,
+ 2495, 2495, 2495, 2495, 2495, 2496, 2496, 2496,
+
+ 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2495,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 2497, 2497, 2497, 2498, 2497, 2497, 2497, 2497,
+ 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
+
+ 2497, 2497, 2497, 2497, 2497, 2499, 2500, 2500,
+ 2501, 2501, 2501, 2500, 2501, 2500, 2500, 2500,
+ 2500, 2502, 2502, 2502, 2503, 2504, 2504, 2504,
+ 2504, 2504, 323, 323, 323, 323, 323, 323,
+
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 2505, 2505, 2505, 2505, 2506, 2506, 2505, 2505,
+ 2505, 2505, 2505, 2505, 2505, 2505, 2505, 2505,
+
+ 2505, 2505, 2507, 2508, 2507, 2508, 2509, 2509,
+ 2509, 2509, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 2510, 2511, 2510, 2510, 2512, 2512, 2512, 2511,
+ 2510, 2512, 2512, 2510, 2510, 2512, 2510, 2510,
+
+ 2511, 2510, 2512, 2512, 2510, 2513, 2513, 2513,
+ 2513, 2514, 2515, 2516, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+
2517, 2517, 2517, 2517, 2517, 2517, 2517, 2517,
- 2517, 2517, 2517, 2517, 2517, 2517, 206, 2517,
2517, 2517, 2517, 2517, 2517, 2517, 2517, 2517,
- 2517, 2518, 206, 206, 206, 206, 206, 206,
- 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519,
- 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519,
- 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519,
+ 2517, 2517, 2517, 2517, 2517, 2517, 2517, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+
+ 2518, 2519, 2518, 2520, 2520, 2520, 2520, 2520,
+ 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520,
+ 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520,
+ 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520,
+ 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520,
+ 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520,
+ 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520,
2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519,
- 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519,
- 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2520,
- 2521, 2521, 2521, 2520, 2520, 2520, 2520, 2520,
- 2520, 2522, 2523, 206, 206, 206, 206, 206,
- 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2531,
- 2532, 2533, 206, 206, 206, 206, 206, 206,
-
- 2534, 2535, 2536, 2536, 206, 2537, 2537, 2537,
- 2537, 2537, 2537, 2537, 2537, 206, 206, 2537,
- 2537, 206, 206, 2537, 2537, 2537, 2537, 2537,
- 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537,
- 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537,
- 2537, 206, 2537, 2537, 2537, 2537, 2537, 2537,
- 2537, 206, 2537, 2537, 206, 2537, 2537, 2537,
- 2537, 2537, 206, 2538, 2539, 2537, 2540, 2536,
- 2535, 2536, 2536, 2536, 2536, 206, 206, 2536,
- 2536, 206, 206, 2541, 2541, 2542, 206, 206,
- 2543, 206, 206, 206, 206, 206, 206, 2540,
- 206, 206, 206, 206, 206, 2537, 2537, 2537,
- 2537, 2537, 2536, 2536, 206, 206, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 206, 206, 206,
- 2544, 2544, 2544, 2544, 2544, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
- 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
- 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
- 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
- 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
- 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
- 2545, 2545, 2545, 2545, 2545, 2546, 2546, 2546,
- 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547,
- 2546, 2546, 2548, 2547, 2547, 2546, 2549, 2545,
- 2545, 2545, 2545, 2550, 2550, 2551, 2551, 2552,
- 2553, 2554, 2555, 2556, 2557, 2558, 2559, 2560,
- 2561, 2562, 2563, 2551, 206, 2552, 2564, 2565,
- 2566, 2566, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567,
- 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567,
- 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567,
- 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567,
- 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567,
- 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567,
- 2568, 2569, 2569, 2570, 2570, 2570, 2570, 2570,
- 2570, 2569, 2571, 2572, 2572, 2568, 2572, 2570,
- 2570, 2569, 2573, 2574, 2567, 2567, 2575, 2567,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2576, 2577, 2578, 2579, 2580, 2581, 2582, 2583,
- 2584, 2585, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2587,
- 2588, 2588, 2589, 2589, 2589, 2589, 206, 206,
- 2588, 2588, 2590, 2590, 2589, 2589, 2588, 2591,
- 2592, 2593, 2594, 2594, 2595, 2595, 2596, 2596,
- 2596, 2594, 2597, 2597, 2597, 2597, 2597, 2597,
- 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597,
- 2598, 2598, 2598, 2598, 2599, 2599, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600,
- 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600,
- 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600,
- 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600,
- 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600,
- 2600, 2600, 2600, 2600, 2600, 2600, 2600, 2600,
- 2601, 2601, 2601, 2602, 2602, 2602, 2602, 2602,
- 2602, 2602, 2602, 2601, 2601, 2602, 2601, 2603,
- 2602, 2604, 2604, 2605, 2600, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2606, 2607, 2608, 2609, 2610, 2611, 2612, 2613,
- 2614, 2615, 206, 206, 206, 206, 206, 206,
- 2616, 2616, 2616, 2616, 2616, 2616, 2616, 2616,
- 2616, 2616, 2616, 2616, 2616, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617,
- 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617,
- 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617,
- 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617,
- 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617,
- 2617, 2617, 2617, 2618, 2619, 2618, 2619, 2619,
- 2618, 2618, 2618, 2618, 2618, 2618, 2620, 2621,
- 2622, 2623, 206, 206, 206, 206, 206, 206,
- 2624, 2625, 2626, 2627, 2628, 2629, 2630, 2631,
- 2632, 2633, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634,
- 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634,
- 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634,
- 2634, 2634, 2635, 206, 206, 2636, 2636, 2636,
- 2637, 2637, 2636, 2636, 2636, 2636, 2638, 2636,
- 2636, 2636, 2636, 2639, 206, 206, 206, 206,
- 2640, 2641, 2642, 2643, 2644, 2645, 2646, 2647,
- 2648, 2649, 2650, 2650, 2651, 2651, 2651, 2652,
- 2653, 2653, 2653, 2653, 2653, 2653, 2653, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654,
- 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654,
- 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654,
- 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654,
- 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654,
- 2654, 2654, 2654, 2654, 2655, 2655, 2655, 2656,
- 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656,
- 2655, 2657, 2658, 2659, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660,
- 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660,
- 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660,
- 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660,
- 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661,
- 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661,
- 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661,
- 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661,
- 2662, 2663, 2664, 2665, 2666, 2667, 2668, 2669,
- 2670, 2671, 2672, 2672, 2672, 2672, 2672, 2672,
- 2672, 2672, 2672, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 2673,
-
- 2674, 2674, 2674, 2674, 2674, 2674, 2674, 206,
- 206, 2674, 206, 206, 2674, 2674, 2674, 2674,
- 2674, 2674, 2674, 2674, 206, 2674, 2674, 206,
- 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674,
- 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674,
- 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674,
- 2675, 2676, 2676, 2676, 2676, 2676, 206, 2676,
- 2677, 206, 206, 2678, 2678, 2679, 2680, 2681,
- 2676, 2681, 2676, 2682, 2683, 2684, 2683, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2685, 2686, 2687, 2688, 2689, 2690, 2691, 2692,
- 2693, 2694, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695,
- 206, 206, 2695, 2695, 2695, 2695, 2695, 2695,
- 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695,
- 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695,
- 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695,
- 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695,
- 2695, 2696, 2696, 2696, 2697, 2697, 2697, 2697,
- 206, 206, 2697, 2697, 2696, 2696, 2696, 2696,
- 2698, 2695, 2699, 2695, 2696, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2700, 2701, 2701, 2701, 2701, 2701, 2701, 2702,
- 2702, 2701, 2701, 2700, 2700, 2700, 2700, 2700,
- 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
- 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
- 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
- 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
- 2700, 2700, 2700, 2701, 2703, 2701, 2701, 2701,
- 2701, 2704, 2705, 2701, 2701, 2701, 2701, 2706,
- 2707, 2708, 2709, 2709, 2708, 2706, 2707, 2703,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2710, 2711, 2711, 2711, 2711, 2711, 2711, 2712,
- 2712, 2711, 2711, 2711, 2710, 2710, 2710, 2710,
- 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710,
- 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710,
- 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710,
- 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710,
- 2710, 2710, 2710, 2710, 2713, 2713, 2714, 2714,
- 2714, 2714, 2711, 2711, 2711, 2711, 2711, 2711,
- 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2712,
- 2711, 2715, 2716, 2717, 2717, 2718, 2719, 2719,
- 2719, 2716, 2716, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720,
- 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720,
- 2721, 2721, 2721, 2721, 2721, 2721, 2721, 2721,
- 2721, 2721, 2721, 2721, 2721, 2721, 2721, 2721,
- 2721, 2721, 2721, 2721, 2721, 2721, 2721, 2721,
- 2721, 2721, 2721, 2721, 2721, 2721, 2721, 2721,
- 2721, 2721, 2721, 2721, 2721, 2721, 2721, 2721,
- 2721, 2721, 2721, 2721, 2721, 2721, 2721, 2721,
- 2721, 2721, 2721, 2721, 2721, 2721, 2721, 2721,
- 2721, 206, 206, 206, 206, 206, 206, 206,
-
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722,
- 2722, 206, 2722, 2722, 2722, 2722, 2722, 2722,
- 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722,
- 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722,
- 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722,
- 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2723,
- 2724, 2724, 2724, 2724, 2724, 2724, 2724, 206,
- 2724, 2724, 2724, 2724, 2724, 2724, 2723, 2725,
- 2722, 2726, 2726, 2727, 2727, 2727, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2728, 2729, 2730, 2731, 2732, 2733, 2734, 2735,
- 2736, 2737, 2738, 2738, 2738, 2738, 2738, 2738,
- 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738,
- 2738, 2738, 2738, 2738, 2738, 206, 206, 206,
- 2739, 2740, 2741, 2741, 2741, 2741, 2741, 2741,
- 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741,
- 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741,
- 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741,
- 206, 206, 2742, 2742, 2742, 2742, 2742, 2742,
- 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742,
- 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742,
- 206, 2743, 2742, 2742, 2742, 2742, 2742, 2742,
- 2742, 2743, 2742, 2742, 2743, 2742, 2742, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2744, 2744, 2744, 2744, 2744, 2744, 2744, 206,
- 2744, 2744, 206, 2744, 2744, 2744, 2744, 2744,
- 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744,
- 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744,
- 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744,
- 2744, 2744, 2744, 2744, 2744, 2744, 2744, 2744,
- 2744, 2745, 2745, 2745, 2745, 2745, 2745, 206,
- 206, 206, 2745, 206, 2745, 2745, 206, 2745,
- 2745, 2745, 2746, 2745, 2747, 2747, 2748, 2745,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2749, 2750, 2751, 2752, 2753, 2754, 2755, 2756,
- 2757, 2758, 206, 206, 206, 206, 206, 206,
- 2759, 2759, 2759, 2759, 2759, 2759, 206, 2759,
- 2759, 206, 2759, 2759, 2759, 2759, 2759, 2759,
- 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759,
- 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759,
- 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759,
- 2759, 2759, 2760, 2760, 2760, 2760, 2760, 206,
- 2761, 2761, 206, 2760, 2760, 2761, 2760, 2762,
- 2759, 206, 206, 206, 206, 206, 206, 206,
- 2763, 2764, 2765, 2766, 2767, 2768, 2769, 2770,
- 2771, 2772, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
+ 2519, 2519, 2519, 2519, 2519, 2519, 2521, 2522,
+ 2522, 2523, 2523, 2523, 2523, 2523, 221, 221,
+ 221, 221, 2524, 2525, 2526, 2527, 2528, 2529,
+ 2530, 2531, 2532, 2533, 2533, 2533, 2533, 2533,
+ 2533, 2533, 2533, 2533, 2533, 2533, 2534, 2535,
+ 2536, 2537, 2538, 2539, 2540, 2541, 2542, 2543,
+ 2544, 2545, 2545, 2546, 2546, 2545, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 2547,
+ 2548, 2548, 2549, 2550, 2550, 2550, 2550, 2550,
+ 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550,
+ 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550,
+ 2550, 2550, 2551, 2550, 2551, 2550, 2550, 2550,
+ 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550,
+ 2550, 2550, 2550, 2551, 2550, 2550, 2550, 2550,
+ 2549, 2549, 2549, 2548, 2548, 2548, 2548, 2549,
+ 2549, 2552, 2553, 2554, 2554, 2555, 2556, 2556,
+ 2556, 2556, 2557, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 2558, 221, 221,
+ 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559,
+ 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559,
+ 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559,
+ 2559, 221, 221, 221, 221, 221, 221, 221,
+ 2560, 2561, 2562, 2563, 2564, 2565, 2566, 2567,
+ 2568, 2569, 221, 221, 221, 221, 221, 221,
+
+ 2570, 2570, 2570, 2571, 2571, 2571, 2571, 2571,
+ 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571,
+ 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571,
+ 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571,
+ 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2572,
+ 2573, 2573, 2573, 2573, 2574, 2573, 2575, 2575,
+ 2573, 2573, 2573, 2576, 2576, 221, 2577, 2578,
+ 2579, 2580, 2581, 2582, 2583, 2584, 2585, 2586,
+ 2587, 2588, 2588, 2588, 2589, 2590, 2590, 2591,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592,
+ 2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592,
+ 2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592,
+ 2592, 2592, 2592, 2592, 2592, 2592, 2592, 2592,
+ 2592, 2592, 2592, 2593, 2594, 2595, 2592, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 2596, 2596, 2597, 2598, 2598, 2598, 2598, 2598,
+ 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598,
+ 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598,
+ 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598,
+ 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598,
+ 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598,
+ 2598, 2598, 2598, 2597, 2597, 2597, 2596, 2596,
+ 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2597,
+ 2599, 2598, 2600, 2600, 2598, 2601, 2601, 2602,
+ 2603, 2604, 2605, 2604, 2604, 2606, 2607, 2608,
+ 2609, 2610, 2611, 2612, 2613, 2614, 2615, 2616,
+ 2617, 2618, 2619, 2620, 2621, 2622, 2623, 2623,
+ 221, 2624, 2624, 2624, 2624, 2624, 2624, 2624,
+ 2624, 2624, 2624, 2624, 2624, 2624, 2624, 2624,
+ 2624, 2624, 2624, 2624, 2624, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625,
+ 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625,
+ 2625, 2625, 221, 2625, 2625, 2625, 2625, 2625,
+ 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625,
+ 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625,
+ 2625, 2625, 2625, 2625, 2626, 2626, 2626, 2627,
+ 2627, 2627, 2626, 2626, 2627, 2628, 2629, 2627,
+ 2630, 2630, 2631, 2630, 2630, 2631, 2632, 2633,
+ 2633, 2634, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 2635, 2635, 2635, 2635, 2635, 2635, 2635, 221,
+ 2635, 221, 2635, 2635, 2635, 2635, 221, 2635,
+ 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635,
+ 2635, 2635, 2635, 2635, 2635, 2635, 221, 2635,
+ 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635,
+ 2635, 2636, 221, 221, 221, 221, 221, 221,
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637,
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637,
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637,
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637,
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637,
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2638,
+ 2639, 2639, 2639, 2638, 2638, 2638, 2638, 2638,
+ 2638, 2640, 2641, 221, 221, 221, 221, 221,
+ 2642, 2643, 2644, 2645, 2646, 2647, 2648, 2649,
+ 2650, 2651, 221, 221, 221, 221, 221, 221,
+
+ 2652, 2653, 2654, 2654, 221, 2655, 2655, 2655,
+ 2655, 2655, 2655, 2655, 2655, 221, 221, 2655,
+ 2655, 221, 221, 2655, 2655, 2655, 2655, 2655,
+ 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655,
+ 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655,
+ 2655, 221, 2655, 2655, 2655, 2655, 2655, 2655,
+ 2655, 221, 2655, 2655, 221, 2655, 2655, 2655,
+ 2655, 2655, 221, 2656, 2657, 2658, 2659, 2654,
+ 2653, 2654, 2654, 2654, 2654, 221, 221, 2654,
+ 2654, 221, 221, 2660, 2660, 2661, 221, 221,
+ 2662, 221, 221, 221, 221, 221, 221, 2659,
+ 221, 221, 221, 221, 221, 2658, 2655, 2655,
+ 2655, 2655, 2654, 2654, 221, 221, 2663, 2663,
+ 2663, 2663, 2663, 2663, 2663, 221, 221, 221,
+ 2663, 2663, 2663, 2663, 2663, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664,
+ 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664,
+ 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664,
+ 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664,
+ 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664,
+ 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664,
+ 2664, 2664, 2664, 2664, 2664, 2665, 2665, 2665,
+ 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666,
+ 2665, 2665, 2667, 2666, 2666, 2665, 2668, 2664,
+ 2664, 2664, 2664, 2669, 2669, 2670, 2670, 2671,
+ 2672, 2673, 2674, 2675, 2676, 2677, 2678, 2679,
+ 2680, 2681, 2682, 2670, 221, 2671, 2683, 2684,
+ 2685, 2685, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686,
+ 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686,
+ 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686,
+ 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686,
+ 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686,
+ 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686,
+ 2687, 2688, 2688, 2689, 2689, 2689, 2689, 2689,
+ 2689, 2688, 2690, 2691, 2691, 2687, 2691, 2689,
+ 2689, 2688, 2692, 2693, 2686, 2686, 2694, 2686,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 2695, 2696, 2697, 2698, 2699, 2700, 2701, 2702,
+ 2703, 2704, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 2705, 2705, 2705, 2705, 2705, 2705, 2705, 2705,
+ 2705, 2705, 2705, 2705, 2705, 2705, 2705, 2705,
+ 2705, 2705, 2705, 2705, 2705, 2705, 2705, 2705,
+ 2705, 2705, 2705, 2705, 2705, 2705, 2705, 2705,
+ 2705, 2705, 2705, 2705, 2705, 2705, 2705, 2705,
+ 2705, 2705, 2705, 2705, 2705, 2705, 2705, 2706,
+ 2707, 2707, 2708, 2708, 2708, 2708, 221, 221,
+ 2707, 2707, 2709, 2709, 2708, 2708, 2707, 2710,
+ 2711, 2712, 2713, 2713, 2714, 2714, 2715, 2715,
+ 2715, 2713, 2716, 2716, 2716, 2716, 2716, 2716,
+ 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716,
+ 2717, 2717, 2717, 2717, 2718, 2718, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719,
+ 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719,
+ 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719,
+ 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719,
+ 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719,
+ 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719,
+ 2720, 2720, 2720, 2721, 2721, 2721, 2721, 2721,
+ 2721, 2721, 2721, 2720, 2720, 2721, 2720, 2722,
+ 2721, 2723, 2723, 2724, 2719, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 2725, 2726, 2727, 2728, 2729, 2730, 2731, 2732,
+ 2733, 2734, 221, 221, 221, 221, 221, 221,
+ 2735, 2735, 2735, 2735, 2735, 2735, 2735, 2735,
+ 2735, 2735, 2735, 2735, 2735, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736,
+ 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736,
+ 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736,
+ 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736,
+ 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736,
+ 2736, 2736, 2736, 2737, 2738, 2737, 2738, 2738,
+ 2737, 2737, 2737, 2737, 2737, 2737, 2739, 2740,
+ 2741, 2742, 221, 221, 221, 221, 221, 221,
+ 2743, 2744, 2745, 2746, 2747, 2748, 2749, 2750,
+ 2751, 2752, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753,
+ 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753,
+ 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753,
+ 2753, 2753, 2754, 221, 221, 2755, 2755, 2755,
+ 2756, 2756, 2755, 2755, 2755, 2755, 2757, 2755,
+ 2755, 2755, 2755, 2758, 221, 221, 221, 221,
+ 2759, 2760, 2761, 2762, 2763, 2764, 2765, 2766,
+ 2767, 2768, 2769, 2769, 2770, 2770, 2770, 2771,
+ 2772, 2772, 2772, 2772, 2772, 2772, 2772, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773,
2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773,
2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773,
- 2773, 2773, 2773, 2774, 2774, 2775, 2775, 2776,
- 2776, 206, 206, 206, 206, 206, 206, 206,
-
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2777, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778,
- 2778, 2778, 2778, 2778, 2778, 2778, 2778, 2778,
- 2778, 2778, 2778, 2778, 2778, 2779, 2779, 2779,
- 2779, 2779, 2779, 2779, 2779, 2780, 2780, 2780,
- 2780, 2779, 2779, 2779, 2779, 2779, 2779, 2779,
+ 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773,
+ 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773,
+ 2773, 2773, 2773, 2773, 2774, 2774, 2774, 2775,
+ 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775,
+ 2774, 2776, 2777, 2778, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779,
- 2779, 2779, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 2781,
-
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
-
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782,
- 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2783,
- 2783, 2783, 2783, 2783, 2783, 2783, 2783, 2783,
- 2783, 2783, 2783, 2783, 2783, 2783, 2783, 2783,
- 2783, 2783, 2783, 2783, 2783, 2783, 2783, 2783,
- 2783, 2783, 2783, 2783, 2783, 2783, 2783, 2783,
- 2783, 2783, 2783, 2783, 2783, 2783, 2783, 2783,
- 2783, 2784, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785,
- 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785,
- 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785,
- 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785,
- 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785,
- 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785,
- 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785,
- 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785,
- 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785,
- 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785,
- 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785,
- 2785, 2785, 2785, 2785, 2785, 2785, 2785, 2785,
- 2785, 2785, 2785, 2786, 2786, 2786, 2786, 2786,
- 2786, 2786, 2786, 2786, 2786, 2786, 2786, 206,
- 2787, 2787, 2787, 2787, 2788, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2784, 2784, 2784, 2784, 2784, 2784, 2784, 2784,
- 2784, 2784, 2784, 2784, 2784, 2784, 2784, 2784,
- 2784, 2784, 2784, 2784, 2784, 2784, 2784, 2784,
- 2784, 2784, 2784, 2784, 2784, 2784, 2784, 2784,
- 2784, 2784, 2784, 2784, 2784, 2784, 2784, 2784,
- 2784, 2784, 2784, 2784, 2784, 2784, 2784, 2784,
- 2784, 2784, 2784, 2784, 2784, 2784, 2784, 2784,
- 2784, 2784, 2784, 2784, 2784, 2784, 2784, 2784,
- 2784, 2784, 2784, 2784, 2784, 2784, 2784, 2784,
- 2784, 2784, 2784, 2784, 2784, 2784, 2784, 2784,
- 2784, 2784, 2784, 2784, 2784, 2784, 2784, 2784,
- 2784, 2784, 2784, 2784, 2784, 2784, 2784, 2784,
- 2784, 2784, 2784, 2784, 2784, 2784, 2784, 2784,
- 2784, 2784, 2784, 2784, 2784, 2784, 2784, 2784,
- 2784, 2784, 2784, 2784, 2784, 2784, 2784, 2784,
- 2784, 2784, 2784, 2784, 2784, 2784, 2784, 2784,
-
- 2784, 2784, 2784, 2784, 2784, 2784, 2784, 2784,
- 2784, 2784, 2784, 2784, 2784, 2784, 2784, 2784,
- 2784, 2784, 2784, 2784, 2784, 2784, 2784, 2784,
- 2784, 2784, 2784, 2784, 2784, 2784, 2784, 2784,
- 2784, 2784, 2784, 2784, 2784, 2784, 2784, 2784,
- 2784, 2784, 2784, 2784, 2784, 2784, 2784, 2784,
- 2784, 2784, 2784, 2784, 2784, 2784, 2784, 2784,
- 2784, 2784, 2784, 2784, 2784, 2784, 2784, 2784,
- 2784, 2784, 2784, 2784, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789,
- 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789,
- 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789,
- 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789,
- 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789,
- 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789,
- 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789,
- 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789,
- 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789,
- 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789,
- 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789,
- 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789,
- 2789, 2790, 2790, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
-
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2792, 2792, 2792, 2793, 2793, 2793, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2793, 2791, 2791, 2791, 2792, 2793,
- 2792, 2793, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
-
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2792, 2793, 2793, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
-
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
- 2791, 2791, 2791, 2791, 2791, 2791, 2791, 206,
- 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2795,
- 2796, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
-
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2798, 2799,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
-
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
- 2797, 2797, 2797, 2797, 2797, 2797, 2797, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
-
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
- 2800, 206, 206, 206, 206, 206, 206, 206,
- 2801, 2801, 2801, 2801, 2801, 2801, 2801, 2801,
- 2801, 2801, 2801, 2801, 2801, 2801, 2801, 2801,
- 2801, 2801, 2801, 2801, 2801, 2801, 2801, 2801,
- 2801, 2801, 2801, 2801, 2801, 2801, 2801, 206,
- 2802, 2803, 2804, 2805, 2806, 2807, 2808, 2809,
- 2810, 2811, 206, 206, 206, 206, 2812, 2812,
- 2813, 2813, 2813, 2813, 2813, 2813, 2813, 2813,
- 2813, 2813, 2813, 2813, 2813, 2813, 2813, 2813,
- 2813, 2813, 2813, 2813, 2813, 2813, 2813, 2813,
- 2813, 2813, 2813, 2813, 2813, 2813, 2813, 2813,
- 2813, 2813, 2813, 2813, 2813, 2813, 2813, 2813,
- 2813, 2813, 2813, 2813, 2813, 2813, 2813, 2813,
- 2813, 2813, 2813, 2813, 2813, 2813, 2813, 2813,
- 2813, 2813, 2813, 2813, 2813, 2813, 2813, 2813,
- 2813, 2813, 2813, 2813, 2813, 2813, 2813, 2813,
- 2813, 2813, 2813, 2813, 2813, 2813, 2813, 206,
- 2814, 2815, 2816, 2817, 2818, 2819, 2820, 2821,
- 2822, 2823, 206, 206, 206, 206, 206, 206,
- 2824, 2824, 2824, 2824, 2824, 2824, 2824, 2824,
- 2824, 2824, 2824, 2824, 2824, 2824, 2824, 2824,
- 2824, 2824, 2824, 2824, 2824, 2824, 2824, 2824,
- 2824, 2824, 2824, 2824, 2824, 2824, 206, 206,
- 2825, 2825, 2825, 2825, 2825, 2826, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827,
- 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827,
- 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827,
- 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827,
- 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827,
- 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827,
- 2828, 2828, 2828, 2828, 2828, 2828, 2828, 2829,
- 2829, 2830, 2831, 2831, 2832, 2832, 2832, 2832,
- 2833, 2833, 2833, 2833, 2829, 2832, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2834, 2835, 2836, 2837, 2838, 2839, 2840, 2841,
- 2842, 2843, 206, 2844, 2844, 2844, 2844, 2844,
- 2844, 2844, 206, 2827, 2827, 2827, 2827, 2827,
- 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827,
- 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827,
- 206, 206, 206, 206, 206, 2827, 2827, 2827,
- 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827,
- 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2845, 2845, 2845, 2845, 2845, 2845, 2845, 2845,
- 2845, 2845, 2845, 2845, 2845, 2845, 2845, 2845,
- 2845, 2845, 2845, 2845, 2845, 2845, 2845, 2845,
- 2845, 2845, 2845, 2845, 2845, 2845, 2845, 2845,
- 2846, 2846, 2846, 2846, 2846, 2846, 2846, 2846,
- 2846, 2846, 2846, 2846, 2846, 2846, 2846, 2846,
- 2846, 2846, 2846, 2846, 2846, 2846, 2846, 2846,
- 2846, 2846, 2846, 2846, 2846, 2846, 2846, 2846,
- 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847,
- 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847,
- 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2848,
- 2849, 2850, 2850, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851,
- 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851,
- 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851,
- 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851,
- 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851,
- 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851,
- 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851,
- 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851,
- 2851, 2851, 2851, 2851, 2851, 2852, 2852, 2852,
- 2852, 2852, 2852, 206, 206, 206, 206, 2853,
- 2851, 2854, 2854, 2854, 2854, 2854, 2854, 2854,
- 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854,
- 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854,
- 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854,
- 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2854,
- 2854, 2854, 2854, 2854, 2854, 2854, 2854, 2855,
- 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855,
- 206, 206, 206, 206, 206, 206, 206, 2856,
- 2856, 2856, 2856, 2857, 2857, 2857, 2857, 2857,
- 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2858, 2859, 2860, 2861, 2862, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2863, 2863, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
-
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2865, 2865, 2865,
- 2865, 2865, 2866, 2866, 2866, 2866, 2866, 2866,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
+ 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779,
+ 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779,
+ 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779,
+ 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780,
+ 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780,
+ 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780,
+ 2780, 2780, 2780, 2780, 2780, 2780, 2780, 2780,
+ 2781, 2782, 2783, 2784, 2785, 2786, 2787, 2788,
+ 2789, 2790, 2791, 2791, 2791, 2791, 2791, 2791,
+ 2791, 2791, 2791, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 2792,
+
+ 2793, 2793, 2793, 2793, 2793, 2793, 2793, 221,
+ 221, 2793, 221, 221, 2793, 2793, 2793, 2793,
+ 2793, 2793, 2793, 2793, 221, 2793, 2793, 221,
+ 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793,
+ 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793,
+ 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793,
+ 2794, 2795, 2795, 2795, 2795, 2795, 221, 2795,
+ 2796, 221, 221, 2797, 2797, 2798, 2799, 2800,
+ 2795, 2800, 2795, 2801, 2802, 2803, 2802, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 2804, 2805, 2806, 2807, 2808, 2809, 2810, 2811,
+ 2812, 2813, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 2814, 2814, 2814, 2814, 2814, 2814, 2814, 2814,
+ 221, 221, 2814, 2814, 2814, 2814, 2814, 2814,
+ 2814, 2814, 2814, 2814, 2814, 2814, 2814, 2814,
+ 2814, 2814, 2814, 2814, 2814, 2814, 2814, 2814,
+ 2814, 2814, 2814, 2814, 2814, 2814, 2814, 2814,
+ 2814, 2814, 2814, 2814, 2814, 2814, 2814, 2814,
+ 2814, 2815, 2815, 2815, 2816, 2816, 2816, 2816,
+ 221, 221, 2816, 2816, 2815, 2815, 2815, 2815,
+ 2817, 2814, 2818, 2814, 2815, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 2819, 2820, 2820, 2820, 2820, 2820, 2820, 2821,
+ 2821, 2820, 2820, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2820, 2822, 2820, 2820, 2820,
+ 2820, 2823, 2824, 2820, 2820, 2820, 2820, 2825,
+ 2826, 2827, 2828, 2828, 2827, 2825, 2826, 2822,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 2829, 2830, 2830, 2830, 2830, 2830, 2830, 2831,
+ 2831, 2830, 2830, 2830, 2829, 2829, 2829, 2829,
+ 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829,
+ 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829,
+ 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829,
+ 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829,
+ 2829, 2829, 2829, 2829, 2832, 2832, 2833, 2833,
+ 2833, 2833, 2830, 2830, 2830, 2830, 2830, 2830,
+ 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2831,
+ 2830, 2834, 2835, 2836, 2836, 2837, 2838, 2838,
+ 2838, 2835, 2835, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2839,
+ 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2839,
+ 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840,
+ 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840,
+ 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840,
+ 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840,
+ 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840,
+ 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840,
+ 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840,
+ 2840, 221, 221, 221, 221, 221, 221, 221,
+
+ 2841, 2841, 2841, 2841, 2841, 2841, 2841, 2841,
+ 2841, 2841, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2842,
+ 2842, 221, 2842, 2842, 2842, 2842, 2842, 2842,
+ 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2842,
+ 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2842,
+ 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2842,
+ 2842, 2842, 2842, 2842, 2842, 2842, 2842, 2843,
+ 2844, 2844, 2844, 2844, 2844, 2844, 2844, 221,
+ 2844, 2844, 2844, 2844, 2844, 2844, 2843, 2845,
+ 2842, 2846, 2846, 2847, 2847, 2847, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 2848, 2849, 2850, 2851, 2852, 2853, 2854, 2855,
+ 2856, 2857, 2858, 2858, 2858, 2858, 2858, 2858,
+ 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858,
+ 2858, 2858, 2858, 2858, 2858, 221, 221, 221,
+ 2859, 2860, 2861, 2861, 2861, 2861, 2861, 2861,
+ 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861,
+ 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861,
+ 2861, 2861, 2861, 2861, 2861, 2861, 2861, 2861,
+ 221, 221, 2862, 2862, 2862, 2862, 2862, 2862,
+ 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862,
+ 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862,
+ 221, 2863, 2862, 2862, 2862, 2862, 2862, 2862,
+ 2862, 2863, 2862, 2862, 2863, 2862, 2862, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 2864, 2864, 2864, 2864, 2864, 2864, 2864, 221,
+ 2864, 2864, 221, 2864, 2864, 2864, 2864, 2864,
2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864,
- 2864, 2864, 2864, 2867, 2867, 2867, 2867, 2867,
- 2867, 2867, 2867, 2867, 2867, 2867, 2867, 2867,
-
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
-
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 2868, 2868,
- 2868, 2868, 2868, 2868, 2868, 2868, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2867, 2867, 2867, 2867, 2867, 2867, 2867, 2867,
- 2867, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2869, 2869, 2869, 2869, 206, 2869, 2869, 2869,
- 2869, 2869, 2869, 2869, 206, 2869, 2869, 206,
-
- 2870, 2871, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
-
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
- 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2873,
- 2874, 2874, 2874, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2875, 2875, 2875, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 2876, 2876, 2876, 2876,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
-
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877,
- 2877, 2877, 2877, 2877, 206, 206, 206, 206,
-
- 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878,
- 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878,
- 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878,
- 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878,
- 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878,
- 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878,
- 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878,
- 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878,
- 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878,
- 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878,
- 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878,
- 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878,
- 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878,
- 2878, 2878, 2878, 206, 206, 206, 206, 206,
- 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878,
- 2878, 2878, 2878, 2878, 2878, 206, 206, 206,
- 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878,
- 2878, 206, 206, 206, 206, 206, 206, 206,
- 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878,
- 2878, 2878, 206, 206, 2879, 2880, 2881, 2882,
- 2883, 2883, 2883, 2883, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884,
- 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884,
- 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884,
- 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884,
- 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884,
- 2884, 2884, 2884, 2884, 2884, 2884, 206, 206,
- 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884,
- 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884,
- 2884, 2884, 2884, 2884, 2884, 2884, 2884, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2885, 2885, 2885, 2885, 2885, 2885, 2885, 2885,
- 2885, 2885, 2885, 2885, 2885, 2885, 2885, 2885,
- 2885, 2885, 2885, 2885, 2885, 2885, 2885, 2885,
- 2885, 2885, 2885, 2885, 2885, 2885, 2885, 2885,
- 2885, 2885, 2885, 2885, 2885, 2885, 2885, 2885,
- 2885, 2885, 2885, 2885, 2885, 2885, 2885, 2885,
- 2885, 2885, 2885, 2885, 2885, 2885, 2885, 2885,
- 2885, 2885, 2885, 2885, 2885, 2885, 2885, 2885,
- 2885, 2885, 2885, 2885, 2885, 2885, 2885, 2885,
- 2885, 2885, 2885, 2885, 2885, 2885, 2885, 2885,
- 2885, 2885, 2885, 2885, 2885, 2885, 2885, 2885,
- 2885, 2885, 2885, 2885, 2885, 2885, 2885, 2885,
- 2885, 2885, 2885, 2885, 2885, 2885, 2885, 2885,
- 2885, 2885, 2885, 2885, 2885, 2885, 2885, 2885,
- 2885, 2885, 2885, 2885, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 206,
- 206, 1502, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2887, 2887,
- 2887, 2887, 2887, 2887, 2887, 2888, 2889, 2890,
- 2890, 2890, 2886, 2886, 2886, 2891, 2888, 2888,
- 2888, 2888, 2888, 2892, 2892, 2892, 2892, 2892,
- 2892, 2892, 2892, 2893, 2893, 2893, 2893, 2893,
- 2893, 2893, 2893, 2886, 2886, 2894, 2894, 2894,
- 2894, 2894, 2893, 2893, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2894, 2894, 2894, 2894, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2887, 2887, 2887, 2887, 2887,
- 2887, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886,
- 2886, 2886, 2886, 2886, 2886, 2886, 2895, 2895,
- 2895, 2895, 2895, 2895, 2895, 2895, 2895, 2895,
- 2895, 2896, 2896, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
- 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
- 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
- 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
- 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
- 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
- 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
- 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
- 2238, 2238, 2897, 2897, 2897, 2238, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898,
- 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898,
- 2898, 2898, 2898, 2898, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553,
- 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553,
- 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553,
- 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553,
- 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553,
- 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553,
- 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553,
- 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553,
- 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553,
- 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553,
- 1553, 1553, 1553, 1553, 1553, 1553, 1553, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899,
- 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899,
- 2899, 2899, 2898, 2898, 2898, 2898, 2898, 2898,
- 2898, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2901, 2901, 2901, 2901, 2901, 2901,
+ 2864, 2865, 2865, 2865, 2865, 2865, 2865, 221,
+ 221, 221, 2865, 221, 2865, 2865, 221, 2865,
+ 2865, 2865, 2866, 2865, 2867, 2867, 2868, 2865,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 2869, 2870, 2871, 2872, 2873, 2874, 2875, 2876,
+ 2877, 2878, 221, 221, 221, 221, 221, 221,
+ 2879, 2879, 2879, 2879, 2879, 2879, 221, 2879,
+ 2879, 221, 2879, 2879, 2879, 2879, 2879, 2879,
+ 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879,
+ 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879,
+ 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879,
+ 2879, 2879, 2880, 2880, 2880, 2880, 2880, 221,
+ 2881, 2881, 221, 2880, 2880, 2881, 2880, 2882,
+ 2879, 221, 221, 221, 221, 221, 221, 221,
+ 2883, 2884, 2885, 2886, 2887, 2888, 2889, 2890,
+ 2891, 2892, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 2893, 2893, 2893, 2893, 2893, 2893, 2893, 2893,
+ 2893, 2893, 2893, 2893, 2893, 2893, 2893, 2893,
+ 2893, 2893, 2894, 2895, 2895, 2896, 2896, 2897,
+ 2897, 221, 221, 221, 221, 221, 221, 221,
+
+ 2898, 2898, 2899, 2900, 2901, 2901, 2901, 2901,
2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
+ 2901, 221, 2901, 2901, 2901, 2901, 2901, 2901,
2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 206, 2901, 2901,
2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2900, 206, 2900, 2900,
- 206, 206, 2900, 206, 206, 2900, 2900, 206,
- 206, 2900, 2900, 2900, 2900, 206, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2901, 2901,
- 2901, 2901, 206, 2901, 206, 2901, 2901, 2901,
- 2901, 2902, 2901, 2901, 206, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
-
- 2901, 2901, 2901, 2901, 2900, 2900, 206, 2900,
- 2900, 2900, 2900, 206, 206, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 206, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 206, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2900, 2900, 206, 2900, 2900, 2900, 2900, 206,
- 2900, 2900, 2900, 2900, 2900, 206, 2900, 206,
- 206, 206, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 206, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
-
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 1494, 1494, 206, 206,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2903, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2904, 2901, 2901, 2901, 2901,
- 2901, 2901, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2903, 2901, 2901, 2901, 2901,
-
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2904, 2901, 2901,
- 2901, 2901, 2901, 2901, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2903, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2904,
- 2901, 2901, 2901, 2901, 2901, 2901, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2903,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2904, 2901, 2901, 2901, 2901, 2901, 2901,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900,
- 2900, 2903, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901,
- 2901, 2901, 2901, 2904, 2901, 2901, 2901, 2901,
- 2901, 2901, 2905, 2906, 206, 206, 2907, 2908,
- 2909, 2910, 2911, 2912, 2913, 2914, 2915, 2916,
- 2907, 2908, 2909, 2910, 2911, 2912, 2913, 2914,
- 2915, 2916, 2907, 2908, 2909, 2910, 2911, 2912,
- 2913, 2914, 2915, 2916, 2907, 2908, 2909, 2910,
- 2911, 2912, 2913, 2914, 2915, 2916, 2907, 2908,
- 2909, 2910, 2911, 2912, 2913, 2914, 2915, 2916,
-
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
+ 2901, 2901, 2901, 2901, 2900, 2900, 2898, 2898,
+ 2898, 2898, 2898, 221, 221, 221, 2900, 2900,
+ 2898, 2902, 2903, 2904, 2904, 2905, 2905, 2905,
+ 2905, 2905, 2905, 2905, 2905, 2905, 2905, 2905,
+ 2906, 2907, 2908, 2909, 2910, 2911, 2912, 2913,
+ 2914, 2915, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 2916, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
-
- 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918,
- 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918,
- 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918,
- 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918,
+ 2917, 2917, 2917, 2917, 2917, 2918, 2918, 2918,
+ 2918, 2918, 2918, 2918, 2918, 2919, 2919, 2919,
+ 2919, 2918, 2918, 2918, 2918, 2918, 2918, 2918,
2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918,
- 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918,
- 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2917,
- 2917, 2917, 2917, 2918, 2918, 2918, 2918, 2918,
- 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918,
- 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918,
- 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918,
- 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918,
- 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918,
- 2918, 2918, 2918, 2918, 2918, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2918, 2917, 2917,
- 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2917,
- 2917, 2917, 2917, 2917, 2918, 2917, 2917, 2919,
- 2920, 2919, 2919, 2921, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 2918, 2918, 2918, 2918, 2918,
- 206, 2918, 2918, 2918, 2918, 2918, 2918, 2918,
- 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
- 1901, 1901, 2922, 1901, 1901, 1901, 1901, 1901,
- 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
- 1901, 1901, 1901, 1901, 1901, 1901, 1901, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 2923, 2923, 2923, 2923, 2923, 2923, 2923, 206,
- 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
- 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
- 2923, 206, 206, 2923, 2923, 2923, 2923, 2923,
- 2923, 2923, 206, 2923, 2923, 206, 2923, 2923,
- 2923, 2923, 2923, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
+ 2918, 2918, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 2920,
+
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2921,
+ 2921, 2921, 2921, 2921, 2921, 2921, 2921, 2922,
+ 2922, 2922, 2922, 2922, 2922, 2922, 2922, 2922,
+ 2922, 2922, 2922, 2922, 2922, 2922, 2922, 2922,
+ 2922, 2922, 2922, 2922, 2922, 2922, 2922, 2922,
+ 2922, 2922, 2922, 2922, 2922, 2922, 2922, 2922,
+ 2922, 2922, 2922, 2922, 2922, 2922, 2922, 2922,
+ 2922, 2923, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
2924, 2924, 2924, 2924, 2924, 2924, 2924, 2924,
2924, 2924, 2924, 2924, 2924, 2924, 2924, 2924,
2924, 2924, 2924, 2924, 2924, 2924, 2924, 2924,
2924, 2924, 2924, 2924, 2924, 2924, 2924, 2924,
2924, 2924, 2924, 2924, 2924, 2924, 2924, 2924,
- 2924, 2924, 2924, 2924, 2924, 206, 206, 206,
- 2925, 2925, 2925, 2925, 2925, 2925, 2925, 2926,
- 2926, 2926, 2926, 2926, 2926, 2926, 206, 206,
- 2927, 2928, 2929, 2930, 2931, 2932, 2933, 2934,
- 2935, 2936, 206, 206, 206, 206, 2924, 2937,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
-
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938,
- 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938,
- 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2938,
- 2938, 2938, 2938, 2938, 2938, 2938, 2939, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940,
- 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940,
- 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940,
- 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940,
+ 2924, 2924, 2924, 2924, 2924, 2924, 2924, 2924,
+ 2924, 2924, 2924, 2924, 2924, 2924, 2924, 2924,
+ 2924, 2924, 2924, 2924, 2924, 2924, 2924, 2924,
+ 2924, 2924, 2924, 2924, 2924, 2924, 2924, 2924,
+ 2924, 2924, 2924, 2924, 2924, 2924, 2924, 2924,
+ 2924, 2924, 2924, 2924, 2924, 2924, 2924, 2924,
+ 2924, 2924, 2924, 2924, 2924, 2924, 2924, 2924,
+ 2924, 2924, 2924, 2925, 2925, 2925, 2925, 2925,
+ 2925, 2925, 2925, 2925, 2925, 2925, 2925, 221,
+ 2926, 2926, 2926, 2926, 2927, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
+ 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
+ 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
+ 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
+ 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
+ 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
+ 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
+ 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
+ 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
+ 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
+ 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
+ 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
+ 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
+ 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
+ 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
+ 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
+
+ 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
+ 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
+ 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
+ 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
+ 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
+ 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
+ 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
+ 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923,
+ 2923, 2923, 2923, 2923, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 2928, 2928, 2928, 2928, 2928, 2928, 2928, 2928,
+ 2928, 2928, 2928, 2928, 2928, 2928, 2928, 2928,
+ 2928, 2928, 2928, 2928, 2928, 2928, 2928, 2928,
+ 2928, 2928, 2928, 2928, 2928, 2928, 2928, 2928,
+ 2928, 2928, 2928, 2928, 2928, 2928, 2928, 2928,
+ 2928, 2928, 2928, 2928, 2928, 2928, 2928, 2928,
+ 2928, 2928, 2928, 2928, 2928, 2928, 2928, 2928,
+ 2928, 2928, 2928, 2928, 2928, 2928, 2928, 2928,
+ 2928, 2928, 2928, 2928, 2928, 2928, 2928, 2928,
+ 2928, 2928, 2928, 2928, 2928, 2928, 2928, 2928,
+ 2928, 2928, 2928, 2928, 2928, 2928, 2928, 2928,
+ 2928, 2928, 2928, 2928, 2928, 2928, 2928, 2928,
+ 2928, 2929, 2929, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2931, 2931, 2931, 2932, 2932, 2932, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2932, 2930, 2930, 2930, 2931, 2932,
+ 2931, 2932, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2931, 2932, 2932, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930,
+ 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2933,
+ 2934, 2934, 2934, 2934, 2934, 2934, 2934, 2935,
+ 2936, 2937, 2937, 2937, 2938, 2939, 2938, 2939,
+ 2940, 2941, 2941, 2941, 2941, 2941, 2941, 2940,
2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940,
- 2940, 2940, 2940, 2940, 2941, 2941, 2941, 2941,
- 2942, 2943, 2944, 2945, 2946, 2947, 2948, 2949,
- 2950, 2951, 206, 206, 206, 206, 206, 2952,
-
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 2953, 2953, 2953, 2953, 2953, 2953, 2953, 206,
- 2953, 2953, 2953, 2953, 206, 2953, 2953, 206,
- 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953,
- 2953, 2953, 2953, 2953, 2953, 2953, 2953, 206,
-
- 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954,
- 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954,
- 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954,
- 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954,
- 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954,
- 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954,
- 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954,
- 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954,
- 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954,
- 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954,
- 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954,
- 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954,
- 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954,
- 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954,
- 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954,
- 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954,
- 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954,
- 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954,
- 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954,
- 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954,
- 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954,
- 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954,
- 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954,
- 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954,
- 2954, 2954, 2954, 2954, 2954, 305, 305, 2955,
- 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955,
- 2956, 2956, 2956, 2956, 2956, 2956, 2956, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
-
- 2957, 2957, 2957, 2957, 2957, 2957, 2957, 2957,
- 2957, 2957, 2957, 2957, 2957, 2957, 2957, 2957,
- 2957, 2957, 2957, 2957, 2957, 2957, 2957, 2957,
- 2957, 2957, 2957, 2957, 2957, 2957, 2957, 2957,
- 2957, 2957, 2958, 2958, 2958, 2958, 2958, 2958,
+ 2940, 2940, 2940, 2940, 2940, 2940, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2943, 2944,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942,
+ 2942, 2942, 2942, 2942, 2942, 2942, 2942, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945,
+ 2945, 221, 221, 221, 221, 221, 221, 221,
+ 2946, 2946, 2946, 2946, 2946, 2946, 2946, 2946,
+ 2946, 2946, 2946, 2946, 2946, 2946, 2946, 2946,
+ 2946, 2946, 2946, 2946, 2946, 2946, 2946, 2946,
+ 2946, 2946, 2946, 2946, 2946, 2946, 2946, 221,
+ 2947, 2948, 2949, 2950, 2951, 2952, 2953, 2954,
+ 2955, 2956, 221, 221, 221, 221, 2957, 2957,
2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958,
2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958,
2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958,
- 2958, 2958, 2958, 2958, 2959, 2959, 2959, 2959,
- 2959, 2959, 2960, 2961, 305, 305, 305, 305,
- 2962, 2963, 2964, 2965, 2966, 2967, 2968, 2969,
- 2970, 2971, 305, 305, 305, 305, 2972, 2972,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
-
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
-
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 2973, 2973, 2973, 2973, 2973, 2973, 2973,
- 2973, 2973, 2973, 2973, 2973, 2973, 2973, 2973,
- 2973, 2973, 2973, 2973, 2973, 2973, 2973, 2973,
- 2973, 2973, 2973, 2973, 2973, 2973, 2973, 2973,
- 2973, 2973, 2973, 2973, 2973, 2973, 2973, 2973,
- 2973, 2973, 2973, 2973, 2973, 2973, 2973, 2973,
- 2973, 2973, 2973, 2973, 2973, 2973, 2973, 2973,
- 2973, 2973, 2973, 2973, 2974, 2973, 2973, 2973,
- 2975, 2973, 2973, 2973, 2973, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
-
- 305, 2976, 2976, 2976, 2976, 2976, 2976, 2976,
- 2976, 2976, 2976, 2976, 2976, 2976, 2976, 2976,
- 2976, 2976, 2976, 2976, 2976, 2976, 2976, 2976,
- 2976, 2976, 2976, 2976, 2976, 2976, 2976, 2976,
- 2976, 2976, 2976, 2976, 2976, 2976, 2976, 2976,
- 2976, 2976, 2976, 2976, 2976, 2976, 2977, 2976,
- 2976, 2976, 2976, 2976, 2976, 2976, 2976, 2976,
- 2976, 2976, 2976, 2976, 2976, 2976, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305,
-
- 2978, 2978, 2978, 2978, 419, 2978, 2978, 2978,
- 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978,
- 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978,
- 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978,
- 419, 2978, 2978, 419, 2978, 419, 419, 2978,
- 419, 2978, 2978, 2978, 2978, 2978, 2978, 2978,
- 2978, 2978, 2978, 419, 2978, 2978, 2978, 2978,
- 419, 2978, 419, 2978, 419, 419, 419, 419,
- 419, 419, 2978, 419, 419, 419, 419, 2978,
- 419, 2978, 419, 2978, 419, 2978, 2978, 2978,
- 419, 2978, 2978, 419, 2978, 419, 419, 2978,
- 419, 2978, 419, 2978, 419, 2978, 419, 2978,
- 419, 2978, 2978, 419, 2978, 419, 419, 2978,
- 2978, 2978, 2978, 419, 2978, 2978, 2978, 2978,
- 2978, 2978, 2978, 419, 2978, 2978, 2978, 2978,
- 419, 2978, 2978, 2978, 2978, 419, 2978, 419,
- 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978,
- 2978, 2978, 419, 2978, 2978, 2978, 2978, 2978,
- 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978,
- 2978, 2978, 2978, 2978, 419, 419, 419, 419,
- 419, 2978, 2978, 2978, 419, 2978, 2978, 2978,
- 2978, 2978, 419, 2978, 2978, 2978, 2978, 2978,
- 2978, 2978, 2978, 2978, 2978, 2978, 2978, 2978,
- 2978, 2978, 2978, 2978, 419, 419, 419, 419,
- 419, 419, 419, 419, 419, 419, 419, 419,
- 419, 419, 419, 419, 419, 419, 419, 419,
- 419, 419, 419, 419, 419, 419, 419, 419,
- 419, 419, 419, 419, 419, 419, 419, 419,
- 419, 419, 419, 419, 419, 419, 419, 419,
- 419, 419, 419, 419, 419, 419, 419, 419,
- 2979, 2979, 419, 419, 419, 419, 419, 419,
- 419, 419, 419, 419, 419, 419, 419, 419,
-
- 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618,
- 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618,
- 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618,
- 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618,
- 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618,
- 1618, 1618, 1618, 1618, 2980, 2980, 2980, 2980,
- 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618,
- 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618,
- 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618,
- 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618,
- 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618,
- 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618,
- 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618,
- 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618,
- 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618,
- 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618,
- 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618,
- 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618,
- 1618, 1618, 1618, 1618, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 2980,
- 2980, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1620,
- 2980, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 2980, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
- 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
- 1620, 1620, 1620, 1620, 1620, 1620, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
-
- 2981, 2981, 2982, 2983, 2984, 2985, 2986, 2987,
- 2988, 2989, 2990, 2991, 2991, 2992, 2992, 2992,
- 2993, 2993, 2993, 2993, 2993, 2993, 2993, 2993,
- 2993, 2993, 2993, 2993, 2993, 2993, 2993, 2993,
- 2993, 2993, 2993, 2993, 2993, 2993, 2993, 2993,
- 2993, 2993, 2994, 2994, 2994, 2994, 2994, 2995,
- 2996, 2997, 2996, 2996, 2996, 2996, 2996, 2996,
- 2996, 2996, 2996, 2996, 2996, 2997, 2996, 2997,
- 2996, 2996, 2997, 2996, 2996, 2996, 2997, 2996,
- 2996, 2996, 2994, 2994, 2994, 2994, 2994, 2998,
- 2999, 2999, 2999, 2999, 2999, 2999, 2999, 3000,
- 2999, 2999, 2999, 2999, 2999, 2999, 2999, 3000,
+ 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958,
+ 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958,
+ 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958,
+ 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958,
+ 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958,
+ 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958,
+ 2958, 2958, 2958, 2958, 2958, 2958, 2958, 221,
+ 2959, 2960, 2961, 2962, 2963, 2964, 2965, 2966,
+ 2967, 2968, 221, 221, 221, 221, 221, 221,
+ 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969,
+ 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969,
+ 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969,
+ 2969, 2969, 2969, 2969, 2969, 2969, 221, 221,
+ 2970, 2970, 2970, 2970, 2970, 2971, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 2972, 2972, 2972, 2972, 2972, 2972, 2972, 2972,
+ 2972, 2972, 2972, 2972, 2972, 2972, 2972, 2972,
+ 2972, 2972, 2972, 2972, 2972, 2972, 2972, 2972,
+ 2972, 2972, 2972, 2972, 2972, 2972, 2972, 2972,
+ 2972, 2972, 2972, 2972, 2972, 2972, 2972, 2972,
+ 2972, 2972, 2972, 2972, 2972, 2972, 2972, 2972,
+ 2973, 2973, 2973, 2973, 2973, 2973, 2973, 2974,
+ 2974, 2975, 2976, 2976, 2977, 2977, 2977, 2977,
+ 2978, 2978, 2978, 2978, 2974, 2977, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 2979, 2980, 2981, 2982, 2983, 2984, 2985, 2986,
+ 2987, 2988, 221, 2989, 2989, 2989, 2989, 2989,
+ 2989, 2989, 221, 2972, 2972, 2972, 2972, 2972,
+ 2972, 2972, 2972, 2972, 2972, 2972, 2972, 2972,
+ 2972, 2972, 2972, 2972, 2972, 2972, 2972, 2972,
+ 221, 221, 221, 221, 221, 2972, 2972, 2972,
+ 2972, 2972, 2972, 2972, 2972, 2972, 2972, 2972,
+ 2972, 2972, 2972, 2972, 2972, 2972, 2972, 2972,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990,
+ 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990,
+ 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990,
+ 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990,
+ 2991, 2991, 2991, 2991, 2991, 2991, 2991, 2991,
+ 2991, 2991, 2991, 2991, 2991, 2991, 2991, 2991,
+ 2991, 2991, 2991, 2991, 2991, 2991, 2991, 2991,
+ 2991, 2991, 2991, 2991, 2991, 2991, 2991, 2991,
+ 2992, 2992, 2992, 2992, 2992, 2992, 2992, 2992,
+ 2992, 2992, 2992, 2992, 2992, 2992, 2992, 2992,
+ 2992, 2992, 2992, 2992, 2992, 2992, 2992, 2993,
+ 2994, 2995, 2995, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996,
+ 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996,
+ 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996,
+ 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996,
+ 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996,
+ 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996,
+ 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996,
+ 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996,
+ 2996, 2996, 2996, 2996, 2996, 2997, 2997, 2997,
+ 2997, 2997, 2997, 221, 221, 221, 221, 2998,
+ 2996, 2999, 2999, 2999, 2999, 2999, 2999, 2999,
2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999,
- 2999, 2999, 3001, 3001, 3002, 2992, 2992, 2992,
- 3003, 3003, 2999, 2999, 2999, 2999, 2999, 2999,
- 2999, 3000, 2999, 3000, 3000, 2999, 3003, 3004,
2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999,
- 2999, 2999, 831, 831, 831, 831, 3005, 3006,
- 2994, 3005, 3005, 3005, 3005, 3005, 3005, 3005,
- 3005, 3005, 3005, 3007, 3007, 3007, 3007, 3007,
- 3007, 3007, 3007, 3007, 3007, 3007, 3007, 3007,
- 3007, 3007, 3007, 3007, 3007, 2992, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 3008, 3008,
- 3008, 3008, 3008, 3008, 3008, 3008, 3008, 3008,
- 3008, 3008, 3008, 3008, 3008, 3008, 3008, 3008,
- 3008, 3008, 3008, 3008, 3008, 3008, 3008, 3008,
-
- 3009, 3010, 3010, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804,
- 1804, 1804, 3011, 1804, 1804, 1804, 1804, 1804,
- 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804,
- 1804, 1804, 1804, 1804, 1804, 1804, 1804, 3011,
- 1804, 1804, 3010, 3010, 3010, 3010, 3010, 3010,
- 3010, 3010, 3010, 3012, 2980, 2980, 2980, 2980,
- 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804,
- 1804, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 3010, 3010, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 3013, 3013, 3013, 3013, 3013, 3013, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
-
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
- 1620, 1620, 1620, 1620, 1620, 3014, 3014, 3014,
- 1557, 1557, 1557, 1557, 1557, 1557, 1620, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1620, 3014, 3014,
- 1557, 1557, 1557, 1557, 1557, 1621, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1620, 1620, 1620, 1620,
- 1620, 1620, 1620, 1620, 1559, 1559, 1620, 1620,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1556, 1556, 1557,
- 1557, 1557, 1557, 1557, 1556, 1557, 1557, 1557,
- 1557, 1557, 1621, 1621, 1621, 1620, 1557, 1621,
- 1557, 1557, 1621, 3015, 3015, 1620, 1620, 3014,
- 3014, 3014, 3014, 3014, 1620, 1620, 1620, 1620,
- 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
- 3014, 3014, 3014, 3016, 3016, 3016, 3016, 3016,
-
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1620,
- 1557, 1620, 1621, 1621, 1557, 1557, 1621, 1621,
- 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621,
- 1621, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1621, 1621,
- 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621,
- 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621,
- 1621, 1557, 1557, 1557, 1621, 1557, 1557, 1557,
- 1557, 1621, 1621, 1621, 1557, 1621, 1621, 1621,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1621,
- 1557, 1621, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1556, 1557, 1556, 1557, 1556, 1557, 1557, 1557,
- 1557, 1557, 1621, 1557, 1557, 1557, 1557, 1556,
- 1557, 1556, 1556, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1620, 1557, 1557, 1557, 1557, 1620, 1620, 3014,
-
- 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1556,
- 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556,
- 1556, 1556, 1556, 1556, 1556, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1556, 1556, 1556, 1556, 1556, 1556,
- 1556, 1556, 1556, 1556, 1556, 1556, 1558, 1558,
- 3017, 3017, 3017, 3017, 1558, 1558, 1559, 1559,
- 1559, 1559, 1620, 3014, 3014, 3014, 3014, 3014,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
- 1620, 1620, 1620, 1620, 3015, 3015, 1620, 1620,
- 1620, 1620, 3018, 1620, 1620, 1620, 1620, 1620,
- 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
- 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
- 3015, 1620, 1620, 1620, 1620, 3015, 3015, 1620,
- 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
- 1620, 1620, 1620, 1620, 3019, 1620, 1620, 1620,
- 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
- 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
- 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
- 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
- 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
- 1620, 1620, 1620, 1620, 1559, 1559, 1559, 1559,
- 1559, 1559, 1559, 1559, 1620, 1620, 1620, 1620,
- 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
- 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
- 1620, 1620, 1620, 1620, 1559, 1559, 1559, 1559,
- 1559, 1559, 1620, 1557, 1557, 1557, 1557, 1557,
-
- 3020, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 3020, 1557, 1557, 1557, 3020, 1557, 3020,
- 1557, 3020, 1557, 3020, 1557, 1557, 1557, 3020,
- 1557, 1557, 1557, 1557, 1557, 1557, 3020, 3020,
- 1557, 1557, 1557, 1557, 3020, 1557, 3020, 3020,
- 1557, 1557, 1557, 1557, 3020, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1620, 1620, 3014, 3014, 1621, 1621, 1621,
- 1557, 1557, 1557, 1621, 1621, 1621, 1621, 1621,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 3021, 3021,
- 3021, 3022, 3022, 3022, 1558, 1558, 1558, 1558,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1621, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1557, 1557, 1557, 1557, 1621, 1621, 1621, 1557,
- 1557, 1557, 1557, 1557, 1557, 1557, 1557, 1557,
- 1621, 1557, 1557, 1557, 1557, 1557, 1620, 1620,
- 1620, 1620, 1620, 1620, 3015, 1620, 1620, 1620,
- 3014, 3019, 3019, 3013, 3013, 3023, 2992, 2992,
- 2980, 2980, 2980, 2980, 2980, 3024, 3024, 3024,
- 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
- 1620, 1620, 1620, 1620, 1620, 2980, 2980, 2980,
- 1620, 1620, 1620, 1620, 3019, 3019, 3019, 3013,
- 3013, 3025, 3023, 2992, 2992, 2980, 2980, 2980,
-
- 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026,
- 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026,
- 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026,
- 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026,
- 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026,
- 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026,
- 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026,
- 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026,
- 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026,
- 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026,
- 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026,
- 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026,
- 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026,
- 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026,
- 3026, 3026, 3026, 3026, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 3025, 3025, 3025,
- 3025, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023,
- 3023, 3023, 3023, 3023, 2980, 2980, 2980, 2980,
- 3024, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
+ 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999,
+ 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999,
+ 2999, 2999, 2999, 2999, 2999, 2999, 2999, 3000,
+ 3000, 3000, 3000, 3000, 3000, 3000, 3000, 3000,
+ 221, 221, 221, 221, 221, 221, 221, 3001,
+ 3001, 3001, 3001, 3002, 3002, 3002, 3002, 3002,
+ 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 3003, 3004, 3005, 3006, 3007, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 3008, 3008, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3010, 3010, 3010,
+ 3010, 3010, 3011, 3011, 3011, 3011, 3011, 3011,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009,
+ 3009, 3009, 3009, 3012, 3012, 3012, 3012, 3012,
+ 3012, 3012, 3012, 3012, 3012, 3012, 3012, 3012,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 2980, 2980, 2980, 2980,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 2980, 2980, 2980, 2980, 2980, 2980,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558,
- 1558, 1558, 1558, 1558, 1558, 1558, 2980, 2980,
- 2992, 2992, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
-
- 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561,
- 1561, 1561, 1561, 1561, 3027, 3023, 3023, 3028,
- 3014, 3014, 3014, 3014, 3014, 3014, 3014, 3014,
- 3029, 3018, 3018, 3018, 3018, 3018, 3018, 3030,
- 3019, 3019, 3019, 3019, 3019, 3019, 3018, 3019,
3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
- 3018, 3030, 3030, 3018, 3018, 3018, 3018, 3018,
- 3018, 3018, 3019, 3031, 3018, 3018, 3018, 3023,
- 3019, 3019, 3019, 3019, 3019, 3019, 3031, 3019,
- 3019, 3019, 3019, 3019, 3013, 3025, 3025, 3025,
- 3019, 3019, 3019, 3019, 3019, 3019, 3019, 3019,
- 3019, 3019, 3019, 3019, 3019, 3019, 3019, 3013,
3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
- 3013, 3013, 3013, 3013, 3025, 3025, 3025, 3025,
- 3025, 3023, 2992, 3025, 3025, 3025, 3025, 3027,
- 2992, 3024, 3025, 3023, 3025, 3025, 3025, 3025,
- 3014, 3014, 3014, 3014, 3014, 3019, 3019, 3019,
- 3019, 3019, 3019, 3019, 3019, 3019, 3019, 3019,
- 3019, 3019, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013,
+ 3013, 3013, 3013, 3013, 3013, 3013, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 3012, 3012, 3012, 3012, 3012, 3012, 3012, 3012,
+ 3012, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 3014, 3014, 3014, 3014, 221, 3014, 3014, 3014,
+ 3014, 3014, 3014, 3014, 221, 3014, 3014, 221,
+
+ 3015, 3016, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3017,
+ 3017, 3017, 3017, 3017, 3017, 3017, 3017, 3018,
+ 3019, 3019, 3019, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 3020, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 3021, 3021, 3021, 221, 221, 3022, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 3023, 3023, 3023, 3023,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
+ 3024, 3024, 3024, 3024, 221, 221, 221, 221,
+
+ 3025, 3025, 3025, 3025, 3025, 3025, 3025, 3025,
+ 3025, 3025, 3025, 3025, 3025, 3025, 3025, 3025,
+ 3025, 3025, 3025, 3025, 3025, 3025, 3025, 3025,
+ 3025, 3025, 3025, 3025, 3025, 3025, 3025, 3025,
+ 3025, 3025, 3025, 3025, 3025, 3025, 3025, 3025,
+ 3025, 3025, 3025, 3025, 3025, 3025, 3025, 3025,
+ 3025, 3025, 3025, 3025, 3025, 3025, 3025, 3025,
+ 3025, 3025, 3025, 3025, 3025, 3025, 3025, 3025,
+ 3025, 3025, 3025, 3025, 3025, 3025, 3025, 3025,
+ 3025, 3025, 3025, 3025, 3025, 3025, 3025, 3025,
+ 3025, 3025, 3025, 3025, 3025, 3025, 3025, 3025,
3025, 3025, 3025, 3025, 3025, 3025, 3025, 3025,
- 3025, 3025, 3025, 2992, 2992, 3023, 3023, 3023,
- 3023, 3023, 3023, 2992, 2992, 2992, 3023, 3023,
- 3025, 3025, 3025, 3025, 3025, 3032, 3032, 3025,
- 3032, 3032, 3023, 3028, 3023, 3023, 3023, 3023,
- 3014, 3025, 3025, 3023, 3023, 3023, 3023, 3023,
- 3023, 3023, 3023, 2992, 3024, 3028, 3028, 3028,
- 3013, 3030, 3030, 3030, 3030, 3030, 3030, 3030,
- 3030, 3030, 3030, 3030, 3030, 3030, 3013, 3013,
- 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3025,
3025, 3025, 3025, 3025, 3025, 3025, 3025, 3025,
+ 3025, 3025, 3025, 221, 221, 221, 221, 221,
3025, 3025, 3025, 3025, 3025, 3025, 3025, 3025,
+ 3025, 3025, 3025, 3025, 3025, 221, 221, 221,
3025, 3025, 3025, 3025, 3025, 3025, 3025, 3025,
+ 3025, 221, 221, 221, 221, 221, 221, 221,
+ 3025, 3025, 3025, 3025, 3025, 3025, 3025, 3025,
+ 3025, 3025, 221, 221, 3026, 3027, 3028, 3029,
+ 3030, 3030, 3030, 3030, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 3031, 3031, 3031, 3031, 3031, 3031, 3031, 3031,
+ 3031, 3031, 3031, 3031, 3031, 3031, 3031, 3031,
+ 3031, 3031, 3031, 3031, 3031, 3031, 3031, 3031,
+ 3031, 3031, 3031, 3031, 3031, 3031, 3031, 3031,
+ 3031, 3031, 3031, 3031, 3031, 3031, 3031, 3031,
+ 3031, 3031, 3031, 3031, 3031, 3031, 221, 221,
+ 3031, 3031, 3031, 3031, 3031, 3031, 3031, 3031,
+ 3031, 3031, 3031, 3031, 3031, 3031, 3031, 3031,
+ 3031, 3031, 3031, 3031, 3031, 3031, 3031, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032,
+ 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032,
+ 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032,
+ 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032,
+ 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032,
+ 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032,
+ 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032,
+ 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032,
+ 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032,
+ 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032,
+ 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032,
+ 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032,
+ 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032,
+ 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032,
+ 3032, 3032, 3032, 3032, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
@@ -6175,3909 +5169,5277 @@ static const unsigned short uc_property_trie[] = {
3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
- 3033, 3033, 3033, 3033, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 3025, 3025, 3025, 3025, 3025, 3025, 3025, 3025,
- 3025, 3025, 3025, 3025, 3025, 3025, 2980, 2980,
- 3023, 3023, 3023, 3023, 2992, 2980, 2980, 2980,
- 3023, 3023, 3023, 3024, 3024, 2980, 2980, 2980,
- 3023, 3023, 3023, 2992, 2992, 2992, 2992, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 3023, 3023, 3023, 3023, 3023, 3023, 2992, 2992,
- 2992, 2992, 2992, 2992, 2992, 2992, 2992, 2992,
- 2992, 2992, 2992, 2992, 2992, 2992, 2992, 2992,
- 2992, 3024, 3024, 3024, 3024, 2980, 2980, 2980,
- 2992, 2992, 2992, 2992, 2992, 2992, 2992, 3024,
- 3024, 3024, 3024, 2980, 2980, 2980, 2980, 2980,
- 2992, 2992, 2992, 3034, 3034, 3034, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2992, 2992, 2992, 2992, 2992, 2992, 2992, 3024,
- 3024, 3024, 2980, 2980, 2980, 2980, 2980, 2980,
- 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 3034, 3034, 3034, 3034, 3034, 3034, 3034, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
-
- 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 206, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
- 1671, 1671, 1671, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 3035, 3036, 3037, 3038, 3039, 3040, 3041, 3042,
- 3043, 3044, 206, 206, 206, 206, 206, 206,
-
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
-
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
- 2980, 2980, 2980, 2980, 2980, 2980, 3045, 3045,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 221,
+ 221, 1544, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3034, 3034,
+ 3034, 3034, 3034, 3034, 3034, 3035, 3036, 3037,
+ 3037, 3037, 3033, 3033, 3033, 3038, 3035, 3035,
+ 3035, 3035, 3035, 3039, 3039, 3039, 3039, 3039,
+ 3039, 3039, 3039, 3040, 3040, 3040, 3040, 3040,
+ 3040, 3040, 3040, 3033, 3033, 3041, 3041, 3041,
+ 3041, 3041, 3040, 3040, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3041, 3041, 3041, 3041, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3034, 3034, 3034, 3034, 3034,
+ 3034, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3033, 3033,
+ 3033, 3033, 3033, 3033, 3033, 3033, 3042, 3042,
+ 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042,
+ 3042, 3043, 3043, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353,
+ 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353,
+ 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353,
+ 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353,
+ 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353,
+ 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353,
+ 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353,
+ 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353,
+ 2353, 2353, 3044, 3044, 3044, 2353, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 3045, 3045, 3045, 3045, 3045, 3045, 3045, 3045,
+ 3045, 3045, 3045, 3045, 3045, 3045, 3045, 3045,
+ 3045, 3045, 3045, 3045, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
- 3046, 3046, 3046, 3046, 3046, 3046, 3046, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1824, 1824,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
-
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
-
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1819, 1819, 1819,
- 1819, 1819, 1819, 1819, 1819, 1824, 1824, 1824,
- 1824, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
- 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
- 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
- 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
- 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
- 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
- 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
- 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
- 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
- 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
- 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
- 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
- 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
- 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
- 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
- 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
- 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
- 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
- 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
- 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
- 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
- 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
+ 3046, 3046, 3046, 3046, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606,
+ 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606,
+ 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606,
+ 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606,
+ 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606,
+ 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606,
+ 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606,
+ 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606,
+ 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606,
+ 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606,
+ 1606, 1606, 1606, 1606, 1606, 1606, 1606, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
+ 3047, 3047, 3046, 3046, 3046, 3046, 3046, 3046,
+ 3046, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
- 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
- 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
- 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047,
- 3047, 3047, 3047, 3047, 3047, 3047, 2134, 2134,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
-
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
-
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821,
- 1821, 1821, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
-
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
-
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822,
- 1822, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
-
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
-
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
+ 3048, 3048, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
+ 3048, 3048, 3048, 3048, 3048, 3048, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 221, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
+ 3048, 3048, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3048, 221, 3048, 3048,
+ 221, 221, 3048, 221, 221, 3048, 3048, 221,
+ 221, 3048, 3048, 3048, 3048, 221, 3048, 3048,
+ 3048, 3048, 3048, 3048, 3048, 3048, 3049, 3049,
+ 3049, 3049, 221, 3049, 221, 3049, 3049, 3049,
+ 3049, 3050, 3049, 3049, 221, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
- 3049, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
- 3048, 3048, 3048, 3048, 3049, 3048, 3048, 3048,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
+ 3048, 3048, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+
+ 3049, 3049, 3049, 3049, 3048, 3048, 221, 3048,
+ 3048, 3048, 3048, 221, 221, 3048, 3048, 3048,
+ 3048, 3048, 3048, 3048, 3048, 221, 3048, 3048,
+ 3048, 3048, 3048, 3048, 3048, 221, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3048, 3048, 221, 3048, 3048, 3048, 3048, 221,
+ 3048, 3048, 3048, 3048, 3048, 221, 3048, 221,
+ 221, 221, 3048, 3048, 3048, 3048, 3048, 3048,
+ 3048, 221, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
+ 3048, 3048, 3048, 3048, 3048, 3048, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
+ 3048, 3048, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
+ 3048, 3048, 3048, 3048, 3048, 3048, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3049,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
+ 3048, 3048, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
+ 3048, 3048, 3048, 3048, 3048, 3048, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3049,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
+ 3048, 3048, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 1536, 1536, 221, 221,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
+ 3048, 3051, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3052, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3048, 3048, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
+ 3048, 3048, 3048, 3051, 3049, 3049, 3049, 3049,
+
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3052, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
+ 3048, 3048, 3048, 3048, 3048, 3051, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3052,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3049,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
+ 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3051,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3052, 3049, 3049, 3049, 3049, 3049, 3049,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
+ 3048, 3051, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3049, 3052, 3049, 3049, 3049, 3049,
+ 3049, 3049, 3053, 3054, 221, 221, 3055, 3056,
+ 3057, 3058, 3059, 3060, 3061, 3062, 3063, 3064,
+ 3055, 3056, 3057, 3058, 3059, 3060, 3061, 3062,
+ 3063, 3064, 3055, 3056, 3057, 3058, 3059, 3060,
+ 3061, 3062, 3063, 3064, 3055, 3056, 3057, 3058,
+ 3059, 3060, 3061, 3062, 3063, 3064, 3055, 3056,
+ 3057, 3058, 3059, 3060, 3061, 3062, 3063, 3064,
+
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+
+ 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066,
+ 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066,
+ 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066,
+ 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066,
+ 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066,
+ 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066,
+ 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3065,
+ 3065, 3065, 3065, 3066, 3066, 3066, 3066, 3066,
+ 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066,
+ 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066,
+ 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066,
+ 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066,
+ 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066,
+ 3066, 3066, 3066, 3066, 3066, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3066, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065,
+ 3065, 3065, 3065, 3065, 3066, 3065, 3065, 3067,
+ 3068, 3067, 3067, 3069, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 3066, 3066, 3066, 3066, 3066,
+ 221, 3066, 3066, 3066, 3066, 3066, 3066, 3066,
+ 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988,
+ 1988, 1988, 3070, 1988, 1988, 1988, 1988, 1988,
+ 1988, 1988, 1988, 1988, 1988, 1988, 1988, 1988,
+ 1988, 1988, 1988, 1988, 1988, 1988, 1988, 221,
+ 221, 221, 221, 221, 221, 3071, 3071, 3071,
+ 3071, 3071, 3071, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 3072, 3072, 3072, 3072, 3072, 3072, 3072, 221,
+ 3072, 3072, 3072, 3072, 3072, 3072, 3072, 3072,
+ 3072, 3072, 3072, 3072, 3072, 3072, 3072, 3072,
+ 3072, 221, 221, 3072, 3072, 3072, 3072, 3072,
+ 3072, 3072, 221, 3072, 3072, 221, 3072, 3072,
+ 3072, 3072, 3072, 221, 221, 221, 221, 221,
+ 3073, 3073, 3073, 3073, 3073, 3073, 3073, 3073,
+ 3073, 3073, 3073, 3073, 3073, 3073, 3073, 3073,
+ 3073, 3073, 3073, 3073, 3073, 3073, 3073, 3073,
+ 3073, 3073, 3073, 3073, 3073, 3073, 3073, 3073,
+ 3073, 3073, 3073, 3073, 3073, 3073, 3073, 3073,
+ 3073, 3073, 3073, 3073, 3073, 3073, 3073, 3073,
+ 3073, 3073, 3073, 3073, 3073, 3073, 3073, 3073,
+ 3073, 3073, 3073, 3073, 3073, 3073, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 3074,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 3075, 3075, 3075, 3075, 3075, 3075, 3075, 3075,
+ 3075, 3075, 3075, 3075, 3075, 3075, 3075, 3075,
+ 3075, 3075, 3075, 3075, 3075, 3075, 3075, 3075,
+ 3075, 3075, 3075, 3075, 3075, 3075, 3075, 3075,
+ 3075, 3075, 3075, 3075, 3075, 3075, 3075, 3075,
+ 3075, 3075, 3075, 3075, 3075, 221, 221, 221,
+ 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3077,
+ 3077, 3077, 3077, 3077, 3077, 3077, 221, 221,
+ 3078, 3079, 3080, 3081, 3082, 3083, 3084, 3085,
+ 3086, 3087, 221, 221, 221, 221, 3075, 3088,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089,
+ 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089,
+ 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089,
+ 3089, 3089, 3089, 3089, 3089, 3089, 3090, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 3091, 3091, 3091, 3091, 3091, 3091, 3091, 3091,
+ 3091, 3091, 3091, 3091, 3091, 3091, 3091, 3091,
+ 3091, 3091, 3091, 3091, 3091, 3091, 3091, 3091,
+ 3091, 3091, 3091, 3091, 3091, 3091, 3091, 3091,
+ 3091, 3091, 3091, 3091, 3091, 3091, 3091, 3091,
+ 3091, 3091, 3091, 3091, 3092, 3092, 3092, 3092,
+ 3093, 3094, 3095, 3096, 3097, 3098, 3099, 3100,
+ 3101, 3102, 221, 221, 221, 221, 221, 3103,
+
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 3104, 3104, 3104, 3104, 3104, 3104, 3104, 3104,
+ 3104, 3104, 3104, 3104, 3104, 3104, 3104, 3104,
+ 3104, 3104, 3104, 3104, 3104, 3104, 3104, 3104,
+ 3104, 3104, 3104, 3105, 3106, 3106, 3107, 3108,
+ 3109, 3110, 3111, 3112, 3113, 3114, 3115, 3116,
+ 3117, 3118, 221, 221, 221, 221, 221, 221,
+
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 3119, 3119, 3119, 3119, 3119, 3119, 3119, 221,
+ 3119, 3119, 3119, 3119, 221, 3119, 3119, 221,
+ 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119,
+ 3119, 3119, 3119, 3119, 3119, 3119, 3119, 221,
+
+ 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120,
+ 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120,
+ 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120,
+ 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120,
+ 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120,
+ 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120,
+ 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120,
+ 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120,
+ 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120,
+ 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120,
+ 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120,
+ 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120,
+ 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120,
+ 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120,
+ 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120,
+ 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120,
+ 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120,
+ 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120,
+ 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120,
+ 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120,
+ 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120,
+ 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120,
+ 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120,
+ 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120,
+ 3120, 3120, 3120, 3120, 3120, 323, 323, 3121,
+ 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121,
+ 3122, 3122, 3122, 3122, 3122, 3122, 3122, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+
+ 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123,
+ 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123,
+ 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123,
+ 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3123,
+ 3123, 3123, 3124, 3124, 3124, 3124, 3124, 3124,
+ 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124,
+ 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124,
+ 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124,
+ 3124, 3124, 3124, 3124, 3125, 3125, 3125, 3125,
+ 3125, 3125, 3126, 3127, 323, 323, 323, 323,
+ 3128, 3129, 3130, 3131, 3132, 3133, 3134, 3135,
+ 3136, 3137, 323, 323, 323, 323, 3138, 3138,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 3139, 3139, 3139, 3139, 3139, 3139, 3139,
+ 3139, 3139, 3139, 3139, 3139, 3139, 3139, 3139,
+ 3139, 3139, 3139, 3139, 3139, 3139, 3139, 3139,
+ 3139, 3139, 3139, 3139, 3139, 3139, 3139, 3139,
+ 3139, 3139, 3139, 3139, 3139, 3139, 3139, 3139,
+ 3139, 3139, 3139, 3139, 3139, 3139, 3139, 3139,
+ 3139, 3139, 3139, 3139, 3139, 3139, 3139, 3139,
+ 3139, 3139, 3139, 3139, 3140, 3139, 3139, 3139,
+ 3141, 3139, 3139, 3139, 3139, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+
+ 323, 3142, 3142, 3142, 3142, 3142, 3142, 3142,
+ 3142, 3142, 3142, 3142, 3142, 3142, 3142, 3142,
+ 3142, 3142, 3142, 3142, 3142, 3142, 3142, 3142,
+ 3142, 3142, 3142, 3142, 3142, 3142, 3142, 3142,
+ 3142, 3142, 3142, 3142, 3142, 3142, 3142, 3142,
+ 3142, 3142, 3142, 3142, 3142, 3142, 3143, 3142,
+ 3142, 3142, 3142, 3142, 3142, 3142, 3142, 3142,
+ 3142, 3142, 3142, 3142, 3142, 3142, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+ 323, 323, 323, 323, 323, 323, 323, 323,
+
+ 3144, 3144, 3144, 3144, 437, 3144, 3144, 3144,
+ 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144,
+ 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144,
+ 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144,
+ 437, 3144, 3144, 437, 3144, 437, 437, 3144,
+ 437, 3144, 3144, 3144, 3144, 3144, 3144, 3144,
+ 3144, 3144, 3144, 437, 3144, 3144, 3144, 3144,
+ 437, 3144, 437, 3144, 437, 437, 437, 437,
+ 437, 437, 3144, 437, 437, 437, 437, 3144,
+ 437, 3144, 437, 3144, 437, 3144, 3144, 3144,
+ 437, 3144, 3144, 437, 3144, 437, 437, 3144,
+ 437, 3144, 437, 3144, 437, 3144, 437, 3144,
+ 437, 3144, 3144, 437, 3144, 437, 437, 3144,
+ 3144, 3144, 3144, 437, 3144, 3144, 3144, 3144,
+ 3144, 3144, 3144, 437, 3144, 3144, 3144, 3144,
+ 437, 3144, 3144, 3144, 3144, 437, 3144, 437,
+ 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144,
+ 3144, 3144, 437, 3144, 3144, 3144, 3144, 3144,
+ 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144,
+ 3144, 3144, 3144, 3144, 437, 437, 437, 437,
+ 437, 3144, 3144, 3144, 437, 3144, 3144, 3144,
+ 3144, 3144, 437, 3144, 3144, 3144, 3144, 3144,
+ 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144,
+ 3144, 3144, 3144, 3144, 437, 437, 437, 437,
+ 437, 437, 437, 437, 437, 437, 437, 437,
+ 437, 437, 437, 437, 437, 437, 437, 437,
+ 437, 437, 437, 437, 437, 437, 437, 437,
+ 437, 437, 437, 437, 437, 437, 437, 437,
+ 437, 437, 437, 437, 437, 437, 437, 437,
+ 437, 437, 437, 437, 437, 437, 437, 437,
+ 3145, 3145, 437, 437, 437, 437, 437, 437,
+ 437, 437, 437, 437, 437, 437, 437, 437,
+
+ 1681, 1681, 1681, 1681, 3146, 1681, 1681, 1681,
+ 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
+ 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
+ 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
+ 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
+ 1681, 1681, 1681, 1681, 3147, 3147, 3147, 3147,
+ 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
+ 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
+ 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
+ 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
+ 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
+ 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
+ 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
+ 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
+ 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
+ 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
+ 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
+ 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
+ 1681, 1681, 1681, 1681, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612,
+ 1612, 1612, 1612, 1612, 1612, 1612, 1612, 3147,
+ 3147, 1612, 1612, 1612, 1612, 1612, 1612, 1612,
+ 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1683,
+ 3147, 1612, 1612, 1612, 1612, 1612, 1612, 1612,
+ 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1611,
+ 3147, 1612, 1612, 1612, 1612, 1612, 1612, 1612,
+ 1612, 1612, 1612, 1612, 1612, 1612, 1612, 1612,
+ 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683,
+ 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683,
+ 1683, 1683, 1683, 1683, 1683, 1683, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+
+ 3148, 3148, 3149, 3150, 3151, 3152, 3153, 3154,
+ 3155, 3156, 3157, 3158, 3158, 3159, 3159, 3159,
+ 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160,
+ 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160,
+ 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160,
+ 3160, 3160, 3161, 3161, 3161, 3161, 3162, 3163,
+ 3164, 3165, 3164, 3164, 3164, 3164, 3164, 3164,
+ 3164, 3164, 3164, 3164, 3164, 3165, 3164, 3165,
+ 3164, 3164, 3165, 3164, 3164, 3164, 3165, 3164,
+ 3164, 3164, 3161, 3161, 3161, 3161, 3161, 3166,
+ 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3168,
+ 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3168,
+ 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167,
+ 3167, 3167, 3169, 3169, 3170, 3159, 3159, 3159,
+ 3171, 3171, 3167, 3167, 3167, 3167, 3167, 3167,
+ 3167, 3168, 3167, 3168, 3168, 3167, 3171, 3172,
+ 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167,
+ 3167, 3167, 3173, 3173, 3173, 3173, 3174, 3175,
+ 3161, 3174, 3174, 3174, 3174, 3174, 3174, 3174,
+ 3174, 3174, 3174, 3176, 3176, 3176, 3176, 3176,
+ 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176,
+ 3176, 3176, 3176, 3176, 3176, 3159, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3177, 3177,
+ 3177, 3177, 3177, 3177, 3177, 3177, 3177, 3177,
+ 3177, 3177, 3177, 3177, 3177, 3177, 3177, 3177,
+ 3177, 3177, 3177, 3177, 3177, 3177, 3177, 3177,
+
+ 3178, 3179, 3179, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891,
+ 1891, 1891, 3180, 1891, 1891, 1891, 1891, 1891,
+ 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891,
+ 1891, 1891, 1891, 1891, 1891, 1891, 1891, 3180,
+ 1891, 1891, 3179, 3179, 3179, 3179, 3179, 3179,
+ 3179, 3179, 3179, 3181, 3147, 3147, 3147, 3147,
+ 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891,
+ 1891, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3179, 3179, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3182, 3182, 3182, 3182, 3182, 3182, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1683, 1683, 1683, 1683, 1683, 1683, 1683,
+ 1683, 1683, 1683, 1683, 1683, 3183, 3183, 3183,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1683, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1683, 3183, 3183,
+ 1611, 1611, 1611, 1611, 1611, 1684, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1683, 1683, 1683, 1683,
+ 1683, 1683, 1683, 1683, 1614, 1614, 1683, 1683,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1609, 1609, 1611,
+ 1611, 1611, 1611, 1611, 1609, 1611, 1611, 1611,
+ 1611, 1611, 1684, 1684, 1684, 3184, 1611, 1684,
+ 1611, 1611, 1684, 3185, 3185, 1683, 1683, 3183,
+ 3183, 3183, 3183, 3183, 1683, 1683, 1683, 1683,
+ 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1683, 1683, 1683, 3184, 1683, 1683, 1683,
+ 3183, 3183, 3183, 3186, 3186, 3186, 3186, 3186,
+
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1683,
+ 1611, 1683, 1684, 1684, 1611, 1611, 1684, 1684,
+ 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684,
+ 1684, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1684, 1684,
+ 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684,
+ 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684,
+ 1684, 1611, 1611, 1611, 1684, 1611, 1611, 1611,
+ 1611, 1684, 1684, 1684, 1611, 1684, 1684, 1684,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1684,
+ 1611, 1684, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1609, 1611, 1609, 1611, 1609, 1611, 1611, 1611,
+ 1611, 1611, 1684, 1611, 1611, 1611, 1611, 1609,
+ 1611, 1609, 1609, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 3184, 1611, 1611, 1611, 1611, 1683, 1683, 3183,
+
+ 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1609,
+ 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609,
+ 1609, 1609, 1609, 1609, 1609, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1609, 1609, 1609, 1609, 1609, 1609,
+ 1609, 1609, 1609, 1609, 1609, 1609, 1613, 1613,
+ 3187, 3187, 3187, 3187, 1613, 1613, 1614, 1614,
+ 1614, 1614, 1683, 3183, 3183, 3183, 3183, 3188,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683,
+ 1683, 1683, 1683, 1683, 3185, 3185, 1683, 1683,
+ 1683, 1683, 3189, 1683, 1683, 1683, 1683, 1683,
+ 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683,
+ 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683,
+ 3185, 1683, 1683, 1683, 1683, 3190, 3190, 1683,
+ 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683,
+ 1683, 1683, 1683, 1683, 3191, 1683, 1683, 1683,
+ 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683,
+ 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683,
+ 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683,
+ 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683,
+ 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683,
+ 1683, 1683, 1683, 1683, 1614, 1614, 1614, 1614,
+ 1614, 1614, 1614, 1614, 1683, 1683, 1683, 1683,
+ 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683,
+ 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683,
+ 1683, 1683, 1683, 1683, 1614, 1614, 1614, 1614,
+ 1614, 1614, 1683, 1611, 1611, 1611, 1611, 1611,
+
+ 3192, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 3192, 1611, 1611, 1611, 3192, 1611, 3192,
+ 1611, 3192, 1611, 3192, 1611, 1611, 1611, 3192,
+ 1611, 1611, 1611, 1611, 1611, 1611, 3192, 3192,
+ 1611, 1611, 1611, 1611, 3192, 1611, 3192, 3192,
+ 1611, 1611, 1611, 1611, 3192, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 3184, 3184, 3183, 3183, 1684, 1684, 1684,
+ 1611, 1611, 1611, 1684, 1684, 1684, 1684, 1684,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 3193, 3193,
+ 3193, 3194, 3194, 3194, 1613, 1613, 1613, 1613,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1684, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1611, 1611, 1684, 1684, 1684, 1611,
+ 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611,
+ 1684, 1611, 1611, 1611, 1611, 1611, 1683, 1683,
+ 1683, 1683, 1683, 1683, 3190, 1683, 1683, 1683,
+ 3183, 3191, 3191, 3195, 3195, 3196, 3197, 3197,
+ 3147, 3147, 3147, 3147, 3198, 3199, 3199, 3199,
+ 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683,
+ 1683, 1683, 1683, 3184, 3184, 3147, 3147, 3147,
+ 1683, 1683, 1683, 1683, 3191, 3191, 3191, 3182,
+ 3182, 3200, 3196, 3197, 3197, 3147, 3147, 3147,
+
+ 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
+ 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
+ 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
+ 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
+ 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
+ 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
+ 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
+ 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
+ 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
+ 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
+ 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
+ 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
+ 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
+ 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
+ 3201, 3201, 3201, 3201, 3202, 3202, 3202, 3147,
+ 3147, 3147, 3147, 3202, 3202, 3202, 3202, 3202,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 3203, 3203, 3203,
+ 3203, 3202, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3196, 3196, 3196, 3196, 3196, 3196, 3196, 3196,
+ 3196, 3196, 3196, 3196, 3147, 3147, 3147, 3147,
+ 3199, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 3147, 3147, 3147, 3147,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 3147, 3147, 3147, 3147, 3147, 3147,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1613, 1613, 1613, 3147, 3147,
+ 3159, 3159, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+
+ 1616, 1616, 1616, 1616, 1616, 1616, 1616, 1616,
+ 1616, 1616, 1616, 1616, 3204, 3196, 3196, 3205,
+ 3183, 3183, 3183, 3183, 3183, 3183, 3183, 3183,
+ 3206, 3189, 3189, 3189, 3189, 3189, 3189, 3207,
+ 3191, 3191, 3191, 3191, 3191, 3191, 3189, 3191,
+ 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182,
+ 3189, 3207, 3207, 3189, 3189, 3189, 3189, 3189,
+ 3189, 3189, 3191, 3208, 3189, 3189, 3189, 3196,
+ 3191, 3191, 3191, 3191, 3191, 3191, 3208, 3191,
+ 3191, 3191, 3191, 3191, 3182, 3200, 3200, 3200,
+ 3191, 3191, 3191, 3191, 3191, 3191, 3191, 3191,
+ 3191, 3191, 3191, 3191, 3191, 3191, 3191, 3182,
+ 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182,
+ 3182, 3182, 3182, 3182, 3200, 3200, 3200, 3200,
+ 3200, 3196, 3197, 3200, 3200, 3200, 3200, 3204,
+ 3197, 3199, 3200, 3196, 3200, 3200, 3200, 3200,
+ 3183, 3183, 3183, 3183, 3183, 3191, 3191, 3191,
+ 3191, 3191, 3191, 3191, 3191, 3191, 3191, 3191,
+ 3191, 3191, 3182, 3182, 3182, 3182, 3182, 3182,
+ 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200,
+ 3200, 3200, 3200, 3197, 3197, 3196, 3196, 3196,
+ 3196, 3196, 3196, 3197, 3197, 3197, 3196, 3196,
+ 3200, 3200, 3200, 3200, 3200, 3209, 3209, 3200,
+ 3209, 3209, 3196, 3205, 3196, 3196, 3196, 3196,
+ 3183, 3200, 3200, 3196, 3196, 3196, 3196, 3196,
+ 3196, 3196, 3196, 3197, 3199, 3205, 3205, 3205,
+ 3182, 3207, 3207, 3207, 3207, 3207, 3207, 3207,
+ 3207, 3207, 3207, 3207, 3207, 3207, 3182, 3182,
+ 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3200,
+ 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200,
+ 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200,
+ 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200,
+
+ 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210,
+ 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210,
+ 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210,
+ 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210,
+ 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210,
+ 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210,
+ 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210,
+ 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210,
+ 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210,
+ 3210, 3210, 3210, 3210, 3210, 3210, 3210, 3210,
+ 3210, 3210, 3210, 3210, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203,
+ 3203, 3203, 3203, 3203, 3203, 3203, 3147, 3147,
+ 3196, 3196, 3196, 3196, 3197, 3198, 3198, 3198,
+ 3196, 3196, 3196, 3199, 3199, 3147, 3147, 3147,
+ 3196, 3196, 3196, 3197, 3197, 3197, 3197, 3198,
+ 3198, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3196, 3196, 3196, 3196, 3196, 3196, 3197, 3197,
+ 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197,
+ 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197,
+ 3197, 3199, 3199, 3199, 3199, 3198, 3198, 3198,
+ 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3199,
+ 3199, 3199, 3199, 3198, 3198, 3198, 3147, 3198,
+ 3197, 3197, 3197, 3211, 3211, 3211, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3198, 3198,
+ 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3199,
+ 3199, 3199, 3198, 3198, 3147, 3147, 3147, 3147,
+ 3199, 3199, 3199, 3199, 3199, 3199, 3199, 3199,
+ 3198, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3212,
+ 3212, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+
+ 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 221, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751,
+ 1751, 1751, 1751, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 3213, 3214, 3215, 3216, 3217, 3218, 3219, 3220,
+ 3221, 3222, 221, 221, 221, 221, 221, 221,
+
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147,
+ 3147, 3147, 3147, 3147, 3147, 3147, 3223, 3223,
+
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224,
+ 3224, 3224, 3224, 3224, 3224, 3224, 3224, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1911, 1911,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
- 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048,
- 3048, 3048, 3048, 3048, 3048, 3048, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
-
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 3045, 3045,
-
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
-
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815,
- 1815, 1815, 1815, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
- 2134, 2134, 2134, 2134, 2134, 2134, 2134, 2134,
-
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 206, 206,
- 206, 206, 206, 206, 206, 206, 3045, 3045,
-
- 1436, 2892, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 3050, 3050, 3050, 3050, 3050, 3050, 3050, 3050,
- 3050, 3050, 3050, 3050, 3050, 3050, 3050, 3050,
- 3050, 3050, 3050, 3050, 3050, 3050, 3050, 3050,
- 3050, 3050, 3050, 3050, 3050, 3050, 3050, 3050,
- 3050, 3050, 3050, 3050, 3050, 3050, 3050, 3050,
- 3050, 3050, 3050, 3050, 3050, 3050, 3050, 3050,
- 3050, 3050, 3050, 3050, 3050, 3050, 3050, 3050,
- 3050, 3050, 3050, 3050, 3050, 3050, 3050, 3050,
- 3050, 3050, 3050, 3050, 3050, 3050, 3050, 3050,
- 3050, 3050, 3050, 3050, 3050, 3050, 3050, 3050,
- 3050, 3050, 3050, 3050, 3050, 3050, 3050, 3050,
- 3050, 3050, 3050, 3050, 3050, 3050, 3050, 3050,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
-
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
-
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
- 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436,
-
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
-
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3052,
- 3052, 3052, 3052, 3052, 3052, 3052, 3045, 3045
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+ 1906, 1906, 1906, 1906, 1906, 1911, 1911, 1911,
+ 1911, 3225, 2223, 2223, 2223, 2223, 2223, 2223,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226,
+ 3226, 3226, 3226, 3226, 3226, 3226, 2223, 2223,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+ 1909, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227,
+ 3227, 3227, 3227, 3227, 3227, 3227, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3229, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3229, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3229,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3229,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3229,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228,
+ 3228, 3228, 3228, 3228, 3228, 3228, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 3223, 3223,
+
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902,
+ 1902, 1902, 1902, 2223, 2223, 2223, 2223, 2223,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 221, 221,
+ 221, 221, 221, 221, 221, 221, 3223, 3223,
+
+ 1468, 3039, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230,
+ 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230,
+ 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230,
+ 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230,
+ 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230,
+ 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230,
+ 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230,
+ 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230,
+ 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230,
+ 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230,
+ 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230,
+ 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+ 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
+
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232,
+ 3232, 3232, 3232, 3232, 3232, 3232, 3223, 3223
};
-static const Properties uc_properties[] = {
- { 9, 18, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 0, 21, 0, 0, 2 },
- { 9, 8, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 0, 17, 5, 0, 2 },
- { 9, 7, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 2, 2, 37, 2, 0, 2 },
- { 9, 8, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 3, 38, 5, 0, 2 },
- { 9, 9, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 3, 38, 5, 0, 2 },
- { 9, 7, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 1, 1, 36, 1, 0, 2 },
- { 9, 7, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 0, 21, 0, 0, 2 },
- { 9, 8, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 0, 21, 0, 0, 2 },
- { 6, 9, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 22, 35, 5, 0, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 12, 0, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 12, 3, 13, 0, 2 },
- { 25, 4, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 27, 4, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 0, 2 },
- { 25, 4, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 0, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 11, 3, 13, 0, 2 },
- { 21, 10, 0, 0, -1, 1, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 0, 2 },
- { 22, 10, 0, 0, -1, -1, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 2, 13, 0, 2 },
- { 26, 3, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 0, 2 },
- { 25, 6, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 8, 11, 0, 2 },
- { 20, 3, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 11, 1, 2 },
- { 25, 6, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 8, 10, 1, 2 },
- { 25, 6, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 7, 0, 0, 2 },
- { 3, 2, 0, 0, 0, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 2 },
- { 3, 2, 0, 0, 1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 2 },
- { 3, 2, 0, 0, 2, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 2 },
- { 3, 2, 0, 0, 3, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 2 },
- { 3, 2, 0, 0, 4, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 2 },
- { 3, 2, 0, 0, 5, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 2 },
- { 3, 2, 0, 0, 6, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 2 },
- { 3, 2, 0, 0, 7, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 2 },
- { 3, 2, 0, 0, 8, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 2 },
- { 3, 2, 0, 0, 9, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 2 },
- { 25, 6, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 11, 0, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 8, 0, 0, 2 },
- { 26, 10, 0, 0, -1, 2, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 26, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 26, 10, 0, 0, -1, -2, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 12, 7, 3, 3 },
- { 21, 10, 0, 0, -1, 2, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 0, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 0, 2 },
- { 22, 10, 0, 0, -1, -2, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 2, 13, 0, 2 },
- { 28, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 19, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 17, 12, 0, 1, 2 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 26, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 0, 2 },
- { 22, 10, 0, 0, -1, -2, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 0, 2 },
- { 9, 7, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 3, 38, 3, 0, 2 },
- { 6, 6, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 4, 5, 0, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 0, 1, 2 },
- { 27, 4, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 1, 2 },
- { 27, 4, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 28, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 1, 2 },
- { 18, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3, 3 },
- { 23, 10, 0, 0, -1, 16, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
- { 26, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 10, 18, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 17, 4, 2, 2 },
- { 29, 4, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 1, 2 },
- { 26, 4, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 1, 2 },
- { 5, 2, 0, 0, 2, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 5, 2, 0, 0, 3, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 28, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 0, 2 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 743}, {0, 743}, {0, 775} }, 0, 10, 12, 6, 3, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 14, 12, 0, 1, 2 },
- { 5, 2, 0, 0, 1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 24, 10, 0, 0, -1, -16, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
- { 5, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 14, 0, 0, 0, -1, 0, 1, 17, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 418}, {1, 415}, {0, 0} }, 0, 10, 12, 6, 4, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 121}, {0, 121}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 1, 17, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 1, 17, { {1, 421}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -232}, {0, -232}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 1, 80, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 500}, {1, 500}, {0, 0} }, 0, 10, 12, 6, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 1, 17, { {0, -121}, {0, 0}, {0, 0}, {0, -121} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, -300}, {0, -300}, {0, -268} }, 0, 10, 12, 6, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 195}, {0, 195}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 210}, {0, 0}, {0, 0}, {0, 210} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 206}, {0, 0}, {0, 0}, {0, 206} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 205}, {0, 0}, {0, 0}, {0, 205} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 79}, {0, 0}, {0, 0}, {0, 79} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 202}, {0, 0}, {0, 0}, {0, 202} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 203}, {0, 0}, {0, 0}, {0, 203} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 207}, {0, 0}, {0, 0}, {0, 207} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 97}, {0, 97}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 211}, {0, 0}, {0, 0}, {0, 211} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 209}, {0, 0}, {0, 0}, {0, 209} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 163}, {0, 163}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 213}, {0, 0}, {0, 0}, {0, 213} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 130}, {0, 130}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 214}, {0, 0}, {0, 0}, {0, 214} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 218}, {0, 0}, {0, 0}, {0, 218} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 217}, {0, 0}, {0, 0}, {0, 217} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 219}, {0, 0}, {0, 0}, {0, 219} }, 0, 10, 12, 7, 3, 3 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 56}, {0, 56}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 1, 80, { {0, 2}, {0, 0}, {0, 1}, {0, 2} }, 0, 10, 12, 7, 3, 3 },
- { 16, 0, 0, 0, -1, 0, 1, 80, { {0, 1}, {0, -1}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, -2}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -79}, {0, -79}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 511}, {1, 511}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {0, -97}, {0, 0}, {0, 0}, {0, -97} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {0, -56}, {0, 0}, {0, 0}, {0, -56} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 4, 17, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 4, 17, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 6, 0, { {0, -130}, {0, 0}, {0, 0}, {0, -130} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 8, 0, { {1, 1}, {0, 0}, {0, 0}, {1, 1} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 8, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 8, 0, { {0, -163}, {0, 0}, {0, 0}, {0, -163} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 8, 0, { {1, 3}, {0, 0}, {0, 0}, {1, 3} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {1, 5}, {1, 5}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {1, 7}, {1, 7}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 9, 0, { {0, -195}, {0, 0}, {0, 0}, {0, -195} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 9, 0, { {0, 69}, {0, 0}, {0, 0}, {0, 69} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 9, 0, { {0, 71}, {0, 0}, {0, 0}, {0, 71} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 9, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 9}, {1, 9}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 11}, {1, 11}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 13}, {1, 13}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -210}, {0, -210}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -206}, {0, -206}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -205}, {0, -205}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -202}, {0, -202}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -203}, {0, -203}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 15}, {1, 15}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 17}, {1, 17}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -207}, {0, -207}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 19}, {1, 19}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 21}, {1, 21}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -209}, {0, -209}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -211}, {0, -211}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 23}, {1, 23}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 25}, {1, 25}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 27}, {1, 27}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 29}, {1, 29}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -213}, {0, -213}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -214}, {0, -214}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 31}, {1, 31}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -218}, {0, -218}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 33}, {1, 33}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 35}, {1, 35}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -69}, {0, -69}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -217}, {0, -217}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -71}, {0, -71}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -219}, {0, -219}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 37}, {1, 37}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 39}, {1, 39}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 17, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3, 3 },
- { 17, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 2 },
- { 17, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 2 },
- { 17, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 1, 2 },
- { 28, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 0, 1, 2 },
- { 17, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 18, 8, 1, 2 },
- { 28, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 18, 0, 1, 2 },
- { 28, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 0, 1, 36 },
- { 17, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 2 },
- { 28, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 0, 1, 2 },
- { 17, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 2 },
- { 28, 10, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 0, 1, 2 },
- { 0, 17, 230, 5, -1, 0, 1, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 230, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 232, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 220, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 216, 5, -1, 0, 1, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 202, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 220, 5, -1, 0, 1, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 202, 5, -1, 0, 1, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 1, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 1, 5, -1, 0, 1, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 230, 5, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 3, 1 },
- { 0, 17, 240, 5, -1, 0, 1, 204, { {0, 0}, {0, 84}, {0, 84}, {0, 116} }, 4, 4, 21, 4, 3, 1 },
- { 0, 17, 230, 5, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 220, 5, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 0, 5, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 4, 4, 2, 1 },
- { 0, 17, 230, 5, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 220, 5, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 232, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 220, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 230, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 233, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 4, 4, 1, 1 },
- { 0, 17, 234, 5, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 4, 4, 1, 1 },
- { 0, 17, 233, 5, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 4, 4, 1, 1 },
- { 0, 17, 234, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 4, 4, 1, 1 },
- { 0, 17, 233, 5, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 4, 4, 1, 1 },
- { 0, 17, 230, 5, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 14, 0, 0, 0, -1, 0, 10, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 17, 10, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 3, 2 },
- { 28, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 4 },
- { 13, 0, 0, 0, -1, 0, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 0 },
- { 17, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 0, 4 },
- { 15, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 130}, {0, 130}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 25, 10, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 8, 0, 0, 2 },
- { 14, 0, 0, 0, -1, 0, 16, 0, { {0, 116}, {0, 0}, {0, 0}, {0, 116} }, 0, 10, 12, 7, 3, 4 },
- { 28, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 4 },
- { 28, 10, 0, 0, -1, 0, 1, 81, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 14, 0, 0, 0, -1, 0, 1, 17, { {0, 38}, {0, 0}, {0, 0}, {0, 38} }, 0, 10, 12, 7, 3, 4 },
- { 25, 10, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 14, 12, 0, 3, 2 },
- { 14, 0, 0, 0, -1, 0, 1, 17, { {0, 37}, {0, 0}, {0, 0}, {0, 37} }, 0, 10, 12, 7, 3, 4 },
- { 14, 0, 0, 0, -1, 0, 1, 17, { {0, 64}, {0, 0}, {0, 0}, {0, 64} }, 0, 10, 12, 7, 3, 4 },
- { 14, 0, 0, 0, -1, 0, 1, 17, { {0, 63}, {0, 0}, {0, 0}, {0, 63} }, 0, 10, 12, 7, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 503}, {1, 503}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 12, 7, 3, 4 },
- { 14, 0, 0, 0, -1, 0, 1, 17, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 12, 7, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, -38}, {0, -38}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, -37}, {0, -37}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 507}, {1, 507}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -31}, {0, -31}, {0, 1} }, 0, 10, 12, 6, 4, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, -64}, {0, -64}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, -63}, {0, -63}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 14, 0, 0, 0, -1, 0, 10, 0, { {0, 8}, {0, 0}, {0, 0}, {0, 8} }, 0, 10, 12, 7, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, -62}, {0, -62}, {0, -30} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, -57}, {0, -57}, {0, -25} }, 0, 10, 12, 6, 3, 4 },
- { 14, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 3, 4 },
- { 14, 0, 0, 0, -1, 0, 1, 81, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, -47}, {0, -47}, {0, -15} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, -54}, {0, -54}, {0, -22} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, -8}, {0, -8}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 14, 0, 0, 0, -1, 0, 6, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 46 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 46 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, -86}, {0, -86}, {0, -54} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, -80}, {0, -80}, {0, -48} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 7}, {0, 7}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -116}, {0, -116}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 14, 0, 0, 0, -1, 0, 5, 80, { {0, -60}, {0, 0}, {0, 0}, {0, -60} }, 0, 10, 12, 7, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 5, 80, { {0, 0}, {0, -96}, {0, -96}, {0, -64} }, 0, 10, 12, 6, 3, 4 },
- { 26, 10, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 4 },
- { 14, 0, 0, 0, -1, 0, 7, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 14, 0, 0, 0, -1, 0, 7, 80, { {0, -7}, {0, 0}, {0, 0}, {0, -7} }, 0, 10, 12, 7, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 14, 0, 0, 0, -1, 0, 8, 0, { {0, -130}, {0, 0}, {0, 0}, {0, -130} }, 0, 10, 12, 7, 3, 4 },
- { 14, 0, 0, 0, -1, 0, 4, 17, { {0, 80}, {0, 0}, {0, 0}, {0, 80} }, 0, 10, 12, 7, 3, 5 },
- { 14, 0, 0, 0, -1, 0, 1, 17, { {0, 80}, {0, 0}, {0, 0}, {0, 80} }, 0, 10, 12, 7, 3, 5 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 80}, {0, 0}, {0, 0}, {0, 80} }, 0, 10, 12, 7, 3, 5 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 12, 7, 3, 5 },
- { 14, 0, 0, 0, -1, 0, 1, 17, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 12, 7, 3, 5 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 12, 6, 1, 5 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 12, 6, 1, 5 },
- { 15, 0, 0, 0, -1, 0, 4, 17, { {0, 0}, {0, -80}, {0, -80}, {0, 0} }, 0, 10, 12, 6, 1, 5 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, -80}, {0, -80}, {0, 0} }, 0, 10, 12, 6, 1, 5 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -80}, {0, -80}, {0, 0} }, 0, 10, 12, 6, 1, 5 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 5 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 5 },
- { 14, 0, 0, 0, -1, 0, 1, 17, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 5 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 5 },
- { 29, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 5 },
- { 0, 17, 230, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 5 },
- { 0, 17, 230, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 5 },
- { 2, 17, 0, 5, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 5 },
- { 14, 0, 0, 0, -1, 0, 6, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 5 },
- { 15, 0, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 5 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 5 },
- { 15, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 5 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 15}, {0, 0}, {0, 0}, {0, 15} }, 0, 10, 12, 7, 0, 5 },
- { 15, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, -15}, {0, -15}, {0, 0} }, 0, 10, 12, 6, 1, 5 },
- { 14, 0, 0, 0, -1, 0, 4, 17, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 5 },
- { 15, 0, 0, 0, -1, 0, 4, 17, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 5 },
- { 14, 0, 0, 0, -1, 0, 8, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 5 },
- { 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 5 },
- { 14, 0, 0, 0, -1, 0, 9, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 5 },
- { 15, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 5 },
- { 14, 0, 0, 0, -1, 0, 10, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 5 },
- { 15, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 5 },
- { 14, 0, 0, 0, -1, 0, 11, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 5 },
- { 15, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 5 },
- { 14, 0, 0, 0, -1, 0, 12, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 5 },
- { 15, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 5 },
- { 14, 0, 0, 0, -1, 0, 16, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 5 },
- { 15, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 5 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 48}, {0, 0}, {0, 0}, {0, 48} }, 0, 10, 12, 7, 3, 6 },
- { 17, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 6 },
- { 25, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 0, 1, 6 },
- { 25, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 11, 1, 6 },
- { 25, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 14, 12, 0, 1, 6 },
- { 15, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 1, 6 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -48}, {0, -48}, {0, 0} }, 0, 10, 12, 6, 1, 6 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 467}, {1, 464}, {0, 0} }, 0, 10, 12, 6, 3, 6 },
- { 25, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 8, 12, 1, 6 },
- { 20, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 17, 0, 1, 6 },
- { 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 6 },
- { 27, 4, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 1, 6 },
- { 13, 1, 0, 0, -1, 0, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 0 },
- { 0, 17, 220, 5, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 7 },
- { 0, 17, 230, 5, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 7 },
- { 0, 17, 222, 5, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 7 },
- { 0, 17, 220, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 7 },
- { 0, 17, 228, 5, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 7 },
- { 0, 17, 10, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 7 },
- { 0, 17, 11, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 7 },
- { 0, 17, 12, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 7 },
- { 0, 17, 13, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 7 },
- { 0, 17, 14, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 7 },
- { 0, 17, 15, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 7 },
- { 0, 17, 16, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 7 },
- { 0, 17, 17, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 7 },
- { 0, 17, 18, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 7 },
- { 0, 17, 19, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 7 },
- { 0, 17, 19, 5, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 7 },
- { 0, 17, 20, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 7 },
- { 0, 17, 21, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 7 },
- { 0, 17, 22, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 7 },
- { 20, 1, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 7 },
- { 0, 17, 23, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 7 },
- { 25, 1, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 7 },
- { 0, 17, 24, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 7 },
- { 0, 17, 25, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 7 },
- { 25, 1, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 0, 1, 7 },
- { 0, 17, 18, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 7 },
- { 18, 1, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 9, 13, 8, 1, 7 },
- { 18, 1, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 9, 13, 8, 1, 7 },
- { 25, 1, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 7 },
- { 25, 1, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 14, 12, 0, 1, 7 },
- { 10, 5, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 6, 12, 4, 0, 8 },
- { 10, 5, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 6, 12, 4, 0, 8 },
- { 10, 5, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 6, 12, 4, 0, 2 },
- { 26, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 8 },
- { 26, 13, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 8 },
- { 25, 4, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 1, 8 },
- { 27, 13, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 1, 8 },
- { 25, 6, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 8, 11, 1, 2 },
- { 25, 13, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 8, 11, 1, 8 },
- { 29, 10, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 8 },
- { 0, 17, 230, 5, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 8 },
- { 0, 17, 230, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 8 },
- { 0, 17, 30, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 8 },
- { 0, 17, 31, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 8 },
- { 0, 17, 32, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 8 },
- { 25, 13, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 0, 1, 2 },
- { 10, 13, 0, 5, -1, 0, 15, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 21, 4, 0, 8 },
- { 25, 13, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 12, 1, 8 },
- { 25, 13, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 12, 1, 8 },
- { 25, 13, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 12, 1, 2 },
- { 18, 13, 0, 2, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 18, 13, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 18, 13, 0, 3, -1, 0, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 18, 13, 0, 2, -1, 0, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 18, 13, 0, 3, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 18, 13, 0, 2, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 18, 13, 0, 2, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 17, 13, 0, 1, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 2 },
- { 0, 17, 27, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 28, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 29, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 30, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 31, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 32, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 33, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 34, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 230, 5, -1, 0, 4, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 220, 5, -1, 0, 4, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 220, 5, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 8 },
- { 0, 17, 230, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 8 },
- { 0, 17, 220, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 8 },
- { 0, 17, 220, 5, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 8 },
- { 3, 5, 0, 0, 0, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 8 },
- { 3, 5, 0, 0, 1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 8 },
- { 3, 5, 0, 0, 2, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 8 },
- { 3, 5, 0, 0, 3, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 8 },
- { 3, 5, 0, 0, 4, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 8 },
- { 3, 5, 0, 0, 5, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 8 },
- { 3, 5, 0, 0, 6, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 8 },
- { 3, 5, 0, 0, 7, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 8 },
- { 3, 5, 0, 0, 8, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 8 },
- { 3, 5, 0, 0, 9, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 8 },
- { 25, 4, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 1, 8 },
- { 25, 5, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 8 },
- { 25, 5, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 11, 9, 1, 8 },
- { 25, 13, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 8 },
- { 18, 13, 0, 2, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 0, 17, 35, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 18, 13, 0, 3, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 3, 8 },
- { 18, 13, 0, 2, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 3, 8 },
- { 18, 13, 0, 2, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 18, 13, 0, 3, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 25, 13, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 12, 1, 8 },
- { 0, 17, 230, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 8 },
- { 10, 5, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 6, 12, 4, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 8 },
- { 0, 17, 220, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 8 },
- { 17, 13, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 18, 13, 0, 3, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 3, 2, 0, 0, 0, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 8 },
- { 3, 2, 0, 0, 1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 8 },
- { 3, 2, 0, 0, 2, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 8 },
- { 3, 2, 0, 0, 3, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 8 },
- { 3, 2, 0, 0, 4, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 8 },
- { 3, 2, 0, 0, 5, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 8 },
- { 3, 2, 0, 0, 6, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 8 },
- { 3, 2, 0, 0, 7, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 8 },
- { 3, 2, 0, 0, 8, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 8 },
- { 3, 2, 0, 0, 9, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 8 },
- { 29, 13, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 8 },
- { 18, 13, 0, 2, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 25, 13, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 12, 1, 9 },
- { 25, 13, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 9 },
- { 13, 13, 0, 0, -1, 0, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 0 },
- { 10, 13, 0, 5, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 6, 12, 4, 0, 9 },
- { 18, 13, 0, 3, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 9 },
- { 0, 17, 36, 5, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 9 },
- { 18, 13, 0, 2, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 9 },
- { 18, 13, 0, 2, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 9 },
- { 18, 13, 0, 3, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 9 },
- { 0, 17, 230, 5, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 9 },
- { 0, 17, 220, 5, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 9 },
- { 18, 13, 0, 2, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 18, 13, 0, 3, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 18, 13, 0, 3, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 18, 13, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 10 },
- { 0, 17, 0, 5, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 10 },
- { 18, 13, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 10 },
- { 3, 1, 0, 0, 0, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 66 },
- { 3, 1, 0, 0, 1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 66 },
- { 3, 1, 0, 0, 2, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 66 },
- { 3, 1, 0, 0, 3, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 66 },
- { 3, 1, 0, 0, 4, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 66 },
- { 3, 1, 0, 0, 5, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 66 },
- { 3, 1, 0, 0, 6, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 66 },
- { 3, 1, 0, 0, 7, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 66 },
- { 3, 1, 0, 0, 8, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 66 },
- { 3, 1, 0, 0, 9, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 66 },
- { 18, 1, 0, 2, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 66 },
- { 0, 17, 230, 5, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 66 },
- { 0, 17, 220, 5, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 66 },
- { 17, 1, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 66 },
- { 29, 10, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 66 },
- { 25, 10, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 66 },
- { 25, 10, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 8, 11, 1, 66 },
- { 25, 10, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 12, 1, 66 },
- { 17, 1, 0, 1, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 66 },
- { 0, 17, 220, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 66 },
- { 27, 1, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 1, 66 },
- { 18, 1, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 82 },
- { 0, 17, 230, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 82 },
- { 17, 1, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 82 },
- { 25, 1, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 82 },
- { 25, 1, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 12, 1, 82 },
- { 18, 1, 0, 3, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 95 },
- { 18, 1, 0, 2, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 95 },
- { 0, 17, 220, 5, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 95 },
- { 25, 1, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 95 },
- { 18, 13, 0, 2, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 9 },
- { 18, 13, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 9 },
- { 18, 13, 0, 3, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 9 },
- { 18, 13, 0, 3, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 18, 13, 0, 1, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 18, 13, 0, 2, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 18, 13, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 28, 13, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 8 },
- { 10, 5, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 6, 12, 4, 0, 8 },
- { 0, 17, 230, 5, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 8 },
- { 0, 17, 220, 5, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 8 },
- { 18, 13, 0, 2, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 18, 13, 0, 2, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 18, 13, 0, 3, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 18, 13, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 18, 13, 0, 3, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 18, 13, 0, 2, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 18, 13, 0, 2, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 18, 13, 0, 3, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 18, 13, 0, 2, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 17, 13, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 0, 17, 220, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 8 },
- { 0, 17, 230, 5, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 8 },
- { 10, 5, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 6, 12, 4, 0, 2 },
- { 0, 17, 220, 5, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 8 },
- { 0, 17, 230, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 8 },
- { 0, 17, 220, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 8 },
- { 0, 17, 27, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 8 },
- { 0, 17, 28, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 8 },
- { 0, 17, 29, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 8 },
- { 0, 17, 230, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 8 },
- { 0, 17, 0, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 11 },
- { 0, 17, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 11 },
- { 1, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 11 },
- { 18, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 11 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 11 },
- { 18, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 11 },
- { 0, 17, 0, 5, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 11 },
- { 1, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 11 },
- { 0, 17, 7, 5, -1, 0, 1, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 11 },
- { 0, 17, 9, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 11 },
- { 1, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 11 },
- { 18, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 3, 11 },
- { 25, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 2 },
- { 3, 0, 0, 0, 0, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 11 },
- { 3, 0, 0, 0, 1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 11 },
- { 3, 0, 0, 0, 2, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 11 },
- { 3, 0, 0, 0, 3, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 11 },
- { 3, 0, 0, 0, 4, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 11 },
- { 3, 0, 0, 0, 5, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 11 },
- { 3, 0, 0, 0, 6, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 11 },
- { 3, 0, 0, 0, 7, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 11 },
- { 3, 0, 0, 0, 8, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 11 },
- { 3, 0, 0, 0, 9, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 11 },
- { 25, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 11 },
- { 17, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 11 },
- { 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 11 },
- { 18, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 11 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 11 },
- { 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 11 },
- { 18, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 11 },
- { 18, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 11 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 12 },
- { 0, 17, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 12 },
- { 1, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 12 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 12 },
- { 0, 17, 7, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 12 },
- { 18, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 12 },
- { 1, 0, 0, 0, -1, 0, 1, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 12 },
- { 1, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 12 },
- { 0, 17, 9, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 12 },
- { 18, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 12 },
- { 18, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 3, 12 },
- { 3, 0, 0, 0, 0, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 12 },
- { 3, 0, 0, 0, 1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 12 },
- { 3, 0, 0, 0, 2, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 12 },
- { 3, 0, 0, 0, 3, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 12 },
- { 3, 0, 0, 0, 4, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 12 },
- { 3, 0, 0, 0, 5, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 12 },
- { 3, 0, 0, 0, 6, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 12 },
- { 3, 0, 0, 0, 7, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 12 },
- { 3, 0, 0, 0, 8, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 12 },
- { 3, 0, 0, 0, 9, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 12 },
- { 27, 4, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 1, 12 },
- { 5, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 12 },
- { 5, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 1, 12 },
- { 29, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 12 },
- { 27, 4, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 1, 12 },
- { 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 12 },
- { 25, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 12 },
- { 0, 17, 230, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 12 },
- { 0, 17, 0, 5, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 13 },
- { 0, 17, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 13 },
- { 1, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 13 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 13 },
- { 18, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 3, 13 },
- { 0, 17, 7, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 13 },
- { 1, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 13 },
- { 0, 17, 9, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 13 },
- { 0, 17, 0, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 13 },
- { 3, 0, 0, 0, 0, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 13 },
- { 3, 0, 0, 0, 1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 13 },
- { 3, 0, 0, 0, 2, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 13 },
- { 3, 0, 0, 0, 3, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 13 },
- { 3, 0, 0, 0, 4, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 13 },
- { 3, 0, 0, 0, 5, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 13 },
- { 3, 0, 0, 0, 6, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 13 },
- { 3, 0, 0, 0, 7, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 13 },
- { 3, 0, 0, 0, 8, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 13 },
- { 3, 0, 0, 0, 9, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 13 },
- { 25, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 13 },
- { 0, 17, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 14 },
- { 1, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 14 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 14 },
- { 18, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 14 },
- { 0, 17, 7, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 14 },
- { 0, 17, 9, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 14 },
- { 0, 17, 0, 5, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 14 },
- { 3, 0, 0, 0, 0, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 14 },
- { 3, 0, 0, 0, 1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 14 },
- { 3, 0, 0, 0, 2, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 14 },
- { 3, 0, 0, 0, 3, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 14 },
- { 3, 0, 0, 0, 4, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 14 },
- { 3, 0, 0, 0, 5, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 14 },
- { 3, 0, 0, 0, 6, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 14 },
- { 3, 0, 0, 0, 7, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 14 },
- { 3, 0, 0, 0, 8, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 14 },
- { 3, 0, 0, 0, 9, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 14 },
- { 25, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 14 },
- { 27, 4, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 1, 14 },
- { 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 14 },
- { 0, 17, 0, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 14 },
- { 0, 17, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 15 },
- { 1, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 15 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 15 },
- { 18, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 15 },
- { 0, 17, 7, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 15 },
- { 1, 0, 0, 0, -1, 0, 1, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 15 },
- { 0, 17, 0, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 15 },
- { 1, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 15 },
- { 0, 17, 9, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 15 },
- { 0, 17, 0, 5, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 15 },
- { 0, 17, 0, 5, -1, 0, 1, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 15 },
- { 18, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 3, 15 },
- { 3, 0, 0, 0, 0, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 15 },
- { 3, 0, 0, 0, 1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 15 },
- { 3, 0, 0, 0, 2, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 15 },
- { 3, 0, 0, 0, 3, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 15 },
- { 3, 0, 0, 0, 4, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 15 },
- { 3, 0, 0, 0, 5, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 15 },
- { 3, 0, 0, 0, 6, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 15 },
- { 3, 0, 0, 0, 7, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 15 },
- { 3, 0, 0, 0, 8, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 15 },
- { 3, 0, 0, 0, 9, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 15 },
- { 29, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 15 },
- { 5, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 15 },
- { 0, 17, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 16 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 16 },
- { 18, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 16 },
- { 18, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 16 },
- { 1, 0, 0, 0, -1, 0, 1, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 16 },
- { 1, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 16 },
- { 1, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 16 },
- { 0, 17, 9, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 16 },
- { 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 16 },
- { 3, 0, 0, 0, 0, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 16 },
- { 3, 0, 0, 0, 1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 16 },
- { 3, 0, 0, 0, 2, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 16 },
- { 3, 0, 0, 0, 3, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 16 },
- { 3, 0, 0, 0, 4, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 16 },
- { 3, 0, 0, 0, 5, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 16 },
- { 3, 0, 0, 0, 6, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 16 },
- { 3, 0, 0, 0, 7, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 16 },
- { 3, 0, 0, 0, 8, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 16 },
- { 3, 0, 0, 0, 9, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 16 },
- { 5, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 16 },
- { 29, 10, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 16 },
- { 27, 4, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 1, 16 },
- { 0, 17, 0, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 17 },
- { 1, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 17 },
- { 0, 17, 0, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 17 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 17 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 17 },
- { 0, 17, 7, 5, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 17 },
- { 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 17 },
- { 0, 17, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 17 },
- { 0, 17, 0, 5, -1, 0, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 17 },
- { 0, 17, 9, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 17 },
- { 0, 17, 84, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 17 },
- { 0, 17, 91, 5, -1, 0, 1, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 17 },
- { 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 17 },
- { 18, 0, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 17 },
- { 0, 17, 0, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 17 },
- { 3, 0, 0, 0, 0, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 17 },
- { 3, 0, 0, 0, 1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 17 },
- { 3, 0, 0, 0, 2, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 17 },
- { 3, 0, 0, 0, 3, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 17 },
- { 3, 0, 0, 0, 4, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 17 },
- { 3, 0, 0, 0, 5, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 17 },
- { 3, 0, 0, 0, 6, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 17 },
- { 3, 0, 0, 0, 7, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 17 },
- { 3, 0, 0, 0, 8, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 17 },
- { 3, 0, 0, 0, 9, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 17 },
- { 25, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 1, 17 },
- { 5, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 17 },
- { 29, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 17 },
- { 18, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 18 },
- { 0, 17, 0, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 18 },
- { 1, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 18 },
- { 25, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 1, 18 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 18 },
- { 0, 17, 7, 5, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 18 },
- { 18, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 18 },
- { 0, 0, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 18 },
- { 1, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 18 },
- { 1, 0, 0, 0, -1, 0, 1, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 18 },
- { 0, 17, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 18 },
- { 0, 17, 9, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 18 },
- { 18, 0, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 18 },
- { 0, 17, 0, 5, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 18 },
- { 3, 0, 0, 0, 0, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 18 },
- { 3, 0, 0, 0, 1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 18 },
- { 3, 0, 0, 0, 2, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 18 },
- { 3, 0, 0, 0, 3, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 18 },
- { 3, 0, 0, 0, 4, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 18 },
- { 3, 0, 0, 0, 5, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 18 },
- { 3, 0, 0, 0, 6, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 18 },
- { 3, 0, 0, 0, 7, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 18 },
- { 3, 0, 0, 0, 8, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 18 },
- { 3, 0, 0, 0, 9, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 18 },
- { 18, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 18 },
- { 0, 17, 0, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 19 },
- { 0, 17, 0, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 19 },
- { 1, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 19 },
- { 18, 0, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 19 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 19 },
- { 18, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 19 },
- { 0, 17, 9, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 19 },
- { 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 19 },
- { 1, 0, 0, 0, -1, 0, 1, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 19 },
- { 0, 17, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 19 },
- { 0, 17, 0, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 19 },
- { 1, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 19 },
- { 0, 17, 9, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 19 },
- { 18, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 10, 12, 8, 1, 19 },
- { 29, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 19 },
- { 18, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 19 },
- { 5, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 19 },
- { 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 19 },
- { 3, 0, 0, 0, 0, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 19 },
- { 3, 0, 0, 0, 1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 19 },
- { 3, 0, 0, 0, 2, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 19 },
- { 3, 0, 0, 0, 3, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 19 },
- { 3, 0, 0, 0, 4, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 19 },
- { 3, 0, 0, 0, 5, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 19 },
- { 3, 0, 0, 0, 6, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 19 },
- { 3, 0, 0, 0, 7, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 19 },
- { 3, 0, 0, 0, 8, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 19 },
- { 3, 0, 0, 0, 9, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 19 },
- { 5, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 19 },
- { 29, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 1, 19 },
- { 0, 17, 0, 5, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 20 },
- { 1, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 20 },
- { 18, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 20 },
- { 0, 17, 9, 5, -1, 0, 4, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 20 },
- { 1, 0, 0, 0, -1, 0, 4, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 20 },
- { 0, 17, 0, 5, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 20 },
- { 1, 0, 0, 0, -1, 0, 4, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 20 },
- { 3, 0, 0, 0, 0, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 20 },
- { 3, 0, 0, 0, 1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 20 },
- { 3, 0, 0, 0, 2, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 20 },
- { 3, 0, 0, 0, 3, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 20 },
- { 3, 0, 0, 0, 4, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 20 },
- { 3, 0, 0, 0, 5, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 20 },
- { 3, 0, 0, 0, 6, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 20 },
- { 3, 0, 0, 0, 7, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 20 },
- { 3, 0, 0, 0, 8, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 20 },
- { 3, 0, 0, 0, 9, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 20 },
- { 25, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 20 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 1, 21 },
- { 0, 17, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 21 },
- { 18, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 0, 33, 8, 3, 21 },
- { 0, 17, 103, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 21 },
- { 0, 17, 9, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 21 },
- { 17, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 1, 21 },
- { 0, 17, 107, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 21 },
- { 25, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 21 },
- { 3, 0, 0, 0, 0, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 21 },
- { 3, 0, 0, 0, 1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 21 },
- { 3, 0, 0, 0, 2, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 21 },
- { 3, 0, 0, 0, 3, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 21 },
- { 3, 0, 0, 0, 4, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 21 },
- { 3, 0, 0, 0, 5, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 21 },
- { 3, 0, 0, 0, 6, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 21 },
- { 3, 0, 0, 0, 7, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 21 },
- { 3, 0, 0, 0, 8, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 21 },
- { 3, 0, 0, 0, 9, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 21 },
- { 25, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 21 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 1, 22 },
- { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 1, 22 },
- { 0, 17, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 22 },
- { 18, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 0, 33, 8, 3, 22 },
- { 0, 17, 118, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 22 },
- { 0, 17, 9, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 22 },
- { 17, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 1, 22 },
- { 0, 17, 122, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 22 },
- { 3, 0, 0, 0, 0, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 22 },
- { 3, 0, 0, 0, 1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 22 },
- { 3, 0, 0, 0, 2, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 22 },
- { 3, 0, 0, 0, 3, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 22 },
- { 3, 0, 0, 0, 4, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 22 },
- { 3, 0, 0, 0, 5, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 22 },
- { 3, 0, 0, 0, 6, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 22 },
- { 3, 0, 0, 0, 7, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 22 },
- { 3, 0, 0, 0, 8, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 22 },
- { 3, 0, 0, 0, 9, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 22 },
- { 18, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 3, 22 },
- { 18, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 1, 22 },
- { 18, 0, 0, 0, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 23 },
- { 29, 0, 0, 0, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 1, 23 },
- { 25, 0, 0, 0, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 1, 23 },
- { 25, 0, 0, 0, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 23 },
- { 25, 0, 0, 0, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 4, 0, 1, 23 },
- { 25, 0, 0, 0, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 23 },
- { 25, 0, 0, 0, -1, 0, 2, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 4, 0, 3, 23 },
- { 25, 0, 0, 0, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 0, 1, 23 },
- { 29, 0, 0, 0, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 23 },
- { 0, 17, 220, 5, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 23 },
- { 3, 0, 0, 0, 0, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 23 },
- { 3, 0, 0, 0, 1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 23 },
- { 3, 0, 0, 0, 2, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 23 },
- { 3, 0, 0, 0, 3, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 23 },
- { 3, 0, 0, 0, 4, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 23 },
- { 3, 0, 0, 0, 5, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 23 },
- { 3, 0, 0, 0, 6, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 23 },
- { 3, 0, 0, 0, 7, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 23 },
- { 3, 0, 0, 0, 8, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 23 },
- { 3, 0, 0, 0, 9, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 23 },
- { 5, 0, 0, 0, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 23 },
- { 29, 0, 0, 0, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 23 },
- { 0, 17, 216, 5, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 23 },
- { 21, 10, 0, 0, -1, 1, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 23 },
- { 22, 10, 0, 0, -1, -1, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 1, 23 },
- { 1, 0, 0, 0, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 23 },
- { 18, 0, 0, 0, -1, 0, 2, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 3, 23 },
- { 18, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 23 },
- { 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 23 },
- { 0, 17, 129, 5, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 23 },
- { 0, 17, 130, 5, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 23 },
- { 0, 17, 0, 5, -1, 0, 2, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 3, 23 },
- { 0, 17, 132, 5, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 23 },
- { 0, 17, 0, 5, -1, 0, 2, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 3, 23 },
- { 0, 17, 0, 5, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 23 },
- { 1, 0, 0, 0, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 17, 4, 1, 23 },
- { 0, 17, 230, 5, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 23 },
- { 0, 17, 9, 5, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 23 },
- { 18, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 23 },
- { 0, 17, 0, 5, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 23 },
- { 0, 17, 0, 5, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 23 },
- { 29, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 23 },
- { 29, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 23 },
- { 0, 17, 220, 5, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 23 },
- { 29, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 23 },
- { 25, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 1, 23 },
- { 25, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 23 },
- { 25, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 1, 23 },
- { 25, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 23 },
- { 29, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 25, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 4, 0, 1, 23 },
- { 18, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 1, 24 },
- { 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 1, 24 },
- { 18, 0, 0, 0, -1, 0, 4, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 1, 24 },
- { 1, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 4, 33, 4, 1, 24 },
- { 1, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 4, 33, 4, 1, 24 },
- { 0, 17, 0, 5, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 24 },
- { 0, 17, 0, 5, -1, 0, 4, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 24 },
- { 1, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 33, 4, 1, 24 },
- { 0, 17, 0, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 24 },
- { 0, 17, 7, 5, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 24 },
- { 0, 17, 9, 5, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 24 },
- { 0, 17, 9, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 24 },
- { 1, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 33, 4, 1, 24 },
- { 3, 0, 0, 0, 0, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 2, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 3, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 4, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 5, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 6, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 7, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 8, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 9, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 25, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 24 },
- { 25, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 24 },
- { 0, 17, 220, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 24 },
- { 3, 0, 0, 0, 0, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 2, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 3, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 4, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 5, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 6, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 7, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 8, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 9, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 1, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 4, 33, 4, 1, 24 },
- { 0, 17, 0, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 24 },
- { 29, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 0, 1, 24 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 7264}, {0, 0}, {0, 0}, {0, 7264} }, 0, 10, 12, 7, 0, 25 },
- { 14, 0, 0, 0, -1, 0, 13, 0, { {0, 7264}, {0, 0}, {0, 0}, {0, 7264} }, 0, 10, 12, 7, 3, 25 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 3008}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 25 },
- { 15, 0, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 3008}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 25 },
- { 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 3008}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 25 },
- { 25, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 17, 0, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 3, 25 },
- { 15, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 3008}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 25 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 9, 10, 25, 8, 1, 26 },
- { 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 9, 10, 25, 8, 1, 26 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 9, 10, 25, 8, 0, 26 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 10, 10, 26, 8, 0, 26 },
- { 18, 0, 0, 0, -1, 0, 1, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 10, 10, 26, 8, 1, 26 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 10, 10, 26, 8, 1, 26 },
- { 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 10, 10, 26, 8, 1, 26 },
- { 18, 0, 0, 0, -1, 0, 1, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 11, 10, 27, 8, 1, 26 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 11, 10, 27, 8, 1, 26 },
- { 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 11, 10, 27, 8, 1, 26 },
- { 18, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 27 },
- { 18, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 27 },
- { 0, 17, 230, 5, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 27 },
- { 0, 17, 230, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 27 },
- { 25, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 27 },
- { 25, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 27 },
- { 25, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 12, 1, 27 },
- { 25, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 27 },
- { 5, 0, 0, 0, 1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 27 },
- { 5, 0, 0, 0, 2, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 27 },
- { 5, 0, 0, 0, 3, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 27 },
- { 5, 0, 0, 0, 4, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 27 },
- { 5, 0, 0, 0, 5, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 27 },
- { 5, 0, 0, 0, 6, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 27 },
- { 5, 0, 0, 0, 7, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 27 },
- { 5, 0, 0, 0, 8, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 27 },
- { 5, 0, 0, 0, 9, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 27 },
- { 5, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 27 },
- { 29, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 27 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 41}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 43}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 45}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 47}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 49}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 51}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 53}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 55}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 57}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 59}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 61}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 63}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 65}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 67}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 69}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 71}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 73}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 75}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 77}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 79}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 81}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 83}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 85}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 87}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 89}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 91}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 93}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 95}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 97}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 99}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 101}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 103}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 105}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 107}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 109}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 111}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 113}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 115}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 117}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 119}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 121}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 123}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 125}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 127}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 129}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 131}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 133}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 135}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 137}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 139}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 141}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 143}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 145}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 147}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 149}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 151}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 153}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 155}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 157}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 159}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 161}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 163}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 165}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 167}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 169}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 171}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 173}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 175}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 177}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 179}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 181}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 183}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 185}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 187}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 189}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 191}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 193}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 195}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 197}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 199}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {0, 8}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 14, 0, 0, 0, -1, 0, 17, 0, { {0, 8}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, -8}, {0, -8}, {0, -8} }, 0, 10, 12, 6, 3, 28 },
- { 20, 10, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 29 },
- { 18, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 29 },
- { 29, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 29 },
- { 25, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 12, 1, 29 },
- { 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 29 },
- { 6, 9, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 22, 17, 5, 0, 30 },
- { 18, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 30 },
- { 21, 10, 0, 0, -1, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 30 },
- { 22, 10, 0, 0, -1, -1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 1, 30 },
- { 18, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 31 },
- { 25, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 2 },
- { 4, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 31 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 31 },
- { 18, 0, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 42 },
- { 18, 0, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 42 },
- { 0, 17, 0, 5, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 42 },
- { 0, 17, 9, 5, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 42 },
- { 1, 0, 9, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 42 },
- { 18, 0, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 43 },
- { 0, 17, 0, 5, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 43 },
- { 1, 0, 9, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 43 },
- { 25, 0, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 2 },
- { 18, 0, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 44 },
- { 0, 17, 0, 5, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 44 },
- { 18, 0, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 45 },
- { 0, 17, 0, 5, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 45 },
- { 18, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 1, 32 },
- { 0, 17, 0, 5, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 0, 32 },
- { 1, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 33, 4, 1, 32 },
- { 0, 17, 0, 5, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 32 },
- { 0, 17, 9, 5, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 32 },
- { 25, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 32 },
- { 25, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 0, 1, 32 },
- { 17, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 1, 32 },
- { 25, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 32 },
- { 27, 4, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 1, 32 },
- { 0, 17, 230, 5, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 32 },
- { 3, 0, 0, 0, 0, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 32 },
- { 3, 0, 0, 0, 1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 32 },
- { 3, 0, 0, 0, 2, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 32 },
- { 3, 0, 0, 0, 3, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 32 },
- { 3, 0, 0, 0, 4, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 32 },
- { 3, 0, 0, 0, 5, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 32 },
- { 3, 0, 0, 0, 6, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 32 },
- { 3, 0, 0, 0, 7, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 32 },
- { 3, 0, 0, 0, 8, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 32 },
- { 3, 0, 0, 0, 9, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 32 },
- { 5, 10, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 32 },
- { 25, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 33 },
- { 25, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 11, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 12, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 33 },
- { 25, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 2 },
- { 20, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 0, 33 },
- { 25, 10, 0, 2, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 33 },
- { 25, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 11, 1, 33 },
- { 25, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 12, 1, 33 },
- { 25, 10, 0, 1, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 33 },
- { 0, 17, 0, 5, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 2, 33 },
- { 10, 18, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 4, 4, 0, 33 },
- { 0, 17, 0, 5, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 2, 33 },
- { 3, 0, 0, 0, 0, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 33 },
- { 3, 0, 0, 0, 1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 33 },
- { 3, 0, 0, 0, 2, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 33 },
- { 3, 0, 0, 0, 3, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 33 },
- { 3, 0, 0, 0, 4, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 33 },
- { 3, 0, 0, 0, 5, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 33 },
- { 3, 0, 0, 0, 6, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 33 },
- { 3, 0, 0, 0, 7, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 33 },
- { 3, 0, 0, 0, 8, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 33 },
- { 3, 0, 0, 0, 9, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 33 },
- { 18, 0, 0, 2, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 33 },
- { 17, 0, 0, 2, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 33 },
- { 18, 0, 0, 2, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 33 },
- { 18, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 33 },
- { 0, 17, 0, 5, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 33 },
- { 0, 17, 228, 5, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 33 },
- { 18, 0, 0, 2, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 33 },
- { 18, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 47 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 47 },
- { 0, 17, 0, 5, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 47 },
- { 1, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 47 },
- { 0, 17, 222, 5, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 47 },
- { 0, 17, 230, 5, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 47 },
- { 0, 17, 220, 5, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 47 },
- { 29, 10, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 47 },
- { 25, 10, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 12, 1, 47 },
- { 3, 0, 0, 0, 0, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 47 },
- { 3, 0, 0, 0, 1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 47 },
- { 3, 0, 0, 0, 2, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 47 },
- { 3, 0, 0, 0, 3, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 47 },
- { 3, 0, 0, 0, 4, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 47 },
- { 3, 0, 0, 0, 5, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 47 },
- { 3, 0, 0, 0, 6, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 47 },
- { 3, 0, 0, 0, 7, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 47 },
- { 3, 0, 0, 0, 8, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 47 },
- { 3, 0, 0, 0, 9, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 47 },
- { 18, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 1, 48 },
- { 18, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 1, 56 },
- { 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 1, 56 },
- { 3, 0, 0, 0, 0, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 56 },
- { 3, 0, 0, 0, 1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 56 },
- { 3, 0, 0, 0, 2, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 56 },
- { 3, 0, 0, 0, 3, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 56 },
- { 3, 0, 0, 0, 4, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 56 },
- { 3, 0, 0, 0, 5, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 56 },
- { 3, 0, 0, 0, 6, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 56 },
- { 3, 0, 0, 0, 7, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 56 },
- { 3, 0, 0, 0, 8, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 56 },
- { 3, 0, 0, 0, 9, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 56 },
- { 5, 0, 0, 0, 1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 0, 1, 56 },
- { 29, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 0, 1, 56 },
- { 29, 10, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 32 },
- { 18, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 55 },
- { 0, 17, 230, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 55 },
- { 0, 17, 220, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 55 },
- { 1, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 55 },
- { 0, 17, 0, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 55 },
- { 25, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 55 },
- { 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 1, 78 },
- { 1, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 33, 4, 1, 78 },
- { 0, 17, 0, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 78 },
- { 0, 17, 9, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 78 },
- { 1, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 4, 33, 4, 1, 78 },
- { 0, 17, 230, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 78 },
- { 0, 17, 220, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 78 },
- { 3, 0, 0, 0, 0, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 78 },
- { 3, 0, 0, 0, 1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 78 },
- { 3, 0, 0, 0, 2, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 78 },
- { 3, 0, 0, 0, 3, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 78 },
- { 3, 0, 0, 0, 4, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 78 },
- { 3, 0, 0, 0, 5, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 78 },
- { 3, 0, 0, 0, 6, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 78 },
- { 3, 0, 0, 0, 7, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 78 },
- { 3, 0, 0, 0, 8, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 78 },
- { 3, 0, 0, 0, 9, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 78 },
- { 25, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 0, 1, 78 },
- { 17, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 1, 78 },
- { 25, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 12, 1, 78 },
- { 0, 17, 230, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 220, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 2, 17, 0, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 220, 5, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 230, 5, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 220, 5, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 0, 5, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 62 },
- { 1, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 62 },
- { 18, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 62 },
- { 18, 0, 0, 0, -1, 0, 9, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 62 },
- { 0, 17, 7, 5, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 62 },
- { 1, 0, 0, 0, -1, 0, 9, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 62 },
- { 1, 0, 0, 0, -1, 0, 9, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 62 },
- { 1, 0, 9, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 62 },
- { 18, 0, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 62 },
- { 3, 0, 0, 0, 0, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 62 },
- { 3, 0, 0, 0, 1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 62 },
- { 3, 0, 0, 0, 2, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 62 },
- { 3, 0, 0, 0, 3, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 62 },
- { 3, 0, 0, 0, 4, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 62 },
- { 3, 0, 0, 0, 5, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 62 },
- { 3, 0, 0, 0, 6, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 62 },
- { 3, 0, 0, 0, 7, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 62 },
- { 3, 0, 0, 0, 8, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 62 },
- { 3, 0, 0, 0, 9, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 62 },
- { 25, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 62 },
- { 25, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 62 },
- { 25, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 62 },
- { 29, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 62 },
- { 0, 17, 230, 5, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 62 },
- { 0, 17, 220, 5, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 62 },
- { 25, 0, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 62 },
- { 0, 17, 0, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 67 },
- { 1, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 67 },
- { 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 67 },
- { 1, 0, 9, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 67 },
- { 0, 17, 9, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 67 },
- { 0, 17, 0, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 67 },
- { 3, 0, 0, 0, 0, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 67 },
- { 3, 0, 0, 0, 1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 67 },
- { 3, 0, 0, 0, 2, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 67 },
- { 3, 0, 0, 0, 3, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 67 },
- { 3, 0, 0, 0, 4, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 67 },
- { 3, 0, 0, 0, 5, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 67 },
- { 3, 0, 0, 0, 6, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 67 },
- { 3, 0, 0, 0, 7, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 67 },
- { 3, 0, 0, 0, 8, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 67 },
- { 3, 0, 0, 0, 9, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 67 },
- { 18, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 67 },
- { 18, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 93 },
- { 0, 17, 7, 5, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 93 },
- { 1, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 93 },
- { 0, 17, 0, 5, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 93 },
- { 1, 0, 9, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 93 },
- { 25, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 93 },
- { 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 68 },
- { 1, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 68 },
- { 0, 17, 0, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 68 },
- { 0, 17, 7, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 68 },
- { 25, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 68 },
- { 25, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 68 },
- { 3, 0, 0, 0, 0, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 68 },
- { 3, 0, 0, 0, 1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 68 },
- { 3, 0, 0, 0, 2, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 68 },
- { 3, 0, 0, 0, 3, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 68 },
- { 3, 0, 0, 0, 4, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 68 },
- { 3, 0, 0, 0, 5, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 68 },
- { 3, 0, 0, 0, 6, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 68 },
- { 3, 0, 0, 0, 7, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 68 },
- { 3, 0, 0, 0, 8, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 68 },
- { 3, 0, 0, 0, 9, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 68 },
- { 3, 0, 0, 0, 0, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 69 },
- { 3, 0, 0, 0, 1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 69 },
- { 3, 0, 0, 0, 2, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 69 },
- { 3, 0, 0, 0, 3, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 69 },
- { 3, 0, 0, 0, 4, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 69 },
- { 3, 0, 0, 0, 5, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 69 },
- { 3, 0, 0, 0, 6, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 69 },
- { 3, 0, 0, 0, 7, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 69 },
- { 3, 0, 0, 0, 8, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 69 },
- { 3, 0, 0, 0, 9, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 69 },
- { 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 69 },
- { 17, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 69 },
- { 25, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 69 },
- { 15, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, -6254}, {0, -6254}, {0, -6222} }, 0, 10, 12, 6, 3, 5 },
- { 15, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, -6253}, {0, -6253}, {0, -6221} }, 0, 10, 12, 6, 3, 5 },
- { 15, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, -6244}, {0, -6244}, {0, -6212} }, 0, 10, 12, 6, 3, 5 },
- { 15, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, -6242}, {0, -6242}, {0, -6210} }, 0, 10, 12, 6, 3, 5 },
- { 15, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, -6243}, {0, -6243}, {0, -6211} }, 0, 10, 12, 6, 3, 5 },
- { 15, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, -6236}, {0, -6236}, {0, -6204} }, 0, 10, 12, 6, 3, 5 },
- { 15, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, -6181}, {0, -6181}, {0, -6180} }, 0, 10, 12, 6, 3, 5 },
- { 15, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {1, 201}, {1, 201}, {1, 719} }, 0, 10, 12, 6, 3, 5 },
- { 14, 0, 0, 0, -1, 0, 20, 0, { {0, -3008}, {0, 0}, {0, 0}, {0, -3008} }, 0, 10, 12, 8, 3, 25 },
- { 25, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 67 },
- { 0, 17, 230, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 25, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 0, 17, 1, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 220, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 1, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 2 },
- { 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 2 },
- { 18, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 2 },
- { 0, 17, 230, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 1, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 2 },
- { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 2 },
- { 15, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 1, 5 },
- { 17, 0, 0, 0, -1, 0, 7, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3, 3 },
- { 17, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 17, 0, 0, 0, -1, 0, 7, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 17, 0, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3, 5 },
- { 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {1, 203}, {1, 203}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 3814}, {0, 3814}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {1, 205}, {1, 205}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 17, 0, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3, 3 },
- { 17, 0, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 0, 17, 230, 5, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 220, 5, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 230, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 234, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 214, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 220, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 202, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 232, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 228, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 220, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 218, 5, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 230, 5, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 233, 5, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 514}, {1, 514}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 517}, {1, 517}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 520}, {1, 520}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 523}, {1, 523}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 526}, {1, 526}, {0, 0} }, 0, 10, 12, 6, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 2, 81, { {0, 0}, {0, -59}, {0, -59}, {0, -58} }, 0, 10, 12, 6, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 10, 0, { {0, -7615}, {0, 0}, {0, 0}, {0, -7615} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 10, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 8}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 14, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {0, 0}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 529}, {1, 529}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 532}, {1, 532}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 536}, {1, 536}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 540}, {1, 540}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 74}, {0, 74}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 74}, {0, 74}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 86}, {0, 86}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 86}, {0, 86}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 100}, {0, 100}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 100}, {0, 100}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 128}, {0, 128}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 128}, {0, 128}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 112}, {0, 112}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 112}, {0, 112}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 126}, {0, 126}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 126}, {0, 126}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 578}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 581}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 584}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 587}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 590}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 593}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 596}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 599}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 578}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 581}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 584}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 587}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 590}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 593}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 596}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 599}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 602}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 605}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 608}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 611}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 614}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 617}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 620}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 623}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 602}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 605}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 608}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 611}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 614}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 617}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 620}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 623}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 626}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 629}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 632}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 635}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 638}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 641}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 644}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 647}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 626}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 629}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 632}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 635}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 638}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 641}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 644}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 647}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 662}, {1, 659}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 650}, {0, 9}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 668}, {1, 665}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 544}, {1, 544}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 699}, {1, 695}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 14, 0, 0, 0, -1, 0, 1, 17, { {0, -74}, {0, 0}, {0, 0}, {0, -74} }, 0, 10, 12, 7, 3, 4 },
- { 14, 0, 0, 0, -1, 0, 1, 85, { {0, -74}, {0, 0}, {0, 0}, {0, -74} }, 0, 10, 12, 7, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -9}, {1, 650}, {0, 0}, {0, -9} }, 0, 10, 12, 7, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, -7205}, {0, -7205}, {0, -7173} }, 0, 10, 12, 6, 3, 4 },
- { 28, 10, 0, 0, -1, 0, 1, 81, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 674}, {1, 671}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 653}, {0, 9}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 680}, {1, 677}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 547}, {1, 547}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 707}, {1, 703}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 14, 0, 0, 0, -1, 0, 1, 17, { {0, -86}, {0, 0}, {0, 0}, {0, -86} }, 0, 10, 12, 7, 3, 4 },
- { 14, 0, 0, 0, -1, 0, 1, 85, { {0, -86}, {0, 0}, {0, 0}, {0, -86} }, 0, 10, 12, 7, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -9}, {1, 653}, {0, 0}, {0, -9} }, 0, 10, 12, 7, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 550}, {1, 550}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {1, 503}, {1, 503}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 554}, {1, 554}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 557}, {1, 557}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 14, 0, 0, 0, -1, 0, 1, 17, { {0, -100}, {0, 0}, {0, 0}, {0, -100} }, 0, 10, 12, 7, 3, 4 },
- { 14, 0, 0, 0, -1, 0, 1, 85, { {0, -100}, {0, 0}, {0, 0}, {0, -100} }, 0, 10, 12, 7, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 561}, {1, 561}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {1, 507}, {1, 507}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 565}, {1, 565}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 7}, {0, 7}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 568}, {1, 568}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 571}, {1, 571}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 14, 0, 0, 0, -1, 0, 1, 17, { {0, -112}, {0, 0}, {0, 0}, {0, -112} }, 0, 10, 12, 7, 3, 4 },
- { 14, 0, 0, 0, -1, 0, 1, 85, { {0, -112}, {0, 0}, {0, 0}, {0, -112} }, 0, 10, 12, 7, 3, 4 },
- { 14, 0, 0, 0, -1, 0, 1, 17, { {0, -7}, {0, 0}, {0, 0}, {0, -7} }, 0, 10, 12, 7, 3, 4 },
- { 28, 10, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 686}, {1, 683}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 656}, {0, 9}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 692}, {1, 689}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 575}, {1, 575}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 715}, {1, 711}, {0, 0} }, 0, 10, 12, 6, 3, 4 },
- { 14, 0, 0, 0, -1, 0, 1, 17, { {0, -128}, {0, 0}, {0, 0}, {0, -128} }, 0, 10, 12, 7, 3, 4 },
- { 14, 0, 0, 0, -1, 0, 1, 85, { {0, -128}, {0, 0}, {0, 0}, {0, -128} }, 0, 10, 12, 7, 3, 4 },
- { 14, 0, 0, 0, -1, 0, 1, 17, { {0, -126}, {0, 0}, {0, 0}, {0, -126} }, 0, 10, 12, 7, 3, 4 },
- { 14, 0, 0, 0, -1, 0, 1, 85, { {0, -126}, {0, 0}, {0, 0}, {0, -126} }, 0, 10, 12, 7, 3, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -9}, {1, 656}, {0, 0}, {0, -9} }, 0, 10, 12, 7, 3, 4 },
- { 28, 10, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 0, 4 },
- { 6, 9, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 22, 17, 5, 0, 2 },
- { 6, 9, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 22, 17, 5, 0, 2 },
- { 6, 9, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 4, 5, 0, 2 },
- { 10, 18, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 0, 20, 4, 2, 2 },
- { 10, 18, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 4, 1 },
- { 10, 18, 0, 1, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 5, 5, 32, 4, 4, 1 },
- { 10, 0, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 21, 4, 0, 2 },
- { 10, 1, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 21, 4, 0, 2 },
- { 20, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 2 },
- { 20, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 4, 0, 3, 2 },
- { 20, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 11, 1, 2 },
- { 20, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 11, 1, 2 },
- { 20, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 23, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 13, 3, 13, 1, 2 },
- { 24, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 13, 3, 13, 1, 2 },
- { 21, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 2 },
- { 23, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
- { 24, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 13, 15, 10, 0, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 15, 0, 0, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 14, 17, 0, 1, 2 },
- { 7, 9, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 3, 38, 3, 0, 2 },
- { 8, 7, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 3, 38, 3, 0, 2 },
- { 10, 11, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 21, 4, 0, 2 },
- { 10, 14, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 21, 4, 0, 2 },
- { 10, 16, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 21, 4, 0, 2 },
- { 10, 12, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 21, 4, 0, 2 },
- { 10, 15, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 21, 4, 0, 2 },
- { 6, 6, 0, 0, -1, 0, 4, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 17, 4, 5, 0, 2 },
- { 25, 4, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 1, 2 },
- { 25, 4, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 3, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 3, 2 },
- { 23, 10, 0, 0, -1, 1, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
- { 24, 10, 0, 0, -1, -1, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 5, 12, 0, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 12, 1, 2 },
- { 26, 6, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 8, 0, 1, 2 },
- { 21, 10, 0, 0, -1, 1, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 2 },
- { 22, 10, 0, 0, -1, -1, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 6, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 12, 0, 2 },
- { 25, 10, 0, 0, -1, 0, 4, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 12, 0, 2 },
- { 25, 10, 0, 0, -1, 0, 4, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 5, 12, 0, 2 },
- { 25, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 19, 10, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 17, 12, 0, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 6, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 6, 9, 0, 0, -1, 0, 6, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 22, 17, 5, 0, 2 },
- { 10, 18, 0, 5, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 22, 4, 2, 2 },
- { 10, 18, 0, 5, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 12, 4, 0, 2 },
- { 10, 18, 0, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 12, 4, 2, 2 },
- { 13, 18, 0, 0, -1, 0, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 0, 12, 0, 0, 0 },
- { 10, 19, 0, 0, -1, 0, 15, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 21, 4, 0, 2 },
- { 10, 20, 0, 0, -1, 0, 15, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 21, 4, 0, 2 },
- { 10, 21, 0, 0, -1, 0, 15, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 21, 4, 0, 2 },
- { 10, 22, 0, 0, -1, 0, 15, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 21, 4, 0, 2 },
- { 10, 18, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 21, 4, 0, 2 },
- { 5, 2, 0, 0, 0, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 17, 0, 0, 0, -1, 0, 6, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3, 3 },
- { 5, 2, 0, 0, 4, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 5, 2, 0, 0, 5, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 5, 2, 0, 0, 6, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 5, 2, 0, 0, 7, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 5, 2, 0, 0, 8, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 5, 2, 0, 0, 9, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 26, 3, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 26, 3, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 26, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 21, 10, 0, 0, -1, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 0, 2 },
- { 22, 10, 0, 0, -1, -1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 0, 2 },
- { 17, 0, 0, 0, -1, 0, 12, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3, 3 },
- { 27, 4, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 3, 2 },
- { 27, 4, 0, 0, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 1, 2 },
- { 27, 4, 0, 0, -1, 0, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 1, 2 },
- { 27, 4, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 1, 2 },
- { 27, 4, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 1, 2 },
- { 27, 4, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 1, 2 },
- { 27, 4, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 1, 2 },
- { 27, 4, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 1, 2 },
- { 27, 4, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 1, 2 },
- { 27, 4, 0, 0, -1, 0, 14, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 1, 2 },
- { 27, 4, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 1, 2 },
- { 27, 4, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 1, 2 },
- { 27, 4, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 1, 2 },
- { 27, 4, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 1, 2 },
- { 27, 4, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 1, 2 },
- { 13, 4, 0, 0, -1, 0, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 0, 0 },
- { 2, 17, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 2, 17, 0, 5, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 2, 17, 0, 5, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 1, 5, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 220, 5, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 1, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 29, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 14, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 3, 2 },
- { 29, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 3, 2 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3, 2 },
- { 29, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 3, 2 },
- { 29, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 29, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 3, 2 },
- { 14, 0, 0, 0, -1, 0, 1, 85, { {0, -7517}, {0, 0}, {0, 0}, {0, -7517} }, 0, 10, 12, 7, 3, 4 },
- { 14, 0, 0, 0, -1, 0, 1, 85, { {1, 207}, {0, 0}, {0, 0}, {1, 207} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 1, 85, { {1, 209}, {0, 0}, {0, 0}, {1, 209} }, 0, 10, 12, 7, 3, 3 },
- { 29, 4, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 14, 0, 0, 0, -1, 0, 1, 0, { {0, 28}, {0, 0}, {0, 0}, {0, 28} }, 0, 10, 12, 7, 0, 3 },
- { 18, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 3, 2 },
- { 15, 0, 0, 0, -1, 0, 4, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 10, 12, 6, 3, 2 },
- { 29, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 7, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 15, 0, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3, 2 },
- { 15, 0, 0, 0, -1, 0, 6, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3, 2 },
- { 14, 0, 0, 0, -1, 0, 6, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 3, 2 },
- { 26, 10, 0, 0, -1, 0, 6, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 29, 10, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 15, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, -28}, {0, -28}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 29, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 5, 10, 0, 0, -1, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 4, 0, 0, 0, -1, 0, 1, 80, { {0, 16}, {0, 0}, {0, 0}, {0, 16} }, 0, 10, 12, 7, 3, 3 },
- { 4, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, -16}, {0, -16}, {0, 0} }, 0, 10, 12, 6, 3, 3 },
- { 4, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 0, 3 },
- { 4, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 3 },
- { 29, 10, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 3, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 3, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, -3, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, -3, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 3, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 2016, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 2527, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 1923, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 1914, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 1918, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 2250, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 26, 10, 0, 0, -1, 1, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, -1, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 138, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 7, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, -7, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 26, 10, 0, 0, -1, 1, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 26, 10, 0, 0, -1, -1, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 26, 10, 0, 0, -1, 1, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, -1, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 1824, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 2104, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 2108, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 2106, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 1316, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, -138, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 15, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 8, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 7, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, -8, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, -7, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
- { 21, 10, 0, 0, -1, 1, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 3, 2 },
- { 22, 10, 0, 0, -1, -1, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 3, 2 },
- { 29, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 1, 2 },
- { 29, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 5, 10, 0, 0, 1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 5, 10, 0, 0, 2, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 5, 10, 0, 0, 3, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 5, 10, 0, 0, 4, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 5, 10, 0, 0, 5, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 5, 10, 0, 0, 6, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 5, 10, 0, 0, 7, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 5, 10, 0, 0, 8, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 5, 10, 0, 0, 9, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 5, 10, 0, 0, 1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 10, 0, 0, 2, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 10, 0, 0, 3, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 10, 0, 0, 4, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 10, 0, 0, 5, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 10, 0, 0, 6, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 10, 0, 0, 7, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 10, 0, 0, 8, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 10, 0, 0, 9, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 2, 0, 0, 1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 2, 0, 0, 2, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 2, 0, 0, 3, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 2, 0, 0, 4, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 2, 0, 0, 5, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 2, 0, 0, 6, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 2, 0, 0, 7, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 2, 0, 0, 8, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 2, 0, 0, 9, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 2, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 29, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 29, 0, 0, 0, -1, 0, 1, 80, { {0, 26}, {0, 0}, {0, 0}, {0, 26} }, 0, 10, 12, 7, 3, 2 },
- { 29, 0, 0, 0, -1, 0, 1, 80, { {0, 26}, {0, 0}, {0, 0}, {0, 26} }, 14, 10, 12, 7, 3, 2 },
- { 29, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, -26}, {0, -26}, {0, 0} }, 0, 10, 12, 6, 3, 2 },
- { 5, 10, 0, 0, 0, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 5, 10, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 5, 10, 0, 0, 1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 5, 10, 0, 0, 2, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 5, 10, 0, 0, 3, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 5, 10, 0, 0, 4, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 5, 10, 0, 0, 5, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 5, 10, 0, 0, 6, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 5, 10, 0, 0, 7, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 5, 10, 0, 0, 8, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 5, 10, 0, 0, 9, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 5, 10, 0, 0, 0, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 30, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 1, 2 },
- { 29, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 30, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 30, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 6, 0, 1, 2 },
- { 21, 10, 0, 0, -1, 1, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 2 },
- { 22, 10, 0, 0, -1, -1, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 1, 2 },
- { 5, 10, 0, 0, 1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 5, 10, 0, 0, 2, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 5, 10, 0, 0, 3, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 5, 10, 0, 0, 4, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 5, 10, 0, 0, 5, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 5, 10, 0, 0, 6, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 5, 10, 0, 0, 7, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 5, 10, 0, 0, 8, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 5, 10, 0, 0, 9, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 5, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 1, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, -1, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 21, 10, 0, 0, -1, 1, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 2 },
- { 22, 10, 0, 0, -1, -1, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 1, 2 },
- { 26, 10, 0, 0, -1, 1, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, -1, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 2, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, -2, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 1, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, -1, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, -1316, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 21, 10, 0, 0, -1, 1, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 2 },
- { 22, 10, 0, 0, -1, -1, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 1, 2 },
- { 29, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 54 },
- { 21, 10, 0, 0, -1, 3, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 2 },
- { 22, 10, 0, 0, -1, 1, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 1, 2 },
- { 21, 10, 0, 0, -1, -1, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 2 },
- { 22, 10, 0, 0, -1, -3, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 1, 2 },
- { 26, 10, 0, 0, -1, -1914, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, -1918, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, -1923, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, -1824, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, -2016, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, 0, 6, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 26, 10, 0, 0, -1, 0, 6, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 26, 10, 0, 0, -1, -2104, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, -2106, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, -2108, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 26, 10, 0, 0, -1, -2250, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, -2527, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 14, 0, 0, 0, -1, 0, 8, 0, { {0, 48}, {0, 0}, {0, 0}, {0, 48} }, 0, 10, 12, 7, 3, 57 },
- { 14, 0, 0, 0, -1, 0, 24, 0, { {0, 48}, {0, 0}, {0, 0}, {0, 48} }, 0, 10, 12, 7, 3, 57 },
- { 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, -48}, {0, -48}, {0, 0} }, 0, 10, 12, 6, 1, 57 },
- { 15, 0, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, -48}, {0, -48}, {0, 0} }, 0, 10, 12, 6, 1, 57 },
- { 14, 0, 0, 0, -1, 0, 9, 0, { {1, 211}, {0, 0}, {0, 0}, {1, 211} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 9, 0, { {0, -3814}, {0, 0}, {0, 0}, {0, -3814} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 9, 0, { {1, 213}, {0, 0}, {0, 0}, {1, 213} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {1, 215}, {1, 215}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {1, 217}, {1, 217}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 10, 0, { {1, 219}, {0, 0}, {0, 0}, {1, 219} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 10, 0, { {1, 221}, {0, 0}, {0, 0}, {1, 221} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 10, 0, { {1, 223}, {0, 0}, {0, 0}, {1, 223} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 11, 0, { {1, 225}, {0, 0}, {0, 0}, {1, 225} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 17, 0, 0, 0, -1, 0, 10, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 11, 0, { {1, 227}, {0, 0}, {0, 0}, {1, 227} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 11, 0, { {1, 229}, {0, 0}, {0, 0}, {1, 229} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 8, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 46 },
- { 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 46 },
- { 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 1, 46 },
- { 29, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 46 },
- { 14, 0, 0, 0, -1, 0, 11, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 46 },
- { 15, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 46 },
- { 0, 17, 230, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 46 },
- { 14, 0, 0, 0, -1, 0, 13, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 46 },
- { 15, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 46 },
- { 25, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 0, 1, 46 },
- { 25, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 46 },
- { 5, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 46 },
- { 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, -7264}, {0, -7264}, {0, 0} }, 0, 10, 12, 6, 1, 25 },
- { 15, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, -7264}, {0, -7264}, {0, 0} }, 0, 10, 12, 6, 1, 25 },
- { 18, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 58 },
- { 18, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 58 },
- { 17, 0, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 3, 58 },
- { 25, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 58 },
- { 0, 17, 9, 5, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 58 },
- { 25, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
- { 23, 10, 0, 0, -1, 1, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
- { 24, 10, 0, 0, -1, -1, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
- { 20, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 0, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 2 },
- { 20, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 23, 10, 0, 0, -1, 1, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
- { 24, 10, 0, 0, -1, -1, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 12, 1, 2 },
- { 17, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 2 },
- { 20, 10, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 20, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 2 },
- { 21, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 12, 1, 2 },
- { 21, 10, 0, 0, -1, 1, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 2 },
- { 22, 10, 0, 0, -1, -1, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 1, 2 },
- { 20, 10, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 37 },
- { 29, 10, 0, 0, -1, 0, 4, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 37 },
- { 29, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 11, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 12, 3, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
- { 17, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 5, 8, 1, 37 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 2 },
- { 4, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 37 },
- { 20, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 0, 1, 2 },
- { 22, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 1, 2 },
- { 0, 17, 218, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 228, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 222, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 1, 0, 224, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 26 },
- { 20, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
- { 17, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 14, 8, 1, 2 },
- { 17, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 21, 8, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
- { 4, 0, 0, 0, -1, 0, 4, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 3, 37 },
- { 17, 0, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 5, 8, 1, 37 },
- { 18, 0, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 5, 8, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 8, 1, 34 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 34 },
- { 18, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 34 },
- { 18, 0, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 8, 1, 34 },
- { 0, 17, 8, 5, -1, 0, 1, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 28, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 5, 0, 0, 2 },
- { 17, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 8, 1, 34 },
- { 17, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 8, 1, 34 },
- { 18, 0, 0, 0, -1, 0, 6, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 3, 34 },
- { 20, 10, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 5, 0, 1, 2 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 5, 8, 1, 35 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 14, 8, 1, 35 },
- { 18, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 14, 8, 1, 35 },
- { 25, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 0, 1, 2 },
- { 17, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 5, 8, 1, 2 },
- { 17, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 5, 8, 1, 35 },
- { 17, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 5, 8, 1, 35 },
- { 18, 0, 0, 0, -1, 0, 6, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 14, 8, 3, 35 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 36 },
- { 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 36 },
- { 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 36 },
- { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 36 },
- { 18, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 3, 26 },
- { 18, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 0, 26 },
- { 29, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
- { 5, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
- { 29, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
- { 18, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 36 },
- { 18, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 36 },
- { 18, 0, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 36 },
- { 29, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
- { 18, 0, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 5, 8, 1, 35 },
- { 29, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 26 },
- { 29, 10, 0, 0, -1, 0, 7, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 26 },
- { 5, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
- { 29, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
- { 29, 0, 0, 0, -1, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
- { 5, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 7, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
- { 5, 10, 0, 0, -1, 0, 6, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
- { 29, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 26 },
- { 29, 10, 0, 0, -1, 0, 7, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 26 },
- { 29, 10, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 26 },
- { 29, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 3, 2 },
- { 29, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 14, 0, 3, 35 },
- { 29, 0, 0, 0, -1, 0, 22, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
- { 18, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 37 },
- { 18, 0, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 37 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 37 },
- { 18, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 37 },
- { 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 37 },
- { 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 37 },
- { 18, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 37 },
- { 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 37 },
- { 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 37 },
- { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 37 },
- { 18, 0, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 37 },
- { 18, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 38 },
- { 17, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 5, 8, 1, 38 },
- { 29, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 38 },
- { 29, 10, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 38 },
- { 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 83 },
- { 17, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 83 },
- { 25, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 83 },
- { 25, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 83 },
- { 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 70 },
- { 17, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 70 },
- { 25, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 70 },
- { 25, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 12, 1, 70 },
- { 25, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 70 },
- { 3, 0, 0, 0, 0, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 70 },
- { 3, 0, 0, 0, 1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 70 },
- { 3, 0, 0, 0, 2, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 70 },
- { 3, 0, 0, 0, 3, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 70 },
- { 3, 0, 0, 0, 4, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 70 },
- { 3, 0, 0, 0, 5, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 70 },
- { 3, 0, 0, 0, 6, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 70 },
- { 3, 0, 0, 0, 7, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 70 },
- { 3, 0, 0, 0, 8, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 70 },
- { 3, 0, 0, 0, 9, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 70 },
- { 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 5 },
- { 2, 17, 0, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 5 },
- { 25, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 5 },
- { 0, 17, 230, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 5 },
- { 17, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 5 },
- { 17, 0, 0, 0, -1, 0, 16, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3, 5 },
- { 0, 17, 230, 5, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 5 },
- { 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 84 },
- { 4, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 84 },
- { 0, 17, 230, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 84 },
- { 25, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 84 },
- { 25, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 84 },
- { 25, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 84 },
- { 28, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 28, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 0, 1, 2 },
- { 17, 10, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 2 },
- { 28, 10, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 0, 1, 2 },
- { 14, 0, 0, 0, -1, 0, 10, 0, { {1, 231}, {0, 0}, {0, 0}, {1, 231} }, 0, 10, 12, 7, 3, 3 },
- { 28, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 0, 1, 2 },
- { 14, 0, 0, 0, -1, 0, 12, 0, { {1, 233}, {0, 0}, {0, 0}, {1, 233} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 12, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 13, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 48}, {0, 48}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 16, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 13, 0, { {1, 235}, {0, 0}, {0, 0}, {1, 235} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 16, 0, { {1, 237}, {0, 0}, {0, 0}, {1, 237} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 16, 0, { {1, 239}, {0, 0}, {0, 0}, {1, 239} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 16, 0, { {1, 241}, {0, 0}, {0, 0}, {1, 241} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 18, 0, { {1, 243}, {0, 0}, {0, 0}, {1, 243} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 16, 0, { {1, 245}, {0, 0}, {0, 0}, {1, 245} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 16, 0, { {1, 247}, {0, 0}, {0, 0}, {1, 247} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 17, 0, { {1, 249}, {0, 0}, {0, 0}, {1, 249} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 17, 0, { {0, 928}, {0, 0}, {0, 0}, {0, 928} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 17, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 20, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 21, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 24, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 14, 0, 0, 0, -1, 0, 21, 0, { {0, -48}, {0, 0}, {0, 0}, {0, -48} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 21, 0, { {1, 251}, {0, 0}, {0, 0}, {1, 251} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 21, 0, { {1, 253}, {0, 0}, {0, 0}, {1, 253} }, 0, 10, 12, 7, 3, 3 },
- { 14, 0, 0, 0, -1, 0, 23, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 17, 0, 0, 0, -1, 0, 24, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 3, 3 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 3 },
- { 17, 0, 0, 0, -1, 0, 13, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3, 3 },
- { 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 3 },
- { 18, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 59 },
- { 0, 17, 0, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 59 },
- { 0, 17, 9, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 59 },
- { 1, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 59 },
- { 29, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 59 },
- { 0, 17, 9, 5, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 59 },
- { 29, 4, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 18, 0, 0, 2, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 65 },
- { 18, 0, 0, 4, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 65 },
- { 18, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 65 },
- { 25, 10, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 1, 65 },
- { 25, 10, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 12, 1, 65 },
- { 1, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 71 },
- { 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 71 },
- { 0, 17, 9, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 71 },
- { 0, 17, 0, 5, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 71 },
- { 25, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 71 },
- { 3, 0, 0, 0, 0, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 71 },
- { 3, 0, 0, 0, 1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 71 },
- { 3, 0, 0, 0, 2, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 71 },
- { 3, 0, 0, 0, 3, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 71 },
- { 3, 0, 0, 0, 4, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 71 },
- { 3, 0, 0, 0, 5, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 71 },
- { 3, 0, 0, 0, 6, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 71 },
- { 3, 0, 0, 0, 7, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 71 },
- { 3, 0, 0, 0, 8, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 71 },
- { 3, 0, 0, 0, 9, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 71 },
- { 0, 17, 230, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 11 },
- { 25, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 11 },
- { 25, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 1, 11 },
- { 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 11 },
- { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 11 },
- { 0, 17, 0, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 11 },
- { 3, 0, 0, 0, 0, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 72 },
- { 3, 0, 0, 0, 1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 72 },
- { 3, 0, 0, 0, 2, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 72 },
- { 3, 0, 0, 0, 3, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 72 },
- { 3, 0, 0, 0, 4, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 72 },
- { 3, 0, 0, 0, 5, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 72 },
- { 3, 0, 0, 0, 6, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 72 },
- { 3, 0, 0, 0, 7, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 72 },
- { 3, 0, 0, 0, 8, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 72 },
- { 3, 0, 0, 0, 9, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 72 },
- { 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 72 },
- { 0, 17, 0, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 72 },
- { 0, 17, 220, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 72 },
- { 25, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 2 },
- { 25, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 72 },
- { 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 73 },
- { 0, 17, 0, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 73 },
- { 1, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 73 },
- { 1, 0, 9, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 73 },
- { 25, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 73 },
- { 0, 17, 0, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 85 },
- { 1, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 85 },
- { 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 85 },
- { 0, 17, 7, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 85 },
- { 1, 0, 9, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 85 },
- { 25, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 85 },
- { 25, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 85 },
- { 25, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 85 },
- { 17, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 2 },
- { 3, 0, 0, 0, 0, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 85 },
- { 3, 0, 0, 0, 1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 85 },
- { 3, 0, 0, 0, 2, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 85 },
- { 3, 0, 0, 0, 3, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 85 },
- { 3, 0, 0, 0, 4, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 85 },
- { 3, 0, 0, 0, 5, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 85 },
- { 3, 0, 0, 0, 6, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 85 },
- { 3, 0, 0, 0, 7, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 85 },
- { 3, 0, 0, 0, 8, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 85 },
- { 3, 0, 0, 0, 9, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 85 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 1, 24 },
- { 0, 17, 0, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 24 },
- { 17, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 1, 24 },
- { 3, 0, 0, 0, 0, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 2, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 3, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 4, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 5, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 6, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 7, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 8, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 3, 0, 0, 0, 9, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 24 },
- { 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 77 },
- { 0, 17, 0, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 77 },
- { 1, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 77 },
- { 3, 0, 0, 0, 0, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 77 },
- { 3, 0, 0, 0, 1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 77 },
- { 3, 0, 0, 0, 2, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 77 },
- { 3, 0, 0, 0, 3, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 77 },
- { 3, 0, 0, 0, 4, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 77 },
- { 3, 0, 0, 0, 5, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 77 },
- { 3, 0, 0, 0, 6, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 77 },
- { 3, 0, 0, 0, 7, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 77 },
- { 3, 0, 0, 0, 8, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 77 },
- { 3, 0, 0, 0, 9, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 77 },
- { 25, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 77 },
- { 25, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 77 },
- { 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 1, 24 },
- { 17, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 1, 24 },
- { 29, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 0, 1, 24 },
- { 1, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 4, 33, 4, 1, 24 },
- { 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 1, 79 },
- { 0, 17, 230, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 79 },
- { 0, 17, 220, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 79 },
- { 17, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 1, 79 },
- { 25, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 0, 1, 79 },
- { 18, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 86 },
- { 1, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 86 },
- { 0, 17, 0, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 86 },
- { 25, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 86 },
- { 17, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 86 },
- { 0, 17, 9, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 86 },
- { 18, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 27 },
- { 15, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, -928}, {0, -928}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 28, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 0, 1, 2 },
- { 17, 0, 0, 0, -1, 0, 16, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 1, 4 },
- { 15, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 15, 0, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 17, 0, 0, 0, -1, 0, 23, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 3, 3 },
- { 28, 10, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 255}, {1, 255}, {1, 255} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 257}, {1, 257}, {1, 257} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 259}, {1, 259}, {1, 259} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 261}, {1, 261}, {1, 261} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 263}, {1, 263}, {1, 263} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 265}, {1, 265}, {1, 265} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 267}, {1, 267}, {1, 267} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 269}, {1, 269}, {1, 269} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 271}, {1, 271}, {1, 271} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 273}, {1, 273}, {1, 273} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 275}, {1, 275}, {1, 275} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 277}, {1, 277}, {1, 277} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 279}, {1, 279}, {1, 279} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 281}, {1, 281}, {1, 281} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 283}, {1, 283}, {1, 283} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 285}, {1, 285}, {1, 285} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 287}, {1, 287}, {1, 287} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 289}, {1, 289}, {1, 289} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 291}, {1, 291}, {1, 291} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 293}, {1, 293}, {1, 293} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 295}, {1, 295}, {1, 295} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 297}, {1, 297}, {1, 297} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 299}, {1, 299}, {1, 299} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 301}, {1, 301}, {1, 301} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 303}, {1, 303}, {1, 303} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 305}, {1, 305}, {1, 305} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 307}, {1, 307}, {1, 307} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 309}, {1, 309}, {1, 309} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 311}, {1, 311}, {1, 311} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 313}, {1, 313}, {1, 313} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 315}, {1, 315}, {1, 315} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 317}, {1, 317}, {1, 317} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 319}, {1, 319}, {1, 319} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 321}, {1, 321}, {1, 321} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 323}, {1, 323}, {1, 323} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 325}, {1, 325}, {1, 325} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 327}, {1, 327}, {1, 327} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 329}, {1, 329}, {1, 329} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 331}, {1, 331}, {1, 331} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 333}, {1, 333}, {1, 333} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 335}, {1, 335}, {1, 335} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 337}, {1, 337}, {1, 337} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 339}, {1, 339}, {1, 339} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 341}, {1, 341}, {1, 341} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 343}, {1, 343}, {1, 343} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 345}, {1, 345}, {1, 345} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 347}, {1, 347}, {1, 347} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 349}, {1, 349}, {1, 349} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 351}, {1, 351}, {1, 351} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 353}, {1, 353}, {1, 353} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 355}, {1, 355}, {1, 355} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 357}, {1, 357}, {1, 357} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 359}, {1, 359}, {1, 359} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 361}, {1, 361}, {1, 361} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 363}, {1, 363}, {1, 363} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 365}, {1, 365}, {1, 365} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 367}, {1, 367}, {1, 367} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 369}, {1, 369}, {1, 369} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 371}, {1, 371}, {1, 371} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 373}, {1, 373}, {1, 373} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 375}, {1, 375}, {1, 375} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 377}, {1, 377}, {1, 377} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 379}, {1, 379}, {1, 379} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 381}, {1, 381}, {1, 381} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 383}, {1, 383}, {1, 383} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 385}, {1, 385}, {1, 385} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 387}, {1, 387}, {1, 387} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 389}, {1, 389}, {1, 389} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 391}, {1, 391}, {1, 391} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 393}, {1, 393}, {1, 393} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 395}, {1, 395}, {1, 395} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 397}, {1, 397}, {1, 397} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 399}, {1, 399}, {1, 399} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 401}, {1, 401}, {1, 401} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 403}, {1, 403}, {1, 403} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 405}, {1, 405}, {1, 405} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 407}, {1, 407}, {1, 407} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 409}, {1, 409}, {1, 409} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 411}, {1, 411}, {1, 411} }, 0, 10, 12, 6, 3, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 413}, {1, 413}, {1, 413} }, 0, 10, 12, 6, 3, 28 },
- { 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 86 },
- { 1, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 86 },
- { 0, 17, 0, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 86 },
- { 25, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 86 },
- { 0, 17, 9, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 86 },
- { 3, 0, 0, 0, 0, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 86 },
- { 3, 0, 0, 0, 1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 86 },
- { 3, 0, 0, 0, 2, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 86 },
- { 3, 0, 0, 0, 3, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 86 },
- { 3, 0, 0, 0, 4, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 86 },
- { 3, 0, 0, 0, 5, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 86 },
- { 3, 0, 0, 0, 6, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 86 },
- { 3, 0, 0, 0, 7, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 86 },
- { 3, 0, 0, 0, 8, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 86 },
- { 3, 0, 0, 0, 9, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 86 },
- { 18, 0, 0, 0, -1, 0, 2, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 12, 10, 23, 8, 1, 26 },
- { 18, 0, 0, 0, -1, 0, 2, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 13, 10, 24, 8, 1, 26 },
- { 11, 0, 0, 0, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 34, 0, 0, 0 },
- { 12, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 0 },
- { 18, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 3, 37 },
- { 18, 0, 0, 0, -1, 0, 13, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 3, 37 },
- { 18, 0, 0, 0, -1, 0, 6, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 3, 37 },
- { 18, 0, 0, 0, -1, 0, 11, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 3, 37 },
- { 13, 0, 0, 0, -1, 0, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 0 },
- { 18, 0, 0, 0, -1, 0, 8, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 3, 37 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 427}, {1, 424}, {0, 0} }, 0, 10, 12, 6, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 433}, {1, 430}, {0, 0} }, 0, 10, 12, 6, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 439}, {1, 436}, {0, 0} }, 0, 10, 12, 6, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 446}, {1, 442}, {0, 0} }, 0, 10, 12, 6, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 454}, {1, 450}, {0, 0} }, 0, 10, 12, 6, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 461}, {1, 458}, {0, 0} }, 0, 10, 12, 6, 3, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 473}, {1, 470}, {0, 0} }, 0, 10, 12, 6, 3, 6 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 479}, {1, 476}, {0, 0} }, 0, 10, 12, 6, 3, 6 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 485}, {1, 482}, {0, 0} }, 0, 10, 12, 6, 3, 6 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 491}, {1, 488}, {0, 0} }, 0, 10, 12, 6, 3, 6 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 497}, {1, 494}, {0, 0} }, 0, 10, 12, 6, 3, 6 },
- { 18, 1, 0, 0, -1, 0, 4, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 9, 13, 8, 3, 7 },
- { 0, 17, 26, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 7 },
- { 18, 1, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 9, 13, 8, 3, 7 },
- { 18, 1, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 9, 13, 8, 3, 7 },
- { 26, 3, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 7 },
- { 18, 13, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 3, 8 },
- { 28, 13, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 8 },
- { 18, 13, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 0, 8 },
- { 29, 10, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 8 },
- { 13, 18, 0, 0, -1, 0, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 0 },
- { 27, 13, 0, 0, -1, 0, 6, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 3, 8 },
- { 0, 17, 0, 5, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 2, 1 },
- { 25, 10, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 8, 11, 0, 2 },
- { 25, 10, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 11, 3, 2 },
- { 25, 10, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 0, 0, 2 },
- { 25, 10, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 14, 8, 11, 0, 2 },
- { 25, 10, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 8, 0, 0, 2 },
- { 25, 10, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 0, 0, 2 },
- { 21, 10, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 3, 2 },
- { 22, 10, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 3, 2 },
- { 25, 10, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 15, 0, 0, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
- { 20, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 11, 3, 2 },
- { 19, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 17, 14, 0, 3, 2 },
- { 21, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 0, 2 },
- { 22, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 0, 2 },
- { 21, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 3, 2 },
- { 22, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 3, 2 },
- { 25, 10, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
- { 21, 10, 0, 0, -1, 0, 7, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 0, 2 },
- { 22, 10, 0, 0, -1, 0, 7, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 0, 2 },
- { 25, 6, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 1, 11, 0, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 11, 3, 2 },
- { 25, 6, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 13, 1, 10, 0, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 5, 0, 0, 2 },
- { 25, 6, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 14, 5, 11, 0, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 12, 0, 2 },
- { 21, 10, 0, 0, -1, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 3, 2 },
- { 22, 10, 0, 0, -1, -1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 3, 2 },
- { 25, 4, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
- { 26, 3, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
- { 20, 3, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 11, 3, 2 },
- { 26, 10, 0, 0, -1, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
- { 26, 10, 0, 0, -1, -1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
- { 26, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
- { 27, 4, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 0, 2 },
- { 25, 4, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 0, 2 },
- { 18, 13, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 8 },
- { 10, 18, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 22, 4, 2, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 13, 14, 0, 0, 2 },
- { 25, 6, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 13, 1, 10, 3, 2 },
- { 25, 6, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
- { 3, 2, 0, 0, 0, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 3, 2 },
- { 3, 2, 0, 0, 1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 3, 2 },
- { 3, 2, 0, 0, 2, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 3, 2 },
- { 3, 2, 0, 0, 3, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 3, 2 },
- { 3, 2, 0, 0, 4, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 3, 2 },
- { 3, 2, 0, 0, 5, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 3, 2 },
- { 3, 2, 0, 0, 6, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 3, 2 },
- { 3, 2, 0, 0, 7, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 3, 2 },
- { 3, 2, 0, 0, 8, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 3, 2 },
- { 3, 2, 0, 0, 9, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 3, 2 },
- { 26, 10, 0, 0, -1, 2, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
- { 26, 10, 0, 0, -1, -2, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
- { 14, 0, 0, 0, -1, 0, 1, 80, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 14, 7, 3, 3 },
- { 21, 10, 0, 0, -1, 2, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 0, 2 },
- { 22, 10, 0, 0, -1, -2, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 0, 2 },
- { 28, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 14, 6, 3, 3 },
- { 21, 10, 0, 0, -1, 1, 6, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 3, 2 },
- { 22, 10, 0, 0, -1, -1, 6, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 3, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 12, 3, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 11, 3, 2 },
- { 25, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 0, 3, 2 },
- { 18, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 14, 8, 3, 35 },
- { 18, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 5, 8, 3, 35 },
- { 17, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 5, 8, 3, 2 },
- { 17, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 5, 4, 3, 2 },
- { 27, 4, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 3, 2 },
- { 26, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
- { 10, 10, 0, 5, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 21, 4, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 29, 0, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 13, 18, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 0 },
- { 18, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 49 },
- { 25, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 2 },
- { 25, 10, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 2 },
- { 5, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 4, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 4 },
- { 5, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 4 },
- { 29, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 4 },
- { 5, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 4 },
- { 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 4 },
- { 29, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 4 },
- { 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 74 },
- { 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 75 },
- { 5, 2, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 18, 0, 0, 0, -1, 0, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 39 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 39 },
- { 5, 0, 0, 0, -1, 0, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 39 },
- { 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 39 },
- { 18, 0, 0, 0, -1, 0, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 40 },
- { 4, 0, 0, 0, -1, 0, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 40 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 120 },
- { 0, 17, 230, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 120 },
- { 18, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 50 },
- { 25, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 50 },
- { 18, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 60 },
- { 25, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 60 },
- { 4, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 60 },
- { 14, 0, 0, 0, -1, 0, 5, 0, { {0, 40}, {0, 0}, {0, 0}, {0, 40} }, 0, 10, 12, 7, 3, 41 },
- { 14, 0, 0, 0, -1, 0, 7, 0, { {0, 40}, {0, 0}, {0, 0}, {0, 40} }, 0, 10, 12, 7, 3, 41 },
- { 15, 0, 0, 0, -1, 0, 5, 0, { {0, 0}, {0, -40}, {0, -40}, {0, 0} }, 0, 10, 12, 6, 1, 41 },
- { 15, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, -40}, {0, -40}, {0, 0} }, 0, 10, 12, 6, 1, 41 },
- { 18, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 51 },
- { 18, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 52 },
- { 3, 0, 0, 0, 0, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 52 },
- { 3, 0, 0, 0, 1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 52 },
- { 3, 0, 0, 0, 2, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 52 },
- { 3, 0, 0, 0, 3, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 52 },
- { 3, 0, 0, 0, 4, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 52 },
- { 3, 0, 0, 0, 5, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 52 },
- { 3, 0, 0, 0, 6, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 52 },
- { 3, 0, 0, 0, 7, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 52 },
- { 3, 0, 0, 0, 8, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 52 },
- { 3, 0, 0, 0, 9, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 52 },
- { 14, 0, 0, 0, -1, 0, 18, 0, { {0, 40}, {0, 0}, {0, 0}, {0, 40} }, 0, 10, 12, 7, 3, 136 },
- { 15, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, -40}, {0, -40}, {0, 0} }, 0, 10, 12, 6, 1, 136 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 106 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 103 },
- { 25, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 103 },
- { 14, 0, 0, 0, -1, 0, 24, 0, { {0, 39}, {0, 0}, {0, 0}, {0, 39} }, 0, 10, 12, 7, 3, 161 },
- { 15, 0, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, -39}, {0, -39}, {0, 0} }, 0, 10, 12, 6, 1, 161 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 110 },
- { 17, 0, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 1, 3 },
- { 17, 0, 0, 0, -1, 0, 24, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3, 3 },
- { 18, 1, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 53 },
- { 18, 1, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 87 },
- { 25, 1, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 87 },
- { 5, 1, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 87 },
- { 18, 1, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 118 },
- { 29, 1, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 118 },
- { 5, 1, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 118 },
- { 18, 1, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 117 },
- { 5, 1, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 117 },
- { 18, 1, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 128 },
- { 5, 1, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 128 },
- { 18, 1, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 64 },
- { 5, 1, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 64 },
- { 5, 1, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 64 },
- { 25, 10, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 64 },
- { 18, 1, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 76 },
- { 25, 1, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 76 },
- { 18, 1, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 98 },
- { 18, 1, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 97 },
- { 5, 1, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 97 },
- { 18, 1, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 61 },
- { 0, 17, 0, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 61 },
- { 0, 17, 220, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 61 },
- { 0, 17, 230, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 61 },
- { 18, 1, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 61 },
- { 0, 17, 1, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 61 },
- { 0, 17, 9, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 61 },
- { 5, 1, 0, 0, 1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 61 },
- { 5, 1, 0, 0, 2, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 61 },
- { 5, 1, 0, 0, 3, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 61 },
- { 5, 1, 0, 0, 4, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 61 },
- { 5, 1, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 61 },
- { 5, 1, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 61 },
- { 25, 1, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 61 },
- { 25, 1, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 61 },
- { 25, 1, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 61 },
- { 18, 1, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 88 },
- { 5, 1, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 88 },
- { 25, 1, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 88 },
- { 18, 1, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 116 },
- { 5, 1, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 116 },
- { 18, 1, 0, 2, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 112 },
- { 18, 1, 0, 3, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 112 },
- { 18, 1, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 112 },
- { 29, 1, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 112 },
- { 18, 1, 0, 4, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 112 },
- { 0, 17, 230, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 112 },
- { 0, 17, 220, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 112 },
- { 5, 1, 0, 2, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 112 },
- { 5, 1, 0, 3, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 112 },
- { 25, 1, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 112 },
- { 25, 1, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 15, 0, 1, 112 },
- { 18, 1, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 80 },
- { 25, 10, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 80 },
- { 18, 1, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 89 },
- { 5, 1, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 89 },
- { 18, 1, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 90 },
- { 5, 1, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 90 },
- { 18, 1, 0, 2, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 121 },
- { 18, 1, 0, 3, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 121 },
- { 25, 1, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 121 },
- { 5, 1, 0, 3, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 121 },
- { 5, 1, 0, 2, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 121 },
- { 5, 1, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 121 },
- { 18, 1, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 91 },
- { 14, 1, 0, 0, -1, 0, 17, 0, { {0, 64}, {0, 0}, {0, 0}, {0, 64} }, 0, 10, 12, 7, 3, 130 },
- { 15, 1, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, -64}, {0, -64}, {0, 0} }, 0, 10, 12, 6, 1, 130 },
- { 5, 1, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 130 },
- { 18, 13, 0, 4, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 144 },
- { 18, 13, 0, 2, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 144 },
- { 18, 13, 0, 3, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 144 },
- { 0, 17, 230, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 144 },
- { 3, 5, 0, 0, 0, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 144 },
- { 3, 5, 0, 0, 1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 144 },
- { 3, 5, 0, 0, 2, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 144 },
- { 3, 5, 0, 0, 3, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 144 },
- { 3, 5, 0, 0, 4, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 144 },
- { 3, 5, 0, 0, 5, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 144 },
- { 3, 5, 0, 0, 6, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 144 },
- { 3, 5, 0, 0, 7, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 144 },
- { 3, 5, 0, 0, 8, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 144 },
- { 3, 5, 0, 0, 9, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 144 },
- { 5, 5, 0, 0, 1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 8 },
- { 5, 5, 0, 0, 2, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 8 },
- { 5, 5, 0, 0, 3, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 8 },
- { 5, 5, 0, 0, 4, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 8 },
- { 5, 5, 0, 0, 5, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 8 },
- { 5, 5, 0, 0, 6, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 8 },
- { 5, 5, 0, 0, 7, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 8 },
- { 5, 5, 0, 0, 8, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 8 },
- { 5, 5, 0, 0, 9, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 8 },
- { 5, 5, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 8 },
- { 18, 1, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 156 },
- { 0, 17, 230, 5, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 156 },
- { 20, 1, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 156 },
- { 18, 1, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 147 },
- { 5, 1, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 147 },
- { 18, 13, 0, 2, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 148 },
- { 18, 13, 0, 3, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 148 },
- { 18, 13, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 148 },
- { 0, 17, 220, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 148 },
- { 0, 17, 230, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 148 },
- { 5, 13, 0, 2, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 148 },
- { 5, 13, 0, 3, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 148 },
- { 25, 13, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 12, 1, 148 },
- { 18, 1, 0, 2, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 158 },
- { 18, 1, 0, 3, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 158 },
- { 0, 17, 230, 5, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 158 },
- { 0, 17, 220, 5, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 158 },
- { 25, 1, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 12, 1, 158 },
- { 18, 1, 0, 2, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 153 },
- { 18, 1, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 153 },
- { 18, 1, 0, 3, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 153 },
- { 5, 1, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 153 },
- { 5, 1, 0, 3, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 153 },
- { 5, 1, 0, 2, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 153 },
- { 5, 1, 0, 4, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 153 },
- { 18, 1, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 149 },
- { 1, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 94 },
- { 0, 17, 0, 5, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 94 },
- { 18, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 94 },
- { 0, 17, 9, 5, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 94 },
- { 25, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 94 },
- { 25, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 94 },
- { 5, 10, 0, 0, 1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 94 },
- { 5, 10, 0, 0, 2, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 94 },
- { 5, 10, 0, 0, 3, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 94 },
- { 5, 10, 0, 0, 4, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 94 },
- { 5, 10, 0, 0, 5, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 94 },
- { 5, 10, 0, 0, 6, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 94 },
- { 5, 10, 0, 0, 7, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 94 },
- { 5, 10, 0, 0, 8, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 94 },
- { 5, 10, 0, 0, 9, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 94 },
- { 5, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 94 },
- { 3, 0, 0, 0, 0, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 94 },
- { 3, 0, 0, 0, 1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 94 },
- { 3, 0, 0, 0, 2, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 94 },
- { 3, 0, 0, 0, 3, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 94 },
- { 3, 0, 0, 0, 4, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 94 },
- { 3, 0, 0, 0, 5, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 94 },
- { 3, 0, 0, 0, 6, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 94 },
- { 3, 0, 0, 0, 7, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 94 },
- { 3, 0, 0, 0, 8, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 94 },
- { 3, 0, 0, 0, 9, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 94 },
- { 0, 17, 9, 5, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 94 },
- { 18, 0, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 94 },
- { 0, 17, 0, 5, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 94 },
- { 0, 17, 9, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 94 },
- { 0, 17, 0, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 92 },
- { 1, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 92 },
- { 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 92 },
- { 18, 0, 0, 0, -1, 0, 11, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 92 },
- { 0, 17, 9, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 92 },
- { 0, 17, 7, 5, -1, 0, 11, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 92 },
- { 25, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 92 },
- { 10, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 6, 12, 4, 0, 92 },
- { 25, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 92 },
- { 0, 17, 0, 5, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 92 },
- { 10, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 6, 12, 4, 0, 92 },
- { 18, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 101 },
- { 3, 0, 0, 0, 0, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 101 },
- { 3, 0, 0, 0, 1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 101 },
- { 3, 0, 0, 0, 2, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 101 },
- { 3, 0, 0, 0, 3, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 101 },
- { 3, 0, 0, 0, 4, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 101 },
- { 3, 0, 0, 0, 5, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 101 },
- { 3, 0, 0, 0, 6, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 101 },
- { 3, 0, 0, 0, 7, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 101 },
- { 3, 0, 0, 0, 8, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 101 },
- { 3, 0, 0, 0, 9, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 101 },
- { 0, 17, 230, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 96 },
- { 18, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 96 },
- { 0, 17, 0, 5, -1, 0, 13, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 96 },
- { 0, 17, 0, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 96 },
- { 1, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 96 },
- { 0, 17, 0, 5, -1, 0, 13, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 96 },
- { 0, 17, 9, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 96 },
- { 3, 0, 0, 0, 0, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 96 },
- { 3, 0, 0, 0, 1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 96 },
- { 3, 0, 0, 0, 2, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 96 },
- { 3, 0, 0, 0, 3, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 96 },
- { 3, 0, 0, 0, 4, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 96 },
- { 3, 0, 0, 0, 5, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 96 },
- { 3, 0, 0, 0, 6, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 96 },
- { 3, 0, 0, 0, 7, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 96 },
- { 3, 0, 0, 0, 8, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 96 },
- { 3, 0, 0, 0, 9, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 96 },
- { 25, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 96 },
- { 25, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 96 },
- { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 96 },
- { 1, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 96 },
- { 18, 0, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 96 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 111 },
- { 0, 17, 7, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 111 },
- { 25, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 111 },
- { 25, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 1, 111 },
- { 0, 17, 0, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 100 },
- { 1, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 100 },
- { 18, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 100 },
- { 1, 0, 9, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 100 },
- { 18, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 10, 12, 8, 1, 100 },
- { 25, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 100 },
- { 25, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 100 },
- { 25, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 100 },
- { 0, 17, 0, 5, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 100 },
- { 0, 17, 7, 5, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 100 },
- { 25, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 12, 1, 100 },
- { 1, 0, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 100 },
- { 0, 17, 0, 5, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 100 },
- { 3, 0, 0, 0, 0, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 100 },
- { 3, 0, 0, 0, 1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 100 },
- { 3, 0, 0, 0, 2, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 100 },
- { 3, 0, 0, 0, 3, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 100 },
- { 3, 0, 0, 0, 4, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 100 },
- { 3, 0, 0, 0, 5, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 100 },
- { 3, 0, 0, 0, 6, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 100 },
- { 3, 0, 0, 0, 7, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 100 },
- { 3, 0, 0, 0, 8, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 100 },
- { 3, 0, 0, 0, 9, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 100 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 100 },
- { 25, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 1, 100 },
- { 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 100 },
- { 25, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 100 },
- { 25, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 100 },
- { 5, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 20 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 109 },
- { 1, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 109 },
- { 0, 17, 0, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 109 },
- { 1, 0, 9, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 109 },
- { 0, 17, 7, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 109 },
- { 25, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 109 },
- { 25, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 109 },
- { 0, 17, 0, 5, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 109 },
- { 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 129 },
- { 25, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 129 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 123 },
- { 0, 17, 0, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 123 },
- { 1, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 123 },
- { 0, 17, 7, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 123 },
- { 0, 17, 9, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 123 },
- { 3, 0, 0, 0, 0, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 123 },
- { 3, 0, 0, 0, 1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 123 },
- { 3, 0, 0, 0, 2, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 123 },
- { 3, 0, 0, 0, 3, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 123 },
- { 3, 0, 0, 0, 4, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 123 },
- { 3, 0, 0, 0, 5, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 123 },
- { 3, 0, 0, 0, 6, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 123 },
- { 3, 0, 0, 0, 7, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 123 },
- { 3, 0, 0, 0, 8, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 123 },
- { 3, 0, 0, 0, 9, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 123 },
- { 0, 17, 0, 5, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 107 },
- { 0, 17, 0, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 107 },
- { 1, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 107 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 107 },
- { 0, 17, 7, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 7, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 107 },
- { 1, 0, 0, 0, -1, 0, 16, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 107 },
- { 1, 0, 0, 0, -1, 0, 16, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 107 },
- { 1, 0, 9, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 107 },
- { 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 107 },
- { 0, 17, 230, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 107 },
- { 18, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 135 },
- { 1, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 135 },
- { 0, 17, 0, 5, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 135 },
- { 0, 17, 9, 5, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 135 },
- { 0, 17, 7, 5, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 135 },
- { 25, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 135 },
- { 25, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 135 },
- { 25, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 135 },
- { 3, 0, 0, 0, 0, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 135 },
- { 3, 0, 0, 0, 1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 135 },
- { 3, 0, 0, 0, 2, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 135 },
- { 3, 0, 0, 0, 3, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 135 },
- { 3, 0, 0, 0, 4, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 135 },
- { 3, 0, 0, 0, 5, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 135 },
- { 3, 0, 0, 0, 6, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 135 },
- { 3, 0, 0, 0, 7, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 135 },
- { 3, 0, 0, 0, 8, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 135 },
- { 3, 0, 0, 0, 9, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 135 },
- { 25, 0, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 135 },
- { 0, 17, 230, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 135 },
- { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 135 },
- { 18, 0, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 135 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 124 },
- { 1, 0, 0, 0, -1, 0, 16, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 124 },
- { 1, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 124 },
- { 0, 17, 0, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 124 },
- { 0, 17, 0, 5, -1, 0, 16, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 124 },
- { 1, 0, 0, 0, -1, 0, 16, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 124 },
- { 0, 17, 9, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 124 },
- { 0, 17, 7, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 124 },
- { 25, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 124 },
- { 3, 0, 0, 0, 0, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 124 },
- { 3, 0, 0, 0, 1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 124 },
- { 3, 0, 0, 0, 2, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 124 },
- { 3, 0, 0, 0, 3, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 124 },
- { 3, 0, 0, 0, 4, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 124 },
- { 3, 0, 0, 0, 5, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 124 },
- { 3, 0, 0, 0, 6, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 124 },
- { 3, 0, 0, 0, 7, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 124 },
- { 3, 0, 0, 0, 8, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 124 },
- { 3, 0, 0, 0, 9, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 124 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 122 },
- { 1, 0, 0, 0, -1, 0, 16, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 122 },
- { 1, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 122 },
- { 0, 17, 0, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 122 },
- { 1, 0, 0, 0, -1, 0, 16, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 122 },
- { 0, 17, 9, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 122 },
- { 0, 17, 7, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 122 },
- { 25, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 1, 122 },
- { 25, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 122 },
- { 25, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 0, 1, 122 },
- { 25, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 122 },
- { 25, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 122 },
- { 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 122 },
- { 0, 17, 0, 5, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 122 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 114 },
- { 1, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 114 },
- { 0, 17, 0, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 114 },
- { 0, 17, 9, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 114 },
- { 25, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 114 },
- { 25, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 114 },
- { 3, 0, 0, 0, 0, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 114 },
- { 3, 0, 0, 0, 1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 114 },
- { 3, 0, 0, 0, 2, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 114 },
- { 3, 0, 0, 0, 3, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 114 },
- { 3, 0, 0, 0, 4, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 114 },
- { 3, 0, 0, 0, 5, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 114 },
- { 3, 0, 0, 0, 6, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 114 },
- { 3, 0, 0, 0, 7, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 114 },
- { 3, 0, 0, 0, 8, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 114 },
- { 3, 0, 0, 0, 9, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 114 },
- { 25, 10, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 1, 33 },
- { 18, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 102 },
- { 0, 17, 0, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 102 },
- { 1, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 102 },
- { 1, 0, 9, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 102 },
- { 0, 17, 7, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 102 },
- { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 102 },
- { 25, 0, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 102 },
- { 3, 0, 0, 0, 0, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 102 },
- { 3, 0, 0, 0, 1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 102 },
- { 3, 0, 0, 0, 2, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 102 },
- { 3, 0, 0, 0, 3, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 102 },
- { 3, 0, 0, 0, 4, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 102 },
- { 3, 0, 0, 0, 5, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 102 },
- { 3, 0, 0, 0, 6, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 102 },
- { 3, 0, 0, 0, 7, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 102 },
- { 3, 0, 0, 0, 8, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 102 },
- { 3, 0, 0, 0, 9, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 102 },
- { 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 1, 126 },
- { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 1, 126 },
- { 0, 17, 0, 5, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 126 },
- { 1, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 4, 33, 4, 1, 126 },
- { 1, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 33, 4, 1, 126 },
- { 0, 17, 9, 5, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 1, 126 },
- { 3, 0, 0, 0, 0, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 126 },
- { 3, 0, 0, 0, 1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 126 },
- { 3, 0, 0, 0, 2, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 126 },
- { 3, 0, 0, 0, 3, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 126 },
- { 3, 0, 0, 0, 4, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 126 },
- { 3, 0, 0, 0, 5, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 126 },
- { 3, 0, 0, 0, 6, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 126 },
- { 3, 0, 0, 0, 7, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 126 },
- { 3, 0, 0, 0, 8, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 126 },
- { 3, 0, 0, 0, 9, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 126 },
- { 5, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 0, 1, 126 },
- { 25, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 126 },
- { 29, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 0, 1, 126 },
- { 18, 0, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 1, 126 },
- { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 142 },
- { 1, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 142 },
- { 0, 17, 0, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 142 },
- { 0, 17, 9, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 142 },
- { 0, 17, 7, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 142 },
- { 25, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 142 },
- { 14, 0, 0, 0, -1, 0, 16, 0, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 12, 7, 3, 125 },
- { 15, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 12, 6, 1, 125 },
- { 3, 0, 0, 0, 0, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 125 },
- { 3, 0, 0, 0, 1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 125 },
- { 3, 0, 0, 0, 2, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 125 },
- { 3, 0, 0, 0, 3, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 125 },
- { 3, 0, 0, 0, 4, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 125 },
- { 3, 0, 0, 0, 5, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 125 },
- { 3, 0, 0, 0, 6, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 125 },
- { 3, 0, 0, 0, 7, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 125 },
- { 3, 0, 0, 0, 8, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 125 },
- { 3, 0, 0, 0, 9, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 125 },
- { 5, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 125 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 125 },
- { 18, 0, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 154 },
- { 1, 0, 0, 0, -1, 0, 23, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 154 },
- { 1, 0, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 154 },
- { 1, 0, 0, 0, -1, 0, 23, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 154 },
- { 0, 17, 0, 5, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 154 },
- { 1, 0, 9, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 154 },
- { 0, 17, 9, 5, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 154 },
- { 18, 0, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 10, 12, 8, 1, 154 },
- { 0, 17, 7, 5, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 154 },
- { 25, 0, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 154 },
- { 25, 0, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 154 },
- { 3, 0, 0, 0, 0, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 154 },
- { 3, 0, 0, 0, 1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 154 },
- { 3, 0, 0, 0, 2, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 154 },
- { 3, 0, 0, 0, 3, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 154 },
- { 3, 0, 0, 0, 4, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 154 },
- { 3, 0, 0, 0, 5, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 154 },
- { 3, 0, 0, 0, 6, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 154 },
- { 3, 0, 0, 0, 7, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 154 },
- { 3, 0, 0, 0, 8, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 154 },
- { 3, 0, 0, 0, 9, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 154 },
- { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 150 },
- { 1, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 150 },
- { 0, 17, 0, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 150 },
- { 0, 17, 9, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 150 },
- { 25, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 1, 150 },
- { 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 141 },
- { 0, 17, 0, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 141 },
- { 0, 0, 0, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 141 },
- { 0, 17, 9, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 141 },
- { 1, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 141 },
- { 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 10, 12, 8, 1, 141 },
- { 25, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 1, 141 },
- { 25, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 141 },
- { 25, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 141 },
- { 25, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 141 },
- { 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 140 },
- { 0, 17, 0, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 140 },
- { 1, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 140 },
- { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 10, 12, 8, 1, 140 },
- { 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 10, 12, 8, 1, 140 },
- { 0, 17, 9, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 140 },
- { 25, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 140 },
- { 25, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 140 },
- { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 140 },
- { 25, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 1, 140 },
- { 18, 0, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 29 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 119 },
- { 18, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 133 },
- { 1, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 133 },
- { 0, 17, 0, 5, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 133 },
- { 0, 0, 9, 5, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 133 },
- { 25, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 133 },
- { 25, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 133 },
- { 3, 0, 0, 0, 0, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 133 },
- { 3, 0, 0, 0, 1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 133 },
- { 3, 0, 0, 0, 2, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 133 },
- { 3, 0, 0, 0, 3, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 133 },
- { 3, 0, 0, 0, 4, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 133 },
- { 3, 0, 0, 0, 5, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 133 },
- { 3, 0, 0, 0, 6, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 133 },
- { 3, 0, 0, 0, 7, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 133 },
- { 3, 0, 0, 0, 8, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 133 },
- { 3, 0, 0, 0, 9, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 133 },
- { 5, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 133 },
- { 25, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 1, 134 },
- { 25, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 0, 1, 134 },
- { 18, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 134 },
- { 0, 17, 0, 5, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 134 },
- { 1, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 134 },
- { 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 138 },
- { 0, 17, 0, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 138 },
- { 0, 17, 7, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 138 },
- { 0, 17, 9, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 138 },
- { 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 10, 12, 8, 1, 138 },
- { 3, 0, 0, 0, 0, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 138 },
- { 3, 0, 0, 0, 1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 138 },
- { 3, 0, 0, 0, 2, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 138 },
- { 3, 0, 0, 0, 3, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 138 },
- { 3, 0, 0, 0, 4, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 138 },
- { 3, 0, 0, 0, 5, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 138 },
- { 3, 0, 0, 0, 6, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 138 },
- { 3, 0, 0, 0, 7, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 138 },
- { 3, 0, 0, 0, 8, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 138 },
- { 3, 0, 0, 0, 9, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 138 },
- { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 143 },
- { 1, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 143 },
- { 0, 17, 0, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 143 },
- { 0, 17, 9, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 143 },
- { 3, 0, 0, 0, 0, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 143 },
- { 3, 0, 0, 0, 1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 143 },
- { 3, 0, 0, 0, 2, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 143 },
- { 3, 0, 0, 0, 3, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 143 },
- { 3, 0, 0, 0, 4, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 143 },
- { 3, 0, 0, 0, 5, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 143 },
- { 3, 0, 0, 0, 6, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 143 },
- { 3, 0, 0, 0, 7, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 143 },
- { 3, 0, 0, 0, 8, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 143 },
- { 3, 0, 0, 0, 9, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 143 },
- { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 145 },
- { 0, 17, 0, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 145 },
- { 1, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 145 },
- { 25, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 12, 1, 145 },
- { 18, 0, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 83 },
- { 5, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 16 },
- { 29, 10, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 16 },
- { 27, 4, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 1, 16 },
- { 25, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 16 },
- { 18, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 63 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 63 },
- { 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 63 },
- { 4, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 63 },
- { 4, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 63 },
- { 25, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 63 },
- { 25, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 63 },
- { 18, 0, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 157 },
- { 25, 0, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 157 },
- { 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 81 },
- { 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 0, 8, 1, 81 },
- { 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 1, 8, 1, 81 },
- { 10, 0, 0, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 4, 4, 0, 81 },
- { 10, 0, 0, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 0, 4, 0, 81 },
- { 10, 0, 0, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 1, 4, 0, 81 },
- { 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 127 },
- { 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 0, 8, 1, 127 },
- { 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 1, 8, 1, 127 },
- { 18, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 84 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 115 },
- { 3, 0, 0, 0, 0, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 115 },
- { 3, 0, 0, 0, 1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 115 },
- { 3, 0, 0, 0, 2, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 115 },
- { 3, 0, 0, 0, 3, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 115 },
- { 3, 0, 0, 0, 4, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 115 },
- { 3, 0, 0, 0, 5, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 115 },
- { 3, 0, 0, 0, 6, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 115 },
- { 3, 0, 0, 0, 7, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 115 },
- { 3, 0, 0, 0, 8, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 115 },
- { 3, 0, 0, 0, 9, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 115 },
- { 25, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 115 },
- { 18, 0, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 159 },
- { 3, 0, 0, 0, 0, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 159 },
- { 3, 0, 0, 0, 1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 159 },
- { 3, 0, 0, 0, 2, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 159 },
- { 3, 0, 0, 0, 3, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 159 },
- { 3, 0, 0, 0, 4, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 159 },
- { 3, 0, 0, 0, 5, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 159 },
- { 3, 0, 0, 0, 6, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 159 },
- { 3, 0, 0, 0, 7, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 159 },
- { 3, 0, 0, 0, 8, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 159 },
- { 3, 0, 0, 0, 9, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 159 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 104 },
- { 0, 17, 1, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 104 },
- { 25, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 104 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 108 },
- { 0, 17, 230, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 108 },
- { 25, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 108 },
- { 25, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 108 },
- { 25, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 108 },
- { 29, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 108 },
- { 17, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 108 },
- { 3, 0, 0, 0, 0, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 108 },
- { 3, 0, 0, 0, 1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 108 },
- { 3, 0, 0, 0, 2, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 108 },
- { 3, 0, 0, 0, 3, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 108 },
- { 3, 0, 0, 0, 4, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 108 },
- { 3, 0, 0, 0, 5, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 108 },
- { 3, 0, 0, 0, 6, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 108 },
- { 3, 0, 0, 0, 7, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 108 },
- { 3, 0, 0, 0, 8, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 108 },
- { 3, 0, 0, 0, 9, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 108 },
- { 5, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 108 },
- { 14, 0, 0, 0, -1, 0, 20, 0, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 12, 7, 3, 146 },
- { 15, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 12, 6, 1, 146 },
- { 5, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 146 },
- { 25, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 146 },
- { 25, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 146 },
- { 25, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 146 },
- { 18, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 99 },
- { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 99 },
- { 0, 17, 0, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 99 },
- { 1, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 99 },
- { 1, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 99 },
- { 0, 17, 0, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 99 },
- { 17, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 99 },
- { 17, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 5, 8, 1, 137 },
- { 17, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 5, 8, 1, 139 },
- { 25, 10, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 0, 1, 37 },
- { 17, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 5, 8, 1, 37 },
- { 0, 17, 0, 5, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 4, 4, 1, 155 },
- { 1, 0, 6, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 37 },
- { 18, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 137 },
- { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 137 },
- { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 137 },
- { 18, 0, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 137 },
- { 18, 0, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 8, 1, 155 },
- { 17, 0, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 12, 8, 1, 35 },
- { 18, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 14, 8, 1, 35 },
- { 18, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 34 },
- { 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 34 },
- { 18, 0, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 34 },
- { 18, 0, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 14, 8, 1, 35 },
- { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 8, 1, 34 },
- { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 5, 8, 1, 35 },
- { 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 139 },
- { 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 105 },
- { 29, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 105 },
- { 0, 17, 0, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 105 },
- { 0, 17, 1, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 105 },
- { 25, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 105 },
- { 10, 18, 0, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 21, 4, 2, 2 },
- { 0, 17, 0, 5, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 29, 0, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 0, 0, 0, -1, 0, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 0, 0, 0, -1, 0, 5, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 1, 0, 216, 0, -1, 0, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 2 },
- { 1, 0, 216, 0, -1, 0, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 2 },
- { 0, 17, 1, 5, -1, 0, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 1, 0, 226, 0, -1, 0, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 1, 2 },
- { 10, 18, 0, 5, -1, 0, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 21, 4, 0, 2 },
- { 0, 17, 220, 5, -1, 0, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 0, 17, 230, 5, -1, 0, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 1 },
- { 29, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 0, 17, 230, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 4 },
- { 5, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 5, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 14, 0, 0, 0, -1, 0, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 3, 2 },
- { 15, 0, 0, 0, -1, 0, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3, 2 },
- { 15, 0, 0, 0, -1, 0, 7, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3, 2 },
- { 26, 0, 0, 0, -1, 0, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 26, 10, 0, 0, -1, 0, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 14, 0, 0, 0, -1, 0, 9, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 3, 2 },
- { 15, 0, 0, 0, -1, 0, 9, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3, 2 },
- { 3, 2, 0, 0, 0, 0, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 3, 2 },
- { 3, 2, 0, 0, 1, 0, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 3, 2 },
- { 3, 2, 0, 0, 2, 0, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 3, 2 },
- { 3, 2, 0, 0, 3, 0, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 3, 2 },
- { 3, 2, 0, 0, 4, 0, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 3, 2 },
- { 3, 2, 0, 0, 5, 0, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 3, 2 },
- { 3, 2, 0, 0, 6, 0, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 3, 2 },
- { 3, 2, 0, 0, 7, 0, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 3, 2 },
- { 3, 2, 0, 0, 8, 0, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 3, 2 },
- { 3, 2, 0, 0, 9, 0, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 3, 2 },
- { 29, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 131 },
- { 0, 17, 0, 5, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 131 },
- { 25, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 131 },
- { 25, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 1, 131 },
- { 25, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 131 },
- { 18, 0, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 3 },
- { 0, 17, 230, 5, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 57 },
- { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 151 },
- { 0, 17, 230, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 151 },
- { 17, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 151 },
- { 3, 0, 0, 0, 0, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 151 },
- { 3, 0, 0, 0, 1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 151 },
- { 3, 0, 0, 0, 2, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 151 },
- { 3, 0, 0, 0, 3, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 151 },
- { 3, 0, 0, 0, 4, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 151 },
- { 3, 0, 0, 0, 5, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 151 },
- { 3, 0, 0, 0, 6, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 151 },
- { 3, 0, 0, 0, 7, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 151 },
- { 3, 0, 0, 0, 8, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 151 },
- { 3, 0, 0, 0, 9, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 151 },
- { 29, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 151 },
- { 18, 0, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 160 },
- { 0, 17, 230, 5, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 160 },
- { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 152 },
- { 0, 17, 230, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 152 },
- { 3, 0, 0, 0, 0, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 152 },
- { 3, 0, 0, 0, 1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 152 },
- { 3, 0, 0, 0, 2, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 152 },
- { 3, 0, 0, 0, 3, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 152 },
- { 3, 0, 0, 0, 4, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 152 },
- { 3, 0, 0, 0, 5, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 152 },
- { 3, 0, 0, 0, 6, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 152 },
- { 3, 0, 0, 0, 7, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 152 },
- { 3, 0, 0, 0, 8, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 152 },
- { 3, 0, 0, 0, 9, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 152 },
- { 27, 4, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 1, 152 },
- { 18, 0, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 27 },
- { 18, 1, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 113 },
- { 5, 1, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 113 },
- { 0, 17, 220, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 113 },
- { 14, 1, 0, 2, -1, 0, 18, 0, { {0, 34}, {0, 0}, {0, 0}, {0, 34} }, 0, 10, 12, 7, 3, 132 },
- { 15, 1, 0, 2, -1, 0, 18, 0, { {0, 0}, {0, -34}, {0, -34}, {0, 0} }, 0, 10, 12, 6, 1, 132 },
- { 0, 17, 230, 5, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 132 },
- { 0, 17, 7, 5, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1, 132 },
- { 17, 1, 0, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 1, 132 },
- { 3, 1, 0, 0, 0, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 132 },
- { 3, 1, 0, 0, 1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 132 },
- { 3, 1, 0, 0, 2, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 132 },
- { 3, 1, 0, 0, 3, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 132 },
- { 3, 1, 0, 0, 4, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 132 },
- { 3, 1, 0, 0, 5, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 132 },
- { 3, 1, 0, 0, 6, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 132 },
- { 3, 1, 0, 0, 7, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 132 },
- { 3, 1, 0, 0, 8, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 132 },
- { 3, 1, 0, 0, 9, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 1, 132 },
- { 25, 1, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 0, 1, 132 },
- { 5, 13, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 13, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 1, 2 },
- { 27, 13, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 1, 2 },
- { 5, 13, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 13, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 18, 13, 0, 0, -1, 0, 13, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 3, 8 },
- { 26, 10, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 8 },
- { 13, 0, 0, 0, -1, 0, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 0, 0 },
- { 5, 2, 0, 0, 0, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 2, 0, 0, 1, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 2, 0, 0, 2, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 2, 0, 0, 3, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 2, 0, 0, 4, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 2, 0, 0, 5, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 2, 0, 0, 6, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 2, 0, 0, 7, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 2, 0, 0, 8, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 2, 0, 0, 9, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 5, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
- { 29, 0, 0, 0, -1, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
- { 29, 0, 0, 0, -1, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 29, 10, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 1, 2 },
- { 29, 0, 0, 0, -1, 0, 12, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 3, 2 },
- { 29, 0, 0, 0, -1, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 3, 2 },
- { 29, 0, 0, 0, -1, 0, 12, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 29, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 2 },
- { 29, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 13, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
- { 29, 10, 0, 0, -1, 0, 21, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 3, 2 },
- { 29, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 10, 12, 7, 1, 2 },
- { 29, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 10, 12, 7, 1, 2 },
- { 29, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 1, 2 },
- { 29, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 6, 7, 28, 0, 1, 2 },
- { 29, 0, 0, 0, -1, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 34 },
- { 29, 0, 0, 0, -1, 0, 12, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 3, 2 },
- { 29, 0, 0, 0, -1, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 3, 2 },
- { 29, 0, 0, 0, -1, 0, 18, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
- { 29, 10, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 30, 0, 1, 2 },
- { 28, 10, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 31, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 30, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 23, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 30, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 30, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 30, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 30, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 30, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 12, 0, 1, 2 },
- { 29, 10, 0, 0, -1, 0, 24, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 30, 0, 1, 2 },
- { 3, 2, 0, 0, 0, 0, 23, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 3, 2 },
- { 3, 2, 0, 0, 1, 0, 23, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 3, 2 },
- { 3, 2, 0, 0, 2, 0, 23, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 3, 2 },
- { 3, 2, 0, 0, 3, 0, 23, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 3, 2 },
- { 3, 2, 0, 0, 4, 0, 23, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 3, 2 },
- { 3, 2, 0, 0, 5, 0, 23, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 3, 2 },
- { 3, 2, 0, 0, 6, 0, 23, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 3, 2 },
- { 3, 2, 0, 0, 7, 0, 23, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 3, 2 },
- { 3, 2, 0, 0, 8, 0, 23, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 3, 2 },
- { 3, 2, 0, 0, 9, 0, 23, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 3, 2 },
- { 13, 18, 0, 0, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 0 },
- { 18, 0, 0, 0, -1, 0, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 37 },
- { 18, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 37 },
- { 18, 0, 0, 0, -1, 0, 5, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 3, 37 },
- { 18, 0, 0, 0, -1, 0, 5, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 0, 37 },
- { 10, 18, 0, 5, -1, 0, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 0, 2 },
- { 0, 17, 0, 5, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 2, 1 },
- { 12, 0, 0, 0, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 0 }
+static constexpr Properties uc_properties[] = {
+ { 9, 18, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 0, 23, 0, 0, 2 },
+ { 9, 8, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 0, 19, 5, 0, 2 },
+ { 9, 7, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 2, 2, 39, 2, 0, 2 },
+ { 9, 8, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 3, 40, 5, 0, 2 },
+ { 9, 9, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 3, 40, 5, 0, 2 },
+ { 9, 7, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 1, 1, 38, 1, 0, 2 },
+ { 9, 7, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 0, 23, 0, 0, 2 },
+ { 9, 8, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 0, 23, 0, 0, 2 },
+ { 6, 9, 0, 0, -1, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 18, 37, 5, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 12, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 12, 3, 13, 0, 2 },
+ { 25, 4, 0, 0, -1, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 27, 4, 0, 0, -1, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 0, 2 },
+ { 25, 4, 0, 0, -1, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 11, 3, 13, 0, 2 },
+ { 21, 10, 0, 0, -1, 1, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 0, 2 },
+ { 22, 10, 0, 0, -1, -1, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 2, 13, 0, 2 },
+ { 26, 3, 0, 0, -1, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 0, 2 },
+ { 25, 6, 0, 0, -1, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 10, 11, 0, 2 },
+ { 20, 3, 0, 0, -1, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 11, 1, 2 },
+ { 25, 6, 0, 0, -1, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 10, 10, 1, 2 },
+ { 25, 6, 0, 0, -1, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 0, 2 },
+ { 3, 2, 0, 0, 0, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 2 },
+ { 3, 2, 0, 0, 1, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 2 },
+ { 3, 2, 0, 0, 2, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 2 },
+ { 3, 2, 0, 0, 3, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 2 },
+ { 3, 2, 0, 0, 4, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 2 },
+ { 3, 2, 0, 0, 5, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 2 },
+ { 3, 2, 0, 0, 6, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 2 },
+ { 3, 2, 0, 0, 7, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 2 },
+ { 3, 2, 0, 0, 8, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 2 },
+ { 3, 2, 0, 0, 9, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 2 },
+ { 25, 6, 0, 0, -1, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 11, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 10, 0, 0, 2 },
+ { 26, 10, 0, 0, -1, 2, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 26, 10, 0, 0, -1, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 26, 10, 0, 0, -1, -2, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 14, 0, 0, 0, -1, 0, 1, 4, 0, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 14, 7, 3, 3 },
+ { 21, 10, 0, 0, -1, 2, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 0, 2 },
+ { 22, 10, 0, 0, -1, -2, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 2, 13, 0, 2 },
+ { 28, 10, 0, 0, -1, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 19, 10, 0, 0, -1, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 17, 14, 0, 1, 2 },
+ { 15, 0, 0, 0, -1, 0, 1, 4, 0, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 26, 10, 0, 0, -1, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 0, 2 },
+ { 22, 10, 0, 0, -1, -2, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 0, 2 },
+ { 9, 7, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 3, 40, 3, 0, 2 },
+ { 6, 6, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 5, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 0, 1, 2 },
+ { 27, 4, 0, 0, -1, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
+ { 27, 4, 0, 0, -1, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 1, 2 },
+ { 27, 4, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 28, 10, 0, 0, -1, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
+ { 18, 0, 0, 0, -1, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 3, 3 },
+ { 23, 10, 0, 0, -1, 16, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
+ { 26, 10, 0, 0, -1, 0, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 10, 18, 0, 5, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 19, 4, 2, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
+ { 28, 10, 0, 0, -1, 0, 1, 4, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 29, 4, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
+ { 26, 4, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 1, 2 },
+ { 5, 2, 0, 0, 2, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 5, 2, 0, 0, 3, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 28, 10, 0, 0, -1, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 20, 0, 0, 2 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 743}, {0, 743}, {0, 775} }, 0, 10, 14, 6, 3, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 14, 14, 0, 1, 2 },
+ { 5, 2, 0, 0, 1, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 24, 10, 0, 0, -1, -16, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
+ { 5, 10, 0, 0, -1, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 0, 0, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 14, 7, 3, 3 },
+ { 26, 10, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 15, 0, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {1, 418}, {1, 415}, {0, 0} }, 0, 10, 14, 6, 4, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 0, 17, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, 121}, {0, 121}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 0, 17, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 0, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 17, { {1, 421}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, -232}, {0, -232}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 0, 80, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 0, 80, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 0, 80, { {0, 0}, {1, 500}, {1, 500}, {0, 0} }, 0, 10, 14, 6, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -121}, {0, 0}, {0, 0}, {0, -121} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, -300}, {0, -300}, {0, -268} }, 0, 10, 14, 6, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 195}, {0, 195}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 210}, {0, 0}, {0, 0}, {0, 210} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 206}, {0, 0}, {0, 0}, {0, 206} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 205}, {0, 0}, {0, 0}, {0, 205} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 79}, {0, 0}, {0, 0}, {0, 79} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 202}, {0, 0}, {0, 0}, {0, 202} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 203}, {0, 0}, {0, 0}, {0, 203} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 207}, {0, 0}, {0, 0}, {0, 207} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 97}, {0, 97}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 211}, {0, 0}, {0, 0}, {0, 211} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 209}, {0, 0}, {0, 0}, {0, 209} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 163}, {0, 163}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 213}, {0, 0}, {0, 0}, {0, 213} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 130}, {0, 130}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 214}, {0, 0}, {0, 0}, {0, 214} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 218}, {0, 0}, {0, 0}, {0, 218} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 217}, {0, 0}, {0, 0}, {0, 217} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 219}, {0, 0}, {0, 0}, {0, 219} }, 0, 10, 14, 7, 3, 3 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 56}, {0, 56}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 2}, {0, 0}, {0, 1}, {0, 2} }, 0, 10, 14, 7, 3, 3 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 1}, {0, -1}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, -2}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, -79}, {0, -79}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 511}, {1, 511}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {0, -97}, {0, 0}, {0, 0}, {0, -97} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {0, -56}, {0, 0}, {0, 0}, {0, -56} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 17, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 4, 3, 17, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 6, 3, 0, { {0, -130}, {0, 0}, {0, 0}, {0, -130} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 8, 3, 0, { {1, 1}, {0, 0}, {0, 0}, {1, 1} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 8, 3, 0, { {0, -163}, {0, 0}, {0, 0}, {0, -163} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 8, 3, 0, { {1, 3}, {0, 0}, {0, 0}, {1, 3} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {1, 5}, {1, 5}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {1, 7}, {1, 7}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 9, 3, 0, { {0, -195}, {0, 0}, {0, 0}, {0, -195} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 9, 3, 0, { {0, 69}, {0, 0}, {0, 0}, {0, 69} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 9, 3, 0, { {0, 71}, {0, 0}, {0, 0}, {0, 71} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 9, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {1, 9}, {1, 9}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {1, 11}, {1, 11}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {1, 13}, {1, 13}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, -210}, {0, -210}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, -206}, {0, -206}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, -205}, {0, -205}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, -202}, {0, -202}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, -203}, {0, -203}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {1, 15}, {1, 15}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {1, 17}, {1, 17}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, -207}, {0, -207}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {1, 19}, {1, 19}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {1, 21}, {1, 21}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, -209}, {0, -209}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, -211}, {0, -211}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {1, 23}, {1, 23}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {1, 25}, {1, 25}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {1, 27}, {1, 27}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {1, 29}, {1, 29}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, -213}, {0, -213}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, -214}, {0, -214}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {1, 31}, {1, 31}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, -218}, {0, -218}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {1, 33}, {1, 33}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {1, 35}, {1, 35}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, -69}, {0, -69}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, -217}, {0, -217}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, -71}, {0, -71}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, -219}, {0, -219}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {1, 37}, {1, 37}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {1, 39}, {1, 39}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 17, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 3, 3 },
+ { 17, 10, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 2 },
+ { 17, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 2 },
+ { 17, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 1, 2 },
+ { 28, 10, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 0, 1, 2 },
+ { 28, 10, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 0, 1, 2 },
+ { 17, 10, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 2 },
+ { 17, 10, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 20, 8, 1, 2 },
+ { 17, 0, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 2 },
+ { 28, 10, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 28, 10, 0, 0, -1, 0, 4, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 20, 0, 1, 2 },
+ { 28, 10, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 0, 1, 36 },
+ { 17, 10, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 2 },
+ { 28, 10, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 0, 1, 2 },
+ { 17, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 2 },
+ { 28, 10, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 0, 1, 2 },
+ { 0, 17, 230, 5, -1, 0, 1, 0, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 230, 5, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 232, 5, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 220, 5, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 216, 5, -1, 0, 1, 0, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 202, 5, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 220, 5, -1, 0, 1, 0, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 202, 5, -1, 0, 1, 0, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 1, 5, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 1, 5, -1, 0, 1, 0, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 230, 5, -1, 0, 1, 0, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 3, 1 },
+ { 0, 17, 240, 5, -1, 0, 1, 0, 204, { {0, 0}, {0, 84}, {0, 84}, {0, 116} }, 4, 4, 23, 4, 3, 1 },
+ { 0, 17, 230, 5, -1, 0, 4, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 220, 5, -1, 0, 4, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 0, 5, -1, 0, 6, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 6, 4, 2, 1 },
+ { 0, 17, 230, 5, -1, 0, 7, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 220, 5, -1, 0, 7, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 232, 5, -1, 0, 8, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 220, 5, -1, 0, 8, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 230, 5, -1, 0, 8, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 233, 5, -1, 0, 8, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 6, 4, 1, 1 },
+ { 0, 17, 234, 5, -1, 0, 7, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 6, 4, 1, 1 },
+ { 0, 17, 233, 5, -1, 0, 7, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 6, 4, 1, 1 },
+ { 0, 17, 234, 5, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 6, 4, 1, 1 },
+ { 0, 17, 233, 5, -1, 0, 4, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 6, 4, 1, 1 },
+ { 0, 17, 230, 5, -1, 0, 6, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 14, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 17, 10, 0, 0, -1, 0, 1, 3, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 3, 2 },
+ { 28, 10, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 4 },
+ { 13, 0, 0, 0, -1, 0, 0, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 0 },
+ { 17, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 0, 4 },
+ { 15, 0, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 130}, {0, 130}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 25, 10, 0, 0, -1, 0, 1, 3, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 10, 0, 0, 2 },
+ { 14, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 116}, {0, 0}, {0, 0}, {0, 116} }, 0, 10, 14, 7, 3, 4 },
+ { 28, 10, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 4 },
+ { 28, 10, 0, 0, -1, 0, 1, 3, 81, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 38}, {0, 0}, {0, 0}, {0, 38} }, 0, 10, 14, 7, 3, 4 },
+ { 25, 10, 0, 0, -1, 0, 1, 3, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 14, 14, 0, 3, 2 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 37}, {0, 0}, {0, 0}, {0, 37} }, 0, 10, 14, 7, 3, 4 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 64}, {0, 0}, {0, 0}, {0, 64} }, 0, 10, 14, 7, 3, 4 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 63}, {0, 0}, {0, 0}, {0, 63} }, 0, 10, 14, 7, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 503}, {1, 503}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 14, 0, 0, 0, -1, 0, 1, 0, 0, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 14, 7, 3, 4 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 14, 7, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, -38}, {0, -38}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, -37}, {0, -37}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 507}, {1, 507}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, -31}, {0, -31}, {0, 1} }, 0, 10, 14, 6, 4, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, -64}, {0, -64}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, -63}, {0, -63}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 14, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 8}, {0, 0}, {0, 0}, {0, 8} }, 0, 10, 14, 7, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, -62}, {0, -62}, {0, -30} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, -57}, {0, -57}, {0, -25} }, 0, 10, 14, 6, 3, 4 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 3, 4 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 81, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, -47}, {0, -47}, {0, -15} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, -54}, {0, -54}, {0, -22} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, -8}, {0, -8}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 14, 0, 0, 0, -1, 0, 6, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 6, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 46 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 46 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, -86}, {0, -86}, {0, -54} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, -80}, {0, -80}, {0, -48} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 7}, {0, 7}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, -116}, {0, -116}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 14, 0, 0, 0, -1, 0, 5, 3, 80, { {0, -60}, {0, 0}, {0, 0}, {0, -60} }, 0, 10, 14, 7, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 5, 3, 80, { {0, 0}, {0, -96}, {0, -96}, {0, -64} }, 0, 10, 14, 6, 3, 4 },
+ { 26, 10, 0, 0, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 4 },
+ { 14, 0, 0, 0, -1, 0, 7, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 14, 0, 0, 0, -1, 0, 7, 3, 80, { {0, -7}, {0, 0}, {0, 0}, {0, -7} }, 0, 10, 14, 7, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 14, 0, 0, 0, -1, 0, 8, 3, 0, { {0, -130}, {0, 0}, {0, 0}, {0, -130} }, 0, 10, 14, 7, 3, 4 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 17, { {0, 80}, {0, 0}, {0, 0}, {0, 80} }, 0, 10, 14, 7, 3, 5 },
+ { 14, 0, 0, 0, -1, 0, 1, 0, 17, { {0, 80}, {0, 0}, {0, 0}, {0, 80} }, 0, 10, 14, 7, 3, 5 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 80}, {0, 0}, {0, 0}, {0, 80} }, 0, 10, 14, 7, 3, 5 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 80}, {0, 0}, {0, 0}, {0, 80} }, 0, 10, 14, 7, 3, 5 },
+ { 14, 0, 0, 0, -1, 0, 1, 0, 0, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 14, 7, 3, 5 },
+ { 14, 0, 0, 0, -1, 0, 1, 0, 17, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 14, 7, 3, 5 },
+ { 15, 0, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 14, 6, 1, 5 },
+ { 15, 0, 0, 0, -1, 0, 1, 0, 17, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 14, 6, 1, 5 },
+ { 15, 0, 0, 0, -1, 0, 4, 3, 17, { {0, 0}, {0, -80}, {0, -80}, {0, 0} }, 0, 10, 14, 6, 1, 5 },
+ { 15, 0, 0, 0, -1, 0, 1, 0, 17, { {0, 0}, {0, -80}, {0, -80}, {0, 0} }, 0, 10, 14, 6, 1, 5 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, -80}, {0, -80}, {0, 0} }, 0, 10, 14, 6, 1, 5 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, -80}, {0, -80}, {0, 0} }, 0, 10, 14, 6, 1, 5 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 5 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 5 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 5 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 5 },
+ { 29, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 5 },
+ { 0, 17, 230, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 5 },
+ { 0, 17, 230, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 230, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 5 },
+ { 2, 17, 0, 5, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 5 },
+ { 14, 0, 0, 0, -1, 0, 6, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 5 },
+ { 15, 0, 0, 0, -1, 0, 6, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 5 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 5 },
+ { 15, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 5 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 15}, {0, 0}, {0, 0}, {0, 15} }, 0, 10, 14, 7, 0, 5 },
+ { 15, 0, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, -15}, {0, -15}, {0, 0} }, 0, 10, 14, 6, 1, 5 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 17, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 5 },
+ { 15, 0, 0, 0, -1, 0, 4, 3, 17, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 5 },
+ { 14, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 5 },
+ { 15, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 5 },
+ { 14, 0, 0, 0, -1, 0, 9, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 5 },
+ { 15, 0, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 5 },
+ { 14, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 5 },
+ { 15, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 5 },
+ { 14, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 5 },
+ { 15, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 5 },
+ { 14, 0, 0, 0, -1, 0, 12, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 5 },
+ { 15, 0, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 5 },
+ { 14, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 5 },
+ { 15, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 5 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 48}, {0, 0}, {0, 0}, {0, 48} }, 0, 10, 14, 7, 3, 6 },
+ { 17, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 6 },
+ { 25, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 0, 1, 6 },
+ { 25, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 11, 1, 6 },
+ { 25, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 14, 14, 0, 1, 6 },
+ { 15, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 1, 6 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, -48}, {0, -48}, {0, 0} }, 0, 10, 14, 6, 1, 6 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {1, 467}, {1, 464}, {0, 0} }, 0, 10, 14, 6, 3, 6 },
+ { 25, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 10, 12, 1, 6 },
+ { 20, 10, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 19, 0, 1, 6 },
+ { 29, 10, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 6 },
+ { 27, 4, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 1, 6 },
+ { 13, 1, 0, 0, -1, 0, 0, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 0 },
+ { 0, 17, 220, 5, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 7 },
+ { 0, 17, 230, 5, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 7 },
+ { 0, 17, 222, 5, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 7 },
+ { 0, 17, 220, 5, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 7 },
+ { 0, 17, 228, 5, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 7 },
+ { 0, 17, 10, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 7 },
+ { 0, 17, 11, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 7 },
+ { 0, 17, 12, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 7 },
+ { 0, 17, 13, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 7 },
+ { 0, 17, 14, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 7 },
+ { 0, 17, 15, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 7 },
+ { 0, 17, 16, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 7 },
+ { 0, 17, 17, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 7 },
+ { 0, 17, 18, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 7 },
+ { 0, 17, 19, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 7 },
+ { 0, 17, 19, 5, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 7 },
+ { 0, 17, 20, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 7 },
+ { 0, 17, 21, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 7 },
+ { 0, 17, 22, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 7 },
+ { 20, 1, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 7 },
+ { 0, 17, 23, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 7 },
+ { 25, 1, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 7 },
+ { 0, 17, 24, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 7 },
+ { 0, 17, 25, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 7 },
+ { 25, 1, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 0, 1, 7 },
+ { 0, 17, 18, 5, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 7 },
+ { 18, 1, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 9, 15, 8, 1, 7 },
+ { 18, 1, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 9, 15, 8, 1, 7 },
+ { 25, 1, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 7 },
+ { 25, 1, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 14, 14, 0, 1, 7 },
+ { 10, 5, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 16, 13, 9, 0, 8 },
+ { 10, 5, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 16, 13, 9, 0, 8 },
+ { 10, 5, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 16, 13, 9, 0, 2 },
+ { 26, 10, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 8 },
+ { 26, 13, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 8 },
+ { 25, 4, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 8 },
+ { 27, 13, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 8 },
+ { 25, 6, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 10, 11, 1, 2 },
+ { 25, 13, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 10, 11, 1, 8 },
+ { 29, 10, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 8 },
+ { 0, 17, 230, 5, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 8 },
+ { 0, 17, 230, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 8 },
+ { 0, 17, 30, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 8 },
+ { 0, 17, 31, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 8 },
+ { 0, 17, 32, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 8 },
+ { 25, 13, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 0, 1, 2 },
+ { 10, 13, 0, 5, -1, 0, 15, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 23, 4, 0, 8 },
+ { 25, 13, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 12, 1, 8 },
+ { 25, 13, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 12, 1, 8 },
+ { 25, 13, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 12, 1, 2 },
+ { 18, 13, 0, 2, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 18, 13, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 18, 13, 0, 3, -1, 0, 1, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 18, 13, 0, 2, -1, 0, 1, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 18, 13, 0, 3, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 18, 13, 0, 2, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 18, 13, 0, 2, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 17, 13, 0, 1, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 2 },
+ { 0, 17, 27, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 28, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 29, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 30, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 31, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 32, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 33, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 34, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 230, 5, -1, 0, 4, 3, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 220, 5, -1, 0, 4, 3, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 220, 5, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 8 },
+ { 0, 17, 230, 5, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 8 },
+ { 0, 17, 220, 5, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 8 },
+ { 0, 17, 220, 5, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 8 },
+ { 3, 5, 0, 0, 0, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 8 },
+ { 3, 5, 0, 0, 1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 8 },
+ { 3, 5, 0, 0, 2, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 8 },
+ { 3, 5, 0, 0, 3, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 8 },
+ { 3, 5, 0, 0, 4, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 8 },
+ { 3, 5, 0, 0, 5, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 8 },
+ { 3, 5, 0, 0, 6, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 8 },
+ { 3, 5, 0, 0, 7, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 8 },
+ { 3, 5, 0, 0, 8, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 8 },
+ { 3, 5, 0, 0, 9, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 8 },
+ { 25, 4, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 8 },
+ { 25, 5, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 8 },
+ { 25, 5, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 13, 9, 1, 8 },
+ { 25, 13, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 8 },
+ { 18, 13, 0, 2, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 0, 17, 35, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 18, 13, 0, 3, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 3, 8 },
+ { 18, 13, 0, 2, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 3, 8 },
+ { 18, 13, 0, 2, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 18, 13, 0, 3, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 25, 13, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 12, 1, 8 },
+ { 0, 17, 230, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 8 },
+ { 10, 5, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 16, 13, 9, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 8 },
+ { 0, 17, 220, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 8 },
+ { 17, 13, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 18, 13, 0, 3, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 3, 2, 0, 0, 0, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 8 },
+ { 3, 2, 0, 0, 1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 8 },
+ { 3, 2, 0, 0, 2, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 8 },
+ { 3, 2, 0, 0, 3, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 8 },
+ { 3, 2, 0, 0, 4, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 8 },
+ { 3, 2, 0, 0, 5, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 8 },
+ { 3, 2, 0, 0, 6, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 8 },
+ { 3, 2, 0, 0, 7, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 8 },
+ { 3, 2, 0, 0, 8, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 8 },
+ { 3, 2, 0, 0, 9, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 8 },
+ { 29, 13, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 8 },
+ { 18, 13, 0, 2, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 25, 13, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 12, 1, 9 },
+ { 25, 13, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 9 },
+ { 13, 13, 0, 0, -1, 0, 0, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 0 },
+ { 10, 13, 0, 5, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 10, 14, 4, 0, 9 },
+ { 18, 13, 0, 3, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 9 },
+ { 0, 17, 36, 5, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 9 },
+ { 18, 13, 0, 2, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 9 },
+ { 18, 13, 0, 2, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 9 },
+ { 18, 13, 0, 3, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 9 },
+ { 0, 17, 230, 5, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 9 },
+ { 0, 17, 220, 5, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 9 },
+ { 18, 13, 0, 2, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 18, 13, 0, 3, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 18, 13, 0, 3, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 18, 13, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 10 },
+ { 0, 17, 0, 5, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 10 },
+ { 18, 13, 0, 0, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 10 },
+ { 3, 1, 0, 0, 0, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 66 },
+ { 3, 1, 0, 0, 1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 66 },
+ { 3, 1, 0, 0, 2, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 66 },
+ { 3, 1, 0, 0, 3, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 66 },
+ { 3, 1, 0, 0, 4, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 66 },
+ { 3, 1, 0, 0, 5, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 66 },
+ { 3, 1, 0, 0, 6, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 66 },
+ { 3, 1, 0, 0, 7, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 66 },
+ { 3, 1, 0, 0, 8, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 66 },
+ { 3, 1, 0, 0, 9, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 66 },
+ { 18, 1, 0, 2, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 66 },
+ { 0, 17, 230, 5, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 66 },
+ { 0, 17, 220, 5, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 66 },
+ { 17, 1, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 66 },
+ { 29, 10, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 66 },
+ { 25, 10, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 66 },
+ { 25, 10, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 10, 11, 1, 66 },
+ { 25, 10, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 12, 1, 66 },
+ { 17, 1, 0, 1, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 66 },
+ { 0, 17, 220, 5, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 66 },
+ { 27, 1, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 1, 66 },
+ { 18, 1, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 82 },
+ { 0, 17, 230, 5, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 82 },
+ { 17, 1, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 82 },
+ { 25, 1, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 82 },
+ { 25, 1, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 12, 1, 82 },
+ { 18, 1, 0, 3, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 95 },
+ { 18, 1, 0, 2, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 95 },
+ { 0, 17, 220, 5, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 95 },
+ { 25, 1, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 95 },
+ { 18, 13, 0, 2, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 9 },
+ { 18, 13, 0, 0, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 9 },
+ { 18, 13, 0, 3, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 9 },
+ { 18, 13, 0, 3, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 18, 13, 0, 1, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 18, 13, 0, 2, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 18, 13, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 28, 13, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 8 },
+ { 10, 5, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 16, 13, 9, 0, 8 },
+ { 0, 17, 230, 5, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 8 },
+ { 0, 17, 220, 5, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 8 },
+ { 18, 13, 0, 2, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 18, 13, 0, 2, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 18, 13, 0, 3, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 18, 13, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 18, 13, 0, 3, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 18, 13, 0, 2, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 18, 13, 0, 2, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 18, 13, 0, 3, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 18, 13, 0, 2, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 17, 13, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 0, 17, 220, 5, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 8 },
+ { 0, 17, 230, 5, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 8 },
+ { 10, 5, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 16, 13, 9, 0, 2 },
+ { 0, 17, 220, 5, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 8 },
+ { 0, 17, 230, 5, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 8 },
+ { 0, 17, 220, 5, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 8 },
+ { 0, 17, 27, 5, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 8 },
+ { 0, 17, 28, 5, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 8 },
+ { 0, 17, 29, 5, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 8 },
+ { 0, 17, 230, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 8 },
+ { 0, 17, 0, 5, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 11 },
+ { 0, 17, 0, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 11 },
+ { 1, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 11 },
+ { 18, 0, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 11 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 11 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 11 },
+ { 0, 17, 0, 5, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 11 },
+ { 1, 0, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 11 },
+ { 0, 17, 7, 5, -1, 0, 1, 3, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 11 },
+ { 0, 17, 9, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 11 },
+ { 1, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 11 },
+ { 0, 17, 220, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 3, 11 },
+ { 25, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 2 },
+ { 3, 0, 0, 0, 0, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 11 },
+ { 3, 0, 0, 0, 1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 11 },
+ { 3, 0, 0, 0, 2, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 11 },
+ { 3, 0, 0, 0, 3, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 11 },
+ { 3, 0, 0, 0, 4, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 11 },
+ { 3, 0, 0, 0, 5, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 11 },
+ { 3, 0, 0, 0, 6, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 11 },
+ { 3, 0, 0, 0, 7, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 11 },
+ { 3, 0, 0, 0, 8, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 11 },
+ { 3, 0, 0, 0, 9, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 11 },
+ { 25, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 11 },
+ { 17, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 11 },
+ { 18, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 11 },
+ { 18, 0, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 11 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 11 },
+ { 18, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 11 },
+ { 18, 0, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 11 },
+ { 18, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 11 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 12 },
+ { 0, 17, 0, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 12 },
+ { 1, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 12 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 12 },
+ { 0, 17, 7, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 12 },
+ { 18, 0, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 12 },
+ { 1, 0, 0, 0, -1, 0, 1, 3, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 12 },
+ { 1, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 12 },
+ { 0, 17, 9, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 12 },
+ { 18, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 12 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 3, 12 },
+ { 3, 0, 0, 0, 0, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 12 },
+ { 3, 0, 0, 0, 1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 12 },
+ { 3, 0, 0, 0, 2, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 12 },
+ { 3, 0, 0, 0, 3, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 12 },
+ { 3, 0, 0, 0, 4, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 12 },
+ { 3, 0, 0, 0, 5, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 12 },
+ { 3, 0, 0, 0, 6, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 12 },
+ { 3, 0, 0, 0, 7, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 12 },
+ { 3, 0, 0, 0, 8, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 12 },
+ { 3, 0, 0, 0, 9, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 12 },
+ { 27, 4, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 12 },
+ { 5, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 12 },
+ { 5, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 12 },
+ { 29, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 12 },
+ { 27, 4, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 1, 12 },
+ { 18, 0, 0, 0, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 12 },
+ { 25, 0, 0, 0, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 12 },
+ { 0, 17, 230, 5, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 12 },
+ { 0, 17, 0, 5, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 13 },
+ { 0, 17, 0, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 13 },
+ { 1, 0, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 13 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 13 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 3, 13 },
+ { 0, 17, 7, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 13 },
+ { 1, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 13 },
+ { 0, 17, 9, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 13 },
+ { 0, 17, 0, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 13 },
+ { 3, 0, 0, 0, 0, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 13 },
+ { 3, 0, 0, 0, 1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 13 },
+ { 3, 0, 0, 0, 2, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 13 },
+ { 3, 0, 0, 0, 3, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 13 },
+ { 3, 0, 0, 0, 4, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 13 },
+ { 3, 0, 0, 0, 5, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 13 },
+ { 3, 0, 0, 0, 6, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 13 },
+ { 3, 0, 0, 0, 7, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 13 },
+ { 3, 0, 0, 0, 8, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 13 },
+ { 3, 0, 0, 0, 9, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 13 },
+ { 25, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 13 },
+ { 0, 17, 0, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 14 },
+ { 1, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 14 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 14 },
+ { 18, 0, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 14 },
+ { 0, 17, 7, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 14 },
+ { 0, 17, 9, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 14 },
+ { 0, 17, 0, 5, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 14 },
+ { 3, 0, 0, 0, 0, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 14 },
+ { 3, 0, 0, 0, 1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 14 },
+ { 3, 0, 0, 0, 2, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 14 },
+ { 3, 0, 0, 0, 3, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 14 },
+ { 3, 0, 0, 0, 4, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 14 },
+ { 3, 0, 0, 0, 5, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 14 },
+ { 3, 0, 0, 0, 6, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 14 },
+ { 3, 0, 0, 0, 7, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 14 },
+ { 3, 0, 0, 0, 8, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 14 },
+ { 3, 0, 0, 0, 9, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 14 },
+ { 25, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 14 },
+ { 27, 4, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 1, 14 },
+ { 18, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 14 },
+ { 0, 17, 0, 5, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 14 },
+ { 0, 17, 0, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 15 },
+ { 1, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 15 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 15 },
+ { 18, 0, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 15 },
+ { 0, 17, 7, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 15 },
+ { 1, 0, 0, 0, -1, 0, 1, 3, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 15 },
+ { 0, 17, 0, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 15 },
+ { 1, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 15 },
+ { 0, 17, 9, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 15 },
+ { 0, 17, 0, 5, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 15 },
+ { 0, 17, 0, 5, -1, 0, 1, 3, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 15 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 3, 15 },
+ { 3, 0, 0, 0, 0, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 15 },
+ { 3, 0, 0, 0, 1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 15 },
+ { 3, 0, 0, 0, 2, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 15 },
+ { 3, 0, 0, 0, 3, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 15 },
+ { 3, 0, 0, 0, 4, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 15 },
+ { 3, 0, 0, 0, 5, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 15 },
+ { 3, 0, 0, 0, 6, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 15 },
+ { 3, 0, 0, 0, 7, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 15 },
+ { 3, 0, 0, 0, 8, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 15 },
+ { 3, 0, 0, 0, 9, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 15 },
+ { 29, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 15 },
+ { 5, 0, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 15 },
+ { 0, 17, 0, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 16 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 16 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 16 },
+ { 18, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 16 },
+ { 1, 0, 0, 0, -1, 0, 1, 3, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 16 },
+ { 1, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 16 },
+ { 1, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 16 },
+ { 0, 17, 9, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 16 },
+ { 18, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 16 },
+ { 3, 0, 0, 0, 0, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 16 },
+ { 3, 0, 0, 0, 1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 16 },
+ { 3, 0, 0, 0, 2, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 16 },
+ { 3, 0, 0, 0, 3, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 16 },
+ { 3, 0, 0, 0, 4, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 16 },
+ { 3, 0, 0, 0, 5, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 16 },
+ { 3, 0, 0, 0, 6, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 16 },
+ { 3, 0, 0, 0, 7, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 16 },
+ { 3, 0, 0, 0, 8, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 16 },
+ { 3, 0, 0, 0, 9, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 16 },
+ { 5, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 16 },
+ { 29, 10, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 16 },
+ { 27, 4, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 1, 16 },
+ { 0, 17, 0, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 17 },
+ { 1, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 17 },
+ { 0, 17, 0, 5, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 17 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 17 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 17 },
+ { 0, 17, 7, 5, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 17 },
+ { 18, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 17 },
+ { 0, 17, 0, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 17 },
+ { 0, 17, 0, 5, -1, 0, 1, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 17 },
+ { 0, 17, 9, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 17 },
+ { 0, 17, 84, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 17 },
+ { 0, 17, 91, 5, -1, 0, 1, 3, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 17 },
+ { 18, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 17 },
+ { 18, 0, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 17 },
+ { 0, 17, 0, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 17 },
+ { 3, 0, 0, 0, 0, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 17 },
+ { 3, 0, 0, 0, 1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 17 },
+ { 3, 0, 0, 0, 2, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 17 },
+ { 3, 0, 0, 0, 3, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 17 },
+ { 3, 0, 0, 0, 4, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 17 },
+ { 3, 0, 0, 0, 5, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 17 },
+ { 3, 0, 0, 0, 6, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 17 },
+ { 3, 0, 0, 0, 7, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 17 },
+ { 3, 0, 0, 0, 8, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 17 },
+ { 3, 0, 0, 0, 9, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 17 },
+ { 25, 0, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 20, 0, 1, 17 },
+ { 5, 10, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 17 },
+ { 29, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 17 },
+ { 18, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 18 },
+ { 0, 17, 0, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 18 },
+ { 1, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 18 },
+ { 25, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 20, 0, 1, 18 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 18 },
+ { 0, 17, 7, 5, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 18 },
+ { 18, 0, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 18 },
+ { 0, 0, 0, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 18 },
+ { 1, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 18 },
+ { 1, 0, 0, 0, -1, 0, 1, 3, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 18 },
+ { 0, 17, 0, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 18 },
+ { 0, 17, 9, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 18 },
+ { 18, 0, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 18 },
+ { 0, 17, 0, 5, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 18 },
+ { 3, 0, 0, 0, 0, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 18 },
+ { 3, 0, 0, 0, 1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 18 },
+ { 3, 0, 0, 0, 2, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 18 },
+ { 3, 0, 0, 0, 3, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 18 },
+ { 3, 0, 0, 0, 4, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 18 },
+ { 3, 0, 0, 0, 5, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 18 },
+ { 3, 0, 0, 0, 6, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 18 },
+ { 3, 0, 0, 0, 7, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 18 },
+ { 3, 0, 0, 0, 8, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 18 },
+ { 3, 0, 0, 0, 9, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 18 },
+ { 18, 0, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 18 },
+ { 1, 0, 0, 0, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 18 },
+ { 0, 17, 0, 5, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 19 },
+ { 0, 17, 0, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 19 },
+ { 1, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 19 },
+ { 18, 0, 0, 0, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 19 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 19 },
+ { 18, 0, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 19 },
+ { 0, 17, 9, 5, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 19 },
+ { 18, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 19 },
+ { 1, 0, 0, 0, -1, 0, 1, 3, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 19 },
+ { 0, 17, 0, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 19 },
+ { 0, 17, 0, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 19 },
+ { 1, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 19 },
+ { 0, 17, 9, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 19 },
+ { 18, 0, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 10, 14, 8, 1, 19 },
+ { 29, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 19 },
+ { 18, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 19 },
+ { 5, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 19 },
+ { 18, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 19 },
+ { 3, 0, 0, 0, 0, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 19 },
+ { 3, 0, 0, 0, 1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 19 },
+ { 3, 0, 0, 0, 2, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 19 },
+ { 3, 0, 0, 0, 3, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 19 },
+ { 3, 0, 0, 0, 4, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 19 },
+ { 3, 0, 0, 0, 5, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 19 },
+ { 3, 0, 0, 0, 6, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 19 },
+ { 3, 0, 0, 0, 7, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 19 },
+ { 3, 0, 0, 0, 8, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 19 },
+ { 3, 0, 0, 0, 9, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 19 },
+ { 5, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 19 },
+ { 29, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 19 },
+ { 0, 17, 0, 5, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 20 },
+ { 1, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 20 },
+ { 18, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 20 },
+ { 0, 17, 9, 5, -1, 0, 4, 3, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 20 },
+ { 1, 0, 0, 0, -1, 0, 4, 3, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 20 },
+ { 0, 17, 0, 5, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 20 },
+ { 1, 0, 0, 0, -1, 0, 4, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 20 },
+ { 3, 0, 0, 0, 0, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 20 },
+ { 3, 0, 0, 0, 1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 20 },
+ { 3, 0, 0, 0, 2, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 20 },
+ { 3, 0, 0, 0, 3, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 20 },
+ { 3, 0, 0, 0, 4, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 20 },
+ { 3, 0, 0, 0, 5, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 20 },
+ { 3, 0, 0, 0, 6, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 20 },
+ { 3, 0, 0, 0, 7, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 20 },
+ { 3, 0, 0, 0, 8, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 20 },
+ { 3, 0, 0, 0, 9, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 20 },
+ { 25, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 20 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 1, 21 },
+ { 0, 17, 0, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 21 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 0, 35, 8, 3, 21 },
+ { 0, 17, 103, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 21 },
+ { 0, 17, 9, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 21 },
+ { 27, 4, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 1, 2 },
+ { 17, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 1, 21 },
+ { 0, 17, 107, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 21 },
+ { 25, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 21 },
+ { 3, 0, 0, 0, 0, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 21 },
+ { 3, 0, 0, 0, 1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 21 },
+ { 3, 0, 0, 0, 2, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 21 },
+ { 3, 0, 0, 0, 3, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 21 },
+ { 3, 0, 0, 0, 4, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 21 },
+ { 3, 0, 0, 0, 5, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 21 },
+ { 3, 0, 0, 0, 6, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 21 },
+ { 3, 0, 0, 0, 7, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 21 },
+ { 3, 0, 0, 0, 8, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 21 },
+ { 3, 0, 0, 0, 9, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 21 },
+ { 25, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 21 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 1, 22 },
+ { 18, 0, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 1, 22 },
+ { 0, 17, 0, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 22 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 0, 35, 8, 3, 22 },
+ { 0, 17, 118, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 22 },
+ { 0, 17, 9, 5, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 22 },
+ { 17, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 1, 22 },
+ { 0, 17, 122, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 22 },
+ { 0, 17, 0, 5, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 22 },
+ { 3, 0, 0, 0, 0, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 22 },
+ { 3, 0, 0, 0, 1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 22 },
+ { 3, 0, 0, 0, 2, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 22 },
+ { 3, 0, 0, 0, 3, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 22 },
+ { 3, 0, 0, 0, 4, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 22 },
+ { 3, 0, 0, 0, 5, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 22 },
+ { 3, 0, 0, 0, 6, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 22 },
+ { 3, 0, 0, 0, 7, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 22 },
+ { 3, 0, 0, 0, 8, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 22 },
+ { 3, 0, 0, 0, 9, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 22 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 3, 22 },
+ { 18, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 1, 22 },
+ { 18, 0, 0, 0, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 23 },
+ { 29, 0, 0, 0, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 20, 0, 1, 23 },
+ { 25, 0, 0, 0, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 20, 0, 1, 23 },
+ { 25, 0, 0, 0, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 23 },
+ { 25, 0, 0, 0, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 0, 1, 23 },
+ { 25, 0, 0, 0, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 23 },
+ { 25, 0, 0, 0, -1, 0, 2, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 0, 3, 23 },
+ { 25, 0, 0, 0, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 0, 1, 23 },
+ { 29, 0, 0, 0, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 23 },
+ { 0, 17, 220, 5, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 23 },
+ { 3, 0, 0, 0, 0, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 23 },
+ { 3, 0, 0, 0, 1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 23 },
+ { 3, 0, 0, 0, 2, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 23 },
+ { 3, 0, 0, 0, 3, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 23 },
+ { 3, 0, 0, 0, 4, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 23 },
+ { 3, 0, 0, 0, 5, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 23 },
+ { 3, 0, 0, 0, 6, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 23 },
+ { 3, 0, 0, 0, 7, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 23 },
+ { 3, 0, 0, 0, 8, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 23 },
+ { 3, 0, 0, 0, 9, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 23 },
+ { 5, 0, 0, 0, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 23 },
+ { 29, 0, 0, 0, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 23 },
+ { 0, 17, 216, 5, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 23 },
+ { 21, 10, 0, 0, -1, 1, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 23 },
+ { 22, 10, 0, 0, -1, -1, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 1, 23 },
+ { 1, 0, 0, 0, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 23 },
+ { 18, 0, 0, 0, -1, 0, 2, 3, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 3, 23 },
+ { 18, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 23 },
+ { 18, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 23 },
+ { 0, 17, 129, 5, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 23 },
+ { 0, 17, 130, 5, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 23 },
+ { 0, 17, 0, 5, -1, 0, 2, 3, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 3, 23 },
+ { 0, 17, 132, 5, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 23 },
+ { 0, 17, 0, 5, -1, 0, 2, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 3, 23 },
+ { 0, 17, 0, 5, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 23 },
+ { 1, 0, 0, 0, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 19, 4, 1, 23 },
+ { 0, 17, 230, 5, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 23 },
+ { 0, 17, 9, 5, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 23 },
+ { 18, 0, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 23 },
+ { 0, 17, 0, 5, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 23 },
+ { 0, 17, 0, 5, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 23 },
+ { 29, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 23 },
+ { 29, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 23 },
+ { 0, 17, 220, 5, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 23 },
+ { 29, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 23 },
+ { 25, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 20, 0, 1, 23 },
+ { 25, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 23 },
+ { 25, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 20, 0, 1, 23 },
+ { 25, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 23 },
+ { 29, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 25, 0, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 0, 1, 23 },
+ { 18, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 1, 24 },
+ { 18, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 1, 24 },
+ { 18, 0, 0, 0, -1, 0, 4, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 1, 24 },
+ { 1, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 4, 35, 4, 1, 24 },
+ { 1, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 4, 35, 4, 1, 24 },
+ { 0, 17, 0, 5, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 24 },
+ { 0, 17, 0, 5, -1, 0, 4, 3, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 24 },
+ { 1, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 35, 4, 1, 24 },
+ { 0, 17, 0, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 24 },
+ { 0, 17, 7, 5, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 24 },
+ { 0, 17, 9, 5, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 24 },
+ { 0, 17, 9, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 24 },
+ { 1, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 35, 4, 1, 24 },
+ { 3, 0, 0, 0, 0, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 2, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 3, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 4, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 5, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 6, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 7, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 8, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 9, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 25, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 24 },
+ { 25, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 24 },
+ { 0, 17, 220, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 24 },
+ { 3, 0, 0, 0, 0, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 2, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 3, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 4, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 5, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 6, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 7, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 8, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 9, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 1, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 4, 35, 4, 1, 24 },
+ { 0, 17, 0, 5, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 24 },
+ { 29, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 0, 1, 24 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 7264}, {0, 0}, {0, 0}, {0, 7264} }, 0, 10, 14, 7, 0, 25 },
+ { 14, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 7264}, {0, 0}, {0, 0}, {0, 7264} }, 0, 10, 14, 7, 3, 25 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 3008}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 25 },
+ { 15, 0, 0, 0, -1, 0, 6, 3, 0, { {0, 0}, {0, 3008}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 25 },
+ { 15, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 3008}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 25 },
+ { 25, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 17, 0, 0, 0, -1, 0, 8, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 3, 25 },
+ { 15, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 3008}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 25 },
+ { 18, 0, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 9, 10, 27, 8, 1, 26 },
+ { 18, 0, 0, 0, -1, 0, 11, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 9, 10, 27, 8, 1, 26 },
+ { 18, 0, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 9, 10, 27, 8, 0, 26 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 10, 10, 28, 8, 0, 26 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 10, 10, 28, 8, 1, 26 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 10, 10, 28, 8, 1, 26 },
+ { 18, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 10, 10, 28, 8, 1, 26 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 11, 10, 29, 8, 1, 26 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 11, 10, 29, 8, 1, 26 },
+ { 18, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 11, 10, 29, 8, 1, 26 },
+ { 18, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 27 },
+ { 18, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 27 },
+ { 0, 17, 230, 5, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 27 },
+ { 0, 17, 230, 5, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 27 },
+ { 25, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 27 },
+ { 25, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 27 },
+ { 25, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 12, 1, 27 },
+ { 25, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 27 },
+ { 5, 0, 0, 0, 1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 27 },
+ { 5, 0, 0, 0, 2, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 27 },
+ { 5, 0, 0, 0, 3, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 27 },
+ { 5, 0, 0, 0, 4, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 27 },
+ { 5, 0, 0, 0, 5, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 27 },
+ { 5, 0, 0, 0, 6, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 27 },
+ { 5, 0, 0, 0, 7, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 27 },
+ { 5, 0, 0, 0, 8, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 27 },
+ { 5, 0, 0, 0, 9, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 27 },
+ { 5, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 27 },
+ { 29, 10, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 27 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 41}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 43}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 45}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 47}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 49}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 51}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 53}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 55}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 57}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 59}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 61}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 63}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 65}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 67}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 69}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 71}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 73}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 75}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 77}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 79}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 81}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 83}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 85}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 87}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 89}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 91}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 93}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 95}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 97}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 99}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 101}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 103}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 105}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 107}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 109}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 111}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 113}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 115}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 117}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 119}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 121}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 123}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 125}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 127}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 129}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 131}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 133}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 135}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 137}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 139}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 141}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 143}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 145}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 147}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 149}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 151}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 153}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 155}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 157}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 159}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 161}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 163}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 165}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 167}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 169}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 171}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 173}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 175}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 177}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 179}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 181}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 183}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 185}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 187}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 189}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 191}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 193}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 195}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 197}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {1, 199}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 8}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 14, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 8}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, -8}, {0, -8}, {0, -8} }, 0, 10, 14, 6, 3, 28 },
+ { 20, 10, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 29 },
+ { 18, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 29 },
+ { 29, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 29 },
+ { 25, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 12, 1, 29 },
+ { 18, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 29 },
+ { 6, 9, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 18, 19, 5, 0, 30 },
+ { 18, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 30 },
+ { 21, 10, 0, 0, -1, 1, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 30 },
+ { 22, 10, 0, 0, -1, -1, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 1, 30 },
+ { 18, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 31 },
+ { 25, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 2 },
+ { 4, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 31 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 31 },
+ { 18, 0, 0, 0, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 42 },
+ { 18, 0, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 42 },
+ { 0, 17, 0, 5, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 42 },
+ { 0, 17, 9, 5, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 42 },
+ { 1, 0, 9, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 42 },
+ { 18, 0, 0, 0, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 43 },
+ { 0, 17, 0, 5, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 43 },
+ { 1, 0, 9, 0, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 43 },
+ { 25, 0, 0, 0, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 2 },
+ { 18, 0, 0, 0, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 44 },
+ { 0, 17, 0, 5, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 44 },
+ { 18, 0, 0, 0, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 45 },
+ { 0, 17, 0, 5, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 45 },
+ { 18, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 1, 32 },
+ { 0, 17, 0, 5, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 0, 32 },
+ { 1, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 35, 4, 1, 32 },
+ { 0, 17, 0, 5, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 32 },
+ { 0, 17, 9, 5, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 32 },
+ { 25, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 32 },
+ { 25, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 7, 0, 1, 32 },
+ { 17, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 1, 32 },
+ { 25, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 32 },
+ { 25, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 32 },
+ { 27, 4, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 1, 32 },
+ { 0, 17, 230, 5, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 32 },
+ { 3, 0, 0, 0, 0, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 32 },
+ { 3, 0, 0, 0, 1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 32 },
+ { 3, 0, 0, 0, 2, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 32 },
+ { 3, 0, 0, 0, 3, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 32 },
+ { 3, 0, 0, 0, 4, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 32 },
+ { 3, 0, 0, 0, 5, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 32 },
+ { 3, 0, 0, 0, 6, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 32 },
+ { 3, 0, 0, 0, 7, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 32 },
+ { 3, 0, 0, 0, 8, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 32 },
+ { 3, 0, 0, 0, 9, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 32 },
+ { 5, 10, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 32 },
+ { 25, 10, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 33 },
+ { 25, 10, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 11, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 12, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 33 },
+ { 25, 10, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 2 },
+ { 20, 10, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 20, 0, 0, 33 },
+ { 25, 10, 0, 2, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 33 },
+ { 25, 10, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 11, 1, 33 },
+ { 25, 10, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 12, 1, 33 },
+ { 25, 10, 0, 1, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 33 },
+ { 0, 17, 0, 5, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 2, 33 },
+ { 10, 18, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 6, 4, 0, 33 },
+ { 0, 17, 0, 5, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 2, 33 },
+ { 3, 0, 0, 0, 0, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 33 },
+ { 3, 0, 0, 0, 1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 33 },
+ { 3, 0, 0, 0, 2, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 33 },
+ { 3, 0, 0, 0, 3, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 33 },
+ { 3, 0, 0, 0, 4, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 33 },
+ { 3, 0, 0, 0, 5, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 33 },
+ { 3, 0, 0, 0, 6, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 33 },
+ { 3, 0, 0, 0, 7, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 33 },
+ { 3, 0, 0, 0, 8, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 33 },
+ { 3, 0, 0, 0, 9, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 33 },
+ { 18, 0, 0, 2, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 33 },
+ { 17, 0, 0, 2, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 33 },
+ { 18, 0, 0, 2, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 33 },
+ { 18, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 33 },
+ { 0, 17, 0, 5, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 33 },
+ { 0, 17, 228, 5, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 33 },
+ { 18, 0, 0, 2, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 33 },
+ { 18, 0, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 47 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 47 },
+ { 0, 17, 0, 5, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 47 },
+ { 1, 0, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 47 },
+ { 0, 17, 222, 5, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 47 },
+ { 0, 17, 230, 5, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 47 },
+ { 0, 17, 220, 5, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 47 },
+ { 29, 10, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 47 },
+ { 25, 10, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 12, 1, 47 },
+ { 3, 0, 0, 0, 0, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 47 },
+ { 3, 0, 0, 0, 1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 47 },
+ { 3, 0, 0, 0, 2, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 47 },
+ { 3, 0, 0, 0, 3, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 47 },
+ { 3, 0, 0, 0, 4, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 47 },
+ { 3, 0, 0, 0, 5, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 47 },
+ { 3, 0, 0, 0, 6, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 47 },
+ { 3, 0, 0, 0, 7, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 47 },
+ { 3, 0, 0, 0, 8, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 47 },
+ { 3, 0, 0, 0, 9, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 47 },
+ { 18, 0, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 1, 48 },
+ { 18, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 1, 56 },
+ { 18, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 1, 56 },
+ { 3, 0, 0, 0, 0, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 56 },
+ { 3, 0, 0, 0, 1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 56 },
+ { 3, 0, 0, 0, 2, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 56 },
+ { 3, 0, 0, 0, 3, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 56 },
+ { 3, 0, 0, 0, 4, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 56 },
+ { 3, 0, 0, 0, 5, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 56 },
+ { 3, 0, 0, 0, 6, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 56 },
+ { 3, 0, 0, 0, 7, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 56 },
+ { 3, 0, 0, 0, 8, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 56 },
+ { 3, 0, 0, 0, 9, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 56 },
+ { 5, 0, 0, 0, 1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 0, 1, 56 },
+ { 29, 10, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 0, 1, 56 },
+ { 29, 10, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 32 },
+ { 18, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 55 },
+ { 0, 17, 230, 5, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 55 },
+ { 0, 17, 220, 5, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 55 },
+ { 1, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 55 },
+ { 0, 17, 0, 5, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 55 },
+ { 25, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 55 },
+ { 18, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 1, 78 },
+ { 1, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 35, 4, 1, 78 },
+ { 0, 17, 0, 5, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 78 },
+ { 0, 17, 9, 5, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 78 },
+ { 1, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 4, 35, 4, 1, 78 },
+ { 0, 17, 230, 5, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 78 },
+ { 0, 17, 220, 5, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 78 },
+ { 3, 0, 0, 0, 0, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 78 },
+ { 3, 0, 0, 0, 1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 78 },
+ { 3, 0, 0, 0, 2, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 78 },
+ { 3, 0, 0, 0, 3, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 78 },
+ { 3, 0, 0, 0, 4, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 78 },
+ { 3, 0, 0, 0, 5, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 78 },
+ { 3, 0, 0, 0, 6, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 78 },
+ { 3, 0, 0, 0, 7, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 78 },
+ { 3, 0, 0, 0, 8, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 78 },
+ { 3, 0, 0, 0, 9, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 78 },
+ { 25, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 0, 1, 78 },
+ { 17, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 1, 78 },
+ { 25, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 12, 1, 78 },
+ { 0, 17, 230, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 220, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 2, 17, 0, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 220, 5, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 230, 5, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 220, 5, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 0, 5, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 62 },
+ { 1, 0, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 62 },
+ { 18, 0, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 62 },
+ { 18, 0, 0, 0, -1, 0, 9, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 62 },
+ { 0, 17, 7, 5, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 62 },
+ { 1, 0, 0, 0, -1, 0, 9, 3, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 62 },
+ { 1, 0, 0, 0, -1, 0, 9, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 62 },
+ { 1, 0, 9, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 62 },
+ { 18, 0, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 62 },
+ { 3, 0, 0, 0, 0, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 62 },
+ { 3, 0, 0, 0, 1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 62 },
+ { 3, 0, 0, 0, 2, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 62 },
+ { 3, 0, 0, 0, 3, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 62 },
+ { 3, 0, 0, 0, 4, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 62 },
+ { 3, 0, 0, 0, 5, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 62 },
+ { 3, 0, 0, 0, 6, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 62 },
+ { 3, 0, 0, 0, 7, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 62 },
+ { 3, 0, 0, 0, 8, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 62 },
+ { 3, 0, 0, 0, 9, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 62 },
+ { 25, 0, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 62 },
+ { 25, 0, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 62 },
+ { 25, 0, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 62 },
+ { 29, 0, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 62 },
+ { 0, 17, 230, 5, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 62 },
+ { 0, 17, 220, 5, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 62 },
+ { 25, 0, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 62 },
+ { 0, 17, 0, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 67 },
+ { 1, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 67 },
+ { 18, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 67 },
+ { 1, 0, 9, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 67 },
+ { 0, 17, 9, 5, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 67 },
+ { 0, 17, 0, 5, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 67 },
+ { 3, 0, 0, 0, 0, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 67 },
+ { 3, 0, 0, 0, 1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 67 },
+ { 3, 0, 0, 0, 2, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 67 },
+ { 3, 0, 0, 0, 3, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 67 },
+ { 3, 0, 0, 0, 4, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 67 },
+ { 3, 0, 0, 0, 5, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 67 },
+ { 3, 0, 0, 0, 6, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 67 },
+ { 3, 0, 0, 0, 7, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 67 },
+ { 3, 0, 0, 0, 8, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 67 },
+ { 3, 0, 0, 0, 9, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 67 },
+ { 18, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 67 },
+ { 18, 0, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 93 },
+ { 0, 17, 7, 5, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 93 },
+ { 1, 0, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 93 },
+ { 0, 17, 0, 5, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 93 },
+ { 1, 0, 9, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 93 },
+ { 25, 0, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 93 },
+ { 18, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 68 },
+ { 1, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 68 },
+ { 0, 17, 0, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 68 },
+ { 0, 17, 7, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 68 },
+ { 25, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 68 },
+ { 25, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 68 },
+ { 3, 0, 0, 0, 0, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 68 },
+ { 3, 0, 0, 0, 1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 68 },
+ { 3, 0, 0, 0, 2, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 68 },
+ { 3, 0, 0, 0, 3, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 68 },
+ { 3, 0, 0, 0, 4, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 68 },
+ { 3, 0, 0, 0, 5, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 68 },
+ { 3, 0, 0, 0, 6, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 68 },
+ { 3, 0, 0, 0, 7, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 68 },
+ { 3, 0, 0, 0, 8, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 68 },
+ { 3, 0, 0, 0, 9, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 68 },
+ { 3, 0, 0, 0, 0, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 69 },
+ { 3, 0, 0, 0, 1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 69 },
+ { 3, 0, 0, 0, 2, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 69 },
+ { 3, 0, 0, 0, 3, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 69 },
+ { 3, 0, 0, 0, 4, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 69 },
+ { 3, 0, 0, 0, 5, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 69 },
+ { 3, 0, 0, 0, 6, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 69 },
+ { 3, 0, 0, 0, 7, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 69 },
+ { 3, 0, 0, 0, 8, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 69 },
+ { 3, 0, 0, 0, 9, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 69 },
+ { 18, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 69 },
+ { 17, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 69 },
+ { 25, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 69 },
+ { 15, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, -6254}, {0, -6254}, {0, -6222} }, 0, 10, 14, 6, 3, 5 },
+ { 15, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, -6253}, {0, -6253}, {0, -6221} }, 0, 10, 14, 6, 3, 5 },
+ { 15, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, -6244}, {0, -6244}, {0, -6212} }, 0, 10, 14, 6, 3, 5 },
+ { 15, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, -6242}, {0, -6242}, {0, -6210} }, 0, 10, 14, 6, 3, 5 },
+ { 15, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, -6243}, {0, -6243}, {0, -6211} }, 0, 10, 14, 6, 3, 5 },
+ { 15, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, -6236}, {0, -6236}, {0, -6204} }, 0, 10, 14, 6, 3, 5 },
+ { 15, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, -6181}, {0, -6181}, {0, -6180} }, 0, 10, 14, 6, 3, 5 },
+ { 15, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {1, 201}, {1, 201}, {1, 719} }, 0, 10, 14, 6, 3, 5 },
+ { 14, 0, 0, 0, -1, 0, 20, 3, 0, { {0, -3008}, {0, 0}, {0, 0}, {0, -3008} }, 0, 10, 14, 8, 3, 25 },
+ { 25, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 67 },
+ { 0, 17, 230, 5, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 25, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 0, 17, 1, 5, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 220, 5, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 1, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 2 },
+ { 18, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 2 },
+ { 18, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 2 },
+ { 0, 17, 230, 5, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 1, 0, 0, 0, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 2 },
+ { 18, 0, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 2 },
+ { 15, 0, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 1, 5 },
+ { 17, 0, 0, 0, -1, 0, 7, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 3, 3 },
+ { 17, 0, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 17, 0, 0, 0, -1, 0, 7, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 17, 0, 0, 0, -1, 0, 8, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 3, 5 },
+ { 15, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {1, 203}, {1, 203}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 3814}, {0, 3814}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {1, 205}, {1, 205}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 17, 0, 0, 0, -1, 0, 8, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 3, 3 },
+ { 17, 0, 0, 0, -1, 0, 8, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 0, 17, 230, 5, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 220, 5, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 230, 5, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 220, 5, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 230, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 234, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 6, 4, 1, 1 },
+ { 0, 17, 214, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 220, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 202, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 232, 5, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 228, 5, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 220, 5, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 218, 5, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 230, 5, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 233, 5, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 6, 4, 1, 1 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 514}, {1, 514}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 517}, {1, 517}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 520}, {1, 520}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 523}, {1, 523}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {1, 526}, {1, 526}, {0, 0} }, 0, 10, 14, 6, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 2, 3, 81, { {0, 0}, {0, -59}, {0, -59}, {0, -58} }, 0, 10, 14, 6, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 10, 3, 0, { {0, -7615}, {0, 0}, {0, 0}, {0, -7615} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, 8}, {0, 8}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -8}, {0, 0}, {0, 0}, {0, -8} }, 0, 10, 14, 7, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 529}, {1, 529}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 532}, {1, 532}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 536}, {1, 536}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 540}, {1, 540}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, 74}, {0, 74}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 85, { {0, 0}, {0, 74}, {0, 74}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, 86}, {0, 86}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 85, { {0, 0}, {0, 86}, {0, 86}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, 100}, {0, 100}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 85, { {0, 0}, {0, 100}, {0, 100}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, 128}, {0, 128}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 85, { {0, 0}, {0, 128}, {0, 128}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, 112}, {0, 112}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 85, { {0, 0}, {0, 112}, {0, 112}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, 126}, {0, 126}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 85, { {0, 0}, {0, 126}, {0, 126}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 578}, {0, 8}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 581}, {0, 8}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 584}, {0, 8}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 587}, {0, 8}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 590}, {0, 8}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 593}, {0, 8}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 596}, {0, 8}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 599}, {0, 8}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -8}, {1, 578}, {0, 0}, {0, -8} }, 0, 10, 14, 7, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -8}, {1, 581}, {0, 0}, {0, -8} }, 0, 10, 14, 7, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -8}, {1, 584}, {0, 0}, {0, -8} }, 0, 10, 14, 7, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -8}, {1, 587}, {0, 0}, {0, -8} }, 0, 10, 14, 7, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -8}, {1, 590}, {0, 0}, {0, -8} }, 0, 10, 14, 7, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -8}, {1, 593}, {0, 0}, {0, -8} }, 0, 10, 14, 7, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -8}, {1, 596}, {0, 0}, {0, -8} }, 0, 10, 14, 7, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -8}, {1, 599}, {0, 0}, {0, -8} }, 0, 10, 14, 7, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 602}, {0, 8}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 605}, {0, 8}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 608}, {0, 8}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 611}, {0, 8}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 614}, {0, 8}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 617}, {0, 8}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 620}, {0, 8}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 623}, {0, 8}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -8}, {1, 602}, {0, 0}, {0, -8} }, 0, 10, 14, 7, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -8}, {1, 605}, {0, 0}, {0, -8} }, 0, 10, 14, 7, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -8}, {1, 608}, {0, 0}, {0, -8} }, 0, 10, 14, 7, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -8}, {1, 611}, {0, 0}, {0, -8} }, 0, 10, 14, 7, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -8}, {1, 614}, {0, 0}, {0, -8} }, 0, 10, 14, 7, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -8}, {1, 617}, {0, 0}, {0, -8} }, 0, 10, 14, 7, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -8}, {1, 620}, {0, 0}, {0, -8} }, 0, 10, 14, 7, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -8}, {1, 623}, {0, 0}, {0, -8} }, 0, 10, 14, 7, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 626}, {0, 8}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 629}, {0, 8}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 632}, {0, 8}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 635}, {0, 8}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 638}, {0, 8}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 641}, {0, 8}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 644}, {0, 8}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 647}, {0, 8}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -8}, {1, 626}, {0, 0}, {0, -8} }, 0, 10, 14, 7, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -8}, {1, 629}, {0, 0}, {0, -8} }, 0, 10, 14, 7, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -8}, {1, 632}, {0, 0}, {0, -8} }, 0, 10, 14, 7, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -8}, {1, 635}, {0, 0}, {0, -8} }, 0, 10, 14, 7, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -8}, {1, 638}, {0, 0}, {0, -8} }, 0, 10, 14, 7, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -8}, {1, 641}, {0, 0}, {0, -8} }, 0, 10, 14, 7, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -8}, {1, 644}, {0, 0}, {0, -8} }, 0, 10, 14, 7, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -8}, {1, 647}, {0, 0}, {0, -8} }, 0, 10, 14, 7, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 662}, {1, 659}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 650}, {0, 9}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 668}, {1, 665}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 544}, {1, 544}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 699}, {1, 695}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -74}, {0, 0}, {0, 0}, {0, -74} }, 0, 10, 14, 7, 3, 4 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 85, { {0, -74}, {0, 0}, {0, 0}, {0, -74} }, 0, 10, 14, 7, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -9}, {1, 650}, {0, 0}, {0, -9} }, 0, 10, 14, 7, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 85, { {0, 0}, {0, -7205}, {0, -7205}, {0, -7173} }, 0, 10, 14, 6, 3, 4 },
+ { 28, 10, 0, 0, -1, 0, 1, 3, 81, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 674}, {1, 671}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 653}, {0, 9}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 680}, {1, 677}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 547}, {1, 547}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 707}, {1, 703}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -86}, {0, 0}, {0, 0}, {0, -86} }, 0, 10, 14, 7, 3, 4 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 85, { {0, -86}, {0, 0}, {0, 0}, {0, -86} }, 0, 10, 14, 7, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -9}, {1, 653}, {0, 0}, {0, -9} }, 0, 10, 14, 7, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 550}, {1, 550}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 85, { {0, 0}, {1, 503}, {1, 503}, {0, -7235} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 554}, {1, 554}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 557}, {1, 557}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -100}, {0, 0}, {0, 0}, {0, -100} }, 0, 10, 14, 7, 3, 4 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 85, { {0, -100}, {0, 0}, {0, 0}, {0, -100} }, 0, 10, 14, 7, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 561}, {1, 561}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 85, { {0, 0}, {1, 507}, {1, 507}, {0, -7219} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 565}, {1, 565}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, 7}, {0, 7}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 568}, {1, 568}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 571}, {1, 571}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -112}, {0, 0}, {0, 0}, {0, -112} }, 0, 10, 14, 7, 3, 4 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 85, { {0, -112}, {0, 0}, {0, 0}, {0, -112} }, 0, 10, 14, 7, 3, 4 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -7}, {0, 0}, {0, 0}, {0, -7} }, 0, 10, 14, 7, 3, 4 },
+ { 28, 10, 0, 0, -1, 0, 1, 3, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 686}, {1, 683}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 656}, {0, 9}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 692}, {1, 689}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 575}, {1, 575}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {1, 715}, {1, 711}, {0, 0} }, 0, 10, 14, 6, 3, 4 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -128}, {0, 0}, {0, 0}, {0, -128} }, 0, 10, 14, 7, 3, 4 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 85, { {0, -128}, {0, 0}, {0, 0}, {0, -128} }, 0, 10, 14, 7, 3, 4 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -126}, {0, 0}, {0, 0}, {0, -126} }, 0, 10, 14, 7, 3, 4 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 85, { {0, -126}, {0, 0}, {0, 0}, {0, -126} }, 0, 10, 14, 7, 3, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 3, 17, { {0, -9}, {1, 656}, {0, 0}, {0, -9} }, 0, 10, 14, 7, 3, 4 },
+ { 28, 10, 0, 0, -1, 0, 1, 3, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 20, 0, 0, 4 },
+ { 6, 9, 0, 0, -1, 0, 1, 3, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 18, 19, 5, 0, 2 },
+ { 6, 9, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 18, 19, 5, 0, 2 },
+ { 6, 9, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 5, 0, 2 },
+ { 10, 18, 0, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 0, 22, 4, 2, 2 },
+ { 10, 18, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 4, 1 },
+ { 10, 18, 0, 1, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 5, 5, 34, 4, 4, 1 },
+ { 10, 0, 0, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 23, 4, 0, 2 },
+ { 10, 1, 0, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 23, 4, 0, 2 },
+ { 20, 10, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 2 },
+ { 20, 10, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 0, 3, 2 },
+ { 20, 10, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 2 },
+ { 20, 10, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 11, 1, 2 },
+ { 20, 10, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 21, 11, 1, 2 },
+ { 20, 10, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 23, 10, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 13, 3, 13, 1, 2 },
+ { 24, 10, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 13, 3, 13, 1, 2 },
+ { 21, 10, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 2 },
+ { 23, 10, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
+ { 23, 10, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
+ { 24, 10, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 13, 17, 10, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 14, 19, 0, 1, 2 },
+ { 7, 9, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 3, 40, 3, 0, 2 },
+ { 8, 7, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 3, 40, 3, 0, 2 },
+ { 10, 11, 0, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 23, 4, 0, 2 },
+ { 10, 14, 0, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 23, 4, 0, 2 },
+ { 10, 16, 0, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 23, 4, 0, 2 },
+ { 10, 12, 0, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 23, 4, 0, 2 },
+ { 10, 15, 0, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 23, 4, 0, 2 },
+ { 6, 6, 0, 0, -1, 0, 4, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 17, 6, 5, 0, 2 },
+ { 25, 4, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
+ { 25, 4, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
+ { 25, 4, 0, 0, -1, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
+ { 25, 4, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
+ { 23, 10, 0, 0, -1, 1, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
+ { 24, 10, 0, 0, -1, -1, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 7, 12, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 7, 12, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 19, 10, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 17, 14, 0, 1, 2 },
+ { 26, 6, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 10, 0, 1, 2 },
+ { 21, 10, 0, 0, -1, 1, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 2 },
+ { 22, 10, 0, 0, -1, -1, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 6, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 7, 12, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 4, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 7, 12, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 4, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 7, 12, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 19, 10, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 17, 14, 0, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 6, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
+ { 6, 9, 0, 0, -1, 0, 6, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 18, 19, 5, 0, 2 },
+ { 10, 18, 0, 5, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 24, 4, 2, 2 },
+ { 10, 18, 0, 5, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 14, 4, 0, 2 },
+ { 10, 18, 0, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 14, 4, 2, 2 },
+ { 13, 18, 0, 0, -1, 0, 0, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 0, 14, 0, 0, 0 },
+ { 10, 19, 0, 0, -1, 0, 15, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 23, 4, 0, 2 },
+ { 10, 20, 0, 0, -1, 0, 15, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 23, 4, 0, 2 },
+ { 10, 21, 0, 0, -1, 0, 15, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 23, 4, 0, 2 },
+ { 10, 22, 0, 0, -1, 0, 15, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 23, 4, 0, 2 },
+ { 10, 18, 0, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 23, 4, 0, 2 },
+ { 5, 2, 0, 0, 0, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 17, 0, 0, 0, -1, 0, 6, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 3, 3 },
+ { 5, 2, 0, 0, 4, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 5, 2, 0, 0, 5, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 5, 2, 0, 0, 6, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 5, 2, 0, 0, 7, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 5, 2, 0, 0, 8, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 5, 2, 0, 0, 9, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 26, 3, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 26, 3, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 26, 10, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 21, 10, 0, 0, -1, 1, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 0, 2 },
+ { 22, 10, 0, 0, -1, -1, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 0, 2 },
+ { 17, 0, 0, 0, -1, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 3, 3 },
+ { 17, 0, 0, 0, -1, 0, 12, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 3, 3 },
+ { 27, 4, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
+ { 27, 4, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 3, 2 },
+ { 27, 4, 0, 0, -1, 0, 1, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 1, 2 },
+ { 27, 4, 0, 0, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 1, 2 },
+ { 27, 4, 0, 0, -1, 0, 3, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 1, 2 },
+ { 27, 4, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 1, 2 },
+ { 27, 4, 0, 0, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 1, 2 },
+ { 27, 4, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 1, 2 },
+ { 27, 4, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
+ { 27, 4, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 1, 2 },
+ { 27, 4, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 1, 2 },
+ { 27, 4, 0, 0, -1, 0, 14, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 1, 2 },
+ { 27, 4, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
+ { 27, 4, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 1, 2 },
+ { 27, 4, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
+ { 27, 4, 0, 0, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 1, 2 },
+ { 27, 4, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
+ { 13, 4, 0, 0, -1, 0, 0, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 0, 0 },
+ { 0, 17, 1, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 2, 17, 0, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 2, 17, 0, 5, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 2, 17, 0, 5, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 1, 5, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 230, 5, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 220, 5, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 1, 5, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 29, 10, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 3, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 3, 2 },
+ { 15, 0, 0, 0, -1, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 3, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 3, 2 },
+ { 26, 10, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 3, 2 },
+ { 14, 0, 0, 0, -1, 0, 1, 0, 85, { {0, -7517}, {0, 0}, {0, 0}, {0, -7517} }, 0, 10, 14, 7, 3, 4 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 85, { {1, 207}, {0, 0}, {0, 0}, {1, 207} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 0, 85, { {1, 209}, {0, 0}, {0, 0}, {1, 209} }, 0, 10, 14, 7, 3, 3 },
+ { 29, 4, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 14, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 28}, {0, 0}, {0, 0}, {0, 28} }, 0, 10, 14, 7, 0, 3 },
+ { 18, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 3, 2 },
+ { 15, 0, 0, 0, -1, 0, 4, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 10, 14, 6, 3, 2 },
+ { 29, 10, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 7, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 15, 0, 0, 0, -1, 0, 8, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 3, 2 },
+ { 15, 0, 0, 0, -1, 0, 6, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 3, 2 },
+ { 14, 0, 0, 0, -1, 0, 6, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 3, 2 },
+ { 26, 10, 0, 0, -1, 0, 6, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 29, 10, 0, 0, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 15, 0, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, -28}, {0, -28}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 29, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, -1, 0, 11, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 5, 10, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 4, 0, 0, 0, -1, 0, 1, 0, 80, { {0, 16}, {0, 0}, {0, 0}, {0, 16} }, 0, 10, 14, 7, 3, 3 },
+ { 4, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 16}, {0, 0}, {0, 0}, {0, 16} }, 0, 10, 14, 7, 3, 3 },
+ { 4, 0, 0, 0, -1, 0, 1, 0, 80, { {0, 0}, {0, -16}, {0, -16}, {0, 0} }, 0, 10, 14, 6, 3, 3 },
+ { 4, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, -16}, {0, -16}, {0, 0} }, 0, 10, 14, 6, 3, 3 },
+ { 4, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 0, 3 },
+ { 4, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 3 },
+ { 5, 10, 0, 0, -1, 0, 11, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 29, 10, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 3, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 3, 1, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 3, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, -3, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, -3, 1, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, -3, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 3, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 1, 2 },
+ { 26, 4, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 2016, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 2527, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 1923, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 1914, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 1918, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 2250, 1, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 26, 10, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 26, 10, 0, 0, -1, 1, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, -1, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 138, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 7, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, -7, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, -1, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 1, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 0, 1, 0, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 1, 1, 0, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, -1, 1, 0, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 1, 1, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, -1, 1, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 1824, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 2104, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 2108, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 2106, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 1316, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, -138, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 8, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 7, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, -8, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, -7, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 21, 10, 0, 0, -1, 1, 1, 5, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 3, 2 },
+ { 22, 10, 0, 0, -1, -1, 1, 5, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 3, 2 },
+ { 29, 0, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
+ { 29, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 12, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 12, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 1, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 5, 10, 0, 0, 2, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 5, 10, 0, 0, 3, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 5, 10, 0, 0, 4, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 5, 10, 0, 0, 5, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 5, 10, 0, 0, 6, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 5, 10, 0, 0, 7, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 5, 10, 0, 0, 8, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 5, 10, 0, 0, 9, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 5, 10, 0, 0, 1, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 10, 0, 0, 2, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 10, 0, 0, 3, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 10, 0, 0, 4, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 10, 0, 0, 5, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 10, 0, 0, 6, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 10, 0, 0, 7, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 10, 0, 0, 8, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 10, 0, 0, 9, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 10, 0, 0, -1, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 2, 0, 0, 1, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 2, 0, 0, 2, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 2, 0, 0, 3, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 2, 0, 0, 4, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 2, 0, 0, 5, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 2, 0, 0, 6, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 2, 0, 0, 7, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 2, 0, 0, 8, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 2, 0, 0, 9, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 2, 0, 0, -1, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 29, 0, 0, 0, -1, 0, 1, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 29, 0, 0, 0, -1, 0, 1, 0, 80, { {0, 26}, {0, 0}, {0, 0}, {0, 26} }, 0, 10, 14, 7, 3, 2 },
+ { 29, 0, 0, 0, -1, 0, 1, 0, 80, { {0, 26}, {0, 0}, {0, 0}, {0, 26} }, 14, 10, 14, 7, 3, 2 },
+ { 29, 0, 0, 0, -1, 0, 1, 0, 80, { {0, 0}, {0, -26}, {0, -26}, {0, 0} }, 0, 10, 14, 6, 3, 2 },
+ { 5, 10, 0, 0, 0, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 5, 10, 0, 0, -1, 0, 6, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 1, 0, 6, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 2, 0, 6, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 3, 0, 6, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 4, 0, 6, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 5, 0, 6, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 6, 0, 6, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 7, 0, 6, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 8, 0, 6, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 9, 0, 6, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 0, 0, 7, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 0, 6, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 7, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 32, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 8, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 8, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 11, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 7, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
+ { 29, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 11, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 11, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 11, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 32, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 12, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 32, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 11, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 8, 0, 1, 2 },
+ { 21, 10, 0, 0, -1, 1, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 2 },
+ { 22, 10, 0, 0, -1, -1, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 1, 2 },
+ { 5, 10, 0, 0, 1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 2, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 3, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 4, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 5, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 6, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 7, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 8, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 9, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 2, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 3, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 4, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 5, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 6, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 7, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 8, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, 9, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 10, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 1, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, -1, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 21, 10, 0, 0, -1, 1, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 2 },
+ { 22, 10, 0, 0, -1, -1, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 1, 2 },
+ { 26, 10, 0, 0, -1, 1, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, -1, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 2, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, -2, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 1, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, -1, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, -1316, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 21, 10, 0, 0, -1, 1, 6, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 2 },
+ { 22, 10, 0, 0, -1, -1, 6, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 1, 2 },
+ { 21, 10, 0, 0, -1, 1, 10, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 2 },
+ { 22, 10, 0, 0, -1, -1, 10, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 1, 2 },
+ { 21, 10, 0, 0, -1, 1, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 2 },
+ { 22, 10, 0, 0, -1, -1, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 1, 2 },
+ { 29, 0, 0, 0, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 54 },
+ { 21, 10, 0, 0, -1, 3, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 2 },
+ { 22, 10, 0, 0, -1, 1, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 1, 2 },
+ { 21, 10, 0, 0, -1, -1, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 2 },
+ { 22, 10, 0, 0, -1, -3, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 1, 2 },
+ { 26, 10, 0, 0, -1, -1914, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, -1918, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, -1923, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, -1824, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, -2016, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, 0, 6, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 26, 10, 0, 0, -1, 0, 6, 3, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 26, 10, 0, 0, -1, -2104, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, -2106, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, -2108, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 26, 10, 0, 0, -1, -2250, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 10, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 11, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, -2527, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 14, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 48}, {0, 0}, {0, 0}, {0, 48} }, 0, 10, 14, 7, 3, 57 },
+ { 14, 0, 0, 0, -1, 0, 24, 3, 0, { {0, 48}, {0, 0}, {0, 0}, {0, 48} }, 0, 10, 14, 7, 3, 57 },
+ { 15, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, -48}, {0, -48}, {0, 0} }, 0, 10, 14, 6, 1, 57 },
+ { 15, 0, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, -48}, {0, -48}, {0, 0} }, 0, 10, 14, 6, 1, 57 },
+ { 14, 0, 0, 0, -1, 0, 9, 3, 0, { {1, 211}, {0, 0}, {0, 0}, {1, 211} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 9, 3, 0, { {0, -3814}, {0, 0}, {0, 0}, {0, -3814} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 9, 3, 0, { {1, 213}, {0, 0}, {0, 0}, {1, 213} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {1, 215}, {1, 215}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {1, 217}, {1, 217}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 10, 3, 0, { {1, 219}, {0, 0}, {0, 0}, {1, 219} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 10, 3, 0, { {1, 221}, {0, 0}, {0, 0}, {1, 221} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 10, 3, 0, { {1, 223}, {0, 0}, {0, 0}, {1, 223} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 11, 3, 0, { {1, 225}, {0, 0}, {0, 0}, {1, 225} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 17, 0, 0, 0, -1, 0, 10, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 11, 3, 0, { {1, 227}, {0, 0}, {0, 0}, {1, 227} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 11, 3, 0, { {1, 229}, {0, 0}, {0, 0}, {1, 229} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 46 },
+ { 15, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 46 },
+ { 15, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 1, 46 },
+ { 29, 10, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 46 },
+ { 14, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 46 },
+ { 15, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 46 },
+ { 0, 17, 230, 5, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 46 },
+ { 14, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 46 },
+ { 15, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 46 },
+ { 25, 10, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 0, 1, 46 },
+ { 25, 10, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 46 },
+ { 5, 10, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 46 },
+ { 15, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, -7264}, {0, -7264}, {0, 0} }, 0, 10, 14, 6, 1, 25 },
+ { 15, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, -7264}, {0, -7264}, {0, 0} }, 0, 10, 14, 6, 1, 25 },
+ { 18, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 58 },
+ { 18, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 58 },
+ { 17, 0, 0, 0, -1, 0, 8, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 3, 58 },
+ { 25, 0, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 58 },
+ { 0, 17, 9, 5, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 58 },
+ { 25, 10, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
+ { 23, 10, 0, 0, -1, 1, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
+ { 24, 10, 0, 0, -1, -1, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
+ { 20, 10, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 0, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 2 },
+ { 20, 10, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 23, 10, 0, 0, -1, 1, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
+ { 24, 10, 0, 0, -1, -1, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 12, 1, 2 },
+ { 17, 10, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 2 },
+ { 20, 10, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 21, 0, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 20, 10, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 2 },
+ { 21, 10, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 12, 1, 2 },
+ { 21, 10, 0, 0, -1, 1, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 2 },
+ { 22, 10, 0, 0, -1, -1, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 1, 2 },
+ { 20, 10, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 4, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 37 },
+ { 29, 10, 0, 0, -1, 0, 4, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 3, 37 },
+ { 29, 10, 0, 0, -1, 0, 4, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 26, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 0, 2 },
+ { 6, 9, 0, 0, -1, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 18, 19, 5, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 11, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 12, 3, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 2 },
+ { 17, 0, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 7, 8, 1, 37 },
+ { 18, 0, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 2 },
+ { 4, 0, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 37 },
+ { 21, 10, 0, 0, -1, 1, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 2 },
+ { 22, 10, 0, 0, -1, -1, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 1, 2 },
+ { 20, 10, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 7, 0, 1, 2 },
+ { 21, 10, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 1, 2 },
+ { 22, 10, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 1, 2 },
+ { 0, 17, 218, 5, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 228, 5, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 232, 5, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 222, 5, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 1, 0, 224, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 26 },
+ { 20, 10, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 17, 0, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 16, 8, 1, 2 },
+ { 17, 0, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 23, 8, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 3, 2 },
+ { 4, 0, 0, 0, -1, 0, 4, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 3, 37 },
+ { 17, 0, 0, 0, -1, 0, 6, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 7, 8, 1, 37 },
+ { 18, 0, 0, 0, -1, 0, 6, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 7, 8, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 6, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 4, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 2 },
+ { 18, 0, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 7, 8, 1, 34 },
+ { 18, 0, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 34 },
+ { 18, 0, 0, 0, -1, 0, 1, 5, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 34 },
+ { 18, 0, 0, 0, -1, 0, 6, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 7, 8, 1, 34 },
+ { 0, 17, 8, 5, -1, 0, 1, 5, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 28, 10, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 7, 0, 0, 2 },
+ { 17, 0, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 7, 8, 1, 34 },
+ { 17, 0, 0, 0, -1, 0, 1, 5, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 7, 8, 1, 34 },
+ { 18, 0, 0, 0, -1, 0, 6, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 3, 34 },
+ { 20, 10, 0, 0, -1, 0, 6, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 7, 0, 1, 2 },
+ { 18, 0, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 7, 8, 1, 35 },
+ { 18, 0, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 16, 8, 1, 35 },
+ { 18, 0, 0, 0, -1, 0, 1, 5, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 16, 8, 1, 35 },
+ { 25, 10, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 7, 0, 1, 2 },
+ { 17, 0, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 7, 8, 1, 2 },
+ { 17, 0, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 7, 8, 1, 35 },
+ { 17, 0, 0, 0, -1, 0, 1, 5, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 7, 8, 1, 35 },
+ { 18, 0, 0, 0, -1, 0, 6, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 16, 8, 3, 35 },
+ { 18, 0, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 16, 8, 1, 36 },
+ { 18, 0, 0, 0, -1, 0, 10, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 16, 8, 1, 36 },
+ { 18, 0, 0, 0, -1, 0, 19, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 16, 8, 1, 36 },
+ { 18, 0, 0, 0, -1, 0, 20, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 16, 8, 1, 36 },
+ { 18, 0, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 16, 8, 3, 26 },
+ { 18, 0, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 16, 8, 0, 26 },
+ { 29, 0, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 2 },
+ { 5, 0, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 3, 2 },
+ { 29, 0, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 3, 2 },
+ { 18, 0, 0, 0, -1, 0, 4, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 16, 8, 1, 36 },
+ { 18, 0, 0, 0, -1, 0, 12, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 16, 8, 1, 36 },
+ { 18, 0, 0, 0, -1, 0, 23, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 16, 8, 1, 36 },
+ { 29, 10, 0, 0, -1, 0, 8, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 10, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 2 },
+ { 18, 0, 0, 0, -1, 0, 6, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 7, 8, 1, 35 },
+ { 29, 0, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 0, 26 },
+ { 29, 10, 0, 0, -1, 0, 7, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 0, 26 },
+ { 5, 0, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 0, 2 },
+ { 29, 0, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 0, 2 },
+ { 29, 0, 0, 0, -1, 0, 11, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 3, 2 },
+ { 5, 0, 0, 0, -1, 0, 11, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 7, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 3, 2 },
+ { 5, 10, 0, 0, -1, 0, 6, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 3, 2 },
+ { 29, 0, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 3, 26 },
+ { 29, 10, 0, 0, -1, 0, 7, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 3, 26 },
+ { 29, 10, 0, 0, -1, 0, 8, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 3, 26 },
+ { 29, 0, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 3, 2 },
+ { 29, 0, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 16, 0, 3, 35 },
+ { 29, 0, 0, 0, -1, 0, 22, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 3, 2 },
+ { 18, 0, 0, 0, -1, 0, 4, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 37 },
+ { 18, 0, 0, 0, -1, 0, 23, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 37 },
+ { 18, 0, 0, 0, -1, 0, 1, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 37 },
+ { 18, 0, 0, 0, -1, 0, 8, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 37 },
+ { 18, 0, 0, 0, -1, 0, 10, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 37 },
+ { 18, 0, 0, 0, -1, 0, 11, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 37 },
+ { 18, 0, 0, 0, -1, 0, 13, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 37 },
+ { 18, 0, 0, 0, -1, 0, 17, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 37 },
+ { 18, 0, 0, 0, -1, 0, 19, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 37 },
+ { 18, 0, 0, 0, -1, 0, 20, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 37 },
+ { 18, 0, 0, 0, -1, 0, 24, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 37 },
+ { 18, 0, 0, 0, -1, 0, 4, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 16, 8, 1, 38 },
+ { 17, 0, 0, 0, -1, 0, 4, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 7, 8, 1, 38 },
+ { 29, 10, 0, 0, -1, 0, 4, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 38 },
+ { 29, 10, 0, 0, -1, 0, 6, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 38 },
+ { 18, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 83 },
+ { 17, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 83 },
+ { 25, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 83 },
+ { 25, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 83 },
+ { 18, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 70 },
+ { 17, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 70 },
+ { 25, 10, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 70 },
+ { 25, 10, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 12, 1, 70 },
+ { 25, 10, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 70 },
+ { 3, 0, 0, 0, 0, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 70 },
+ { 3, 0, 0, 0, 1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 70 },
+ { 3, 0, 0, 0, 2, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 70 },
+ { 3, 0, 0, 0, 3, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 70 },
+ { 3, 0, 0, 0, 4, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 70 },
+ { 3, 0, 0, 0, 5, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 70 },
+ { 3, 0, 0, 0, 6, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 70 },
+ { 3, 0, 0, 0, 7, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 70 },
+ { 3, 0, 0, 0, 8, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 70 },
+ { 3, 0, 0, 0, 9, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 70 },
+ { 18, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 5 },
+ { 2, 17, 0, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 5 },
+ { 25, 10, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 5 },
+ { 0, 17, 230, 5, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 5 },
+ { 17, 10, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 5 },
+ { 17, 0, 0, 0, -1, 0, 16, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 3, 5 },
+ { 0, 17, 230, 5, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 5 },
+ { 18, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 84 },
+ { 4, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 84 },
+ { 0, 17, 230, 5, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 84 },
+ { 25, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 84 },
+ { 25, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 84 },
+ { 25, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 84 },
+ { 28, 10, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 28, 10, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 0, 1, 2 },
+ { 17, 10, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 2 },
+ { 28, 10, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 0, 1, 2 },
+ { 14, 0, 0, 0, -1, 0, 10, 3, 0, { {1, 231}, {0, 0}, {0, 0}, {1, 231} }, 0, 10, 14, 7, 3, 3 },
+ { 28, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 0, 1, 2 },
+ { 14, 0, 0, 0, -1, 0, 12, 3, 0, { {1, 233}, {0, 0}, {0, 0}, {1, 233} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 18, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 12, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 48}, {0, 48}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 13, 3, 0, { {1, 235}, {0, 0}, {0, 0}, {1, 235} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 16, 3, 0, { {1, 237}, {0, 0}, {0, 0}, {1, 237} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 16, 3, 0, { {1, 239}, {0, 0}, {0, 0}, {1, 239} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 16, 3, 0, { {1, 241}, {0, 0}, {0, 0}, {1, 241} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 18, 3, 0, { {1, 243}, {0, 0}, {0, 0}, {1, 243} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 16, 3, 0, { {1, 245}, {0, 0}, {0, 0}, {1, 245} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 16, 3, 0, { {1, 247}, {0, 0}, {0, 0}, {1, 247} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 17, 3, 0, { {1, 249}, {0, 0}, {0, 0}, {1, 249} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 928}, {0, 0}, {0, 0}, {0, 928} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 21, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 24, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 14, 0, 0, 0, -1, 0, 21, 3, 0, { {0, -48}, {0, 0}, {0, 0}, {0, -48} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 21, 3, 0, { {1, 251}, {0, 0}, {0, 0}, {1, 251} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 21, 3, 0, { {1, 253}, {0, 0}, {0, 0}, {1, 253} }, 0, 10, 14, 7, 3, 3 },
+ { 14, 0, 0, 0, -1, 0, 23, 3, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 14, 7, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 23, 3, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 17, 0, 0, 0, -1, 0, 24, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 3, 3 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 3 },
+ { 17, 0, 0, 0, -1, 0, 13, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 3, 3 },
+ { 18, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 3 },
+ { 18, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 59 },
+ { 0, 17, 0, 5, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 59 },
+ { 0, 17, 9, 5, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 59 },
+ { 1, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 59 },
+ { 29, 10, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 59 },
+ { 0, 17, 9, 5, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 59 },
+ { 5, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 4, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 18, 0, 0, 2, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 65 },
+ { 18, 0, 0, 4, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 65 },
+ { 18, 0, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 65 },
+ { 25, 10, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 20, 0, 1, 65 },
+ { 25, 10, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 12, 1, 65 },
+ { 1, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 71 },
+ { 18, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 71 },
+ { 0, 17, 9, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 71 },
+ { 0, 17, 0, 5, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 71 },
+ { 25, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 71 },
+ { 3, 0, 0, 0, 0, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 71 },
+ { 3, 0, 0, 0, 1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 71 },
+ { 3, 0, 0, 0, 2, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 71 },
+ { 3, 0, 0, 0, 3, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 71 },
+ { 3, 0, 0, 0, 4, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 71 },
+ { 3, 0, 0, 0, 5, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 71 },
+ { 3, 0, 0, 0, 6, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 71 },
+ { 3, 0, 0, 0, 7, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 71 },
+ { 3, 0, 0, 0, 8, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 71 },
+ { 3, 0, 0, 0, 9, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 71 },
+ { 0, 17, 230, 5, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 11 },
+ { 25, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 11 },
+ { 25, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 20, 0, 1, 11 },
+ { 18, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 11 },
+ { 18, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 11 },
+ { 0, 17, 0, 5, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 11 },
+ { 3, 0, 0, 0, 0, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 72 },
+ { 3, 0, 0, 0, 1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 72 },
+ { 3, 0, 0, 0, 2, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 72 },
+ { 3, 0, 0, 0, 3, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 72 },
+ { 3, 0, 0, 0, 4, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 72 },
+ { 3, 0, 0, 0, 5, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 72 },
+ { 3, 0, 0, 0, 6, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 72 },
+ { 3, 0, 0, 0, 7, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 72 },
+ { 3, 0, 0, 0, 8, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 72 },
+ { 3, 0, 0, 0, 9, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 72 },
+ { 18, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 72 },
+ { 0, 17, 0, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 72 },
+ { 0, 17, 220, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 72 },
+ { 25, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 2 },
+ { 25, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 72 },
+ { 18, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 73 },
+ { 0, 17, 0, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 73 },
+ { 1, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 73 },
+ { 1, 0, 9, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 73 },
+ { 25, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 73 },
+ { 0, 17, 0, 5, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 85 },
+ { 1, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 85 },
+ { 18, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 85 },
+ { 0, 17, 7, 5, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 85 },
+ { 1, 0, 9, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 85 },
+ { 25, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 85 },
+ { 25, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 85 },
+ { 25, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 85 },
+ { 17, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 19, 8, 1, 2 },
+ { 3, 0, 0, 0, 0, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 85 },
+ { 3, 0, 0, 0, 1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 85 },
+ { 3, 0, 0, 0, 2, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 85 },
+ { 3, 0, 0, 0, 3, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 85 },
+ { 3, 0, 0, 0, 4, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 85 },
+ { 3, 0, 0, 0, 5, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 85 },
+ { 3, 0, 0, 0, 6, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 85 },
+ { 3, 0, 0, 0, 7, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 85 },
+ { 3, 0, 0, 0, 8, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 85 },
+ { 3, 0, 0, 0, 9, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 85 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 1, 24 },
+ { 0, 17, 0, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 24 },
+ { 17, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 1, 24 },
+ { 3, 0, 0, 0, 0, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 2, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 3, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 4, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 5, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 6, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 7, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 8, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 3, 0, 0, 0, 9, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 24 },
+ { 18, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 77 },
+ { 0, 17, 0, 5, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 77 },
+ { 1, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 77 },
+ { 18, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 19, 8, 1, 77 },
+ { 3, 0, 0, 0, 0, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 77 },
+ { 3, 0, 0, 0, 1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 77 },
+ { 3, 0, 0, 0, 2, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 77 },
+ { 3, 0, 0, 0, 3, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 77 },
+ { 3, 0, 0, 0, 4, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 77 },
+ { 3, 0, 0, 0, 5, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 77 },
+ { 3, 0, 0, 0, 6, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 77 },
+ { 3, 0, 0, 0, 7, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 77 },
+ { 3, 0, 0, 0, 8, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 77 },
+ { 3, 0, 0, 0, 9, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 77 },
+ { 25, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 77 },
+ { 25, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 77 },
+ { 18, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 1, 24 },
+ { 17, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 1, 24 },
+ { 29, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 0, 1, 24 },
+ { 1, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 4, 35, 4, 1, 24 },
+ { 18, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 1, 79 },
+ { 0, 17, 230, 5, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 79 },
+ { 0, 17, 220, 5, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 79 },
+ { 17, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 1, 79 },
+ { 25, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 0, 1, 79 },
+ { 18, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 86 },
+ { 1, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 86 },
+ { 0, 17, 0, 5, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 86 },
+ { 25, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 86 },
+ { 17, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 86 },
+ { 0, 17, 9, 5, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 86 },
+ { 18, 0, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 27 },
+ { 15, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, -928}, {0, -928}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 28, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 0, 1, 2 },
+ { 17, 0, 0, 0, -1, 0, 16, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 1, 4 },
+ { 15, 0, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 17, 0, 0, 0, -1, 0, 23, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 3, 3 },
+ { 28, 10, 0, 0, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 255}, {1, 255}, {1, 255} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 257}, {1, 257}, {1, 257} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 259}, {1, 259}, {1, 259} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 261}, {1, 261}, {1, 261} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 263}, {1, 263}, {1, 263} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 265}, {1, 265}, {1, 265} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 267}, {1, 267}, {1, 267} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 269}, {1, 269}, {1, 269} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 271}, {1, 271}, {1, 271} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 273}, {1, 273}, {1, 273} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 275}, {1, 275}, {1, 275} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 277}, {1, 277}, {1, 277} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 279}, {1, 279}, {1, 279} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 281}, {1, 281}, {1, 281} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 283}, {1, 283}, {1, 283} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 285}, {1, 285}, {1, 285} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 287}, {1, 287}, {1, 287} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 289}, {1, 289}, {1, 289} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 291}, {1, 291}, {1, 291} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 293}, {1, 293}, {1, 293} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 295}, {1, 295}, {1, 295} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 297}, {1, 297}, {1, 297} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 299}, {1, 299}, {1, 299} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 301}, {1, 301}, {1, 301} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 303}, {1, 303}, {1, 303} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 305}, {1, 305}, {1, 305} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 307}, {1, 307}, {1, 307} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 309}, {1, 309}, {1, 309} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 311}, {1, 311}, {1, 311} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 313}, {1, 313}, {1, 313} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 315}, {1, 315}, {1, 315} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 317}, {1, 317}, {1, 317} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 319}, {1, 319}, {1, 319} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 321}, {1, 321}, {1, 321} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 323}, {1, 323}, {1, 323} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 325}, {1, 325}, {1, 325} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 327}, {1, 327}, {1, 327} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 329}, {1, 329}, {1, 329} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 331}, {1, 331}, {1, 331} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 333}, {1, 333}, {1, 333} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 335}, {1, 335}, {1, 335} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 337}, {1, 337}, {1, 337} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 339}, {1, 339}, {1, 339} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 341}, {1, 341}, {1, 341} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 343}, {1, 343}, {1, 343} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 345}, {1, 345}, {1, 345} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 347}, {1, 347}, {1, 347} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 349}, {1, 349}, {1, 349} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 351}, {1, 351}, {1, 351} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 353}, {1, 353}, {1, 353} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 355}, {1, 355}, {1, 355} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 357}, {1, 357}, {1, 357} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 359}, {1, 359}, {1, 359} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 361}, {1, 361}, {1, 361} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 363}, {1, 363}, {1, 363} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 365}, {1, 365}, {1, 365} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 367}, {1, 367}, {1, 367} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 369}, {1, 369}, {1, 369} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 371}, {1, 371}, {1, 371} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 373}, {1, 373}, {1, 373} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 375}, {1, 375}, {1, 375} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 377}, {1, 377}, {1, 377} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 379}, {1, 379}, {1, 379} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 381}, {1, 381}, {1, 381} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 383}, {1, 383}, {1, 383} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 385}, {1, 385}, {1, 385} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 387}, {1, 387}, {1, 387} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 389}, {1, 389}, {1, 389} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 391}, {1, 391}, {1, 391} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 393}, {1, 393}, {1, 393} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 395}, {1, 395}, {1, 395} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 397}, {1, 397}, {1, 397} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 399}, {1, 399}, {1, 399} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 401}, {1, 401}, {1, 401} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 403}, {1, 403}, {1, 403} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 405}, {1, 405}, {1, 405} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 407}, {1, 407}, {1, 407} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 409}, {1, 409}, {1, 409} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 411}, {1, 411}, {1, 411} }, 0, 10, 14, 6, 3, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {1, 413}, {1, 413}, {1, 413} }, 0, 10, 14, 6, 3, 28 },
+ { 18, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 86 },
+ { 1, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 86 },
+ { 0, 17, 0, 5, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 86 },
+ { 25, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 86 },
+ { 0, 17, 9, 5, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 86 },
+ { 3, 0, 0, 0, 0, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 86 },
+ { 3, 0, 0, 0, 1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 86 },
+ { 3, 0, 0, 0, 2, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 86 },
+ { 3, 0, 0, 0, 3, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 86 },
+ { 3, 0, 0, 0, 4, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 86 },
+ { 3, 0, 0, 0, 5, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 86 },
+ { 3, 0, 0, 0, 6, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 86 },
+ { 3, 0, 0, 0, 7, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 86 },
+ { 3, 0, 0, 0, 8, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 86 },
+ { 3, 0, 0, 0, 9, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 86 },
+ { 18, 0, 0, 0, -1, 0, 2, 5, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 12, 10, 25, 8, 1, 26 },
+ { 18, 0, 0, 0, -1, 0, 2, 5, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 13, 10, 26, 8, 1, 26 },
+ { 11, 0, 0, 0, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 36, 0, 0, 0 },
+ { 12, 0, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 0 },
+ { 18, 0, 0, 0, -1, 0, 1, 5, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 3, 37 },
+ { 18, 0, 0, 0, -1, 0, 13, 5, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 3, 37 },
+ { 18, 0, 0, 0, -1, 0, 6, 5, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 3, 37 },
+ { 18, 0, 0, 0, -1, 0, 11, 5, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 3, 37 },
+ { 13, 0, 0, 0, -1, 0, 0, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 0, 0 },
+ { 18, 0, 0, 0, -1, 0, 8, 5, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 3, 37 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {1, 427}, {1, 424}, {0, 0} }, 0, 10, 14, 6, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {1, 433}, {1, 430}, {0, 0} }, 0, 10, 14, 6, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {1, 439}, {1, 436}, {0, 0} }, 0, 10, 14, 6, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {1, 446}, {1, 442}, {0, 0} }, 0, 10, 14, 6, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {1, 454}, {1, 450}, {0, 0} }, 0, 10, 14, 6, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {1, 461}, {1, 458}, {0, 1} }, 0, 10, 14, 6, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {1, 461}, {1, 458}, {0, 0} }, 0, 10, 14, 6, 3, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {1, 473}, {1, 470}, {0, 0} }, 0, 10, 14, 6, 3, 6 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {1, 479}, {1, 476}, {0, 0} }, 0, 10, 14, 6, 3, 6 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {1, 485}, {1, 482}, {0, 0} }, 0, 10, 14, 6, 3, 6 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {1, 491}, {1, 488}, {0, 0} }, 0, 10, 14, 6, 3, 6 },
+ { 15, 0, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {1, 497}, {1, 494}, {0, 0} }, 0, 10, 14, 6, 3, 6 },
+ { 18, 1, 0, 0, -1, 0, 4, 3, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 9, 15, 8, 3, 7 },
+ { 0, 17, 26, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 7 },
+ { 18, 1, 0, 0, -1, 0, 1, 3, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 9, 15, 8, 3, 7 },
+ { 18, 1, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 9, 15, 8, 3, 7 },
+ { 26, 3, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 7 },
+ { 18, 13, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 3, 8 },
+ { 28, 13, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 8 },
+ { 18, 13, 0, 0, -1, 0, 1, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 0, 8 },
+ { 22, 10, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 8 },
+ { 13, 18, 0, 0, -1, 0, 5, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 0 },
+ { 27, 13, 0, 0, -1, 0, 6, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 8 },
+ { 0, 17, 0, 5, -1, 0, 6, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 2, 1 },
+ { 25, 10, 0, 0, -1, 0, 8, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 10, 11, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 8, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 11, 3, 2 },
+ { 25, 10, 0, 0, -1, 0, 8, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 0, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 8, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 14, 10, 11, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 8, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 10, 0, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 8, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 0, 0, 2 },
+ { 21, 10, 0, 0, -1, 0, 8, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 3, 2 },
+ { 22, 10, 0, 0, -1, 0, 8, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 3, 2 },
+ { 25, 10, 0, 0, -1, 0, 8, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 0, 2 },
+ { 20, 10, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 11, 3, 2 },
+ { 19, 10, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 17, 16, 0, 3, 2 },
+ { 21, 10, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 0, 2 },
+ { 22, 10, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 0, 2 },
+ { 21, 10, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 3, 2 },
+ { 22, 10, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 3, 2 },
+ { 25, 10, 0, 0, -1, 0, 6, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 2 },
+ { 21, 10, 0, 0, -1, 0, 7, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 0, 2 },
+ { 22, 10, 0, 0, -1, 0, 7, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 0, 2 },
+ { 25, 6, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 1, 11, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 11, 3, 2 },
+ { 25, 6, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 13, 1, 10, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 7, 0, 0, 2 },
+ { 25, 6, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 14, 7, 11, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 12, 0, 2 },
+ { 21, 10, 0, 0, -1, 1, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 0, 2 },
+ { 22, 10, 0, 0, -1, -1, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 0, 2 },
+ { 21, 10, 0, 0, -1, 1, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 3, 2 },
+ { 22, 10, 0, 0, -1, -1, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 3, 2 },
+ { 25, 4, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 0, 2 },
+ { 26, 3, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 0, 2 },
+ { 20, 3, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 11, 3, 2 },
+ { 26, 10, 0, 0, -1, 1, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 0, 2 },
+ { 26, 10, 0, 0, -1, -1, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 0, 2 },
+ { 26, 10, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 0, 2 },
+ { 27, 4, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 0, 2 },
+ { 25, 4, 0, 0, -1, 0, 1, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
+ { 18, 13, 0, 0, -1, 0, 6, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 8 },
+ { 10, 18, 0, 5, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 24, 4, 2, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 12, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 0, 2 },
+ { 25, 4, 0, 0, -1, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 0, 2 },
+ { 27, 4, 0, 0, -1, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 0, 2 },
+ { 25, 4, 0, 0, -1, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 13, 16, 0, 0, 2 },
+ { 21, 10, 0, 0, -1, 1, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 0, 2 },
+ { 22, 10, 0, 0, -1, -1, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 0, 2 },
+ { 26, 3, 0, 0, -1, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 0, 2 },
+ { 25, 6, 0, 0, -1, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 1, 11, 0, 2 },
+ { 20, 3, 0, 0, -1, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 11, 3, 2 },
+ { 25, 6, 0, 0, -1, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 13, 1, 10, 3, 2 },
+ { 25, 6, 0, 0, -1, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 0, 2 },
+ { 3, 2, 0, 0, 0, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 3, 2 },
+ { 3, 2, 0, 0, 1, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 3, 2 },
+ { 3, 2, 0, 0, 2, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 3, 2 },
+ { 3, 2, 0, 0, 3, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 3, 2 },
+ { 3, 2, 0, 0, 4, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 3, 2 },
+ { 3, 2, 0, 0, 5, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 3, 2 },
+ { 3, 2, 0, 0, 6, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 3, 2 },
+ { 3, 2, 0, 0, 7, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 3, 2 },
+ { 3, 2, 0, 0, 8, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 3, 2 },
+ { 3, 2, 0, 0, 9, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 3, 2 },
+ { 25, 6, 0, 0, -1, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 14, 7, 11, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 7, 0, 0, 2 },
+ { 26, 10, 0, 0, -1, 2, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 0, 2 },
+ { 26, 10, 0, 0, -1, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 0, 2 },
+ { 26, 10, 0, 0, -1, -2, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 0, 2 },
+ { 14, 0, 0, 0, -1, 0, 1, 1, 80, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 16, 7, 3, 3 },
+ { 21, 10, 0, 0, -1, 2, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 0, 2 },
+ { 22, 10, 0, 0, -1, -2, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 0, 2 },
+ { 28, 10, 0, 0, -1, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 0, 2 },
+ { 19, 10, 0, 0, -1, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 17, 16, 0, 3, 2 },
+ { 15, 0, 0, 0, -1, 0, 1, 1, 80, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 16, 6, 3, 3 },
+ { 21, 10, 0, 0, -1, 1, 6, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 3, 2 },
+ { 22, 10, 0, 0, -1, -1, 6, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 3, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 2, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 12, 3, 2 },
+ { 21, 10, 0, 0, -1, 1, 1, 2, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 3, 2 },
+ { 22, 10, 0, 0, -1, -1, 1, 2, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 3, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 2, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 11, 3, 2 },
+ { 25, 10, 0, 0, -1, 0, 1, 2, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 7, 0, 3, 2 },
+ { 18, 0, 0, 0, -1, 0, 1, 2, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 16, 8, 3, 35 },
+ { 18, 0, 0, 0, -1, 0, 1, 2, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 7, 8, 3, 35 },
+ { 17, 0, 0, 0, -1, 0, 1, 2, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 7, 8, 3, 2 },
+ { 17, 0, 0, 0, -1, 0, 1, 2, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 7, 4, 3, 2 },
+ { 18, 0, 0, 0, -1, 0, 1, 2, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 16, 8, 0, 26 },
+ { 18, 0, 0, 0, -1, 0, 1, 2, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 16, 8, 3, 26 },
+ { 27, 4, 0, 0, -1, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 3, 2 },
+ { 27, 4, 0, 0, -1, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 3, 2 },
+ { 26, 10, 0, 0, -1, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 3, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 3, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 2, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 26, 10, 0, 0, -1, 0, 1, 2, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 10, 10, 0, 5, -1, 0, 4, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 23, 4, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 3, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 31, 0, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 13, 18, 0, 0, -1, 0, 1, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 0 },
+ { 18, 0, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 49 },
+ { 25, 0, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 2 },
+ { 25, 10, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 2 },
+ { 5, 0, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 0, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 4, 10, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 4 },
+ { 5, 10, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 4 },
+ { 29, 10, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 4 },
+ { 5, 10, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 4 },
+ { 29, 10, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 4 },
+ { 29, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 4 },
+ { 18, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 74 },
+ { 18, 0, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 75 },
+ { 5, 2, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 18, 0, 0, 0, -1, 0, 5, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 39 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 39 },
+ { 5, 0, 0, 0, -1, 0, 5, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 39 },
+ { 18, 0, 0, 0, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 39 },
+ { 18, 0, 0, 0, -1, 0, 5, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 40 },
+ { 4, 0, 0, 0, -1, 0, 5, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 40 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 120 },
+ { 0, 17, 230, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 120 },
+ { 18, 0, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 50 },
+ { 25, 0, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 50 },
+ { 18, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 60 },
+ { 25, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 60 },
+ { 4, 0, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 60 },
+ { 14, 0, 0, 0, -1, 0, 5, 3, 0, { {0, 40}, {0, 0}, {0, 0}, {0, 40} }, 0, 10, 14, 7, 3, 41 },
+ { 14, 0, 0, 0, -1, 0, 7, 3, 0, { {0, 40}, {0, 0}, {0, 0}, {0, 40} }, 0, 10, 14, 7, 3, 41 },
+ { 15, 0, 0, 0, -1, 0, 5, 3, 0, { {0, 0}, {0, -40}, {0, -40}, {0, 0} }, 0, 10, 14, 6, 1, 41 },
+ { 15, 0, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, -40}, {0, -40}, {0, 0} }, 0, 10, 14, 6, 1, 41 },
+ { 18, 0, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 51 },
+ { 18, 0, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 52 },
+ { 3, 0, 0, 0, 0, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 52 },
+ { 3, 0, 0, 0, 1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 52 },
+ { 3, 0, 0, 0, 2, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 52 },
+ { 3, 0, 0, 0, 3, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 52 },
+ { 3, 0, 0, 0, 4, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 52 },
+ { 3, 0, 0, 0, 5, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 52 },
+ { 3, 0, 0, 0, 6, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 52 },
+ { 3, 0, 0, 0, 7, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 52 },
+ { 3, 0, 0, 0, 8, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 52 },
+ { 3, 0, 0, 0, 9, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 52 },
+ { 14, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 40}, {0, 0}, {0, 0}, {0, 40} }, 0, 10, 14, 7, 3, 136 },
+ { 15, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, -40}, {0, -40}, {0, 0} }, 0, 10, 14, 6, 1, 136 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 106 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 103 },
+ { 25, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 103 },
+ { 14, 0, 0, 0, -1, 0, 24, 3, 0, { {0, 39}, {0, 0}, {0, 0}, {0, 39} }, 0, 10, 14, 7, 3, 161 },
+ { 15, 0, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, -39}, {0, -39}, {0, 0} }, 0, 10, 14, 6, 1, 161 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 110 },
+ { 17, 0, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 17, 0, 0, 0, -1, 0, 24, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 3, 3 },
+ { 18, 1, 0, 0, -1, 0, 7, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 53 },
+ { 18, 1, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 87 },
+ { 25, 1, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 87 },
+ { 5, 1, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 87 },
+ { 18, 1, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 118 },
+ { 29, 1, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 118 },
+ { 5, 1, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 118 },
+ { 18, 1, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 117 },
+ { 5, 1, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 117 },
+ { 18, 1, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 128 },
+ { 5, 1, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 128 },
+ { 18, 1, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 64 },
+ { 5, 1, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 64 },
+ { 5, 1, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 64 },
+ { 25, 10, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 64 },
+ { 18, 1, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 76 },
+ { 25, 1, 0, 0, -1, 0, 10, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 76 },
+ { 18, 1, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 98 },
+ { 18, 1, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 97 },
+ { 5, 1, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 97 },
+ { 18, 1, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 61 },
+ { 0, 17, 0, 5, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 61 },
+ { 0, 17, 220, 5, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 61 },
+ { 0, 17, 230, 5, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 61 },
+ { 18, 1, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 61 },
+ { 0, 17, 1, 5, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 61 },
+ { 0, 17, 9, 5, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 61 },
+ { 5, 1, 0, 0, 1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 61 },
+ { 5, 1, 0, 0, 2, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 61 },
+ { 5, 1, 0, 0, 3, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 61 },
+ { 5, 1, 0, 0, 4, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 61 },
+ { 5, 1, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 61 },
+ { 5, 1, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 61 },
+ { 25, 1, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 61 },
+ { 25, 1, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 61 },
+ { 25, 1, 0, 0, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 61 },
+ { 18, 1, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 88 },
+ { 5, 1, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 88 },
+ { 25, 1, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 88 },
+ { 18, 1, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 116 },
+ { 5, 1, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 116 },
+ { 18, 1, 0, 2, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 112 },
+ { 18, 1, 0, 3, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 112 },
+ { 18, 1, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 112 },
+ { 29, 1, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 112 },
+ { 18, 1, 0, 4, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 112 },
+ { 0, 17, 230, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 112 },
+ { 0, 17, 220, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 112 },
+ { 5, 1, 0, 2, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 112 },
+ { 5, 1, 0, 3, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 112 },
+ { 25, 1, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 112 },
+ { 25, 1, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 1, 112 },
+ { 18, 1, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 80 },
+ { 25, 10, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 80 },
+ { 18, 1, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 89 },
+ { 5, 1, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 89 },
+ { 18, 1, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 90 },
+ { 5, 1, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 90 },
+ { 18, 1, 0, 2, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 121 },
+ { 18, 1, 0, 3, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 121 },
+ { 25, 1, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 121 },
+ { 5, 1, 0, 3, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 121 },
+ { 5, 1, 0, 2, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 121 },
+ { 5, 1, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 121 },
+ { 18, 1, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 91 },
+ { 14, 1, 0, 0, -1, 0, 17, 3, 0, { {0, 64}, {0, 0}, {0, 0}, {0, 64} }, 0, 10, 14, 7, 3, 130 },
+ { 15, 1, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, -64}, {0, -64}, {0, 0} }, 0, 10, 14, 6, 1, 130 },
+ { 5, 1, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 130 },
+ { 18, 13, 0, 4, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 144 },
+ { 18, 13, 0, 2, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 144 },
+ { 18, 13, 0, 3, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 144 },
+ { 0, 17, 230, 5, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 144 },
+ { 3, 5, 0, 0, 0, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 144 },
+ { 3, 5, 0, 0, 1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 144 },
+ { 3, 5, 0, 0, 2, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 144 },
+ { 3, 5, 0, 0, 3, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 144 },
+ { 3, 5, 0, 0, 4, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 144 },
+ { 3, 5, 0, 0, 5, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 144 },
+ { 3, 5, 0, 0, 6, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 144 },
+ { 3, 5, 0, 0, 7, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 144 },
+ { 3, 5, 0, 0, 8, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 144 },
+ { 3, 5, 0, 0, 9, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 144 },
+ { 5, 5, 0, 0, 1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 8 },
+ { 5, 5, 0, 0, 2, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 8 },
+ { 5, 5, 0, 0, 3, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 8 },
+ { 5, 5, 0, 0, 4, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 8 },
+ { 5, 5, 0, 0, 5, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 8 },
+ { 5, 5, 0, 0, 6, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 8 },
+ { 5, 5, 0, 0, 7, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 8 },
+ { 5, 5, 0, 0, 8, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 8 },
+ { 5, 5, 0, 0, 9, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 8 },
+ { 5, 5, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 8 },
+ { 18, 1, 0, 0, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 156 },
+ { 0, 17, 230, 5, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 156 },
+ { 20, 1, 0, 0, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 156 },
+ { 0, 17, 220, 5, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 8 },
+ { 18, 1, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 147 },
+ { 5, 1, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 147 },
+ { 18, 13, 0, 2, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 148 },
+ { 18, 13, 0, 3, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 148 },
+ { 18, 13, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 148 },
+ { 0, 17, 220, 5, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 148 },
+ { 0, 17, 230, 5, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 148 },
+ { 5, 13, 0, 2, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 148 },
+ { 5, 13, 0, 3, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 148 },
+ { 25, 13, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 12, 1, 148 },
+ { 18, 1, 0, 2, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 158 },
+ { 18, 1, 0, 3, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 158 },
+ { 0, 17, 230, 5, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 158 },
+ { 0, 17, 220, 5, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 158 },
+ { 25, 1, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 12, 1, 158 },
+ { 18, 1, 0, 2, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 153 },
+ { 18, 1, 0, 0, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 153 },
+ { 18, 1, 0, 3, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 153 },
+ { 5, 1, 0, 0, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 153 },
+ { 5, 1, 0, 3, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 153 },
+ { 5, 1, 0, 2, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 153 },
+ { 5, 1, 0, 4, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 153 },
+ { 18, 1, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 149 },
+ { 1, 0, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 94 },
+ { 0, 17, 0, 5, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 94 },
+ { 18, 0, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 94 },
+ { 0, 17, 9, 5, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 94 },
+ { 25, 0, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 94 },
+ { 25, 0, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 94 },
+ { 5, 10, 0, 0, 1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 94 },
+ { 5, 10, 0, 0, 2, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 94 },
+ { 5, 10, 0, 0, 3, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 94 },
+ { 5, 10, 0, 0, 4, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 94 },
+ { 5, 10, 0, 0, 5, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 94 },
+ { 5, 10, 0, 0, 6, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 94 },
+ { 5, 10, 0, 0, 7, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 94 },
+ { 5, 10, 0, 0, 8, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 94 },
+ { 5, 10, 0, 0, 9, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 94 },
+ { 5, 10, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 94 },
+ { 3, 0, 0, 0, 0, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 1, 94 },
+ { 3, 0, 0, 0, 1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 1, 94 },
+ { 3, 0, 0, 0, 2, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 1, 94 },
+ { 3, 0, 0, 0, 3, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 1, 94 },
+ { 3, 0, 0, 0, 4, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 1, 94 },
+ { 3, 0, 0, 0, 5, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 1, 94 },
+ { 3, 0, 0, 0, 6, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 1, 94 },
+ { 3, 0, 0, 0, 7, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 1, 94 },
+ { 3, 0, 0, 0, 8, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 1, 94 },
+ { 3, 0, 0, 0, 9, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 1, 94 },
+ { 0, 17, 9, 5, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 94 },
+ { 18, 0, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 94 },
+ { 0, 17, 0, 5, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 94 },
+ { 0, 17, 9, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 6, 4, 1, 94 },
+ { 0, 17, 0, 5, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 92 },
+ { 1, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 92 },
+ { 18, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 92 },
+ { 18, 0, 0, 0, -1, 0, 11, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 92 },
+ { 0, 17, 9, 5, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 92 },
+ { 0, 17, 7, 5, -1, 0, 11, 3, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 92 },
+ { 25, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 92 },
+ { 10, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 16, 13, 9, 0, 92 },
+ { 25, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 92 },
+ { 0, 17, 0, 5, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 92 },
+ { 10, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 16, 13, 9, 0, 92 },
+ { 18, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 101 },
+ { 3, 0, 0, 0, 0, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 101 },
+ { 3, 0, 0, 0, 1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 101 },
+ { 3, 0, 0, 0, 2, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 101 },
+ { 3, 0, 0, 0, 3, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 101 },
+ { 3, 0, 0, 0, 4, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 101 },
+ { 3, 0, 0, 0, 5, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 101 },
+ { 3, 0, 0, 0, 6, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 101 },
+ { 3, 0, 0, 0, 7, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 101 },
+ { 3, 0, 0, 0, 8, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 101 },
+ { 3, 0, 0, 0, 9, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 101 },
+ { 0, 17, 230, 5, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 96 },
+ { 18, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 96 },
+ { 0, 17, 0, 5, -1, 0, 13, 3, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 96 },
+ { 0, 17, 0, 5, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 96 },
+ { 1, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 96 },
+ { 0, 17, 0, 5, -1, 0, 13, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 96 },
+ { 0, 17, 9, 5, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 96 },
+ { 3, 0, 0, 0, 0, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 96 },
+ { 3, 0, 0, 0, 1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 96 },
+ { 3, 0, 0, 0, 2, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 96 },
+ { 3, 0, 0, 0, 3, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 96 },
+ { 3, 0, 0, 0, 4, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 96 },
+ { 3, 0, 0, 0, 5, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 96 },
+ { 3, 0, 0, 0, 6, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 96 },
+ { 3, 0, 0, 0, 7, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 96 },
+ { 3, 0, 0, 0, 8, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 96 },
+ { 3, 0, 0, 0, 9, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 96 },
+ { 25, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 96 },
+ { 25, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 96 },
+ { 18, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 96 },
+ { 1, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 96 },
+ { 18, 0, 0, 0, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 96 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 111 },
+ { 0, 17, 7, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 111 },
+ { 25, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 111 },
+ { 25, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 20, 0, 1, 111 },
+ { 0, 17, 0, 5, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 100 },
+ { 1, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 100 },
+ { 18, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 100 },
+ { 1, 0, 9, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 100 },
+ { 18, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 10, 14, 8, 1, 100 },
+ { 25, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 100 },
+ { 25, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 100 },
+ { 25, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 100 },
+ { 0, 17, 0, 5, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 100 },
+ { 0, 17, 7, 5, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 100 },
+ { 25, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 12, 1, 100 },
+ { 1, 0, 0, 0, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 100 },
+ { 0, 17, 0, 5, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 100 },
+ { 3, 0, 0, 0, 0, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 100 },
+ { 3, 0, 0, 0, 1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 100 },
+ { 3, 0, 0, 0, 2, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 100 },
+ { 3, 0, 0, 0, 3, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 100 },
+ { 3, 0, 0, 0, 4, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 100 },
+ { 3, 0, 0, 0, 5, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 100 },
+ { 3, 0, 0, 0, 6, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 100 },
+ { 3, 0, 0, 0, 7, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 100 },
+ { 3, 0, 0, 0, 8, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 100 },
+ { 3, 0, 0, 0, 9, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 100 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 100 },
+ { 25, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 20, 0, 1, 100 },
+ { 18, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 100 },
+ { 25, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 100 },
+ { 25, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 100 },
+ { 5, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 20 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 109 },
+ { 1, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 109 },
+ { 0, 17, 0, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 109 },
+ { 1, 0, 9, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 109 },
+ { 0, 17, 7, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 109 },
+ { 25, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 109 },
+ { 25, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 109 },
+ { 0, 17, 0, 5, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 109 },
+ { 18, 0, 0, 0, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 109 },
+ { 0, 17, 0, 5, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 109 },
+ { 18, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 129 },
+ { 25, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 129 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 123 },
+ { 0, 17, 0, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 123 },
+ { 1, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 123 },
+ { 0, 17, 7, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 123 },
+ { 0, 17, 9, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 123 },
+ { 3, 0, 0, 0, 0, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 123 },
+ { 3, 0, 0, 0, 1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 123 },
+ { 3, 0, 0, 0, 2, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 123 },
+ { 3, 0, 0, 0, 3, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 123 },
+ { 3, 0, 0, 0, 4, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 123 },
+ { 3, 0, 0, 0, 5, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 123 },
+ { 3, 0, 0, 0, 6, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 123 },
+ { 3, 0, 0, 0, 7, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 123 },
+ { 3, 0, 0, 0, 8, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 123 },
+ { 3, 0, 0, 0, 9, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 123 },
+ { 0, 17, 0, 5, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 107 },
+ { 0, 17, 0, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 107 },
+ { 1, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 107 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 107 },
+ { 0, 17, 7, 5, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 7, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 107 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 19, 8, 1, 107 },
+ { 1, 0, 0, 0, -1, 0, 16, 3, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 107 },
+ { 1, 0, 0, 0, -1, 0, 16, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 107 },
+ { 1, 0, 9, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 107 },
+ { 18, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 107 },
+ { 0, 17, 230, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 107 },
+ { 18, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 135 },
+ { 1, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 135 },
+ { 0, 17, 0, 5, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 135 },
+ { 0, 17, 9, 5, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 135 },
+ { 0, 17, 7, 5, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 135 },
+ { 25, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 135 },
+ { 25, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 135 },
+ { 25, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 135 },
+ { 3, 0, 0, 0, 0, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 135 },
+ { 3, 0, 0, 0, 1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 135 },
+ { 3, 0, 0, 0, 2, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 135 },
+ { 3, 0, 0, 0, 3, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 135 },
+ { 3, 0, 0, 0, 4, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 135 },
+ { 3, 0, 0, 0, 5, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 135 },
+ { 3, 0, 0, 0, 6, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 135 },
+ { 3, 0, 0, 0, 7, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 135 },
+ { 3, 0, 0, 0, 8, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 135 },
+ { 3, 0, 0, 0, 9, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 135 },
+ { 25, 0, 0, 0, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 135 },
+ { 0, 17, 230, 5, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 135 },
+ { 18, 0, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 135 },
+ { 18, 0, 0, 0, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 135 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 124 },
+ { 1, 0, 0, 0, -1, 0, 16, 3, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 124 },
+ { 1, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 124 },
+ { 0, 17, 0, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 124 },
+ { 0, 17, 0, 5, -1, 0, 16, 3, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 124 },
+ { 1, 0, 0, 0, -1, 0, 16, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 124 },
+ { 0, 17, 9, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 124 },
+ { 0, 17, 7, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 124 },
+ { 25, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 124 },
+ { 3, 0, 0, 0, 0, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 124 },
+ { 3, 0, 0, 0, 1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 124 },
+ { 3, 0, 0, 0, 2, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 124 },
+ { 3, 0, 0, 0, 3, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 124 },
+ { 3, 0, 0, 0, 4, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 124 },
+ { 3, 0, 0, 0, 5, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 124 },
+ { 3, 0, 0, 0, 6, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 124 },
+ { 3, 0, 0, 0, 7, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 124 },
+ { 3, 0, 0, 0, 8, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 124 },
+ { 3, 0, 0, 0, 9, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 124 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 122 },
+ { 1, 0, 0, 0, -1, 0, 16, 3, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 122 },
+ { 1, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 122 },
+ { 0, 17, 0, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 122 },
+ { 1, 0, 0, 0, -1, 0, 16, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 122 },
+ { 0, 17, 9, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 122 },
+ { 0, 17, 7, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 122 },
+ { 25, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 20, 0, 1, 122 },
+ { 25, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 122 },
+ { 25, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 0, 1, 122 },
+ { 25, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 122 },
+ { 25, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 122 },
+ { 18, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 122 },
+ { 0, 17, 0, 5, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 122 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 114 },
+ { 1, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 114 },
+ { 0, 17, 0, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 114 },
+ { 0, 17, 9, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 114 },
+ { 25, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 114 },
+ { 25, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 114 },
+ { 3, 0, 0, 0, 0, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 114 },
+ { 3, 0, 0, 0, 1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 114 },
+ { 3, 0, 0, 0, 2, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 114 },
+ { 3, 0, 0, 0, 3, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 114 },
+ { 3, 0, 0, 0, 4, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 114 },
+ { 3, 0, 0, 0, 5, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 114 },
+ { 3, 0, 0, 0, 6, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 114 },
+ { 3, 0, 0, 0, 7, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 114 },
+ { 3, 0, 0, 0, 8, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 114 },
+ { 3, 0, 0, 0, 9, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 114 },
+ { 25, 10, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 20, 0, 1, 33 },
+ { 18, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 102 },
+ { 0, 17, 0, 5, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 102 },
+ { 1, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 102 },
+ { 1, 0, 9, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 102 },
+ { 0, 17, 7, 5, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 102 },
+ { 18, 0, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 102 },
+ { 25, 0, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 102 },
+ { 3, 0, 0, 0, 0, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 102 },
+ { 3, 0, 0, 0, 1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 102 },
+ { 3, 0, 0, 0, 2, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 102 },
+ { 3, 0, 0, 0, 3, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 102 },
+ { 3, 0, 0, 0, 4, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 102 },
+ { 3, 0, 0, 0, 5, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 102 },
+ { 3, 0, 0, 0, 6, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 102 },
+ { 3, 0, 0, 0, 7, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 102 },
+ { 3, 0, 0, 0, 8, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 102 },
+ { 3, 0, 0, 0, 9, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 102 },
+ { 18, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 1, 126 },
+ { 18, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 1, 126 },
+ { 0, 17, 0, 5, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 126 },
+ { 1, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 4, 35, 4, 1, 126 },
+ { 1, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 35, 4, 1, 126 },
+ { 0, 17, 9, 5, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 35, 4, 1, 126 },
+ { 3, 0, 0, 0, 0, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 126 },
+ { 3, 0, 0, 0, 1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 126 },
+ { 3, 0, 0, 0, 2, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 126 },
+ { 3, 0, 0, 0, 3, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 126 },
+ { 3, 0, 0, 0, 4, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 126 },
+ { 3, 0, 0, 0, 5, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 126 },
+ { 3, 0, 0, 0, 6, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 126 },
+ { 3, 0, 0, 0, 7, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 126 },
+ { 3, 0, 0, 0, 8, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 126 },
+ { 3, 0, 0, 0, 9, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 126 },
+ { 5, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 0, 1, 126 },
+ { 25, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 126 },
+ { 29, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 0, 1, 126 },
+ { 18, 0, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 8, 1, 126 },
+ { 18, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 142 },
+ { 1, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 142 },
+ { 0, 17, 0, 5, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 142 },
+ { 0, 17, 9, 5, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 142 },
+ { 0, 17, 7, 5, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 142 },
+ { 25, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 142 },
+ { 14, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 14, 7, 3, 125 },
+ { 15, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 14, 6, 1, 125 },
+ { 3, 0, 0, 0, 0, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 125 },
+ { 3, 0, 0, 0, 1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 125 },
+ { 3, 0, 0, 0, 2, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 125 },
+ { 3, 0, 0, 0, 3, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 125 },
+ { 3, 0, 0, 0, 4, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 125 },
+ { 3, 0, 0, 0, 5, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 125 },
+ { 3, 0, 0, 0, 6, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 125 },
+ { 3, 0, 0, 0, 7, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 125 },
+ { 3, 0, 0, 0, 8, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 125 },
+ { 3, 0, 0, 0, 9, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 125 },
+ { 5, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 125 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 125 },
+ { 18, 0, 0, 0, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 154 },
+ { 1, 0, 0, 0, -1, 0, 23, 3, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 154 },
+ { 1, 0, 0, 0, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 154 },
+ { 1, 0, 0, 0, -1, 0, 23, 3, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 154 },
+ { 0, 17, 0, 5, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 154 },
+ { 1, 0, 9, 0, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 154 },
+ { 0, 17, 9, 5, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 154 },
+ { 18, 0, 0, 0, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 10, 14, 8, 1, 154 },
+ { 0, 17, 7, 5, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 154 },
+ { 25, 0, 0, 0, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 154 },
+ { 25, 0, 0, 0, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 154 },
+ { 3, 0, 0, 0, 0, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 154 },
+ { 3, 0, 0, 0, 1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 154 },
+ { 3, 0, 0, 0, 2, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 154 },
+ { 3, 0, 0, 0, 3, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 154 },
+ { 3, 0, 0, 0, 4, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 154 },
+ { 3, 0, 0, 0, 5, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 154 },
+ { 3, 0, 0, 0, 6, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 154 },
+ { 3, 0, 0, 0, 7, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 154 },
+ { 3, 0, 0, 0, 8, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 154 },
+ { 3, 0, 0, 0, 9, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 16, 9, 1, 154 },
+ { 18, 0, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 150 },
+ { 1, 0, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 150 },
+ { 0, 17, 0, 5, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 150 },
+ { 0, 17, 9, 5, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 150 },
+ { 25, 0, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 20, 0, 1, 150 },
+ { 18, 0, 0, 0, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 141 },
+ { 0, 17, 0, 5, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 141 },
+ { 0, 0, 0, 5, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 141 },
+ { 0, 17, 9, 5, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 141 },
+ { 1, 0, 0, 0, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 141 },
+ { 18, 0, 0, 0, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 10, 14, 8, 1, 141 },
+ { 25, 0, 0, 0, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 20, 0, 1, 141 },
+ { 25, 0, 0, 0, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 141 },
+ { 25, 0, 0, 0, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 141 },
+ { 25, 0, 0, 0, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 141 },
+ { 18, 0, 0, 0, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 140 },
+ { 0, 17, 0, 5, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 140 },
+ { 1, 0, 0, 0, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 140 },
+ { 18, 0, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 10, 14, 8, 1, 140 },
+ { 18, 0, 0, 0, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 10, 14, 8, 1, 140 },
+ { 0, 17, 9, 5, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 140 },
+ { 25, 0, 0, 0, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 140 },
+ { 25, 0, 0, 0, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 140 },
+ { 18, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 140 },
+ { 25, 0, 0, 0, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 20, 0, 1, 140 },
+ { 18, 0, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 29 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 119 },
+ { 25, 0, 0, 0, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 20, 0, 1, 11 },
+ { 18, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 133 },
+ { 1, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 133 },
+ { 0, 17, 0, 5, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 133 },
+ { 0, 0, 9, 5, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 133 },
+ { 25, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 133 },
+ { 25, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 133 },
+ { 3, 0, 0, 0, 0, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 133 },
+ { 3, 0, 0, 0, 1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 133 },
+ { 3, 0, 0, 0, 2, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 133 },
+ { 3, 0, 0, 0, 3, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 133 },
+ { 3, 0, 0, 0, 4, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 133 },
+ { 3, 0, 0, 0, 5, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 133 },
+ { 3, 0, 0, 0, 6, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 133 },
+ { 3, 0, 0, 0, 7, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 133 },
+ { 3, 0, 0, 0, 8, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 133 },
+ { 3, 0, 0, 0, 9, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 133 },
+ { 5, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 133 },
+ { 25, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 20, 0, 1, 134 },
+ { 25, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 8, 0, 1, 134 },
+ { 18, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 134 },
+ { 0, 17, 0, 5, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 134 },
+ { 1, 0, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 134 },
+ { 18, 0, 0, 0, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 138 },
+ { 0, 17, 0, 5, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 138 },
+ { 0, 17, 7, 5, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 138 },
+ { 0, 17, 9, 5, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 138 },
+ { 18, 0, 0, 0, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 10, 14, 8, 1, 138 },
+ { 3, 0, 0, 0, 0, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 138 },
+ { 3, 0, 0, 0, 1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 138 },
+ { 3, 0, 0, 0, 2, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 138 },
+ { 3, 0, 0, 0, 3, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 138 },
+ { 3, 0, 0, 0, 4, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 138 },
+ { 3, 0, 0, 0, 5, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 138 },
+ { 3, 0, 0, 0, 6, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 138 },
+ { 3, 0, 0, 0, 7, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 138 },
+ { 3, 0, 0, 0, 8, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 138 },
+ { 3, 0, 0, 0, 9, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 138 },
+ { 18, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 143 },
+ { 1, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 143 },
+ { 0, 17, 0, 5, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 143 },
+ { 0, 17, 9, 5, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 143 },
+ { 3, 0, 0, 0, 0, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 143 },
+ { 3, 0, 0, 0, 1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 143 },
+ { 3, 0, 0, 0, 2, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 143 },
+ { 3, 0, 0, 0, 3, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 143 },
+ { 3, 0, 0, 0, 4, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 143 },
+ { 3, 0, 0, 0, 5, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 143 },
+ { 3, 0, 0, 0, 6, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 143 },
+ { 3, 0, 0, 0, 7, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 143 },
+ { 3, 0, 0, 0, 8, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 143 },
+ { 3, 0, 0, 0, 9, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 143 },
+ { 18, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 145 },
+ { 18, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 19, 8, 1, 145 },
+ { 0, 17, 0, 5, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 145 },
+ { 1, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 145 },
+ { 25, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 145 },
+ { 0, 17, 0, 5, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 162 },
+ { 18, 0, 0, 0, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 10, 14, 8, 1, 162 },
+ { 1, 0, 0, 0, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 162 },
+ { 18, 0, 0, 0, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 162 },
+ { 1, 0, 9, 0, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 162 },
+ { 0, 17, 9, 5, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 162 },
+ { 25, 0, 0, 0, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 162 },
+ { 25, 0, 0, 0, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 162 },
+ { 3, 0, 0, 0, 0, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 1, 162 },
+ { 3, 0, 0, 0, 1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 1, 162 },
+ { 3, 0, 0, 0, 2, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 1, 162 },
+ { 3, 0, 0, 0, 3, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 1, 162 },
+ { 3, 0, 0, 0, 4, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 1, 162 },
+ { 3, 0, 0, 0, 5, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 1, 162 },
+ { 3, 0, 0, 0, 6, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 1, 162 },
+ { 3, 0, 0, 0, 7, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 1, 162 },
+ { 3, 0, 0, 0, 8, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 1, 162 },
+ { 3, 0, 0, 0, 9, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 1, 162 },
+ { 18, 0, 0, 0, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 83 },
+ { 5, 0, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 16 },
+ { 29, 10, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 16 },
+ { 27, 4, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 16 },
+ { 25, 0, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 16 },
+ { 18, 0, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 63 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 63 },
+ { 18, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 63 },
+ { 4, 0, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 63 },
+ { 4, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 63 },
+ { 25, 0, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 63 },
+ { 25, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 63 },
+ { 18, 0, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 157 },
+ { 25, 0, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 157 },
+ { 18, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 81 },
+ { 18, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 0, 8, 1, 81 },
+ { 18, 0, 0, 0, -1, 0, 11, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 1, 8, 1, 81 },
+ { 18, 0, 0, 0, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 0, 8, 1, 81 },
+ { 10, 0, 0, 5, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 6, 4, 0, 81 },
+ { 10, 0, 0, 5, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 0, 4, 0, 81 },
+ { 10, 0, 0, 5, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 1, 4, 0, 81 },
+ { 10, 0, 0, 5, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 6, 4, 0, 81 },
+ { 10, 0, 0, 5, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 0, 4, 0, 81 },
+ { 10, 0, 0, 5, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 1, 4, 0, 81 },
+ { 0, 17, 0, 5, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 81 },
+ { 18, 0, 0, 0, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 81 },
+ { 18, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 127 },
+ { 18, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 0, 8, 1, 127 },
+ { 18, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 1, 8, 1, 127 },
+ { 18, 0, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 84 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 115 },
+ { 3, 0, 0, 0, 0, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 115 },
+ { 3, 0, 0, 0, 1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 115 },
+ { 3, 0, 0, 0, 2, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 115 },
+ { 3, 0, 0, 0, 3, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 115 },
+ { 3, 0, 0, 0, 4, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 115 },
+ { 3, 0, 0, 0, 5, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 115 },
+ { 3, 0, 0, 0, 6, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 115 },
+ { 3, 0, 0, 0, 7, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 115 },
+ { 3, 0, 0, 0, 8, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 115 },
+ { 3, 0, 0, 0, 9, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 115 },
+ { 25, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 115 },
+ { 18, 0, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 159 },
+ { 3, 0, 0, 0, 0, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 159 },
+ { 3, 0, 0, 0, 1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 159 },
+ { 3, 0, 0, 0, 2, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 159 },
+ { 3, 0, 0, 0, 3, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 159 },
+ { 3, 0, 0, 0, 4, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 159 },
+ { 3, 0, 0, 0, 5, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 159 },
+ { 3, 0, 0, 0, 6, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 159 },
+ { 3, 0, 0, 0, 7, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 159 },
+ { 3, 0, 0, 0, 8, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 159 },
+ { 3, 0, 0, 0, 9, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 159 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 104 },
+ { 0, 17, 1, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 104 },
+ { 25, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 104 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 108 },
+ { 0, 17, 230, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 108 },
+ { 25, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 108 },
+ { 25, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 108 },
+ { 25, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 108 },
+ { 29, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 108 },
+ { 17, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 108 },
+ { 3, 0, 0, 0, 0, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 108 },
+ { 3, 0, 0, 0, 1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 108 },
+ { 3, 0, 0, 0, 2, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 108 },
+ { 3, 0, 0, 0, 3, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 108 },
+ { 3, 0, 0, 0, 4, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 108 },
+ { 3, 0, 0, 0, 5, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 108 },
+ { 3, 0, 0, 0, 6, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 108 },
+ { 3, 0, 0, 0, 7, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 108 },
+ { 3, 0, 0, 0, 8, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 108 },
+ { 3, 0, 0, 0, 9, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 108 },
+ { 5, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 108 },
+ { 14, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 14, 7, 3, 146 },
+ { 15, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 14, 6, 1, 146 },
+ { 5, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 146 },
+ { 25, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 146 },
+ { 25, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 146 },
+ { 25, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 146 },
+ { 18, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 99 },
+ { 18, 0, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 99 },
+ { 0, 17, 0, 5, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 99 },
+ { 1, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 99 },
+ { 1, 0, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 99 },
+ { 0, 17, 0, 5, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 99 },
+ { 17, 0, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 99 },
+ { 17, 0, 0, 0, -1, 0, 18, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 7, 8, 1, 137 },
+ { 17, 0, 0, 0, -1, 0, 19, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 7, 8, 1, 139 },
+ { 25, 10, 0, 0, -1, 0, 21, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 7, 0, 1, 37 },
+ { 17, 0, 0, 0, -1, 0, 21, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 7, 8, 1, 37 },
+ { 0, 17, 0, 5, -1, 0, 23, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 6, 4, 1, 155 },
+ { 1, 0, 6, 0, -1, 0, 23, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 37 },
+ { 18, 0, 0, 0, -1, 0, 18, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 137 },
+ { 18, 0, 0, 0, -1, 0, 20, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 137 },
+ { 18, 0, 0, 0, -1, 0, 21, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 137 },
+ { 18, 0, 0, 0, -1, 0, 23, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 137 },
+ { 18, 0, 0, 0, -1, 0, 23, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 1, 155 },
+ { 17, 0, 0, 0, -1, 0, 24, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 14, 8, 1, 35 },
+ { 18, 0, 0, 0, -1, 0, 12, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 16, 8, 1, 35 },
+ { 18, 0, 0, 0, -1, 0, 12, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 34 },
+ { 18, 0, 0, 0, -1, 0, 19, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 34 },
+ { 18, 0, 0, 0, -1, 0, 24, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 34 },
+ { 18, 0, 0, 0, -1, 0, 24, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 16, 8, 1, 35 },
+ { 18, 0, 0, 0, -1, 0, 25, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 7, 8, 1, 34 },
+ { 18, 0, 0, 0, -1, 0, 21, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 7, 8, 1, 34 },
+ { 18, 0, 0, 0, -1, 0, 25, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 7, 8, 1, 35 },
+ { 18, 0, 0, 0, -1, 0, 21, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 7, 8, 1, 35 },
+ { 18, 0, 0, 0, -1, 0, 19, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 139 },
+ { 18, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 105 },
+ { 29, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 105 },
+ { 0, 17, 0, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 105 },
+ { 0, 17, 1, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 105 },
+ { 25, 0, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 105 },
+ { 10, 18, 0, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 23, 4, 2, 2 },
+ { 0, 17, 0, 5, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 29, 0, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 0, 0, 0, -1, 0, 5, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 0, 0, 0, -1, 0, 5, 3, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 1, 0, 216, 0, -1, 0, 5, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 2 },
+ { 1, 0, 216, 0, -1, 0, 5, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 2 },
+ { 0, 17, 1, 5, -1, 0, 5, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 1, 0, 226, 0, -1, 0, 5, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 23, 4, 1, 2 },
+ { 10, 18, 0, 5, -1, 0, 5, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 23, 4, 0, 2 },
+ { 0, 17, 220, 5, -1, 0, 5, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 0, 17, 230, 5, -1, 0, 5, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 1 },
+ { 29, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 0, 17, 230, 5, -1, 0, 8, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 4 },
+ { 5, 0, 0, 0, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 0, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 5, 0, 0, 0, -1, 0, 9, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 14, 0, 0, 0, -1, 0, 5, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 3, 2 },
+ { 15, 0, 0, 0, -1, 0, 5, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 3, 2 },
+ { 15, 0, 0, 0, -1, 0, 7, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 3, 2 },
+ { 26, 0, 0, 0, -1, 0, 5, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 26, 10, 0, 0, -1, 0, 5, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 14, 0, 0, 0, -1, 0, 9, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 3, 2 },
+ { 15, 0, 0, 0, -1, 0, 9, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 3, 2 },
+ { 3, 2, 0, 0, 0, 0, 5, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 3, 2 },
+ { 3, 2, 0, 0, 1, 0, 5, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 3, 2 },
+ { 3, 2, 0, 0, 2, 0, 5, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 3, 2 },
+ { 3, 2, 0, 0, 3, 0, 5, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 3, 2 },
+ { 3, 2, 0, 0, 4, 0, 5, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 3, 2 },
+ { 3, 2, 0, 0, 5, 0, 5, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 3, 2 },
+ { 3, 2, 0, 0, 6, 0, 5, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 3, 2 },
+ { 3, 2, 0, 0, 7, 0, 5, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 3, 2 },
+ { 3, 2, 0, 0, 8, 0, 5, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 3, 2 },
+ { 3, 2, 0, 0, 9, 0, 5, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 3, 2 },
+ { 29, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 131 },
+ { 0, 17, 0, 5, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 131 },
+ { 25, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 0, 1, 131 },
+ { 25, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 19, 12, 1, 131 },
+ { 25, 0, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 131 },
+ { 18, 0, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 3 },
+ { 15, 0, 0, 0, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 1, 3 },
+ { 0, 17, 230, 5, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 57 },
+ { 17, 0, 0, 0, -1, 0, 25, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 6, 3, 5 },
+ { 0, 17, 230, 5, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 5 },
+ { 18, 0, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 151 },
+ { 0, 17, 230, 5, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 151 },
+ { 17, 0, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 151 },
+ { 3, 0, 0, 0, 0, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 151 },
+ { 3, 0, 0, 0, 1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 151 },
+ { 3, 0, 0, 0, 2, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 151 },
+ { 3, 0, 0, 0, 3, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 151 },
+ { 3, 0, 0, 0, 4, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 151 },
+ { 3, 0, 0, 0, 5, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 151 },
+ { 3, 0, 0, 0, 6, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 151 },
+ { 3, 0, 0, 0, 7, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 151 },
+ { 3, 0, 0, 0, 8, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 151 },
+ { 3, 0, 0, 0, 9, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 151 },
+ { 29, 0, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 151 },
+ { 18, 0, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 160 },
+ { 0, 17, 230, 5, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 160 },
+ { 18, 0, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 152 },
+ { 0, 17, 230, 5, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 152 },
+ { 3, 0, 0, 0, 0, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 152 },
+ { 3, 0, 0, 0, 1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 152 },
+ { 3, 0, 0, 0, 2, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 152 },
+ { 3, 0, 0, 0, 3, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 152 },
+ { 3, 0, 0, 0, 4, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 152 },
+ { 3, 0, 0, 0, 5, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 152 },
+ { 3, 0, 0, 0, 6, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 152 },
+ { 3, 0, 0, 0, 7, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 152 },
+ { 3, 0, 0, 0, 8, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 152 },
+ { 3, 0, 0, 0, 9, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 152 },
+ { 27, 4, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 11, 0, 1, 152 },
+ { 18, 0, 0, 0, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 163 },
+ { 17, 0, 0, 0, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 163 },
+ { 0, 17, 232, 5, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 163 },
+ { 0, 17, 220, 5, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 163 },
+ { 0, 17, 230, 5, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 163 },
+ { 3, 0, 0, 0, 0, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 163 },
+ { 3, 0, 0, 0, 1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 163 },
+ { 3, 0, 0, 0, 2, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 163 },
+ { 3, 0, 0, 0, 3, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 163 },
+ { 3, 0, 0, 0, 4, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 163 },
+ { 3, 0, 0, 0, 5, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 163 },
+ { 3, 0, 0, 0, 6, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 163 },
+ { 3, 0, 0, 0, 7, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 163 },
+ { 3, 0, 0, 0, 8, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 163 },
+ { 3, 0, 0, 0, 9, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 163 },
+ { 18, 0, 0, 0, -1, 0, 24, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 27 },
+ { 18, 1, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 113 },
+ { 5, 1, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 113 },
+ { 0, 17, 220, 5, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 113 },
+ { 14, 1, 0, 2, -1, 0, 18, 3, 0, { {0, 34}, {0, 0}, {0, 0}, {0, 34} }, 0, 10, 14, 7, 3, 132 },
+ { 15, 1, 0, 2, -1, 0, 18, 3, 0, { {0, 0}, {0, -34}, {0, -34}, {0, 0} }, 0, 10, 14, 6, 1, 132 },
+ { 0, 17, 230, 5, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 132 },
+ { 0, 17, 7, 5, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 1, 132 },
+ { 17, 1, 0, 5, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 1, 132 },
+ { 3, 1, 0, 0, 0, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 132 },
+ { 3, 1, 0, 0, 1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 132 },
+ { 3, 1, 0, 0, 2, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 132 },
+ { 3, 1, 0, 0, 3, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 132 },
+ { 3, 1, 0, 0, 4, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 132 },
+ { 3, 1, 0, 0, 5, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 132 },
+ { 3, 1, 0, 0, 6, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 132 },
+ { 3, 1, 0, 0, 7, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 132 },
+ { 3, 1, 0, 0, 8, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 132 },
+ { 3, 1, 0, 0, 9, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 1, 132 },
+ { 25, 1, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 0, 1, 132 },
+ { 5, 13, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 13, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
+ { 27, 13, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 1, 2 },
+ { 5, 13, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 13, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 18, 13, 0, 0, -1, 0, 13, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 3, 8 },
+ { 26, 10, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 8 },
+ { 29, 10, 0, 0, -1, 0, 10, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 13, 0, 0, 0, -1, 0, 0, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 0, 0 },
+ { 5, 2, 0, 0, 0, 0, 11, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 2, 0, 0, 1, 0, 11, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 2, 0, 0, 2, 0, 11, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 2, 0, 0, 3, 0, 11, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 2, 0, 0, 4, 0, 11, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 2, 0, 0, 5, 0, 11, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 2, 0, 0, 6, 0, 11, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 2, 0, 0, 7, 0, 11, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 2, 0, 0, 8, 0, 11, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 2, 0, 0, 9, 0, 11, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 5, 10, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 23, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 0, 0, 0, -1, 0, 11, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 2 },
+ { 29, 0, 0, 0, -1, 0, 11, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 29, 0, 0, 0, -1, 0, 11, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 29, 10, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
+ { 29, 0, 0, 0, -1, 0, 12, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 3, 2 },
+ { 29, 0, 0, 0, -1, 0, 11, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 3, 2 },
+ { 29, 0, 0, 0, -1, 0, 12, 0, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 29, 0, 0, 0, -1, 0, 12, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 2 },
+ { 29, 0, 0, 0, -1, 0, 11, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 7, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 13, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 3, 2 },
+ { 29, 10, 0, 0, -1, 0, 21, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 3, 2 },
+ { 29, 0, 0, 0, -1, 0, 12, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 10, 14, 7, 1, 2 },
+ { 29, 0, 0, 0, -1, 0, 11, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 10, 14, 7, 1, 2 },
+ { 29, 0, 0, 0, -1, 0, 11, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 0, 0, 0, -1, 0, 12, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
+ { 29, 0, 0, 0, -1, 0, 12, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 0, 0, 0, -1, 0, 18, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 0, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 6, 7, 30, 0, 1, 2 },
+ { 29, 0, 0, 0, -1, 0, 11, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 3, 34 },
+ { 29, 0, 0, 0, -1, 0, 12, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 3, 2 },
+ { 29, 0, 0, 0, -1, 0, 11, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 3, 2 },
+ { 29, 0, 0, 0, -1, 0, 18, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 3, 2 },
+ { 29, 10, 0, 0, -1, 0, 19, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 17, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 16, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 32, 0, 1, 2 },
+ { 28, 10, 0, 0, -1, 0, 17, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 13, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 17, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 18, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 32, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 16, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 32, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 18, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 13, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 16, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 7, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 19, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 21, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 23, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 25, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 24, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 20, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 12, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 25, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 20, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 23, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 32, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 21, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 32, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 17, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 32, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 19, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 32, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 18, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 20, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 32, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 21, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 14, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 24, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 32, 0, 1, 2 },
+ { 29, 10, 0, 0, -1, 0, 25, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 0, 32, 0, 1, 2 },
+ { 3, 2, 0, 0, 0, 0, 23, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 3, 2 },
+ { 3, 2, 0, 0, 1, 0, 23, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 3, 2 },
+ { 3, 2, 0, 0, 2, 0, 23, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 3, 2 },
+ { 3, 2, 0, 0, 3, 0, 23, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 3, 2 },
+ { 3, 2, 0, 0, 4, 0, 23, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 3, 2 },
+ { 3, 2, 0, 0, 5, 0, 23, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 3, 2 },
+ { 3, 2, 0, 0, 6, 0, 23, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 3, 2 },
+ { 3, 2, 0, 0, 7, 0, 23, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 3, 2 },
+ { 3, 2, 0, 0, 8, 0, 23, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 3, 2 },
+ { 3, 2, 0, 0, 9, 0, 23, 3, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 13, 9, 3, 2 },
+ { 13, 18, 0, 0, -1, 0, 2, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 0 },
+ { 18, 0, 0, 0, -1, 0, 5, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 37 },
+ { 18, 0, 0, 0, -1, 0, 25, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 37 },
+ { 18, 0, 0, 0, -1, 0, 12, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 37 },
+ { 18, 0, 0, 0, -1, 0, 26, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 1, 37 },
+ { 18, 0, 0, 0, -1, 0, 5, 5, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 3, 37 },
+ { 18, 0, 0, 0, -1, 0, 5, 5, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 16, 8, 0, 37 },
+ { 10, 18, 0, 5, -1, 0, 5, 3, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 0, 2 },
+ { 0, 17, 0, 5, -1, 0, 7, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 23, 4, 2, 1 },
+ { 12, 0, 0, 0, -1, 0, 2, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0, 0 }
};
Q_DECL_CONST_FUNCTION static inline const Properties *qGetProp(char32_t ucs4) noexcept
@@ -10130,7 +10492,12 @@ Q_CORE_EXPORT IdnaStatus QT_FASTCALL idnaStatus(char32_t ucs4) noexcept
return static_cast<IdnaStatus>(qGetProp(ucs4)->idnaStatus);
}
-static const unsigned short specialCaseMap[] = {
+Q_CORE_EXPORT EastAsianWidth QT_FASTCALL eastAsianWidth(char32_t ucs4) noexcept
+{
+ return static_cast<EastAsianWidth>(qGetProp(ucs4)->eastAsianWidth);
+}
+
+static constexpr unsigned short specialCaseMap[] = {
0x0, // placeholder
0x1, 0x2c65,
0x1, 0x2c66,
@@ -10437,9 +10804,9 @@ static const unsigned short specialCaseMap[] = {
0x1, 0xa64b
};
-const unsigned int MaxSpecialCaseLength = 3;
+constexpr unsigned int MaxSpecialCaseLength = 3;
-static const unsigned short uc_decomposition_trie[] = {
+static constexpr unsigned short uc_decomposition_trie[] = {
// 0 - 0x3400
1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548,
@@ -10606,11 +10973,11 @@ static const unsigned short uc_decomposition_trie[] = {
5356, 5356, 5356, 5356, 5356, 5356, 5356, 5356,
5356, 5356, 5356, 5356, 5356, 9964, 5356, 5356,
10220, 10476, 10732, 10988, 5356, 5356, 5356, 5356,
+ 5356, 5356, 5356, 5356, 11244, 5356, 5356, 5356,
5356, 5356, 5356, 5356, 5356, 5356, 5356, 5356,
- 5356, 5356, 5356, 5356, 5356, 5356, 5356, 5356,
- 5356, 5356, 11244, 5356, 5356, 11500, 11756, 5356,
+ 5356, 5356, 11500, 5356, 5356, 11756, 12012, 5356,
- 5356, 5356, 5356, 5356, 5356, 5356, 5356, 12012,
+ 5356, 5356, 5356, 5356, 5356, 5356, 5356, 12268,
5356, 5356, 5356, 5356, 5356, 5356, 5356, 5356,
5356, 5356, 5356, 5356, 5356, 5356, 5356, 5356,
5356, 5356, 5356, 5356, 5356, 5356, 5356, 5356,
@@ -10643,7 +11010,7 @@ static const unsigned short uc_decomposition_trie[] = {
5356, 5356, 5356, 5356, 5356, 5356, 5356, 5356,
5356, 5356, 5356, 5356, 5356, 5356, 5356, 5356,
- 5356, 5356, 5356, 5356, 12268, 12524, 12780, 5356,
+ 5356, 5356, 5356, 5356, 12524, 12780, 13036, 5356,
5356, 5356, 5356, 5356,
@@ -12120,30 +12487,63 @@ static const unsigned short uc_decomposition_trie[] = {
0x3181, 0x3183, 0x3185, 0x3187, 0x3189, 0x318b, 0x318d, 0x318f,
0x3191, 0x3193, 0x3195, 0x3197, 0x3199, 0x319b, 0x319d, 0x319f,
- 0x31a1, 0x31a3, 0x31a5, 0x31a7, 0xffff, 0x31a9, 0x31ab, 0x31ad,
- 0x31af, 0x31b1, 0x31b3, 0x31b5, 0x31b7, 0x31b9, 0x31bb, 0x31bd,
- 0x31bf, 0x31c1, 0x31c3, 0x31c5, 0x31c7, 0x31c9, 0x31cb, 0x31cd,
- 0x31cf, 0x31d1, 0x31d3, 0x31d5, 0x31d7, 0x31d9, 0x31db, 0x31dd,
- 0xffff, 0x31df, 0x31e1, 0xffff, 0x31e3, 0xffff, 0xffff, 0x31e5,
- 0xffff, 0x31e7, 0x31e9, 0x31eb, 0x31ed, 0x31ef, 0x31f1, 0x31f3,
- 0x31f5, 0x31f7, 0x31f9, 0xffff, 0x31fb, 0x31fd, 0x31ff, 0x3201,
- 0xffff, 0x3203, 0xffff, 0x3205, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0x3207, 0xffff, 0xffff, 0xffff, 0xffff, 0x3209,
- 0xffff, 0x320b, 0xffff, 0x320d, 0xffff, 0x320f, 0x3211, 0x3213,
- 0xffff, 0x3215, 0x3217, 0xffff, 0x3219, 0xffff, 0xffff, 0x321b,
- 0xffff, 0x321d, 0xffff, 0x321f, 0xffff, 0x3221, 0xffff, 0x3223,
- 0xffff, 0x3225, 0x3227, 0xffff, 0x3229, 0xffff, 0xffff, 0x322b,
- 0x322d, 0x322f, 0x3231, 0xffff, 0x3233, 0x3235, 0x3237, 0x3239,
- 0x323b, 0x323d, 0x323f, 0xffff, 0x3241, 0x3243, 0x3245, 0x3247,
- 0xffff, 0x3249, 0x324b, 0x324d, 0x324f, 0xffff, 0x3251, 0xffff,
- 0x3253, 0x3255, 0x3257, 0x3259, 0x325b, 0x325d, 0x325f, 0x3261,
- 0x3263, 0x3265, 0xffff, 0x3267, 0x3269, 0x326b, 0x326d, 0x326f,
- 0x3271, 0x3273, 0x3275, 0x3277, 0x3279, 0x327b, 0x327d, 0x327f,
- 0x3281, 0x3283, 0x3285, 0x3287, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0x3289, 0x328b, 0x328d, 0xffff, 0x328f, 0x3291, 0x3293,
- 0x3295, 0x3297, 0xffff, 0x3299, 0x329b, 0x329d, 0x329f, 0x32a1,
- 0x32a3, 0x32a5, 0x32a7, 0x32a9, 0x32ab, 0x32ad, 0x32af, 0x32b1,
- 0x32b3, 0x32b5, 0x32b7, 0x32b9, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x31a1, 0x31a3, 0x31a5, 0x31a7, 0x31a9, 0x31ab, 0x31ad, 0x31af,
+ 0x31b1, 0x31b3, 0x31b5, 0x31b7, 0x31b9, 0x31bb, 0x31bd, 0x31bf,
+ 0x31c1, 0x31c3, 0x31c5, 0x31c7, 0x31c9, 0x31cb, 0x31cd, 0x31cf,
+ 0x31d1, 0x31d3, 0x31d5, 0x31d7, 0x31d9, 0x31db, 0x31dd, 0x31df,
+ 0x31e1, 0x31e3, 0x31e5, 0x31e7, 0x31e9, 0x31eb, 0x31ed, 0x31ef,
+ 0x31f1, 0x31f3, 0x31f5, 0x31f7, 0x31f9, 0x31fb, 0x31fd, 0x31ff,
+ 0x3201, 0x3203, 0x3205, 0x3207, 0x3209, 0x320b, 0x320d, 0x320f,
+ 0x3211, 0x3213, 0x3215, 0x3217, 0x3219, 0x321b, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+
+ 0x321d, 0x321f, 0x3221, 0x3223, 0xffff, 0x3225, 0x3227, 0x3229,
+ 0x322b, 0x322d, 0x322f, 0x3231, 0x3233, 0x3235, 0x3237, 0x3239,
+ 0x323b, 0x323d, 0x323f, 0x3241, 0x3243, 0x3245, 0x3247, 0x3249,
+ 0x324b, 0x324d, 0x324f, 0x3251, 0x3253, 0x3255, 0x3257, 0x3259,
+ 0xffff, 0x325b, 0x325d, 0xffff, 0x325f, 0xffff, 0xffff, 0x3261,
+ 0xffff, 0x3263, 0x3265, 0x3267, 0x3269, 0x326b, 0x326d, 0x326f,
+ 0x3271, 0x3273, 0x3275, 0xffff, 0x3277, 0x3279, 0x327b, 0x327d,
+ 0xffff, 0x327f, 0xffff, 0x3281, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0x3283, 0xffff, 0xffff, 0xffff, 0xffff, 0x3285,
+ 0xffff, 0x3287, 0xffff, 0x3289, 0xffff, 0x328b, 0x328d, 0x328f,
+ 0xffff, 0x3291, 0x3293, 0xffff, 0x3295, 0xffff, 0xffff, 0x3297,
+ 0xffff, 0x3299, 0xffff, 0x329b, 0xffff, 0x329d, 0xffff, 0x329f,
+ 0xffff, 0x32a1, 0x32a3, 0xffff, 0x32a5, 0xffff, 0xffff, 0x32a7,
+ 0x32a9, 0x32ab, 0x32ad, 0xffff, 0x32af, 0x32b1, 0x32b3, 0x32b5,
+ 0x32b7, 0x32b9, 0x32bb, 0xffff, 0x32bd, 0x32bf, 0x32c1, 0x32c3,
+ 0xffff, 0x32c5, 0x32c7, 0x32c9, 0x32cb, 0xffff, 0x32cd, 0xffff,
+ 0x32cf, 0x32d1, 0x32d3, 0x32d5, 0x32d7, 0x32d9, 0x32db, 0x32dd,
+ 0x32df, 0x32e1, 0xffff, 0x32e3, 0x32e5, 0x32e7, 0x32e9, 0x32eb,
+ 0x32ed, 0x32ef, 0x32f1, 0x32f3, 0x32f5, 0x32f7, 0x32f9, 0x32fb,
+ 0x32fd, 0x32ff, 0x3301, 0x3303, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0x3305, 0x3307, 0x3309, 0xffff, 0x330b, 0x330d, 0x330f,
+ 0x3311, 0x3313, 0xffff, 0x3315, 0x3317, 0x3319, 0x331b, 0x331d,
+ 0x331f, 0x3321, 0x3323, 0x3325, 0x3327, 0x3329, 0x332b, 0x332d,
+ 0x332f, 0x3331, 0x3333, 0x3335, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -12153,25 +12553,25 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x32bb, 0x32be, 0x32c1, 0x32c4, 0x32c7, 0x32ca, 0x32cd, 0x32d0,
- 0x32d3, 0x32d6, 0x32d9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x32dc, 0x32e0, 0x32e4, 0x32e8, 0x32ec, 0x32f0, 0x32f4, 0x32f8,
- 0x32fc, 0x3300, 0x3304, 0x3308, 0x330c, 0x3310, 0x3314, 0x3318,
- 0x331c, 0x3320, 0x3324, 0x3328, 0x332c, 0x3330, 0x3334, 0x3338,
- 0x333c, 0x3340, 0x3344, 0x3348, 0x334a, 0x334c, 0x334f, 0xffff,
- 0x3352, 0x3354, 0x3356, 0x3358, 0x335a, 0x335c, 0x335e, 0x3360,
- 0x3362, 0x3364, 0x3366, 0x3368, 0x336a, 0x336c, 0x336e, 0x3370,
- 0x3372, 0x3374, 0x3376, 0x3378, 0x337a, 0x337c, 0x337e, 0x3380,
- 0x3382, 0x3384, 0x3386, 0x3389, 0x338c, 0x338f, 0x3392, 0x3396,
+ 0x3337, 0x333a, 0x333d, 0x3340, 0x3343, 0x3346, 0x3349, 0x334c,
+ 0x334f, 0x3352, 0x3355, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x3358, 0x335c, 0x3360, 0x3364, 0x3368, 0x336c, 0x3370, 0x3374,
+ 0x3378, 0x337c, 0x3380, 0x3384, 0x3388, 0x338c, 0x3390, 0x3394,
+ 0x3398, 0x339c, 0x33a0, 0x33a4, 0x33a8, 0x33ac, 0x33b0, 0x33b4,
+ 0x33b8, 0x33bc, 0x33c0, 0x33c4, 0x33c6, 0x33c8, 0x33cb, 0xffff,
+ 0x33ce, 0x33d0, 0x33d2, 0x33d4, 0x33d6, 0x33d8, 0x33da, 0x33dc,
+ 0x33de, 0x33e0, 0x33e2, 0x33e4, 0x33e6, 0x33e8, 0x33ea, 0x33ec,
+ 0x33ee, 0x33f0, 0x33f2, 0x33f4, 0x33f6, 0x33f8, 0x33fa, 0x33fc,
+ 0x33fe, 0x3400, 0x3402, 0x3405, 0x3408, 0x340b, 0x340e, 0x3412,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0x3399, 0x339c, 0x339f, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0x3415, 0x3418, 0x341b, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x33a2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x341e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -12186,17 +12586,17 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x33a5, 0x33a8, 0x33ab, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x3421, 0x3424, 0x3427, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x33ad, 0x33af, 0x33b1, 0x33b3, 0x33b5, 0x33b7, 0x33b9, 0x33bb,
- 0x33bd, 0x33bf, 0x33c1, 0x33c3, 0x33c5, 0x33c7, 0x33c9, 0x33cb,
- 0x33cd, 0x33cf, 0x33d1, 0x33d3, 0x33d5, 0x33d7, 0x33d9, 0x33db,
- 0x33dd, 0x33df, 0x33e1, 0x33e3, 0x33e5, 0x33e7, 0x33e9, 0x33eb,
- 0x33ed, 0x33ef, 0x33f1, 0x33f3, 0x33f5, 0x33f7, 0x33f9, 0x33fb,
- 0x33fd, 0x33ff, 0x3401, 0x3403, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x3405, 0x3409, 0x340d, 0x3411, 0x3415, 0x3419, 0x341d, 0x3421,
- 0x3425, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x3429, 0x342b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x3429, 0x342b, 0x342d, 0x342f, 0x3431, 0x3433, 0x3435, 0x3437,
+ 0x3439, 0x343b, 0x343d, 0x343f, 0x3441, 0x3443, 0x3445, 0x3447,
+ 0x3449, 0x344b, 0x344d, 0x344f, 0x3451, 0x3453, 0x3455, 0x3457,
+ 0x3459, 0x345b, 0x345d, 0x345f, 0x3461, 0x3463, 0x3465, 0x3467,
+ 0x3469, 0x346b, 0x346d, 0x346f, 0x3471, 0x3473, 0x3475, 0x3477,
+ 0x3479, 0x347b, 0x347d, 0x347f, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x3481, 0x3485, 0x3489, 0x348d, 0x3491, 0x3495, 0x3499, 0x349d,
+ 0x34a1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x34a5, 0x34a7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -12249,79 +12649,79 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x342d, 0x342f, 0x3431, 0x3433, 0x3435, 0x3437, 0x3439, 0x343b,
- 0x343d, 0x343f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x34a9, 0x34ab, 0x34ad, 0x34af, 0x34b1, 0x34b3, 0x34b5, 0x34b7,
+ 0x34b9, 0x34bb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x3441, 0x3443, 0x3445, 0x3447, 0x344a, 0x344c, 0x344e, 0x3450,
- 0x3452, 0x3454, 0x3456, 0x3458, 0x345a, 0x345c, 0x345f, 0x3461,
- 0x3463, 0x3465, 0x3467, 0x346a, 0x346c, 0x346e, 0x3470, 0x3473,
- 0x3475, 0x3477, 0x3479, 0x347b, 0x347d, 0x3480, 0x3482, 0x3484,
- 0x3486, 0x3488, 0x348a, 0x348c, 0x348e, 0x3490, 0x3492, 0x3494,
- 0x3496, 0x3498, 0x349a, 0x349c, 0x349e, 0x34a0, 0x34a2, 0x34a4,
- 0x34a6, 0x34a8, 0x34aa, 0x34ac, 0x34ae, 0x34b1, 0x34b3, 0x34b5,
- 0x34b7, 0x34ba, 0x34bc, 0x34be, 0x34c0, 0x34c2, 0x34c4, 0x34c6,
- 0x34c8, 0x34ca, 0x34cc, 0x34ce, 0x34d0, 0x34d2, 0x34d4, 0x34d6,
- 0x34d8, 0x34da, 0x34dc, 0x34de, 0x34e0, 0x34e2, 0x34e4, 0x34e6,
- 0x34e8, 0x34ea, 0x34ec, 0x34ee, 0x34f0, 0x34f2, 0x34f4, 0x34f6,
- 0x34f8, 0x34fa, 0x34fd, 0x34ff, 0x3501, 0x3503, 0x3505, 0x3507,
- 0x3509, 0x350c, 0x350f, 0x3511, 0x3513, 0x3515, 0x3517, 0x3519,
- 0x351b, 0x351d, 0x351f, 0x3521, 0x3523, 0x3526, 0x3528, 0x352a,
- 0x352c, 0x352e, 0x3531, 0x3533, 0x3535, 0x3537, 0x3539, 0x353b,
- 0x353d, 0x353f, 0x3541, 0x3543, 0x3546, 0x3548, 0x354b, 0x354d,
- 0x354f, 0x3551, 0x3553, 0x3555, 0x3557, 0x3559, 0x355b, 0x355d,
- 0x355f, 0x3561, 0x3564, 0x3566, 0x3568, 0x356a, 0x356c, 0x356e,
- 0x3571, 0x3573, 0x3576, 0x3579, 0x357b, 0x357d, 0x357f, 0x3581,
- 0x3584, 0x3587, 0x3589, 0x358b, 0x358d, 0x358f, 0x3591, 0x3593,
- 0x3595, 0x3597, 0x3599, 0x359b, 0x359d, 0x35a0, 0x35a2, 0x35a4,
- 0x35a6, 0x35a8, 0x35aa, 0x35ac, 0x35ae, 0x35b0, 0x35b2, 0x35b4,
- 0x35b6, 0x35b8, 0x35ba, 0x35bc, 0x35be, 0x35c0, 0x35c2, 0x35c4,
- 0x35c6, 0x35c9, 0x35cb, 0x35cd, 0x35cf, 0x35d1, 0x35d3, 0x35d6,
- 0x35d8, 0x35da, 0x35dc, 0x35de, 0x35e0, 0x35e2, 0x35e4, 0x35e6,
- 0x35e8, 0x35ea, 0x35ec, 0x35ef, 0x35f1, 0x35f3, 0x35f5, 0x35f7,
- 0x35f9, 0x35fb, 0x35fd, 0x35ff, 0x3601, 0x3603, 0x3605, 0x3607,
- 0x3609, 0x360b, 0x360d, 0x360f, 0x3611, 0x3613, 0x3616, 0x3618,
- 0x361a, 0x361c, 0x361e, 0x3620, 0x3623, 0x3625, 0x3627, 0x3629,
- 0x362b, 0x362d, 0x362f, 0x3631, 0x3633, 0x3636, 0x3638, 0x363a,
- 0x363c, 0x363f, 0x3641, 0x3643, 0x3645, 0x3647, 0x3649, 0x364b,
- 0x364e, 0x3651, 0x3654, 0x3656, 0x3659, 0x365b, 0x365d, 0x365f,
+ 0x34bd, 0x34bf, 0x34c1, 0x34c3, 0x34c6, 0x34c8, 0x34ca, 0x34cc,
+ 0x34ce, 0x34d0, 0x34d2, 0x34d4, 0x34d6, 0x34d8, 0x34db, 0x34dd,
+ 0x34df, 0x34e1, 0x34e3, 0x34e6, 0x34e8, 0x34ea, 0x34ec, 0x34ef,
+ 0x34f1, 0x34f3, 0x34f5, 0x34f7, 0x34f9, 0x34fc, 0x34fe, 0x3500,
+ 0x3502, 0x3504, 0x3506, 0x3508, 0x350a, 0x350c, 0x350e, 0x3510,
+ 0x3512, 0x3514, 0x3516, 0x3518, 0x351a, 0x351c, 0x351e, 0x3520,
+ 0x3522, 0x3524, 0x3526, 0x3528, 0x352a, 0x352d, 0x352f, 0x3531,
+ 0x3533, 0x3536, 0x3538, 0x353a, 0x353c, 0x353e, 0x3540, 0x3542,
+ 0x3544, 0x3546, 0x3548, 0x354a, 0x354c, 0x354e, 0x3550, 0x3552,
+ 0x3554, 0x3556, 0x3558, 0x355a, 0x355c, 0x355e, 0x3560, 0x3562,
+ 0x3564, 0x3566, 0x3568, 0x356a, 0x356c, 0x356e, 0x3570, 0x3572,
+ 0x3574, 0x3576, 0x3579, 0x357b, 0x357d, 0x357f, 0x3581, 0x3583,
+ 0x3585, 0x3588, 0x358b, 0x358d, 0x358f, 0x3591, 0x3593, 0x3595,
+ 0x3597, 0x3599, 0x359b, 0x359d, 0x359f, 0x35a2, 0x35a4, 0x35a6,
+ 0x35a8, 0x35aa, 0x35ad, 0x35af, 0x35b1, 0x35b3, 0x35b5, 0x35b7,
+ 0x35b9, 0x35bb, 0x35bd, 0x35bf, 0x35c2, 0x35c4, 0x35c7, 0x35c9,
+ 0x35cb, 0x35cd, 0x35cf, 0x35d1, 0x35d3, 0x35d5, 0x35d7, 0x35d9,
+ 0x35db, 0x35dd, 0x35e0, 0x35e2, 0x35e4, 0x35e6, 0x35e8, 0x35ea,
+ 0x35ed, 0x35ef, 0x35f2, 0x35f5, 0x35f7, 0x35f9, 0x35fb, 0x35fd,
+ 0x3600, 0x3603, 0x3605, 0x3607, 0x3609, 0x360b, 0x360d, 0x360f,
+ 0x3611, 0x3613, 0x3615, 0x3617, 0x3619, 0x361c, 0x361e, 0x3620,
+ 0x3622, 0x3624, 0x3626, 0x3628, 0x362a, 0x362c, 0x362e, 0x3630,
+ 0x3632, 0x3634, 0x3636, 0x3638, 0x363a, 0x363c, 0x363e, 0x3640,
+ 0x3642, 0x3645, 0x3647, 0x3649, 0x364b, 0x364d, 0x364f, 0x3652,
+ 0x3654, 0x3656, 0x3658, 0x365a, 0x365c, 0x365e, 0x3660, 0x3662,
+ 0x3664, 0x3666, 0x3668, 0x366b, 0x366d, 0x366f, 0x3671, 0x3673,
+ 0x3675, 0x3677, 0x3679, 0x367b, 0x367d, 0x367f, 0x3681, 0x3683,
+ 0x3685, 0x3687, 0x3689, 0x368b, 0x368d, 0x368f, 0x3692, 0x3694,
+ 0x3696, 0x3698, 0x369a, 0x369c, 0x369f, 0x36a1, 0x36a3, 0x36a5,
+ 0x36a7, 0x36a9, 0x36ab, 0x36ad, 0x36af, 0x36b2, 0x36b4, 0x36b6,
+ 0x36b8, 0x36bb, 0x36bd, 0x36bf, 0x36c1, 0x36c3, 0x36c5, 0x36c7,
+ 0x36ca, 0x36cd, 0x36d0, 0x36d2, 0x36d5, 0x36d7, 0x36d9, 0x36db,
- 0x3661, 0x3663, 0x3665, 0x3667, 0x3669, 0x366b, 0x366d, 0x3670,
- 0x3672, 0x3674, 0x3676, 0x3678, 0x367a, 0x367c, 0x367f, 0x3681,
- 0x3683, 0x3686, 0x3689, 0x368b, 0x368d, 0x368f, 0x3691, 0x3693,
- 0x3695, 0x3697, 0x3699, 0x369b, 0x369e, 0x36a0, 0x36a3, 0x36a5,
- 0x36a8, 0x36aa, 0x36ac, 0x36ae, 0x36b1, 0x36b3, 0x36b5, 0x36b8,
- 0x36bb, 0x36bd, 0x36bf, 0x36c1, 0x36c3, 0x36c5, 0x36c7, 0x36c9,
- 0x36cb, 0x36cd, 0x36cf, 0x36d1, 0x36d3, 0x36d5, 0x36d8, 0x36da,
- 0x36dd, 0x36df, 0x36e2, 0x36e4, 0x36e7, 0x36ea, 0x36ed, 0x36ef,
- 0x36f1, 0x36f3, 0x36f6, 0x36f9, 0x36fc, 0x36ff, 0x3701, 0x3703,
- 0x3705, 0x3707, 0x3709, 0x370b, 0x370d, 0x370f, 0x3712, 0x3714,
- 0x3716, 0x3718, 0x371a, 0x371d, 0x371f, 0x3722, 0x3725, 0x3727,
- 0x3729, 0x372b, 0x372d, 0x372f, 0x3731, 0x3734, 0x3737, 0x373a,
- 0x373c, 0x373e, 0x3741, 0x3743, 0x3745, 0x3747, 0x374a, 0x374c,
- 0x374e, 0x3750, 0x3752, 0x3754, 0x3757, 0x3759, 0x375b, 0x375d,
- 0x375f, 0x3761, 0x3763, 0x3766, 0x3769, 0x376b, 0x376e, 0x3770,
- 0x3773, 0x3775, 0x3777, 0x3779, 0x377c, 0x377f, 0x3781, 0x3784,
- 0x3786, 0x3789, 0x378b, 0x378d, 0x378f, 0x3791, 0x3793, 0x3795,
- 0x3798, 0x379b, 0x379e, 0x37a1, 0x37a3, 0x37a5, 0x37a7, 0x37a9,
- 0x37ab, 0x37ad, 0x37af, 0x37b1, 0x37b3, 0x37b5, 0x37b7, 0x37b9,
- 0x37bc, 0x37be, 0x37c0, 0x37c2, 0x37c4, 0x37c6, 0x37c8, 0x37ca,
- 0x37cc, 0x37ce, 0x37d0, 0x37d2, 0x37d4, 0x37d7, 0x37da, 0x37dd,
- 0x37df, 0x37e1, 0x37e3, 0x37e5, 0x37e8, 0x37ea, 0x37ed, 0x37ef,
- 0x37f1, 0x37f4, 0x37f7, 0x37f9, 0x37fb, 0x37fd, 0x37ff, 0x3801,
- 0x3803, 0x3805, 0x3807, 0x3809, 0x380b, 0x380d, 0x380f, 0x3811,
- 0x3813, 0x3815, 0x3817, 0x3819, 0x381b, 0x381d, 0x3820, 0x3822,
- 0x3824, 0x3826, 0x3828, 0x382a, 0x382d, 0x3830, 0x3832, 0x3834,
- 0x3836, 0x3838, 0x383a, 0x383c, 0x383f, 0x3841, 0x3843, 0x3845,
- 0x3847, 0x384a, 0x384d, 0x384f, 0x3851, 0x3853, 0x3856, 0x3858,
- 0x385a, 0x385d, 0x3860, 0x3862, 0x3864, 0x3866, 0x3869, 0x386b,
- 0x386d, 0x386f, 0x3871, 0x3873, 0x3875, 0x3877, 0x387a, 0x387c,
- 0x387e, 0x3880, 0x3883, 0x3885, 0x3887, 0x3889, 0x388b, 0x388e,
- 0x3891, 0x3893, 0x3895, 0x3897, 0x389a, 0x389c, 0x389f, 0x38a1,
+ 0x36dd, 0x36df, 0x36e1, 0x36e3, 0x36e5, 0x36e7, 0x36e9, 0x36ec,
+ 0x36ee, 0x36f0, 0x36f2, 0x36f4, 0x36f6, 0x36f8, 0x36fb, 0x36fd,
+ 0x36ff, 0x3702, 0x3705, 0x3707, 0x3709, 0x370b, 0x370d, 0x370f,
+ 0x3711, 0x3713, 0x3715, 0x3717, 0x371a, 0x371c, 0x371f, 0x3721,
+ 0x3724, 0x3726, 0x3728, 0x372a, 0x372d, 0x372f, 0x3731, 0x3734,
+ 0x3737, 0x3739, 0x373b, 0x373d, 0x373f, 0x3741, 0x3743, 0x3745,
+ 0x3747, 0x3749, 0x374b, 0x374d, 0x374f, 0x3751, 0x3754, 0x3756,
+ 0x3759, 0x375b, 0x375e, 0x3760, 0x3763, 0x3766, 0x3769, 0x376b,
+ 0x376d, 0x376f, 0x3772, 0x3775, 0x3778, 0x377b, 0x377d, 0x377f,
+ 0x3781, 0x3783, 0x3785, 0x3787, 0x3789, 0x378b, 0x378e, 0x3790,
+ 0x3792, 0x3794, 0x3796, 0x3799, 0x379b, 0x379e, 0x37a1, 0x37a3,
+ 0x37a5, 0x37a7, 0x37a9, 0x37ab, 0x37ad, 0x37b0, 0x37b3, 0x37b6,
+ 0x37b8, 0x37ba, 0x37bd, 0x37bf, 0x37c1, 0x37c3, 0x37c6, 0x37c8,
+ 0x37ca, 0x37cc, 0x37ce, 0x37d0, 0x37d3, 0x37d5, 0x37d7, 0x37d9,
+ 0x37db, 0x37dd, 0x37df, 0x37e2, 0x37e5, 0x37e7, 0x37ea, 0x37ec,
+ 0x37ef, 0x37f1, 0x37f3, 0x37f5, 0x37f8, 0x37fb, 0x37fd, 0x3800,
+ 0x3802, 0x3805, 0x3807, 0x3809, 0x380b, 0x380d, 0x380f, 0x3811,
+ 0x3814, 0x3817, 0x381a, 0x381d, 0x381f, 0x3821, 0x3823, 0x3825,
+ 0x3827, 0x3829, 0x382b, 0x382d, 0x382f, 0x3831, 0x3833, 0x3835,
+ 0x3838, 0x383a, 0x383c, 0x383e, 0x3840, 0x3842, 0x3844, 0x3846,
+ 0x3848, 0x384a, 0x384c, 0x384e, 0x3850, 0x3853, 0x3856, 0x3859,
+ 0x385b, 0x385d, 0x385f, 0x3861, 0x3864, 0x3866, 0x3869, 0x386b,
+ 0x386d, 0x3870, 0x3873, 0x3875, 0x3877, 0x3879, 0x387b, 0x387d,
+ 0x387f, 0x3881, 0x3883, 0x3885, 0x3887, 0x3889, 0x388b, 0x388d,
+ 0x388f, 0x3891, 0x3893, 0x3895, 0x3897, 0x3899, 0x389c, 0x389e,
+ 0x38a0, 0x38a2, 0x38a4, 0x38a6, 0x38a9, 0x38ac, 0x38ae, 0x38b0,
+ 0x38b2, 0x38b4, 0x38b6, 0x38b8, 0x38bb, 0x38bd, 0x38bf, 0x38c1,
+ 0x38c3, 0x38c6, 0x38c9, 0x38cb, 0x38cd, 0x38cf, 0x38d2, 0x38d4,
+ 0x38d6, 0x38d9, 0x38dc, 0x38de, 0x38e0, 0x38e2, 0x38e5, 0x38e7,
+ 0x38e9, 0x38eb, 0x38ed, 0x38ef, 0x38f1, 0x38f3, 0x38f6, 0x38f8,
+ 0x38fa, 0x38fc, 0x38ff, 0x3901, 0x3903, 0x3905, 0x3907, 0x390a,
+ 0x390d, 0x390f, 0x3911, 0x3913, 0x3916, 0x3918, 0x391b, 0x391d,
- 0x38a3, 0x38a5, 0x38a8, 0x38aa, 0x38ac, 0x38ae, 0x38b0, 0x38b2,
- 0x38b4, 0x38b6, 0x38b9, 0x38bb, 0x38bd, 0x38bf, 0x38c1, 0x38c3,
- 0x38c5, 0x38c8, 0x38ca, 0x38cd, 0x38d0, 0x38d3, 0x38d5, 0x38d7,
- 0x38d9, 0x38db, 0x38dd, 0x38df, 0x38e1, 0x38e3, 0xffff, 0xffff,
+ 0x391f, 0x3921, 0x3924, 0x3926, 0x3928, 0x392a, 0x392c, 0x392e,
+ 0x3930, 0x3932, 0x3935, 0x3937, 0x3939, 0x393b, 0x393d, 0x393f,
+ 0x3941, 0x3944, 0x3946, 0x3949, 0x394c, 0x394f, 0x3951, 0x3953,
+ 0x3955, 0x3957, 0x3959, 0x395b, 0x395d, 0x395f, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -12359,7 +12759,7 @@ static const unsigned short uc_decomposition_trie[] = {
? uc_decomposition_trie[uc_decomposition_trie[((ucs4 - 0x3400) >> 8) + 0x340] + (ucs4 & 0xff)] \
: 0xffff)
-static const unsigned short uc_decomposition_map[] = {
+static constexpr unsigned short uc_decomposition_map[] = {
0x103, 0x20, 0x210, 0x20, 0x308, 0x109, 0x61, 0x210,
0x20, 0x304, 0x109, 0x32, 0x109, 0x33, 0x210, 0x20,
0x301, 0x110, 0x3bc, 0x210, 0x20, 0x327, 0x109, 0x31,
@@ -13948,242 +14348,258 @@ static const unsigned short uc_decomposition_map[] = {
0x37, 0x102, 0x38, 0x102, 0x39, 0x102, 0x30, 0x102,
0x31, 0x102, 0x32, 0x102, 0x33, 0x102, 0x34, 0x102,
0x35, 0x102, 0x36, 0x102, 0x37, 0x102, 0x38, 0x102,
- 0x39, 0x102, 0x627, 0x102, 0x628, 0x102, 0x62c, 0x102,
- 0x62f, 0x102, 0x648, 0x102, 0x632, 0x102, 0x62d, 0x102,
- 0x637, 0x102, 0x64a, 0x102, 0x643, 0x102, 0x644, 0x102,
- 0x645, 0x102, 0x646, 0x102, 0x633, 0x102, 0x639, 0x102,
- 0x641, 0x102, 0x635, 0x102, 0x642, 0x102, 0x631, 0x102,
- 0x634, 0x102, 0x62a, 0x102, 0x62b, 0x102, 0x62e, 0x102,
- 0x630, 0x102, 0x636, 0x102, 0x638, 0x102, 0x63a, 0x102,
- 0x66e, 0x102, 0x6ba, 0x102, 0x6a1, 0x102, 0x66f, 0x102,
- 0x628, 0x102, 0x62c, 0x102, 0x647, 0x102, 0x62d, 0x102,
- 0x64a, 0x102, 0x643, 0x102, 0x644, 0x102, 0x645, 0x102,
- 0x646, 0x102, 0x633, 0x102, 0x639, 0x102, 0x641, 0x102,
- 0x635, 0x102, 0x642, 0x102, 0x634, 0x102, 0x62a, 0x102,
- 0x62b, 0x102, 0x62e, 0x102, 0x636, 0x102, 0x63a, 0x102,
- 0x62c, 0x102, 0x62d, 0x102, 0x64a, 0x102, 0x644, 0x102,
- 0x646, 0x102, 0x633, 0x102, 0x639, 0x102, 0x635, 0x102,
- 0x642, 0x102, 0x634, 0x102, 0x62e, 0x102, 0x636, 0x102,
- 0x63a, 0x102, 0x6ba, 0x102, 0x66f, 0x102, 0x628, 0x102,
- 0x62c, 0x102, 0x647, 0x102, 0x62d, 0x102, 0x637, 0x102,
- 0x64a, 0x102, 0x643, 0x102, 0x645, 0x102, 0x646, 0x102,
- 0x633, 0x102, 0x639, 0x102, 0x641, 0x102, 0x635, 0x102,
- 0x642, 0x102, 0x634, 0x102, 0x62a, 0x102, 0x62b, 0x102,
- 0x62e, 0x102, 0x636, 0x102, 0x638, 0x102, 0x63a, 0x102,
- 0x66e, 0x102, 0x6a1, 0x102, 0x627, 0x102, 0x628, 0x102,
- 0x62c, 0x102, 0x62f, 0x102, 0x647, 0x102, 0x648, 0x102,
+ 0x39, 0x109, 0x430, 0x109, 0x431, 0x109, 0x432, 0x109,
+ 0x433, 0x109, 0x434, 0x109, 0x435, 0x109, 0x436, 0x109,
+ 0x437, 0x109, 0x438, 0x109, 0x43a, 0x109, 0x43b, 0x109,
+ 0x43c, 0x109, 0x43e, 0x109, 0x43f, 0x109, 0x440, 0x109,
+ 0x441, 0x109, 0x442, 0x109, 0x443, 0x109, 0x444, 0x109,
+ 0x445, 0x109, 0x446, 0x109, 0x447, 0x109, 0x448, 0x109,
+ 0x44b, 0x109, 0x44d, 0x109, 0x44e, 0x109, 0xa689, 0x109,
+ 0x4d9, 0x109, 0x456, 0x109, 0x458, 0x109, 0x4e9, 0x109,
+ 0x4af, 0x109, 0x4cf, 0x10a, 0x430, 0x10a, 0x431, 0x10a,
+ 0x432, 0x10a, 0x433, 0x10a, 0x434, 0x10a, 0x435, 0x10a,
+ 0x436, 0x10a, 0x437, 0x10a, 0x438, 0x10a, 0x43a, 0x10a,
+ 0x43b, 0x10a, 0x43e, 0x10a, 0x43f, 0x10a, 0x441, 0x10a,
+ 0x443, 0x10a, 0x444, 0x10a, 0x445, 0x10a, 0x446, 0x10a,
+ 0x447, 0x10a, 0x448, 0x10a, 0x44a, 0x10a, 0x44b, 0x10a,
+ 0x491, 0x10a, 0x456, 0x10a, 0x455, 0x10a, 0x45f, 0x109,
+ 0x4ab, 0x109, 0xa651, 0x109, 0x4b1, 0x102, 0x627, 0x102,
+ 0x628, 0x102, 0x62c, 0x102, 0x62f, 0x102, 0x648, 0x102,
0x632, 0x102, 0x62d, 0x102, 0x637, 0x102, 0x64a, 0x102,
- 0x644, 0x102, 0x645, 0x102, 0x646, 0x102, 0x633, 0x102,
- 0x639, 0x102, 0x641, 0x102, 0x635, 0x102, 0x642, 0x102,
- 0x631, 0x102, 0x634, 0x102, 0x62a, 0x102, 0x62b, 0x102,
- 0x62e, 0x102, 0x630, 0x102, 0x636, 0x102, 0x638, 0x102,
- 0x63a, 0x102, 0x628, 0x102, 0x62c, 0x102, 0x62f, 0x102,
- 0x648, 0x102, 0x632, 0x102, 0x62d, 0x102, 0x637, 0x102,
- 0x64a, 0x102, 0x644, 0x102, 0x645, 0x102, 0x646, 0x102,
+ 0x643, 0x102, 0x644, 0x102, 0x645, 0x102, 0x646, 0x102,
0x633, 0x102, 0x639, 0x102, 0x641, 0x102, 0x635, 0x102,
0x642, 0x102, 0x631, 0x102, 0x634, 0x102, 0x62a, 0x102,
0x62b, 0x102, 0x62e, 0x102, 0x630, 0x102, 0x636, 0x102,
- 0x638, 0x102, 0x63a, 0x210, 0x30, 0x2e, 0x210, 0x30,
- 0x2c, 0x210, 0x31, 0x2c, 0x210, 0x32, 0x2c, 0x210,
- 0x33, 0x2c, 0x210, 0x34, 0x2c, 0x210, 0x35, 0x2c,
- 0x210, 0x36, 0x2c, 0x210, 0x37, 0x2c, 0x210, 0x38,
- 0x2c, 0x210, 0x39, 0x2c, 0x310, 0x28, 0x41, 0x29,
- 0x310, 0x28, 0x42, 0x29, 0x310, 0x28, 0x43, 0x29,
- 0x310, 0x28, 0x44, 0x29, 0x310, 0x28, 0x45, 0x29,
- 0x310, 0x28, 0x46, 0x29, 0x310, 0x28, 0x47, 0x29,
- 0x310, 0x28, 0x48, 0x29, 0x310, 0x28, 0x49, 0x29,
- 0x310, 0x28, 0x4a, 0x29, 0x310, 0x28, 0x4b, 0x29,
- 0x310, 0x28, 0x4c, 0x29, 0x310, 0x28, 0x4d, 0x29,
- 0x310, 0x28, 0x4e, 0x29, 0x310, 0x28, 0x4f, 0x29,
- 0x310, 0x28, 0x50, 0x29, 0x310, 0x28, 0x51, 0x29,
- 0x310, 0x28, 0x52, 0x29, 0x310, 0x28, 0x53, 0x29,
- 0x310, 0x28, 0x54, 0x29, 0x310, 0x28, 0x55, 0x29,
- 0x310, 0x28, 0x56, 0x29, 0x310, 0x28, 0x57, 0x29,
- 0x310, 0x28, 0x58, 0x29, 0x310, 0x28, 0x59, 0x29,
- 0x310, 0x28, 0x5a, 0x29, 0x310, 0x3014, 0x53, 0x3015,
- 0x108, 0x43, 0x108, 0x52, 0x208, 0x43, 0x44, 0x208,
- 0x57, 0x5a, 0x10f, 0x41, 0x10f, 0x42, 0x10f, 0x43,
- 0x10f, 0x44, 0x10f, 0x45, 0x10f, 0x46, 0x10f, 0x47,
- 0x10f, 0x48, 0x10f, 0x49, 0x10f, 0x4a, 0x10f, 0x4b,
- 0x10f, 0x4c, 0x10f, 0x4d, 0x10f, 0x4e, 0x10f, 0x4f,
- 0x10f, 0x50, 0x10f, 0x51, 0x10f, 0x52, 0x10f, 0x53,
- 0x10f, 0x54, 0x10f, 0x55, 0x10f, 0x56, 0x10f, 0x57,
- 0x10f, 0x58, 0x10f, 0x59, 0x10f, 0x5a, 0x20f, 0x48,
- 0x56, 0x20f, 0x4d, 0x56, 0x20f, 0x53, 0x44, 0x20f,
- 0x53, 0x53, 0x30f, 0x50, 0x50, 0x56, 0x20f, 0x57,
- 0x43, 0x209, 0x4d, 0x43, 0x209, 0x4d, 0x44, 0x209,
- 0x4d, 0x52, 0x20f, 0x44, 0x4a, 0x20f, 0x307b, 0x304b,
- 0x20f, 0x30b3, 0x30b3, 0x10f, 0x30b5, 0x10f, 0x624b, 0x10f,
- 0x5b57, 0x10f, 0x53cc, 0x10f, 0x30c7, 0x10f, 0x4e8c, 0x10f,
- 0x591a, 0x10f, 0x89e3, 0x10f, 0x5929, 0x10f, 0x4ea4, 0x10f,
- 0x6620, 0x10f, 0x7121, 0x10f, 0x6599, 0x10f, 0x524d, 0x10f,
- 0x5f8c, 0x10f, 0x518d, 0x10f, 0x65b0, 0x10f, 0x521d, 0x10f,
- 0x7d42, 0x10f, 0x751f, 0x10f, 0x8ca9, 0x10f, 0x58f0, 0x10f,
- 0x5439, 0x10f, 0x6f14, 0x10f, 0x6295, 0x10f, 0x6355, 0x10f,
- 0x4e00, 0x10f, 0x4e09, 0x10f, 0x904a, 0x10f, 0x5de6, 0x10f,
- 0x4e2d, 0x10f, 0x53f3, 0x10f, 0x6307, 0x10f, 0x8d70, 0x10f,
- 0x6253, 0x10f, 0x7981, 0x10f, 0x7a7a, 0x10f, 0x5408, 0x10f,
- 0x6e80, 0x10f, 0x6709, 0x10f, 0x6708, 0x10f, 0x7533, 0x10f,
- 0x5272, 0x10f, 0x55b6, 0x10f, 0x914d, 0x310, 0x3014, 0x672c,
- 0x3015, 0x310, 0x3014, 0x4e09, 0x3015, 0x310, 0x3014, 0x4e8c,
- 0x3015, 0x310, 0x3014, 0x5b89, 0x3015, 0x310, 0x3014, 0x70b9,
- 0x3015, 0x310, 0x3014, 0x6253, 0x3015, 0x310, 0x3014, 0x76d7,
- 0x3015, 0x310, 0x3014, 0x52dd, 0x3015, 0x310, 0x3014, 0x6557,
- 0x3015, 0x108, 0x5f97, 0x108, 0x53ef, 0x102, 0x30, 0x102,
- 0x31, 0x102, 0x32, 0x102, 0x33, 0x102, 0x34, 0x102,
- 0x35, 0x102, 0x36, 0x102, 0x37, 0x102, 0x38, 0x102,
- 0x39, 0x101, 0x4e3d, 0x101, 0x4e38, 0x101, 0x4e41, 0x201,
- 0xd840, 0xdd22, 0x101, 0x4f60, 0x101, 0x4fae, 0x101, 0x4fbb,
- 0x101, 0x5002, 0x101, 0x507a, 0x101, 0x5099, 0x101, 0x50e7,
- 0x101, 0x50cf, 0x101, 0x349e, 0x201, 0xd841, 0xde3a, 0x101,
- 0x514d, 0x101, 0x5154, 0x101, 0x5164, 0x101, 0x5177, 0x201,
- 0xd841, 0xdd1c, 0x101, 0x34b9, 0x101, 0x5167, 0x101, 0x518d,
- 0x201, 0xd841, 0xdd4b, 0x101, 0x5197, 0x101, 0x51a4, 0x101,
- 0x4ecc, 0x101, 0x51ac, 0x101, 0x51b5, 0x201, 0xd864, 0xdddf,
- 0x101, 0x51f5, 0x101, 0x5203, 0x101, 0x34df, 0x101, 0x523b,
- 0x101, 0x5246, 0x101, 0x5272, 0x101, 0x5277, 0x101, 0x3515,
- 0x101, 0x52c7, 0x101, 0x52c9, 0x101, 0x52e4, 0x101, 0x52fa,
- 0x101, 0x5305, 0x101, 0x5306, 0x101, 0x5317, 0x101, 0x5349,
- 0x101, 0x5351, 0x101, 0x535a, 0x101, 0x5373, 0x101, 0x537d,
- 0x101, 0x537f, 0x101, 0x537f, 0x101, 0x537f, 0x201, 0xd842,
- 0xde2c, 0x101, 0x7070, 0x101, 0x53ca, 0x101, 0x53df, 0x201,
- 0xd842, 0xdf63, 0x101, 0x53eb, 0x101, 0x53f1, 0x101, 0x5406,
- 0x101, 0x549e, 0x101, 0x5438, 0x101, 0x5448, 0x101, 0x5468,
- 0x101, 0x54a2, 0x101, 0x54f6, 0x101, 0x5510, 0x101, 0x5553,
- 0x101, 0x5563, 0x101, 0x5584, 0x101, 0x5584, 0x101, 0x5599,
- 0x101, 0x55ab, 0x101, 0x55b3, 0x101, 0x55c2, 0x101, 0x5716,
- 0x101, 0x5606, 0x101, 0x5717, 0x101, 0x5651, 0x101, 0x5674,
- 0x101, 0x5207, 0x101, 0x58ee, 0x101, 0x57ce, 0x101, 0x57f4,
- 0x101, 0x580d, 0x101, 0x578b, 0x101, 0x5832, 0x101, 0x5831,
- 0x101, 0x58ac, 0x201, 0xd845, 0xdce4, 0x101, 0x58f2, 0x101,
- 0x58f7, 0x101, 0x5906, 0x101, 0x591a, 0x101, 0x5922, 0x101,
- 0x5962, 0x201, 0xd845, 0xdea8, 0x201, 0xd845, 0xdeea, 0x101,
- 0x59ec, 0x101, 0x5a1b, 0x101, 0x5a27, 0x101, 0x59d8, 0x101,
- 0x5a66, 0x101, 0x36ee, 0x101, 0x36fc, 0x101, 0x5b08, 0x101,
- 0x5b3e, 0x101, 0x5b3e, 0x201, 0xd846, 0xddc8, 0x101, 0x5bc3,
- 0x101, 0x5bd8, 0x101, 0x5be7, 0x101, 0x5bf3, 0x201, 0xd846,
- 0xdf18, 0x101, 0x5bff, 0x101, 0x5c06, 0x101, 0x5f53, 0x101,
- 0x5c22, 0x101, 0x3781, 0x101, 0x5c60, 0x101, 0x5c6e, 0x101,
- 0x5cc0, 0x101, 0x5c8d, 0x201, 0xd847, 0xdde4, 0x101, 0x5d43,
- 0x201, 0xd847, 0xdde6, 0x101, 0x5d6e, 0x101, 0x5d6b, 0x101,
- 0x5d7c, 0x101, 0x5de1, 0x101, 0x5de2, 0x101, 0x382f, 0x101,
- 0x5dfd, 0x101, 0x5e28, 0x101, 0x5e3d, 0x101, 0x5e69, 0x101,
- 0x3862, 0x201, 0xd848, 0xdd83, 0x101, 0x387c, 0x101, 0x5eb0,
- 0x101, 0x5eb3, 0x101, 0x5eb6, 0x101, 0x5eca, 0x201, 0xd868,
- 0xdf92, 0x101, 0x5efe, 0x201, 0xd848, 0xdf31, 0x201, 0xd848,
- 0xdf31, 0x101, 0x8201, 0x101, 0x5f22, 0x101, 0x5f22, 0x101,
- 0x38c7, 0x201, 0xd84c, 0xdeb8, 0x201, 0xd858, 0xddda, 0x101,
- 0x5f62, 0x101, 0x5f6b, 0x101, 0x38e3, 0x101, 0x5f9a, 0x101,
- 0x5fcd, 0x101, 0x5fd7, 0x101, 0x5ff9, 0x101, 0x6081, 0x101,
- 0x393a, 0x101, 0x391c, 0x101, 0x6094, 0x201, 0xd849, 0xded4,
- 0x101, 0x60c7, 0x101, 0x6148, 0x101, 0x614c, 0x101, 0x614e,
- 0x101, 0x614c, 0x101, 0x617a, 0x101, 0x618e, 0x101, 0x61b2,
- 0x101, 0x61a4, 0x101, 0x61af, 0x101, 0x61de, 0x101, 0x61f2,
- 0x101, 0x61f6, 0x101, 0x6210, 0x101, 0x621b, 0x101, 0x625d,
- 0x101, 0x62b1, 0x101, 0x62d4, 0x101, 0x6350, 0x201, 0xd84a,
- 0xdf0c, 0x101, 0x633d, 0x101, 0x62fc, 0x101, 0x6368, 0x101,
- 0x6383, 0x101, 0x63e4, 0x201, 0xd84a, 0xdff1, 0x101, 0x6422,
- 0x101, 0x63c5, 0x101, 0x63a9, 0x101, 0x3a2e, 0x101, 0x6469,
- 0x101, 0x647e, 0x101, 0x649d, 0x101, 0x6477, 0x101, 0x3a6c,
- 0x101, 0x654f, 0x101, 0x656c, 0x201, 0xd84c, 0xdc0a, 0x101,
- 0x65e3, 0x101, 0x66f8, 0x101, 0x6649, 0x101, 0x3b19, 0x101,
- 0x6691, 0x101, 0x3b08, 0x101, 0x3ae4, 0x101, 0x5192, 0x101,
- 0x5195, 0x101, 0x6700, 0x101, 0x669c, 0x101, 0x80ad, 0x101,
- 0x43d9, 0x101, 0x6717, 0x101, 0x671b, 0x101, 0x6721, 0x101,
- 0x675e, 0x101, 0x6753, 0x201, 0xd84c, 0xdfc3, 0x101, 0x3b49,
- 0x101, 0x67fa, 0x101, 0x6785, 0x101, 0x6852, 0x101, 0x6885,
- 0x201, 0xd84d, 0xdc6d, 0x101, 0x688e, 0x101, 0x681f, 0x101,
- 0x6914, 0x101, 0x3b9d, 0x101, 0x6942, 0x101, 0x69a3, 0x101,
- 0x69ea, 0x101, 0x6aa8, 0x201, 0xd84d, 0xdea3, 0x101, 0x6adb,
- 0x101, 0x3c18, 0x101, 0x6b21, 0x201, 0xd84e, 0xdca7, 0x101,
- 0x6b54, 0x101, 0x3c4e, 0x101, 0x6b72, 0x101, 0x6b9f, 0x101,
- 0x6bba, 0x101, 0x6bbb, 0x201, 0xd84e, 0xde8d, 0x201, 0xd847,
- 0xdd0b, 0x201, 0xd84e, 0xdefa, 0x101, 0x6c4e, 0x201, 0xd84f,
- 0xdcbc, 0x101, 0x6cbf, 0x101, 0x6ccd, 0x101, 0x6c67, 0x101,
- 0x6d16, 0x101, 0x6d3e, 0x101, 0x6d77, 0x101, 0x6d41, 0x101,
- 0x6d69, 0x101, 0x6d78, 0x101, 0x6d85, 0x201, 0xd84f, 0xdd1e,
- 0x101, 0x6d34, 0x101, 0x6e2f, 0x101, 0x6e6e, 0x101, 0x3d33,
- 0x101, 0x6ecb, 0x101, 0x6ec7, 0x201, 0xd84f, 0xded1, 0x101,
- 0x6df9, 0x101, 0x6f6e, 0x201, 0xd84f, 0xdf5e, 0x201, 0xd84f,
- 0xdf8e, 0x101, 0x6fc6, 0x101, 0x7039, 0x101, 0x701e, 0x101,
- 0x701b, 0x101, 0x3d96, 0x101, 0x704a, 0x101, 0x707d, 0x101,
- 0x7077, 0x101, 0x70ad, 0x201, 0xd841, 0xdd25, 0x101, 0x7145,
- 0x201, 0xd850, 0xde63, 0x101, 0x719c, 0x201, 0xd850, 0xdfab,
- 0x101, 0x7228, 0x101, 0x7235, 0x101, 0x7250, 0x201, 0xd851,
- 0xde08, 0x101, 0x7280, 0x101, 0x7295, 0x201, 0xd851, 0xdf35,
- 0x201, 0xd852, 0xdc14, 0x101, 0x737a, 0x101, 0x738b, 0x101,
- 0x3eac, 0x101, 0x73a5, 0x101, 0x3eb8, 0x101, 0x3eb8, 0x101,
- 0x7447, 0x101, 0x745c, 0x101, 0x7471, 0x101, 0x7485, 0x101,
- 0x74ca, 0x101, 0x3f1b, 0x101, 0x7524, 0x201, 0xd853, 0xdc36,
- 0x101, 0x753e, 0x201, 0xd853, 0xdc92, 0x101, 0x7570, 0x201,
- 0xd848, 0xdd9f, 0x101, 0x7610, 0x201, 0xd853, 0xdfa1, 0x201,
- 0xd853, 0xdfb8, 0x201, 0xd854, 0xdc44, 0x101, 0x3ffc, 0x101,
- 0x4008, 0x101, 0x76f4, 0x201, 0xd854, 0xdcf3, 0x201, 0xd854,
- 0xdcf2, 0x201, 0xd854, 0xdd19, 0x201, 0xd854, 0xdd33, 0x101,
- 0x771e, 0x101, 0x771f, 0x101, 0x771f, 0x101, 0x774a, 0x101,
- 0x4039, 0x101, 0x778b, 0x101, 0x4046, 0x101, 0x4096, 0x201,
- 0xd855, 0xdc1d, 0x101, 0x784e, 0x101, 0x788c, 0x101, 0x78cc,
- 0x101, 0x40e3, 0x201, 0xd855, 0xde26, 0x101, 0x7956, 0x201,
- 0xd855, 0xde9a, 0x201, 0xd855, 0xdec5, 0x101, 0x798f, 0x101,
- 0x79eb, 0x101, 0x412f, 0x101, 0x7a40, 0x101, 0x7a4a, 0x101,
- 0x7a4f, 0x201, 0xd856, 0xdd7c, 0x201, 0xd856, 0xdea7, 0x201,
- 0xd856, 0xdea7, 0x101, 0x7aee, 0x101, 0x4202, 0x201, 0xd856,
- 0xdfab, 0x101, 0x7bc6, 0x101, 0x7bc9, 0x101, 0x4227, 0x201,
- 0xd857, 0xdc80, 0x101, 0x7cd2, 0x101, 0x42a0, 0x101, 0x7ce8,
- 0x101, 0x7ce3, 0x101, 0x7d00, 0x201, 0xd857, 0xdf86, 0x101,
- 0x7d63, 0x101, 0x4301, 0x101, 0x7dc7, 0x101, 0x7e02, 0x101,
- 0x7e45, 0x101, 0x4334, 0x201, 0xd858, 0xde28, 0x201, 0xd858,
- 0xde47, 0x101, 0x4359, 0x201, 0xd858, 0xded9, 0x101, 0x7f7a,
- 0x201, 0xd858, 0xdf3e, 0x101, 0x7f95, 0x101, 0x7ffa, 0x101,
- 0x8005, 0x201, 0xd859, 0xdcda, 0x201, 0xd859, 0xdd23, 0x101,
- 0x8060, 0x201, 0xd859, 0xdda8, 0x101, 0x8070, 0x201, 0xd84c,
- 0xdf5f, 0x101, 0x43d5, 0x101, 0x80b2, 0x101, 0x8103, 0x101,
- 0x440b, 0x101, 0x813e, 0x101, 0x5ab5, 0x201, 0xd859, 0xdfa7,
- 0x201, 0xd859, 0xdfb5, 0x201, 0xd84c, 0xdf93, 0x201, 0xd84c,
- 0xdf9c, 0x101, 0x8201, 0x101, 0x8204, 0x101, 0x8f9e, 0x101,
- 0x446b, 0x101, 0x8291, 0x101, 0x828b, 0x101, 0x829d, 0x101,
- 0x52b3, 0x101, 0x82b1, 0x101, 0x82b3, 0x101, 0x82bd, 0x101,
- 0x82e6, 0x201, 0xd85a, 0xdf3c, 0x101, 0x82e5, 0x101, 0x831d,
- 0x101, 0x8363, 0x101, 0x83ad, 0x101, 0x8323, 0x101, 0x83bd,
- 0x101, 0x83e7, 0x101, 0x8457, 0x101, 0x8353, 0x101, 0x83ca,
- 0x101, 0x83cc, 0x101, 0x83dc, 0x201, 0xd85b, 0xdc36, 0x201,
- 0xd85b, 0xdd6b, 0x201, 0xd85b, 0xdcd5, 0x101, 0x452b, 0x101,
- 0x84f1, 0x101, 0x84f3, 0x101, 0x8516, 0x201, 0xd85c, 0xdfca,
- 0x101, 0x8564, 0x201, 0xd85b, 0xdf2c, 0x101, 0x455d, 0x101,
- 0x4561, 0x201, 0xd85b, 0xdfb1, 0x201, 0xd85c, 0xdcd2, 0x101,
- 0x456b, 0x101, 0x8650, 0x101, 0x865c, 0x101, 0x8667, 0x101,
- 0x8669, 0x101, 0x86a9, 0x101, 0x8688, 0x101, 0x870e, 0x101,
- 0x86e2, 0x101, 0x8779, 0x101, 0x8728, 0x101, 0x876b, 0x101,
- 0x8786, 0x101, 0x45d7, 0x101, 0x87e1, 0x101, 0x8801, 0x101,
- 0x45f9, 0x101, 0x8860, 0x101, 0x8863, 0x201, 0xd85d, 0xde67,
- 0x101, 0x88d7, 0x101, 0x88de, 0x101, 0x4635, 0x101, 0x88fa,
- 0x101, 0x34bb, 0x201, 0xd85e, 0xdcae, 0x201, 0xd85e, 0xdd66,
- 0x101, 0x46be, 0x101, 0x46c7, 0x101, 0x8aa0, 0x101, 0x8aed,
- 0x101, 0x8b8a, 0x101, 0x8c55, 0x201, 0xd85f, 0xdca8, 0x101,
- 0x8cab, 0x101, 0x8cc1, 0x101, 0x8d1b, 0x101, 0x8d77, 0x201,
- 0xd85f, 0xdf2f, 0x201, 0xd842, 0xdc04, 0x101, 0x8dcb, 0x101,
- 0x8dbc, 0x101, 0x8df0, 0x201, 0xd842, 0xdcde, 0x101, 0x8ed4,
- 0x101, 0x8f38, 0x201, 0xd861, 0xddd2, 0x201, 0xd861, 0xdded,
- 0x101, 0x9094, 0x101, 0x90f1, 0x101, 0x9111, 0x201, 0xd861,
- 0xdf2e, 0x101, 0x911b, 0x101, 0x9238, 0x101, 0x92d7, 0x101,
- 0x92d8, 0x101, 0x927c, 0x101, 0x93f9, 0x101, 0x9415, 0x201,
- 0xd862, 0xdffa, 0x101, 0x958b, 0x101, 0x4995, 0x101, 0x95b7,
- 0x201, 0xd863, 0xdd77, 0x101, 0x49e6, 0x101, 0x96c3, 0x101,
- 0x5db2, 0x101, 0x9723, 0x201, 0xd864, 0xdd45, 0x201, 0xd864,
- 0xde1a, 0x101, 0x4a6e, 0x101, 0x4a76, 0x101, 0x97e0, 0x201,
- 0xd865, 0xdc0a, 0x101, 0x4ab2, 0x201, 0xd865, 0xdc96, 0x101,
- 0x980b, 0x101, 0x980b, 0x101, 0x9829, 0x201, 0xd865, 0xddb6,
- 0x101, 0x98e2, 0x101, 0x4b33, 0x101, 0x9929, 0x101, 0x99a7,
- 0x101, 0x99c2, 0x101, 0x99fe, 0x101, 0x4bce, 0x201, 0xd866,
- 0xdf30, 0x101, 0x9b12, 0x101, 0x9c40, 0x101, 0x9cfd, 0x101,
- 0x4cce, 0x101, 0x4ced, 0x101, 0x9d67, 0x201, 0xd868, 0xdcce,
- 0x101, 0x4cf8, 0x201, 0xd868, 0xdd05, 0x201, 0xd868, 0xde0e,
- 0x201, 0xd868, 0xde91, 0x101, 0x9ebb, 0x101, 0x4d56, 0x101,
- 0x9ef9, 0x101, 0x9efe, 0x101, 0x9f05, 0x101, 0x9f0f, 0x101,
- 0x9f16, 0x101, 0x9f3b, 0x201, 0xd869, 0xde00
+ 0x638, 0x102, 0x63a, 0x102, 0x66e, 0x102, 0x6ba, 0x102,
+ 0x6a1, 0x102, 0x66f, 0x102, 0x628, 0x102, 0x62c, 0x102,
+ 0x647, 0x102, 0x62d, 0x102, 0x64a, 0x102, 0x643, 0x102,
+ 0x644, 0x102, 0x645, 0x102, 0x646, 0x102, 0x633, 0x102,
+ 0x639, 0x102, 0x641, 0x102, 0x635, 0x102, 0x642, 0x102,
+ 0x634, 0x102, 0x62a, 0x102, 0x62b, 0x102, 0x62e, 0x102,
+ 0x636, 0x102, 0x63a, 0x102, 0x62c, 0x102, 0x62d, 0x102,
+ 0x64a, 0x102, 0x644, 0x102, 0x646, 0x102, 0x633, 0x102,
+ 0x639, 0x102, 0x635, 0x102, 0x642, 0x102, 0x634, 0x102,
+ 0x62e, 0x102, 0x636, 0x102, 0x63a, 0x102, 0x6ba, 0x102,
+ 0x66f, 0x102, 0x628, 0x102, 0x62c, 0x102, 0x647, 0x102,
+ 0x62d, 0x102, 0x637, 0x102, 0x64a, 0x102, 0x643, 0x102,
+ 0x645, 0x102, 0x646, 0x102, 0x633, 0x102, 0x639, 0x102,
+ 0x641, 0x102, 0x635, 0x102, 0x642, 0x102, 0x634, 0x102,
+ 0x62a, 0x102, 0x62b, 0x102, 0x62e, 0x102, 0x636, 0x102,
+ 0x638, 0x102, 0x63a, 0x102, 0x66e, 0x102, 0x6a1, 0x102,
+ 0x627, 0x102, 0x628, 0x102, 0x62c, 0x102, 0x62f, 0x102,
+ 0x647, 0x102, 0x648, 0x102, 0x632, 0x102, 0x62d, 0x102,
+ 0x637, 0x102, 0x64a, 0x102, 0x644, 0x102, 0x645, 0x102,
+ 0x646, 0x102, 0x633, 0x102, 0x639, 0x102, 0x641, 0x102,
+ 0x635, 0x102, 0x642, 0x102, 0x631, 0x102, 0x634, 0x102,
+ 0x62a, 0x102, 0x62b, 0x102, 0x62e, 0x102, 0x630, 0x102,
+ 0x636, 0x102, 0x638, 0x102, 0x63a, 0x102, 0x628, 0x102,
+ 0x62c, 0x102, 0x62f, 0x102, 0x648, 0x102, 0x632, 0x102,
+ 0x62d, 0x102, 0x637, 0x102, 0x64a, 0x102, 0x644, 0x102,
+ 0x645, 0x102, 0x646, 0x102, 0x633, 0x102, 0x639, 0x102,
+ 0x641, 0x102, 0x635, 0x102, 0x642, 0x102, 0x631, 0x102,
+ 0x634, 0x102, 0x62a, 0x102, 0x62b, 0x102, 0x62e, 0x102,
+ 0x630, 0x102, 0x636, 0x102, 0x638, 0x102, 0x63a, 0x210,
+ 0x30, 0x2e, 0x210, 0x30, 0x2c, 0x210, 0x31, 0x2c,
+ 0x210, 0x32, 0x2c, 0x210, 0x33, 0x2c, 0x210, 0x34,
+ 0x2c, 0x210, 0x35, 0x2c, 0x210, 0x36, 0x2c, 0x210,
+ 0x37, 0x2c, 0x210, 0x38, 0x2c, 0x210, 0x39, 0x2c,
+ 0x310, 0x28, 0x41, 0x29, 0x310, 0x28, 0x42, 0x29,
+ 0x310, 0x28, 0x43, 0x29, 0x310, 0x28, 0x44, 0x29,
+ 0x310, 0x28, 0x45, 0x29, 0x310, 0x28, 0x46, 0x29,
+ 0x310, 0x28, 0x47, 0x29, 0x310, 0x28, 0x48, 0x29,
+ 0x310, 0x28, 0x49, 0x29, 0x310, 0x28, 0x4a, 0x29,
+ 0x310, 0x28, 0x4b, 0x29, 0x310, 0x28, 0x4c, 0x29,
+ 0x310, 0x28, 0x4d, 0x29, 0x310, 0x28, 0x4e, 0x29,
+ 0x310, 0x28, 0x4f, 0x29, 0x310, 0x28, 0x50, 0x29,
+ 0x310, 0x28, 0x51, 0x29, 0x310, 0x28, 0x52, 0x29,
+ 0x310, 0x28, 0x53, 0x29, 0x310, 0x28, 0x54, 0x29,
+ 0x310, 0x28, 0x55, 0x29, 0x310, 0x28, 0x56, 0x29,
+ 0x310, 0x28, 0x57, 0x29, 0x310, 0x28, 0x58, 0x29,
+ 0x310, 0x28, 0x59, 0x29, 0x310, 0x28, 0x5a, 0x29,
+ 0x310, 0x3014, 0x53, 0x3015, 0x108, 0x43, 0x108, 0x52,
+ 0x208, 0x43, 0x44, 0x208, 0x57, 0x5a, 0x10f, 0x41,
+ 0x10f, 0x42, 0x10f, 0x43, 0x10f, 0x44, 0x10f, 0x45,
+ 0x10f, 0x46, 0x10f, 0x47, 0x10f, 0x48, 0x10f, 0x49,
+ 0x10f, 0x4a, 0x10f, 0x4b, 0x10f, 0x4c, 0x10f, 0x4d,
+ 0x10f, 0x4e, 0x10f, 0x4f, 0x10f, 0x50, 0x10f, 0x51,
+ 0x10f, 0x52, 0x10f, 0x53, 0x10f, 0x54, 0x10f, 0x55,
+ 0x10f, 0x56, 0x10f, 0x57, 0x10f, 0x58, 0x10f, 0x59,
+ 0x10f, 0x5a, 0x20f, 0x48, 0x56, 0x20f, 0x4d, 0x56,
+ 0x20f, 0x53, 0x44, 0x20f, 0x53, 0x53, 0x30f, 0x50,
+ 0x50, 0x56, 0x20f, 0x57, 0x43, 0x209, 0x4d, 0x43,
+ 0x209, 0x4d, 0x44, 0x209, 0x4d, 0x52, 0x20f, 0x44,
+ 0x4a, 0x20f, 0x307b, 0x304b, 0x20f, 0x30b3, 0x30b3, 0x10f,
+ 0x30b5, 0x10f, 0x624b, 0x10f, 0x5b57, 0x10f, 0x53cc, 0x10f,
+ 0x30c7, 0x10f, 0x4e8c, 0x10f, 0x591a, 0x10f, 0x89e3, 0x10f,
+ 0x5929, 0x10f, 0x4ea4, 0x10f, 0x6620, 0x10f, 0x7121, 0x10f,
+ 0x6599, 0x10f, 0x524d, 0x10f, 0x5f8c, 0x10f, 0x518d, 0x10f,
+ 0x65b0, 0x10f, 0x521d, 0x10f, 0x7d42, 0x10f, 0x751f, 0x10f,
+ 0x8ca9, 0x10f, 0x58f0, 0x10f, 0x5439, 0x10f, 0x6f14, 0x10f,
+ 0x6295, 0x10f, 0x6355, 0x10f, 0x4e00, 0x10f, 0x4e09, 0x10f,
+ 0x904a, 0x10f, 0x5de6, 0x10f, 0x4e2d, 0x10f, 0x53f3, 0x10f,
+ 0x6307, 0x10f, 0x8d70, 0x10f, 0x6253, 0x10f, 0x7981, 0x10f,
+ 0x7a7a, 0x10f, 0x5408, 0x10f, 0x6e80, 0x10f, 0x6709, 0x10f,
+ 0x6708, 0x10f, 0x7533, 0x10f, 0x5272, 0x10f, 0x55b6, 0x10f,
+ 0x914d, 0x310, 0x3014, 0x672c, 0x3015, 0x310, 0x3014, 0x4e09,
+ 0x3015, 0x310, 0x3014, 0x4e8c, 0x3015, 0x310, 0x3014, 0x5b89,
+ 0x3015, 0x310, 0x3014, 0x70b9, 0x3015, 0x310, 0x3014, 0x6253,
+ 0x3015, 0x310, 0x3014, 0x76d7, 0x3015, 0x310, 0x3014, 0x52dd,
+ 0x3015, 0x310, 0x3014, 0x6557, 0x3015, 0x108, 0x5f97, 0x108,
+ 0x53ef, 0x102, 0x30, 0x102, 0x31, 0x102, 0x32, 0x102,
+ 0x33, 0x102, 0x34, 0x102, 0x35, 0x102, 0x36, 0x102,
+ 0x37, 0x102, 0x38, 0x102, 0x39, 0x101, 0x4e3d, 0x101,
+ 0x4e38, 0x101, 0x4e41, 0x201, 0xd840, 0xdd22, 0x101, 0x4f60,
+ 0x101, 0x4fae, 0x101, 0x4fbb, 0x101, 0x5002, 0x101, 0x507a,
+ 0x101, 0x5099, 0x101, 0x50e7, 0x101, 0x50cf, 0x101, 0x349e,
+ 0x201, 0xd841, 0xde3a, 0x101, 0x514d, 0x101, 0x5154, 0x101,
+ 0x5164, 0x101, 0x5177, 0x201, 0xd841, 0xdd1c, 0x101, 0x34b9,
+ 0x101, 0x5167, 0x101, 0x518d, 0x201, 0xd841, 0xdd4b, 0x101,
+ 0x5197, 0x101, 0x51a4, 0x101, 0x4ecc, 0x101, 0x51ac, 0x101,
+ 0x51b5, 0x201, 0xd864, 0xdddf, 0x101, 0x51f5, 0x101, 0x5203,
+ 0x101, 0x34df, 0x101, 0x523b, 0x101, 0x5246, 0x101, 0x5272,
+ 0x101, 0x5277, 0x101, 0x3515, 0x101, 0x52c7, 0x101, 0x52c9,
+ 0x101, 0x52e4, 0x101, 0x52fa, 0x101, 0x5305, 0x101, 0x5306,
+ 0x101, 0x5317, 0x101, 0x5349, 0x101, 0x5351, 0x101, 0x535a,
+ 0x101, 0x5373, 0x101, 0x537d, 0x101, 0x537f, 0x101, 0x537f,
+ 0x101, 0x537f, 0x201, 0xd842, 0xde2c, 0x101, 0x7070, 0x101,
+ 0x53ca, 0x101, 0x53df, 0x201, 0xd842, 0xdf63, 0x101, 0x53eb,
+ 0x101, 0x53f1, 0x101, 0x5406, 0x101, 0x549e, 0x101, 0x5438,
+ 0x101, 0x5448, 0x101, 0x5468, 0x101, 0x54a2, 0x101, 0x54f6,
+ 0x101, 0x5510, 0x101, 0x5553, 0x101, 0x5563, 0x101, 0x5584,
+ 0x101, 0x5584, 0x101, 0x5599, 0x101, 0x55ab, 0x101, 0x55b3,
+ 0x101, 0x55c2, 0x101, 0x5716, 0x101, 0x5606, 0x101, 0x5717,
+ 0x101, 0x5651, 0x101, 0x5674, 0x101, 0x5207, 0x101, 0x58ee,
+ 0x101, 0x57ce, 0x101, 0x57f4, 0x101, 0x580d, 0x101, 0x578b,
+ 0x101, 0x5832, 0x101, 0x5831, 0x101, 0x58ac, 0x201, 0xd845,
+ 0xdce4, 0x101, 0x58f2, 0x101, 0x58f7, 0x101, 0x5906, 0x101,
+ 0x591a, 0x101, 0x5922, 0x101, 0x5962, 0x201, 0xd845, 0xdea8,
+ 0x201, 0xd845, 0xdeea, 0x101, 0x59ec, 0x101, 0x5a1b, 0x101,
+ 0x5a27, 0x101, 0x59d8, 0x101, 0x5a66, 0x101, 0x36ee, 0x101,
+ 0x36fc, 0x101, 0x5b08, 0x101, 0x5b3e, 0x101, 0x5b3e, 0x201,
+ 0xd846, 0xddc8, 0x101, 0x5bc3, 0x101, 0x5bd8, 0x101, 0x5be7,
+ 0x101, 0x5bf3, 0x201, 0xd846, 0xdf18, 0x101, 0x5bff, 0x101,
+ 0x5c06, 0x101, 0x5f53, 0x101, 0x5c22, 0x101, 0x3781, 0x101,
+ 0x5c60, 0x101, 0x5c6e, 0x101, 0x5cc0, 0x101, 0x5c8d, 0x201,
+ 0xd847, 0xdde4, 0x101, 0x5d43, 0x201, 0xd847, 0xdde6, 0x101,
+ 0x5d6e, 0x101, 0x5d6b, 0x101, 0x5d7c, 0x101, 0x5de1, 0x101,
+ 0x5de2, 0x101, 0x382f, 0x101, 0x5dfd, 0x101, 0x5e28, 0x101,
+ 0x5e3d, 0x101, 0x5e69, 0x101, 0x3862, 0x201, 0xd848, 0xdd83,
+ 0x101, 0x387c, 0x101, 0x5eb0, 0x101, 0x5eb3, 0x101, 0x5eb6,
+ 0x101, 0x5eca, 0x201, 0xd868, 0xdf92, 0x101, 0x5efe, 0x201,
+ 0xd848, 0xdf31, 0x201, 0xd848, 0xdf31, 0x101, 0x8201, 0x101,
+ 0x5f22, 0x101, 0x5f22, 0x101, 0x38c7, 0x201, 0xd84c, 0xdeb8,
+ 0x201, 0xd858, 0xddda, 0x101, 0x5f62, 0x101, 0x5f6b, 0x101,
+ 0x38e3, 0x101, 0x5f9a, 0x101, 0x5fcd, 0x101, 0x5fd7, 0x101,
+ 0x5ff9, 0x101, 0x6081, 0x101, 0x393a, 0x101, 0x391c, 0x101,
+ 0x6094, 0x201, 0xd849, 0xded4, 0x101, 0x60c7, 0x101, 0x6148,
+ 0x101, 0x614c, 0x101, 0x614e, 0x101, 0x614c, 0x101, 0x617a,
+ 0x101, 0x618e, 0x101, 0x61b2, 0x101, 0x61a4, 0x101, 0x61af,
+ 0x101, 0x61de, 0x101, 0x61f2, 0x101, 0x61f6, 0x101, 0x6210,
+ 0x101, 0x621b, 0x101, 0x625d, 0x101, 0x62b1, 0x101, 0x62d4,
+ 0x101, 0x6350, 0x201, 0xd84a, 0xdf0c, 0x101, 0x633d, 0x101,
+ 0x62fc, 0x101, 0x6368, 0x101, 0x6383, 0x101, 0x63e4, 0x201,
+ 0xd84a, 0xdff1, 0x101, 0x6422, 0x101, 0x63c5, 0x101, 0x63a9,
+ 0x101, 0x3a2e, 0x101, 0x6469, 0x101, 0x647e, 0x101, 0x649d,
+ 0x101, 0x6477, 0x101, 0x3a6c, 0x101, 0x654f, 0x101, 0x656c,
+ 0x201, 0xd84c, 0xdc0a, 0x101, 0x65e3, 0x101, 0x66f8, 0x101,
+ 0x6649, 0x101, 0x3b19, 0x101, 0x6691, 0x101, 0x3b08, 0x101,
+ 0x3ae4, 0x101, 0x5192, 0x101, 0x5195, 0x101, 0x6700, 0x101,
+ 0x669c, 0x101, 0x80ad, 0x101, 0x43d9, 0x101, 0x6717, 0x101,
+ 0x671b, 0x101, 0x6721, 0x101, 0x675e, 0x101, 0x6753, 0x201,
+ 0xd84c, 0xdfc3, 0x101, 0x3b49, 0x101, 0x67fa, 0x101, 0x6785,
+ 0x101, 0x6852, 0x101, 0x6885, 0x201, 0xd84d, 0xdc6d, 0x101,
+ 0x688e, 0x101, 0x681f, 0x101, 0x6914, 0x101, 0x3b9d, 0x101,
+ 0x6942, 0x101, 0x69a3, 0x101, 0x69ea, 0x101, 0x6aa8, 0x201,
+ 0xd84d, 0xdea3, 0x101, 0x6adb, 0x101, 0x3c18, 0x101, 0x6b21,
+ 0x201, 0xd84e, 0xdca7, 0x101, 0x6b54, 0x101, 0x3c4e, 0x101,
+ 0x6b72, 0x101, 0x6b9f, 0x101, 0x6bba, 0x101, 0x6bbb, 0x201,
+ 0xd84e, 0xde8d, 0x201, 0xd847, 0xdd0b, 0x201, 0xd84e, 0xdefa,
+ 0x101, 0x6c4e, 0x201, 0xd84f, 0xdcbc, 0x101, 0x6cbf, 0x101,
+ 0x6ccd, 0x101, 0x6c67, 0x101, 0x6d16, 0x101, 0x6d3e, 0x101,
+ 0x6d77, 0x101, 0x6d41, 0x101, 0x6d69, 0x101, 0x6d78, 0x101,
+ 0x6d85, 0x201, 0xd84f, 0xdd1e, 0x101, 0x6d34, 0x101, 0x6e2f,
+ 0x101, 0x6e6e, 0x101, 0x3d33, 0x101, 0x6ecb, 0x101, 0x6ec7,
+ 0x201, 0xd84f, 0xded1, 0x101, 0x6df9, 0x101, 0x6f6e, 0x201,
+ 0xd84f, 0xdf5e, 0x201, 0xd84f, 0xdf8e, 0x101, 0x6fc6, 0x101,
+ 0x7039, 0x101, 0x701e, 0x101, 0x701b, 0x101, 0x3d96, 0x101,
+ 0x704a, 0x101, 0x707d, 0x101, 0x7077, 0x101, 0x70ad, 0x201,
+ 0xd841, 0xdd25, 0x101, 0x7145, 0x201, 0xd850, 0xde63, 0x101,
+ 0x719c, 0x201, 0xd850, 0xdfab, 0x101, 0x7228, 0x101, 0x7235,
+ 0x101, 0x7250, 0x201, 0xd851, 0xde08, 0x101, 0x7280, 0x101,
+ 0x7295, 0x201, 0xd851, 0xdf35, 0x201, 0xd852, 0xdc14, 0x101,
+ 0x737a, 0x101, 0x738b, 0x101, 0x3eac, 0x101, 0x73a5, 0x101,
+ 0x3eb8, 0x101, 0x3eb8, 0x101, 0x7447, 0x101, 0x745c, 0x101,
+ 0x7471, 0x101, 0x7485, 0x101, 0x74ca, 0x101, 0x3f1b, 0x101,
+ 0x7524, 0x201, 0xd853, 0xdc36, 0x101, 0x753e, 0x201, 0xd853,
+ 0xdc92, 0x101, 0x7570, 0x201, 0xd848, 0xdd9f, 0x101, 0x7610,
+ 0x201, 0xd853, 0xdfa1, 0x201, 0xd853, 0xdfb8, 0x201, 0xd854,
+ 0xdc44, 0x101, 0x3ffc, 0x101, 0x4008, 0x101, 0x76f4, 0x201,
+ 0xd854, 0xdcf3, 0x201, 0xd854, 0xdcf2, 0x201, 0xd854, 0xdd19,
+ 0x201, 0xd854, 0xdd33, 0x101, 0x771e, 0x101, 0x771f, 0x101,
+ 0x771f, 0x101, 0x774a, 0x101, 0x4039, 0x101, 0x778b, 0x101,
+ 0x4046, 0x101, 0x4096, 0x201, 0xd855, 0xdc1d, 0x101, 0x784e,
+ 0x101, 0x788c, 0x101, 0x78cc, 0x101, 0x40e3, 0x201, 0xd855,
+ 0xde26, 0x101, 0x7956, 0x201, 0xd855, 0xde9a, 0x201, 0xd855,
+ 0xdec5, 0x101, 0x798f, 0x101, 0x79eb, 0x101, 0x412f, 0x101,
+ 0x7a40, 0x101, 0x7a4a, 0x101, 0x7a4f, 0x201, 0xd856, 0xdd7c,
+ 0x201, 0xd856, 0xdea7, 0x201, 0xd856, 0xdea7, 0x101, 0x7aee,
+ 0x101, 0x4202, 0x201, 0xd856, 0xdfab, 0x101, 0x7bc6, 0x101,
+ 0x7bc9, 0x101, 0x4227, 0x201, 0xd857, 0xdc80, 0x101, 0x7cd2,
+ 0x101, 0x42a0, 0x101, 0x7ce8, 0x101, 0x7ce3, 0x101, 0x7d00,
+ 0x201, 0xd857, 0xdf86, 0x101, 0x7d63, 0x101, 0x4301, 0x101,
+ 0x7dc7, 0x101, 0x7e02, 0x101, 0x7e45, 0x101, 0x4334, 0x201,
+ 0xd858, 0xde28, 0x201, 0xd858, 0xde47, 0x101, 0x4359, 0x201,
+ 0xd858, 0xded9, 0x101, 0x7f7a, 0x201, 0xd858, 0xdf3e, 0x101,
+ 0x7f95, 0x101, 0x7ffa, 0x101, 0x8005, 0x201, 0xd859, 0xdcda,
+ 0x201, 0xd859, 0xdd23, 0x101, 0x8060, 0x201, 0xd859, 0xdda8,
+ 0x101, 0x8070, 0x201, 0xd84c, 0xdf5f, 0x101, 0x43d5, 0x101,
+ 0x80b2, 0x101, 0x8103, 0x101, 0x440b, 0x101, 0x813e, 0x101,
+ 0x5ab5, 0x201, 0xd859, 0xdfa7, 0x201, 0xd859, 0xdfb5, 0x201,
+ 0xd84c, 0xdf93, 0x201, 0xd84c, 0xdf9c, 0x101, 0x8201, 0x101,
+ 0x8204, 0x101, 0x8f9e, 0x101, 0x446b, 0x101, 0x8291, 0x101,
+ 0x828b, 0x101, 0x829d, 0x101, 0x52b3, 0x101, 0x82b1, 0x101,
+ 0x82b3, 0x101, 0x82bd, 0x101, 0x82e6, 0x201, 0xd85a, 0xdf3c,
+ 0x101, 0x82e5, 0x101, 0x831d, 0x101, 0x8363, 0x101, 0x83ad,
+ 0x101, 0x8323, 0x101, 0x83bd, 0x101, 0x83e7, 0x101, 0x8457,
+ 0x101, 0x8353, 0x101, 0x83ca, 0x101, 0x83cc, 0x101, 0x83dc,
+ 0x201, 0xd85b, 0xdc36, 0x201, 0xd85b, 0xdd6b, 0x201, 0xd85b,
+ 0xdcd5, 0x101, 0x452b, 0x101, 0x84f1, 0x101, 0x84f3, 0x101,
+ 0x8516, 0x201, 0xd85c, 0xdfca, 0x101, 0x8564, 0x201, 0xd85b,
+ 0xdf2c, 0x101, 0x455d, 0x101, 0x4561, 0x201, 0xd85b, 0xdfb1,
+ 0x201, 0xd85c, 0xdcd2, 0x101, 0x456b, 0x101, 0x8650, 0x101,
+ 0x865c, 0x101, 0x8667, 0x101, 0x8669, 0x101, 0x86a9, 0x101,
+ 0x8688, 0x101, 0x870e, 0x101, 0x86e2, 0x101, 0x8779, 0x101,
+ 0x8728, 0x101, 0x876b, 0x101, 0x8786, 0x101, 0x45d7, 0x101,
+ 0x87e1, 0x101, 0x8801, 0x101, 0x45f9, 0x101, 0x8860, 0x101,
+ 0x8863, 0x201, 0xd85d, 0xde67, 0x101, 0x88d7, 0x101, 0x88de,
+ 0x101, 0x4635, 0x101, 0x88fa, 0x101, 0x34bb, 0x201, 0xd85e,
+ 0xdcae, 0x201, 0xd85e, 0xdd66, 0x101, 0x46be, 0x101, 0x46c7,
+ 0x101, 0x8aa0, 0x101, 0x8aed, 0x101, 0x8b8a, 0x101, 0x8c55,
+ 0x201, 0xd85f, 0xdca8, 0x101, 0x8cab, 0x101, 0x8cc1, 0x101,
+ 0x8d1b, 0x101, 0x8d77, 0x201, 0xd85f, 0xdf2f, 0x201, 0xd842,
+ 0xdc04, 0x101, 0x8dcb, 0x101, 0x8dbc, 0x101, 0x8df0, 0x201,
+ 0xd842, 0xdcde, 0x101, 0x8ed4, 0x101, 0x8f38, 0x201, 0xd861,
+ 0xddd2, 0x201, 0xd861, 0xdded, 0x101, 0x9094, 0x101, 0x90f1,
+ 0x101, 0x9111, 0x201, 0xd861, 0xdf2e, 0x101, 0x911b, 0x101,
+ 0x9238, 0x101, 0x92d7, 0x101, 0x92d8, 0x101, 0x927c, 0x101,
+ 0x93f9, 0x101, 0x9415, 0x201, 0xd862, 0xdffa, 0x101, 0x958b,
+ 0x101, 0x4995, 0x101, 0x95b7, 0x201, 0xd863, 0xdd77, 0x101,
+ 0x49e6, 0x101, 0x96c3, 0x101, 0x5db2, 0x101, 0x9723, 0x201,
+ 0xd864, 0xdd45, 0x201, 0xd864, 0xde1a, 0x101, 0x4a6e, 0x101,
+ 0x4a76, 0x101, 0x97e0, 0x201, 0xd865, 0xdc0a, 0x101, 0x4ab2,
+ 0x201, 0xd865, 0xdc96, 0x101, 0x980b, 0x101, 0x980b, 0x101,
+ 0x9829, 0x201, 0xd865, 0xddb6, 0x101, 0x98e2, 0x101, 0x4b33,
+ 0x101, 0x9929, 0x101, 0x99a7, 0x101, 0x99c2, 0x101, 0x99fe,
+ 0x101, 0x4bce, 0x201, 0xd866, 0xdf30, 0x101, 0x9b12, 0x101,
+ 0x9c40, 0x101, 0x9cfd, 0x101, 0x4cce, 0x101, 0x4ced, 0x101,
+ 0x9d67, 0x201, 0xd868, 0xdcce, 0x101, 0x4cf8, 0x201, 0xd868,
+ 0xdd05, 0x201, 0xd868, 0xde0e, 0x201, 0xd868, 0xde91, 0x101,
+ 0x9ebb, 0x101, 0x4d56, 0x101, 0x9ef9, 0x101, 0x9efe, 0x101,
+ 0x9f05, 0x101, 0x9f0f, 0x101, 0x9f16, 0x101, 0x9f3b, 0x201,
+ 0xd869, 0xde00
};
-static const unsigned short uc_ligature_trie[] = {
+static constexpr unsigned short uc_ligature_trie[] = {
// 0 - 0x3100
631, 631, 631, 631, 631, 631, 631, 631,
@@ -14613,7 +15029,7 @@ static const unsigned short uc_ligature_trie[] = {
? uc_ligature_trie[uc_ligature_trie[((ucs4 - 0x3100) >> 8) + 0x188] + (ucs4 & 0xff)] \
: 0xffff)
-static const unsigned short uc_ligature_map[] = {
+static constexpr unsigned short uc_ligature_map[] = {
0x54, 0x41, 0xc0, 0x45, 0xc8, 0x49, 0xcc, 0x4e,
0x1f8, 0x4f, 0xd2, 0x55, 0xd9, 0x57, 0x1e80, 0x59,
0x1ef2, 0x61, 0xe0, 0x65, 0xe8, 0x69, 0xec, 0x6e,
@@ -14869,7 +15285,7 @@ struct NormalizationCorrection {
int version;
};
-static const NormalizationCorrection uc_normalization_corrections[] = {
+static constexpr NormalizationCorrection uc_normalization_corrections[] = {
{ 0xf951, 0x96fb, 6 },
{ 0x2f868, 0x2136a, 7 },
{ 0x2f874, 0x5f33, 7 },
@@ -14881,7 +15297,7 @@ static const NormalizationCorrection uc_normalization_corrections[] = {
enum { NumNormalizationCorrections = 6 };
enum { NormalizationCorrectionsVersionMax = 7 };
-static const char16_t idnaMappingData[] = {
+static constexpr char16_t idnaMappingData[] = {
0x31, 0x31, 0x65e5, 0x31, 0x31, 0x6708, 0x31, 0x31, 0x70b9, 0x31, 0x32, 0x65e5,
0x31, 0x32, 0x6708, 0x31, 0x32, 0x70b9, 0x31, 0x33, 0x65e5, 0x31, 0x33, 0x70b9,
0x31, 0x34, 0x65e5, 0x31, 0x34, 0x70b9, 0x31, 0x35, 0x65e5, 0x31, 0x35, 0x70b9,
@@ -14968,7 +15384,7 @@ struct IdnaMapEntry {
};
static_assert(sizeof(IdnaMapEntry) == 8);
-static const IdnaMapEntry idnaMap[] = {
+static constexpr IdnaMapEntry idnaMap[] = {
{ 0xaa, 1, { 0x61, 0 } },
{ 0xb2, 1, { 0x32, 0 } },
{ 0xb3, 1, { 0x33, 0 } },
@@ -15749,7 +16165,7 @@ static const IdnaMapEntry idnaMap[] = {
{ 0x1e94, 1, { 0x1e95, 0 } },
{ 0x1e9a, 2, { 0x61, 0x2be } },
{ 0x1e9b, 1, { 0x1e61, 0 } },
- { 0x1e9e, 2, { 0x73, 0x73 } },
+ { 0x1e9e, 1, { 0xdf, 0 } },
{ 0x1ea0, 1, { 0x1ea1, 0 } },
{ 0x1ea2, 1, { 0x1ea3, 0 } },
{ 0x1ea4, 1, { 0x1ea5, 0 } },
@@ -20003,6 +20419,68 @@ static const IdnaMapEntry idnaMap[] = {
{ 0x1d7fd, 1, { 0x37, 0 } },
{ 0x1d7fe, 1, { 0x38, 0 } },
{ 0x1d7ff, 1, { 0x39, 0 } },
+ { 0x1e030, 1, { 0x430, 0 } },
+ { 0x1e031, 1, { 0x431, 0 } },
+ { 0x1e032, 1, { 0x432, 0 } },
+ { 0x1e033, 1, { 0x433, 0 } },
+ { 0x1e034, 1, { 0x434, 0 } },
+ { 0x1e035, 1, { 0x435, 0 } },
+ { 0x1e036, 1, { 0x436, 0 } },
+ { 0x1e037, 1, { 0x437, 0 } },
+ { 0x1e038, 1, { 0x438, 0 } },
+ { 0x1e039, 1, { 0x43a, 0 } },
+ { 0x1e03a, 1, { 0x43b, 0 } },
+ { 0x1e03b, 1, { 0x43c, 0 } },
+ { 0x1e03c, 1, { 0x43e, 0 } },
+ { 0x1e03d, 1, { 0x43f, 0 } },
+ { 0x1e03e, 1, { 0x440, 0 } },
+ { 0x1e03f, 1, { 0x441, 0 } },
+ { 0x1e040, 1, { 0x442, 0 } },
+ { 0x1e041, 1, { 0x443, 0 } },
+ { 0x1e042, 1, { 0x444, 0 } },
+ { 0x1e043, 1, { 0x445, 0 } },
+ { 0x1e044, 1, { 0x446, 0 } },
+ { 0x1e045, 1, { 0x447, 0 } },
+ { 0x1e046, 1, { 0x448, 0 } },
+ { 0x1e047, 1, { 0x44b, 0 } },
+ { 0x1e048, 1, { 0x44d, 0 } },
+ { 0x1e049, 1, { 0x44e, 0 } },
+ { 0x1e04a, 1, { 0xa689, 0 } },
+ { 0x1e04b, 1, { 0x4d9, 0 } },
+ { 0x1e04c, 1, { 0x456, 0 } },
+ { 0x1e04d, 1, { 0x458, 0 } },
+ { 0x1e04e, 1, { 0x4e9, 0 } },
+ { 0x1e04f, 1, { 0x4af, 0 } },
+ { 0x1e050, 1, { 0x4cf, 0 } },
+ { 0x1e051, 1, { 0x430, 0 } },
+ { 0x1e052, 1, { 0x431, 0 } },
+ { 0x1e053, 1, { 0x432, 0 } },
+ { 0x1e054, 1, { 0x433, 0 } },
+ { 0x1e055, 1, { 0x434, 0 } },
+ { 0x1e056, 1, { 0x435, 0 } },
+ { 0x1e057, 1, { 0x436, 0 } },
+ { 0x1e058, 1, { 0x437, 0 } },
+ { 0x1e059, 1, { 0x438, 0 } },
+ { 0x1e05a, 1, { 0x43a, 0 } },
+ { 0x1e05b, 1, { 0x43b, 0 } },
+ { 0x1e05c, 1, { 0x43e, 0 } },
+ { 0x1e05d, 1, { 0x43f, 0 } },
+ { 0x1e05e, 1, { 0x441, 0 } },
+ { 0x1e05f, 1, { 0x443, 0 } },
+ { 0x1e060, 1, { 0x444, 0 } },
+ { 0x1e061, 1, { 0x445, 0 } },
+ { 0x1e062, 1, { 0x446, 0 } },
+ { 0x1e063, 1, { 0x447, 0 } },
+ { 0x1e064, 1, { 0x448, 0 } },
+ { 0x1e065, 1, { 0x44a, 0 } },
+ { 0x1e066, 1, { 0x44b, 0 } },
+ { 0x1e067, 1, { 0x491, 0 } },
+ { 0x1e068, 1, { 0x456, 0 } },
+ { 0x1e069, 1, { 0x455, 0 } },
+ { 0x1e06a, 1, { 0x45f, 0 } },
+ { 0x1e06b, 1, { 0x4ab, 0 } },
+ { 0x1e06c, 1, { 0xa651, 0 } },
+ { 0x1e06d, 1, { 0x4b1, 0 } },
{ 0x1e900, 2, { 0xd83a, 0xdd22 } },
{ 0x1e901, 2, { 0xd83a, 0xdd23 } },
{ 0x1e902, 2, { 0xd83a, 0xdd24 } },
diff --git a/src/corelib/text/qunicodetables_p.h b/src/corelib/text/qunicodetables_p.h
index 1fea28c0a3..eabdc919cb 100644
--- a/src/corelib/text/qunicodetables_p.h
+++ b/src/corelib/text/qunicodetables_p.h
@@ -1,43 +1,7 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/* This file is autogenerated from the Unicode 14.0 database. Do not edit */
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: Unicode-DFS-2016
+
+/* This file is autogenerated from the Unicode 15.1 database. Do not edit */
//
// W A R N I N G
@@ -59,7 +23,7 @@
QT_BEGIN_NAMESPACE
-#define UNICODE_DATA_VERSION QChar::Unicode_14_0
+#define UNICODE_DATA_VERSION QChar::Unicode_15_1
namespace QUnicodeTables {
@@ -79,7 +43,8 @@ struct Properties {
ushort joining : 3;
signed short digitValue : 5;
signed short mirrorDiff : 16;
- ushort unicodeVersion : 8; /* 5 used */
+ ushort unicodeVersion : 5; /* 5 used */
+ ushort eastAsianWidth : 3; /* 3 used */
ushort nfQuickCheck : 8;
#ifdef Q_OS_WASM
unsigned char : 0; //wasm 64 packing trick
@@ -104,6 +69,15 @@ Q_CORE_EXPORT const Properties * QT_FASTCALL properties(char16_t ucs2) noexcept;
static_assert(sizeof(Properties) == 20);
+enum class EastAsianWidth : unsigned int {
+ A,
+ F,
+ H,
+ N,
+ Na,
+ W,
+};
+
enum GraphemeBreakClass {
GraphemeBreak_Any,
GraphemeBreak_CR,
@@ -143,10 +117,6 @@ enum WordBreakClass {
WordBreak_MidNum,
WordBreak_Numeric,
WordBreak_ExtendNumLet,
- WordBreak_E_Base,
- WordBreak_E_Modifier,
- WordBreak_Glue_After_Zwj,
- WordBreak_E_Base_GAZ,
WordBreak_WSegSpace,
NumWordBreakClasses
@@ -172,9 +142,11 @@ enum SentenceBreakClass {
};
// see http://www.unicode.org/reports/tr14/tr14-30.html
-// we don't use the XX and AI classes and map them to AL instead.
+// we don't use the XX, AK, AP, AS and AI classes and map them to AL instead.
+// VI and VF classes are mapped to CM.
enum LineBreakClass {
- LineBreak_OP, LineBreak_CL, LineBreak_CP, LineBreak_QU, LineBreak_GL,
+ LineBreak_OP, LineBreak_CL, LineBreak_CP,
+ LineBreak_QU, LineBreak_QU_Pi, LineBreak_QU_Pf, LineBreak_GL,
LineBreak_NS, LineBreak_EX, LineBreak_SY, LineBreak_IS, LineBreak_PR,
LineBreak_PO, LineBreak_NU, LineBreak_AL, LineBreak_HL, LineBreak_ID,
LineBreak_IN, LineBreak_HY, LineBreak_BA, LineBreak_BB, LineBreak_B2,
@@ -219,6 +191,10 @@ Q_CORE_EXPORT QStringView QT_FASTCALL idnaMapping(char32_t usc4) noexcept;
inline QStringView idnaMapping(QChar ch) noexcept
{ return idnaMapping(ch.unicode()); }
+Q_CORE_EXPORT EastAsianWidth QT_FASTCALL eastAsianWidth(char32_t ucs4) noexcept;
+inline EastAsianWidth eastAsianWidth(QChar ch) noexcept
+{ return eastAsianWidth(ch.unicode()); }
+
} // namespace QUnicodeTables
QT_END_NAMESPACE
diff --git a/src/corelib/text/qunicodetools.cpp b/src/corelib/text/qunicodetools.cpp
index a924addda0..2917804830 100644
--- a/src/corelib/text/qunicodetools.cpp
+++ b/src/corelib/text/qunicodetools.cpp
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qunicodetools_p.h"
@@ -51,7 +15,14 @@
QT_BEGIN_NAMESPACE
-Q_AUTOTEST_EXPORT int qt_initcharattributes_default_algorithm_only = 0;
+using namespace Qt::StringLiterals;
+
+#ifdef QT_BUILD_INTERNAL
+Q_CONSTINIT Q_AUTOTEST_EXPORT
+#else
+constexpr
+#endif
+int qt_initcharattributes_default_algorithm_only = 0;
namespace QUnicodeTools {
@@ -242,30 +213,26 @@ enum Action {
};
static const uchar breakTable[QUnicodeTables::NumWordBreakClasses][QUnicodeTables::NumWordBreakClasses] = {
-// Any CR LF Newline Extend ZWJ Format RI Katakana HLetter ALetter SQuote DQuote MidNumLet MidLetter MidNum Numeric ExtNumLet E_Base E_Mod GAZ EBG WSeg
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Any
- { Break , Break , NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // CR
- { Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // LF
- { Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Newline
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Extend
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , NoBreak, NoBreak, Break }, // ZWJ
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Format
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // RegionalIndicator
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , NoBreak, Break , Break , Break , Break , Break }, // Katakana
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , NoBreak, NoBreak, LookupW, Lookup , LookupW, LookupW, Break , NoBreak, NoBreak, Break , Break , Break , Break , Break }, // HebrewLetter
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , NoBreak, NoBreak, LookupW, Break , LookupW, LookupW, Break , NoBreak, NoBreak, Break , Break , Break , Break , Break }, // ALetter
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // SingleQuote
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // DoubleQuote
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // MidNumLet
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // MidLetter
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // MidNum
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , NoBreak, NoBreak, Lookup , Break , Lookup , Break , Lookup , NoBreak, NoBreak, Break , Break , Break , Break , Break }, // Numeric
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , NoBreak, NoBreak, Break , Break , Break , Break , Break }, // ExtendNumLet
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , NoBreak, Break , Break , Break }, // E_Base
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // E_Mod
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // GAZ
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , NoBreak, Break , Break , Break }, // EBG
- { Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // WSeg
+// Any CR LF Newline Extend ZWJ Format RI Katakana HLetter ALetter SQuote DQuote MidNumLet MidLetter MidNum Numeric ExtNumLet WSeg
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Any
+ { Break , Break , NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // CR
+ { Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // LF
+ { Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Newline
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Extend
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // ZWJ
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Format
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // RegionalIndicator
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , NoBreak, Break }, // Katakana
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , NoBreak, NoBreak, LookupW, Lookup , LookupW, LookupW, Break , NoBreak, NoBreak, Break }, // HebrewLetter
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , NoBreak, NoBreak, LookupW, Break , LookupW, LookupW, Break , NoBreak, NoBreak, Break }, // ALetter
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // SingleQuote
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // DoubleQuote
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // MidNumLet
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // MidLetter
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // MidNum
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , NoBreak, NoBreak, Lookup , Break , Lookup , Break , Lookup , NoBreak, NoBreak, Break }, // Numeric
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , NoBreak, NoBreak, Break }, // ExtendNumLet
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , NoBreak }, // WSegSpace
};
} // namespace WB
@@ -277,6 +244,8 @@ static void getWordBreaks(const char16_t *string, qsizetype len, QCharAttributes
} currentWordType = WordTypeNone;
QUnicodeTables::WordBreakClass cls = QUnicodeTables::WordBreak_LF; // to meet WB1
+ auto real_cls = cls; // Unaffected by WB4
+
for (qsizetype i = 0; i != len; ++i) {
qsizetype pos = i;
char32_t ucs4 = string[i];
@@ -290,7 +259,6 @@ static void getWordBreaks(const char16_t *string, qsizetype len, QCharAttributes
const QUnicodeTables::Properties *prop = QUnicodeTables::properties(ucs4);
QUnicodeTables::WordBreakClass ncls = (QUnicodeTables::WordBreakClass) prop->wordBreakClass;
-#ifdef QT_BUILD_INTERNAL
if (qt_initcharattributes_default_algorithm_only) {
// as of Unicode 5.1, some punctuation marks were mapped to MidLetter and MidNumLet
// which caused "hi.there" to be treated like if it were just a single word;
@@ -301,22 +269,32 @@ static void getWordBreaks(const char16_t *string, qsizetype len, QCharAttributes
else if (ucs4 == 0x003A) // COLON
ncls = QUnicodeTables::WordBreak_MidLetter;
}
-#endif
uchar action = WB::breakTable[cls][ncls];
switch (action) {
case WB::Break:
+ if (Q_UNLIKELY(real_cls == QUnicodeTables::WordBreak_ZWJ
+ && prop->graphemeBreakClass
+ == QUnicodeTables::GraphemeBreak_Extended_Pictographic)) {
+ // WB3c: ZWJ × \p{Extended_Pictographic}
+ action = WB::NoBreak;
+ }
break;
case WB::NoBreak:
if (Q_UNLIKELY(ncls == QUnicodeTables::WordBreak_Extend || ncls == QUnicodeTables::WordBreak_ZWJ || ncls == QUnicodeTables::WordBreak_Format)) {
// WB4: X(Extend|Format)* -> X
- if (cls != QUnicodeTables::WordBreak_ZWJ) // WB3c
- continue;
+ real_cls = ncls;
+ continue;
}
if (Q_UNLIKELY(cls == QUnicodeTables::WordBreak_RegionalIndicator)) {
// WB15/WB16: break between pairs of Regional indicator
ncls = QUnicodeTables::WordBreak_Any;
}
+ if (Q_UNLIKELY(ncls == QUnicodeTables::WordBreak_WSegSpace
+ && real_cls != QUnicodeTables::WordBreak_WSegSpace)) {
+ // WB3d should not be affected by WB4
+ action = WB::Break;
+ }
break;
case WB::Lookup:
case WB::LookupW:
@@ -355,6 +333,8 @@ static void getWordBreaks(const char16_t *string, qsizetype len, QCharAttributes
}
cls = ncls;
+ real_cls = ncls;
+
if (action == WB::Break) {
attributes[pos].wordBreak = true;
if (currentWordType != WordTypeNone)
@@ -575,49 +555,53 @@ enum Action {
IndirectBreak, IB = IndirectBreak,
CombiningIndirectBreak, CI = CombiningIndirectBreak,
CombiningProhibitedBreak, CP = CombiningProhibitedBreak,
- ProhibitedBreakAfterHebrewPlusHyphen, HH = ProhibitedBreakAfterHebrewPlusHyphen
+ ProhibitedBreakAfterHebrewPlusHyphen, HH = ProhibitedBreakAfterHebrewPlusHyphen,
+ IndirectBreakIfNarrow, IN = IndirectBreakIfNarrow, // For LB30
};
-static const uchar breakTable[QUnicodeTables::LineBreak_SA][QUnicodeTables::LineBreak_SA] = {
-/* OP CL CP QU GL NS EX SY IS PR PO NU AL HL ID IN HY BA BB B2 ZW CM WJ H2 H3 JL JV JT RI CB EB EM ZWJ*/
-/* OP */ { PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, CP, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB },
-/* CL */ { DB, PB, PB, IB, IB, PB, PB, PB, PB, DB, DB, DB, DB, DB, DB, DB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB, IB },
-/* CP */ { DB, PB, PB, IB, IB, PB, PB, PB, PB, DB, DB, IB, IB, IB, DB, DB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB, IB },
-/* QU */ { PB, PB, PB, IB, IB, IB, PB, PB, PB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, PB, CI, PB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB },
-/* GL */ { IB, PB, PB, IB, IB, IB, PB, PB, PB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, PB, CI, PB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB },
-/* NS */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, DB, DB, DB, DB, DB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB, IB },
-/* EX */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB, IB },
-/* SY */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, DB, DB, IB, DB, DB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB, IB },
-/* IS */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, DB, IB, IB, DB, DB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB, IB },
-/* PR */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, IB, IB, IB, IB, DB, IB, IB, DB, DB, PB, CI, PB, IB, IB, IB, IB, IB, DB, DB, IB, IB, IB },
-/* PO */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, IB, IB, IB, DB, DB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB, IB },
-/* NU */ { IB, PB, PB, IB, IB, IB, PB, PB, PB, IB, IB, IB, IB, IB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB, IB },
-/* AL */ { IB, PB, PB, IB, IB, IB, PB, PB, PB, IB, IB, IB, IB, IB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB, IB },
-/* HL */ { IB, PB, PB, IB, IB, IB, PB, PB, PB, IB, IB, IB, IB, IB, DB, IB, CI, CI, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB, IB },
-/* ID */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, IB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB, IB },
-/* IN */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB, IB },
-/* HY */ { HH, PB, PB, IB, HH, IB, PB, PB, PB, HH, HH, IB, HH, HH, HH, HH, IB, IB, HH, HH, PB, CI, PB, HH, HH, HH, HH, HH, HH, DB, DB, DB, IB },
-/* BA */ { HH, PB, PB, IB, HH, IB, PB, PB, PB, HH, HH, HH, HH, HH, HH, HH, IB, IB, HH, HH, PB, CI, PB, HH, HH, HH, HH, HH, HH, DB, DB, DB, IB },
-/* BB */ { IB, PB, PB, IB, IB, IB, PB, PB, PB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, PB, CI, PB, IB, IB, IB, IB, IB, IB, DB, IB, IB, IB },
-/* B2 */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, DB, DB, DB, DB, DB, IB, IB, DB, PB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB, IB },
-/* ZW */ { DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB },
-/* CM */ { IB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, IB, IB, IB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB, IB },
-/* WJ */ { IB, PB, PB, IB, IB, IB, PB, PB, PB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, PB, CI, PB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB },
-/* H2 */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, IB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, IB, IB, DB, DB, DB, DB, IB },
-/* H3 */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, IB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, IB, DB, DB, DB, DB, IB },
-/* JL */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, IB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, IB, IB, IB, IB, DB, DB, DB, DB, DB, IB },
-/* JV */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, IB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, IB, IB, DB, DB, DB, DB, IB },
-/* JT */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, IB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, IB, DB, DB, DB, DB, IB },
-/* RI */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, DB, DB, DB, DB, DB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, IB, DB, DB, DB, IB },
-/* CB */ { DB, PB, PB, IB, IB, DB, PB, PB, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB, IB },
-/* EB */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, IB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, IB, IB },
-/* EM */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, IB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB, IB },
-/* ZWJ*/ { IB, PB, PB, IB, IB, IB, PB, PB, PB, IB, IB, IB, IB, IB, IB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, IB, IB, IB }
+// See https://www.unicode.org/reports/tr14/tr14-37.html for the information
+// about the table. It was removed in the later versions of the standard.
+static const uchar breakTable[QUnicodeTables::LineBreak_ZWJ][QUnicodeTables::LineBreak_ZWJ] = {
+/* 1↓ 2→ OP CL CP QU +Pi +Pf GL NS EX SY IS PR PO NU AL HL ID IN HY BA BB B2 ZW CM WJ H2 H3 JL JV JT RI CB EB EM*/
+/* OP */ { PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, CP, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB },
+/* CL */ { DB, PB, PB, IB, IB, PB, IB, PB, PB, PB, PB, DB, DB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB },
+/* CP */ { DB, PB, PB, IB, IB, PB, IB, PB, PB, PB, PB, DB, DB, IB, IB, IB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB },
+/* QU */ { IB, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, PB, CI, PB, IB, IB, IB, IB, IB, IB, IB, IB, IB },
+/* +Pi*/ { PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB, CP, PB, PB, PB, PB, PB, PB, PB, PB, PB, PB },
+/* +Pf*/ { IB, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, PB, CI, PB, IB, IB, IB, IB, IB, IB, IB, IB, IB },
+/* GL */ { IB, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, PB, CI, PB, IB, IB, IB, IB, IB, IB, IB, IB, IB },
+/* NS */ { DB, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, DB, DB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB },
+/* EX */ { DB, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, DB, DB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB },
+/* SY */ { DB, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, DB, DB, DB, DB, IB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB },
+/* IS */ { DB, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, DB, DB, DB, IB, IB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB },
+/* PR */ { DB, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, DB, DB, IB, IB, IB, IB, IB, IB, IB, DB, DB, PB, CI, PB, IB, IB, IB, IB, IB, DB, DB, IB, IB },
+/* PO */ { DB, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, DB, DB, IB, IB, IB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB },
+/* NU */ { IN, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, IB, IB, IB, IB, IB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB },
+/* AL */ { IN, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, IB, IB, IB, IB, IB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB },
+/* HL */ { IN, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, IB, IB, IB, IB, IB, DB, IB, CI, CI, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB },
+/* ID */ { DB, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, DB, IB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB },
+/* IN */ { DB, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, DB, DB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB },
+/* HY */ { HH, PB, PB, IB, IB, PB, HH, IB, PB, PB, PB, HH, HH, IB, HH, HH, HH, IB, IB, IB, HH, HH, PB, CI, PB, HH, HH, HH, HH, HH, HH, DB, DB, DB },
+/* BA */ { HH, PB, PB, IB, IB, PB, HH, IB, PB, PB, PB, HH, HH, HH, HH, HH, HH, IB, IB, IB, HH, HH, PB, CI, PB, HH, HH, HH, HH, HH, HH, DB, DB, DB },
+/* BB */ { IB, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, PB, CI, PB, IB, IB, IB, IB, IB, IB, DB, IB, IB },
+/* B2 */ { DB, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, DB, DB, DB, DB, DB, DB, IB, IB, IB, DB, PB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB },
+/* ZW */ { DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB },
+/* CM */ { IB, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, DB, DB, IB, IB, IB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB },
+/* WJ */ { IB, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, PB, CI, PB, IB, IB, IB, IB, IB, IB, IB, IB, IB },
+/* H2 */ { DB, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, DB, IB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, IB, IB, DB, DB, DB, DB },
+/* H3 */ { DB, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, DB, IB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, IB, DB, DB, DB, DB },
+/* JL */ { DB, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, DB, IB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, IB, IB, IB, IB, DB, DB, DB, DB, DB },
+/* JV */ { DB, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, DB, IB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, IB, IB, DB, DB, DB, DB },
+/* JT */ { DB, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, DB, IB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, IB, DB, DB, DB, DB },
+/* RI */ { DB, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, DB, DB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, IB, DB, DB, DB },
+/* CB */ { DB, PB, PB, IB, IB, PB, IB, DB, PB, PB, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB },
+/* EB */ { DB, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, DB, IB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, IB },
+/* EM */ { DB, PB, PB, IB, IB, PB, IB, IB, PB, PB, PB, DB, IB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB },
};
// The following line break classes are not treated by the pair table
// and must be resolved outside:
-// AI, BK, CB, CJ, CR, LF, NL, SA, SG, SP, XX
+// AI, AK, AP, AS, BK, CB, CJ, CR, LF, NL, SA, SG, SP, VF, VI, XX, ZWJ
} // namespace LB
@@ -628,6 +612,8 @@ static void getLineBreaks(const char16_t *string, qsizetype len, QCharAttributes
QUnicodeTables::LineBreakClass lcls = QUnicodeTables::LineBreak_LF; // to meet LB10
QUnicodeTables::LineBreakClass cls = lcls;
+ const QUnicodeTables::Properties *lastProp = QUnicodeTables::properties(U'\n');
+
for (qsizetype i = 0; i != len; ++i) {
qsizetype pos = i;
char32_t ucs4 = string[i];
@@ -675,6 +661,61 @@ static void getLineBreaks(const char16_t *string, qsizetype len, QCharAttributes
ncls = QUnicodeTables::LineBreak_CM;
}
+ if (Q_UNLIKELY(ncls == QUnicodeTables::LineBreak_QU)) {
+ if (prop->category == QChar::Punctuation_InitialQuote) {
+ // LB15a: Do not break after an unresolved initial punctuation
+ // that lies at the start of the line, after a space, after
+ // opening punctuation, or after an unresolved quotation mark,
+ // even after spaces.
+ // (sot | BK | CR | LF | NL | OP | QU | GL | SP | ZW)
+ // [\p{Pi}&QU] SP* ×
+ // Note: sot is treated as LF here due to initial loop setup.
+ constexpr QUnicodeTables::LineBreakClass lb15a[] = {
+ QUnicodeTables::LineBreak_BK, QUnicodeTables::LineBreak_CR,
+ QUnicodeTables::LineBreak_LF, QUnicodeTables::LineBreak_OP,
+ QUnicodeTables::LineBreak_QU, QUnicodeTables::LineBreak_QU_Pi,
+ QUnicodeTables::LineBreak_QU_Pf, QUnicodeTables::LineBreak_GL,
+ QUnicodeTables::LineBreak_SP, QUnicodeTables::LineBreak_ZW};
+ if (std::any_of(std::begin(lb15a), std::end(lb15a),
+ [lcls](auto x) { return x == lcls; })) {
+ ncls = QUnicodeTables::LineBreak_QU_Pi;
+ }
+ } else if (prop->category == QChar::Punctuation_FinalQuote) {
+ // LB15b: Do not break before an unresolved final punctuation
+ // that lies at the end of the line, before a space, before
+ // a prohibited break, or before an unresolved quotation mark,
+ // even after spaces.
+ // × [\p{Pf}&QU] ( SP | GL | WJ | CL | QU | CP | EX | IS
+ // | SY | BK | CR | LF | NL | ZW | eot)
+ auto nncls = QUnicodeTables::LineBreak_LF;
+
+ if (i + 1 < len) {
+ char32_t c = string[i + 1];
+ if (QChar::isHighSurrogate(c) && i + 2 != len) {
+ ushort low = string[i + 2];
+ if (QChar::isLowSurrogate(low))
+ c = QChar::surrogateToUcs4(c, low);
+ }
+ nncls = QUnicodeTables::LineBreakClass(
+ QUnicodeTables::properties(c)->lineBreakClass);
+ }
+
+ constexpr QUnicodeTables::LineBreakClass lb15b[] = {
+ QUnicodeTables::LineBreak_SP, QUnicodeTables::LineBreak_GL,
+ QUnicodeTables::LineBreak_WJ, QUnicodeTables::LineBreak_CL,
+ QUnicodeTables::LineBreak_QU, QUnicodeTables::LineBreak_QU_Pi,
+ QUnicodeTables::LineBreak_QU_Pf, QUnicodeTables::LineBreak_CP,
+ QUnicodeTables::LineBreak_EX, QUnicodeTables::LineBreak_IS,
+ QUnicodeTables::LineBreak_SY, QUnicodeTables::LineBreak_BK,
+ QUnicodeTables::LineBreak_CR, QUnicodeTables::LineBreak_LF,
+ QUnicodeTables::LineBreak_ZW};
+ if (std::any_of(std::begin(lb15b), std::end(lb15b),
+ [nncls](auto x) { return x == nncls; })) {
+ ncls = QUnicodeTables::LineBreak_QU_Pf;
+ }
+ }
+ }
+
if (Q_UNLIKELY(lcls >= QUnicodeTables::LineBreak_CR)) {
// LB4: BK!, LB5: (CRxLF|CR|LF|NL)!
if (lcls > QUnicodeTables::LineBreak_CR || ncls != QUnicodeTables::LineBreak_LF)
@@ -700,9 +741,8 @@ static void getLineBreaks(const char16_t *string, qsizetype len, QCharAttributes
}
if (Q_UNLIKELY(lcls == QUnicodeTables::LineBreak_ZWJ)) {
- // LB8a: ZWJ x (ID | EB | EM)
- if (ncls == QUnicodeTables::LineBreak_ID || ncls == QUnicodeTables::LineBreak_EB || ncls == QUnicodeTables::LineBreak_EM)
- goto next;
+ // LB8a: ZWJ x
+ goto next;
}
// LB25: do not break lines inside numbers
@@ -732,16 +772,24 @@ static void getLineBreaks(const char16_t *string, qsizetype len, QCharAttributes
goto next;
}
+ if (Q_UNLIKELY(ncls == QUnicodeTables::LineBreak_EM
+ && lastProp->category == QChar::Other_NotAssigned
+ && lastProp->graphemeBreakClass
+ == QUnicodeTables::GraphemeBreak_Extended_Pictographic)) {
+ // LB30b: [\p{Extended_Pictographic}&\p{Cn}] × EM
+ goto next;
+ }
+
// for South East Asian chars that require a complex analysis, the Unicode
// standard recommends to treat them as AL. tailoring that do dictionary analysis can override
if (Q_UNLIKELY(cls >= QUnicodeTables::LineBreak_SA))
cls = QUnicodeTables::LineBreak_AL;
tcls = cls;
- if (tcls == QUnicodeTables::LineBreak_CM)
+ if (tcls == QUnicodeTables::LineBreak_CM || tcls == QUnicodeTables::LineBreak_ZWJ)
// LB10
tcls = QUnicodeTables::LineBreak_AL;
- switch (LB::breakTable[tcls][ncls < QUnicodeTables::LineBreak_SA ? ncls : QUnicodeTables::LineBreak_AL]) {
+ switch (LB::breakTable[tcls][ncls < QUnicodeTables::LineBreak_ZWJ ? ncls : QUnicodeTables::LineBreak_AL]) {
case LB::DirectBreak:
attributes[pos].lineBreak = true;
break;
@@ -762,6 +810,19 @@ static void getLineBreaks(const char16_t *string, qsizetype len, QCharAttributes
if (lcls != QUnicodeTables::LineBreak_HL)
attributes[pos].lineBreak = true;
break;
+ case LB::IndirectBreakIfNarrow:
+ switch (static_cast<QUnicodeTables::EastAsianWidth>(prop->eastAsianWidth)) {
+ default:
+ if (lcls != QUnicodeTables::LineBreak_SP)
+ break;
+ Q_FALLTHROUGH();
+ case QUnicodeTables::EastAsianWidth::F:
+ case QUnicodeTables::EastAsianWidth::W:
+ case QUnicodeTables::EastAsianWidth::H:
+ attributes[pos].lineBreak = true;
+ break;
+ }
+ break;
case LB::ProhibitedBreak:
// nothing to do
default:
@@ -770,6 +831,7 @@ static void getLineBreaks(const char16_t *string, qsizetype len, QCharAttributes
next:
cls = ncls;
+ lastProp = prop;
next_no_cls_update:
lcls = ncls;
}
@@ -1263,12 +1325,12 @@ static inline Form form(unsigned short uc) {
static qsizetype indic_nextSyllableBoundary(QChar::Script script, const char16_t *s, qsizetype start, qsizetype end, bool *invalid)
{
*invalid = false;
- IDEBUG("indic_nextSyllableBoundary: start=%d, end=%d", int(start), int(end));
+ IDEBUG("indic_nextSyllableBoundary: start=%lld, end=%lld", qlonglong(start), qlonglong(end));
const char16_t *uc = s+start;
qsizetype pos = 0;
Form state = form(uc[pos]);
- IDEBUG("state[%d]=%d (uc=%4x)", int(pos), state, uc[pos]);
+ IDEBUG("state[%lld]=%d (uc=%4x)", qlonglong(pos), state, uc[pos]);
pos++;
if (state != Consonant && state != IndependentVowel) {
@@ -1279,7 +1341,7 @@ static qsizetype indic_nextSyllableBoundary(QChar::Script script, const char16_t
while (pos < end - start) {
Form newState = form(uc[pos]);
- IDEBUG("state[%d]=%d (uc=%4x)", int(pos), newState, uc[pos]);
+ IDEBUG("state[%lld]=%d (uc=%4x)", qlonglong(pos), newState, uc[pos]);
switch (newState) {
case Control:
newState = state;
@@ -1352,6 +1414,7 @@ static qsizetype indic_nextSyllableBoundary(QChar::Script script, const char16_t
// ### needs proper testing for correct two/three part matras
break;
}
+ Q_FALLTHROUGH();
case IndependentVowel:
case Invalid:
case Other:
@@ -1367,7 +1430,6 @@ static qsizetype indic_nextSyllableBoundary(QChar::Script script, const char16_t
static void indicAttributes(QChar::Script script, const char16_t *text, qsizetype from, qsizetype len, QCharAttributes *attributes)
{
qsizetype end = from + len;
- const char16_t *uc = text + from;
attributes += from;
qsizetype i = 0;
while (i < len) {
@@ -1379,7 +1441,6 @@ static void indicAttributes(QChar::Script script, const char16_t *text, qsizetyp
i++;
while (i < boundary) {
attributes[i].graphemeBoundary = false;
- ++uc;
++i;
}
assert(i == boundary);
@@ -1388,6 +1449,8 @@ static void indicAttributes(QChar::Script script, const char16_t *text, qsizetyp
}
+#if QT_CONFIG(library)
+
#define LIBTHAI_MAJOR 0
/*
@@ -1398,27 +1461,74 @@ struct thcell_t {
unsigned char hilo; /**< upper/lower vowel/diacritic */
unsigned char top; /**< top-level mark */
};
-typedef int (*th_brk_def) (const unsigned char*, int*, size_t);
-typedef size_t (*th_next_cell_def) (const unsigned char *, size_t, struct thcell_t *, int);
-/* libthai related function handles */
-static th_brk_def th_brk = nullptr;
-static th_next_cell_def th_next_cell = nullptr;
+using ThBrk = struct _ThBrk;
-static int init_libthai() {
-#if QT_CONFIG(library)
- static bool initialized = false;
- if (!initialized && (!th_brk || !th_next_cell)) {
- th_brk = reinterpret_cast<th_brk_def>(QLibrary::resolve(QLatin1String("thai"), static_cast<int>(LIBTHAI_MAJOR), "th_brk"));
- th_next_cell = (th_next_cell_def)QLibrary::resolve(QLatin1String("thai"), LIBTHAI_MAJOR, "th_next_cell");
- initialized = true;
+namespace {
+
+class LibThai final
+{
+ Q_DISABLE_COPY_MOVE(LibThai)
+
+ using th_brk_new_def = ThBrk *(*)(const char *);
+ using th_brk_delete_def = void (*)(ThBrk *);
+ using th_brk_find_breaks_def = int (*)(ThBrk *, const unsigned char *, int *, size_t);
+ using th_next_cell_def = size_t (*)(const unsigned char *, size_t, struct thcell_t *, int);
+
+public:
+ LibThai() : m_library("thai"_L1, LIBTHAI_MAJOR)
+ {
+ m_th_brk_find_breaks =
+ reinterpret_cast<th_brk_find_breaks_def>(m_library.resolve("th_brk_find_breaks"));
+ m_th_next_cell = reinterpret_cast<th_next_cell_def>(m_library.resolve("th_next_cell"));
+
+ auto th_brk_new = reinterpret_cast<th_brk_new_def>(m_library.resolve("th_brk_new"));
+ if (th_brk_new) {
+ m_state = th_brk_new(nullptr);
+ m_th_brk_delete =
+ reinterpret_cast<th_brk_delete_def>(m_library.resolve("th_brk_delete"));
+ }
+ }
+
+ ~LibThai()
+ {
+ if (m_state && m_th_brk_delete)
+ m_th_brk_delete(m_state);
+ m_library.unload();
+ }
+
+ bool isInitialized() const { return m_th_brk_find_breaks && m_th_next_cell && m_state; }
+
+ int brk_find_breaks(const unsigned char *s, int *pos, size_t pos_sz) const
+ {
+ Q_ASSERT(m_state);
+ Q_ASSERT(m_th_brk_find_breaks);
+ return m_th_brk_find_breaks(m_state, s, pos, pos_sz);
}
- if (th_brk && th_next_cell)
- return 1;
- else
-#endif
- return 0;
-}
+
+ size_t next_cell(const unsigned char *s, size_t len, struct thcell_t *cell, int is_decomp_am)
+ {
+ Q_ASSERT(m_th_next_cell);
+ return m_th_next_cell(s, len, cell, is_decomp_am);
+ }
+
+private:
+ QLibrary m_library;
+
+ // Global state for th_brk_find_breaks().
+ // Note: even if signature for th_brk_find_breaks() suggests otherwise, the
+ // state is read-only, and so it is safe to use it from multiple threads after
+ // initialization. This is also stated in the libthai documentation.
+ ThBrk *m_state = nullptr;
+
+ th_brk_find_breaks_def m_th_brk_find_breaks = nullptr;
+ th_next_cell_def m_th_next_cell = nullptr;
+ th_brk_delete_def m_th_brk_delete = nullptr;
+};
+
+} // unnamed namespace
+
+Q_GLOBAL_STATIC(LibThai, g_libThai)
static void to_tis620(const char16_t *string, qsizetype len, char *cstr)
{
@@ -1442,21 +1552,17 @@ static void to_tis620(const char16_t *string, qsizetype len, char *cstr)
*/
static void thaiAssignAttributes(const char16_t *string, qsizetype len, QCharAttributes *attributes)
{
- char s[128];
- char *cstr = s;
- int *break_positions = nullptr;
- int brp[128];
- int brp_size = 0;
- qsizetype numbreaks, i, j, cell_length;
+ constexpr qsizetype Prealloc = 128;
+ QVarLengthArray<char, Prealloc + 1> s(len + 1);
+ QVarLengthArray<int, Prealloc> break_positions(len);
+ qsizetype numbreaks, i;
struct thcell_t tis_cell;
- if (!init_libthai())
- return ;
-
- if (len >= 128)
- cstr = static_cast<char *>(malloc (len * sizeof(char) + 1));
+ LibThai *libThai = g_libThai;
+ if (!libThai || !libThai->isInitialized())
+ return;
- to_tis620(string, len, cstr);
+ to_tis620(string, len, s.data());
for (i = 0; i < len; ++i) {
attributes[i].wordBreak = false;
@@ -1465,58 +1571,53 @@ static void thaiAssignAttributes(const char16_t *string, qsizetype len, QCharAtt
attributes[i].lineBreak = false;
}
- if (len > 128) {
- break_positions = static_cast<int *>(malloc (sizeof(int) * len));
- memset (break_positions, 0, sizeof(int) * len);
- brp_size = len;
- }
- else {
- break_positions = brp;
- brp_size = 128;
- }
-
- if (break_positions) {
- attributes[0].wordBreak = true;
- attributes[0].wordStart = true;
- attributes[0].wordEnd = false;
- numbreaks = th_brk(reinterpret_cast<const unsigned char *>(cstr), break_positions, brp_size);
- for (i = 0; i < numbreaks; ++i) {
- attributes[break_positions[i]].wordBreak = true;
- attributes[break_positions[i]].wordStart = true;
- attributes[break_positions[i]].wordEnd = true;
- attributes[break_positions[i]].lineBreak = true;
- }
- if (numbreaks > 0)
- attributes[break_positions[numbreaks - 1]].wordStart = false;
-
- if (break_positions != brp)
- free(break_positions);
+ attributes[0].wordBreak = true;
+ attributes[0].wordStart = true;
+ attributes[0].wordEnd = false;
+ numbreaks = libThai->brk_find_breaks(reinterpret_cast<const unsigned char *>(s.data()),
+ break_positions.data(),
+ static_cast<size_t>(break_positions.size()));
+ for (i = 0; i < numbreaks; ++i) {
+ attributes[break_positions[i]].wordBreak = true;
+ attributes[break_positions[i]].wordStart = true;
+ attributes[break_positions[i]].wordEnd = true;
+ attributes[break_positions[i]].lineBreak = true;
}
+ if (numbreaks > 0)
+ attributes[break_positions[numbreaks - 1]].wordStart = false;
/* manage grapheme boundaries */
i = 0;
while (i < len) {
- cell_length = static_cast<uint>(th_next_cell(reinterpret_cast<const unsigned char *>(cstr) + i, len - i, &tis_cell, true));
-
+ size_t cell_length =
+ libThai->next_cell(reinterpret_cast<const unsigned char *>(s.data()) + i,
+ size_t(len - i), &tis_cell, true);
attributes[i].graphemeBoundary = true;
- for (j = 1; j < cell_length; j++)
+ for (size_t j = 1; j < cell_length; ++j)
attributes[i + j].graphemeBoundary = false;
i += cell_length;
}
-
- if (len >= 128)
- free(cstr);
}
+#endif // QT_CONFIG(library)
+
static void thaiAttributes(QChar::Script script, const char16_t *text, qsizetype from, qsizetype len, QCharAttributes *attributes)
{
assert(script == QChar::Script_Thai);
+#if QT_CONFIG(library)
const char16_t *uc = text + from;
attributes += from;
Q_UNUSED(script);
thaiAssignAttributes(uc, len, attributes);
+#else
+ Q_UNUSED(script);
+ Q_UNUSED(text);
+ Q_UNUSED(from);
+ Q_UNUSED(len);
+ Q_UNUSED(attributes);
+#endif
}
/*
@@ -1630,7 +1731,6 @@ finish:
static void tibetanAttributes(QChar::Script script, const char16_t *text, qsizetype from, qsizetype len, QCharAttributes *attributes)
{
qsizetype end = from + len;
- const char16_t *uc = text + from;
qsizetype i = 0;
Q_UNUSED(script);
attributes += from;
@@ -1644,7 +1744,6 @@ static void tibetanAttributes(QChar::Script script, const char16_t *text, qsizet
i++;
while (i < boundary) {
attributes[i].graphemeBoundary = false;
- ++uc;
++i;
}
assert(i == boundary);
@@ -1695,6 +1794,8 @@ enum MymrCharClassFlags {
Mymr_CF_AFTER_KINZI = 0x00100000
};
+Q_DECLARE_MIXED_ENUM_OPERATORS(int, MymrCharClassValues, MymrCharClassFlags)
+
/* Characters that get refrered to by name */
enum MymrChar
{
@@ -1827,7 +1928,7 @@ static qsizetype myanmar_nextSyllableBoundary(const char16_t *s, qsizetype start
if (pos == start)
*invalid = (bool)(charClass & Mymr_CF_DOTTED_CIRCLE);
- MMDEBUG("state[%d]=%d class=%8x (uc=%4x)", int(pos - start), state, charClass, *uc);
+ MMDEBUG("state[%lld]=%d class=%8x (uc=%4x)", qlonglong(pos - start), state, charClass, *uc);
if (state < 0) {
if (state < -1)
@@ -1843,7 +1944,6 @@ static qsizetype myanmar_nextSyllableBoundary(const char16_t *s, qsizetype start
static void myanmarAttributes(QChar::Script script, const char16_t *text, qsizetype from, qsizetype len, QCharAttributes *attributes)
{
qsizetype end = from + len;
- const char16_t *uc = text + from;
qsizetype i = 0;
Q_UNUSED(script);
attributes += from;
@@ -1859,7 +1959,6 @@ static void myanmarAttributes(QChar::Script script, const char16_t *text, qsizet
i++;
while (i < boundary) {
attributes[i].graphemeBoundary = false;
- ++uc;
++i;
}
assert(i == boundary);
@@ -1942,6 +2041,7 @@ enum KhmerCharClassFlags {
CF_POS_MASK = 0x000f0000
};
+Q_DECLARE_MIXED_ENUM_OPERATORS(int, KhmerCharClassValues, KhmerCharClassFlags)
/* Characters that get referred to by name */
enum KhmerChar {
@@ -2163,7 +2263,7 @@ static qsizetype khmer_nextSyllableBoundary(const char16_t *s, qsizetype start,
}
state = khmerStateTable[state][charClass & CF_CLASS_MASK];
- KHDEBUG("state[%d]=%d class=%8lx (uc=%4x)", int(pos - start), state,
+ KHDEBUG("state[%lld]=%d class=%8lx (uc=%4x)", qlonglong(pos - start), state,
charClass, *uc );
if (state < 0) {
@@ -2178,7 +2278,6 @@ static qsizetype khmer_nextSyllableBoundary(const char16_t *s, qsizetype start,
static void khmerAttributes(QChar::Script script, const char16_t *text, qsizetype from, qsizetype len, QCharAttributes *attributes)
{
qsizetype end = from + len;
- const char16_t *uc = text + from;
qsizetype i = 0;
Q_UNUSED(script);
attributes += from;
@@ -2192,7 +2291,6 @@ static void khmerAttributes(QChar::Script script, const char16_t *text, qsizetyp
i++;
while ( i < boundary ) {
attributes[i].graphemeBoundary = false;
- ++uc;
++i;
}
assert( i == boundary );
diff --git a/src/corelib/text/qunicodetools_p.h b/src/corelib/text/qunicodetools_p.h
index cecb6defc7..06f31a5511 100644
--- a/src/corelib/text/qunicodetools_p.h
+++ b/src/corelib/text/qunicodetools_p.h
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QUNICODETOOLS_P_H
#define QUNICODETOOLS_P_H
diff --git a/src/corelib/text/qutf8stringview.h b/src/corelib/text/qutf8stringview.h
index a6930c2e0f..fe105e283e 100644
--- a/src/corelib/text/qutf8stringview.h
+++ b/src/corelib/text/qutf8stringview.h
@@ -1,55 +1,24 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QUTF8STRINGVIEW_H
#define QUTF8STRINGVIEW_H
+#if 0
+#pragma qt_class(QUtf8StringView)
+#endif
+
#include <QtCore/qstringalgorithms.h>
+#include <QtCore/qstringfwd.h>
#include <QtCore/qarraydata.h> // for QContainerImplHelper
+#include <QtCore/qbytearrayview.h>
+#include <QtCore/qcompare.h>
#include <string>
+#include <string_view>
+#include <QtCore/q20type_traits.h>
QT_BEGIN_NAMESPACE
-template <bool> class QBasicUtf8StringView;
-class QByteArray;
-class QLatin1String;
-
namespace QtPrivate {
template <typename Char>
using IsCompatibleChar8TypeHelper = std::disjunction<
@@ -62,7 +31,7 @@ using IsCompatibleChar8TypeHelper = std::disjunction<
>;
template <typename Char>
using IsCompatibleChar8Type
- = IsCompatibleChar8TypeHelper<std::remove_cv_t<std::remove_reference_t<Char>>>;
+ = IsCompatibleChar8TypeHelper<q20::remove_cvref_t<Char>>;
template <typename Pointer>
struct IsCompatiblePointer8Helper : std::false_type {};
@@ -71,7 +40,7 @@ struct IsCompatiblePointer8Helper<Char*>
: IsCompatibleChar8Type<Char> {};
template <typename Pointer>
using IsCompatiblePointer8
- = IsCompatiblePointer8Helper<std::remove_cv_t<std::remove_reference_t<Pointer>>>;
+ = IsCompatiblePointer8Helper<q20::remove_cvref_t<Pointer>>;
template <typename T, typename Enable = void>
struct IsContainerCompatibleWithQUtf8StringView : std::false_type {};
@@ -98,7 +67,7 @@ struct IsContainerCompatibleWithQUtf8StringView<T, std::enable_if_t<std::conjunc
std::negation<std::is_same<std::decay_t<T>, QByteArray>>,
// This has a compatible value_type, but explicitly a different encoding
- std::negation<std::is_same<std::decay_t<T>, QLatin1String>>,
+ std::negation<std::is_same<std::decay_t<T>, QLatin1StringView>>,
// Don't make an accidental copy constructor
std::negation<std::disjunction<
@@ -117,7 +86,7 @@ struct wrap_char { using type = char; };
} // namespace QtPrivate
-#ifdef Q_CLANG_QDOC
+#ifdef Q_QDOC
#define QBasicUtf8StringView QUtf8StringView
#else
template <bool UseChar8T>
@@ -125,7 +94,7 @@ template <bool UseChar8T>
class QBasicUtf8StringView
{
public:
-#ifndef Q_CLANG_QDOC
+#ifndef Q_QDOC
using storage_type = typename std::conditional<UseChar8T,
QtPrivate::hide_char8_t,
QtPrivate::wrap_char
@@ -196,7 +165,7 @@ public:
constexpr QBasicUtf8StringView(const Char *f, const Char *l)
: QBasicUtf8StringView(f, l - f) {}
-#ifdef Q_CLANG_QDOC
+#ifdef Q_QDOC
template <typename Char, size_t N>
constexpr QBasicUtf8StringView(const Char (&array)[N]) noexcept;
@@ -209,8 +178,9 @@ public:
str ? std::char_traits<std::remove_cv_t<std::remove_pointer_t<Pointer>>>::length(str) : 0) {}
#endif
-#ifdef Q_CLANG_QDOC
+#ifdef Q_QDOC
QBasicUtf8StringView(const QByteArray &str) noexcept;
+ constexpr QBasicUtf8StringView(const storage_type *d, qsizetype n) noexcept {};
#else
template <typename String, if_compatible_qstring_like<String> = true>
QBasicUtf8StringView(const String &str) noexcept
@@ -221,7 +191,7 @@ public:
constexpr QBasicUtf8StringView(const Container &c) noexcept
: QBasicUtf8StringView(std::data(c), lengthHelperContainer(c)) {}
-#ifdef __cpp_char8_t
+#if defined(__cpp_char8_t) && !defined(Q_QDOC)
constexpr QBasicUtf8StringView(QBasicUtf8StringView<!UseChar8T> other)
: QBasicUtf8StringView(other.data(), other.size()) {}
#endif
@@ -233,13 +203,13 @@ public:
[[nodiscard]] inline QString toString() const; // defined in qstring.h
[[nodiscard]] constexpr qsizetype size() const noexcept { return m_size; }
- [[nodiscard]] const_pointer data() const noexcept { return reinterpret_cast<const_pointer>(m_data); }
-#if defined(__cpp_char8_t) || defined(Q_CLANG_QDOC)
+ [[nodiscard]] constexpr const_pointer data() const noexcept { return m_data; }
+#ifdef __cpp_char8_t
[[nodiscard]] const char8_t *utf8() const noexcept { return reinterpret_cast<const char8_t*>(m_data); }
#endif
[[nodiscard]] constexpr storage_type operator[](qsizetype n) const
- { return Q_ASSERT(n >= 0), Q_ASSERT(n < size()), m_data[n]; }
+ { verify(n, 1); return m_data[n]; }
//
// QString API
@@ -270,20 +240,20 @@ public:
}
[[nodiscard]] constexpr QBasicUtf8StringView sliced(qsizetype pos) const
- { verify(pos); return QBasicUtf8StringView{m_data + pos, m_size - pos}; }
+ { verify(pos, 0); return QBasicUtf8StringView{m_data + pos, m_size - pos}; }
[[nodiscard]] constexpr QBasicUtf8StringView sliced(qsizetype pos, qsizetype n) const
{ verify(pos, n); return QBasicUtf8StringView(m_data + pos, n); }
[[nodiscard]] constexpr QBasicUtf8StringView first(qsizetype n) const
- { verify(n); return QBasicUtf8StringView(m_data, n); }
+ { verify(0, n); return sliced(0, n); }
[[nodiscard]] constexpr QBasicUtf8StringView last(qsizetype n) const
- { verify(n); return QBasicUtf8StringView(m_data + m_size - n, n); }
+ { verify(0, n); return sliced(m_size - n, n); }
[[nodiscard]] constexpr QBasicUtf8StringView chopped(qsizetype n) const
- { verify(n); return QBasicUtf8StringView(m_data, m_size - n); }
+ { verify(0, n); return sliced(0, m_size - n); }
constexpr void truncate(qsizetype n)
- { verify(n); m_size = n; }
+ { verify(0, n); m_size = n; }
constexpr void chop(qsizetype n)
- { verify(n); m_size -= n; }
+ { verify(0, n); m_size -= n; }
[[nodiscard]] inline bool isValidUtf8() const noexcept
{
@@ -306,6 +276,9 @@ public:
[[nodiscard]] constexpr storage_type front() const { return Q_ASSERT(!empty()), m_data[0]; }
[[nodiscard]] constexpr storage_type back() const { return Q_ASSERT(!empty()), m_data[m_size - 1]; }
+ [[nodiscard]] Q_IMPLICIT operator std::basic_string_view<storage_type>() const noexcept
+ { return std::basic_string_view<storage_type>(data(), size_t(size())); }
+
//
// Qt compatibility API:
//
@@ -314,6 +287,26 @@ public:
[[nodiscard]] constexpr qsizetype length() const noexcept
{ return size(); }
+ [[nodiscard]] int compare(QBasicUtf8StringView other,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept
+ {
+ return QtPrivate::compareStrings(*this, other, cs);
+ }
+
+ [[nodiscard]] int compare(QChar other,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
+ [[nodiscard]] int compare(QStringView other,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
+ [[nodiscard]] int compare(QLatin1StringView other,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
+ [[nodiscard]] int compare(const QByteArray &other,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive) const noexcept;
+
+ [[nodiscard]] bool equal(QChar other) const noexcept;
+ [[nodiscard]] bool equal(QStringView other) const noexcept;
+ [[nodiscard]] bool equal(QLatin1StringView other) const noexcept;
+ [[nodiscard]] bool equal(const QByteArray &other) const noexcept;
+
private:
[[nodiscard]] static inline int compare(QBasicUtf8StringView lhs, QBasicUtf8StringView rhs) noexcept
{
@@ -321,30 +314,96 @@ private:
QBasicUtf8StringView<false>(rhs.data(), rhs.size()));
}
- [[nodiscard]] friend inline bool operator==(QBasicUtf8StringView lhs, QBasicUtf8StringView rhs) noexcept
+ friend bool
+ comparesEqual(const QBasicUtf8StringView &lhs, const QBasicUtf8StringView &rhs) noexcept
{
return lhs.size() == rhs.size()
- && QtPrivate::equalStrings(QBasicUtf8StringView<false>(lhs.data(), lhs.size()),
- QBasicUtf8StringView<false>(rhs.data(), rhs.size()));
+ && QtPrivate::equalStrings(QBasicUtf8StringView<false>(lhs.data(), lhs.size()),
+ QBasicUtf8StringView<false>(rhs.data(), rhs.size()));
+ }
+ friend Qt::strong_ordering
+ compareThreeWay(const QBasicUtf8StringView &lhs, const QBasicUtf8StringView &rhs) noexcept
+ {
+ const int res = QBasicUtf8StringView::compare(lhs, rhs);
+ return Qt::compareThreeWay(res, 0);
}
- [[nodiscard]] friend inline bool operator!=(QBasicUtf8StringView lhs, QBasicUtf8StringView rhs) noexcept
- { return !operator==(lhs, rhs); }
+ Q_DECLARE_STRONGLY_ORDERED(QBasicUtf8StringView)
-#ifdef __cpp_impl_three_way_comparison
- [[nodiscard]] friend inline auto operator<=>(QBasicUtf8StringView lhs, QBasicUtf8StringView rhs) noexcept
- { return QBasicUtf8StringView::compare(lhs, rhs) <=> 0; }
-#else
- [[nodiscard]] friend inline bool operator<=(QBasicUtf8StringView lhs, QBasicUtf8StringView rhs) noexcept
- { return QBasicUtf8StringView::compare(lhs, rhs) <= 0; }
- [[nodiscard]] friend inline bool operator>=(QBasicUtf8StringView lhs, QBasicUtf8StringView rhs) noexcept
- { return QBasicUtf8StringView::compare(lhs, rhs) >= 0; }
- [[nodiscard]] friend inline bool operator<(QBasicUtf8StringView lhs, QBasicUtf8StringView rhs) noexcept
- { return QBasicUtf8StringView::compare(lhs, rhs) < 0; }
- [[nodiscard]] friend inline bool operator>(QBasicUtf8StringView lhs, QBasicUtf8StringView rhs) noexcept
- { return QBasicUtf8StringView::compare(lhs, rhs) > 0; }
-#endif
+ friend bool
+ comparesEqual(const QBasicUtf8StringView &lhs, const QLatin1StringView &rhs) noexcept
+ {
+ return lhs.equal(rhs);
+ }
+ friend Qt::strong_ordering
+ compareThreeWay(const QBasicUtf8StringView &lhs, const QLatin1StringView &rhs) noexcept
+ {
+ const int res = lhs.compare(rhs);
+ return Qt::compareThreeWay(res, 0);
+ }
+ Q_DECLARE_STRONGLY_ORDERED(QBasicUtf8StringView, QLatin1StringView)
- Q_ALWAYS_INLINE constexpr void verify(qsizetype pos, qsizetype n = 0) const
+ friend bool
+ comparesEqual(const QBasicUtf8StringView &lhs, const QStringView &rhs) noexcept
+ { return lhs.equal(rhs); }
+ friend Qt::strong_ordering
+ compareThreeWay(const QBasicUtf8StringView &lhs, const QStringView &rhs) noexcept
+ {
+ const int res = lhs.compare(rhs);
+ return Qt::compareThreeWay(res, 0);
+ }
+ Q_DECLARE_STRONGLY_ORDERED(QBasicUtf8StringView, QStringView)
+
+ friend bool comparesEqual(const QBasicUtf8StringView &lhs, const QChar &rhs) noexcept
+ { return lhs.equal(rhs); }
+ friend Qt::strong_ordering
+ compareThreeWay(const QBasicUtf8StringView &lhs, const QChar &rhs) noexcept
+ {
+ const int res = lhs.compare(rhs);
+ return Qt::compareThreeWay(res, 0);
+ }
+ Q_DECLARE_STRONGLY_ORDERED(QBasicUtf8StringView, QChar)
+ Q_DECLARE_STRONGLY_ORDERED(QBasicUtf8StringView, char16_t)
+
+#if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
+ friend bool
+ comparesEqual(const QBasicUtf8StringView &lhs, const QByteArrayView &rhs) noexcept
+ {
+ return lhs.size() == rhs.size()
+ && QtPrivate::equalStrings(QBasicUtf8StringView<false>(lhs.data(), lhs.size()),
+ QBasicUtf8StringView<false>(rhs.data(), rhs.size()));
+ }
+ friend Qt::strong_ordering
+ compareThreeWay(const QBasicUtf8StringView &lhs, const QByteArrayView &rhs) noexcept
+ {
+ const int res = QtPrivate::compareStrings(QBasicUtf8StringView<false>(lhs.data(), lhs.size()),
+ QBasicUtf8StringView<false>(rhs.data(), rhs.size()));
+ return Qt::compareThreeWay(res, 0);
+ }
+ Q_DECLARE_STRONGLY_ORDERED(QBasicUtf8StringView, QByteArrayView, QT_ASCII_CAST_WARN)
+
+ friend bool
+ comparesEqual(const QBasicUtf8StringView &lhs, const QByteArray &rhs) noexcept
+ {
+ return lhs.equal(rhs);
+ }
+ friend Qt::strong_ordering
+ compareThreeWay(const QBasicUtf8StringView &lhs, const QByteArray &rhs) noexcept
+ {
+ const int res = lhs.compare(rhs);
+ return Qt::compareThreeWay(res, 0);
+ }
+ Q_DECLARE_STRONGLY_ORDERED(QBasicUtf8StringView, QByteArray, QT_ASCII_CAST_WARN)
+
+ friend bool comparesEqual(const QBasicUtf8StringView &lhs, const char *rhs) noexcept
+ { return comparesEqual(lhs, QByteArrayView(rhs)); }
+ friend Qt::strong_ordering
+ compareThreeWay(const QBasicUtf8StringView &lhs, const char *rhs) noexcept
+ { return compareThreeWay(lhs, QByteArrayView(rhs)); }
+ Q_DECLARE_STRONGLY_ORDERED(QBasicUtf8StringView, const char *, QT_ASCII_CAST_WARN)
+#endif // !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
+
+ Q_ALWAYS_INLINE constexpr void verify([[maybe_unused]] qsizetype pos = 0,
+ [[maybe_unused]] qsizetype n = 1) const
{
Q_ASSERT(pos >= 0);
Q_ASSERT(pos <= size());
@@ -355,25 +414,20 @@ private:
qsizetype m_size;
};
-#ifdef Q_CLANG_QDOC
+constexpr QByteArrayView::QByteArrayView(QUtf8StringView v) noexcept
+ : QByteArrayView(v.data(), v.size())
+{}
+
+#ifdef Q_QDOC
#undef QBasicUtf8StringView
#else
template <bool UseChar8T>
Q_DECLARE_TYPEINFO_BODY(QBasicUtf8StringView<UseChar8T>, Q_PRIMITIVE_TYPE);
-// ### Qt 7: remove the non-char8_t version of QUtf8StringView
-QT_BEGIN_NO_CHAR8_T_NAMESPACE
-using QUtf8StringView = QBasicUtf8StringView<false>;
-QT_END_NO_CHAR8_T_NAMESPACE
-
-QT_BEGIN_HAS_CHAR8_T_NAMESPACE
-using QUtf8StringView = QBasicUtf8StringView<true>;
-QT_END_HAS_CHAR8_T_NAMESPACE
-#endif // Q_CLANG_QDOC
-
template <typename QStringLike, std::enable_if_t<std::is_same_v<QStringLike, QByteArray>, bool> = true>
[[nodiscard]] inline q_no_char8_t::QUtf8StringView qToUtf8StringViewIgnoringNull(const QStringLike &s) noexcept
-{ return q_no_char8_t::QUtf8StringView(s.data(), s.size()); }
+{ return q_no_char8_t::QUtf8StringView(s.begin(), s.size()); }
+#endif // Q_QDOC
QT_END_NAMESPACE
diff --git a/src/corelib/text/qutf8stringview.qdoc b/src/corelib/text/qutf8stringview.qdoc
index deac0882fe..b433e5b995 100644
--- a/src/corelib/text/qutf8stringview.qdoc
+++ b/src/corelib/text/qutf8stringview.qdoc
@@ -1,29 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\class QUtf8StringView
@@ -35,6 +11,14 @@
\ingroup tools
\ingroup string-processing
+ \compares strong
+ \compareswith strong char16_t QChar {const char16_t *} QString QStringView \
+ QLatin1StringView
+ \endcompareswith
+ \compareswith strong {const char *} QByteArray QByteArrayView
+ The contents of byte arrays is interpreted as utf-8.
+ \endcompareswith
+
A QUtf8StringView references a contiguous portion of a UTF-8
string it does not own. It acts as an interface type to all kinds
of UTF-8 string, without the need to construct a QString or
@@ -228,6 +212,11 @@
*/
/*!
+ \fn QUtf8StringView::QUtf8StringView(const storage_type *d, qsizetype n)
+ \internal
+*/
+
+/*!
\fn QUtf8StringView::QUtf8StringView(std::nullptr_t)
Constructs a null string view.
@@ -236,7 +225,7 @@
*/
/*!
- \fn template <typename Char> QUtf8StringView::QUtf8StringView(const Char *str, qsizetype len)
+ \fn template <typename Char, QUtf8StringView::if_compatible_char<Char> = true> QUtf8StringView::QUtf8StringView(const Char *str, qsizetype len)
Constructs a string view on \a str with length \a len.
@@ -252,7 +241,7 @@
*/
/*!
- \fn template <typename Char> QUtf8StringView::QUtf8StringView(const Char *first, const Char *last)
+ \fn template <typename Char, QUtf8StringView::if_compatible_char<Char> = true> QUtf8StringView::QUtf8StringView(const Char *first, const Char *last)
Constructs a string view on \a first with length (\a last - \a first).
@@ -306,26 +295,26 @@
*/
/*!
- \fn template <typename Container, if_compatible_container<Container>> QUtf8StringView::QUtf8StringView(const Container &str)
+ \fn template <typename Container, QUtf8StringView::if_compatible_container<Container>> QUtf8StringView::QUtf8StringView(const Container &str)
- Constructs a string view on \a str. The length is taken from \c{str.size()}.
+ Constructs a string view on \a str. The length is taken from \c{std::size(str)}.
- \c{str.data()} must remain valid for the lifetime of this string view object.
+ \c{std::data(str)} must remain valid for the lifetime of this string view object.
- This constructor only participates in overload resolution if \c Container is an
- instantiation of \c std::basic_string with a compatible character type. The
+ This constructor only participates in overload resolution if \c Container is a
+ container with a compatible character type as \c{value_type}. The
compatible character types are: \c char8_t, \c char, \c{signed char} and
\c{unsigned char}.
- The string view will be empty if and only if \c{str.empty()}. It is unspecified
- whether this constructor can result in a null string view (\c{str.data()} would
+ The string view will be empty if and only if \c{std::size(str) == 0}. It is unspecified
+ whether this constructor can result in a null string view (\c{std::data(str)} would
have to return \nullptr for this).
\sa isNull(), isEmpty()
*/
/*!
- \fn template <typename Char, size_t Size, if_compatible_char<Char>> QUtf8StringView::fromArray(const Char (&string)[Size])
+ \fn template <typename Char, size_t Size, QUtf8StringView::if_compatible_char<Char>> QUtf8StringView::fromArray(const Char (&string)[Size])
Constructs a string view on the full character string literal \a string,
including any trailing \c{Char(0)}. If you don't want the
@@ -497,7 +486,7 @@
*/
/*!
- \fn int QUtf8StringView::length() const
+ \fn QUtf8StringView::length() const
Same as size().
@@ -624,8 +613,10 @@
Returns a string view containing \a n code points of this string view,
starting at position \a pos.
+//! [UB-sliced-index-length]
\note The behavior is undefined when \a pos < 0, \a n < 0,
or \a pos + \a n > size().
+//! [UB-sliced-index-length]
\sa first(), last(), chopped(), chop(), truncate()
*/
@@ -636,7 +627,9 @@
Returns a string view starting at position \a pos in this object,
and extending to its end.
+//! [UB-sliced-index-only]
\note The behavior is undefined when \a pos < 0 or \a pos > size().
+//! [UB-sliced-index-only]
\sa first(), last(), chopped(), chop(), truncate()
*/
@@ -679,6 +672,20 @@
*/
/*!
+ \fn int QUtf8StringView::compare(QLatin1StringView str, Qt::CaseSensitivity cs) const
+ \fn int QUtf8StringView::compare(QUtf8StringView str, Qt::CaseSensitivity cs) const
+ \fn int QUtf8StringView::compare(QStringView str, Qt::CaseSensitivity cs) const
+ \since 6.5
+
+ Compares this string view with \a str and returns a negative integer if
+ this string view is less than \a str, a positive integer if it is greater than
+ \a str, and zero if they are equal.
+
+ \include qstring.qdocinc {search-comparison-case-sensitivity} {comparison}
+*/
+
+
+/*!
\fn QUtf8StringView::isValidUtf8() const
Returns \c true if this string contains valid UTF-8 encoded data,
@@ -701,3 +708,13 @@
\sa QByteArray::isNull(), QUtf8StringView
*/
+
+
+/*! \fn QUtf8StringView::operator std::basic_string_view<storage_type>() const
+ \since 6.7
+
+ Converts this QUtf8StringView object to a
+ \c{std::basic_string_view} object. The returned view will have the
+ same data pointer and length of this view. The character type of
+ the returned view will be \c{storage_type}.
+*/
diff --git a/src/corelib/text/qvsnprintf.cpp b/src/corelib/text/qvsnprintf.cpp
index 43a21771a1..839fc24217 100644
--- a/src/corelib/text/qvsnprintf.cpp
+++ b/src/corelib/text/qvsnprintf.cpp
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qplatformdefs.h"
@@ -46,7 +10,7 @@
QT_BEGIN_NAMESPACE
-#if !defined(QT_VSNPRINTF) || defined(Q_CLANG_QDOC)
+#if !defined(QT_VSNPRINTF) || defined(Q_QDOC)
/*!
\relates QByteArray