From 9cb92d106d9de92d25aa29423a59658f152f5791 Mon Sep 17 00:00:00 2001 From: Timur Pocheptsov Date: Wed, 4 Nov 2015 12:48:31 +0100 Subject: Cocoa integration - do not send move events while in -draggingUpdated: Looks like it's not a good idea to send constant 'fake' mouse move events while mouse is actually moving (mouseDragged/rightMouseDragged) + we're receiving -dragginUpdated:. Change-Id: Ibed5def3d8f06b764dea6c2cd196e37ca19ce967 Task-number: QTBUG-49204 Reviewed-by: Gabriel de Dietrich Reviewed-by: Filipe Azevedo --- src/plugins/platforms/cocoa/qnsview.h | 1 + src/plugins/platforms/cocoa/qnsview.mm | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/cocoa/qnsview.h b/src/plugins/platforms/cocoa/qnsview.h index de28b8d74a..bad67f2516 100644 --- a/src/plugins/platforms/cocoa/qnsview.h +++ b/src/plugins/platforms/cocoa/qnsview.h @@ -75,6 +75,7 @@ Q_FORWARD_DECLARE_OBJC_CLASS(QT_MANGLE_NAMESPACE(QNSViewMouseMoveHelper)); QT_MANGLE_NAMESPACE(QNSViewMouseMoveHelper) *m_mouseMoveHelper; bool m_resendKeyEvent; bool m_scrolling; + bool m_updatingDrag; bool m_exposedOnMoveToWindow; NSEvent *m_currentlyInterpretedKeyEvent; bool m_isMenuView; diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm index faa048874f..aac50e7833 100644 --- a/src/plugins/platforms/cocoa/qnsview.mm +++ b/src/plugins/platforms/cocoa/qnsview.mm @@ -153,6 +153,7 @@ static NSString *_q_NSWindowDidChangeOcclusionStateNotification = nil; m_mouseMoveHelper = [[QT_MANGLE_NAMESPACE(QNSViewMouseMoveHelper) alloc] initWithView:self]; m_resendKeyEvent = false; m_scrolling = false; + m_updatingDrag = false; m_currentlyInterpretedKeyEvent = 0; if (!touchDevice) { @@ -1917,6 +1918,9 @@ static QPoint mapWindowCoordinates(QWindow *source, QWindow *target, QPoint poin // Make sure the cursor is updated correctly if the mouse does not move and window is under cursor // by creating a fake move event + if (m_updatingDrag) + return; + const QPoint mousePos(QCursor::pos()); CGEventRef moveEvent(CGEventCreateMouseEvent( NULL, kCGEventMouseMoved, @@ -1934,7 +1938,11 @@ static QPoint mapWindowCoordinates(QWindow *source, QWindow *target, QPoint poin - (NSDragOperation)draggingUpdated:(id )sender { - return [self handleDrag : sender]; + m_updatingDrag = true; + const NSDragOperation ret([self handleDrag : sender]); + m_updatingDrag = false; + + return ret; } // Sends drag update to Qt, return the action -- cgit v1.2.3 From d894cfa863a3fc9cd9a6dcb9f3c7b04e6ce41285 Mon Sep 17 00:00:00 2001 From: Joni Poikelin Date: Wed, 4 Nov 2015 11:35:09 +0200 Subject: Fix QImage::setDotsPerMeterX/Y for images with some orientations Rotation of images with orientation of 90 and 270 degrees dropped DPM values from rotated image. Task-number: QTBUG-49220 Change-Id: I9c23153c49dd63b5f6958fdde72f466873b0a407 Reviewed-by: Friedemann Kleint Reviewed-by: Liang Qi Reviewed-by: aavit --- src/gui/image/qimage.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp index c4691b5f5e..b3d8563614 100644 --- a/src/gui/image/qimage.cpp +++ b/src/gui/image/qimage.cpp @@ -4285,6 +4285,8 @@ QImage QImage::smoothScaled(int w, int h) const { static QImage rotated90(const QImage &image) { QImage out(image.height(), image.width(), image.format()); + out.setDotsPerMeterX(image.dotsPerMeterY()); + out.setDotsPerMeterY(image.dotsPerMeterX()); if (image.colorCount() > 0) out.setColorTable(image.colorTable()); int w = image.width(); @@ -4353,6 +4355,8 @@ static QImage rotated180(const QImage &image) { static QImage rotated270(const QImage &image) { QImage out(image.height(), image.width(), image.format()); + out.setDotsPerMeterX(image.dotsPerMeterY()); + out.setDotsPerMeterY(image.dotsPerMeterX()); if (image.colorCount() > 0) out.setColorTable(image.colorTable()); int w = image.width(); -- cgit v1.2.3 From c78fec01f89e7383b3008b5ca30d2a2601ba0a97 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 2 Nov 2015 21:26:08 +0100 Subject: [docs] QStyle: remove remaining references to QStyleOption*V They are all obsolete since Qt 5.0. Change-Id: Ief9111057137c3bd091630430a23681095b73510 Reviewed-by: Jake Petroules --- src/widgets/styles/qstyle.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/widgets/styles/qstyle.cpp b/src/widgets/styles/qstyle.cpp index b368477a39..02c420e55c 100644 --- a/src/widgets/styles/qstyle.cpp +++ b/src/widgets/styles/qstyle.cpp @@ -896,7 +896,7 @@ void QStyle::drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, \value CE_ToolBoxTabLabel The toolbox's tab label. \value CE_HeaderEmptyArea The area of a header view where there are no header sections. - \value CE_ShapedFrame The frame with the shape specified in the QStyleOptionFrameV3; see QFrame. + \value CE_ShapedFrame The frame with the shape specified in the QStyleOptionFrame; see QFrame. \omitvalue CE_ColumnViewGrip @@ -1034,7 +1034,7 @@ void QStyle::drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, \omitvalue SE_ViewItemCheckIndicator \value SE_FrameContents Area for a frame's contents. - \value SE_ShapedFrameContents Area for a frame's contents using the shape in QStyleOptionFrameV3; see QFrame + \value SE_ShapedFrameContents Area for a frame's contents using the shape in QStyleOptionFrame; see QFrame \value SE_FrameLayoutItem Area that counts for the parent layout. \value SE_HeaderArrow Area for the sort indicator for a header. -- cgit v1.2.3 From c69f75426d004d7cdadf51ea06238fef98493ec7 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 2 Nov 2015 15:26:32 +0100 Subject: QStyleOption*V: mark as \obsolete Change-Id: I6e4857bcfa7792bec4d38f6c65bfec15a52b4d30 Reviewed-by: Friedemann Kleint --- src/widgets/styles/qstyleoption.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src') diff --git a/src/widgets/styles/qstyleoption.cpp b/src/widgets/styles/qstyleoption.cpp index cab56e329e..d66dbec472 100644 --- a/src/widgets/styles/qstyleoption.cpp +++ b/src/widgets/styles/qstyleoption.cpp @@ -475,6 +475,7 @@ QStyleOptionFocusRect::QStyleOptionFocusRect(int version) /*! \typedef QStyleOptionFrameV2 \relates QStyleOptionFrame + \obsolete Synonym for QStyleOptionFrame. */ @@ -482,6 +483,7 @@ QStyleOptionFocusRect::QStyleOptionFocusRect(int version) /*! \typedef QStyleOptionFrameV3 \relates QStyleOptionFrame + \obsolete Synonym for QStyleOptionFrame. */ @@ -1253,6 +1255,7 @@ QStyleOptionToolBar::QStyleOptionToolBar(int version) /*! \typedef QStyleOptionTabV2 \relates QStyleOptionTab + \obsolete Synonym for QStyleOptionTab. */ @@ -1260,6 +1263,7 @@ QStyleOptionToolBar::QStyleOptionToolBar(int version) /*! \typedef QStyleOptionTabV3 \relates QStyleOptionTab + \obsolete Synonym for QStyleOptionTab. */ @@ -1497,6 +1501,7 @@ QStyleOptionTab::QStyleOptionTab(int version) /*! \typedef QStyleOptionProgressBarV2 \relates QStyleOptionProgressBar + \obsolete Synonym for QStyleOptionProgressBar. */ @@ -2270,6 +2275,7 @@ QStyleOptionSpinBox::QStyleOptionSpinBox(int version) /*! \typedef QStyleOptionDockWidgetV2 \relates QStyleOptionDockWidget + \obsolete Synonym for QStyleOptionDockWidget. */ @@ -2675,6 +2681,7 @@ QStyleOptionComboBox::QStyleOptionComboBox(int version) /*! \typedef QStyleOptionToolBoxV2 \relates QStyleOptionToolBox + \obsolete Synonym for QStyleOptionToolBox. */ @@ -3012,6 +3019,7 @@ QStyleOptionTitleBar::QStyleOptionTitleBar(int version) /*! \typedef QStyleOptionViewItemV2 \relates QStyleOptionViewItem + \obsolete Synonym for QStyleOptionViewItem. */ @@ -3019,6 +3027,7 @@ QStyleOptionTitleBar::QStyleOptionTitleBar(int version) /*! \typedef QStyleOptionViewItemV3 \relates QStyleOptionViewItem + \obsolete Synonym for QStyleOptionViewItem. */ @@ -3026,6 +3035,7 @@ QStyleOptionTitleBar::QStyleOptionTitleBar(int version) /*! \typedef QStyleOptionViewItemV4 \relates QStyleOptionViewItem + \obsolete Synonym for QStyleOptionViewItem. */ @@ -3298,6 +3308,7 @@ QStyleOptionViewItem::QStyleOptionViewItem(int version) /*! \typedef QStyleOptionTabWidgetFrameV2 \relates QStyleOptionTabWidgetFrame + \obsolete Synonym for QStyleOptionTabWidgetFrame. */ @@ -3447,6 +3458,7 @@ QStyleOptionTabWidgetFrame::QStyleOptionTabWidgetFrame(int version) /*! \typedef QStyleOptionTabBarBaseV2 \relates QStyleOptionTabBarBase + \obsolete Synonym for QStyleOptionTabBarBase. */ -- cgit v1.2.3 From 0e1f3aab11a4310595d8651c02ce5f9d60c93252 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Mon, 2 Nov 2015 08:28:14 +0400 Subject: Update Unicode data & algorithms up to v8.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Georgian lari currency symbol * A large collection of CJK unified ideographs * Emoji symbols and symbol modifiers * Letters to support the Ik language in Uganda, Kulango in the Côte d’Ivoire, and other languages of Africa * A set of lowercase Cherokee syllables, forming case pairs with the existing Cherokee characters * The Ahom script for support of the Tai Ahom language in India * Arabic letters to support Arwi—the Tamil language written in the Arabic script For more details, see http://www.unicode.org/versions/Unicode8.0.0/ [ChangeLog][QtCore] Unicode data updated to v.8.0 Change-Id: If255f95c9c45655b721369a116299da3cabbba0a Reviewed-by: Lars Knoll --- src/corelib/tools/qchar.cpp | 9 +++- src/corelib/tools/qchar.h | 11 +++- src/corelib/tools/qunicodetools.cpp | 61 +++++++++++++--------- src/gui/text/qharfbuzzng.cpp | 10 +++- .../fontconfig/qfontconfigdatabase.cpp | 8 ++- 5 files changed, 71 insertions(+), 28 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qchar.cpp b/src/corelib/tools/qchar.cpp index 5469eee14d..9d2d90fc0d 100644 --- a/src/corelib/tools/qchar.cpp +++ b/src/corelib/tools/qchar.cpp @@ -179,8 +179,9 @@ QT_BEGIN_NAMESPACE \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_Unassigned The value is not assigned to any character - in version 6.3 of Unicode. + in version 8.0 of Unicode. \sa unicodeVersion(), currentUnicodeVersion() */ @@ -401,6 +402,12 @@ QT_BEGIN_NAMESPACE \value Script_Khudawadi \value Script_Tirhuta \value Script_WarangCiti + \value Script_Ahom + \value Script_AnatolianHieroglyphs + \value Script_Hatran + \value Script_Multani + \value Script_OldHungarian + \value Script_SignWriting \omitvalue ScriptCount diff --git a/src/corelib/tools/qchar.h b/src/corelib/tools/qchar.h index fc1fc7bc16..9833380cc8 100644 --- a/src/corelib/tools/qchar.h +++ b/src/corelib/tools/qchar.h @@ -275,6 +275,14 @@ public: Script_Tirhuta, Script_WarangCiti, + // Unicode 8.0 additions + Script_Ahom, + Script_AnatolianHieroglyphs, + Script_Hatran, + Script_Multani, + Script_OldHungarian, + Script_SignWriting, + ScriptCount }; @@ -365,7 +373,8 @@ public: Unicode_6_1, Unicode_6_2, Unicode_6_3, - Unicode_7_0 + Unicode_7_0, + Unicode_8_0 }; // ****** WHEN ADDING FUNCTIONS, CONSIDER ADDING TO QCharRef TOO diff --git a/src/corelib/tools/qunicodetools.cpp b/src/corelib/tools/qunicodetools.cpp index 56576c69f1..0df6b01b13 100644 --- a/src/corelib/tools/qunicodetools.cpp +++ b/src/corelib/tools/qunicodetools.cpp @@ -49,7 +49,7 @@ namespace QUnicodeTools { // ----------------------------------------------------------------------------------------------------- // // The text boundaries determination algorithm. -// See http://www.unicode.org/reports/tr29/tr29-25.html +// See http://www.unicode.org/reports/tr29/tr29-27.html // // ----------------------------------------------------------------------------------------------------- @@ -244,8 +244,9 @@ namespace SB { enum State { Initial, + Lower, Upper, - UpATerm, + LUATerm, ATerm, ATermC, ACS, @@ -260,10 +261,11 @@ enum State { static const uchar breakTable[BAfter + 1][QUnicodeTables::SentenceBreak_Close + 1] = { // Other CR LF Sep Extend Sp Lower Upper OLetter Numeric ATerm SContinue STerm Close - { Initial, BAfterC, BAfter , BAfter , Initial, Initial, Initial, Upper , Initial, Initial, ATerm , Initial, STerm , Initial }, // Initial - { Initial, BAfterC, BAfter , BAfter , Upper , Initial, Initial, Upper , Initial, Initial, UpATerm, STerm , STerm , Initial }, // Upper + { Initial, BAfterC, BAfter , BAfter , Initial, Initial, Lower , Upper , Initial, Initial, ATerm , Initial, STerm , Initial }, // Initial + { Initial, BAfterC, BAfter , BAfter , Lower , Initial, Initial, Initial, Initial, Initial, LUATerm, Initial, STerm , Initial }, // Lower + { Initial, BAfterC, BAfter , BAfter , Upper , Initial, Initial, Upper , Initial, Initial, LUATerm, STerm , STerm , Initial }, // Upper - { Lookup , BAfterC, BAfter , BAfter , UpATerm, ACS , Initial, Upper , Break , Initial, ATerm , STerm , STerm , ATermC }, // UpATerm + { Lookup , BAfterC, BAfter , BAfter , LUATerm, ACS , Initial, Upper , Break , Initial, ATerm , STerm , STerm , ATermC }, // LUATerm { Lookup , BAfterC, BAfter , BAfter , ATerm , ACS , Initial, Break , Break , Initial, ATerm , STerm , STerm , ATermC }, // ATerm { Lookup , BAfterC, BAfter , BAfter , ATermC , ACS , Initial, Break , Break , Lookup , ATerm , STerm , STerm , ATermC }, // ATermC { Lookup , BAfterC, BAfter , BAfter , ACS , ACS , Initial, Break , Break , Lookup , ATerm , STerm , STerm , Lookup }, // ACS @@ -341,7 +343,7 @@ static void getSentenceBreaks(const ushort *string, quint32 len, QCharAttributes // ----------------------------------------------------------------------------------------------------- // // The line breaking algorithm. -// See http://www.unicode.org/reports/tr14/tr14-33.html +// See http://www.unicode.org/reports/tr14/tr14-35.html // // ----------------------------------------------------------------------------------------------------- @@ -408,26 +410,29 @@ inline Class toClass(QUnicodeTables::LineBreakClass lbc, QChar::Category categor /* In order to support the tailored implementation of LB25 properly the following changes were made in the pair table to allow breaks where the numeric expression doesn't match the template (i.e. [^NU](IS|SY)NU): - CL->PO from IB to DB - CP->PO from IB to DB - CL->PR from IB to DB - CP->PR from IB to DB - PO->OP from IB to DB - PR->OP from IB to DB - IS->NU from IB to DB - SY->NU from IB to DB + (CL)(PO) from IB to DB + (CP)(PO) from IB to DB + (CL)(PR) from IB to DB + (CP)(PR) from IB to DB + (PO)(OP) from IB to DB + (PR)(OP) from IB to DB + (IS)(NU) from IB to DB + (SY)(NU) from IB to 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 +/* In order to implementat LB21a properly a special rule HH has been introduced and + the following changes were made in the pair table to disallow breaks after Hebrew + Hyphen: + (HL)(HY|BA) from IB to CI + (HY|BA)(!CB) from DB to HH +*/ enum Action { ProhibitedBreak, PB = ProhibitedBreak, DirectBreak, DB = DirectBreak, IndirectBreak, IB = IndirectBreak, CombiningIndirectBreak, CI = CombiningIndirectBreak, - CombiningProhibitedBreak, CP = CombiningProhibitedBreak + CombiningProhibitedBreak, CP = CombiningProhibitedBreak, + ProhibitedBreakAfterHebrewPlusHyphen, HH = ProhibitedBreakAfterHebrewPlusHyphen }; static const uchar breakTable[QUnicodeTables::LineBreak_CB + 1][QUnicodeTables::LineBreak_CB + 1] = { @@ -438,18 +443,18 @@ static const uchar breakTable[QUnicodeTables::LineBreak_CB + 1][QUnicodeTables:: /* 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 }, /* 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 }, /* 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 }, -/* EX */ { 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 }, -/* SY */ { 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 }, +/* 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 }, +/* 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 }, /* 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 }, /* 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 }, /* 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 }, /* 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 }, /* AL */ { 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 }, -/* HL */ { 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 }, +/* HL */ { IB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, IB, IB, IB, DB, IB, CI, CI, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, /* 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 }, /* 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 }, -/* HY */ { DB, PB, PB, IB, DB, IB, PB, PB, PB, DB, DB, IB, DB, DB, DB, DB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, -/* BA */ { DB, PB, PB, IB, DB, 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 }, +/* 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 }, +/* 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 }, /* 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 }, /* 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 }, /* 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 }, @@ -464,6 +469,10 @@ static const uchar breakTable[QUnicodeTables::LineBreak_CB + 1][QUnicodeTables:: /* 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 } }; +// 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 + } // namespace LB static void getLineBreaks(const ushort *string, quint32 len, QCharAttributes *attributes) @@ -555,6 +564,10 @@ static void getLineBreaks(const ushort *string, quint32 len, QCharAttributes *at if (lcls != QUnicodeTables::LineBreak_SP) goto next_no_cls_update; break; + case LB::ProhibitedBreakAfterHebrewPlusHyphen: + if (lcls != QUnicodeTables::LineBreak_HL) + attributes[pos].lineBreak = true; + break; case LB::ProhibitedBreak: // nothing to do default: @@ -659,7 +672,7 @@ Q_CORE_EXPORT void initCharAttributes(const ushort *string, int length, // ---------------------------------------------------------------------------- // -// The Unicode script property. See http://www.unicode.org/reports/tr24/tr24-22.html +// The Unicode script property. See http://www.unicode.org/reports/tr24/tr24-24.html // // ---------------------------------------------------------------------------- diff --git a/src/gui/text/qharfbuzzng.cpp b/src/gui/text/qharfbuzzng.cpp index 102c62ea8a..b2edfc00a0 100644 --- a/src/gui/text/qharfbuzzng.cpp +++ b/src/gui/text/qharfbuzzng.cpp @@ -188,7 +188,15 @@ static const hb_script_t _qtscript_to_hbscript[] = { HB_SCRIPT_SIDDHAM, HB_SCRIPT_KHUDAWADI, HB_SCRIPT_TIRHUTA, - HB_SCRIPT_WARANG_CITI + HB_SCRIPT_WARANG_CITI, + + // Unicode 8.0 additions + HB_SCRIPT_AHOM, + HB_SCRIPT_ANATOLIAN_HIEROGLYPHS, + HB_SCRIPT_HATRAN, + HB_SCRIPT_MULTANI, + HB_SCRIPT_OLD_HUNGARIAN, + HB_SCRIPT_SIGNWRITING }; Q_STATIC_ASSERT(QChar::ScriptCount == sizeof(_qtscript_to_hbscript) / sizeof(_qtscript_to_hbscript[0])); diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp index 022bc8bec2..0af9440b50 100644 --- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp +++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp @@ -242,7 +242,13 @@ static const char *specialLanguages[] = { "sa", // Siddham "sd", // Khudawadi "mai", // Tirhuta - "hoc" // WarangCiti + "hoc", // WarangCiti + "", // Ahom + "", // AnatolianHieroglyphs + "", // Hatran + "", // Multani + "", // OldHungarian + "" // SignWriting }; Q_STATIC_ASSERT(sizeof(specialLanguages) / sizeof(const char *) == QChar::ScriptCount); -- cgit v1.2.3 From 56c1755c3dd24f69bf14e26b0fe258aa5696fadb Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sun, 1 Nov 2015 08:15:48 +0400 Subject: Re-generate Unicode data tables Change-Id: I53fb254709764e56e9889531655fe6046f15b251 Reviewed-by: Lars Knoll --- src/corelib/tools/qunicodetables.cpp | 11002 ++++++++++++++++++--------------- src/corelib/tools/qunicodetables_p.h | 4 +- 2 files changed, 5891 insertions(+), 5115 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qunicodetables.cpp b/src/corelib/tools/qunicodetables.cpp index 73dce81d4a..24a9eafcd5 100644 --- a/src/corelib/tools/qunicodetables.cpp +++ b/src/corelib/tools/qunicodetables.cpp @@ -31,7 +31,7 @@ ** ****************************************************************************/ -/* This file is autogenerated from the Unicode 7.0 database. Do not edit */ +/* This file is autogenerated from the Unicode 8.0 database. Do not edit */ #include "qunicodetables_p.h" @@ -62,803 +62,803 @@ static const unsigned short uc_property_trie[] = { 10256, 10288, 10320, 10352, 10384, 10416, 10448, 10480, 10512, 10512, 10544, 10576, 10608, 10640, 10672, 10704, 10736, 10768, 10800, 10768, 10832, 10864, 10896, 10928, - 10960, 10768, 10992, 11024, 11056, 11088, 11088, 11120, - 11152, 11184, 11184, 11184, 11184, 11184, 11184, 11184, - 11184, 11184, 11184, 11184, 11184, 11184, 11184, 11184, - 11184, 11184, 11184, 11216, 11248, 11280, 11280, 11312, - 11344, 11376, 11408, 11440, 11472, 11504, 11536, 11568, - 11600, 11632, 11664, 11696, 11728, 11760, 11792, 11824, - 11856, 11888, 11920, 11952, 11984, 12016, 12048, 12080, - 12112, 12144, 12176, 12208, 12240, 12272, 9904, 9904, - 12304, 12336, 12368, 12400, 12432, 12464, 12496, 12528, - 12560, 12592, 12624, 12656, 9904, 9904, 12688, 12720, - 12752, 12784, 12816, 12848, 12880, 12912, 12944, 12976, - 13008, 13008, 13008, 13008, 13040, 13008, 13008, 13072, - 13104, 13136, 13168, 13200, 13232, 13264, 13296, 13328, - - 13360, 13392, 13424, 13456, 13488, 13520, 13552, 13584, - 13616, 13648, 13680, 13712, 13744, 13776, 13808, 13840, - 13872, 13904, 13936, 13968, 14000, 14032, 14064, 14096, - 14128, 14160, 14192, 14224, 14256, 14288, 14320, 14352, - 14384, 14416, 14448, 14480, 14512, 14544, 14576, 14608, - 14384, 14384, 14384, 14384, 14640, 14672, 14704, 14736, - 14768, 14800, 14384, 14832, 14864, 14896, 14928, 14960, - 14992, 15024, 15056, 15088, 15120, 15152, 15184, 15216, - 15248, 15248, 15248, 15248, 15248, 15248, 15248, 15248, - 15280, 15280, 15280, 15280, 15312, 15344, 15376, 15408, - 15440, 15472, 15280, 15504, 15536, 15568, 15600, 15632, - 15664, 15696, 15728, 15760, 15792, 15824, 15856, 9904, - 15888, 15920, 15952, 15984, 16016, 16016, 16016, 16048, - 16080, 16112, 16144, 16176, 16208, 16240, 16240, 16272, - 16304, 16336, 16368, 9904, 16400, 16432, 16432, 16464, - 16496, 16496, 16496, 16496, 16496, 16496, 16528, 16560, - - 16592, 16624, 16656, 16688, 16720, 16752, 16784, 16816, - 16848, 16880, 16912, 16912, 16944, 16976, 17008, 17040, - 17072, 17104, 17136, 17168, 17104, 17200, 17232, 17264, - 17296, 17296, 17328, 17360, 17392, 17392, 17424, 17456, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17520, 17552, 17552, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17616, 17648, 17680, - - 17712, 17744, 17744, 17744, 17744, 17744, 17744, 17744, - 17744, 17744, 17744, 17744, 17744, 17744, 17744, 17744, - 17744, 17744, 17744, 17744, 17744, 17744, 17744, 17744, - 17744, 17744, 17744, 17744, 17744, 17744, 17744, 17744, - 17744, 17744, 17744, 17744, 17776, 17808, 17840, 17872, - 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904, - 17936, 17968, 18000, 18032, 18064, 18096, 18096, 18128, - 18160, 18192, 18224, 18256, 18288, 18320, 9904, 18352, - 18384, 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, 9904, 9904, 19280, 19312, - 19344, 19376, 19408, 19440, 19472, 19504, 19536, 19344, - 19376, 19408, 19440, 19472, 19504, 19536, 19344, 19376, - 19408, 19440, 19472, 19504, 19536, 19344, 19376, 19408, - 19440, 19472, 19504, 19536, 19344, 19376, 19408, 19440, - - 19472, 19504, 19536, 19344, 19376, 19408, 19440, 19472, - 19504, 19536, 19344, 19376, 19408, 19440, 19472, 19504, - 19536, 19344, 19376, 19408, 19440, 19472, 19504, 19536, - 19344, 19376, 19408, 19440, 19472, 19504, 19536, 19344, - 19376, 19408, 19440, 19472, 19504, 19536, 19344, 19376, - 19408, 19440, 19472, 19504, 19536, 19344, 19376, 19408, - 19440, 19472, 19504, 19536, 19344, 19376, 19408, 19440, - 19472, 19504, 19536, 19344, 19376, 19408, 19440, 19472, - 19504, 19536, 19344, 19376, 19408, 19440, 19472, 19504, - 19536, 19344, 19376, 19408, 19440, 19472, 19504, 19536, - 19344, 19376, 19408, 19440, 19472, 19504, 19536, 19344, - 19376, 19408, 19440, 19472, 19504, 19536, 19344, 19376, - 19408, 19440, 19472, 19504, 19536, 19344, 19376, 19408, - 19440, 19472, 19504, 19536, 19344, 19376, 19408, 19440, - 19472, 19504, 19536, 19344, 19376, 19408, 19440, 19472, - 19504, 19536, 19344, 19376, 19408, 19440, 19472, 19504, - - 19536, 19344, 19376, 19408, 19440, 19472, 19504, 19536, - 19344, 19376, 19408, 19440, 19472, 19504, 19536, 19344, - 19376, 19408, 19440, 19472, 19504, 19536, 19344, 19376, - 19408, 19440, 19472, 19504, 19536, 19344, 19376, 19408, - 19440, 19472, 19504, 19536, 19344, 19376, 19408, 19440, - 19472, 19504, 19536, 19344, 19376, 19408, 19440, 19472, - 19504, 19536, 19344, 19376, 19408, 19440, 19472, 19504, - 19536, 19344, 19376, 19408, 19440, 19472, 19504, 19536, - 19344, 19376, 19408, 19440, 19472, 19504, 19536, 19344, - 19376, 19408, 19440, 19472, 19504, 19536, 19344, 19376, - 19408, 19440, 19472, 19504, 19536, 19344, 19376, 19408, - 19440, 19472, 19504, 19536, 19344, 19376, 19408, 19440, - 19472, 19504, 19536, 19344, 19376, 19408, 19440, 19472, - 19504, 19536, 19344, 19376, 19408, 19440, 19472, 19504, - 19536, 19344, 19376, 19408, 19440, 19472, 19504, 19536, - 19344, 19376, 19408, 19440, 19472, 19504, 19536, 19344, - - 19376, 19408, 19440, 19472, 19504, 19536, 19344, 19376, - 19408, 19440, 19472, 19504, 19536, 19344, 19376, 19408, - 19440, 19472, 19504, 19536, 19344, 19376, 19408, 19440, - 19472, 19504, 19536, 19344, 19376, 19408, 19440, 19472, - 19504, 19536, 19344, 19376, 19408, 19440, 19472, 19504, - 19536, 19344, 19376, 19408, 19440, 19472, 19504, 19536, - 19344, 19376, 19408, 19440, 19472, 19504, 19536, 19344, - 19376, 19408, 19440, 19472, 19504, 19568, 19600, 19632, - 19664, 19664, 19664, 19664, 19664, 19664, 19664, 19664, - 19664, 19664, 19664, 19664, 19664, 19664, 19664, 19664, - 19664, 19664, 19664, 19664, 19664, 19664, 19664, 19664, - 19664, 19664, 19664, 19664, 19664, 19664, 19664, 19664, - 19664, 19664, 19664, 19664, 19664, 19664, 19664, 19664, - 19664, 19664, 19664, 19664, 19664, 19664, 19664, 19664, - 19664, 19664, 19664, 19664, 19664, 19664, 19664, 19664, - 19664, 19664, 19664, 19664, 19664, 19664, 19664, 19664, - - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19728, 19728, 19728, 19728, 19728, 19728, 19728, 19728, - 19760, 19792, 19824, 19856, 19888, 19888, 19920, 17680, - 19952, 19984, 20016, 20048, 20048, 20080, 20112, 20048, - 20048, 20048, 20048, 20048, 20048, 20048, 20048, 20048, - 20048, 20144, 20176, 20048, 20208, 20048, 20240, 20272, - 20304, 20336, 20368, 20400, 20048, 20048, 20048, 20432, - 20464, 20496, 20528, 20560, 20592, 20624, 20656, 20688, - - 20720, 20752, 20784, 9904, 20816, 20816, 20816, 20848, - 20880, 20912, 20944, 20976, 21008, 21040, 21072, 21104, - 9904, 9904, 9904, 9904, 21136, 21168, 21200, 21232, - 21264, 21296, 21328, 21360, 21392, 21424, 21456, 9904, - 21488, 21520, 21552, 21584, 21616, 21648, 9904, 9904, - 21680, 21712, 21744, 21776, 9904, 9904, 9904, 9904, - 21808, 21808, 21808, 21808, 21808, 21808, 21808, 21808, + 10960, 10768, 10992, 11024, 11056, 11088, 11120, 11152, + 11184, 11216, 11216, 11216, 11216, 11216, 11216, 11216, + 11216, 11216, 11216, 11216, 11216, 11216, 11216, 11216, + 11216, 11216, 11216, 11248, 11280, 11312, 11312, 11344, + 11376, 11408, 11440, 11472, 11504, 11536, 11568, 11600, + 11632, 11664, 11696, 11728, 11760, 11792, 11824, 11856, + 11888, 11920, 11952, 11984, 12016, 12048, 12080, 12112, + 12144, 12176, 12208, 12240, 12272, 12304, 9904, 9904, + 12336, 12368, 12400, 12432, 12464, 12496, 12528, 12560, + 12592, 12624, 12656, 12688, 9904, 9904, 12720, 12752, + 12784, 12816, 12848, 12880, 12912, 12944, 12976, 13008, + 13040, 13040, 13040, 13040, 13072, 13040, 13040, 13104, + 13136, 13168, 13200, 13232, 13264, 13296, 13328, 13360, + + 13392, 13424, 13456, 13488, 13520, 13552, 13584, 13616, + 13648, 13680, 13712, 13744, 13776, 13808, 13840, 13872, + 13904, 13936, 13968, 14000, 14032, 14064, 14096, 14128, + 14160, 14192, 14224, 14256, 14288, 14320, 14352, 14384, + 14416, 14448, 14480, 14512, 14544, 14576, 14608, 14640, + 14416, 14416, 14416, 14416, 14672, 14704, 14736, 14768, + 14800, 14832, 14416, 14864, 14896, 14928, 14960, 14992, + 15024, 15056, 15088, 15120, 15152, 15184, 15216, 15248, + 15280, 15280, 15280, 15280, 15280, 15280, 15280, 15280, + 15312, 15312, 15312, 15312, 15344, 15376, 15408, 15440, + 15472, 15504, 15312, 15536, 15568, 15600, 15632, 15664, + 15696, 15728, 15760, 15792, 15824, 15856, 15888, 15920, + 15952, 15984, 16016, 16048, 16080, 16080, 16080, 16112, + 16144, 16176, 16208, 16240, 16272, 16304, 16304, 16336, + 16368, 16400, 16432, 9904, 16464, 16496, 16496, 16528, + 16560, 16560, 16560, 16560, 16560, 16560, 16592, 16624, + + 16656, 16688, 16720, 16752, 16784, 16816, 16848, 16880, + 16912, 16944, 16976, 16976, 17008, 17040, 17072, 17104, + 17136, 17168, 17200, 17232, 17168, 17264, 17296, 17328, + 17360, 17360, 17392, 17424, 17456, 17456, 17488, 17520, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17584, 17616, 17616, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17680, 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, 17840, 17872, 17904, 17936, + 17968, 17968, 17968, 17968, 17968, 17968, 17968, 17968, + 18000, 18032, 18064, 18096, 18128, 18160, 18160, 18192, + 18224, 18256, 18288, 18320, 18352, 18384, 9904, 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, 19472, + 19504, 19536, 19568, 19600, 19632, 19664, 19472, 19504, + 19536, 19568, 19600, 19632, 19664, 19472, 19504, 19536, + 19568, 19600, 19632, 19664, 19472, 19504, 19536, 19568, + + 19600, 19632, 19664, 19472, 19504, 19536, 19568, 19600, + 19632, 19664, 19472, 19504, 19536, 19568, 19600, 19632, + 19664, 19472, 19504, 19536, 19568, 19600, 19632, 19664, + 19472, 19504, 19536, 19568, 19600, 19632, 19664, 19472, + 19504, 19536, 19568, 19600, 19632, 19664, 19472, 19504, + 19536, 19568, 19600, 19632, 19664, 19472, 19504, 19536, + 19568, 19600, 19632, 19664, 19472, 19504, 19536, 19568, + 19600, 19632, 19664, 19472, 19504, 19536, 19568, 19600, + 19632, 19664, 19472, 19504, 19536, 19568, 19600, 19632, + 19664, 19472, 19504, 19536, 19568, 19600, 19632, 19664, + 19472, 19504, 19536, 19568, 19600, 19632, 19664, 19472, + 19504, 19536, 19568, 19600, 19632, 19664, 19472, 19504, + 19536, 19568, 19600, 19632, 19664, 19472, 19504, 19536, + 19568, 19600, 19632, 19664, 19472, 19504, 19536, 19568, + 19600, 19632, 19664, 19472, 19504, 19536, 19568, 19600, + 19632, 19664, 19472, 19504, 19536, 19568, 19600, 19632, + + 19664, 19472, 19504, 19536, 19568, 19600, 19632, 19664, + 19472, 19504, 19536, 19568, 19600, 19632, 19664, 19472, + 19504, 19536, 19568, 19600, 19632, 19664, 19472, 19504, + 19536, 19568, 19600, 19632, 19664, 19472, 19504, 19536, + 19568, 19600, 19632, 19664, 19472, 19504, 19536, 19568, + 19600, 19632, 19664, 19472, 19504, 19536, 19568, 19600, + 19632, 19664, 19472, 19504, 19536, 19568, 19600, 19632, + 19664, 19472, 19504, 19536, 19568, 19600, 19632, 19664, + 19472, 19504, 19536, 19568, 19600, 19632, 19664, 19472, + 19504, 19536, 19568, 19600, 19632, 19664, 19472, 19504, + 19536, 19568, 19600, 19632, 19664, 19472, 19504, 19536, + 19568, 19600, 19632, 19664, 19472, 19504, 19536, 19568, + 19600, 19632, 19664, 19472, 19504, 19536, 19568, 19600, + 19632, 19664, 19472, 19504, 19536, 19568, 19600, 19632, + 19664, 19472, 19504, 19536, 19568, 19600, 19632, 19664, + 19472, 19504, 19536, 19568, 19600, 19632, 19664, 19472, + + 19504, 19536, 19568, 19600, 19632, 19664, 19472, 19504, + 19536, 19568, 19600, 19632, 19664, 19472, 19504, 19536, + 19568, 19600, 19632, 19664, 19472, 19504, 19536, 19568, + 19600, 19632, 19664, 19472, 19504, 19536, 19568, 19600, + 19632, 19664, 19472, 19504, 19536, 19568, 19600, 19632, + 19664, 19472, 19504, 19536, 19568, 19600, 19632, 19664, + 19472, 19504, 19536, 19568, 19600, 19632, 19664, 19472, + 19504, 19536, 19568, 19600, 19632, 19696, 19728, 19760, + 19792, 19792, 19792, 19792, 19792, 19792, 19792, 19792, + 19792, 19792, 19792, 19792, 19792, 19792, 19792, 19792, + 19792, 19792, 19792, 19792, 19792, 19792, 19792, 19792, + 19792, 19792, 19792, 19792, 19792, 19792, 19792, 19792, + 19792, 19792, 19792, 19792, 19792, 19792, 19792, 19792, + 19792, 19792, 19792, 19792, 19792, 19792, 19792, 19792, + 19792, 19792, 19792, 19792, 19792, 19792, 19792, 19792, + 19792, 19792, 19792, 19792, 19792, 19792, 19792, 19792, + + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19856, 19856, 19856, 19856, 19856, 19856, 19856, 19856, + 19888, 19920, 19952, 19984, 20016, 20016, 20048, 17744, + 20080, 20112, 20144, 20176, 20176, 20208, 20240, 20176, + 20176, 20176, 20176, 20176, 20176, 20176, 20176, 20176, + 20176, 20272, 20304, 20176, 20336, 20176, 20368, 20400, + 20432, 20464, 20496, 20528, 20176, 20176, 20176, 20560, + 20592, 20624, 20656, 20688, 20720, 20752, 20784, 20816, + + 20848, 20880, 20912, 9904, 20944, 20944, 20944, 20976, + 21008, 21040, 21072, 21104, 21136, 21168, 21200, 21232, + 9904, 9904, 9904, 9904, 21264, 21296, 21328, 21360, + 21392, 21424, 21456, 21488, 21520, 21552, 21584, 9904, + 21616, 21648, 21680, 21712, 21744, 21776, 9904, 9904, 21808, 21840, 21872, 21904, 9904, 9904, 9904, 9904, - 21936, 21968, 22000, 22032, 22064, 22096, 8400, 8400, - 22128, 22160, 8400, 8400, 22192, 22224, 8400, 8400, - 22256, 22288, 22320, 22352, 22384, 8400, 22416, 22448, - 22480, 22512, 22544, 22576, 22608, 22640, 8400, 8400, - 22672, 22672, 22704, 8400, 8400, 8400, 8400, 8400, + 21936, 21936, 21936, 21936, 21936, 21936, 21936, 21936, + 21936, 21968, 22000, 22032, 9904, 9904, 9904, 9904, + 22064, 22096, 22128, 22160, 22192, 22224, 8400, 22256, + 22288, 22320, 8400, 8400, 22352, 22384, 22416, 22448, + 22480, 22512, 22544, 22576, 22608, 8400, 22640, 22672, + 22704, 22736, 22768, 22800, 22832, 22864, 8400, 8400, + 22896, 22896, 22928, 8400, 22960, 22992, 23024, 23056, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, - 8400, 8400, 8400, 22736, 8400, 8400, 8400, 8400, + 8400, 8400, 8400, 23088, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, // 0x11000 - 0x110000 - 22768, 23024, 23280, 23536, 23792, 24048, 24304, 24560, - 24816, 24560, 25072, 24560, 24560, 24560, 24560, 24560, - 25328, 25328, 25328, 25584, 25840, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 26096, 26096, 26352, 26608, 26864, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 27120, 27120, 27376, 27632, 24560, 24560, 24560, 27888, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 28144, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 28400, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 28656, 28912, 29168, 29424, 29680, 29936, 30192, 30448, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 30704, 30960, 30960, 30960, 30960, 30960, 31216, 30960, - 31472, 31728, 31984, 32240, 32496, 32752, 33008, 33264, - 33520, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34288, 34544, - 34544, 34544, 34544, 34544, 34544, 34544, 34544, 34544, - 34544, 34544, 34544, 34544, 34544, 34544, 34544, 34800, - 35056, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35568, 35568, 35824, 35312, 35312, 35312, 35312, 36080, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 36080, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 36336, 36592, 36848, 36848, 36848, 36848, 36848, 36848, - 36848, 36848, 36848, 36848, 36848, 36848, 36848, 36848, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37360, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37360, + 23120, 23376, 23632, 23888, 24144, 24400, 24656, 24912, + 25168, 25424, 25680, 25424, 25424, 25424, 25424, 25424, + 25936, 25936, 25936, 26192, 26448, 26704, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 26960, 26960, 27216, 27472, 27728, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 27984, 28240, 28496, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 28752, 28752, 29008, 29264, 25424, 25424, 25424, 29520, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 29776, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 30032, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 30288, 30544, 30800, 31056, 31312, 31568, 31824, 32080, + 32336, 32336, 32592, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 32848, 33104, 33104, 33104, 33104, 33104, 33360, 33104, + 33616, 33872, 34128, 34384, 34640, 34896, 35152, 35408, + 35664, 35920, 25424, 25424, 25424, 25424, 25424, 36176, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36688, 36944, + 36944, 36944, 36944, 36944, 36944, 36944, 36944, 36944, + 36944, 36944, 36944, 36944, 36944, 36944, 36944, 37200, + 37456, 37712, 37712, 37712, 37712, 37712, 37712, 37712, + 37712, 37712, 37712, 37712, 37712, 37712, 37712, 37712, + 37712, 37712, 37712, 37712, 37712, 37712, 37968, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38480, 38480, 38736, 38224, 38224, 38224, 38224, 38992, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38992, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 39248, 39504, 39760, 39760, 39760, 39760, 39760, 39760, + 39760, 39760, 39760, 39760, 39760, 39760, 39760, 39760, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40272, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40272, 0, 0, 0, 0, 0, 0, 0, 0, @@ -964,594 +964,569 @@ static const unsigned short uc_property_trie[] = { 149, 78, 78, 149, 78, 78, 78, 150, 149, 151, 152, 152, 153, 78, 78, 78, 78, 78, 154, 78, 100, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 155, 78, + 78, 78, 78, 78, 78, 155, 156, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 156, 156, 156, 156, 156, 114, 114, - 157, 157, 157, 157, 157, 157, 157, 157, - 157, 158, 158, 159, 159, 159, 159, 159, - - 160, 160, 42, 42, 42, 42, 158, 158, - 161, 158, 158, 158, 161, 158, 158, 158, - 159, 159, 42, 42, 42, 42, 42, 162, - 52, 52, 52, 52, 52, 52, 42, 163, - - 157, 157, 157, 157, 157, 42, 42, 42, - 42, 42, 164, 164, 165, 166, 167, 168, - 168, 168, 168, 168, 168, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 168, 168, - - 169, 169, 169, 169, 169, 170, 169, 169, - 169, 169, 169, 169, 169, 170, 170, 169, - 170, 169, 170, 169, 169, 171, 172, 172, - 172, 172, 171, 173, 172, 172, 172, 172, - - 172, 174, 174, 175, 175, 175, 175, 176, - 176, 172, 172, 172, 172, 175, 175, 172, - 175, 175, 172, 172, 177, 177, 177, 177, - 178, 172, 172, 172, 172, 170, 170, 170, - - 179, 179, 169, 179, 179, 180, 181, 182, - 182, 182, 181, 181, 181, 182, 182, 183, - 184, 184, 184, 185, 185, 185, 185, 184, - 186, 187, 187, 188, 189, 190, 190, 191, - - 192, 192, 193, 194, 194, 194, 194, 194, - 194, 194, 194, 194, 194, 194, 194, 194, - 195, 196, 195, 196, 197, 198, 195, 196, - 199, 199, 200, 201, 201, 201, 202, 203, - - 199, 199, 199, 199, 204, 205, 206, 207, - 208, 208, 208, 199, 209, 199, 210, 210, - 211, 212, 212, 212, 212, 212, 212, 212, - 212, 212, 212, 212, 212, 212, 212, 212, - - 212, 212, 199, 212, 212, 212, 212, 212, - 212, 212, 213, 213, 214, 215, 215, 215, - 216, 217, 217, 217, 217, 217, 217, 217, - 217, 217, 217, 217, 217, 217, 217, 217, - - 217, 217, 218, 217, 217, 217, 217, 217, - 217, 217, 219, 219, 220, 221, 221, 222, - 223, 224, 225, 226, 226, 227, 228, 229, - 230, 231, 232, 233, 232, 233, 232, 233, - - 232, 233, 234, 235, 234, 235, 234, 235, - 234, 235, 234, 235, 234, 235, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 243, 244, 246, 247, 247, 247, - - 248, 249, 250, 249, 250, 250, 250, 249, - 250, 250, 250, 250, 249, 248, 249, 250, - 251, 251, 251, 251, 251, 251, 251, 251, - 251, 252, 251, 251, 251, 251, 251, 251, - - 251, 251, 251, 251, 251, 251, 251, 251, - 251, 251, 251, 251, 251, 251, 251, 251, - 253, 253, 253, 253, 253, 253, 253, 253, - 253, 254, 253, 253, 253, 253, 253, 253, - - 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, - 255, 256, 257, 256, 257, 257, 257, 256, - 257, 257, 257, 257, 256, 255, 256, 257, - - 258, 259, 258, 259, 258, 259, 258, 259, - 258, 259, 258, 259, 258, 259, 258, 259, - 258, 259, 258, 259, 258, 259, 260, 261, - 258, 259, 258, 259, 258, 259, 258, 259, - - 258, 259, 262, 263, 263, 170, 170, 264, - 265, 265, 266, 267, 268, 269, 268, 269, - 258, 259, 258, 259, 258, 259, 258, 259, - 258, 259, 258, 259, 258, 259, 258, 259, - - 258, 259, 258, 259, 258, 259, 258, 259, - 258, 259, 258, 259, 258, 259, 258, 259, - 258, 259, 258, 259, 258, 259, 258, 259, - 258, 259, 258, 259, 258, 259, 258, 259, - - 270, 260, 261, 258, 259, 266, 267, 258, - 259, 266, 267, 258, 259, 266, 267, 271, - 260, 261, 260, 261, 258, 259, 260, 261, - 258, 259, 260, 261, 260, 261, 260, 261, - - 258, 259, 260, 261, 260, 261, 260, 261, - 258, 259, 260, 261, 272, 273, 260, 261, - 260, 261, 260, 261, 260, 261, 274, 275, - 260, 261, 276, 277, 276, 277, 276, 277, - - 266, 267, 266, 267, 266, 267, 266, 267, - 266, 267, 266, 267, 266, 267, 266, 267, - 276, 277, 276, 277, 278, 279, 278, 279, - 278, 279, 278, 279, 278, 279, 278, 279, - - 278, 279, 278, 279, 280, 281, 282, 283, - 284, 285, 284, 285, 284, 285, 284, 285, - 199, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, - - 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 199, - 199, 287, 288, 288, 288, 289, 288, 288, - - 199, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, - - 290, 290, 290, 290, 290, 290, 290, 291, - 199, 292, 293, 199, 199, 294, 294, 295, - 296, 297, 298, 298, 298, 298, 297, 298, - 298, 298, 299, 297, 298, 298, 298, 298, - - 298, 298, 300, 297, 297, 297, 297, 297, - 298, 298, 297, 298, 298, 299, 301, 298, - 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, - - 318, 319, 320, 318, 298, 300, 321, 322, - 296, 296, 296, 296, 296, 296, 296, 296, - 323, 323, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 323, 323, 323, 323, 323, - - 323, 323, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 296, 296, 296, 296, 296, - 323, 323, 323, 324, 325, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - - 326, 326, 326, 326, 327, 328, 329, 329, - 330, 331, 331, 332, 19, 333, 334, 334, - 335, 335, 335, 335, 335, 335, 336, 336, - 337, 338, 339, 340, 341, 342, 343, 344, - - 345, 346, 347, 347, 347, 347, 348, 349, - 350, 349, 350, 350, 350, 350, 350, 349, - 349, 349, 349, 350, 350, 350, 350, 350, + 78, 157, 157, 157, 157, 157, 114, 114, + 158, 158, 158, 158, 158, 158, 158, 158, + 158, 159, 159, 160, 160, 160, 160, 160, + + 161, 161, 42, 42, 42, 42, 159, 159, + 162, 159, 159, 159, 162, 159, 159, 159, + 160, 160, 42, 42, 42, 42, 42, 163, + 52, 52, 52, 52, 52, 52, 42, 164, + + 158, 158, 158, 158, 158, 42, 42, 42, + 42, 42, 165, 165, 166, 167, 168, 169, + 169, 169, 169, 169, 169, 169, 169, 169, + 169, 169, 169, 169, 169, 169, 169, 169, + + 170, 170, 170, 170, 170, 171, 170, 170, + 170, 170, 170, 170, 170, 171, 171, 170, + 171, 170, 171, 170, 170, 172, 173, 173, + 173, 173, 172, 174, 173, 173, 173, 173, + + 173, 175, 175, 176, 176, 176, 176, 177, + 177, 173, 173, 173, 173, 176, 176, 173, + 176, 176, 173, 173, 178, 178, 178, 178, + 179, 173, 173, 173, 173, 171, 171, 171, + + 180, 180, 170, 180, 180, 181, 182, 183, + 183, 183, 182, 182, 182, 183, 183, 184, + 185, 185, 185, 186, 186, 186, 186, 185, + 187, 188, 188, 189, 190, 191, 191, 192, + + 193, 193, 194, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, + 196, 197, 196, 197, 198, 199, 196, 197, + 200, 200, 201, 202, 202, 202, 203, 204, + + 200, 200, 200, 200, 205, 206, 207, 208, + 209, 209, 209, 200, 210, 200, 211, 211, + 212, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 213, 213, 213, 213, 213, + + 213, 213, 200, 213, 213, 213, 213, 213, + 213, 213, 214, 214, 215, 216, 216, 216, + 217, 218, 218, 218, 218, 218, 218, 218, + 218, 218, 218, 218, 218, 218, 218, 218, + + 218, 218, 219, 218, 218, 218, 218, 218, + 218, 218, 220, 220, 221, 222, 222, 223, + 224, 225, 226, 227, 227, 228, 229, 230, + 231, 232, 233, 234, 233, 234, 233, 234, + + 233, 234, 235, 236, 235, 236, 235, 236, + 235, 236, 235, 236, 235, 236, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 244, 245, 247, 248, 248, 248, + + 249, 250, 251, 250, 251, 251, 251, 250, + 251, 251, 251, 251, 250, 249, 250, 251, + 252, 252, 252, 252, 252, 252, 252, 252, + 252, 253, 252, 252, 252, 252, 252, 252, + + 252, 252, 252, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 252, + 254, 254, 254, 254, 254, 254, 254, 254, + 254, 255, 254, 254, 254, 254, 254, 254, + + 254, 254, 254, 254, 254, 254, 254, 254, + 254, 254, 254, 254, 254, 254, 254, 254, + 256, 257, 258, 257, 258, 258, 258, 257, + 258, 258, 258, 258, 257, 256, 257, 258, + + 259, 260, 259, 260, 259, 260, 259, 260, + 259, 260, 259, 260, 259, 260, 259, 260, + 259, 260, 259, 260, 259, 260, 261, 262, + 259, 260, 259, 260, 259, 260, 259, 260, + + 259, 260, 263, 264, 264, 171, 171, 265, + 266, 266, 267, 268, 269, 270, 269, 270, + 259, 260, 259, 260, 259, 260, 259, 260, + 259, 260, 259, 260, 259, 260, 259, 260, + + 259, 260, 259, 260, 259, 260, 259, 260, + 259, 260, 259, 260, 259, 260, 259, 260, + 259, 260, 259, 260, 259, 260, 259, 260, + 259, 260, 259, 260, 259, 260, 259, 260, + + 271, 261, 262, 259, 260, 267, 268, 259, + 260, 267, 268, 259, 260, 267, 268, 272, + 261, 262, 261, 262, 259, 260, 261, 262, + 259, 260, 261, 262, 261, 262, 261, 262, + + 259, 260, 261, 262, 261, 262, 261, 262, + 259, 260, 261, 262, 273, 274, 261, 262, + 261, 262, 261, 262, 261, 262, 275, 276, + 261, 262, 277, 278, 277, 278, 277, 278, + + 267, 268, 267, 268, 267, 268, 267, 268, + 267, 268, 267, 268, 267, 268, 267, 268, + 277, 278, 277, 278, 279, 280, 279, 280, + 279, 280, 279, 280, 279, 280, 279, 280, + + 279, 280, 279, 280, 281, 282, 283, 284, + 285, 286, 285, 286, 285, 286, 285, 286, + 200, 287, 287, 287, 287, 287, 287, 287, + 287, 287, 287, 287, 287, 287, 287, 287, + + 287, 287, 287, 287, 287, 287, 287, 287, + 287, 287, 287, 287, 287, 287, 287, 287, + 287, 287, 287, 287, 287, 287, 287, 200, + 200, 288, 289, 289, 289, 290, 289, 289, + + 200, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, + + 291, 291, 291, 291, 291, 291, 291, 292, + 200, 293, 294, 200, 200, 295, 295, 296, + 297, 298, 299, 299, 299, 299, 298, 299, + 299, 299, 300, 298, 299, 299, 299, 299, + + 299, 299, 301, 298, 298, 298, 298, 298, + 299, 299, 298, 299, 299, 300, 302, 299, + 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, + + 319, 320, 321, 319, 299, 301, 322, 323, + 297, 297, 297, 297, 297, 297, 297, 297, + 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, + + 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 297, 297, 297, 297, 297, + 324, 324, 324, 325, 326, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 327, 327, 327, 327, 328, 329, 330, 330, + 331, 332, 332, 333, 19, 334, 335, 335, + 336, 336, 336, 336, 336, 336, 337, 337, + 338, 339, 340, 341, 342, 343, 344, 345, + + 346, 347, 348, 348, 348, 348, 349, 350, + 351, 350, 351, 351, 351, 351, 351, 350, 350, 350, 350, 351, 351, 351, 351, 351, + 351, 351, 351, 352, 352, 352, 352, 352, - 352, 350, 350, 350, 350, 350, 350, 350, - 349, 350, 350, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 361, 362, 363, 335, - 335, 364, 364, 364, 365, 364, 364, 366, + 353, 351, 351, 351, 351, 351, 351, 351, + 350, 351, 351, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 362, 363, 364, 336, + 336, 365, 365, 365, 366, 365, 365, 367, - 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 381, - 382, 349, 349, 349, 346, 383, 383, 383, - 384, 350, 350, 350, 350, 350, 350, 350, + 368, 369, 370, 371, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 382, + 383, 350, 350, 350, 347, 384, 384, 384, + 385, 351, 351, 351, 351, 351, 351, 351, - 350, 350, 350, 350, 350, 350, 350, 350, - 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 350, 350, 350, 350, 350, 350, - - 350, 350, 350, 350, 350, 350, 350, 350, + 351, 351, 351, 351, 351, 351, 351, 351, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 385, 385, 350, 350, 350, 350, 350, 385, - - 347, 350, 348, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 350, 349, 350, 386, - 350, 350, 349, 347, 387, 349, 388, 388, - 388, 388, 388, 388, 388, 389, 390, 388, - - 388, 388, 388, 391, 388, 392, 392, 388, - 388, 390, 391, 388, 388, 391, 393, 393, - 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 385, 385, 385, 404, 404, 405, - - 406, 406, 406, 407, 407, 407, 407, 407, - 407, 407, 407, 407, 407, 407, 342, 408, - 409, 410, 411, 411, 411, 409, 409, 409, - 409, 409, 411, 411, 411, 411, 409, 411, - - 411, 411, 411, 411, 411, 411, 411, 411, - 409, 411, 409, 411, 409, 412, 412, 413, - 414, 415, 414, 414, 415, 414, 414, 415, - 415, 415, 414, 415, 415, 414, 415, 414, - - 414, 414, 415, 414, 415, 414, 415, 414, - 415, 414, 414, 342, 342, 413, 412, 412, - 416, 416, 416, 416, 416, 416, 416, 416, - 416, 417, 417, 417, 416, 416, 416, 416, - - 416, 416, 416, 416, 416, 416, 416, 416, - 416, 416, 416, 417, 417, 416, 351, 351, - 351, 418, 351, 418, 418, 351, 351, 351, - 418, 418, 351, 351, 351, 351, 351, 351, - - 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, 420, 420, + 350, 350, 351, 351, 351, 351, 351, 351, + + 351, 351, 351, 351, 351, 351, 351, 351, + 351, 351, 351, 351, 351, 351, 351, 351, + 351, 351, 351, 351, 351, 351, 351, 351, + 386, 386, 351, 351, 351, 351, 351, 386, + + 348, 351, 349, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 351, 350, 351, 387, + 351, 351, 350, 348, 388, 350, 389, 389, + 389, 389, 389, 389, 389, 390, 391, 389, + + 389, 389, 389, 392, 389, 393, 393, 389, + 389, 391, 392, 389, 389, 392, 394, 394, + 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 386, 386, 386, 405, 405, 406, + + 407, 407, 407, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 343, 409, + 410, 411, 412, 412, 412, 410, 410, 410, + 410, 410, 412, 412, 412, 412, 410, 412, + + 412, 412, 412, 412, 412, 412, 412, 412, + 410, 412, 410, 412, 410, 413, 413, 414, + 415, 416, 415, 415, 416, 415, 415, 416, + 416, 416, 415, 416, 416, 415, 416, 415, + + 415, 415, 416, 415, 416, 415, 416, 415, + 416, 415, 415, 343, 343, 414, 413, 413, + 417, 417, 417, 417, 417, 417, 417, 417, + 417, 418, 418, 418, 417, 417, 417, 417, + + 417, 417, 417, 417, 417, 417, 417, 417, + 417, 417, 417, 418, 418, 417, 352, 352, + 352, 419, 352, 419, 419, 352, 352, 352, + 419, 419, 352, 352, 352, 352, 352, 352, + + 420, 420, 420, 420, 420, 420, 420, 420, + 420, 420, 420, 420, 420, 420, 420, 420, + 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, - 420, 421, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - - 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 432, 432, 432, 432, 432, - 432, 432, 432, 432, 432, 432, 432, 432, - 432, 432, 432, 432, 432, 432, 432, 432, - - 432, 432, 432, 432, 432, 432, 432, 432, - 432, 432, 432, 433, 433, 433, 433, 433, - 433, 433, 434, 433, 435, 435, 436, 437, - 438, 439, 440, 296, 296, 296, 296, 296, - - 441, 441, 441, 441, 441, 441, 441, 441, - 441, 441, 441, 441, 441, 441, 441, 441, - 441, 441, 441, 441, 441, 441, 442, 442, - 442, 442, 443, 442, 442, 442, 442, 442, - - 442, 442, 442, 442, 443, 442, 442, 442, - 443, 442, 442, 442, 442, 442, 296, 296, - 444, 444, 444, 444, 444, 444, 444, 444, - 444, 444, 444, 444, 444, 444, 444, 296, - - 445, 446, 446, 446, 446, 446, 445, 446, - 446, 445, 446, 446, 446, 446, 446, 445, - 446, 446, 446, 446, 445, 446, 447, 447, - 447, 448, 448, 448, 296, 296, 449, 296, - - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - - 450, 451, 450, 450, 450, 450, 450, 450, - 450, 450, 452, 452, 452, 453, 454, 451, - 451, 454, 454, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - - 342, 342, 342, 342, 455, 455, 456, 455, - 455, 456, 455, 455, 455, 456, 456, 456, - 457, 458, 459, 455, 455, 455, 456, 455, - 455, 456, 456, 455, 455, 455, 455, 460, - - 461, 462, 462, 463, 464, 465, 465, 465, - 465, 465, 465, 465, 465, 465, 465, 465, - 465, 465, 465, 465, 465, 465, 465, 465, - 465, 465, 465, 465, 465, 465, 465, 465, - - 465, 465, 465, 465, 465, 465, 465, 465, - 465, 466, 465, 465, 465, 465, 465, 465, - 465, 466, 465, 465, 466, 465, 465, 465, - 465, 465, 467, 468, 469, 465, 463, 463, - - 463, 462, 462, 462, 462, 462, 462, 462, - 462, 463, 463, 463, 463, 470, 471, 468, - 465, 170, 172, 472, 472, 461, 467, 467, - 473, 473, 473, 473, 473, 473, 473, 473, - - 465, 465, 462, 462, 474, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 488, 488, 488, 488, - 489, 490, 490, 491, 491, 492, 491, 491, - - 493, 494, 495, 495, 199, 496, 496, 496, - 496, 496, 496, 496, 496, 199, 199, 496, - 496, 199, 199, 496, 496, 496, 496, 496, - 496, 496, 496, 496, 496, 496, 496, 496, - - 496, 496, 496, 496, 496, 496, 496, 496, - 496, 199, 496, 496, 496, 496, 496, 496, - 496, 199, 496, 199, 199, 199, 496, 496, - 496, 496, 199, 199, 497, 498, 499, 495, - - 495, 494, 494, 494, 494, 199, 199, 495, - 495, 199, 199, 500, 500, 501, 502, 199, - 199, 199, 199, 199, 199, 199, 199, 499, - 199, 199, 199, 199, 503, 503, 199, 503, - - 496, 496, 494, 494, 199, 199, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, - 496, 496, 514, 514, 515, 515, 515, 515, - 515, 516, 517, 518, 199, 199, 199, 199, - - 199, 519, 520, 521, 199, 522, 522, 522, - 522, 522, 522, 199, 199, 199, 199, 522, - 522, 199, 199, 522, 522, 522, 522, 522, - 522, 522, 522, 522, 522, 522, 522, 522, - - 522, 522, 522, 522, 522, 522, 522, 522, - 522, 199, 522, 522, 522, 522, 522, 522, - 522, 199, 522, 523, 199, 522, 523, 199, - 522, 522, 199, 199, 524, 199, 525, 525, - - 525, 520, 520, 199, 199, 199, 199, 520, - 520, 199, 199, 520, 520, 526, 199, 199, - 199, 527, 199, 199, 199, 199, 199, 199, - 199, 523, 523, 523, 522, 199, 523, 199, - - 199, 199, 199, 199, 199, 199, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, - 520, 520, 522, 522, 522, 527, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 538, 538, 539, 199, 540, 540, 540, - 540, 540, 540, 540, 541, 540, 199, 540, - 540, 540, 199, 540, 540, 540, 540, 540, - 540, 540, 540, 540, 540, 540, 540, 540, - - 540, 540, 540, 540, 540, 540, 540, 540, - 540, 199, 540, 540, 540, 540, 540, 540, - 540, 199, 540, 540, 199, 540, 540, 540, - 540, 540, 199, 199, 542, 540, 539, 539, - - 539, 538, 538, 538, 538, 538, 199, 538, - 538, 539, 199, 539, 539, 543, 199, 199, - 540, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 540, 541, 544, 544, 199, 199, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 557, 558, 558, 199, 559, 559, 559, - 559, 559, 559, 559, 559, 199, 199, 559, - 559, 199, 199, 559, 559, 559, 559, 559, - 559, 559, 559, 559, 559, 559, 559, 559, - - 559, 559, 559, 559, 559, 559, 559, 559, - 559, 199, 559, 559, 559, 559, 559, 559, - 559, 199, 559, 559, 199, 560, 559, 559, - 559, 559, 199, 199, 561, 559, 562, 557, - - 558, 557, 557, 557, 563, 199, 199, 558, - 564, 199, 199, 564, 564, 565, 199, 199, - 199, 199, 199, 199, 199, 199, 566, 562, - 199, 199, 199, 199, 567, 567, 199, 559, - - 559, 559, 563, 563, 199, 199, 568, 569, - 570, 571, 572, 573, 574, 575, 576, 577, - 578, 560, 579, 579, 579, 579, 579, 579, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 580, 581, 199, 581, 581, 581, - 581, 581, 581, 199, 199, 199, 581, 581, - 581, 199, 581, 581, 582, 581, 199, 199, - 199, 581, 581, 199, 581, 199, 581, 581, - - 199, 199, 199, 581, 581, 199, 199, 199, - 581, 581, 581, 199, 199, 199, 581, 581, - 581, 581, 581, 581, 581, 581, 583, 581, - 581, 581, 199, 199, 199, 199, 584, 585, - - 580, 585, 585, 199, 199, 199, 585, 585, - 585, 199, 586, 586, 586, 587, 199, 199, - 588, 199, 199, 199, 199, 199, 199, 584, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 589, 590, - 591, 592, 593, 594, 595, 596, 597, 598, - 599, 599, 599, 600, 600, 600, 600, 600, - 600, 601, 600, 199, 199, 199, 199, 199, - - 602, 603, 603, 603, 199, 604, 604, 604, - 604, 604, 604, 604, 604, 199, 604, 604, - 604, 199, 604, 604, 604, 604, 604, 604, - 604, 604, 604, 604, 604, 604, 604, 604, - - 604, 604, 604, 604, 604, 604, 604, 604, - 604, 199, 604, 604, 604, 604, 604, 604, - 604, 604, 604, 604, 605, 604, 604, 604, - 604, 604, 199, 199, 199, 606, 607, 607, - - 607, 603, 603, 603, 603, 199, 607, 607, - 608, 199, 607, 607, 607, 609, 199, 199, - 199, 199, 199, 199, 199, 610, 611, 199, - 606, 606, 199, 199, 199, 199, 199, 199, - - 604, 604, 612, 612, 199, 199, 613, 614, - 615, 616, 617, 618, 619, 620, 621, 622, - 199, 199, 199, 199, 199, 199, 199, 199, - 623, 623, 623, 623, 623, 623, 623, 624, - - 199, 625, 626, 626, 199, 627, 627, 627, - 627, 627, 627, 627, 627, 199, 627, 627, - 627, 199, 627, 627, 627, 627, 627, 627, - 627, 627, 627, 627, 627, 627, 627, 627, - - 627, 627, 627, 627, 627, 627, 627, 627, - 627, 199, 627, 627, 627, 627, 627, 627, - 627, 627, 627, 627, 199, 627, 627, 627, - 627, 627, 199, 199, 628, 629, 626, 630, - - 631, 626, 632, 626, 626, 199, 630, 631, - 631, 199, 631, 631, 633, 634, 199, 199, - 199, 199, 199, 199, 199, 632, 632, 199, - 199, 199, 199, 199, 199, 199, 627, 199, - - 627, 627, 635, 635, 199, 199, 636, 637, - 638, 639, 640, 641, 642, 643, 644, 645, - 199, 646, 646, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 647, 648, 648, 199, 649, 649, 649, - 649, 649, 649, 649, 649, 199, 649, 649, - 649, 199, 649, 649, 649, 649, 649, 649, - 649, 649, 649, 649, 649, 649, 649, 649, - - 649, 649, 649, 649, 649, 649, 649, 649, - 649, 650, 649, 649, 649, 649, 649, 649, - 649, 649, 649, 649, 649, 649, 649, 649, - 649, 649, 650, 199, 199, 651, 652, 648, - - 648, 653, 653, 653, 654, 199, 648, 648, - 648, 199, 655, 655, 655, 656, 650, 199, - 199, 199, 199, 199, 199, 199, 199, 652, - 199, 199, 199, 199, 199, 199, 199, 199, - - 649, 649, 654, 654, 199, 199, 657, 658, - 659, 660, 661, 662, 663, 664, 665, 666, - 667, 667, 667, 667, 667, 667, 199, 199, - 199, 668, 651, 651, 651, 651, 651, 651, - - 199, 199, 669, 669, 199, 670, 670, 670, - 670, 670, 670, 670, 670, 670, 670, 670, - 670, 670, 670, 670, 670, 670, 670, 199, - 199, 199, 670, 670, 670, 670, 670, 670, - - 670, 670, 670, 670, 670, 670, 670, 670, - 670, 670, 670, 670, 670, 670, 670, 670, - 670, 670, 199, 670, 670, 670, 670, 670, - 670, 670, 670, 670, 199, 670, 199, 199, - - 670, 670, 670, 670, 670, 670, 670, 199, - 199, 199, 671, 199, 199, 199, 199, 672, - 669, 669, 673, 673, 673, 199, 673, 199, - 669, 669, 674, 669, 674, 674, 674, 672, - - 199, 199, 199, 199, 199, 199, 675, 676, - 677, 678, 679, 680, 681, 682, 683, 684, - 199, 199, 669, 669, 685, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 686, 686, 686, 686, 686, 686, 686, - 686, 686, 686, 686, 686, 686, 686, 686, - 686, 686, 686, 686, 686, 686, 686, 686, - 686, 686, 686, 686, 686, 686, 686, 686, - - 686, 686, 686, 686, 686, 686, 686, 686, - 686, 686, 686, 686, 686, 686, 686, 686, - 686, 687, 686, 688, 687, 687, 687, 687, - 689, 689, 690, 199, 199, 199, 199, 12, - - 686, 686, 686, 686, 686, 686, 691, 687, - 692, 692, 692, 692, 687, 687, 687, 693, - 694, 695, 696, 697, 698, 699, 700, 701, - 702, 703, 704, 704, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 705, 705, 199, 705, 199, 199, 705, - 705, 199, 705, 199, 199, 705, 199, 199, - 199, 199, 199, 199, 705, 705, 705, 705, - 199, 705, 705, 705, 705, 705, 705, 705, - - 199, 705, 705, 705, 199, 705, 199, 705, - 199, 199, 705, 705, 199, 705, 705, 705, - 705, 706, 705, 707, 706, 706, 706, 706, - 708, 708, 199, 706, 706, 705, 199, 199, - - 705, 705, 705, 705, 705, 199, 709, 199, - 710, 710, 710, 710, 706, 706, 199, 199, - 711, 712, 713, 714, 715, 716, 717, 718, - 719, 720, 199, 199, 721, 721, 722, 722, - - 723, 724, 724, 724, 725, 726, 725, 725, - 727, 725, 725, 728, 729, 730, 730, 730, - 730, 730, 727, 731, 730, 731, 731, 731, - 732, 732, 731, 731, 731, 731, 731, 731, - - 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 743, 743, 743, 743, 743, - 743, 743, 743, 743, 744, 732, 731, 732, - 731, 745, 746, 747, 746, 747, 748, 748, - - 723, 723, 723, 749, 723, 723, 723, 723, - 199, 723, 723, 723, 723, 749, 723, 723, - 723, 723, 749, 723, 723, 723, 723, 749, - 723, 723, 723, 723, 749, 723, 723, 723, - - 723, 723, 723, 723, 723, 723, 723, 723, - 723, 749, 750, 751, 751, 199, 199, 199, - 199, 752, 753, 754, 755, 754, 754, 756, - 754, 756, 753, 753, 753, 753, 757, 758, - - 753, 754, 759, 759, 760, 728, 759, 759, - 723, 723, 723, 723, 761, 762, 762, 762, - 757, 757, 757, 754, 757, 757, 763, 757, - 199, 757, 757, 757, 757, 754, 757, 757, - - 757, 757, 754, 757, 757, 757, 757, 754, - 757, 757, 757, 757, 754, 757, 763, 763, - 763, 757, 757, 757, 757, 757, 757, 757, - 763, 754, 763, 763, 763, 199, 764, 764, - - 765, 765, 765, 765, 765, 765, 766, 765, - 765, 765, 765, 765, 765, 199, 767, 765, - 768, 768, 769, 770, 771, 772, 772, 772, - 772, 773, 773, 199, 199, 199, 199, 199, - - 774, 774, 774, 774, 774, 774, 774, 774, - 774, 774, 774, 774, 774, 774, 774, 774, - 774, 774, 774, 774, 774, 774, 774, 774, - 774, 774, 774, 774, 774, 774, 774, 774, - - 774, 774, 775, 774, 774, 774, 776, 774, - 775, 774, 774, 777, 778, 779, 780, 779, - 779, 781, 779, 782, 782, 782, 779, 783, - 778, 784, 785, 786, 786, 782, 782, 775, - - 787, 788, 789, 790, 791, 792, 793, 794, - 795, 796, 797, 797, 798, 798, 798, 798, - 774, 774, 774, 774, 774, 774, 781, 781, - 779, 779, 775, 775, 775, 775, 782, 782, - - 782, 775, 777, 777, 777, 775, 775, 777, - 777, 777, 777, 777, 777, 777, 775, 775, - 775, 782, 782, 782, 782, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, - - 775, 775, 782, 777, 786, 782, 782, 777, - 777, 777, 777, 777, 777, 799, 775, 777, - 800, 801, 802, 803, 804, 805, 806, 807, - 808, 809, 810, 810, 810, 811, 812, 812, - - 813, 813, 813, 813, 813, 813, 813, 813, - 813, 813, 813, 813, 813, 813, 813, 813, - 813, 813, 813, 813, 813, 813, 813, 813, - 813, 813, 813, 813, 813, 813, 813, 813, - - 813, 813, 813, 813, 813, 813, 199, 814, - 199, 199, 199, 199, 199, 814, 199, 199, - 815, 815, 815, 815, 815, 815, 815, 815, - 815, 815, 815, 815, 815, 815, 815, 815, - - 815, 815, 815, 815, 815, 815, 815, 815, - 815, 815, 815, 815, 815, 815, 815, 815, - 815, 815, 815, 815, 815, 815, 815, 816, - 816, 817, 817, 818, 819, 820, 820, 820, - 821, 821, 821, 821, 821, 821, 821, 821, - 821, 821, 821, 821, 821, 821, 821, 821, + 420, 420, 420, 420, 420, 420, 421, 421, + 421, 421, 421, 421, 421, 421, 421, 421, + 421, 422, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + + 423, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 433, 433, 433, 433, 433, 433, + 433, 433, 433, 433, 433, 433, 433, 433, + 433, 433, 433, 433, 433, 433, 433, 433, + + 433, 433, 433, 433, 433, 433, 433, 433, + 433, 433, 433, 434, 434, 434, 434, 434, + 434, 434, 435, 434, 436, 436, 437, 438, + 439, 440, 441, 297, 297, 297, 297, 297, + + 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 443, 443, + 443, 443, 444, 443, 443, 443, 443, 443, + + 443, 443, 443, 443, 444, 443, 443, 443, + 444, 443, 443, 443, 443, 443, 297, 297, + 445, 445, 445, 445, 445, 445, 445, 445, + 445, 445, 445, 445, 445, 445, 445, 297, + + 446, 447, 447, 447, 447, 447, 446, 446, + 447, 446, 447, 447, 447, 447, 447, 447, + 447, 447, 447, 447, 446, 447, 448, 448, + 448, 449, 449, 449, 297, 297, 450, 297, + + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 451, 452, 451, 451, 451, 451, 451, 451, + 451, 451, 453, 453, 453, 454, 455, 452, + 452, 455, 455, 456, 456, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + + 343, 343, 343, 457, 458, 458, 459, 458, + 458, 459, 458, 458, 458, 459, 459, 459, + 460, 461, 462, 458, 458, 458, 459, 458, + 458, 459, 459, 458, 458, 458, 458, 463, + + 464, 465, 465, 466, 467, 468, 468, 468, + 468, 468, 468, 468, 468, 468, 468, 468, + 468, 468, 468, 468, 468, 468, 468, 468, + 468, 468, 468, 468, 468, 468, 468, 468, + + 468, 468, 468, 468, 468, 468, 468, 468, + 468, 469, 468, 468, 468, 468, 468, 468, + 468, 469, 468, 468, 469, 468, 468, 468, + 468, 468, 470, 471, 472, 468, 466, 466, + + 466, 465, 465, 465, 465, 465, 465, 465, + 465, 466, 466, 466, 466, 473, 474, 471, + 468, 171, 173, 475, 475, 464, 470, 470, + 476, 476, 476, 476, 476, 476, 476, 476, + + 468, 468, 465, 465, 477, 477, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 490, 491, 491, 491, 491, 491, + 492, 493, 493, 494, 494, 495, 494, 494, + + 496, 497, 498, 498, 200, 499, 499, 499, + 499, 499, 499, 499, 499, 200, 200, 499, + 499, 200, 200, 499, 499, 499, 499, 499, + 499, 499, 499, 499, 499, 499, 499, 499, + + 499, 499, 499, 499, 499, 499, 499, 499, + 499, 200, 499, 499, 499, 499, 499, 499, + 499, 200, 499, 200, 200, 200, 499, 499, + 499, 499, 200, 200, 500, 501, 502, 498, + + 498, 497, 497, 497, 497, 200, 200, 498, + 498, 200, 200, 503, 503, 504, 505, 200, + 200, 200, 200, 200, 200, 200, 200, 502, + 200, 200, 200, 200, 506, 506, 200, 506, + + 499, 499, 497, 497, 200, 200, 507, 508, + 509, 510, 511, 512, 513, 514, 515, 516, + 499, 499, 517, 517, 518, 518, 518, 518, + 518, 519, 520, 521, 200, 200, 200, 200, + + 200, 522, 523, 524, 200, 525, 525, 525, + 525, 525, 525, 200, 200, 200, 200, 525, + 525, 200, 200, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, + + 525, 525, 525, 525, 525, 525, 525, 525, + 525, 200, 525, 525, 525, 525, 525, 525, + 525, 200, 525, 526, 200, 525, 526, 200, + 525, 525, 200, 200, 527, 200, 528, 528, + + 528, 523, 523, 200, 200, 200, 200, 523, + 523, 200, 200, 523, 523, 529, 200, 200, + 200, 530, 200, 200, 200, 200, 200, 200, + 200, 526, 526, 526, 525, 200, 526, 200, + + 200, 200, 200, 200, 200, 200, 531, 532, + 533, 534, 535, 536, 537, 538, 539, 540, + 523, 523, 525, 525, 525, 530, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 541, 541, 542, 200, 543, 543, 543, + 543, 543, 543, 543, 544, 543, 200, 543, + 543, 543, 200, 543, 543, 543, 543, 543, + 543, 543, 543, 543, 543, 543, 543, 543, + + 543, 543, 543, 543, 543, 543, 543, 543, + 543, 200, 543, 543, 543, 543, 543, 543, + 543, 200, 543, 543, 200, 543, 543, 543, + 543, 543, 200, 200, 545, 543, 542, 542, + + 542, 541, 541, 541, 541, 541, 200, 541, + 541, 542, 200, 542, 542, 546, 200, 200, + 543, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 543, 544, 547, 547, 200, 200, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, + 558, 559, 200, 200, 200, 200, 200, 200, + 200, 560, 200, 200, 200, 200, 200, 200, + + 200, 561, 562, 562, 200, 563, 563, 563, + 563, 563, 563, 563, 563, 200, 200, 563, + 563, 200, 200, 563, 563, 563, 563, 563, + 563, 563, 563, 563, 563, 563, 563, 563, + + 563, 563, 563, 563, 563, 563, 563, 563, + 563, 200, 563, 563, 563, 563, 563, 563, + 563, 200, 563, 563, 200, 564, 563, 563, + 563, 563, 200, 200, 565, 563, 566, 561, + + 562, 561, 561, 561, 567, 200, 200, 562, + 568, 200, 200, 568, 568, 569, 200, 200, + 200, 200, 200, 200, 200, 200, 570, 566, + 200, 200, 200, 200, 571, 571, 200, 563, + + 563, 563, 567, 567, 200, 200, 572, 573, + 574, 575, 576, 577, 578, 579, 580, 581, + 582, 564, 583, 583, 583, 583, 583, 583, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 584, 585, 200, 585, 585, 585, + 585, 585, 585, 200, 200, 200, 585, 585, + 585, 200, 585, 585, 586, 585, 200, 200, + 200, 585, 585, 200, 585, 200, 585, 585, + + 200, 200, 200, 585, 585, 200, 200, 200, + 585, 585, 585, 200, 200, 200, 585, 585, + 585, 585, 585, 585, 585, 585, 587, 585, + 585, 585, 200, 200, 200, 200, 588, 589, + + 584, 589, 589, 200, 200, 200, 589, 589, + 589, 200, 590, 590, 590, 591, 200, 200, + 592, 200, 200, 200, 200, 200, 200, 588, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 593, 594, + 595, 596, 597, 598, 599, 600, 601, 602, + 603, 603, 603, 604, 604, 604, 604, 604, + 604, 605, 604, 200, 200, 200, 200, 200, + + 606, 607, 607, 607, 200, 608, 608, 608, + 608, 608, 608, 608, 608, 200, 608, 608, + 608, 200, 608, 608, 608, 608, 608, 608, + 608, 608, 608, 608, 608, 608, 608, 608, + + 608, 608, 608, 608, 608, 608, 608, 608, + 608, 200, 608, 608, 608, 608, 608, 608, + 608, 608, 608, 608, 609, 608, 608, 608, + 608, 608, 200, 200, 200, 610, 611, 611, + + 611, 607, 607, 607, 607, 200, 611, 611, + 612, 200, 611, 611, 611, 613, 200, 200, + 200, 200, 200, 200, 200, 614, 615, 200, + 610, 610, 616, 200, 200, 200, 200, 200, + + 608, 608, 617, 617, 200, 200, 618, 619, + 620, 621, 622, 623, 624, 625, 626, 627, + 200, 200, 200, 200, 200, 200, 200, 200, + 628, 628, 628, 628, 628, 628, 628, 629, + + 200, 630, 631, 631, 200, 632, 632, 632, + 632, 632, 632, 632, 632, 200, 632, 632, + 632, 200, 632, 632, 632, 632, 632, 632, + 632, 632, 632, 632, 632, 632, 632, 632, + + 632, 632, 632, 632, 632, 632, 632, 632, + 632, 200, 632, 632, 632, 632, 632, 632, + 632, 632, 632, 632, 200, 632, 632, 632, + 632, 632, 200, 200, 633, 634, 631, 635, + + 636, 631, 637, 631, 631, 200, 635, 636, + 636, 200, 636, 636, 638, 639, 200, 200, + 200, 200, 200, 200, 200, 637, 637, 200, + 200, 200, 200, 200, 200, 200, 632, 200, + + 632, 632, 640, 640, 200, 200, 641, 642, + 643, 644, 645, 646, 647, 648, 649, 650, + 200, 651, 651, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 652, 653, 653, 200, 654, 654, 654, + 654, 654, 654, 654, 654, 200, 654, 654, + 654, 200, 654, 654, 654, 654, 654, 654, + 654, 654, 654, 654, 654, 654, 654, 654, + + 654, 654, 654, 654, 654, 654, 654, 654, + 654, 655, 654, 654, 654, 654, 654, 654, + 654, 654, 654, 654, 654, 654, 654, 654, + 654, 654, 655, 200, 200, 656, 657, 653, + + 653, 658, 658, 658, 659, 200, 653, 653, + 653, 200, 660, 660, 660, 661, 655, 200, + 200, 200, 200, 200, 200, 200, 200, 657, + 200, 200, 200, 200, 200, 200, 200, 662, + + 654, 654, 659, 659, 200, 200, 663, 664, + 665, 666, 667, 668, 669, 670, 671, 672, + 673, 673, 673, 673, 673, 673, 200, 200, + 200, 674, 656, 656, 656, 656, 656, 656, + + 200, 200, 675, 675, 200, 676, 676, 676, + 676, 676, 676, 676, 676, 676, 676, 676, + 676, 676, 676, 676, 676, 676, 676, 200, + 200, 200, 676, 676, 676, 676, 676, 676, + + 676, 676, 676, 676, 676, 676, 676, 676, + 676, 676, 676, 676, 676, 676, 676, 676, + 676, 676, 200, 676, 676, 676, 676, 676, + 676, 676, 676, 676, 200, 676, 200, 200, + + 676, 676, 676, 676, 676, 676, 676, 200, + 200, 200, 677, 200, 200, 200, 200, 678, + 675, 675, 679, 679, 679, 200, 679, 200, + 675, 675, 680, 675, 680, 680, 680, 678, + + 200, 200, 200, 200, 200, 200, 681, 682, + 683, 684, 685, 686, 687, 688, 689, 690, + 200, 200, 675, 675, 691, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 692, 692, 692, 692, 692, 692, 692, + 692, 692, 692, 692, 692, 692, 692, 692, + 692, 692, 692, 692, 692, 692, 692, 692, + 692, 692, 692, 692, 692, 692, 692, 692, + + 692, 692, 692, 692, 692, 692, 692, 692, + 692, 692, 692, 692, 692, 692, 692, 692, + 692, 693, 692, 694, 693, 693, 693, 693, + 695, 695, 696, 200, 200, 200, 200, 12, + + 692, 692, 692, 692, 692, 692, 697, 693, + 698, 698, 698, 698, 693, 693, 693, 699, + 700, 701, 702, 703, 704, 705, 706, 707, + 708, 709, 710, 710, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 711, 711, 200, 711, 200, 200, 711, + 711, 200, 711, 200, 200, 711, 200, 200, + 200, 200, 200, 200, 711, 711, 711, 711, + 200, 711, 711, 711, 711, 711, 711, 711, + + 200, 711, 711, 711, 200, 711, 200, 711, + 200, 200, 711, 711, 200, 711, 711, 711, + 711, 712, 711, 713, 712, 712, 712, 712, + 714, 714, 200, 712, 712, 711, 200, 200, + + 711, 711, 711, 711, 711, 200, 715, 200, + 716, 716, 716, 716, 712, 712, 200, 200, + 717, 718, 719, 720, 721, 722, 723, 724, + 725, 726, 200, 200, 727, 727, 728, 728, + + 729, 730, 730, 730, 731, 732, 731, 731, + 733, 731, 731, 734, 735, 736, 736, 736, + 736, 736, 733, 737, 736, 737, 737, 737, + 738, 738, 737, 737, 737, 737, 737, 737, + + 739, 740, 741, 742, 743, 744, 745, 746, + 747, 748, 749, 749, 749, 749, 749, 749, + 749, 749, 749, 749, 750, 738, 737, 738, + 737, 751, 752, 753, 752, 753, 754, 754, + + 729, 729, 729, 755, 729, 729, 729, 729, + 200, 729, 729, 729, 729, 755, 729, 729, + 729, 729, 755, 729, 729, 729, 729, 755, + 729, 729, 729, 729, 755, 729, 729, 729, + + 729, 729, 729, 729, 729, 729, 729, 729, + 729, 755, 756, 757, 757, 200, 200, 200, + 200, 758, 759, 760, 761, 760, 760, 762, + 760, 762, 759, 759, 759, 759, 763, 764, + + 759, 760, 765, 765, 766, 734, 765, 765, + 729, 729, 729, 729, 767, 768, 768, 768, + 763, 763, 763, 760, 763, 763, 769, 763, + 200, 763, 763, 763, 763, 760, 763, 763, + + 763, 763, 760, 763, 763, 763, 763, 760, + 763, 763, 763, 763, 760, 763, 769, 769, + 769, 763, 763, 763, 763, 763, 763, 763, + 769, 760, 769, 769, 769, 200, 770, 770, + + 771, 771, 771, 771, 771, 771, 772, 771, + 771, 771, 771, 771, 771, 200, 773, 771, + 774, 774, 775, 776, 777, 778, 778, 778, + 778, 779, 779, 200, 200, 200, 200, 200, + + 780, 780, 780, 780, 780, 780, 780, 780, + 780, 780, 780, 780, 780, 780, 780, 780, + 780, 780, 780, 780, 780, 780, 780, 780, + 780, 780, 780, 780, 780, 780, 780, 780, + + 780, 780, 781, 780, 780, 780, 782, 780, + 781, 780, 780, 783, 784, 785, 786, 785, + 785, 787, 785, 788, 788, 788, 785, 789, + 784, 790, 791, 792, 792, 788, 788, 781, + + 793, 794, 795, 796, 797, 798, 799, 800, + 801, 802, 803, 803, 804, 804, 804, 804, + 780, 780, 780, 780, 780, 780, 787, 787, + 785, 785, 781, 781, 781, 781, 788, 788, + + 788, 781, 783, 783, 783, 781, 781, 783, + 783, 783, 783, 783, 783, 783, 781, 781, + 781, 788, 788, 788, 788, 781, 781, 781, + 781, 781, 781, 781, 781, 781, 781, 781, + + 781, 781, 788, 783, 792, 788, 788, 783, + 783, 783, 783, 783, 783, 805, 781, 783, + 806, 807, 808, 809, 810, 811, 812, 813, + 814, 815, 816, 816, 816, 817, 818, 818, + + 819, 819, 819, 819, 819, 819, 819, 819, + 819, 819, 819, 819, 819, 819, 819, 819, + 819, 819, 819, 819, 819, 819, 819, 819, + 819, 819, 819, 819, 819, 819, 819, 819, + + 819, 819, 819, 819, 819, 819, 200, 820, + 200, 200, 200, 200, 200, 820, 200, 200, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, - 821, 821, 821, 821, 821, 821, 821, 821, - 821, 821, 822, 822, 822, 822, 822, 821, - - 823, 824, 824, 824, 824, 824, 824, 824, - 824, 824, 824, 824, 824, 824, 824, 824, - 824, 824, 824, 824, 824, 824, 823, 823, - 823, 823, 823, 823, 823, 823, 823, 823, + 821, 821, 821, 821, 821, 821, 821, 822, + 822, 823, 823, 824, 825, 826, 826, 826, - 823, 823, 823, 823, 823, 823, 823, 823, - 823, 823, 823, 823, 823, 823, 823, 823, - 823, 823, 823, 823, 823, 823, 823, 823, - 823, 823, 823, 823, 823, 823, 823, 823, - - 823, 823, 823, 825, 825, 825, 825, 825, - 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, - - 826, 826, 826, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, @@ -1559,202 +1534,202 @@ static const unsigned short uc_property_trie[] = { 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, - 827, 827, 828, 828, 828, 828, 828, 828, - - 829, 829, 829, 829, 829, 829, 829, 830, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, + 827, 827, 828, 828, 828, 828, 828, 827, + 829, 830, 830, 830, 830, 830, 830, 830, + 830, 830, 830, 830, 830, 830, 830, 830, + 830, 830, 830, 830, 830, 830, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, - - 829, 829, 829, 829, 829, 829, 829, 830, - 829, 199, 829, 829, 829, 829, 199, 199, - 829, 829, 829, 829, 829, 829, 829, 199, - 829, 199, 829, 829, 829, 829, 199, 199, - 829, 829, 829, 829, 829, 829, 829, 830, - 829, 199, 829, 829, 829, 829, 199, 199, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 830, - 829, 199, 829, 829, 829, 829, 199, 199, - 829, 829, 829, 829, 829, 829, 829, 199, - - 829, 199, 829, 829, 829, 829, 199, 199, - 829, 829, 829, 829, 829, 829, 829, 830, - 829, 829, 829, 829, 829, 829, 829, 199, 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 830, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, + 829, 829, 829, 831, 831, 831, 831, 831, + 832, 832, 832, 832, 832, 832, 832, 832, + 832, 832, 832, 832, 832, 832, 832, 832, + 832, 832, 832, 832, 832, 832, 832, 832, + + 832, 832, 832, 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, 833, 833, 833, + 833, 833, 833, 833, 833, 833, 833, 833, + 833, 833, 833, 833, 833, 833, 833, 833, + 833, 833, 834, 834, 834, 834, 834, 834, + + 835, 835, 835, 835, 835, 835, 835, 836, + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, + + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, + + 835, 835, 835, 835, 835, 835, 835, 836, + 835, 200, 835, 835, 835, 835, 200, 200, + 835, 835, 835, 835, 835, 835, 835, 200, + 835, 200, 835, 835, 835, 835, 200, 200, + + 835, 835, 835, 835, 835, 835, 835, 836, + 835, 200, 835, 835, 835, 835, 200, 200, + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, + + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 836, + 835, 200, 835, 835, 835, 835, 200, 200, + 835, 835, 835, 835, 835, 835, 835, 200, + + 835, 200, 835, 835, 835, 835, 200, 200, + 835, 835, 835, 835, 835, 835, 835, 836, + 835, 835, 835, 835, 835, 835, 835, 200, + 835, 835, 835, 835, 835, 835, 835, 835, + + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 836, + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, + + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 836, + 835, 200, 835, 835, 835, 835, 200, 200, + 835, 835, 835, 835, 835, 835, 835, 836, + + 835, 835, 835, 835, 835, 835, 835, 836, + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 200, 200, 837, 837, 838, + + 839, 840, 841, 842, 842, 842, 842, 841, + 841, 843, 844, 845, 846, 847, 848, 849, + 850, 851, 852, 852, 852, 852, 852, 852, + 852, 852, 852, 852, 852, 200, 200, 200, + + 836, 836, 836, 836, 836, 836, 836, 836, + 836, 836, 836, 836, 836, 836, 836, 836, + 853, 853, 853, 853, 853, 853, 853, 853, + 853, 853, 200, 200, 200, 200, 200, 200, + + 854, 855, 856, 857, 858, 859, 860, 861, + 862, 863, 864, 865, 866, 867, 868, 869, + 870, 871, 872, 873, 874, 875, 876, 877, + 878, 879, 880, 881, 882, 883, 884, 885, + + 886, 887, 888, 889, 890, 891, 892, 893, + 894, 895, 896, 897, 898, 899, 900, 901, + 902, 903, 904, 905, 906, 907, 908, 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, 934, 934, 934, 934, 935, 200, 200, + 936, 936, 936, 936, 936, 936, 200, 200, + + 937, 938, 938, 938, 938, 938, 938, 938, + 938, 938, 938, 938, 938, 938, 938, 938, + 938, 938, 938, 938, 938, 938, 938, 938, + 938, 938, 938, 938, 938, 938, 938, 938, + + 938, 938, 938, 938, 938, 938, 938, 938, + 938, 938, 938, 938, 938, 938, 938, 938, + 938, 938, 938, 938, 938, 938, 938, 938, + 938, 938, 938, 938, 938, 938, 938, 938, + + 938, 938, 938, 938, 938, 938, 938, 938, + 938, 938, 938, 938, 938, 939, 940, 938, + 938, 938, 938, 938, 938, 938, 938, 941, + 941, 941, 941, 941, 941, 941, 941, 941, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 830, - 829, 199, 829, 829, 829, 829, 199, 199, - 829, 829, 829, 829, 829, 829, 829, 830, + 942, 943, 943, 943, 943, 943, 943, 943, + 943, 943, 943, 943, 943, 943, 943, 943, + 943, 943, 943, 943, 943, 943, 943, 943, + 943, 943, 943, 944, 945, 200, 200, 200, - 829, 829, 829, 829, 829, 829, 829, 830, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 199, 199, 831, 831, 832, + 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 946, - 833, 834, 835, 836, 836, 836, 836, 835, - 835, 837, 838, 839, 840, 841, 842, 843, - 844, 845, 846, 846, 846, 846, 846, 846, - 846, 846, 846, 846, 846, 199, 199, 199, + 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 947, 947, 947, 948, 948, + 948, 949, 949, 949, 949, 949, 949, 949, + 949, 200, 200, 200, 200, 200, 200, 200, - 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, - 847, 847, 847, 847, 847, 847, 847, 847, - 847, 847, 199, 199, 199, 199, 199, 199, - - 848, 848, 848, 848, 848, 848, 848, 848, - 848, 848, 848, 848, 848, 848, 848, 848, - 848, 848, 848, 848, 848, 848, 848, 848, - 848, 848, 848, 848, 848, 848, 848, 848, - - 848, 848, 848, 848, 848, 848, 848, 848, - 848, 848, 848, 848, 848, 848, 848, 848, - 848, 848, 848, 848, 848, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 849, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 850, 850, 850, - - 850, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 850, 850, 850, - - 850, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 851, 852, 850, - 850, 850, 850, 850, 850, 850, 850, 853, - 853, 853, 853, 853, 853, 853, 853, 853, + 950, 950, 950, 950, 950, 950, 950, 950, + 950, 950, 950, 950, 950, 200, 950, 950, + 950, 950, 951, 951, 952, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, - 854, 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, 857, 199, 199, 199, - - 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, - - 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 859, 859, 859, 860, 860, - 860, 861, 861, 861, 861, 861, 861, 861, - 861, 199, 199, 199, 199, 199, 199, 199, - - 862, 862, 862, 862, 862, 862, 862, 862, - 862, 862, 862, 862, 862, 199, 862, 862, - 862, 862, 863, 863, 864, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 865, 865, 865, 865, 865, 865, 865, 865, - 865, 865, 865, 865, 865, 865, 865, 865, - 865, 865, 866, 866, 867, 868, 868, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 869, 869, 869, 869, 869, 869, 869, 869, - 869, 869, 869, 869, 869, 869, 869, 869, - 869, 869, 870, 870, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 199, 871, 871, - 871, 199, 872, 872, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 873, 873, 873, 873, 873, 873, 873, 873, - 873, 873, 873, 873, 873, 873, 873, 873, - 873, 873, 873, 873, 873, 873, 873, 873, - 873, 873, 873, 873, 873, 873, 873, 873, - - 873, 873, 873, 873, 873, 873, 873, 873, - 873, 873, 873, 873, 873, 873, 873, 873, - 873, 873, 873, 873, 874, 874, 875, 874, - 874, 874, 874, 874, 874, 874, 875, 875, - - 875, 875, 875, 875, 875, 875, 874, 875, - 875, 874, 874, 874, 874, 874, 874, 874, - 874, 874, 876, 874, 877, 877, 878, 879, - 877, 880, 877, 881, 873, 882, 199, 199, - - 883, 884, 885, 886, 887, 888, 889, 890, - 891, 892, 199, 199, 199, 199, 199, 199, - 893, 893, 893, 893, 893, 893, 893, 893, - 893, 893, 199, 199, 199, 199, 199, 199, - - 894, 894, 895, 896, 897, 898, 899, 900, - 901, 902, 903, 904, 904, 904, 905, 199, - 906, 907, 908, 909, 910, 911, 912, 913, - 914, 915, 199, 199, 199, 199, 199, 199, - - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - - 916, 916, 916, 917, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - 199, 199, 199, 199, 199, 199, 199, 199, - - 918, 918, 918, 918, 918, 918, 918, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 919, 920, 199, 199, 199, 199, 199, - 853, 853, 853, 853, 853, 853, 853, 853, - 853, 853, 853, 853, 853, 853, 853, 853, + 953, 953, 953, 953, 953, 953, 953, 953, + 953, 953, 953, 953, 953, 953, 953, 953, + 953, 953, 954, 954, 955, 956, 956, 200, + 200, 200, 200, 200, 200, 200, 200, 200, - 853, 853, 853, 853, 853, 853, 853, 853, - 853, 853, 853, 853, 853, 853, 853, 853, - 853, 853, 853, 853, 853, 853, 853, 853, - 853, 853, 853, 853, 853, 853, 853, 853, + 957, 957, 957, 957, 957, 957, 957, 957, + 957, 957, 957, 957, 957, 957, 957, 957, + 957, 957, 958, 958, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, - 853, 853, 853, 853, 853, 853, 853, 853, - 853, 853, 853, 853, 853, 853, 853, 853, - 853, 853, 853, 853, 853, 853, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, + 959, 959, 959, 959, 959, 959, 959, 959, + 959, 959, 959, 959, 959, 200, 959, 959, + 959, 200, 960, 960, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, - 921, 921, 921, 921, 921, 921, 921, 921, - 921, 921, 921, 921, 921, 921, 921, 921, - 921, 921, 921, 921, 921, 921, 921, 921, - 921, 921, 921, 921, 921, 922, 922, 199, + 961, 961, 961, 961, 961, 961, 961, 961, + 961, 961, 961, 961, 961, 961, 961, 961, + 961, 961, 961, 961, 961, 961, 961, 961, + 961, 961, 961, 961, 961, 961, 961, 961, - 923, 923, 923, 924, 924, 924, 924, 923, - 923, 924, 924, 924, 199, 199, 199, 199, - 924, 924, 923, 924, 924, 924, 924, 924, - 924, 925, 926, 927, 199, 199, 199, 199, + 961, 961, 961, 961, 961, 961, 961, 961, + 961, 961, 961, 961, 961, 961, 961, 961, + 961, 961, 961, 961, 962, 962, 963, 962, + 962, 962, 962, 962, 962, 962, 963, 963, - 928, 199, 199, 199, 929, 929, 930, 931, - 932, 933, 934, 935, 936, 937, 938, 939, - 940, 940, 940, 940, 940, 940, 940, 940, - 940, 940, 940, 940, 940, 940, 940, 940, + 963, 963, 963, 963, 963, 963, 962, 963, + 963, 962, 962, 962, 962, 962, 962, 962, + 962, 962, 964, 962, 965, 965, 966, 967, + 965, 968, 965, 969, 961, 970, 200, 200, - 940, 940, 940, 940, 940, 940, 940, 940, - 940, 940, 940, 940, 940, 940, 199, 199, - 940, 940, 940, 940, 940, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, + 971, 972, 973, 974, 975, 976, 977, 978, + 979, 980, 200, 200, 200, 200, 200, 200, + 981, 981, 981, 981, 981, 981, 981, 981, + 981, 981, 200, 200, 200, 200, 200, 200, + + 982, 982, 983, 984, 985, 986, 987, 988, + 989, 990, 991, 992, 992, 992, 993, 200, + 994, 995, 996, 997, 998, 999, 1000, 1001, + 1002, 1003, 200, 200, 200, 200, 200, 200, + + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + + 1004, 1004, 1004, 1005, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1007, 1008, 200, 200, 200, 200, 200, + 941, 941, 941, 941, 941, 941, 941, 941, + 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, @@ -1762,159 +1737,189 @@ static const unsigned short uc_property_trie[] = { 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, - 941, 941, 942, 942, 199, 199, 199, 199, - 943, 943, 943, 943, 943, 944, 944, 944, - 943, 943, 944, 943, 943, 943, 943, 943, - - 943, 941, 941, 941, 941, 941, 941, 941, - 943, 943, 199, 199, 199, 199, 199, 199, - 945, 946, 947, 948, 949, 950, 951, 952, - 953, 954, 955, 199, 199, 199, 956, 956, - - 957, 957, 957, 957, 957, 957, 957, 957, - 957, 957, 957, 957, 957, 957, 957, 957, - 957, 957, 957, 957, 957, 957, 957, 957, - 957, 957, 957, 957, 957, 957, 957, 957, - - 958, 958, 958, 958, 958, 958, 958, 958, - 958, 958, 958, 958, 958, 958, 958, 958, - 958, 958, 958, 958, 958, 958, 958, 959, - 960, 961, 961, 962, 199, 199, 963, 963, - - 964, 964, 964, 964, 964, 964, 964, 964, - 964, 964, 964, 964, 964, 964, 964, 964, - 964, 964, 964, 964, 964, 964, 964, 964, - 964, 964, 964, 964, 964, 964, 964, 964, - - 964, 964, 964, 964, 964, 964, 964, 964, - 964, 964, 964, 964, 964, 964, 964, 964, - 964, 964, 964, 964, 964, 965, 966, 965, - 966, 966, 966, 966, 966, 966, 966, 199, + 941, 941, 941, 941, 941, 941, 941, 941, + 941, 941, 941, 941, 941, 941, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, - 967, 968, 966, 968, 968, 966, 966, 966, - 966, 966, 966, 966, 966, 965, 965, 965, - 965, 965, 965, 966, 966, 969, 969, 969, - 969, 969, 969, 969, 969, 199, 199, 970, + 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, + 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, + 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, + 1009, 1009, 1009, 1009, 1009, 1010, 1010, 200, - 971, 972, 973, 974, 975, 976, 977, 978, - 979, 980, 199, 199, 199, 199, 199, 199, - 971, 972, 973, 974, 975, 976, 977, 978, - 979, 980, 199, 199, 199, 199, 199, 199, - - 981, 981, 981, 981, 981, 981, 981, 982, - 983, 983, 983, 983, 981, 981, 199, 199, - 984, 984, 984, 984, 984, 985, 985, 985, - 985, 985, 985, 984, 984, 985, 986, 199, - - 987, 987, 987, 987, 988, 989, 990, 989, - 990, 989, 990, 989, 990, 989, 990, 989, - 989, 989, 990, 989, 989, 989, 989, 989, - 989, 989, 989, 989, 989, 989, 989, 989, - - 989, 989, 989, 989, 989, 989, 989, 989, - 989, 989, 989, 989, 989, 989, 989, 989, - 989, 989, 989, 989, 991, 992, 987, 987, - 987, 987, 987, 993, 987, 993, 988, 988, - - 993, 993, 987, 993, 994, 989, 989, 989, - 989, 989, 989, 989, 199, 199, 199, 199, - 995, 996, 997, 998, 999, 1000, 1001, 1002, - 1003, 1004, 1005, 1005, 1006, 1007, 1005, 1005, - - 1007, 1008, 1008, 1008, 1008, 1008, 1008, 1008, - 1008, 1008, 1008, 1009, 1010, 1009, 1009, 1009, - 1009, 1009, 1009, 1009, 1008, 1008, 1008, 1008, - 1008, 1008, 1008, 1008, 1008, 199, 199, 199, - - 1011, 1011, 1012, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, - - 1013, 1012, 1011, 1011, 1011, 1011, 1012, 1012, - 1011, 1011, 1014, 1015, 1016, 1016, 1013, 1013, - 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, - 1025, 1026, 1027, 1027, 1027, 1027, 1027, 1027, + 1011, 1011, 1011, 1012, 1012, 1012, 1012, 1011, + 1011, 1012, 1012, 1012, 200, 200, 200, 200, + 1012, 1012, 1011, 1012, 1012, 1012, 1012, 1012, + 1012, 1013, 1014, 1015, 200, 200, 200, 200, + 1016, 200, 200, 200, 1017, 1017, 1018, 1019, + 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, - 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 200, 200, + 1028, 1028, 1028, 1028, 1028, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1030, 1030, 200, 200, 200, 200, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 200, 200, 200, 200, 200, 200, + 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, + 1039, 1040, 1041, 200, 200, 200, 1042, 1042, + + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + + 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, + 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, + 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1045, + 1046, 1047, 1047, 1048, 200, 200, 1049, 1049, + + 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, + 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, + 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, + 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, + + 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, + 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, + 1050, 1050, 1050, 1050, 1050, 1051, 1052, 1051, + 1052, 1052, 1052, 1052, 1052, 1052, 1052, 200, + + 1053, 1054, 1052, 1054, 1054, 1052, 1052, 1052, + 1052, 1052, 1052, 1052, 1052, 1051, 1051, 1051, + 1051, 1051, 1051, 1052, 1052, 1055, 1055, 1055, + 1055, 1055, 1055, 1055, 1055, 200, 200, 1056, + + 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, + 1065, 1066, 200, 200, 200, 200, 200, 200, + 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, + 1065, 1066, 200, 200, 200, 200, 200, 200, + + 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1068, + 1069, 1069, 1069, 1069, 1067, 1067, 200, 200, + 1070, 1070, 1070, 1070, 1070, 1071, 1071, 1071, + 1071, 1071, 1071, 1070, 1070, 1071, 1072, 200, + + 1073, 1073, 1073, 1073, 1074, 1075, 1076, 1075, + 1076, 1075, 1076, 1075, 1076, 1075, 1076, 1075, + 1075, 1075, 1076, 1075, 1075, 1075, 1075, 1075, + 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, - 1028, 1028, 1028, 1028, 1028, 1028, 1029, 1030, - 1031, 1031, 1030, 1030, 1030, 1031, 1030, 1031, - 1031, 1031, 1032, 1032, 199, 199, 199, 199, - 199, 199, 199, 199, 1033, 1033, 1033, 1033, - - 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, - 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, - 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, - 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, - - 1034, 1034, 1034, 1034, 1035, 1035, 1035, 1035, - 1035, 1035, 1035, 1035, 1036, 1036, 1036, 1036, - 1036, 1036, 1036, 1036, 1035, 1035, 1036, 1037, - 199, 199, 199, 1038, 1038, 1039, 1039, 1039, - - 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, - 1048, 1049, 199, 199, 199, 1034, 1034, 1034, - 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, - 1058, 1059, 1060, 1060, 1060, 1060, 1060, 1060, - - 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, - 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, - 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, - 1061, 1061, 1061, 1061, 1061, 1061, 1062, 1062, - - 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, - 199, 199, 199, 199, 199, 199, 199, 199, - 1064, 1064, 1064, 1065, 1066, 1067, 1067, 1067, - 1067, 1067, 1064, 1064, 1067, 1067, 1067, 1067, - - 1064, 1068, 1066, 1066, 1066, 1066, 1066, 1066, - 1066, 1069, 1069, 1069, 1069, 1067, 1069, 1069, - 1069, 1069, 1068, 1070, 1071, 1072, 1072, 199, - 984, 984, 199, 199, 199, 199, 199, 199, + 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, + 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, + 1075, 1075, 1075, 1075, 1077, 1078, 1073, 1073, + 1073, 1073, 1073, 1079, 1073, 1079, 1074, 1074, + + 1079, 1079, 1073, 1079, 1080, 1075, 1075, 1075, + 1075, 1075, 1075, 1075, 200, 200, 200, 200, + 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, + 1089, 1090, 1091, 1091, 1092, 1093, 1091, 1091, + + 1093, 1094, 1094, 1094, 1094, 1094, 1094, 1094, + 1094, 1094, 1094, 1095, 1096, 1095, 1095, 1095, + 1095, 1095, 1095, 1095, 1094, 1094, 1094, 1094, + 1094, 1094, 1094, 1094, 1094, 200, 200, 200, + + 1097, 1097, 1098, 1099, 1099, 1099, 1099, 1099, + 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, + 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, + 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, + + 1099, 1098, 1097, 1097, 1097, 1097, 1098, 1098, + 1097, 1097, 1100, 1101, 1102, 1102, 1099, 1099, + 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, + 1111, 1112, 1113, 1113, 1113, 1113, 1113, 1113, + + 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, + 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, + 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, + 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, + + 1114, 1114, 1114, 1114, 1114, 1114, 1115, 1116, + 1117, 1117, 1116, 1116, 1116, 1117, 1116, 1117, + 1117, 1117, 1118, 1118, 200, 200, 200, 200, + 200, 200, 200, 200, 1119, 1119, 1119, 1119, + + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + + 1120, 1120, 1120, 1120, 1121, 1121, 1121, 1121, + 1121, 1121, 1121, 1121, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1121, 1121, 1122, 1123, + 200, 200, 200, 1124, 1124, 1125, 1125, 1125, + + 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, + 1134, 1135, 200, 200, 200, 1120, 1120, 1120, + 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, + 1144, 1145, 1146, 1146, 1146, 1146, 1146, 1146, + + 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, + 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, + 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, + 1147, 1147, 1147, 1147, 1147, 1147, 1148, 1148, + + 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, + 200, 200, 200, 200, 200, 200, 200, 200, + 1150, 1150, 1150, 1151, 1152, 1153, 1153, 1153, + 1153, 1153, 1150, 1150, 1153, 1153, 1153, 1153, + + 1150, 1154, 1152, 1152, 1152, 1152, 1152, 1152, + 1152, 1155, 1155, 1155, 1155, 1153, 1155, 1155, + 1155, 1155, 1154, 1156, 1157, 1158, 1158, 200, + 1070, 1070, 200, 200, 200, 200, 200, 200, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 1073, 1073, - 1073, 1073, 1073, 1074, 1075, 1075, 1075, 1076, - 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, - 1075, 1075, 1075, 1076, 1075, 1075, 1075, 1075, + 114, 114, 114, 114, 114, 114, 1159, 1159, + 1159, 1159, 1159, 1160, 1161, 1161, 1161, 1162, + 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, + 1161, 1161, 1161, 1162, 1161, 1161, 1161, 1161, - 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, - 1075, 1075, 1075, 1075, 1075, 1075, 1076, 1075, - 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, - 1075, 1075, 1075, 1075, 1075, 1077, 1077, 1077, + 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, + 1161, 1161, 1161, 1161, 1161, 1161, 1162, 1161, + 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, + 1161, 1161, 1161, 1161, 1161, 1163, 1163, 1163, - 1077, 1077, 1075, 1075, 1075, 1075, 1077, 1077, - 1077, 1077, 1077, 114, 115, 115, 115, 115, + 1163, 1163, 1161, 1161, 1161, 1161, 1163, 1163, + 1163, 1163, 1163, 114, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 1078, 1079, 115, 115, 115, 1080, 115, 115, + 1164, 1165, 115, 115, 115, 1166, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 1081, 1081, 1081, 1081, 1081, + 115, 115, 115, 1167, 1167, 1167, 1167, 1167, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1082, + 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, + 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, + 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, + 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1168, - 188, 188, 187, 188, 1083, 1083, 1083, 1083, - 1083, 1083, 1084, 1085, 1085, 1086, 1087, 1088, - 1089, 1085, 1085, 1085, 1085, 1085, 1085, 1085, - 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, + 189, 189, 188, 189, 1169, 1169, 1169, 1169, + 1169, 1169, 1170, 1171, 1171, 1172, 1173, 1174, + 1175, 1171, 1171, 1171, 1171, 1171, 1171, 1171, + 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1085, 1085, 1085, 1085, 1085, 1085, 1085, 984, - 984, 984, 984, 984, 984, 984, 984, 984, - 984, 984, 984, 984, 984, 984, 199, 199, - 199, 199, 199, 199, 1090, 1067, 1083, 1084, + 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1070, + 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, + 1070, 1070, 1070, 1070, 1070, 1070, 200, 200, + 200, 200, 200, 200, 1176, 1153, 1169, 1170, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, @@ -1923,258 +1928,258 @@ static const unsigned short uc_property_trie[] = { 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, - 70, 71, 70, 71, 70, 71, 1091, 1092, - 1093, 1094, 1095, 1096, 1097, 1097, 1098, 1097, + 70, 71, 70, 71, 70, 71, 1177, 1178, + 1179, 1180, 1181, 1182, 1183, 1183, 1184, 1183, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, - 70, 71, 1099, 1100, 1099, 1100, 1099, 1100, - - 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, - 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, - 1101, 1101, 1101, 1101, 1101, 1101, 199, 199, - 1102, 1102, 1102, 1102, 1102, 1102, 199, 199, - - 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, - 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, - 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, - 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, - - 1101, 1101, 1101, 1101, 1101, 1101, 199, 199, - 1102, 1102, 1102, 1102, 1102, 1102, 199, 199, - 1103, 1101, 1104, 1101, 1105, 1101, 1106, 1101, - 199, 1102, 199, 1102, 199, 1102, 199, 1102, - - 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, - 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, - 1107, 1108, 1109, 1110, 1109, 1110, 1111, 1112, - 1113, 1114, 1115, 1116, 1117, 1118, 199, 199, - - 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, - 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, - 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, - 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, - - 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, - 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, - 1101, 1101, 1167, 1168, 1169, 199, 1170, 1171, - 1102, 1102, 1172, 1173, 1174, 204, 1175, 204, - - 204, 1176, 1177, 1178, 1179, 199, 1180, 1181, - 1182, 1183, 1182, 1183, 1184, 1176, 1176, 1176, - 1101, 1101, 1185, 1186, 199, 199, 1187, 1188, - 1102, 1102, 1189, 1190, 199, 1176, 1176, 1176, - - 1101, 1101, 1191, 1192, 1193, 1194, 1195, 1196, - 1102, 1102, 1197, 1198, 1199, 1176, 1200, 1200, - 199, 199, 1201, 1202, 1203, 199, 1204, 1205, - 1206, 1207, 1208, 1209, 1210, 1211, 204, 199, - - 1212, 1212, 1213, 1213, 1213, 1213, 1213, 1214, - 1213, 1213, 1213, 1215, 1216, 1217, 1218, 1219, - 1220, 1221, 1220, 1222, 1223, 1224, 14, 1225, - 1226, 1227, 1228, 1229, 1229, 1230, 1228, 1229, - - 14, 14, 14, 14, 1231, 1232, 1232, 1233, - 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, - 13, 13, 13, 1242, 1242, 1243, 1244, 1244, - 14, 1245, 1246, 14, 1247, 1248, 1225, 43, - - 43, 14, 14, 14, 1249, 16, 1250, 1251, - 1252, 1252, 1253, 1253, 1253, 1253, 1254, 1254, - 1254, 1254, 1255, 1256, 1257, 1258, 1259, 1260, - 1259, 1259, 1259, 1259, 1258, 1259, 1259, 1261, - - 1262, 1263, 1263, 1263, 1264, 1265, 1266, 1267, - 1268, 1269, 1270, 1270, 1270, 1270, 1270, 1270, - 1271, 1272, 199, 199, 1273, 1274, 1275, 1276, - 1277, 1278, 1279, 1279, 1280, 1281, 1282, 157, - - 1271, 63, 58, 59, 1273, 1274, 1275, 1276, - 1277, 1278, 1279, 1279, 1280, 1281, 1282, 199, - 1081, 1081, 1081, 1081, 1081, 1283, 1283, 1283, - 1283, 1283, 1283, 1283, 1283, 199, 199, 199, + 70, 71, 1185, 1186, 1185, 1186, 1185, 1186, + + 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, + 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, + 1187, 1187, 1187, 1187, 1187, 1187, 200, 200, + 1188, 1188, 1188, 1188, 1188, 1188, 200, 200, + + 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, + 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, + 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, + 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, + + 1187, 1187, 1187, 1187, 1187, 1187, 200, 200, + 1188, 1188, 1188, 1188, 1188, 1188, 200, 200, + 1189, 1187, 1190, 1187, 1191, 1187, 1192, 1187, + 200, 1188, 200, 1188, 200, 1188, 200, 1188, + + 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, + 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, + 1193, 1194, 1195, 1196, 1195, 1196, 1197, 1198, + 1199, 1200, 1201, 1202, 1203, 1204, 200, 200, + + 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, + 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, + 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, + 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, + + 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, + 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, + 1187, 1187, 1253, 1254, 1255, 200, 1256, 1257, + 1188, 1188, 1258, 1259, 1260, 205, 1261, 205, + + 205, 1262, 1263, 1264, 1265, 200, 1266, 1267, + 1268, 1269, 1268, 1269, 1270, 1262, 1262, 1262, + 1187, 1187, 1271, 1272, 200, 200, 1273, 1274, + 1188, 1188, 1275, 1276, 200, 1262, 1262, 1262, + + 1187, 1187, 1277, 1278, 1279, 1280, 1281, 1282, + 1188, 1188, 1283, 1284, 1285, 1262, 1286, 1286, + 200, 200, 1287, 1288, 1289, 200, 1290, 1291, + 1292, 1293, 1294, 1295, 1296, 1297, 205, 200, + + 1298, 1298, 1299, 1299, 1299, 1299, 1299, 1300, + 1299, 1299, 1299, 1301, 1302, 1303, 1304, 1305, + 1306, 1307, 1306, 1308, 1309, 1310, 14, 1311, + 1312, 1313, 1314, 1315, 1315, 1316, 1314, 1315, + + 14, 14, 14, 14, 1317, 1318, 1318, 1319, + 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, + 13, 13, 13, 1328, 1328, 1329, 1330, 1330, + 14, 1331, 1332, 14, 1333, 1334, 1311, 43, + + 43, 14, 14, 14, 1335, 16, 1336, 1337, + 1338, 1338, 1339, 1339, 1339, 1339, 1340, 1340, + 1340, 1340, 1341, 1342, 1343, 1344, 1345, 1346, + 1345, 1345, 1345, 1345, 1344, 1345, 1345, 1347, + + 1348, 1349, 1349, 1349, 1350, 1351, 1352, 1353, + 1354, 1355, 1356, 1356, 1356, 1356, 1356, 1356, + 1357, 1358, 200, 200, 1359, 1360, 1361, 1362, + 1363, 1364, 1365, 1365, 1366, 1367, 1368, 158, + + 1357, 63, 58, 59, 1359, 1360, 1361, 1362, + 1363, 1364, 1365, 1365, 1366, 1367, 1368, 200, + 1167, 1167, 1167, 1167, 1167, 1369, 1369, 1369, + 1369, 1369, 1369, 1369, 1369, 200, 200, 200, 12, 12, 12, 12, 12, 12, 12, 50, - 1284, 12, 12, 1285, 1286, 1287, 1287, 1287, - 1288, 1288, 1289, 1289, 1289, 1289, 1290, 1291, - 1291, 1292, 1293, 1294, 1295, 1295, 1296, 1296, - - 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, - 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, - 170, 170, 177, 177, 170, 170, 170, 170, - 177, 177, 177, 170, 170, 1297, 1297, 1297, - - 1297, 170, 1298, 1298, 1299, 1300, 1300, 194, - 1301, 194, 1300, 1302, 1084, 1084, 1084, 1084, - 1085, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1303, 1303, 1304, 1305, 51, 1303, 1303, 1304, - 51, 1305, 1306, 1304, 1304, 1304, 1306, 1306, - 1304, 1304, 1304, 1306, 51, 1304, 1307, 51, - 36, 1304, 1304, 1304, 1304, 1304, 51, 51, - - 1303, 1303, 1303, 51, 1304, 51, 1308, 51, - 1304, 51, 1309, 1310, 1304, 1304, 1311, 1306, - 1304, 1304, 1312, 1304, 1306, 1313, 1313, 1313, - 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1319, - - 1320, 1255, 1255, 1255, 1255, 1319, 1318, 1318, - 1318, 1318, 1321, 1255, 1322, 1323, 1324, 1325, - 1326, 1326, 1326, 65, 65, 65, 65, 65, + 1370, 12, 12, 1371, 1372, 1373, 1373, 1373, + 1374, 1374, 1375, 1375, 1375, 1375, 1376, 1377, + 1377, 1378, 1379, 1380, 1381, 1381, 1382, 1383, + + 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, + 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, + 171, 171, 178, 178, 171, 171, 171, 171, + 178, 178, 178, 171, 171, 1384, 1384, 1384, + + 1384, 171, 1385, 1385, 1386, 1387, 1387, 195, + 1388, 195, 1387, 1389, 1170, 1170, 1170, 1170, + 1171, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1390, 1390, 1391, 1392, 51, 1390, 1390, 1391, + 51, 1392, 1393, 1391, 1391, 1391, 1393, 1393, + 1391, 1391, 1391, 1393, 51, 1391, 1394, 51, + 36, 1391, 1391, 1391, 1391, 1391, 51, 51, + + 1390, 1390, 1390, 51, 1391, 51, 1395, 51, + 1391, 51, 1396, 1397, 1391, 1391, 1398, 1393, + 1391, 1391, 1399, 1391, 1393, 1400, 1400, 1400, + 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1406, + + 1407, 1341, 1341, 1341, 1341, 1406, 1405, 1405, + 1405, 1405, 1408, 1341, 1409, 1410, 1411, 1412, + 1413, 1413, 1413, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, - 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, - 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, - 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, + 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, + 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, - 1329, 1329, 1329, 111, 123, 1330, 1330, 1330, - 1330, 1326, 199, 199, 199, 199, 199, 199, + 1416, 1416, 1416, 111, 123, 1417, 1417, 1417, + 1417, 1413, 1418, 1418, 200, 200, 200, 200, 36, 36, 36, 36, 36, 51, 51, 51, - 51, 51, 1331, 1331, 51, 51, 51, 51, + 51, 51, 1419, 1419, 51, 51, 51, 51, 36, 51, 51, 36, 51, 51, 36, 51, - 51, 51, 51, 51, 51, 51, 1331, 51, + 51, 51, 51, 51, 51, 51, 1419, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 1332, 1331, 1331, + 51, 51, 51, 51, 51, 1420, 1419, 1419, 51, 51, 36, 51, 36, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 1315, 1315, 1315, 1315, 1315, - 1315, 1315, 1315, 1315, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, + 51, 51, 51, 1402, 1402, 1402, 1402, 1402, + 1402, 1402, 1402, 1402, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, - 36, 36, 36, 36, 1331, 36, 36, 36, - 1333, 1334, 1333, 1335, 1336, 1335, 36, 36, - 36, 36, 18, 57, 36, 1337, 36, 36, + 36, 36, 36, 36, 1419, 36, 36, 36, + 1421, 1422, 1421, 1423, 1424, 1423, 36, 36, + 36, 36, 18, 57, 36, 1425, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 1331, 36, 1331, 36, - 36, 36, 36, 36, 1280, 1280, 36, 1280, - 1280, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 1338, 1339, 36, 36, + 36, 36, 36, 36, 1419, 36, 1419, 36, + 36, 36, 36, 36, 1366, 1366, 36, 1366, + 1366, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 1426, 1427, 36, 36, - 36, 1331, 36, 1340, 1331, 36, 36, 1331, - 36, 1331, 36, 36, 36, 36, 36, 36, - 36, 36, 1338, 1339, 1338, 1339, 36, 36, + 36, 1419, 36, 1428, 1419, 36, 36, 1419, + 36, 1419, 36, 36, 36, 36, 36, 36, + 36, 36, 1426, 1427, 1426, 1427, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 1331, 36, 1331, 36, 1338, 1339, 1338, 1339, - 1338, 1339, 1338, 1339, 36, 1331, 1341, 1342, - 1341, 1342, 1338, 1339, 1341, 1342, 1338, 1339, - 1341, 1342, 1338, 1339, 1338, 1339, 1338, 1339, + 1419, 36, 1419, 36, 1426, 1427, 1426, 1427, + 1426, 1427, 1426, 1427, 36, 1419, 1429, 1430, + 1429, 1430, 1426, 1427, 1429, 1430, 1426, 1427, + 1429, 1430, 1426, 1427, 1426, 1427, 1426, 1427, - 1341, 1342, 1338, 1339, 1341, 1342, 1338, 1339, - 1341, 1342, 1338, 1339, 36, 36, 36, 1338, - 1339, 1338, 1339, 36, 36, 36, 36, 36, - 1343, 36, 36, 36, 36, 36, 36, 36, + 1429, 1430, 1426, 1427, 1429, 1430, 1426, 1427, + 1429, 1430, 1426, 1427, 36, 36, 36, 1426, + 1427, 1426, 1427, 36, 36, 36, 36, 36, + 1431, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 1338, 1339, 36, 36, 1344, 36, - 1345, 1346, 36, 1346, 1331, 1331, 1331, 1331, - 1338, 1339, 1338, 1339, 1338, 1339, 1338, 1339, + 36, 36, 1426, 1427, 36, 36, 1432, 36, + 1433, 1434, 36, 1434, 1419, 1419, 1419, 1419, + 1426, 1427, 1426, 1427, 1426, 1427, 1426, 1427, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 1338, 1339, 1338, 1339, 1347, 36, 36, - 1338, 1339, 36, 36, 36, 36, 1338, 1339, - 1338, 1339, 1338, 1339, 1338, 1339, 1338, 1339, + 36, 1426, 1427, 1426, 1427, 1435, 36, 36, + 1426, 1427, 36, 36, 36, 36, 1426, 1427, + 1426, 1427, 1426, 1427, 1426, 1427, 1426, 1427, - 1341, 1342, 1341, 1342, 1338, 1339, 1338, 1339, - 1338, 1339, 1341, 1342, 1341, 1342, 36, 36, - 1338, 1339, 1348, 1348, 1348, 1255, 1349, 1349, - 1255, 1255, 1350, 1350, 1350, 1351, 1351, 1255, + 1429, 1430, 1429, 1430, 1426, 1427, 1426, 1427, + 1426, 1427, 1429, 1430, 1429, 1430, 36, 1436, + 1426, 1427, 1437, 1437, 1437, 1341, 1438, 1438, + 1341, 1341, 1439, 1439, 1439, 1440, 1440, 1341, - 51, 1315, 51, 51, 51, 51, 51, 51, - 16, 1250, 16, 1250, 51, 51, 51, 51, + 51, 1402, 51, 51, 51, 51, 51, 51, + 16, 1336, 16, 1336, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 1352, 1352, 51, 51, 51, 51, + 51, 51, 1441, 1441, 51, 51, 51, 51, 36, 36, 51, 51, 51, 51, 51, 51, - 51, 1353, 1354, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 1355, 1355, - 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, - - 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, - 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, - 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, - 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, - - 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, - 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, - 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, - 1355, 1355, 1355, 1315, 1255, 1315, 1315, 1315, - - 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, - 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, - 1315, 1315, 1315, 1315, 1315, 1356, 1315, 1315, - 1315, 1315, 1315, 1255, 1255, 1255, 1255, 1255, - - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1357, - 1357, 1322, 1322, 1322, 1322, 1322, 1322, 1322, - 1322, 1322, 1322, 1322, 1358, 1358, 1358, 1358, - - 1358, 1358, 1323, 1323, 1323, 1323, 1323, 1323, - 1359, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1361, 1361, 1361, 1361, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 199, 199, 199, 199, 199, + 51, 1442, 1443, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 1444, 1444, + 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, + + 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, + 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, + 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, + 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, + + 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, + 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, + 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, + 1444, 1444, 1444, 1402, 1341, 1402, 1402, 1402, + + 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, + 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, + 1402, 1402, 1402, 1402, 1402, 1445, 1402, 1402, + 1402, 1402, 1402, 1341, 1341, 1341, 1341, 1341, + + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1408, 1408, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, + + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1446, + 1446, 1409, 1409, 1409, 1409, 1409, 1409, 1409, + 1409, 1409, 1409, 1409, 1447, 1447, 1447, 1447, + + 1447, 1447, 1410, 1410, 1410, 1410, 1410, 1410, + 1448, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1450, 1450, 1450, 1450, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 200, 200, 200, 200, 200, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 1315, 1315, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, + 51, 51, 51, 51, 51, 1402, 1402, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, + 51, 51, 51, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, - 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, - 1371, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 1363, 1364, 1365, 1366, - 1367, 1368, 1369, 1370, 1371, 65, 65, 65, + 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, + 1460, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 1452, 1453, 1454, 1455, + 1456, 1457, 1458, 1459, 1460, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 63, 58, 59, 1273, 1274, 1275, 1276, 1277, - 1278, 1372, 1372, 1372, 1372, 1372, 1372, 1372, - 1372, 1372, 1372, 1372, 1373, 1373, 1373, 1373, + 63, 58, 59, 1359, 1360, 1361, 1362, 1363, + 1364, 1461, 1461, 1461, 1461, 1461, 1461, 1461, + 1461, 1461, 1461, 1461, 1462, 1462, 1462, 1462, - 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, - 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, - 1373, 1373, 1373, 1373, 1373, 1373, 1374, 1374, - 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, + 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, + 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, + 1462, 1462, 1462, 1462, 1462, 1462, 1463, 1463, + 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, - 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, - 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, - 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, - 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, + 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, + 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, + 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, + 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, - 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, - 1375, 1375, 1376, 1377, 1377, 1377, 1377, 1377, - 1377, 1377, 1377, 1377, 1377, 1378, 1379, 1380, - 1381, 1382, 1383, 1384, 1385, 1386, 1377, 1387, + 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, + 1464, 1464, 1465, 1466, 1466, 1466, 1466, 1466, + 1466, 1466, 1466, 1466, 1466, 1467, 1468, 1469, + 1470, 1471, 1472, 1473, 1474, 1475, 1466, 1476, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 51, 51, 51, 51, 51, 51, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, @@ -2188,3172 +2193,3552 @@ static const unsigned short uc_property_trie[] = { 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, + 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, - 1352, 1352, 1352, 1352, 51, 51, 51, 51, + 1441, 1441, 1441, 1441, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 1388, 1388, 1321, 1321, - 1389, 1315, 1352, 1352, 1352, 1352, 1352, 1352, + 51, 51, 51, 51, 1477, 1477, 1408, 1408, + 1478, 1402, 1441, 1441, 1441, 1441, 1441, 1441, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 1352, 1352, 1352, 51, 51, 51, 51, + 51, 1441, 1441, 1441, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 1352, 51, 51, 51, 51, 51, 51, 36, - 1315, 1315, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1322, 1389, - - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1322, 1322, 1322, 1322, 1322, 1322, - 1322, 1322, 1322, 1322, 1322, 1390, 1359, 1359, - - 1357, 1357, 1322, 1322, 1322, 1322, 1322, 1322, - 1322, 1322, 1322, 1322, 1391, 1322, 1322, 1322, - 1322, 1322, 1323, 1390, 1390, 1390, 1390, 1390, - 1390, 1390, 1390, 1390, 1390, 1392, 1392, 1392, - - 1393, 1393, 1393, 1393, 1392, 1392, 1392, 1392, - 1392, 1359, 1359, 1359, 1359, 1392, 1360, 1392, - 1392, 1392, 1359, 1392, 1392, 1359, 1359, 1359, - 1392, 1392, 1359, 1359, 1392, 1359, 1359, 1392, - - 1392, 1392, 1360, 1359, 1360, 1360, 1360, 1360, - 1359, 1359, 1392, 1359, 1359, 1359, 1359, 1359, - 1359, 1392, 1392, 1392, 1392, 1392, 1359, 1392, - 1392, 1392, 1392, 1359, 1359, 1392, 1392, 1392, - - 1394, 1352, 1352, 1352, 1352, 1360, 51, 51, - 1352, 1352, 1361, 1361, 1352, 1352, 51, 51, + 1441, 51, 51, 51, 51, 51, 51, 36, + 1402, 1402, 1408, 1408, 1408, 1408, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1409, 1478, + + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, + 1408, 1408, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1409, 1409, 1409, 1409, 1409, 1409, + 1409, 1409, 1409, 1409, 1409, 1479, 1448, 1448, + + 1446, 1446, 1409, 1409, 1409, 1409, 1409, 1409, + 1409, 1409, 1409, 1409, 1480, 1409, 1409, 1409, + 1409, 1409, 1410, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1481, 1481, 1481, + + 1482, 1482, 1482, 1482, 1481, 1481, 1481, 1481, + 1481, 1448, 1448, 1448, 1448, 1481, 1449, 1481, + 1481, 1481, 1448, 1481, 1481, 1448, 1448, 1448, + 1481, 1481, 1448, 1448, 1481, 1448, 1448, 1481, + + 1481, 1481, 1449, 1448, 1449, 1449, 1449, 1449, + 1448, 1448, 1481, 1448, 1448, 1448, 1448, 1448, + 1448, 1481, 1481, 1481, 1481, 1481, 1448, 1481, + 1481, 1481, 1481, 1448, 1448, 1481, 1481, 1481, + + 1483, 1441, 1441, 1441, 1441, 1449, 51, 51, + 1441, 1441, 1450, 1450, 1441, 1441, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 1360, 51, 51, 51, 51, 51, 51, 51, + 1449, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 1360, 51, 1360, 51, - 51, 51, 51, 1360, 1360, 1360, 51, 1359, - 51, 51, 51, 1395, 1395, 1395, 1395, 1396, - - 1396, 51, 1397, 1397, 51, 51, 51, 51, - 1398, 1399, 1398, 1399, 1398, 1399, 1398, 1399, - 1398, 1399, 1398, 1399, 1398, 1399, 1400, 1401, - 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, - - 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, - 1408, 1409, 1400, 1401, 1402, 1403, 1404, 1405, - 1406, 1407, 1408, 1409, 51, 1360, 1360, 1360, + 51, 51, 51, 51, 1449, 51, 1449, 51, + 51, 51, 51, 1449, 1449, 1449, 51, 1448, + 51, 51, 51, 1484, 1484, 1484, 1484, 1485, + + 1485, 51, 1486, 1486, 51, 51, 51, 51, + 1487, 1488, 1487, 1488, 1487, 1488, 1487, 1488, + 1487, 1488, 1487, 1488, 1487, 1488, 1489, 1490, + 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, + + 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, + 1497, 1498, 1489, 1490, 1491, 1492, 1493, 1494, + 1495, 1496, 1497, 1498, 51, 1449, 1449, 1449, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 1360, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 1360, - - 1410, 1410, 1410, 1411, 1412, 1413, 1414, 1358, - 1415, 1416, 1358, 1417, 1418, 1419, 1420, 1420, - 1255, 1255, 1255, 1255, 1255, 1421, 1422, 1255, - 1255, 1255, 1255, 1255, 1255, 1421, 1422, 1255, - - 1255, 1255, 1421, 1422, 1421, 1422, 1398, 1399, - 1398, 1399, 1398, 1399, 1423, 1424, 1423, 1424, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - - 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, - 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, - 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, - 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, - - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - - 1255, 1255, 1255, 1398, 1399, 1398, 1399, 1398, - 1399, 1398, 1399, 1398, 1399, 1426, 1427, 1428, - 1429, 1398, 1399, 1398, 1399, 1398, 1399, 1398, - 1399, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1430, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - - 1421, 1422, 1255, 1255, 1421, 1422, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1421, - 1422, 1421, 1422, 1255, 1421, 1422, 1255, 1255, - 1398, 1399, 1398, 1399, 1255, 1255, 1255, 1255, - - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1431, 1255, 1255, - 1421, 1422, 1255, 1255, 1398, 1399, 1255, 1255, - - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1320, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1421, 1422, 1421, 1422, 1255, - 1255, 1255, 1255, 1255, 1421, 1422, 1255, 1255, - 1255, 1255, 1255, 1255, 1421, 1422, 1255, 1255, - - 1255, 1255, 1255, 1255, 1421, 1422, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1320, 1320, 1320, 1255, - 1255, 1421, 1422, 1255, 1255, 1421, 1422, 1421, - - 1422, 1421, 1422, 1421, 1422, 1255, 1255, 1255, - 1255, 1255, 1255, 1421, 1422, 1255, 1255, 1255, - 1255, 1421, 1422, 1421, 1422, 1421, 1422, 1421, - 1422, 1421, 1422, 1421, 1422, 1255, 1255, 1255, - - 1255, 1421, 1422, 1255, 1255, 1255, 1421, 1422, - 1421, 1422, 1421, 1422, 1421, 1422, 1255, 1421, - 1422, 1255, 1255, 1421, 1422, 1255, 1255, 1255, - 1255, 1255, 1255, 1421, 1422, 1421, 1422, 1421, - - 1422, 1421, 1422, 1421, 1422, 1421, 1422, 1255, - 1255, 1255, 1255, 1255, 1255, 1421, 1422, 1421, - 1422, 1421, 1422, 1421, 1422, 1421, 1422, 1255, - 1255, 1255, 1255, 1255, 1432, 1255, 1433, 1255, - - 1255, 1255, 1255, 1434, 1435, 1434, 1255, 1255, - 1255, 1255, 1255, 1255, 1421, 1422, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1421, - 1422, 1421, 1422, 1255, 1255, 1255, 1255, 1255, - - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1322, 1322, - 1322, 1322, 1322, 1322, 1323, 1323, 1323, 1323, - 1323, 1323, 1323, 1390, 1390, 1390, 1390, 1390, - - 1323, 1323, 1323, 1323, 1390, 1390, 1390, 1390, - 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, - 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, - 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, - - 1418, 1418, 1418, 1418, 1418, 1390, 1390, 1418, - 1418, 1418, 1418, 1418, 1418, 1362, 1362, 1362, - 1390, 1390, 1390, 1390, 1390, 1359, 1359, 1359, - 1359, 1359, 1362, 1362, 1362, 1362, 1362, 1362, - - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 199, 199, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 199, 199, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 199, 199, 199, 1362, 1362, 1362, - - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 199, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 199, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 199, - - 127, 123, 1438, 1439, 1440, 1441, 1442, 127, - 123, 127, 123, 127, 123, 1443, 1444, 1445, - 1446, 1097, 1099, 1100, 1447, 127, 123, 1447, - 1097, 1097, 1097, 1097, 1448, 1448, 1449, 1450, - - 1451, 1452, 1451, 1452, 1451, 1452, 1451, 1452, - 1451, 1452, 1451, 1452, 1451, 1452, 1451, 1452, - 1451, 1452, 1451, 1452, 1451, 1452, 1451, 1452, - 1451, 1452, 1451, 1452, 1451, 1452, 1451, 1452, - - 1451, 1452, 1451, 1452, 1453, 1454, 1454, 1454, - 1454, 1454, 1454, 1455, 1456, 1455, 1456, 1457, - 1457, 1457, 1458, 1459, 199, 199, 199, 199, - 199, 1460, 1461, 1461, 1461, 1462, 1460, 1461, + 1449, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 1449, + + 1499, 1499, 1499, 1500, 1501, 1502, 1503, 1447, + 1504, 1505, 1447, 1506, 1507, 1508, 1509, 1509, + 1341, 1341, 1341, 1341, 1341, 1510, 1511, 1341, + 1341, 1341, 1341, 1341, 1341, 1510, 1511, 1341, + + 1341, 1341, 1510, 1511, 1510, 1511, 1487, 1488, + 1487, 1488, 1487, 1488, 1512, 1513, 1512, 1513, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + + 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, + 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, + 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, + 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, + + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + + 1341, 1341, 1341, 1487, 1488, 1487, 1488, 1487, + 1488, 1487, 1488, 1487, 1488, 1515, 1516, 1517, + 1518, 1487, 1488, 1487, 1488, 1487, 1488, 1487, + 1488, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1519, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + + 1510, 1511, 1341, 1341, 1510, 1511, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1510, + 1511, 1510, 1511, 1341, 1510, 1511, 1341, 1341, + 1487, 1488, 1487, 1488, 1341, 1341, 1341, 1341, + + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1520, 1341, 1341, + 1510, 1511, 1341, 1341, 1487, 1488, 1341, 1341, + + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1407, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1510, 1511, 1510, 1511, 1341, + 1341, 1341, 1341, 1341, 1510, 1511, 1341, 1341, + 1341, 1341, 1341, 1341, 1510, 1511, 1341, 1341, + + 1341, 1341, 1341, 1341, 1510, 1511, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1407, 1407, 1407, 1341, + 1341, 1510, 1511, 1341, 1341, 1510, 1511, 1510, + + 1511, 1510, 1511, 1510, 1511, 1341, 1341, 1341, + 1341, 1341, 1341, 1510, 1511, 1341, 1341, 1341, + 1341, 1510, 1511, 1510, 1511, 1510, 1511, 1510, + 1511, 1510, 1511, 1510, 1511, 1341, 1341, 1341, + + 1341, 1510, 1511, 1341, 1341, 1341, 1510, 1511, + 1510, 1511, 1510, 1511, 1510, 1511, 1341, 1510, + 1511, 1341, 1341, 1510, 1511, 1341, 1341, 1341, + 1341, 1341, 1341, 1510, 1511, 1510, 1511, 1510, + + 1511, 1510, 1511, 1510, 1511, 1510, 1511, 1341, + 1341, 1341, 1341, 1341, 1341, 1510, 1511, 1510, + 1511, 1510, 1511, 1510, 1511, 1510, 1511, 1341, + 1341, 1341, 1341, 1341, 1521, 1341, 1522, 1341, + + 1341, 1341, 1341, 1523, 1524, 1523, 1341, 1341, + 1341, 1341, 1341, 1341, 1510, 1511, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1510, + 1511, 1510, 1511, 1341, 1341, 1341, 1341, 1341, + + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1409, 1409, + 1409, 1409, 1409, 1409, 1410, 1410, 1410, 1410, + 1410, 1410, 1410, 1479, 1479, 1479, 1479, 1479, + + 1410, 1410, 1410, 1410, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, + 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, + + 1507, 1507, 1507, 1507, 1507, 1479, 1479, 1507, + 1507, 1507, 1507, 1507, 1507, 1451, 1451, 1451, + 1479, 1479, 1479, 1479, 1479, 1448, 1448, 1448, + 1448, 1448, 1451, 1451, 1451, 1451, 1451, 1451, + + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 200, 200, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 200, 200, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 200, 200, 200, 1451, 1451, 1451, + + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 200, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 1418, 1418, 1418, 1418, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, + 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, + 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, + 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, + + 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, + 1525, 1525, 1525, 1525, 1525, 1525, 1525, 200, + 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, + 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, + + 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, + 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, + 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, + 1526, 1526, 1526, 1526, 1526, 1526, 1526, 200, + + 127, 123, 1527, 1528, 1529, 1530, 1531, 127, + 123, 127, 123, 127, 123, 1532, 1533, 1534, + 1535, 1183, 1185, 1186, 1536, 127, 123, 1536, + 1183, 1183, 1183, 1183, 1537, 1537, 1538, 1539, + + 1540, 1541, 1540, 1541, 1540, 1541, 1540, 1541, + 1540, 1541, 1540, 1541, 1540, 1541, 1540, 1541, + 1540, 1541, 1540, 1541, 1540, 1541, 1540, 1541, + 1540, 1541, 1540, 1541, 1540, 1541, 1540, 1541, + + 1540, 1541, 1540, 1541, 1542, 1543, 1543, 1543, + 1543, 1543, 1543, 1544, 1545, 1544, 1545, 1546, + 1546, 1546, 1547, 1548, 200, 200, 200, 200, + 200, 1549, 1550, 1550, 1550, 1551, 1549, 1550, - 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, - 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, - 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, - 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, + 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, + 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, + 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, + 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, - 1463, 1463, 1463, 1463, 1463, 1463, 199, 1464, - 199, 199, 199, 199, 199, 1464, 199, 199, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, + 1552, 1552, 1552, 1552, 1552, 1552, 200, 1553, + 200, 200, 200, 200, 200, 1553, 200, 200, + 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, + 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, + 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, + 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, + 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, + 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1465, 1465, 1465, 1465, 1465, 1465, 1466, 1466, - 199, 199, 199, 199, 199, 199, 199, 1467, - 1468, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 1469, + 1554, 1554, 1554, 1554, 1554, 1554, 1555, 1555, + 200, 200, 200, 200, 200, 200, 200, 1556, + 1557, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 1558, + + 836, 836, 836, 836, 836, 836, 836, 836, + 836, 836, 836, 836, 836, 836, 836, 836, + 836, 836, 836, 836, 836, 836, 836, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 836, 836, 836, 836, 836, 836, 836, 200, + 836, 836, 836, 836, 836, 836, 836, 200, + 836, 836, 836, 836, 836, 836, 836, 200, + 836, 836, 836, 836, 836, 836, 836, 200, + + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + + 1559, 1559, 1560, 1561, 1560, 1561, 1559, 1559, + 1559, 1560, 1561, 1559, 1560, 1561, 1345, 1345, + 1345, 1345, 1345, 1345, 1345, 1345, 1344, 1562, + 1563, 1564, 1565, 1566, 1560, 1561, 1566, 1566, + + 1567, 1568, 1512, 1513, 1512, 1513, 1512, 1513, + 1512, 1513, 1564, 1564, 1564, 1564, 1569, 1570, + 1564, 1571, 1572, 1573, 1573, 1572, 1572, 1572, + 1572, 1572, 1574, 1574, 1575, 1576, 1576, 1577, + + 1578, 1576, 1579, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + 1580, 1580, 200, 1580, 1580, 1580, 1580, 1581, + + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + 1580, 1580, 1580, 1581, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, + 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, + 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, + 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, + + 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, + 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, + 1581, 1581, 1581, 1581, 1581, 1581, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, + 1582, 1582, 1582, 1582, 200, 200, 200, 200, + + 1299, 1583, 1584, 1585, 1441, 1586, 1587, 1588, + 16, 1336, 16, 1336, 16, 1336, 16, 1336, + 16, 1336, 1441, 1441, 16, 1336, 16, 1336, + 16, 1336, 16, 1336, 1589, 1314, 1590, 1590, + + 1441, 1588, 1588, 1588, 1588, 1588, 1588, 1588, + 1588, 1588, 1591, 1592, 172, 1593, 1594, 1594, + 1595, 1596, 1596, 1596, 1596, 1597, 1598, 1441, + 1599, 1599, 1599, 1600, 1601, 1602, 1582, 1441, + + 200, 1603, 1604, 1603, 1604, 1603, 1604, 1603, + 1604, 1603, 1604, 1604, 1605, 1604, 1605, 1604, + 1605, 1604, 1605, 1604, 1605, 1604, 1605, 1604, + 1605, 1604, 1605, 1604, 1605, 1604, 1605, 1604, + + 1605, 1604, 1605, 1603, 1604, 1605, 1604, 1605, + 1604, 1605, 1604, 1604, 1604, 1604, 1604, 1604, + 1605, 1605, 1604, 1605, 1605, 1604, 1605, 1605, + 1604, 1605, 1605, 1604, 1605, 1605, 1604, 1604, + + 1604, 1604, 1604, 1603, 1604, 1603, 1604, 1603, + 1604, 1604, 1604, 1604, 1604, 1604, 1603, 1604, + 1604, 1604, 1604, 1604, 1605, 1606, 1606, 200, + 200, 1607, 1607, 1608, 1608, 1609, 1610, 1611, + + 1612, 1613, 1614, 1613, 1614, 1613, 1614, 1613, + 1614, 1613, 1614, 1614, 1615, 1614, 1615, 1614, + 1615, 1614, 1615, 1614, 1615, 1614, 1615, 1614, + 1615, 1614, 1615, 1614, 1615, 1614, 1615, 1614, + + 1615, 1614, 1615, 1613, 1614, 1615, 1614, 1615, + 1614, 1615, 1614, 1614, 1614, 1614, 1614, 1614, + 1615, 1615, 1614, 1615, 1615, 1614, 1615, 1615, + 1614, 1615, 1615, 1614, 1615, 1615, 1614, 1614, + + 1614, 1614, 1614, 1613, 1614, 1613, 1614, 1613, + 1614, 1614, 1614, 1614, 1614, 1614, 1613, 1614, + 1614, 1614, 1614, 1614, 1615, 1613, 1613, 1615, + 1615, 1615, 1615, 1616, 1617, 1618, 1619, 1620, + + 200, 200, 200, 200, 200, 1621, 1621, 1621, + 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + + 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + 1621, 1621, 1621, 1621, 1621, 1622, 200, 200, + 200, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 200, + 1624, 1624, 1625, 1625, 1625, 1625, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, - 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 830, 830, 830, 830, 830, 830, 830, 199, - 830, 830, 830, 830, 830, 830, 830, 199, - 830, 830, 830, 830, 830, 830, 830, 199, - 830, 830, 830, 830, 830, 830, 830, 199, - - 264, 264, 264, 264, 264, 264, 264, 264, - 264, 264, 264, 264, 264, 264, 264, 264, - 264, 264, 264, 264, 264, 264, 264, 264, - 264, 264, 264, 264, 264, 264, 264, 264, - - 1470, 1470, 1471, 1472, 1471, 1472, 1470, 1470, - 1470, 1471, 1472, 1470, 1471, 1472, 1259, 1259, - 1259, 1259, 1259, 1259, 1259, 1259, 1258, 1473, - 1474, 1475, 1476, 1477, 1471, 1472, 1477, 1477, - - 1478, 1479, 1423, 1424, 1423, 1424, 1423, 1424, - 1423, 1424, 1475, 1475, 1475, 1475, 1480, 1481, - 1475, 1482, 1483, 1484, 1484, 1483, 1483, 1483, - 1483, 1483, 1485, 1485, 1486, 1487, 1487, 1488, - - 1489, 1487, 1490, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - 1491, 1491, 199, 1491, 1491, 1491, 1491, 1492, - - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - 1491, 1491, 1491, 1492, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, - 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, - 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, - 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, - - 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, - 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, - 1492, 1492, 1492, 1492, 1492, 1492, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, - 1493, 1493, 1493, 1493, 199, 199, 199, 199, - - 1213, 1494, 1495, 1496, 1352, 1497, 1498, 1499, - 16, 1250, 16, 1250, 16, 1250, 16, 1250, - 16, 1250, 1352, 1352, 16, 1250, 16, 1250, - 16, 1250, 16, 1250, 1500, 1228, 1501, 1501, - - 1352, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1502, 1503, 171, 1504, 1505, 1505, - 1506, 1507, 1507, 1507, 1507, 1508, 1509, 1352, - 1510, 1510, 1510, 1511, 1512, 1513, 1493, 1352, - - 199, 1514, 1515, 1514, 1515, 1514, 1515, 1514, - 1515, 1514, 1515, 1515, 1516, 1515, 1516, 1515, - 1516, 1515, 1516, 1515, 1516, 1515, 1516, 1515, - 1516, 1515, 1516, 1515, 1516, 1515, 1516, 1515, - - 1516, 1515, 1516, 1514, 1515, 1516, 1515, 1516, - 1515, 1516, 1515, 1515, 1515, 1515, 1515, 1515, - 1516, 1516, 1515, 1516, 1516, 1515, 1516, 1516, - 1515, 1516, 1516, 1515, 1516, 1516, 1515, 1515, - - 1515, 1515, 1515, 1514, 1515, 1514, 1515, 1514, - 1515, 1515, 1515, 1515, 1515, 1515, 1514, 1515, - 1515, 1515, 1515, 1515, 1516, 1517, 1517, 199, - 199, 1518, 1518, 1519, 1519, 1520, 1521, 1522, - - 1523, 1524, 1525, 1524, 1525, 1524, 1525, 1524, - 1525, 1524, 1525, 1525, 1526, 1525, 1526, 1525, - 1526, 1525, 1526, 1525, 1526, 1525, 1526, 1525, - 1526, 1525, 1526, 1525, 1526, 1525, 1526, 1525, - - 1526, 1525, 1526, 1524, 1525, 1526, 1525, 1526, - 1525, 1526, 1525, 1525, 1525, 1525, 1525, 1525, - 1526, 1526, 1525, 1526, 1526, 1525, 1526, 1526, - 1525, 1526, 1526, 1525, 1526, 1526, 1525, 1525, - - 1525, 1525, 1525, 1524, 1525, 1524, 1525, 1524, - 1525, 1525, 1525, 1525, 1525, 1525, 1524, 1525, - 1525, 1525, 1525, 1525, 1526, 1524, 1524, 1526, - 1526, 1526, 1526, 1527, 1528, 1529, 1530, 1531, - - 199, 199, 199, 199, 199, 1532, 1532, 1532, - 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, - 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, - 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, - - 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, - 1532, 1532, 1532, 1532, 1532, 1533, 199, 199, - 199, 1534, 1534, 1534, 1534, 1534, 1534, 1534, - 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, - - 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, - 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, - 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, - 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, - - 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, - 1534, 1534, 1534, 1534, 1534, 1534, 1534, 199, - 1535, 1535, 1536, 1536, 1536, 1536, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - - 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, - 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, - 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, - 1539, 1539, 1539, 199, 199, 199, 199, 199, - - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - - 1393, 1393, 1393, 1393, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, - 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, - - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 1541, 1541, 1541, 1542, 1542, 199, - - 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, - 1536, 1536, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - - 1537, 1537, 1537, 1537, 1543, 1543, 1543, 1543, - 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, - 1545, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 1541, 1541, 1542, 1542, 1547, 1535, - - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1545, 1545, 1545, 1545, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, + 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, + 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, + 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, + 1628, 1628, 1628, 200, 200, 200, 200, 200, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 199, + 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, + 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, + 1482, 1482, 1482, 1482, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, + 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1545, - 1545, 1545, 1545, 1537, 1537, 1537, 1537, 1537, - - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1545, 1545, - - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1545, - - 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, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - - 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, - 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, - 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, - 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, - - 1551, 1551, 1551, 1551, 1551, 1551, 1552, 1552, - 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, - 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, - 1552, 1552, 1552, 1552, 1553, 1553, 1553, 1553, - - 1553, 1553, 1553, 1553, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1555, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - - 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, - 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, - 1556, 1556, 1556, 1556, 1556, 1557, 1556, 1556, - 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, - - 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, - 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, - 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, - 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, - - 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, - 1556, 1556, 1556, 1556, 1556, 199, 199, 199, - 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, - 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, - - 1558, 1558, 1559, 1559, 1558, 1558, 1558, 1558, - 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, - 1558, 1558, 1558, 1558, 1559, 1558, 1558, 1558, - 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, - - 1558, 1559, 1558, 1558, 1558, 1559, 1558, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, - 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, - - 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, - 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, - 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, - 1561, 1561, 1561, 1561, 1561, 1561, 1562, 1563, - - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - 1564, 1564, 1564, 1564, 1565, 1566, 1567, 1568, - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - - 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, - 1577, 1578, 1564, 1564, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 278, 279, 278, 279, 278, 279, 278, 279, - 278, 279, 278, 279, 278, 279, 278, 279, - 278, 279, 278, 279, 278, 279, 278, 279, - 278, 279, 278, 279, 278, 279, 278, 279, - - 282, 283, 278, 279, 278, 279, 278, 279, - 278, 279, 278, 279, 278, 279, 1579, 264, - 1580, 1580, 1580, 1581, 1582, 1582, 1582, 1582, - 1582, 1582, 1582, 1582, 264, 264, 1581, 1583, - - 278, 279, 278, 279, 278, 279, 278, 279, - 278, 279, 278, 279, 278, 279, 278, 279, - 278, 279, 278, 279, 278, 279, 278, 279, - 284, 285, 284, 285, 1584, 1584, 199, 1582, - - 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, - 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, - 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, - 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, - - 1585, 1585, 1585, 1585, 1585, 1585, 1586, 1586, - 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, - 1587, 1587, 1588, 1589, 1590, 1590, 1590, 1589, - 199, 199, 199, 199, 199, 199, 199, 199, - - 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, 1481, 1481, 1481, 1481, 1481, - - 1593, 1593, 1099, 1100, 1099, 1100, 1099, 1100, - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - 1097, 1097, 1099, 1100, 1099, 1100, 1099, 1100, - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - 1448, 1097, 1097, 1097, 1097, 1097, 1097, 1097, - 1097, 1099, 1100, 1099, 1100, 1594, 1099, 1100, - - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - 1481, 1595, 1595, 1099, 1100, 1596, 1597, 199, - 1598, 1599, 1600, 1601, 1602, 1602, 1603, 1604, - 1603, 1604, 1603, 1604, 1603, 1604, 1603, 1604, - - 1598, 1599, 1598, 1599, 1598, 1599, 1598, 1599, - 1598, 1599, 1605, 1606, 1607, 1608, 199, 199, - 1609, 1610, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 1611, - 1612, 1612, 1597, 1613, 1613, 1613, 1613, 1613, - - 1614, 1614, 1615, 1614, 1614, 1614, 1616, 1614, - 1614, 1614, 1614, 1615, 1614, 1614, 1614, 1614, - 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, - 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, - - 1614, 1614, 1614, 1617, 1617, 1615, 1615, 1617, - 1618, 1618, 1618, 1618, 199, 199, 199, 199, - 1544, 1544, 1544, 1544, 1544, 1544, 772, 772, - 1290, 1619, 199, 199, 199, 199, 199, 199, - - 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, 1620, - 1620, 1620, 1621, 1622, 1623, 1623, 1624, 1624, - 199, 199, 199, 199, 199, 199, 199, 199, + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1630, 1631, 1631, 200, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + + 1626, 1626, 1626, 1626, 1632, 1632, 1632, 1632, + 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, + 1634, 1635, 1635, 1635, 1635, 1635, 1635, 1635, + 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, + + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1631, 1631, 1636, 1624, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1635, 1635, 1635, 1635, 1635, 1635, 1635, + 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1634, 1634, 1634, 1634, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 200, + + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, - 1626, 1626, 1626, 1626, 1625, 1625, 1625, 1625, - 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, - 1625, 1625, 1625, 1625, 1627, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 1628, 1628, - 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, - 1637, 1638, 199, 199, 199, 199, 199, 199, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1634, + 1634, 1634, 1634, 1626, 1626, 1626, 1626, 1626, + + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1634, 1634, + + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1634, + 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, + 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, + 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, + 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, + + 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, + 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, + 1638, 1638, 1638, 1638, 1638, 1638, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + + 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, + 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, + 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, + 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, + + 1640, 1640, 1640, 1640, 1640, 1640, 1641, 1641, + 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, + 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, + 1641, 1641, 1641, 1641, 1642, 1642, 1642, 1642, + + 1642, 1642, 1642, 1642, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1644, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, - 1639, 1639, 490, 490, 490, 490, 490, 490, - 1640, 1640, 1640, 490, 199, 199, 199, 199, - - 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, - 1649, 1650, 1651, 1651, 1651, 1651, 1651, 1651, - 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, - 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, - - 1651, 1651, 1651, 1651, 1651, 1651, 1652, 1652, - 1652, 1652, 1652, 1653, 1653, 1653, 1654, 1655, - 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, - 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, - - 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1657, - 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, - 1657, 1657, 1658, 1659, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 1660, - - 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 199, 199, 199, - - 1661, 1661, 1661, 1662, 1663, 1663, 1663, 1663, - 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, - 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, - 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, - - 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, - 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, - 1663, 1663, 1663, 1664, 1662, 1662, 1661, 1661, - 1661, 1661, 1662, 1662, 1661, 1662, 1662, 1662, - - 1665, 1666, 1666, 1666, 1666, 1666, 1666, 1667, - 1668, 1668, 1666, 1666, 1666, 1666, 199, 1669, - 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, - 1678, 1679, 199, 199, 199, 199, 1666, 1666, - - 1680, 1680, 1680, 1680, 1680, 1681, 1682, 1680, - 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, - 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, - 1691, 1692, 1680, 1680, 1680, 1680, 1680, 199, - - 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, - 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, - 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, - 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, - - 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, - 1693, 1694, 1694, 1694, 1694, 1694, 1694, 1695, - 1695, 1694, 1694, 1695, 1695, 1694, 1694, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1693, 1693, 1693, 1694, 1693, 1693, 1693, 1693, - 1693, 1693, 1693, 1693, 1694, 1695, 199, 199, - 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, - 1704, 1705, 199, 199, 1706, 1707, 1707, 1707, - - 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, - 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, - 1709, 1708, 1708, 1708, 1708, 1708, 1708, 1710, - 1710, 1710, 1708, 810, 1681, 1711, 1680, 1680, - - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, - - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, - 1713, 1712, 1713, 1713, 1714, 1712, 1712, 1713, - 1713, 1712, 1712, 1712, 1712, 1712, 1713, 1713, - - 1712, 1713, 1712, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 1712, 1712, 1715, 1716, 1716, - - 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, - 1717, 1717, 1717, 1718, 1719, 1719, 1718, 1718, - 1720, 1720, 1717, 1721, 1721, 1718, 1722, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 1723, 1723, 1723, 1723, 1723, 1723, 199, - 199, 1723, 1723, 1723, 1723, 1723, 1723, 199, - 199, 1723, 1723, 1723, 1723, 1723, 1723, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1723, 1723, 1723, 1723, 1723, 1723, 1723, 199, - 1723, 1723, 1723, 1723, 1723, 1723, 1723, 199, - 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, 1724, 1725, 1725, 1725, 1725, - - 199, 199, 199, 199, 1602, 1726, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, - 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, - 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, - 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, - - 1727, 1727, 1727, 1728, 1728, 1729, 1728, 1728, - 1729, 1728, 1728, 1730, 1728, 1731, 199, 199, - 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, - 1740, 1741, 199, 199, 199, 199, 199, 199, - - 1742, 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, 1742, 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, - 1742, 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, 1742, 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, - 1742, 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, 1742, 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, - 1742, 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, 1742, 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, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 825, 825, 825, 825, 825, 825, 825, 825, - 825, 825, 825, 825, 825, 825, 825, 825, - - 825, 825, 825, 825, 825, 825, 825, 199, - 199, 199, 199, 828, 828, 828, 828, 828, - 828, 828, 828, 828, 828, 828, 828, 828, - 828, 828, 828, 828, 828, 828, 828, 828, + + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 1647, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 200, 200, 200, + 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, + 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, + + 1648, 1648, 1649, 1649, 1648, 1648, 1648, 1648, + 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, + 1648, 1648, 1648, 1648, 1649, 1648, 1648, 1648, + 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, + + 1648, 1649, 1648, 1648, 1648, 1649, 1648, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, + 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, + + 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, + 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, + 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, + 1651, 1651, 1651, 1651, 1651, 1651, 1652, 1653, + + 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, + + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + 1654, 1654, 1654, 1654, 1655, 1656, 1657, 1658, + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + + 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, + 1667, 1668, 1654, 1654, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 279, 280, 279, 280, 279, 280, 279, 280, + 279, 280, 279, 280, 279, 280, 279, 280, + 279, 280, 279, 280, 279, 280, 279, 280, + 279, 280, 279, 280, 279, 280, 279, 280, + + 283, 284, 279, 280, 279, 280, 279, 280, + 279, 280, 279, 280, 279, 280, 1669, 265, + 1670, 1670, 1670, 1671, 1672, 1672, 1672, 1672, + 1672, 1672, 1672, 1672, 265, 265, 1671, 1673, + + 279, 280, 279, 280, 279, 280, 279, 280, + 279, 280, 279, 280, 279, 280, 279, 280, + 279, 280, 279, 280, 279, 280, 279, 280, + 285, 286, 285, 286, 1674, 1674, 1675, 1672, + + 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + + 1676, 1676, 1676, 1676, 1676, 1676, 1677, 1677, + 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, + 1678, 1678, 1679, 1680, 1681, 1681, 1681, 1680, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, + 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, + 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1683, + 1683, 1683, 1683, 1570, 1570, 1570, 1570, 1570, + + 1684, 1684, 1185, 1186, 1185, 1186, 1185, 1186, + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + 1183, 1183, 1185, 1186, 1185, 1186, 1185, 1186, + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + 1537, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1185, 1186, 1185, 1186, 1685, 1185, 1186, + + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + 1570, 1686, 1686, 1185, 1186, 1687, 1688, 1689, + 1690, 1691, 1692, 1693, 1694, 1694, 1695, 1696, + 1695, 1696, 1695, 1696, 1695, 1696, 1695, 1696, + + 1690, 1691, 1690, 1691, 1690, 1691, 1690, 1691, + 1690, 1691, 1697, 1698, 1699, 1700, 200, 200, + 1701, 1702, 1703, 1704, 1705, 1706, 1705, 1706, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 1707, + 1708, 1708, 1688, 1709, 1709, 1709, 1709, 1709, + + 1710, 1710, 1711, 1710, 1710, 1710, 1712, 1710, + 1710, 1710, 1710, 1711, 1710, 1710, 1710, 1710, + 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, + 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, + + 1710, 1710, 1710, 1713, 1713, 1711, 1711, 1713, + 1714, 1714, 1714, 1714, 200, 200, 200, 200, + 1633, 1633, 1633, 1633, 1633, 1633, 778, 778, + 1376, 1715, 200, 200, 200, 200, 200, 200, + + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1717, 1718, 1719, 1719, 1720, 1720, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1721, 1721, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1721, 1721, 1721, 1721, + 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, + + 1721, 1721, 1721, 1721, 1723, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 1724, 1724, + 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, + 1733, 1734, 200, 200, 200, 200, 200, 200, + + 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, + 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, + 1735, 1735, 493, 493, 493, 493, 493, 493, + 1736, 1736, 1736, 493, 1737, 1738, 200, 200, + + 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, + 1747, 1748, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + + 1749, 1749, 1749, 1749, 1749, 1749, 1750, 1750, + 1750, 1750, 1750, 1751, 1751, 1751, 1752, 1753, + 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, + 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, + + 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1755, + 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, + 1755, 1755, 1756, 1757, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 1758, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, - 828, 828, 828, 828, 199, 199, 199, 199, - - 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, - 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, - 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, - 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, - - 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, - 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, - 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, - 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, - - 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, - 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, - 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, - 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, - - 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, - 1746, 1746, 1746, 1746, 1746, 1746, 1551, 1551, - 1746, 1551, 1746, 1551, 1551, 1746, 1746, 1746, - 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1551, - - 1746, 1551, 1746, 1551, 1551, 1746, 1746, 1551, - 1551, 1551, 1746, 1746, 1746, 1746, 1747, 1747, - 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, - 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, - - 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, - 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, - 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, - 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, - - 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, - 1748, 1748, 1748, 1749, 1749, 1749, 1550, 1550, - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - 1750, 1750, 1550, 1550, 1550, 1550, 1550, 1550, - - 1751, 1752, 1753, 1754, 1755, 1756, 1756, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 1757, 1758, 1759, 1760, 1761, - 199, 199, 199, 199, 199, 1762, 1763, 1764, - - 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, - 1765, 1766, 1764, 1764, 1764, 1764, 1764, 1764, - 1764, 1764, 1764, 1764, 1764, 1764, 1764, 296, - 1764, 1764, 1764, 1764, 1764, 296, 1764, 296, - - 1764, 1764, 296, 1764, 1764, 296, 1764, 1764, - 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1765, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1768, 1768, 1768, 1768, 1768, 1768, - 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, - - 1768, 1768, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1501, 1228, - - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 342, 342, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 342, 342, 342, 342, 342, 342, 342, 342, - 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, - 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, - - 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, - 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1770, 334, 342, 342, - - 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, - 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, - 1772, 1773, 1774, 1775, 1776, 1777, 1777, 1778, - 1779, 1780, 199, 199, 199, 199, 199, 199, - - 170, 170, 170, 170, 1085, 1085, 1085, 985, - 985, 985, 985, 985, 985, 985, 199, 199, - 1781, 1782, 1782, 1783, 1783, 1784, 1785, 1784, - 1785, 1784, 1785, 1784, 1785, 1784, 1785, 1784, - - 1785, 1784, 1785, 1784, 1785, 1513, 1513, 1786, - 1787, 1781, 1781, 1781, 1781, 1783, 1783, 1783, - 1788, 1789, 1790, 199, 1791, 1792, 1793, 1793, - 1782, 1281, 1282, 1281, 1282, 1281, 1282, 1794, - - 1781, 1781, 1795, 1796, 1797, 1798, 1799, 199, - 1781, 1284, 1242, 1781, 199, 199, 199, 199, - 1767, 1767, 1767, 1800, 1767, 342, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 342, 342, 1801, - - 199, 1793, 1781, 1794, 1284, 1242, 1781, 1802, - 1281, 1282, 1781, 1795, 1788, 1796, 1790, 1803, - 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, - 1812, 1813, 1792, 1791, 1814, 1799, 1815, 1793, - - 1781, 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, 1781, 1818, 1819, 1783, - - 1819, 1820, 1820, 1820, 1820, 1820, 1820, 1820, - 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, - 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, - 1820, 1820, 1820, 1817, 1799, 1818, 1799, 1821, - - 1822, 1823, 1281, 1282, 1824, 1825, 1826, 1827, - 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, - 1828, 1826, 1826, 1826, 1826, 1826, 1826, 1826, - 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, - - 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, - 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, - 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, - 1826, 1826, 1826, 1826, 1826, 1826, 1829, 1829, - - 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, - 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, - 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, - 1830, 1830, 1830, 1830, 1830, 1830, 1830, 199, - - 199, 199, 1830, 1830, 1830, 1830, 1830, 1830, - 199, 199, 1830, 1830, 1830, 1830, 1830, 1830, - 199, 199, 1830, 1830, 1830, 1830, 1830, 1830, - 199, 199, 1830, 1830, 1830, 199, 199, 199, - - 1831, 1284, 1799, 1819, 1509, 1284, 1284, 199, - 1303, 1280, 1280, 1280, 1280, 1303, 1303, 199, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1832, 1832, 1832, 1833, 51, 1834, 1834, - - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 199, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 199, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 199, 1835, 1835, 199, 1835, - - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 199, 199, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 199, 199, - - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 199, 199, 199, 199, 199, - - 1836, 1837, 1836, 199, 199, 199, 199, 1838, - 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, - 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, - 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, - - 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, - 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, - 1838, 1838, 1838, 1838, 199, 199, 199, 1839, - 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, - - 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, - 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, - 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, - 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, - - 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, - 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, - 1840, 1840, 1840, 1840, 1840, 1841, 1841, 1841, - 1841, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 1841, 1843, 1844, 199, 199, 199, - 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, - 1390, 1390, 1390, 1390, 199, 199, 199, 199, - - 1844, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, - 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, - - 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, - 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, - 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, - 1325, 1325, 1325, 1325, 1325, 1088, 199, 199, - - 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, - 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, - 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, - 1845, 1845, 1845, 1845, 1845, 199, 199, 199, - - 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, - 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, - 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, - 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, - - 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, - 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, - 1846, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 985, 1847, 1847, 1847, 1847, 1847, 1847, 1847, - 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, - 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, - 1847, 1847, 1847, 1847, 199, 199, 199, 199, - - 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, - 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, - 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, - 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1849, - - 1850, 1850, 1850, 1850, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, - 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, - - 1851, 1852, 1851, 1851, 1851, 1851, 1851, 1851, - 1851, 1851, 1852, 199, 199, 199, 199, 199, - 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, - 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, - - 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, - 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, - 1853, 1853, 1853, 1853, 1853, 1853, 1854, 1854, - 1854, 1854, 1854, 199, 199, 199, 199, 199, - - 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, 199, 1856, - - 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, - 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, - 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, - 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, - - 1857, 1857, 1857, 1857, 199, 199, 199, 199, - 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, - 1858, 1859, 1859, 1859, 1859, 1859, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, - 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, - 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, - 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, - - 1860, 1860, 1860, 1860, 1860, 1860, 1861, 1861, - 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, - 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, - 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, - - 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, - 1862, 1862, 1862, 1862, 1862, 1862, 1863, 1863, - 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, - 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, - - 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, - 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, - 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, - 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, - - 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, - 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, - 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, - 1865, 1865, 1865, 1865, 1865, 1865, 199, 199, - - 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, - 1874, 1875, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 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, - 199, 199, 199, 199, 199, 199, 199, 199, - 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, - 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, - - 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, - 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, - 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, - 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, - - 1877, 1877, 1877, 1877, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 1878, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1880, 1880, 1880, 1880, 1880, 1880, 296, 296, - 1880, 296, 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, 1880, 1880, 1880, 1880, 1880, 296, 1880, - 1880, 296, 296, 296, 1880, 296, 296, 1880, - - 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, - 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, - 1881, 1881, 1881, 1881, 1881, 1881, 296, 1882, - 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, - - 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, - 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, - 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1885, - 1885, 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, 1887, 1887, 296, - - 296, 296, 296, 296, 296, 296, 296, 1888, - 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - - 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, - 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, - 1889, 1889, 1889, 1889, 1889, 1889, 1890, 1890, - 1890, 1890, 1891, 1891, 296, 296, 296, 1892, - - 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, - 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, - 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, - 1893, 1893, 296, 296, 296, 296, 296, 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, 1895, 1895, 1895, 1895, - - 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, - 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, - 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, - 296, 296, 296, 296, 296, 296, 1896, 1896, - - 1897, 1898, 1898, 1898, 296, 1898, 1898, 296, - 296, 296, 296, 296, 1898, 1899, 1898, 1900, - 1897, 1897, 1897, 1897, 296, 1897, 1897, 1897, - 296, 1897, 1897, 1897, 1897, 1897, 1897, 1897, - - 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, - 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, - 1897, 1897, 1897, 1897, 296, 296, 296, 296, - 1900, 1901, 1899, 296, 296, 296, 296, 1902, - - 1903, 1904, 1905, 1906, 1907, 1907, 1907, 1907, - 296, 296, 296, 296, 296, 296, 296, 296, - 1908, 1908, 1908, 1908, 1908, 1908, 1909, 1909, - 1910, 296, 296, 296, 296, 296, 296, 296, - - 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, - 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, - 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, - 1911, 1911, 1911, 1911, 1911, 1912, 1912, 1913, - - 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, - 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, - 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, - 1914, 1914, 1914, 1914, 1914, 1915, 1915, 1915, - - 1916, 1916, 1916, 1916, 1916, 1917, 1918, 1917, - 1919, 1917, 1917, 1918, 1918, 1920, 1917, 1917, - 1917, 1917, 1917, 1916, 1916, 1916, 1916, 1920, - 1916, 1916, 1916, 1916, 1916, 1917, 1916, 1916, - - 1916, 1917, 1918, 1918, 1917, 1921, 1922, 296, - 296, 296, 296, 1923, 1923, 1923, 1923, 1924, - 1925, 1925, 1925, 1925, 1925, 1925, 1926, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - - 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, - 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, - 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, - 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, - - 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, - 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, - 1927, 1927, 1927, 1927, 1927, 1927, 296, 296, - 296, 1928, 1928, 1928, 1928, 1928, 1928, 1928, - - 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, - 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, - 1929, 1929, 1929, 1929, 1929, 1929, 296, 296, + 828, 828, 828, 828, 828, 200, 200, 200, + + 1759, 1759, 1759, 1760, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1762, 1760, 1760, 1759, 1759, + 1759, 1759, 1760, 1760, 1759, 1760, 1760, 1760, + + 1763, 1764, 1764, 1764, 1764, 1764, 1764, 1765, + 1766, 1766, 1764, 1764, 1764, 1764, 200, 1767, + 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, + 1776, 1777, 200, 200, 200, 200, 1764, 1764, + + 1778, 1778, 1778, 1778, 1778, 1779, 1780, 1778, + 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, + 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, + 1789, 1790, 1778, 1778, 1778, 1778, 1778, 200, + + 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, + 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, + 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, + 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, + + 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, + 1791, 1792, 1792, 1792, 1792, 1792, 1792, 1793, + 1793, 1792, 1792, 1793, 1793, 1792, 1792, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1791, 1791, 1791, 1792, 1791, 1791, 1791, 1791, + 1791, 1791, 1791, 1791, 1792, 1793, 200, 200, + 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, + 1802, 1803, 200, 200, 1804, 1805, 1805, 1805, + + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1807, 1806, 1806, 1806, 1806, 1806, 1806, 1808, + 1808, 1808, 1806, 816, 1779, 1809, 1778, 1778, + + 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, + 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, + 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, + 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, + + 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, + 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, + 1811, 1810, 1811, 1811, 1812, 1810, 1810, 1811, + 1811, 1810, 1810, 1810, 1810, 1810, 1811, 1811, + + 1810, 1811, 1810, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 1810, 1810, 1813, 1814, 1814, + + 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, + 1815, 1815, 1815, 1816, 1817, 1817, 1816, 1816, + 1818, 1818, 1815, 1819, 1819, 1816, 1820, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 1821, 1821, 1821, 1821, 1821, 1821, 200, + 200, 1821, 1821, 1821, 1821, 1821, 1821, 200, + 200, 1821, 1821, 1821, 1821, 1821, 1821, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1821, 1821, 1821, 1821, 1821, 1821, 1821, 200, + 1821, 1821, 1821, 1821, 1821, 1821, 1821, 200, + 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, + 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, + + 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, + 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, + 1694, 1694, 1694, 1822, 1694, 1694, 1694, 1694, + 1694, 1694, 1694, 1823, 1824, 1824, 1824, 1824, + + 1825, 1825, 1825, 1825, 1694, 1826, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, + 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, + + 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, + 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, + 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, + 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, + + 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, + 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, + 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, + 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, + + 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, + 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, + 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, + 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, + + 1907, 1907, 1907, 1908, 1908, 1909, 1908, 1908, + 1909, 1908, 1908, 1910, 1908, 1911, 200, 200, + 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, + 1920, 1921, 200, 200, 200, 200, 200, 200, + + 1922, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1922, 1923, 1923, 1923, + + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1922, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1922, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1922, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1922, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1922, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + + 1923, 1923, 1923, 1923, 1922, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + + 1923, 1923, 1923, 1923, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 831, 831, 831, 831, 831, 831, 831, 831, + 831, 831, 831, 831, 831, 831, 831, 831, + + 831, 831, 831, 831, 831, 831, 831, 200, + 200, 200, 200, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, + + 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 200, 200, 200, 200, + + 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, + 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, + 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, + 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, + + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1640, 1640, + 1926, 1640, 1926, 1640, 1640, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1640, + + 1926, 1640, 1926, 1640, 1640, 1926, 1926, 1640, + 1640, 1640, 1926, 1926, 1926, 1926, 1927, 1927, + 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, + 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, + + 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, + 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, + 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, + 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, + + 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, + 1928, 1928, 1928, 1929, 1929, 1929, 1639, 1639, + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + 1930, 1930, 1639, 1639, 1639, 1639, 1639, 1639, + + 1931, 1932, 1933, 1934, 1935, 1936, 1936, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 1937, 1938, 1939, 1940, 1941, + 200, 200, 200, 200, 200, 1942, 1943, 1944, + + 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, + 1945, 1946, 1944, 1944, 1944, 1944, 1944, 1944, + 1944, 1944, 1944, 1944, 1944, 1944, 1944, 297, + 1944, 1944, 1944, 1944, 1944, 297, 1944, 297, + + 1944, 1944, 297, 1944, 1944, 297, 1944, 1944, + 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1945, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1948, 1948, 1948, 1948, 1948, 1948, + 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, + + 1948, 1948, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1590, 1314, + + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 343, 343, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 343, 343, 343, 343, 343, 343, 343, 343, + 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, + 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, - 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, - 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, - 1931, 1931, 1931, 296, 296, 296, 296, 296, - 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, - - 1933, 1934, 1933, 1934, 1934, 1934, 1933, 1933, - 1933, 1934, 1933, 1933, 1934, 1933, 1934, 1934, - 1933, 1934, 296, 296, 296, 296, 296, 296, - 296, 1935, 1935, 1935, 1935, 296, 296, 296, - - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 1936, 1936, 1936, 1936, 1937, 1937, 1938, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - - 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, - 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, - 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, - 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, - - 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, - 1939, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - - 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, 296, - - 1950, 1951, 1950, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, + 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1950, 335, 343, 343, + 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, - 1951, 1951, 1951, 1951, 1951, 1951, 1953, 1954, - 1954, 1955, 1955, 1955, 1955, 1955, 199, 199, - 199, 199, 1956, 1957, 1958, 1959, 1960, 1961, - 1962, 1963, 1964, 1965, 1965, 1965, 1965, 1965, - 1965, 1965, 1965, 1965, 1965, 1965, 1966, 1967, - 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 1976, - 1977, 1977, 1978, 1979, 1979, 1979, 1979, 1979, - 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, - 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, - 1979, 1979, 1980, 1979, 1980, 1979, 1979, 1979, - 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, - 1979, 1979, 1979, 1980, 1979, 1979, 1979, 1979, - 1978, 1978, 1978, 1977, 1977, 1977, 1977, 1978, - 1978, 1981, 1982, 1983, 1983, 1984, 1985, 1985, - 1985, 1985, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, - 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, - 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, - 1986, 199, 199, 199, 199, 199, 199, 199, - 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, - 1995, 1996, 199, 199, 199, 199, 199, 199, - - 1997, 1997, 1997, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1999, - 2000, 2000, 2000, 2000, 2001, 2000, 2002, 2002, - 2000, 2000, 2000, 2003, 2003, 199, 2004, 2005, - 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, - 2014, 2015, 2015, 2015, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, - 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, - 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, - 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, - 2016, 2016, 2016, 2017, 2018, 2019, 2016, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2020, 2020, 2021, 2022, 2022, 2022, 2022, 2022, - 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, - 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, - 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, - 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, + 1952, 1953, 1954, 1955, 1956, 1957, 1957, 1958, + 1959, 1960, 200, 200, 200, 200, 200, 200, + + 171, 171, 171, 171, 1171, 1171, 1171, 1071, + 1071, 1071, 1071, 1071, 1071, 1071, 1675, 1675, + 1961, 1962, 1962, 1963, 1963, 1964, 1965, 1964, + 1965, 1964, 1965, 1964, 1965, 1964, 1965, 1964, + + 1965, 1964, 1965, 1964, 1965, 1602, 1602, 1966, + 1967, 1961, 1961, 1961, 1961, 1963, 1963, 1963, + 1968, 1969, 1970, 200, 1971, 1972, 1973, 1973, + 1962, 1367, 1368, 1367, 1368, 1367, 1368, 1974, + + 1961, 1961, 1975, 1976, 1977, 1978, 1979, 200, + 1961, 1370, 1328, 1961, 200, 200, 200, 200, + 1947, 1947, 1947, 1980, 1947, 343, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 343, 343, 1981, + + 200, 1973, 1961, 1974, 1370, 1328, 1961, 1982, + 1367, 1368, 1961, 1975, 1968, 1976, 1970, 1983, + 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, + 1992, 1993, 1972, 1971, 1994, 1979, 1995, 1973, + + 1961, 1996, 1996, 1996, 1996, 1996, 1996, 1996, + 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, + 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, + 1996, 1996, 1996, 1997, 1961, 1998, 1999, 1963, + + 1999, 2000, 2000, 2000, 2000, 2000, 2000, 2000, + 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, + 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, + 2000, 2000, 2000, 1997, 1979, 1998, 1979, 2001, + + 2002, 2003, 1367, 1368, 2004, 2005, 2006, 2007, + 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, + 2008, 2006, 2006, 2006, 2006, 2006, 2006, 2006, + 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, + + 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, + 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, + 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, + 2006, 2006, 2006, 2006, 2006, 2006, 2009, 2009, + + 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, 200, + + 200, 200, 2010, 2010, 2010, 2010, 2010, 2010, + 200, 200, 2010, 2010, 2010, 2010, 2010, 2010, + 200, 200, 2010, 2010, 2010, 2010, 2010, 2010, + 200, 200, 2010, 2010, 2010, 200, 200, 200, + + 2011, 1370, 1979, 1999, 1598, 1370, 1370, 200, + 1390, 1366, 1366, 1366, 1366, 1390, 1390, 200, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 2012, 2012, 2012, 2013, 51, 2014, 2014, + + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 200, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 200, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 200, 2015, 2015, 200, 2015, + + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 200, 200, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 200, 200, + + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 200, 200, 200, 200, 200, + + 2016, 2017, 2016, 200, 200, 200, 200, 2018, + 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, + 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, + 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, + + 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, + 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, + 2018, 2018, 2018, 2018, 200, 200, 200, 2019, + 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, + + 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, + 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, + 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, + 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, + + 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, + 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, + 2020, 2020, 2020, 2020, 2020, 2021, 2021, 2021, + 2021, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, - 2022, 2022, 2022, 2021, 2021, 2021, 2020, 2020, - 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2021, - 2023, 2022, 2022, 2022, 2022, 2024, 2024, 2025, - 2026, 199, 199, 199, 199, 2027, 199, 199, - 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, - 2036, 2037, 2038, 199, 199, 199, 199, 199, - 199, 2039, 2039, 2039, 2039, 2039, 2039, 2039, - 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, - 2039, 2039, 2039, 2039, 2039, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, + 2022, 2022, 2021, 2023, 2024, 200, 200, 200, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 200, 200, 200, 200, + + 2024, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, + 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, + + 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, + 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, + 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, + 1412, 1412, 1412, 1412, 1412, 1174, 200, 200, + + 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, + 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, + 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, + 2025, 2025, 2025, 2025, 2025, 200, 200, 200, + + 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + + 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + 2026, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1071, 2027, 2027, 2027, 2027, 2027, 2027, 2027, + 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, + 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, + 2027, 2027, 2027, 2027, 200, 200, 200, 200, + + 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, + 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, + 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, + 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2029, + + 2030, 2030, 2030, 2030, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, + 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, + + 2031, 2032, 2031, 2031, 2031, 2031, 2031, 2031, + 2031, 2031, 2032, 200, 200, 200, 200, 200, + 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, + 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, + + 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, + 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, + 2033, 2033, 2033, 2033, 2033, 2033, 2034, 2034, + 2034, 2034, 2034, 200, 200, 200, 200, 200, + + 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, + 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, + 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, + 2035, 2035, 2035, 2035, 2035, 2035, 200, 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, 2037, 2037, 2037, 2037, + + 2037, 2037, 2037, 2037, 200, 200, 200, 200, + 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, + 2038, 2039, 2039, 2039, 2039, 2039, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, - 2040, 2040, 199, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, - 2040, 2040, 2040, 2040, 2041, 2041, 2041, 2042, - 2042, 2042, 2041, 2041, 2042, 2043, 2044, 2042, - 2045, 2045, 2046, 2045, 2045, 2046, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, - 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, - 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, - 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, - 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, - 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2048, - 2049, 2049, 2049, 2048, 2048, 2048, 2048, 2048, - 2048, 2050, 2051, 199, 199, 199, 199, 199, - 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, - 2060, 2061, 199, 199, 199, 199, 199, 199, - - 199, 2062, 2063, 2063, 199, 2064, 2064, 2064, - 2064, 2064, 2064, 2064, 2064, 199, 199, 2064, - 2064, 199, 199, 2064, 2064, 2064, 2064, 2064, + + 2040, 2040, 2040, 2040, 2040, 2040, 2041, 2041, + 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, + 2042, 2042, 2042, 2042, 2042, 2042, 2042, 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, + 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, + 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, + + 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, + 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, + 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, + 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, + + 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, + 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, + 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, + 2045, 2045, 2045, 2045, 2045, 2045, 200, 200, + + 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, + 2054, 2055, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 200, 200, 200, 200, 200, 200, 200, 200, + 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, + 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, + + 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, + 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, + 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, + 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, + + 2057, 2057, 2057, 2057, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 2058, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + 2059, 2059, 2059, 2059, 2059, 2059, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2060, 2060, 2060, 2060, 2060, 2060, 297, 297, + 2060, 297, 2060, 2060, 2060, 2060, 2060, 2060, + 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, + 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, + + 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, + 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, + 2060, 2060, 2060, 2060, 2060, 2060, 297, 2060, + 2060, 297, 297, 297, 2060, 297, 297, 2060, + + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 297, 2062, + 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, + 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, - 2064, 199, 2064, 2064, 2064, 2064, 2064, 2064, - 2064, 199, 2064, 2064, 199, 2064, 2064, 2064, - 2064, 2064, 199, 199, 2065, 2064, 2066, 2063, - 2062, 2063, 2063, 2063, 2063, 199, 199, 2063, - 2063, 199, 199, 2067, 2067, 2068, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 2066, - 199, 199, 199, 199, 199, 2064, 2064, 2064, - 2064, 2064, 2063, 2063, 199, 199, 2069, 2069, - 2069, 2069, 2069, 2069, 2069, 199, 199, 199, - 2069, 2069, 2069, 2069, 2069, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, - 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, - 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, - 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, - 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, - 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, - 2071, 2072, 2072, 2073, 2073, 2073, 2073, 2073, - 2073, 2072, 2074, 2075, 2075, 2071, 2075, 2073, - 2073, 2072, 2076, 2077, 2070, 2070, 2078, 2070, - 199, 199, 199, 199, 199, 199, 199, 199, - 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, - 2087, 2088, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, - 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, - 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, - 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, - 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, - 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2090, - 2091, 2091, 2092, 2092, 2092, 2092, 199, 199, - 2091, 2091, 2093, 2093, 2092, 2092, 2091, 2094, - 2095, 2096, 2097, 2097, 2098, 2098, 2099, 2099, - 2099, 2097, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, - 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, - 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, - 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, - 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, - 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, - 2101, 2101, 2101, 2102, 2102, 2102, 2102, 2102, - 2102, 2102, 2102, 2101, 2101, 2102, 2101, 2103, - 2102, 2104, 2104, 2105, 2100, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2106, 2107, 2108, 2109, 2110, 2111, 2112, 2113, - 2114, 2115, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2117, 2118, 2117, 2118, 2118, - 2117, 2117, 2117, 2117, 2117, 2117, 2119, 2120, - 199, 199, 199, 199, 199, 199, 199, 199, - 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, - 2129, 2130, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, - 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, - 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, - 2131, 2131, 2131, 2131, 2131, 2131, 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, - 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, - 2141, 2142, 2143, 2143, 2143, 2143, 2143, 2143, - 2143, 2143, 2143, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 2144, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, - 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, - 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, - 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, - 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, - 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, - 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, - 2145, 199, 199, 199, 199, 199, 199, 199, - - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2147, - 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, - 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, - 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, - 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, - 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, - 2147, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2149, 2149, 2149, 2149, 2149, - 2149, 2149, 2149, 2149, 2149, 2149, 2149, 199, - 2150, 2150, 2150, 2150, 2151, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 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, 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, 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, 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, - 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, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2153, 2153, 2153, 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, 2154, 2152, 2152, 2152, 2153, 2154, - 2153, 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, 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, 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, - 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, 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, 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, - 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, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 199, 199, 199, 199, 199, 199, 199, - 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, 199, - 2157, 2158, 2159, 2160, 2161, 2162, 2163, 2164, - 2165, 2166, 199, 199, 199, 199, 2167, 2167, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, - 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, - 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, - 2168, 2168, 2168, 2168, 2168, 2168, 199, 199, - 2169, 2169, 2169, 2169, 2169, 2170, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2173, - 2173, 2174, 2175, 2175, 2176, 2176, 2176, 2176, - 2177, 2177, 2177, 2177, 2173, 2176, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, - 2186, 2187, 199, 2188, 2188, 2188, 2188, 2188, - 2188, 2188, 199, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 199, 199, 199, 199, 199, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, - 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, - 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, - 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, - 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, - 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, - 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, - 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, - 2189, 2189, 2189, 2189, 2189, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2189, 2190, 2190, 2190, 2190, 2190, 2190, 2190, - 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, - 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, - 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, - 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, - 2190, 2190, 2190, 2190, 2190, 2190, 2190, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 2191, - 2191, 2191, 2191, 2192, 2192, 2192, 2192, 2192, - 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2193, 2194, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 199, 199, 199, 199, 199, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 199, 199, 199, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 199, 199, 199, 199, 199, 199, 199, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 199, 199, 2196, 2197, 2198, 2199, - 2200, 2200, 2200, 2200, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 199, - 199, 1325, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2202, 2202, - 2202, 2202, 2202, 2202, 2202, 2203, 2204, 2205, - 2205, 2205, 2201, 2201, 2201, 2206, 2203, 2203, - 2203, 2203, 2203, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2208, 2208, 2208, 2208, 2208, - 2208, 2208, 2208, 2201, 2201, 2209, 2209, 2209, - 2209, 2209, 2208, 2208, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2209, 2209, 2209, 2209, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2202, 2202, 2202, 2202, 2202, - 2202, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 2210, 2210, 2210, 1842, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, - 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, - 2211, 2211, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 199, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2212, 199, 2212, 2212, - 199, 199, 2212, 199, 199, 2212, 2212, 199, - 199, 2212, 2212, 2212, 2212, 199, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2213, 2213, - 2213, 2213, 199, 2213, 199, 2213, 2213, 2213, - 2213, 2214, 2213, 2213, 199, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - - 2213, 2213, 2213, 2213, 2212, 2212, 199, 2212, - 2212, 2212, 2212, 199, 199, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 199, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 199, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2212, 2212, 199, 2212, 2212, 2212, 2212, 199, - 2212, 2212, 2212, 2212, 2212, 199, 2212, 199, - 199, 199, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 199, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 1317, 1317, 199, 199, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2215, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2216, 2213, 2213, 2213, 2213, - 2213, 2213, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2215, 2213, 2213, 2213, 2213, - - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2216, 2213, 2213, - 2213, 2213, 2213, 2213, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2215, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2216, - 2213, 2213, 2213, 2213, 2213, 2213, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2215, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2216, 2213, 2213, 2213, 2213, 2213, 2213, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2215, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2216, 2213, 2213, 2213, 2213, - 2213, 2213, 2217, 2218, 199, 199, 2219, 2220, - 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, - 2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226, - 2227, 2228, 2219, 2220, 2221, 2222, 2223, 2224, - 2225, 2226, 2227, 2228, 2219, 2220, 2221, 2222, - 2223, 2224, 2225, 2226, 2227, 2228, 2219, 2220, - 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, - - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 296, 296, 2230, - 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, - 2231, 2231, 2231, 2231, 2231, 2231, 2231, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - - 2232, 2232, 2232, 2232, 342, 2232, 2232, 2232, - 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, - 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, + 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2065, + 2065, 2066, 2066, 2066, 2066, 2066, 2066, 2066, + + 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, + 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, + 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, + 2067, 2067, 2067, 2067, 2067, 2067, 2067, 297, + + 297, 297, 297, 297, 297, 297, 297, 2068, + 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, + 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, + 2069, 2069, 2069, 297, 2069, 2069, 297, 297, + 297, 297, 297, 2070, 2070, 2070, 2070, 2070, + + 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, + 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, + 2071, 2071, 2071, 2071, 2071, 2071, 2072, 2072, + 2072, 2072, 2073, 2073, 297, 297, 297, 2074, + + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 297, 297, 297, 297, 297, 2076, + + 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, + 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, + 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, + 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, + + 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, + 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, + 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, + 297, 297, 297, 297, 2079, 2079, 2078, 2078, + + 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, + 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, + 297, 297, 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, 2079, 2079, 2079, 2079, 2079, + + 2080, 2081, 2081, 2081, 297, 2081, 2081, 297, + 297, 297, 297, 297, 2081, 2082, 2081, 2083, + 2080, 2080, 2080, 2080, 297, 2080, 2080, 2080, + 297, 2080, 2080, 2080, 2080, 2080, 2080, 2080, + + 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, + 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, + 2080, 2080, 2080, 2080, 297, 297, 297, 297, + 2083, 2084, 2082, 297, 297, 297, 297, 2085, + + 2086, 2087, 2088, 2089, 2090, 2090, 2090, 2090, + 297, 297, 297, 297, 297, 297, 297, 297, + 2091, 2091, 2091, 2091, 2091, 2091, 2092, 2092, + 2093, 297, 297, 297, 297, 297, 297, 297, + + 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, + 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, + 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, + 2094, 2094, 2094, 2094, 2094, 2095, 2095, 2096, + + 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, + 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, + 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, + 2097, 2097, 2097, 2097, 2097, 2098, 2098, 2098, + + 2099, 2099, 2099, 2099, 2099, 2100, 2101, 2100, + 2102, 2100, 2100, 2101, 2101, 2103, 2100, 2100, + 2100, 2100, 2100, 2099, 2099, 2099, 2099, 2103, + 2099, 2099, 2099, 2099, 2099, 2100, 2099, 2099, + + 2099, 2100, 2101, 2101, 2100, 2104, 2105, 297, + 297, 297, 297, 2106, 2106, 2106, 2106, 2107, + 2108, 2108, 2108, 2108, 2108, 2108, 2109, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, + 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, + 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, + 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, + + 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, + 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, + 2110, 2110, 2110, 2110, 2110, 2110, 297, 297, + 297, 2111, 2111, 2111, 2111, 2111, 2111, 2111, + + 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, + 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, + 2112, 2112, 2112, 2112, 2112, 2112, 297, 297, + 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, + + 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, + 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, + 2114, 2114, 2114, 297, 297, 297, 297, 297, + 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, + + 2116, 2117, 2116, 2117, 2117, 2117, 2116, 2116, + 2116, 2117, 2116, 2116, 2117, 2116, 2117, 2117, + 2116, 2117, 297, 297, 297, 297, 297, 297, + 297, 2118, 2118, 2118, 2118, 297, 297, 297, + + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 2119, 2119, 2119, 2119, 2120, 2120, 2121, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, + 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, + 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, + 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, + + 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, + 2122, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, + 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, + 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, + 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, + + 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, + 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, + 2124, 2124, 2124, 297, 297, 297, 297, 297, + 297, 297, 2125, 2125, 2125, 2125, 2125, 2125, + + 2126, 2127, 2128, 2129, 2130, 2131, 2132, 2133, + 2134, 2135, 2135, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 297, + + 2136, 2137, 2136, 2138, 2138, 2138, 2138, 2138, + 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, + 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, + 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, + 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, + 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, + 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, + 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, + 2137, 2137, 2137, 2137, 2137, 2137, 2139, 2140, + 2140, 2141, 2141, 2141, 2141, 2141, 200, 200, + 200, 200, 2142, 2143, 2144, 2145, 2146, 2147, + 2148, 2149, 2150, 2151, 2151, 2151, 2151, 2151, + 2151, 2151, 2151, 2151, 2151, 2151, 2152, 2153, + 2154, 2155, 2156, 2157, 2158, 2159, 2160, 2161, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 2162, + 2163, 2163, 2164, 2165, 2165, 2165, 2165, 2165, + 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, + 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, + 2165, 2165, 2166, 2165, 2166, 2165, 2165, 2165, + 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, + 2165, 2165, 2165, 2166, 2165, 2165, 2165, 2165, + 2164, 2164, 2164, 2163, 2163, 2163, 2163, 2164, + 2164, 2167, 2168, 2169, 2169, 2170, 2171, 2171, + 2171, 2171, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, + 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, + 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, + 2172, 200, 200, 200, 200, 200, 200, 200, + 2173, 2174, 2175, 2176, 2177, 2178, 2179, 2180, + 2181, 2182, 200, 200, 200, 200, 200, 200, + + 2183, 2183, 2183, 2184, 2184, 2184, 2184, 2184, + 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, + 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, + 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, + 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2185, + 2186, 2186, 2186, 2186, 2187, 2186, 2188, 2188, + 2186, 2186, 2186, 2189, 2189, 200, 2190, 2191, + 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199, + 2200, 2201, 2201, 2201, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, + 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, + 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, + 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, + 2202, 2202, 2202, 2203, 2204, 2205, 2202, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2206, 2206, 2207, 2208, 2208, 2208, 2208, 2208, + 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, + 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, + 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, + 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, + 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, + 2208, 2208, 2208, 2207, 2207, 2207, 2206, 2206, + 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2207, + 2209, 2208, 2208, 2208, 2208, 2210, 2210, 2211, + 2212, 2213, 2214, 2215, 2215, 2216, 200, 200, + 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, + 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2231, + 200, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, - 342, 2232, 2232, 342, 2232, 342, 342, 2232, - 342, 2232, 2232, 2232, 2232, 2232, 2232, 2232, - 2232, 2232, 2232, 342, 2232, 2232, 2232, 2232, - 342, 2232, 342, 2232, 342, 342, 342, 342, - 342, 342, 2232, 342, 342, 342, 342, 2232, - 342, 2232, 342, 2232, 342, 2232, 2232, 2232, - 342, 2232, 2232, 342, 2232, 342, 342, 2232, - 342, 2232, 342, 2232, 342, 2232, 342, 2232, - 342, 2232, 2232, 342, 2232, 342, 342, 2232, - 2232, 2232, 2232, 342, 2232, 2232, 2232, 2232, - 2232, 2232, 2232, 342, 2232, 2232, 2232, 2232, - 342, 2232, 2232, 2232, 2232, 342, 2232, 342, - 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, - 2232, 2232, 342, 2232, 2232, 2232, 2232, 2232, - 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, - 2232, 2232, 2232, 2232, 342, 342, 342, 342, - 342, 2232, 2232, 2232, 342, 2232, 2232, 2232, - 2232, 2232, 342, 2232, 2232, 2232, 2232, 2232, - 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, - 2232, 2232, 2232, 2232, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 2233, 2233, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 199, 199, 199, 199, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 199, - 199, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1394, - 199, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 199, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2234, 2234, 2235, 2236, 2237, 2238, 2239, 2240, - 2241, 2242, 2243, 2244, 2244, 199, 199, 199, - 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, 199, - 2246, 2247, 2246, 2246, 2246, 2246, 2246, 2246, - 2246, 2246, 2246, 2246, 2246, 2247, 2246, 2247, - 2246, 2246, 2247, 2246, 2246, 2246, 2247, 2246, - 2246, 2246, 2245, 2245, 2245, 2245, 2245, 2248, - 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2250, - 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2250, - 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, - 2249, 2249, 2251, 2251, 199, 199, 199, 199, - 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, - 2249, 2250, 2249, 2250, 2250, 2249, 2249, 2250, - 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, - 2249, 2249, 772, 772, 772, 772, 2252, 2252, - 2245, 2252, 2252, 2252, 2252, 2252, 2252, 2252, - 2252, 2252, 2252, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 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, - - 2254, 2255, 2255, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, - 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, - 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, - 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, - 1543, 1543, 2255, 2255, 2255, 2255, 2255, 2255, - 2255, 2255, 2255, 199, 199, 199, 199, 199, - 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, - 1543, 199, 199, 199, 199, 199, 199, 199, - 2255, 2255, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 199, 199, 199, - 1361, 1361, 1361, 1361, 1361, 1361, 1394, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1394, 199, 199, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1362, 1362, 1394, 1394, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1360, 1360, 1361, - 1361, 1361, 1361, 1361, 1360, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1394, 1361, 1361, - 1361, 1361, 1361, 1394, 1394, 1394, 1394, 199, - 199, 199, 199, 199, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1394, - 1361, 1394, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1360, 1361, 1360, 1361, 1360, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1360, - 1361, 1360, 1360, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1394, 1361, 1361, 1361, 1361, 1394, 1394, 199, - - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1362, 1362, - 2256, 2256, 2256, 2256, 1362, 1362, 1362, 1362, - 1362, 1362, 1394, 199, 199, 199, 199, 199, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 199, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 199, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1362, 1362, 1362, 1362, - 1362, 1362, 1394, 1361, 1361, 1361, 1361, 1361, - - 2257, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 2257, 1361, 1361, 1361, 2257, 1361, 2257, - 1361, 2257, 1361, 2257, 1361, 1361, 1361, 2257, - 1361, 1361, 1361, 1361, 1361, 1361, 2257, 2257, - 1361, 1361, 1361, 1361, 2257, 1361, 2257, 2257, - 1361, 1361, 1361, 1361, 2257, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1394, 1394, 199, 199, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 2258, 2258, - 2258, 2259, 2259, 2259, 1362, 1362, 1362, 1362, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 199, 199, 199, - 1394, 1394, 1394, 1394, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 199, 199, 199, 199, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 199, 199, 199, 199, 199, 199, 199, 199, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 199, 199, 199, 199, 199, 199, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 199, 199, 199, 199, 199, 199, 199, 199, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 2260, 2260, - - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, + 2232, 2232, 2232, 2232, 2232, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, + 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, + 2233, 2233, 200, 2233, 2233, 2233, 2233, 2233, + 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, + 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, + 2233, 2233, 2233, 2233, 2234, 2234, 2234, 2235, + 2235, 2235, 2234, 2234, 2235, 2236, 2237, 2235, + 2238, 2238, 2239, 2238, 2238, 2239, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2240, 2240, 2240, 2240, 2240, 2240, 2240, 200, + 2240, 200, 2240, 2240, 2240, 2240, 200, 2240, + 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, + 2240, 2240, 2240, 2240, 2240, 2240, 200, 2240, + 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, + 2240, 2241, 200, 200, 200, 200, 200, 200, + 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, 2242, 2242, 2242, 2242, 2242, 2243, + 2244, 2244, 2244, 2243, 2243, 2243, 2243, 2243, + 2243, 2245, 2246, 200, 200, 200, 200, 200, + 2247, 2248, 2249, 2250, 2251, 2252, 2253, 2254, + 2255, 2256, 200, 200, 200, 200, 200, 200, + + 2257, 2258, 2259, 2259, 200, 2260, 2260, 2260, + 2260, 2260, 2260, 2260, 2260, 200, 200, 2260, + 2260, 200, 200, 2260, 2260, 2260, 2260, 2260, + 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, + 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, + 2260, 200, 2260, 2260, 2260, 2260, 2260, 2260, + 2260, 200, 2260, 2260, 200, 2260, 2260, 2260, + 2260, 2260, 200, 200, 2261, 2260, 2262, 2259, + 2258, 2259, 2259, 2259, 2259, 200, 200, 2259, + 2259, 200, 200, 2263, 2263, 2264, 200, 200, + 2265, 200, 200, 200, 200, 200, 200, 2262, + 200, 200, 200, 200, 200, 2260, 2260, 2260, + 2260, 2260, 2259, 2259, 200, 200, 2266, 2266, + 2266, 2266, 2266, 2266, 2266, 200, 200, 200, + 2266, 2266, 2266, 2266, 2266, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, + 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, + 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, + 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, + 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, + 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, + 2268, 2269, 2269, 2270, 2270, 2270, 2270, 2270, + 2270, 2269, 2271, 2272, 2272, 2268, 2272, 2270, + 2270, 2269, 2273, 2274, 2267, 2267, 2275, 2267, + 200, 200, 200, 200, 200, 200, 200, 200, + 2276, 2277, 2278, 2279, 2280, 2281, 2282, 2283, + 2284, 2285, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, + 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, + 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, + 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, + 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, + 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2287, + 2288, 2288, 2289, 2289, 2289, 2289, 200, 200, + 2288, 2288, 2290, 2290, 2289, 2289, 2288, 2291, + 2292, 2293, 2294, 2294, 2295, 2295, 2296, 2296, + 2296, 2294, 2297, 2297, 2297, 2297, 2297, 2297, + 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, + 2298, 2298, 2298, 2298, 2299, 2299, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, + 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, + 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, + 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, + 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, + 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, + 2301, 2301, 2301, 2302, 2302, 2302, 2302, 2302, + 2302, 2302, 2302, 2301, 2301, 2302, 2301, 2303, + 2302, 2304, 2304, 2305, 2300, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2306, 2307, 2308, 2309, 2310, 2311, 2312, 2313, + 2314, 2315, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, + 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, + 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, + 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, + 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, + 2316, 2316, 2316, 2317, 2318, 2317, 2318, 2318, + 2317, 2317, 2317, 2317, 2317, 2317, 2319, 2320, + 200, 200, 200, 200, 200, 200, 200, 200, + 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, + 2329, 2330, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, + 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, + 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, + 2331, 2331, 200, 200, 200, 2332, 2332, 2332, + 2333, 2333, 2332, 2332, 2332, 2332, 2333, 2332, + 2332, 2332, 2332, 2334, 200, 200, 200, 200, + 2335, 2336, 2337, 2338, 2339, 2340, 2341, 2342, + 2343, 2344, 2345, 2345, 2346, 2346, 2346, 2347, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 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, + 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, + 2350, 2351, 2352, 2353, 2354, 2355, 2356, 2357, + 2358, 2359, 2360, 2360, 2360, 2360, 2360, 2360, + 2360, 2360, 2360, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 2361, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, + 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, + 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, + 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, + 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, + 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, + 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, + 2362, 200, 200, 200, 200, 200, 200, 200, + + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2364, + 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, + 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, + 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, + 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, + 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, + 2364, 2365, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 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, 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, 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, + 2367, 2367, 2367, 2367, 2367, 2367, 2367, 200, + 2368, 2368, 2368, 2368, 2369, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 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, 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, + 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, 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, + 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, 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, + 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, 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, + 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, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2371, 2371, 2371, 2372, 2372, 2372, 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, 2372, 2370, 2370, 2370, 2371, 2372, + 2371, 2372, 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, 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, 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, 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, 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, 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, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2371, 2372, 2372, 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, + 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, 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, + 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, 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, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 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, 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, 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, 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, + 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, 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, 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, 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, + 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, 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, 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, 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, + 2373, 2373, 2373, 2373, 2373, 2373, 2374, 2375, + 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, 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, 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, 2373, 2373, 2373, 2373, 2373, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 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, 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, 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, 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, + 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, 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, 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, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 200, 200, 200, 200, 200, 200, 200, + 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, 200, + 2378, 2379, 2380, 2381, 2382, 2383, 2384, 2385, + 2386, 2387, 200, 200, 200, 200, 2388, 2388, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 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, 200, 200, + 2390, 2390, 2390, 2390, 2390, 2391, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 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, + 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2394, + 2394, 2395, 2396, 2396, 2397, 2397, 2397, 2397, + 2398, 2398, 2398, 2398, 2394, 2397, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2399, 2400, 2401, 2402, 2403, 2404, 2405, 2406, + 2407, 2408, 200, 2409, 2409, 2409, 2409, 2409, + 2409, 2409, 200, 2392, 2392, 2392, 2392, 2392, + 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, + 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, + 200, 200, 200, 200, 200, 2392, 2392, 2392, + 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, + 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, + 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, + 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, + 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, + 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, + 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, + 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, + 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, + 2410, 2410, 2410, 2410, 2410, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2410, 2411, 2411, 2411, 2411, 2411, 2411, 2411, + 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, + 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, + 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, + 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, + 2411, 2411, 2411, 2411, 2411, 2411, 2411, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 2412, + 2412, 2412, 2412, 2413, 2413, 2413, 2413, 2413, + 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2414, 2415, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 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, + 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, + 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, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 200, 200, 200, 200, 200, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 200, 200, 200, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 200, 200, 200, 200, 200, 200, 200, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 200, 200, 2417, 2418, 2419, 2420, + 2421, 2421, 2421, 2421, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 200, + 200, 1412, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2423, 2423, + 2423, 2423, 2423, 2423, 2423, 2424, 2425, 2426, + 2426, 2426, 2422, 2422, 2422, 2427, 2424, 2424, + 2424, 2424, 2424, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2429, 2429, 2429, 2429, 2429, + 2429, 2429, 2429, 2422, 2422, 2430, 2430, 2430, + 2430, 2430, 2429, 2429, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2430, 2430, 2430, 2430, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2423, 2423, 2423, 2423, 2423, + 2423, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2431, 2431, + 2431, 2431, 2431, 2431, 2431, 2431, 2431, 2431, + 2431, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2432, 2432, 2432, 2022, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2433, 2433, 2433, 2433, 2433, 2433, 2433, 2433, + 2433, 2433, 2433, 2433, 2433, 2433, 2433, 2433, + 2433, 2433, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 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, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 200, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 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, 2434, 200, 2434, 2434, + 200, 200, 2434, 200, 200, 2434, 2434, 200, + 200, 2434, 2434, 2434, 2434, 200, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2435, 2435, + 2435, 2435, 200, 2435, 200, 2435, 2435, 2435, + 2435, 2436, 2435, 2435, 200, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 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, 2434, 2434, 200, 2434, + 2434, 2434, 2434, 200, 200, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 200, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 200, 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, + 2434, 2434, 200, 2434, 2434, 2434, 2434, 200, + 2434, 2434, 2434, 2434, 2434, 200, 2434, 200, + 200, 200, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 200, 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, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 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, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 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, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 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, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 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, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 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, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 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, 1404, 1404, 200, 200, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2437, 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, 2438, 2435, 2435, 2435, 2435, + 2435, 2435, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2437, 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, 2438, 2435, 2435, + 2435, 2435, 2435, 2435, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2437, 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, 2438, + 2435, 2435, 2435, 2435, 2435, 2435, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2437, + 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, 2438, 2435, 2435, 2435, 2435, 2435, 2435, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2437, 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, 2438, 2435, 2435, 2435, 2435, + 2435, 2435, 2439, 2440, 200, 200, 2441, 2442, + 2443, 2444, 2445, 2446, 2447, 2448, 2449, 2450, + 2441, 2442, 2443, 2444, 2445, 2446, 2447, 2448, + 2449, 2450, 2441, 2442, 2443, 2444, 2445, 2446, + 2447, 2448, 2449, 2450, 2441, 2442, 2443, 2444, + 2445, 2446, 2447, 2448, 2449, 2450, 2441, 2442, + 2443, 2444, 2445, 2446, 2447, 2448, 2449, 2450, + + 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, 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, 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, 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, + 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, + + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2451, + 2451, 2451, 2451, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2452, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2452, 2451, 2451, 2453, + 2454, 2453, 2453, 2455, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 2452, 2452, 2452, 2452, 2452, + 200, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 297, 297, 2457, + 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, + 2458, 2458, 2458, 2458, 2458, 2458, 2458, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 2459, 2459, 2459, 2459, 343, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 343, 2459, 2459, 343, 2459, 343, 343, 2459, + 343, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 343, 2459, 2459, 2459, 2459, + 343, 2459, 343, 2459, 343, 343, 343, 343, + 343, 343, 2459, 343, 343, 343, 343, 2459, + 343, 2459, 343, 2459, 343, 2459, 2459, 2459, + 343, 2459, 2459, 343, 2459, 343, 343, 2459, + 343, 2459, 343, 2459, 343, 2459, 343, 2459, + 343, 2459, 2459, 343, 2459, 343, 343, 2459, + 2459, 2459, 2459, 343, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 343, 2459, 2459, 2459, 2459, + 343, 2459, 2459, 2459, 2459, 343, 2459, 343, + 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 343, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 343, 343, 343, 343, + 343, 2459, 2459, 2459, 343, 2459, 2459, 2459, + 2459, 2459, 343, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 2460, 2460, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 200, 200, 200, 200, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 200, + 200, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1483, + 200, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 200, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2461, 2461, 2462, 2463, 2464, 2465, 2466, 2467, + 2468, 2469, 2470, 2471, 2471, 200, 200, 200, + 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, + 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, + 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, + 2472, 2472, 2472, 2472, 2472, 2472, 2472, 200, + 2473, 2474, 2473, 2473, 2473, 2473, 2473, 2473, + 2473, 2473, 2473, 2473, 2473, 2474, 2473, 2474, + 2473, 2473, 2474, 2473, 2473, 2473, 2474, 2473, + 2473, 2473, 2472, 2472, 2472, 2472, 2472, 2475, + 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2477, + 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2477, + 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, + 2476, 2476, 2478, 2478, 200, 200, 200, 200, + 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, + 2476, 2477, 2476, 2477, 2477, 2476, 2476, 2477, + 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, + 2476, 2476, 778, 778, 778, 778, 2479, 2479, + 2472, 2479, 2479, 2479, 2479, 2479, 2479, 2479, + 2479, 2479, 2479, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 2480, 2480, + 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, + 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, + 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, + + 2481, 2482, 2482, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, + 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, + 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, + 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, + 1632, 1632, 2482, 2482, 2482, 2482, 2482, 2482, + 2482, 2482, 2482, 200, 200, 200, 200, 200, + 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, + 1632, 200, 200, 200, 200, 200, 200, 200, + 2482, 2482, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 2483, 2483, 2483, + 1450, 1450, 1450, 1450, 1450, 1450, 1483, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1483, 2483, 2483, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1451, 1451, 1483, 1483, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1449, 1449, 1450, + 1450, 1450, 1450, 1450, 1449, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1483, 1450, 1450, + 1450, 1450, 1450, 1483, 1483, 1483, 1483, 2483, + 2483, 2483, 2483, 2483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 2483, 2483, 2483, 2484, 2484, 2484, 2484, 2484, + + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1483, + 1450, 1483, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1449, 1450, 1449, 1450, 1449, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1449, + 1450, 1449, 1449, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1483, 1450, 1450, 1450, 1450, 1483, 1483, 2483, + + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1451, 1451, + 2485, 2485, 2485, 2485, 1451, 1451, 1451, 1451, + 1451, 1451, 1483, 2483, 2483, 2483, 2483, 2483, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 200, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 200, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1451, 1451, 1451, 1451, + 1451, 1451, 1483, 1450, 1450, 1450, 1450, 1450, + + 2486, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 2486, 1450, 1450, 1450, 2486, 1450, 2486, + 1450, 2486, 1450, 2486, 1450, 1450, 1450, 2486, + 1450, 1450, 1450, 1450, 1450, 1450, 2486, 2486, + 1450, 1450, 1450, 1450, 2486, 1450, 2486, 2486, + 1450, 1450, 1450, 1450, 2486, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1483, 1483, 2483, 2483, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 2487, 2487, + 2487, 2488, 2488, 2488, 1451, 1451, 1451, 1451, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 2483, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 200, 200, 200, + 1483, 1483, 1483, 1483, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 200, 200, 200, 200, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 200, 200, 200, 200, 200, 200, 200, 200, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 200, 200, 200, 200, 200, 200, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 200, 200, 200, 200, 200, 200, 200, 200, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, + 2483, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2483, 2483, 2483, 2483, 2483, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2483, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 2489, 2489, + + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 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, - 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, - 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, - 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, - - 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, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - - 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, 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, 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, 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, - 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, 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, 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, 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, - 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, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 2260, 2260, - - 1265, 2207, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2260, 2260, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 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, 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, 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, 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, + 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, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 1639, 1639, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 2489, 2489, + + 1351, 2428, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2489, 2489, }; #define GET_PROP_INDEX(ucs4) \ @@ -5432,19 +5817,19 @@ static const Properties uc_properties[] = { { 24, 10, 0, 0, -1, -16, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 13, 3, 2 }, { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 80, 0, 0, 0, 12, 2 }, { 14, 0, 0, 0, -1, 0, 0, 32, 0, 0, 0, 0, 0, 32, 1, 17, 0, 8, 7, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 80, 1, 77, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 404, 1, 401, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -32, 0, -32, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 121, 0, 121, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 17, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 83, 0, 0, 0, 0, 0, 0, 1, 17, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 407, 0, 0, 0, 0, 0, 0, 1, 17, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -232, 0, -232, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 80, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 162, 1, 162, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 486, 1, 486, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, -121, 0, 0, 0, 0, 0, -121, 1, 17, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -300, 0, -300, 0, -268, 1, 80, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 195, 0, 195, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, @@ -5471,7 +5856,7 @@ static const Properties uc_properties[] = { { 16, 0, 0, 0, -1, 0, 0, 1, 0, -1, 0, 0, 0, 1, 1, 80, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -2, 0, -1, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -79, 0, -79, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 173, 1, 173, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 497, 1, 497, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, -97, 0, 0, 0, 0, 0, -97, 4, 0, 0, 8, 7, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, -56, 0, 0, 0, 0, 0, -56, 4, 0, 0, 8, 7, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 4, 17, 0, 8, 7, 12, 3 }, @@ -5521,6 +5906,7 @@ static const Properties uc_properties[] = { { 15, 0, 0, 0, -1, 0, 0, 0, 0, -71, 0, -71, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -219, 0, -219, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 1, 33, 1, 33, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 35, 1, 35, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 6, 12, 3 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 8, 12, 2 }, @@ -5576,12 +5962,12 @@ static const Properties uc_properties[] = { { 14, 0, 0, 0, -1, 0, 0, 37, 0, 0, 0, 0, 0, 37, 1, 17, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, 64, 0, 0, 0, 0, 0, 64, 1, 17, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, 63, 0, 0, 0, 0, 0, 63, 1, 17, 0, 8, 7, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 165, 1, 165, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 489, 1, 489, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, 32, 0, 0, 0, 0, 0, 32, 1, 0, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, 32, 0, 0, 0, 0, 0, 32, 1, 17, 0, 8, 7, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -38, 0, -38, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -37, 0, -37, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 169, 1, 169, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 493, 1, 493, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -32, 0, -32, 0, 0, 1, 0, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -31, 0, -31, 0, 1, 1, 0, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -32, 0, -32, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, @@ -5656,7 +6042,7 @@ static const Properties uc_properties[] = { { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12, 6 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 11, 12, 6 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -48, 0, -48, 0, 0, 1, 0, 0, 8, 6, 12, 6 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 129, 1, 126, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 453, 1, 450, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 12, 8, 2 }, { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 17, 6 }, { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 6 }, @@ -5732,16 +6118,16 @@ static const Properties uc_properties[] = { { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 4, 4, 4, 21, 8 }, { 0, 17, 220, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 4, 4, 4, 21, 8 }, { 0, 17, 220, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 4, 4, 4, 21, 8 }, - { 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, + { 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, { 25, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10, 8 }, { 25, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, { 25, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 9, 11, 8 }, @@ -5820,6 +6206,8 @@ static const Properties uc_properties[] = { { 18, 13, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 8, 8, 12, 8 }, { 18, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 8 }, { 18, 13, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 8 }, + { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 8 }, + { 0, 17, 220, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 21, 8 }, { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, 4, 4, 21, 8 }, { 0, 17, 220, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, 4, 4, 21, 8 }, { 0, 17, 27, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, 4, 4, 21, 8 }, @@ -5922,6 +6310,7 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 14 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 12, 14 }, { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 9, 14 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 14 }, { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 4, 4, 21, 15 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 4, 4, 21, 15 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 8, 12, 15 }, @@ -5977,6 +6366,7 @@ static const Properties uc_properties[] = { { 0, 17, 9, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 4, 4, 21, 17 }, { 0, 17, 84, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 4, 4, 21, 17 }, { 0, 17, 91, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 204, 4, 4, 4, 21, 17 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 17 }, { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 4, 4, 4, 21, 17 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 17 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 17 }, @@ -6022,6 +6412,7 @@ static const Properties uc_properties[] = { { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 4, 4, 4, 21, 19 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 7, 4, 4, 21, 19 }, { 0, 17, 9, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 4, 4, 21, 19 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 19 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 19 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 19 }, { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 19 }, @@ -6213,7 +6604,89 @@ static const Properties uc_properties[] = { { 5, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 12, 27 }, { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 12, 27 }, { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 12, 27 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 8, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 37, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 39, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 41, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 43, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 45, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 47, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 49, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 51, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 53, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 55, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 57, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 59, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 61, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 63, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 65, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 67, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 69, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 71, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 73, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 75, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 77, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 79, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 81, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 83, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 85, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 87, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 89, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 91, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 93, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 95, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 97, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 99, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 101, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 103, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 105, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 107, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 109, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 111, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 113, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 115, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 117, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 119, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 121, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 123, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 125, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 127, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 129, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 131, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 133, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 135, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 137, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 139, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 141, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 143, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 145, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 147, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 149, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 151, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 153, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 155, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 157, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 159, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 161, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 163, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 165, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 167, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 169, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 171, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 173, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 175, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 177, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 179, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 181, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 183, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 185, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 187, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 189, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 191, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 193, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 195, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 7, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, -8, 0, -8, 0, -8, 17, 0, 0, 8, 6, 12, 28 }, { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 17, 29 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 8, 12, 29 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 12, 29 }, @@ -6308,8 +6781,6 @@ static const Properties uc_properties[] = { { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 8, 30, 48 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 30, 56 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 8, 30, 56 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 4, 4, 30, 56 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 4, 4, 30, 56 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 14, 9, 11, 56 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 14, 9, 11, 56 }, { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 14, 9, 11, 56 }, @@ -6444,7 +6915,7 @@ static const Properties uc_properties[] = { { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 8, 6, 12, 3 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 80, 0, 8, 6, 12, 4 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 80, 0, 8, 6, 12, 5 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 35, 1, 35, 0, 0, 8, 0, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 197, 1, 197, 0, 0, 8, 0, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 3814, 0, 3814, 0, 0, 8, 0, 0, 8, 6, 12, 3 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 80, 0, 8, 6, 12, 3 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 80, 0, 8, 6, 12, 4 }, @@ -6456,11 +6927,11 @@ static const Properties uc_properties[] = { { 0, 17, 220, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 4, 4, 4, 21, 1 }, { 0, 17, 202, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 4, 4, 4, 21, 1 }, { 0, 17, 233, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 4, 4, 4, 21, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 176, 1, 176, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 179, 1, 179, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 182, 1, 182, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 185, 1, 185, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 188, 1, 188, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 500, 1, 500, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 503, 1, 503, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 506, 1, 506, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 509, 1, 509, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 512, 1, 512, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -59, 0, -59, 0, -58, 2, 81, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 8, 6, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, -7615, 0, 0, 0, 0, 0, -7615, 10, 0, 0, 8, 7, 12, 3 }, @@ -6468,10 +6939,10 @@ static const Properties uc_properties[] = { { 15, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 10, 0, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 8, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -8, 0, 0, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 191, 1, 191, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 194, 1, 194, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 198, 1, 198, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 202, 1, 202, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 515, 1, 515, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 518, 1, 518, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 522, 1, 522, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 526, 1, 526, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 74, 0, 74, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 74, 0, 74, 0, 0, 1, 85, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 86, 0, 86, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, @@ -6484,98 +6955,98 @@ static const Properties uc_properties[] = { { 15, 0, 0, 0, -1, 0, 0, 0, 0, 112, 0, 112, 0, 0, 1, 85, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 126, 0, 126, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 126, 0, 126, 0, 0, 1, 85, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 240, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 243, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 246, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 249, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 252, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 255, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 258, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 261, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 240, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 243, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 246, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 249, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 252, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 255, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 258, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 261, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 264, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 267, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 270, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 273, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 276, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 279, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 282, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 285, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 264, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 267, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 270, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 273, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 276, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 279, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 282, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 285, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 288, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 291, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 294, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 297, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 300, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 303, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 306, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 309, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 288, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 291, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 294, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 297, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 300, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 303, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 306, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 309, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 324, 1, 321, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 312, 0, 9, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 330, 1, 327, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 206, 1, 206, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 361, 1, 357, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 564, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 567, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 570, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 573, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 576, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 579, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 582, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 585, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 564, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 567, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 570, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 573, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 576, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 579, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 582, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 585, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 588, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 591, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 594, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 597, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 600, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 603, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 606, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 609, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 588, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 591, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 594, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 597, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 600, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 603, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 606, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 609, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 612, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 615, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 618, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 621, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 624, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 627, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 630, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 633, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 612, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 615, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 618, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 621, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 624, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 627, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 630, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 633, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 648, 1, 645, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 636, 0, 9, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 654, 1, 651, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 530, 1, 530, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 685, 1, 681, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -74, 0, 0, 0, 0, 0, -74, 1, 17, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -74, 0, 0, 0, 0, 0, -74, 1, 85, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -9, 1, 312, 0, 0, 0, -9, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -9, 1, 636, 0, 0, 0, -9, 1, 17, 0, 8, 7, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -7205, 0, -7205, 0, -7173, 1, 85, 0, 8, 6, 12, 4 }, { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 81, 0, 0, 0, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 336, 1, 333, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 315, 0, 9, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 342, 1, 339, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 209, 1, 209, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 369, 1, 365, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 660, 1, 657, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 639, 0, 9, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 666, 1, 663, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 533, 1, 533, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 693, 1, 689, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -86, 0, 0, 0, 0, 0, -86, 1, 17, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -86, 0, 0, 0, 0, 0, -86, 1, 85, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -9, 1, 315, 0, 0, 0, -9, 1, 17, 0, 8, 7, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 212, 1, 212, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 165, 1, 165, 0, 0, 1, 85, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 216, 1, 216, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 219, 1, 219, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -9, 1, 639, 0, 0, 0, -9, 1, 17, 0, 8, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 536, 1, 536, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 489, 1, 489, 0, 0, 1, 85, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 540, 1, 540, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 543, 1, 543, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -100, 0, 0, 0, 0, 0, -100, 1, 17, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -100, 0, 0, 0, 0, 0, -100, 1, 85, 0, 8, 7, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 223, 1, 223, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 169, 1, 169, 0, 0, 1, 85, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 227, 1, 227, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 547, 1, 547, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 493, 1, 493, 0, 0, 1, 85, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 551, 1, 551, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 7, 0, 7, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 230, 1, 230, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 233, 1, 233, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 554, 1, 554, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 557, 1, 557, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -112, 0, 0, 0, 0, 0, -112, 1, 17, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -112, 0, 0, 0, 0, 0, -112, 1, 85, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -7, 0, 0, 0, 0, 0, -7, 1, 17, 0, 8, 7, 12, 4 }, { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 85, 0, 0, 0, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 348, 1, 345, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 318, 0, 9, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 354, 1, 351, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 237, 1, 237, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 377, 1, 373, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 672, 1, 669, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 642, 0, 9, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 678, 1, 675, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 561, 1, 561, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 701, 1, 697, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -128, 0, 0, 0, 0, 0, -128, 1, 17, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -128, 0, 0, 0, 0, 0, -128, 1, 85, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -126, 0, 0, 0, 0, 0, -126, 1, 17, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -126, 0, 0, 0, 0, 0, -126, 1, 85, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -9, 1, 318, 0, 0, 0, -9, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -9, 1, 642, 0, 0, 0, -9, 1, 17, 0, 8, 7, 12, 4 }, { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 85, 0, 0, 0, 18, 4 }, { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 85, 0, 0, 5, 17, 2 }, { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 80, 0, 0, 5, 17, 2 }, @@ -6661,6 +7132,7 @@ static const Properties uc_properties[] = { { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 9, 2 }, { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 10, 2 }, { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 9, 2 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 10, 2 }, { 13, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0 }, { 2, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 4, 4, 21, 1 }, { 2, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 4, 4, 21, 1 }, @@ -6674,8 +7146,8 @@ static const Properties uc_properties[] = { { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 80, 0, 8, 6, 12, 2 }, { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 80, 0, 0, 0, 9, 2 }, { 14, 0, 0, 0, -1, 0, 0, -7517, 0, 0, 0, 0, 0, -7517, 1, 85, 0, 8, 7, 12, 4 }, - { 14, 0, 0, 0, -1, 0, 1, 37, 0, 0, 0, 0, 1, 37, 1, 85, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 39, 0, 0, 0, 0, 1, 39, 1, 85, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 199, 0, 0, 0, 0, 1, 199, 1, 85, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 201, 0, 0, 0, 0, 1, 201, 1, 85, 0, 8, 7, 12, 3 }, { 29, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12, 2 }, { 14, 0, 0, 0, -1, 0, 0, 28, 0, 0, 0, 0, 0, 28, 1, 0, 0, 8, 7, 12, 3 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 80, 0, 8, 8, 12, 2 }, @@ -6696,6 +7168,7 @@ static const Properties uc_properties[] = { { 4, 0, 0, 0, -1, 0, 0, 0, 0, -16, 0, -16, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 8, 12, 3 }, { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 8, 8, 12, 3 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 2 }, { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 0, 0, 0, 12, 2 }, { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 0, 0, 0, 12, 2 }, { 26, 10, 0, 0, -1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12, 2 }, @@ -6713,6 +7186,7 @@ static const Properties uc_properties[] = { { 26, 10, 0, 0, -1, 2108, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12, 2 }, { 26, 10, 0, 0, -1, 2106, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12, 2 }, { 26, 10, 0, 0, -1, -138, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 15, 2 }, { 26, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 12, 2 }, { 26, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 12, 2 }, { 26, 10, 0, 0, -1, -8, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 12, 2 }, @@ -6803,19 +7277,19 @@ static const Properties uc_properties[] = { { 26, 10, 0, 0, -1, -2108, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 12, 2 }, { 14, 0, 0, 0, -1, 0, 0, 48, 0, 0, 0, 0, 0, 48, 8, 0, 0, 8, 7, 12, 57 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -48, 0, -48, 0, 0, 8, 0, 0, 8, 6, 12, 57 }, - { 14, 0, 0, 0, -1, 0, 1, 41, 0, 0, 0, 0, 1, 41, 9, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 203, 0, 0, 0, 0, 1, 203, 9, 0, 0, 8, 7, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, -3814, 0, 0, 0, 0, 0, -3814, 9, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 43, 0, 0, 0, 0, 1, 43, 9, 0, 0, 8, 7, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 45, 1, 45, 0, 0, 9, 0, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 47, 1, 47, 0, 0, 9, 0, 0, 8, 6, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 49, 0, 0, 0, 0, 1, 49, 10, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 51, 0, 0, 0, 0, 1, 51, 10, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 53, 0, 0, 0, 0, 1, 53, 10, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 55, 0, 0, 0, 0, 1, 55, 11, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 205, 0, 0, 0, 0, 1, 205, 9, 0, 0, 8, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 207, 1, 207, 0, 0, 9, 0, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 209, 1, 209, 0, 0, 9, 0, 0, 8, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 211, 0, 0, 0, 0, 1, 211, 10, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 213, 0, 0, 0, 0, 1, 213, 10, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 215, 0, 0, 0, 0, 1, 215, 10, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 217, 0, 0, 0, 0, 1, 217, 11, 0, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 8, 6, 12, 3 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 80, 0, 8, 6, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 57, 0, 0, 0, 0, 1, 57, 11, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 59, 0, 0, 0, 0, 1, 59, 11, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 219, 0, 0, 0, 0, 1, 219, 11, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 221, 0, 0, 0, 0, 1, 221, 11, 0, 0, 8, 7, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 8, 0, 0, 8, 7, 12, 46 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 8, 0, 0, 8, 6, 12, 46 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 8, 6, 12, 46 }, @@ -6921,6 +7395,7 @@ static const Properties uc_properties[] = { { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 8, 14, 37 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 8, 14, 37 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 8, 14, 37 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 8, 14, 37 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 8, 14, 38 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 8, 5, 38 }, { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 14, 38 }, @@ -6950,6 +7425,7 @@ static const Properties uc_properties[] = { { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, 4, 4, 21, 5 }, { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 8, 8, 12, 5 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 80, 0, 8, 6, 12, 5 }, + { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 21, 5 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 8, 12, 84 }, { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 8, 12, 84 }, { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 4, 4, 4, 21, 84 }, @@ -6959,10 +7435,11 @@ static const Properties uc_properties[] = { { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 12, 2 }, { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 8, 8, 12, 2 }, { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 1, 61, 0, 0, 0, 0, 1, 61, 10, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 223, 0, 0, 0, 0, 1, 223, 10, 0, 0, 8, 7, 12, 3 }, { 28, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 1, 63, 0, 0, 0, 0, 1, 63, 12, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 225, 0, 0, 0, 0, 1, 225, 12, 0, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 8, 6, 12, 3 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 12, 0, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 12, 0, 0, 8, 6, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 13, 0, 0, 8, 7, 12, 3 }, @@ -6970,12 +7447,16 @@ static const Properties uc_properties[] = { { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 6, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 16, 0, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 16, 0, 0, 8, 6, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 65, 0, 0, 0, 0, 1, 65, 13, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 67, 0, 0, 0, 0, 1, 67, 16, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 69, 0, 0, 0, 0, 1, 69, 16, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 71, 0, 0, 0, 0, 1, 71, 16, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 73, 0, 0, 0, 0, 1, 73, 16, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 75, 0, 0, 0, 0, 1, 75, 16, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 227, 0, 0, 0, 0, 1, 227, 13, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 229, 0, 0, 0, 0, 1, 229, 16, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 231, 0, 0, 0, 0, 1, 231, 16, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 233, 0, 0, 0, 0, 1, 233, 16, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 235, 0, 0, 0, 0, 1, 235, 16, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 237, 0, 0, 0, 0, 1, 237, 16, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 239, 0, 0, 0, 0, 1, 239, 17, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 0, 928, 0, 0, 0, 0, 0, 928, 17, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 17, 0, 0, 8, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 17, 0, 0, 8, 6, 12, 3 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 3 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 80, 0, 8, 6, 12, 3 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 8, 8, 12, 3 }, @@ -7006,6 +7487,8 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 14, 9, 11, 71 }, { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 4, 4, 4, 21, 11 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 12, 11 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 18, 11 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 11 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 14, 9, 11, 72 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 14, 9, 11, 72 }, { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 14, 9, 11, 72 }, @@ -7089,9 +7572,91 @@ static const Properties uc_properties[] = { { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 8, 8, 12, 86 }, { 0, 17, 9, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, 4, 4, 21, 86 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 8, 8, 12, 27 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, -928, 0, -928, 0, 0, 16, 0, 0, 8, 6, 12, 3 }, { 28, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 2 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 241, 1, 241, 1, 241, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 243, 1, 243, 1, 243, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 245, 1, 245, 1, 245, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 247, 1, 247, 1, 247, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 249, 1, 249, 1, 249, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 251, 1, 251, 1, 251, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 253, 1, 253, 1, 253, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 255, 1, 255, 1, 255, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 257, 1, 257, 1, 257, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 259, 1, 259, 1, 259, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 261, 1, 261, 1, 261, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 263, 1, 263, 1, 263, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 265, 1, 265, 1, 265, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 267, 1, 267, 1, 267, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 269, 1, 269, 1, 269, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 271, 1, 271, 1, 271, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 273, 1, 273, 1, 273, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 275, 1, 275, 1, 275, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 277, 1, 277, 1, 277, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 279, 1, 279, 1, 279, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 281, 1, 281, 1, 281, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 283, 1, 283, 1, 283, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 285, 1, 285, 1, 285, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 287, 1, 287, 1, 287, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 289, 1, 289, 1, 289, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 291, 1, 291, 1, 291, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 293, 1, 293, 1, 293, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 295, 1, 295, 1, 295, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 297, 1, 297, 1, 297, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 299, 1, 299, 1, 299, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 301, 1, 301, 1, 301, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 303, 1, 303, 1, 303, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 305, 1, 305, 1, 305, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 307, 1, 307, 1, 307, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 309, 1, 309, 1, 309, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 311, 1, 311, 1, 311, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 313, 1, 313, 1, 313, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 315, 1, 315, 1, 315, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 317, 1, 317, 1, 317, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 319, 1, 319, 1, 319, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 321, 1, 321, 1, 321, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 323, 1, 323, 1, 323, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 325, 1, 325, 1, 325, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 327, 1, 327, 1, 327, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 329, 1, 329, 1, 329, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 331, 1, 331, 1, 331, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 333, 1, 333, 1, 333, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 335, 1, 335, 1, 335, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 337, 1, 337, 1, 337, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 339, 1, 339, 1, 339, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 341, 1, 341, 1, 341, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 343, 1, 343, 1, 343, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 345, 1, 345, 1, 345, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 347, 1, 347, 1, 347, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 349, 1, 349, 1, 349, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 351, 1, 351, 1, 351, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 353, 1, 353, 1, 353, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 355, 1, 355, 1, 355, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 357, 1, 357, 1, 357, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 359, 1, 359, 1, 359, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 361, 1, 361, 1, 361, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 363, 1, 363, 1, 363, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 365, 1, 365, 1, 365, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 367, 1, 367, 1, 367, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 369, 1, 369, 1, 369, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 371, 1, 371, 1, 371, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 373, 1, 373, 1, 373, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 375, 1, 375, 1, 375, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 377, 1, 377, 1, 377, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 379, 1, 379, 1, 379, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 381, 1, 381, 1, 381, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 383, 1, 383, 1, 383, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 385, 1, 385, 1, 385, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 387, 1, 387, 1, 387, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 389, 1, 389, 1, 389, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 391, 1, 391, 1, 391, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 393, 1, 393, 1, 393, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 395, 1, 395, 1, 395, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 397, 1, 397, 1, 397, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 399, 1, 399, 1, 399, 17, 0, 0, 8, 6, 12, 28 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 8, 12, 86 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 4, 4, 21, 86 }, { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 4, 4, 4, 21, 86 }, @@ -7116,17 +7681,17 @@ static const Properties uc_properties[] = { { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 85, 0, 0, 8, 14, 37 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 85, 0, 0, 8, 14, 37 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 85, 0, 0, 8, 14, 37 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 89, 1, 86, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 95, 1, 92, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 101, 1, 98, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 108, 1, 104, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 116, 1, 112, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 123, 1, 120, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 135, 1, 132, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 141, 1, 138, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 147, 1, 144, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 153, 1, 150, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 159, 1, 156, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 413, 1, 410, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 419, 1, 416, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 425, 1, 422, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 432, 1, 428, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 440, 1, 436, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 447, 1, 444, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 459, 1, 456, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 465, 1, 462, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 471, 1, 468, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 477, 1, 474, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 483, 1, 480, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 85, 0, 7, 8, 13, 7 }, { 0, 17, 26, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 4, 4, 21, 7 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 85, 0, 7, 8, 13, 7 }, @@ -7254,6 +7819,8 @@ static const Properties uc_properties[] = { { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 118 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 117 }, { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 117 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 128 }, + { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 128 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 8, 8, 12, 64 }, { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 12, 64 }, { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 12, 64 }, @@ -7262,6 +7829,7 @@ static const Properties uc_properties[] = { { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 12, 76 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 8, 8, 12, 98 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 8, 8, 12, 97 }, + { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 97 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 8, 8, 12, 61 }, { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 4, 4, 4, 21, 61 }, { 0, 17, 220, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 4, 4, 4, 21, 61 }, @@ -7305,6 +7873,9 @@ static const Properties uc_properties[] = { { 5, 1, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 121 }, { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 121 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 8, 12, 91 }, + { 14, 1, 0, 0, -1, 0, 0, 64, 0, 0, 0, 0, 0, 64, 17, 0, 0, 8, 7, 12, 130 }, + { 15, 1, 0, 0, -1, 0, 0, 0, 0, -64, 0, -64, 0, 0, 17, 0, 0, 8, 6, 12, 130 }, + { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 130 }, { 5, 5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 12, 8 }, { 5, 5, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 12, 8 }, { 5, 5, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 12, 8 }, @@ -7392,6 +7963,9 @@ static const Properties uc_properties[] = { { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 17, 100 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 12, 100 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 17, 100 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 100 }, + { 0, 17, 7, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 21, 100 }, + { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 21, 100 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 12, 12, 100 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 14, 9, 11, 100 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 14, 9, 11, 100 }, @@ -7404,6 +7978,10 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 14, 9, 11, 100 }, { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 14, 9, 11, 100 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 100 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 18, 100 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 100 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 17, 100 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 12, 17, 100 }, { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 20 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 109 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 7, 4, 4, 21, 109 }, @@ -7412,6 +7990,8 @@ static const Properties uc_properties[] = { { 0, 17, 7, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 4, 4, 4, 21, 109 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 12, 17, 109 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 109 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 129 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 12, 17, 129 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 123 }, { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 4, 4, 4, 21, 123 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 7, 4, 4, 21, 123 }, @@ -7427,6 +8007,7 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 14, 9, 11, 123 }, { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 14, 9, 11, 123 }, { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 14, 9, 11, 123 }, + { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 21, 107 }, { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 4, 4, 4, 21, 107 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 7, 4, 4, 21, 107 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 107 }, @@ -7434,6 +8015,7 @@ static const Properties uc_properties[] = { { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 204, 4, 4, 4, 21, 107 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 7, 4, 4, 21, 107 }, { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 7, 4, 4, 21, 107 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 107 }, { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 4, 4, 4, 21, 107 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 124 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 204, 4, 4, 4, 21, 124 }, @@ -7465,6 +8047,9 @@ static const Properties uc_properties[] = { { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 12, 17, 122 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 6, 122 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 122 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 12, 17, 122 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 122 }, + { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 21, 122 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 114 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 7, 4, 4, 21, 114 }, { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 4, 4, 4, 21, 114 }, @@ -7496,6 +8081,23 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 14, 9, 11, 102 }, { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 14, 9, 11, 102 }, { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 14, 9, 11, 102 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 8, 30, 126 }, + { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 30, 126 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 7, 4, 4, 30, 126 }, + { 0, 17, 9, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 30, 126 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 30, 126 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 12, 17, 126 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 30, 126 }, { 14, 0, 0, 0, -1, 0, 0, 32, 0, 0, 0, 0, 0, 32, 16, 0, 0, 8, 7, 12, 125 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -32, 0, -32, 0, 0, 16, 0, 0, 8, 6, 12, 125 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 14, 9, 11, 125 }, @@ -7513,6 +8115,7 @@ static const Properties uc_properties[] = { { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 119 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 8, 8, 12, 63 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 63 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 63 }, { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 8, 8, 12, 63 }, { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 63 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 17, 63 }, @@ -7520,6 +8123,9 @@ static const Properties uc_properties[] = { { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 8, 12, 81 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 8, 0, 81 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 8, 1, 81 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 127 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 0, 127 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 1, 127 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 8, 8, 12, 84 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 115 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 14, 9, 11, 115 }, @@ -7575,6 +8181,7 @@ static const Properties uc_properties[] = { { 10, 18, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 3, 4, 4, 21, 2 }, { 0, 17, 220, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 4, 4, 4, 21, 1 }, { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 4, 4, 4, 21, 1 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 2 }, { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 4, 4, 4, 21, 4 }, { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 12, 2 }, { 14, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 80, 0, 8, 7, 12, 2 }, @@ -7594,6 +8201,11 @@ static const Properties uc_properties[] = { { 3, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 80, 0, 14, 9, 11, 2 }, { 3, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 80, 0, 14, 9, 11, 2 }, { 3, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 80, 0, 14, 9, 11, 2 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 131 }, + { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 21, 131 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 17, 131 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 12, 17, 131 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 131 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 113 }, { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 113 }, { 0, 17, 220, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 4, 4, 4, 21, 113 }, @@ -7621,6 +8233,8 @@ static const Properties uc_properties[] = { { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 5, 5, 0, 28, 2 }, { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 80, 0, 0, 0, 14, 34 }, { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 80, 0, 0, 0, 14, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 14, 2 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 2 }, { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 12, 2 }, { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 14, 2 }, { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 13, 3, 2 }, @@ -7694,7 +8308,88 @@ static const ushort specialCaseMap[] = { 0x1, 0x2c6e, 0x1, 0x2c64, 0x1, 0xa7b1, + 0x1, 0xa7b2, 0x1, 0xa7b0, + 0x1, 0xab70, + 0x1, 0xab71, + 0x1, 0xab72, + 0x1, 0xab73, + 0x1, 0xab74, + 0x1, 0xab75, + 0x1, 0xab76, + 0x1, 0xab77, + 0x1, 0xab78, + 0x1, 0xab79, + 0x1, 0xab7a, + 0x1, 0xab7b, + 0x1, 0xab7c, + 0x1, 0xab7d, + 0x1, 0xab7e, + 0x1, 0xab7f, + 0x1, 0xab80, + 0x1, 0xab81, + 0x1, 0xab82, + 0x1, 0xab83, + 0x1, 0xab84, + 0x1, 0xab85, + 0x1, 0xab86, + 0x1, 0xab87, + 0x1, 0xab88, + 0x1, 0xab89, + 0x1, 0xab8a, + 0x1, 0xab8b, + 0x1, 0xab8c, + 0x1, 0xab8d, + 0x1, 0xab8e, + 0x1, 0xab8f, + 0x1, 0xab90, + 0x1, 0xab91, + 0x1, 0xab92, + 0x1, 0xab93, + 0x1, 0xab94, + 0x1, 0xab95, + 0x1, 0xab96, + 0x1, 0xab97, + 0x1, 0xab98, + 0x1, 0xab99, + 0x1, 0xab9a, + 0x1, 0xab9b, + 0x1, 0xab9c, + 0x1, 0xab9d, + 0x1, 0xab9e, + 0x1, 0xab9f, + 0x1, 0xaba0, + 0x1, 0xaba1, + 0x1, 0xaba2, + 0x1, 0xaba3, + 0x1, 0xaba4, + 0x1, 0xaba5, + 0x1, 0xaba6, + 0x1, 0xaba7, + 0x1, 0xaba8, + 0x1, 0xaba9, + 0x1, 0xabaa, + 0x1, 0xabab, + 0x1, 0xabac, + 0x1, 0xabad, + 0x1, 0xabae, + 0x1, 0xabaf, + 0x1, 0xabb0, + 0x1, 0xabb1, + 0x1, 0xabb2, + 0x1, 0xabb3, + 0x1, 0xabb4, + 0x1, 0xabb5, + 0x1, 0xabb6, + 0x1, 0xabb7, + 0x1, 0xabb8, + 0x1, 0xabb9, + 0x1, 0xabba, + 0x1, 0xabbb, + 0x1, 0xabbc, + 0x1, 0xabbd, + 0x1, 0xabbe, + 0x1, 0xabbf, 0x1, 0xa77d, 0x1, 0x6b, 0x1, 0xe5, @@ -7716,6 +8411,87 @@ static const ushort specialCaseMap[] = { 0x1, 0x26c, 0x1, 0x29e, 0x1, 0x287, + 0x1, 0x29d, + 0x1, 0x13a0, + 0x1, 0x13a1, + 0x1, 0x13a2, + 0x1, 0x13a3, + 0x1, 0x13a4, + 0x1, 0x13a5, + 0x1, 0x13a6, + 0x1, 0x13a7, + 0x1, 0x13a8, + 0x1, 0x13a9, + 0x1, 0x13aa, + 0x1, 0x13ab, + 0x1, 0x13ac, + 0x1, 0x13ad, + 0x1, 0x13ae, + 0x1, 0x13af, + 0x1, 0x13b0, + 0x1, 0x13b1, + 0x1, 0x13b2, + 0x1, 0x13b3, + 0x1, 0x13b4, + 0x1, 0x13b5, + 0x1, 0x13b6, + 0x1, 0x13b7, + 0x1, 0x13b8, + 0x1, 0x13b9, + 0x1, 0x13ba, + 0x1, 0x13bb, + 0x1, 0x13bc, + 0x1, 0x13bd, + 0x1, 0x13be, + 0x1, 0x13bf, + 0x1, 0x13c0, + 0x1, 0x13c1, + 0x1, 0x13c2, + 0x1, 0x13c3, + 0x1, 0x13c4, + 0x1, 0x13c5, + 0x1, 0x13c6, + 0x1, 0x13c7, + 0x1, 0x13c8, + 0x1, 0x13c9, + 0x1, 0x13ca, + 0x1, 0x13cb, + 0x1, 0x13cc, + 0x1, 0x13cd, + 0x1, 0x13ce, + 0x1, 0x13cf, + 0x1, 0x13d0, + 0x1, 0x13d1, + 0x1, 0x13d2, + 0x1, 0x13d3, + 0x1, 0x13d4, + 0x1, 0x13d5, + 0x1, 0x13d6, + 0x1, 0x13d7, + 0x1, 0x13d8, + 0x1, 0x13d9, + 0x1, 0x13da, + 0x1, 0x13db, + 0x1, 0x13dc, + 0x1, 0x13dd, + 0x1, 0x13de, + 0x1, 0x13df, + 0x1, 0x13e0, + 0x1, 0x13e1, + 0x1, 0x13e2, + 0x1, 0x13e3, + 0x1, 0x13e4, + 0x1, 0x13e5, + 0x1, 0x13e6, + 0x1, 0x13e7, + 0x1, 0x13e8, + 0x1, 0x13e9, + 0x1, 0x13ea, + 0x1, 0x13eb, + 0x1, 0x13ec, + 0x1, 0x13ed, + 0x1, 0x13ee, + 0x1, 0x13ef, 0x2, 0x53, 0x73, 0x2, 0x53, 0x53, 0x2, 0x69, 0x307, diff --git a/src/corelib/tools/qunicodetables_p.h b/src/corelib/tools/qunicodetables_p.h index 43c1f4e197..1fbcc39666 100644 --- a/src/corelib/tools/qunicodetables_p.h +++ b/src/corelib/tools/qunicodetables_p.h @@ -31,7 +31,7 @@ ** ****************************************************************************/ -/* This file is autogenerated from the Unicode 7.0 database. Do not edit */ +/* This file is autogenerated from the Unicode 8.0 database. Do not edit */ // // W A R N I N G @@ -51,7 +51,7 @@ QT_BEGIN_NAMESPACE -#define UNICODE_DATA_VERSION QChar::Unicode_7_0 +#define UNICODE_DATA_VERSION QChar::Unicode_8_0 namespace QUnicodeTables { -- cgit v1.2.3 From 7aba75ffc52e5dce4b3ada12668611be2ad6787e Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Fri, 25 Sep 2015 13:23:46 +0200 Subject: Don't let closed http sockets pass as valid connections A QAbstractSocket can be close()'d at any time, independently of its current connection state. being closed means that we cannot use it to read or write data, but internally it might still have some data to send or receive, for example to an http server. We can even get a connected() signal after close()'ing the socket. We need to catch this condition and mark any pending data not yet written to the socket for resending. (cherry picked from commit 0df5d079290b4c3b13e58e9397fabdc1dfdba96b) Task-number: QTBUG-48326 Change-Id: I67d9ad36f7288c9c6bef51aa6253d7b187737601 Reviewed-by: Ulf Hermann Reviewed-by: Markus Goetz (Woboq GmbH) --- src/network/access/qhttpnetworkconnectionchannel.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp index 0820a8d63e..453a0c71b6 100644 --- a/src/network/access/qhttpnetworkconnectionchannel.cpp +++ b/src/network/access/qhttpnetworkconnectionchannel.cpp @@ -272,7 +272,12 @@ bool QHttpNetworkConnectionChannel::ensureConnection() QAbstractSocket::SocketState socketState = socket->state(); // resend this request after we receive the disconnected signal - if (socketState == QAbstractSocket::ClosingState) { + // If !socket->isOpen() then we have already called close() on the socket, but there was still a + // pending connectToHost() for which we hadn't seen a connected() signal, yet. The connected() + // has now arrived (as indicated by socketState != ClosingState), but we cannot send anything on + // such a socket anymore. + if (socketState == QAbstractSocket::ClosingState || + (socketState != QAbstractSocket::UnconnectedState && !socket->isOpen())) { if (reply) resendCurrent = true; return false; -- cgit v1.2.3 From 4d76352ae0ebb279989c73e8a8938c641ac42d77 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Wed, 4 Nov 2015 01:47:29 +0100 Subject: QUtf8: remove an unused variable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 'need' was never anything but zero, so drop it. Change-Id: I4b52107afc7ed47c19ae1942cef0c92cbd0e1a36 Reviewed-by: Olivier Goffart (Woboq GmbH) Reviewed-by: Jędrzej Nowacki --- src/corelib/codecs/qutfcodec.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/codecs/qutfcodec.cpp b/src/corelib/codecs/qutfcodec.cpp index 98d4b2e4e3..a64b3d167e 100644 --- a/src/corelib/codecs/qutfcodec.cpp +++ b/src/corelib/codecs/qutfcodec.cpp @@ -296,7 +296,6 @@ QString QUtf8::convertToUnicode(const char *chars, int len, QTextCodec::Converte { bool headerdone = false; ushort replacement = QChar::ReplacementCharacter; - int need = 0; int invalid = 0; int res; uchar ch = 0; @@ -311,7 +310,7 @@ QString QUtf8::convertToUnicode(const char *chars, int len, QTextCodec::Converte // 1 of 2 bytes invalid continuation +1 (need to insert replacement and restart) // 2 of 3 bytes same +1 (same) // 3 of 4 bytes same +1 (same) - QString result(need + len + 1, Qt::Uninitialized); + QString result(len + 1, Qt::Uninitialized); ushort *dst = reinterpret_cast(const_cast(result.constData())); const uchar *src = reinterpret_cast(chars); -- cgit v1.2.3 From 491ccf3b85d0ba863445ead04b5e122d79e94865 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Sat, 25 Jul 2015 12:03:28 +0200 Subject: Mark qt_from_latin1() as nothrow It's used from a different TU, too, so we can't rely on the compiler to inspect it to draw this conclusion itself. This function has technically not a wide contract, because the output buffer needs to be large enough to hold the result. However, this precondition cannot be checked from within the function, therefore no assertion can ever be added and the nothrow marker becomes acceptable (even desireable). Change-Id: I2dc6c4f3d9d8147c6483865c5c4bbc8e9af291b7 Reviewed-by: Olivier Goffart (Woboq GmbH) --- src/corelib/codecs/qtextcodec.cpp | 2 +- src/corelib/tools/qstring.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/codecs/qtextcodec.cpp b/src/corelib/codecs/qtextcodec.cpp index 88987865c4..c55f93b949 100644 --- a/src/corelib/codecs/qtextcodec.cpp +++ b/src/corelib/codecs/qtextcodec.cpp @@ -993,7 +993,7 @@ QString QTextDecoder::toUnicode(const char *chars, int len) } // in qstring.cpp: -void qt_from_latin1(ushort *dst, const char *str, size_t size); +void qt_from_latin1(ushort *dst, const char *str, size_t size) Q_DECL_NOTHROW; /*! \overload diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index 13d8a3864b..a88b48c767 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -203,7 +203,7 @@ inline RetType UnrollTailLoop<0>::exec(int, RetType returnIfExited, Functor1, Fu #endif // conversion between Latin 1 and UTF-16 -void qt_from_latin1(ushort *dst, const char *str, size_t size) +void qt_from_latin1(ushort *dst, const char *str, size_t size) Q_DECL_NOTHROW { /* SIMD: * Unpacking with SSE has been shown to improve performance on recent CPUs -- cgit v1.2.3 From 110a8c339fa078a4edd09a70239280e482b149f1 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Tue, 3 Nov 2015 08:04:15 -0500 Subject: Remove qatomic_mips.h: the 3-operand testAndSet is broken MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The "previous" value is always 1 when the compare-and-swap succeeded, instead of the previous value. Instead of fixing this, let's just remove this file a bit earlier than the rest. All of them will be removed in Qt 5.7 anyway, so let's leave MIPS atomics to the compiler. Task-number: QTBUG-49168 Change-Id: Idba8c29717f34c70a58fffff14133304595165f5 Reviewed-by: Dmitry Shachnev Reviewed-by: Oswald Buddenhagen Reviewed-by: Marc Mutz Reviewed-by: Thiago Macieira Reviewed-by: Lisandro Damián Nicanor Pérez Meyer --- src/corelib/arch/qatomic_mips.h | 351 -------------------------------------- src/corelib/thread/qbasicatomic.h | 2 - 2 files changed, 353 deletions(-) delete mode 100644 src/corelib/arch/qatomic_mips.h (limited to 'src') diff --git a/src/corelib/arch/qatomic_mips.h b/src/corelib/arch/qatomic_mips.h deleted file mode 100644 index 8c400e0076..0000000000 --- a/src/corelib/arch/qatomic_mips.h +++ /dev/null @@ -1,351 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Copyright (C) 2011 Thiago Macieira -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL21$ -** 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 http://www.qt.io/terms-conditions. For further -** information use the contact form at http://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 2.1 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QATOMIC_MIPS_H -#define QATOMIC_MIPS_H - -#include - -QT_BEGIN_NAMESPACE - -#if 0 -// silence syncqt warnings -QT_END_NAMESPACE -#pragma qt_sync_skip_header_check -#pragma qt_sync_stop_processing -#endif - -#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT_TEST_AND_SET_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_ALWAYS_NATIVE - -#define Q_ATOMIC_INT32_IS_SUPPORTED -#define Q_ATOMIC_INT32_REFERENCE_COUNTING_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT32_TEST_AND_SET_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT32_FETCH_AND_STORE_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT32_FETCH_AND_ADD_IS_ALWAYS_NATIVE - -#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE -#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE -#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_ALWAYS_NATIVE - -template struct QBasicAtomicOps: QGenericAtomicOps > -{ - template - static void acquireMemoryFence(const T &) Q_DECL_NOTHROW; - template - static void releaseMemoryFence(const T &) Q_DECL_NOTHROW; - template - static void orderedMemoryFence(const T &) Q_DECL_NOTHROW; - - static inline Q_DECL_CONSTEXPR bool isReferenceCountingNative() Q_DECL_NOTHROW { return true; } - template static bool ref(T &_q_value) Q_DECL_NOTHROW; - template static bool deref(T &_q_value) Q_DECL_NOTHROW; - - static inline Q_DECL_CONSTEXPR bool isTestAndSetNative() Q_DECL_NOTHROW { return true; } - static inline Q_DECL_CONSTEXPR bool isTestAndSetWaitFree() Q_DECL_NOTHROW { return false; } - template static bool - testAndSetRelaxed(T &_q_value, T expectedValue, T newValue, T *currentValue = 0) Q_DECL_NOTHROW; - - static inline Q_DECL_CONSTEXPR bool isFetchAndStoreNative() Q_DECL_NOTHROW { return true; } - template static T fetchAndStoreRelaxed(T &_q_value, T newValue) Q_DECL_NOTHROW; - - static inline Q_DECL_CONSTEXPR bool isFetchAndAddNative() Q_DECL_NOTHROW { return true; } - template static - T fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW; -}; - -template struct QAtomicOps : QBasicAtomicOps -{ - typedef T Type; -}; - -#if defined(Q_CC_GNU) - -#if defined(_MIPS_ARCH_MIPS1) || (!defined(Q_CC_CLANG) && defined(__mips) && __mips - 0 == 1) -# error "Sorry, the MIPS1 architecture is not supported" -# error "please set '-march=' to your architecture (e.g., -march=mips32)" -#endif - -template template inline -void QBasicAtomicOps::acquireMemoryFence(const T &) Q_DECL_NOTHROW -{ - asm volatile (".set push\n" - ".set mips32\n" - "sync 0x11\n" - ".set pop\n" ::: "memory"); -} - -template template inline -void QBasicAtomicOps::releaseMemoryFence(const T &) Q_DECL_NOTHROW -{ - asm volatile (".set push\n" - ".set mips32\n" - "sync 0x12\n" - ".set pop\n" ::: "memory"); -} - -template template inline -void QBasicAtomicOps::orderedMemoryFence(const T &) Q_DECL_NOTHROW -{ - asm volatile (".set push\n" - ".set mips32\n" - "sync 0\n" - ".set pop\n" ::: "memory"); -} - -template<> template inline -bool QBasicAtomicOps<4>::ref(T &_q_value) Q_DECL_NOTHROW -{ - T originalValue; - T newValue; - asm volatile("0:\n" - "ll %[originalValue], %[_q_value]\n" - "addiu %[newValue], %[originalValue], %[one]\n" - "sc %[newValue], %[_q_value]\n" - "beqz %[newValue], 0b\n" - "nop\n" - : [originalValue] "=&r" (originalValue), - [_q_value] "+m" (_q_value), - [newValue] "=&r" (newValue) - : [one] "i" (1) - : "cc", "memory"); - return originalValue != T(-1); -} - -template<> template inline -bool QBasicAtomicOps<4>::deref(T &_q_value) Q_DECL_NOTHROW -{ - T originalValue; - T newValue; - asm volatile("0:\n" - "ll %[originalValue], %[_q_value]\n" - "addiu %[newValue], %[originalValue], %[minusOne]\n" - "sc %[newValue], %[_q_value]\n" - "beqz %[newValue], 0b\n" - "nop\n" - : [originalValue] "=&r" (originalValue), - [_q_value] "+m" (_q_value), - [newValue] "=&r" (newValue) - : [minusOne] "i" (-1) - : "cc", "memory"); - return originalValue != 1; -} - -template<> template inline -bool QBasicAtomicOps<4>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue, T *currentValue) Q_DECL_NOTHROW -{ - T result; - T tempValue; - asm volatile("0:\n" - "ll %[tempValue], %[_q_value]\n" - "xor %[result], %[tempValue], %[expectedValue]\n" - "bnez %[result], 0f\n" - "nop\n" - "move %[tempValue], %[newValue]\n" - "sc %[tempValue], %[_q_value]\n" - "beqz %[tempValue], 0b\n" - "nop\n" - "0:\n" - : [result] "=&r" (result), - [tempValue] "=&r" (tempValue), - [_q_value] "+m" (_q_value) - : [expectedValue] "r" (expectedValue), - [newValue] "r" (newValue) - : "cc", "memory"); - if (currentValue) - *currentValue = tempValue; - return result == 0; -} - -template<> template inline -T QBasicAtomicOps<4>::fetchAndStoreRelaxed(T &_q_value, T newValue) Q_DECL_NOTHROW -{ - T originalValue; - T tempValue; - asm volatile("0:\n" - "ll %[originalValue], %[_q_value]\n" - "move %[tempValue], %[newValue]\n" - "sc %[tempValue], %[_q_value]\n" - "beqz %[tempValue], 0b\n" - "nop\n" - : [originalValue] "=&r" (originalValue), - [tempValue] "=&r" (tempValue), - [_q_value] "+m" (_q_value) - : [newValue] "r" (newValue) - : "cc", "memory"); - return originalValue; -} - -template<> template inline -T QBasicAtomicOps<4>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW -{ - T originalValue; - T newValue; - asm volatile("0:\n" - "ll %[originalValue], %[_q_value]\n" - "addu %[newValue], %[originalValue], %[valueToAdd]\n" - "sc %[newValue], %[_q_value]\n" - "beqz %[newValue], 0b\n" - "nop\n" - : [originalValue] "=&r" (originalValue), - [_q_value] "+m" (_q_value), - [newValue] "=&r" (newValue) - : [valueToAdd] "r" (valueToAdd * QAtomicAdditiveType::AddScale) - : "cc", "memory"); - return originalValue; -} - -#if defined(Q_PROCESSOR_MIPS_64) - -#define Q_ATOMIC_INT64_IS_SUPPORTED -#define Q_ATOMIC_INT64_REFERENCE_COUNTING_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT64_TEST_AND_SET_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT64_FETCH_AND_STORE_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT64_FETCH_AND_ADD_IS_ALWAYS_NATIVE - -template<> struct QAtomicOpsSupport<8> { enum { IsSupported = 1 }; }; - -template<> template inline -bool QBasicAtomicOps<8>::ref(T &_q_value) Q_DECL_NOTHROW -{ - T originalValue; - T newValue; - asm volatile("0:\n" - "lld %[originalValue], %[_q_value]\n" - "addiu %[newValue], %[originalValue], %[one]\n" - "scd %[newValue], %[_q_value]\n" - "beqz %[newValue], 0b\n" - "nop\n" - : [originalValue] "=&r" (originalValue), - [_q_value] "+m" (_q_value), - [newValue] "=&r" (newValue) - : [one] "i" (1) - : "cc", "memory"); - return originalValue != T(-1); -} - -template<> template inline -bool QBasicAtomicOps<8>::deref(T &_q_value) Q_DECL_NOTHROW -{ - T originalValue; - T newValue; - asm volatile("0:\n" - "lld %[originalValue], %[_q_value]\n" - "addiu %[newValue], %[originalValue], %[minusOne]\n" - "scd %[newValue], %[_q_value]\n" - "beqz %[newValue], 0b\n" - "nop\n" - : [originalValue] "=&r" (originalValue), - [_q_value] "+m" (_q_value), - [newValue] "=&r" (newValue) - : [minusOne] "i" (-1) - : "cc", "memory"); - return originalValue != 1; -} - -template<> template inline -bool QBasicAtomicOps<8>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue, T *currentValue) Q_DECL_NOTHROW -{ - T result; - T tempValue; - asm volatile("0:\n" - "lld %[tempValue], %[_q_value]\n" - "xor %[result], %[tempValue], %[expectedValue]\n" - "bnez %[result], 0f\n" - "nop\n" - "move %[tempValue], %[newValue]\n" - "scd %[tempValue], %[_q_value]\n" - "beqz %[tempValue], 0b\n" - "nop\n" - "0:\n" - : [result] "=&r" (result), - [tempValue] "=&r" (tempValue), - [_q_value] "+m" (_q_value) - : [expectedValue] "r" (expectedValue), - [newValue] "r" (newValue) - : "cc", "memory"); - if (currentValue) - *currentValue = tempValue; - return result == 0; -} - -template<> template inline -T QBasicAtomicOps<8>::fetchAndStoreRelaxed(T &_q_value, T newValue) Q_DECL_NOTHROW -{ - T originalValue; - T tempValue; - asm volatile("0:\n" - "lld %[originalValue], %[_q_value]\n" - "move %[tempValue], %[newValue]\n" - "scd %[tempValue], %[_q_value]\n" - "beqz %[tempValue], 0b\n" - "nop\n" - : [originalValue] "=&r" (originalValue), - [tempValue] "=&r" (tempValue), - [_q_value] "+m" (_q_value) - : [newValue] "r" (newValue) - : "cc", "memory"); - return originalValue; -} - -template<> template inline -T QBasicAtomicOps<8>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW -{ - T originalValue; - T newValue; - asm volatile("0:\n" - "lld %[originalValue], %[_q_value]\n" - "addu %[newValue], %[originalValue], %[valueToAdd]\n" - "scd %[newValue], %[_q_value]\n" - "beqz %[newValue], 0b\n" - "nop\n" - : [originalValue] "=&r" (originalValue), - [_q_value] "+m" (_q_value), - [newValue] "=&r" (newValue) - : [valueToAdd] "r" (valueToAdd * QAtomicAdditiveType::AddScale) - : "cc", "memory"); - return originalValue; -} - -#endif // MIPS64 - -#else -# error "This compiler for MIPS is not supported" -#endif // Q_CC_GNU - -QT_END_NAMESPACE - -#endif // QATOMIC_MIPS_H diff --git a/src/corelib/thread/qbasicatomic.h b/src/corelib/thread/qbasicatomic.h index ecf39d699f..3c16cf5b9c 100644 --- a/src/corelib/thread/qbasicatomic.h +++ b/src/corelib/thread/qbasicatomic.h @@ -60,8 +60,6 @@ # include "QtCore/qatomic_armv5.h" #elif defined(Q_PROCESSOR_IA64) # include "QtCore/qatomic_ia64.h" -#elif defined(Q_PROCESSOR_MIPS) -# include "QtCore/qatomic_mips.h" #elif defined(Q_PROCESSOR_X86) # include -- cgit v1.2.3 From 0d14cdd30e66d0d65d3aa6ab2f08bba4b0f0bceb Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 5 Nov 2015 11:29:30 +0100 Subject: QWindowsEGLContext: Fix overly specific EGL include path. Allow for using other EGL implementations besides ANGLE. Change-Id: I64ceca477912150425e4a9328001cc911bd351bf Reviewed-by: Laszlo Agocs --- src/plugins/platforms/windows/qwindowseglcontext.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/windows/qwindowseglcontext.cpp b/src/plugins/platforms/windows/qwindowseglcontext.cpp index 02073f5098..21eba6da7e 100644 --- a/src/plugins/platforms/windows/qwindowseglcontext.cpp +++ b/src/plugins/platforms/windows/qwindowseglcontext.cpp @@ -39,7 +39,7 @@ #include #if defined(QT_OPENGL_ES_2_ANGLE) || defined(QT_OPENGL_DYNAMIC) -# include +# include #endif QT_BEGIN_NAMESPACE -- cgit v1.2.3 From cd0a1251232baf17fdfa002d2299305d5613063c Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Thu, 14 May 2015 02:47:21 +0400 Subject: Minor optimization to QWidgetPrivate::naturalWidgetFont() When inheritedMask is 0, the font inherits just everything; in this case `inheritedFont.resolve(baseFont)` could be replaced with `baseFont`. Change-Id: Ic3ed8ef174493544ada32037e7bdded46eb4bd43 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/widgets/kernel/qwidget.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index 49da4d1faf..2d7c03116b 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -4699,9 +4699,11 @@ QFont QWidgetPrivate::naturalWidgetFont(uint inheritedMask) const if (QWidget *p = q->parentWidget()) { if (!p->testAttribute(Qt::WA_StyleSheet)) { if (!naturalFont.isCopyOf(QApplication::font())) { - QFont inheritedFont = p->font(); - inheritedFont.resolve(inheritedMask); - naturalFont = inheritedFont.resolve(naturalFont); + if (inheritedMask != 0) { + QFont inheritedFont = p->font(); + inheritedFont.resolve(inheritedMask); + naturalFont = inheritedFont.resolve(naturalFont); + } // else nothing to do (naturalFont = naturalFont) } else { naturalFont = p->font(); } @@ -4709,9 +4711,11 @@ QFont QWidgetPrivate::naturalWidgetFont(uint inheritedMask) const } #ifndef QT_NO_GRAPHICSVIEW else if (extra && extra->proxyWidget) { - QFont inheritedFont = extra->proxyWidget->font(); - inheritedFont.resolve(inheritedMask); - naturalFont = inheritedFont.resolve(naturalFont); + if (inheritedMask != 0) { + QFont inheritedFont = extra->proxyWidget->font(); + inheritedFont.resolve(inheritedMask); + naturalFont = inheritedFont.resolve(naturalFont); + } // else nothing to do (naturalFont = naturalFont) } #endif //QT_NO_GRAPHICSVIEW } -- cgit v1.2.3 From e9b051f0ca39529f5ec78d39c5339f40e135e52a Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Wed, 4 Nov 2015 16:53:48 +0100 Subject: Fix false claim in comment. Given that % and / have a defined consistency relation, neither is any better defined for -ve operands than the other. The code is in fact avoiding using -ve operands, not preferring "well-defined" / over (allegedly less so) %, as it claimed. Change-Id: I666690872f078c0f21f9af7a227c2bbf291704e8 Reviewed-by: Thiago Macieira --- src/corelib/tools/qdatetime.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp index 18fb9db9b6..1519b8b926 100644 --- a/src/corelib/tools/qdatetime.cpp +++ b/src/corelib/tools/qdatetime.cpp @@ -1728,7 +1728,7 @@ QTime QTime::addMSecs(int ms) const QTime t; if (isValid()) { if (ms < 0) { - // % not well-defined for -ve, but / is. + // %,/ not well-defined for -ve, so always work with +ve. int negdays = (MSECS_PER_DAY - ms) / MSECS_PER_DAY; t.mds = (ds() + ms + negdays * MSECS_PER_DAY) % MSECS_PER_DAY; } else { -- cgit v1.2.3 From 73b7096822a9f83e050c148dd153b1a42da176d6 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 6 Nov 2015 15:54:11 +0100 Subject: Fix build of PostgreSQL plugin with -Werror on Windows/64bit. Fix MSVC warning: sql\drivers\psql\qsql_psql.cpp(452): warning C4267: 'argument': conversion from 'size_t' to 'int', possible loss of data Change-Id: I44a902a9169efa568dcd82bdc08c5b97e661d65a Reviewed-by: Frederik Gladhorn --- src/sql/drivers/psql/qsql_psql.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/sql/drivers/psql/qsql_psql.cpp b/src/sql/drivers/psql/qsql_psql.cpp index f4e40b6582..5dcabb0646 100644 --- a/src/sql/drivers/psql/qsql_psql.cpp +++ b/src/sql/drivers/psql/qsql_psql.cpp @@ -449,7 +449,7 @@ QVariant QPSQLResult::data(int i) case QVariant::ByteArray: { size_t len; unsigned char *data = PQunescapeBytea((const unsigned char*)val, &len); - QByteArray ba((const char*)data, len); + QByteArray ba(reinterpret_cast(data), int(len)); qPQfreemem(data); return QVariant(ba); } -- cgit v1.2.3 From 9f66b1dd71f5802d99a3478aaf13c87af136a3b6 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Fri, 21 Aug 2015 09:41:23 +0200 Subject: Set private inline QRgba64 methods always inline By setting them always inline we ensure they will never generate symbols. Change-Id: I2c815c4fe2cb498187656e0b25ef4499258885ff Reviewed-by: Erik Verbruggen --- src/gui/painting/qrgba64.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/gui/painting/qrgba64.h b/src/gui/painting/qrgba64.h index 264ec394cd..fab9506ff2 100644 --- a/src/gui/painting/qrgba64.h +++ b/src/gui/painting/qrgba64.h @@ -161,12 +161,12 @@ public: } private: - static Q_DECL_CONSTEXPR quint64 alphaMask() { return Q_UINT64_C(0xffff) << AlphaShift; } + static Q_DECL_CONSTEXPR Q_ALWAYS_INLINE quint64 alphaMask() { return Q_UINT64_C(0xffff) << AlphaShift; } - static Q_DECL_CONSTEXPR uint div_257_floor(uint x) { return (x - (x >> 8)) >> 8; } - static Q_DECL_CONSTEXPR uint div_257(uint x) { return div_257_floor(x + 128); } - static Q_DECL_CONSTEXPR uint div_65535(uint x) { return (x + (x>>16) + 0x8000U) >> 16; } - Q_DECL_RELAXED_CONSTEXPR QRgba64 unpremultiplied_32bit() const + static Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint div_257_floor(uint x) { return (x - (x >> 8)) >> 8; } + static Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint div_257(uint x) { return div_257_floor(x + 128); } + static Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint div_65535(uint x) { return (x + (x>>16) + 0x8000U) >> 16; } + Q_DECL_RELAXED_CONSTEXPR Q_ALWAYS_INLINE QRgba64 unpremultiplied_32bit() const { if (isOpaque() || isTransparent()) return *this; @@ -176,7 +176,7 @@ private: const quint16 b = (quint32(blue()) * 0xffff + a/2) / a; return fromRgba64(r, g, b, a); } - Q_DECL_RELAXED_CONSTEXPR QRgba64 unpremultiplied_64bit() const + Q_DECL_RELAXED_CONSTEXPR Q_ALWAYS_INLINE QRgba64 unpremultiplied_64bit() const { if (isOpaque() || isTransparent()) return *this; -- cgit v1.2.3 From 7a42c8c15c59ef5fe84e6f293f2c97d38b85599c Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 6 Nov 2015 10:42:20 +0100 Subject: Testlib: Replace linked lists in QTestTablePrivate by std::vector. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This speeds up tests/auto/corelib/tools/qchar which spends a lot of time in QTestTablePrivate::elementAt(), QTestTablePrivate::dataAt() from 6s to 500ms on an average Linux machine. Task-number: QTBUG-38890 Change-Id: I16b75819f88ca7974a581affd8409f7b4038a712 Reviewed-by: Jędrzej Nowacki --- src/testlib/qtesttable.cpp | 161 +++++++++++---------------------------------- 1 file changed, 39 insertions(+), 122 deletions(-) (limited to 'src') diff --git a/src/testlib/qtesttable.cpp b/src/testlib/qtesttable.cpp index 497b2649c5..d20bdd8467 100644 --- a/src/testlib/qtesttable.cpp +++ b/src/testlib/qtesttable.cpp @@ -38,37 +38,30 @@ #include #include +#include +#include QT_BEGIN_NAMESPACE class QTestTablePrivate { public: - struct ElementList - { - ElementList(): elementName(0), elementType(0), next(0) {} - const char *elementName; - int elementType; - ElementList *next; - }; + struct Element { + Element() : name(Q_NULLPTR), type(0) {} + Element(const char *n, int t) : name(n), type(t) {} - struct DataList - { - DataList(): data(0), next(0) {} - QTestData *data; - DataList *next; + const char *name; + int type; }; - QTestTablePrivate(): list(0), dataList(0) {} - ~QTestTablePrivate(); + typedef std::vector ElementList; + ElementList elementList; - ElementList *list; - DataList *dataList; + typedef std::vector DataList; + DataList dataList; - void addColumn(int elemType, const char *elemName); - void addRow(QTestData *data); - ElementList *elementAt(int index); - QTestData *dataAt(int index); + void addColumn(int elemType, const char *elemName) { elementList.push_back(Element(elemName, elemType)); } + void addRow(QTestData *data) { dataList.push_back(data); } static QTestTable *currentTestTable; static QTestTable *gTable; @@ -77,74 +70,6 @@ public: QTestTable *QTestTablePrivate::currentTestTable = 0; QTestTable *QTestTablePrivate::gTable = 0; -QTestTablePrivate::ElementList *QTestTablePrivate::elementAt(int index) -{ - ElementList *iter = list; - for (int i = 0; i < index; ++i) { - if (!iter) - return 0; - iter = iter->next; - } - return iter; -} - -QTestData *QTestTablePrivate::dataAt(int index) -{ - DataList *iter = dataList; - for (int i = 0; i < index; ++i) { - if (!iter) - return 0; - iter = iter->next; - } - return iter ? iter->data : 0; -} - -QTestTablePrivate::~QTestTablePrivate() -{ - DataList *dit = dataList; - while (dit) { - DataList *next = dit->next; - delete dit->data; - delete dit; - dit = next; - } - ElementList *iter = list; - while (iter) { - ElementList *next = iter->next; - delete iter; - iter = next; - } -} - -void QTestTablePrivate::addColumn(int elemType, const char *elemName) -{ - ElementList *item = new ElementList; - item->elementName = elemName; - item->elementType = elemType; - if (!list) { - list = item; - return; - } - ElementList *last = list; - while (last->next != 0) - last = last->next; - last->next = item; -} - -void QTestTablePrivate::addRow(QTestData *data) -{ - DataList *item = new DataList; - item->data = data; - if (!dataList) { - dataList = item; - return; - } - DataList *last = dataList; - while (last->next != 0) - last = last->next; - last->next = item; -} - void QTestTable::addColumn(int type, const char *name) { QTEST_ASSERT(type); @@ -155,30 +80,17 @@ void QTestTable::addColumn(int type, const char *name) int QTestTable::elementCount() const { - QTestTablePrivate::ElementList *item = d->list; - int count = 0; - while (item) { - ++count; - item = item->next; - } - return count; + return int(d->elementList.size()); } - int QTestTable::dataCount() const { - QTestTablePrivate::DataList *item = d->dataList; - int count = 0; - while (item) { - ++count; - item = item->next; - } - return count; + return int(d->dataList.size()); } bool QTestTable::isEmpty() const { - return !d->list; + return d->elementList.empty(); } QTestData *QTestTable::newData(const char *tag) @@ -202,38 +114,43 @@ QTestTable::~QTestTable() int QTestTable::elementTypeId(int index) const { - QTestTablePrivate::ElementList *item = d->elementAt(index); - if (!item) - return -1; - return item->elementType; + return size_t(index) < d->elementList.size() ? d->elementList[index].type : -1; } const char *QTestTable::dataTag(int index) const { - QTestTablePrivate::ElementList *item = d->elementAt(index); - if (!item) - return 0; - return item->elementName; + return size_t(index) < d->elementList.size() ? d->elementList[index].name : Q_NULLPTR; } QTestData *QTestTable::testData(int index) const { - return d->dataAt(index); + return size_t(index) < d->dataList.size() ? d->dataList[index] : Q_NULLPTR; } +class NamePredicate : public std::unary_function +{ +public: + explicit NamePredicate(const char *needle) : m_needle(needle) {} + + bool operator()(const QTestTablePrivate::Element &e) const + { return !strcmp(e.name, m_needle); } + +private: + const char *m_needle; +}; + int QTestTable::indexOf(const char *elementName) const { + typedef QTestTablePrivate::ElementList::const_iterator It; + QTEST_ASSERT(elementName); - QTestTablePrivate::ElementList *item = d->list; - int i = 0; - while (item) { - if (strcmp(elementName, item->elementName) == 0) - return i; - item = item->next; - ++i; - } - return -1; + const QTestTablePrivate::ElementList &elementList = d->elementList; + + const It it = std::find_if(elementList.begin(), elementList.end(), + NamePredicate(elementName)); + return it != elementList.end() ? + int(it - elementList.begin()) : -1; } QTestTable *QTestTable::globalTestTable() -- cgit v1.2.3 From e996d68f6130847637ba287518cff1289cfa48e5 Mon Sep 17 00:00:00 2001 From: Lorn Potter Date: Fri, 6 Nov 2015 14:22:44 +1000 Subject: Make UnknownAccessibility not block requests This allows requests to proceed without needing bearer plugins. Task-number: QTBUG-49267 Change-Id: Ie5ce188ddefebd14d666bb5846e8f93ee2925ed1 Reviewed-by: Markus Goetz (Woboq GmbH) --- src/network/access/qnetworkaccessmanager.cpp | 3 +-- src/network/access/qnetworkaccessmanager_p.h | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp index 086140f967..0e5870a235 100644 --- a/src/network/access/qnetworkaccessmanager.cpp +++ b/src/network/access/qnetworkaccessmanager.cpp @@ -976,7 +976,6 @@ QNetworkAccessManager::NetworkAccessibility QNetworkAccessManager::networkAccess else return NotAccessible; } else { - // Network accessibility is either disabled or unknown. if (d->defaultAccessControl) { if (d->online) return d->networkAccessible; @@ -1161,7 +1160,7 @@ QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Opera #ifndef QT_NO_BEARERMANAGEMENT // Return a disabled network reply if network access is disabled. // Except if the scheme is empty or file://. - if (!d->networkAccessible && !isLocalFile) { + if (d->networkAccessible == NotAccessible && !isLocalFile) { return new QDisabledNetworkReply(this, req, op); } diff --git a/src/network/access/qnetworkaccessmanager_p.h b/src/network/access/qnetworkaccessmanager_p.h index 54ae114581..3fc33b5c15 100644 --- a/src/network/access/qnetworkaccessmanager_p.h +++ b/src/network/access/qnetworkaccessmanager_p.h @@ -93,6 +93,8 @@ public: online = (networkConfiguration.state().testFlag(QNetworkConfiguration::Active)); if (online) networkAccessible = QNetworkAccessManager::Accessible; + else if (networkConfiguration.state().testFlag(QNetworkConfiguration::Undefined)) + networkAccessible = QNetworkAccessManager::UnknownAccessibility; else networkAccessible = QNetworkAccessManager::NotAccessible; #endif -- cgit v1.2.3 From 9daef8a54c32162a50b0f558dac829333165618f Mon Sep 17 00:00:00 2001 From: Adam Strzelecki Date: Thu, 5 Nov 2015 22:35:42 +0100 Subject: QComboBox: Disable wheel events on OS X & iOS This is follow-up for QTabBar fix ea47d152b35158ba07a55d009f57df0e4c2a048f. In native OS X applications using mouse wheel on combo boxes have absolutely no effect. We should bring the same behavior to Qt based OS X apps too, as users are complaining of unexpected behavior, eg. randomly switching Qt Creator sidebar mode when scrolling file list and moving mouse pointer little bit above. Moreover inertial mouse behavior on OS X makes combo box usually move several indexes, rather than single one on slight finger slide. This also applies to iOS apps so the change affects all Apple platforms. Task-number: QTBUG-10707 Change-Id: I6582265039198707ad8c2f54de96ee2a0b0e0b47 Reviewed-by: Adam Strzelecki Reviewed-by: Jake Petroules --- src/widgets/widgets/qcombobox.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp index 4840b75c1b..c97159d4cb 100644 --- a/src/widgets/widgets/qcombobox.cpp +++ b/src/widgets/widgets/qcombobox.cpp @@ -3238,6 +3238,9 @@ void QComboBox::keyReleaseEvent(QKeyEvent *e) #ifndef QT_NO_WHEELEVENT void QComboBox::wheelEvent(QWheelEvent *e) { +#ifdef Q_OS_DARWIN + Q_UNUSED(e); +#else Q_D(QComboBox); if (!d->viewContainer()->isVisible()) { int newIndex = currentIndex(); @@ -3258,6 +3261,7 @@ void QComboBox::wheelEvent(QWheelEvent *e) } e->accept(); } +#endif } #endif -- cgit v1.2.3 From 9ffbc139d1b9ca780ca44ac1522d4bec624923c3 Mon Sep 17 00:00:00 2001 From: Alex Trotsenko Date: Sun, 8 Nov 2015 23:26:43 +0200 Subject: QNativeSocketEngine: fix build in debug mode under Unix Change-Id: I197e4853cd3ddd7543bbdb12cecc19c0ed2c9ee2 Reviewed-by: Thiago Macieira --- src/network/socket/qnativesocketengine_unix.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/network/socket/qnativesocketengine_unix.cpp b/src/network/socket/qnativesocketengine_unix.cpp index f1845f31f3..8626a6be0f 100644 --- a/src/network/socket/qnativesocketengine_unix.cpp +++ b/src/network/socket/qnativesocketengine_unix.cpp @@ -921,8 +921,10 @@ qint64 QNativeSocketEnginePrivate::nativeReceiveDatagram(char *data, qint64 maxS #if defined (QNATIVESOCKETENGINE_DEBUG) qDebug("QNativeSocketEnginePrivate::nativeReceiveDatagram(%p \"%s\", %lli, %s, %i) == %lli", data, qt_prettyDebug(data, qMin(recvResult, ssize_t(16)), recvResult).data(), maxSize, - address ? address->toString().toLatin1().constData() : "(nil)", - port ? *port : 0, (qint64) recvResult); + (recvResult != -1 && options != QAbstractSocketEngine::WantNone) + ? header->senderAddress.toString().toLatin1().constData() : "(unknown)", + (recvResult != -1 && options != QAbstractSocketEngine::WantNone) + ? header->senderPort : 0, (qint64) recvResult); #endif return qint64(maxSize ? recvResult : recvResult == -1 ? -1 : 0); @@ -1018,8 +1020,9 @@ qint64 QNativeSocketEnginePrivate::nativeSendDatagram(const char *data, qint64 l #if defined (QNATIVESOCKETENGINE_DEBUG) qDebug("QNativeSocketEngine::sendDatagram(%p \"%s\", %lli, \"%s\", %i) == %lli", data, - qt_prettyDebug(data, qMin(len, 16), len).data(), len, host.toString().toLatin1().constData(), - port, (qint64) sentBytes); + qt_prettyDebug(data, qMin(len, 16), len).data(), len, + header.destinationAddress.toString().toLatin1().constData(), + header.destinationPort, (qint64) sentBytes); #endif return qint64(sentBytes); -- cgit v1.2.3 From 20208225eef2458bc092b91b4e22cc7a5a3d006a Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Wed, 21 Oct 2015 15:39:44 +0200 Subject: winrt: Enable generic bearer management plugin Task-number: QTBUG-48738 Change-Id: Ic3698ca1e95aa90083295bf7c41a5f4f66b36f1d Reviewed-by: Andrew Knight --- src/plugins/bearer/bearer.pro | 2 +- src/plugins/bearer/generic/qgenericengine.cpp | 102 +++++++++++++++++++++++++- src/plugins/plugins.pro | 2 +- 3 files changed, 102 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/plugins/bearer/bearer.pro b/src/plugins/bearer/bearer.pro index 2239d52737..a1434fc2ea 100644 --- a/src/plugins/bearer/bearer.pro +++ b/src/plugins/bearer/bearer.pro @@ -8,7 +8,7 @@ TEMPLATE = subdirs #win32:SUBDIRS += nla win32:SUBDIRS += generic blackberry:SUBDIRS += blackberry -win32:!wince: SUBDIRS += nativewifi +win32:!wince:!winrt: SUBDIRS += nativewifi mac:contains(QT_CONFIG, corewlan):SUBDIRS += corewlan mac:SUBDIRS += generic android:!android-no-sdk:SUBDIRS += android diff --git a/src/plugins/bearer/generic/qgenericengine.cpp b/src/plugins/bearer/generic/qgenericengine.cpp index 93b27f16f1..7f56846179 100644 --- a/src/plugins/bearer/generic/qgenericengine.cpp +++ b/src/plugins/bearer/generic/qgenericengine.cpp @@ -44,7 +44,7 @@ #include #include -#ifdef Q_OS_WIN +#if defined(Q_OS_WIN32) || defined(Q_OS_WINCE) #include "../platformdefs_win.h" #endif @@ -55,6 +55,24 @@ typedef ULONG NDIS_OID, *PNDIS_OID; # endif #endif // Q_OS_WINCE +#ifdef Q_OS_WINRT +#include + +#include +#include +#include +#include + +using namespace Microsoft::WRL; +using namespace Microsoft::WRL::Wrappers; +using namespace ABI::Windows::Foundation; +using namespace ABI::Windows::Foundation::Collections; +using namespace ABI::Windows::Networking; +using namespace ABI::Windows::Networking::Connectivity; +// needed as interface is used as parameter name in qGetInterfaceType +#undef interface +#endif // Q_OS_WINRT + #ifdef Q_OS_LINUX #include #include @@ -68,7 +86,7 @@ QT_BEGIN_NAMESPACE #ifndef QT_NO_NETWORKINTERFACE static QNetworkConfiguration::BearerType qGetInterfaceType(const QString &interface) { -#if defined(Q_OS_WIN) +#if defined(Q_OS_WIN32) || defined(Q_OS_WINCE) DWORD bytesWritten; NDIS_MEDIUM medium; NDIS_PHYSICAL_MEDIUM physicalMedium; @@ -163,6 +181,84 @@ static QNetworkConfiguration::BearerType qGetInterfaceType(const QString &interf if (result >= 0 && request.ifr_hwaddr.sa_family == ARPHRD_ETHER) return QNetworkConfiguration::BearerEthernet; +#elif defined(Q_OS_WINRT) + ComPtr networkInfoStatics; + HRESULT hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_Connectivity_NetworkInformation).Get(), &networkInfoStatics); + Q_ASSERT_SUCCEEDED(hr); + ComPtr> connectionProfiles; + hr = networkInfoStatics->GetConnectionProfiles(&connectionProfiles); + Q_ASSERT_SUCCEEDED(hr); + if (!connectionProfiles) + return QNetworkConfiguration::BearerUnknown; + + unsigned int size; + hr = connectionProfiles->get_Size(&size); + Q_ASSERT_SUCCEEDED(hr); + for (unsigned int i = 0; i < size; ++i) { + ComPtr profile; + hr = connectionProfiles->GetAt(i, &profile); + Q_ASSERT_SUCCEEDED(hr); + + ComPtr adapter; + hr = profile->get_NetworkAdapter(&adapter); + Q_ASSERT_SUCCEEDED(hr); + GUID id; + hr = adapter->get_NetworkAdapterId(&id); + Q_ASSERT_SUCCEEDED(hr); + OLECHAR adapterName[39]={0}; + int length = StringFromGUID2(id, adapterName, 39); + // "length - 1" as we have to remove the null terminator from it in order to compare + if (!length + || QString::fromRawData(reinterpret_cast(adapterName), length - 1) != interface) + continue; + + ComPtr profile2; + hr = profile.As(&profile2); + Q_ASSERT_SUCCEEDED(hr); + boolean isWLan; + hr = profile2->get_IsWlanConnectionProfile(&isWLan); + Q_ASSERT_SUCCEEDED(hr); + if (isWLan) + return QNetworkConfiguration::BearerWLAN; + + boolean isWWan; + hr = profile2->get_IsWwanConnectionProfile(&isWWan); + Q_ASSERT_SUCCEEDED(hr); + if (isWWan) { + ComPtr details; + hr = profile2->get_WwanConnectionProfileDetails(&details); + Q_ASSERT_SUCCEEDED(hr); + WwanDataClass dataClass; + hr = details->GetCurrentDataClass(&dataClass); + Q_ASSERT_SUCCEEDED(hr); + switch (dataClass) { + case WwanDataClass_Edge: + case WwanDataClass_Gprs: + return QNetworkConfiguration::Bearer2G; + case WwanDataClass_Umts: + return QNetworkConfiguration::BearerWCDMA; + case WwanDataClass_LteAdvanced: + return QNetworkConfiguration::BearerLTE; + case WwanDataClass_Hsdpa: + case WwanDataClass_Hsupa: + return QNetworkConfiguration::BearerHSPA; + case WwanDataClass_Cdma1xRtt: + case WwanDataClass_Cdma3xRtt: + case WwanDataClass_CdmaUmb: + return QNetworkConfiguration::BearerCDMA2000; + case WwanDataClass_Cdma1xEvdv: + case WwanDataClass_Cdma1xEvdo: + case WwanDataClass_Cdma1xEvdoRevA: + case WwanDataClass_Cdma1xEvdoRevB: + return QNetworkConfiguration::BearerEVDO; + case WwanDataClass_Custom: + case WwanDataClass_None: + default: + return QNetworkConfiguration::BearerUnknown; + } + } + return QNetworkConfiguration::BearerEthernet; + } #else Q_UNUSED(interface); #endif @@ -243,9 +339,11 @@ void QGenericEngine::doRequestUpdate() if (interface.flags() & QNetworkInterface::IsLoopBack) continue; +#ifndef Q_OS_WINRT // ignore WLAN interface handled in separate engine if (qGetInterfaceType(interface.name()) == QNetworkConfiguration::BearerWLAN) continue; +#endif uint identifier; if (interface.index()) diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro index dd5345e67e..03b7dc266b 100644 --- a/src/plugins/plugins.pro +++ b/src/plugins/plugins.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs load(qfeatures) SUBDIRS *= sqldrivers -!winrt:qtHaveModule(network):!contains(QT_DISABLED_FEATURES, bearermanagement): SUBDIRS += bearer +qtHaveModule(network):!contains(QT_DISABLED_FEATURES, bearermanagement): SUBDIRS += bearer qtHaveModule(gui) { SUBDIRS *= platforms platforminputcontexts platformthemes !contains(QT_DISABLED_FEATURES, imageformatplugin): SUBDIRS *= imageformats -- cgit v1.2.3 From 702a98bfb0196c299de047e7f635f0a912b9bb6a Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Thu, 29 Oct 2015 10:17:18 +0100 Subject: winrt: Also list current profile in QNetworkInterface::allInterfaces GetConnectionProfiles does not list the current profile, so "allInterfaces" also has to use GetInternetConnectionProfile. Task-number: QTBUG-49121 Change-Id: I80a3ea1bfddfe502c84376ca90a7e1fe5d3020c3 Reviewed-by: Samuel Nevala Reviewed-by: Andrew Knight --- src/network/kernel/qnetworkinterface_winrt.cpp | 146 ++++++++++++++++--------- 1 file changed, 94 insertions(+), 52 deletions(-) (limited to 'src') diff --git a/src/network/kernel/qnetworkinterface_winrt.cpp b/src/network/kernel/qnetworkinterface_winrt.cpp index 0234154427..6791caaf21 100644 --- a/src/network/kernel/qnetworkinterface_winrt.cpp +++ b/src/network/kernel/qnetworkinterface_winrt.cpp @@ -36,6 +36,8 @@ #ifndef QT_NO_NETWORKINTERFACE +#include + #include #include #include @@ -59,6 +61,54 @@ struct HostNameInfo { QString address; }; +static QNetworkInterfacePrivate *interfaceFromProfile(IConnectionProfile *profile, QList *hostList) +{ + if (!profile) + return 0; + + QNetworkInterfacePrivate *iface = new QNetworkInterfacePrivate; + + NetworkConnectivityLevel connectivityLevel; + HRESULT hr = profile->GetNetworkConnectivityLevel(&connectivityLevel); + Q_ASSERT_SUCCEEDED(hr); + if (connectivityLevel != NetworkConnectivityLevel_None) + iface->flags = QNetworkInterface::IsUp | QNetworkInterface::IsRunning; + + ComPtr adapter; + hr = profile->get_NetworkAdapter(&adapter); + Q_ASSERT_SUCCEEDED(hr); + UINT32 type; + hr = adapter->get_IanaInterfaceType(&type); + Q_ASSERT_SUCCEEDED(hr); + if (type == 23) + iface->flags |= QNetworkInterface::IsPointToPoint; + GUID id; + hr = adapter->get_NetworkAdapterId(&id); + Q_ASSERT_SUCCEEDED(hr); + OLECHAR adapterName[39]={0}; + StringFromGUID2(id, adapterName, 39); + iface->name = QString::fromWCharArray(adapterName); + + // According to http://stackoverflow.com/questions/12936193/how-unique-is-the-ethernet-network-adapter-id-in-winrt-it-is-derived-from-the-m + // obtaining the MAC address using WinRT API is impossible + // iface->hardwareAddress = ? + + for (int i = 0; i < hostList->length(); ++i) { + const HostNameInfo hostInfo = hostList->at(i); + if (id != hostInfo.adapterId) + continue; + + QNetworkAddressEntry entry; + entry.setIp(QHostAddress(hostInfo.address)); + entry.setPrefixLength(hostInfo.prefixLength); + iface->addressEntries << entry; + + hostList->takeAt(i); + --i; + } + return iface; +} + static QList interfaceListing() { QList interfaces; @@ -66,36 +116,46 @@ static QList interfaceListing() QList hostList; ComPtr hostNameStatics; - GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_Connectivity_NetworkInformation).Get(), &hostNameStatics); + HRESULT hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_Connectivity_NetworkInformation).Get(), &hostNameStatics); + Q_ASSERT_SUCCEEDED(hr); ComPtr> hostNames; - hostNameStatics->GetHostNames(&hostNames); + hr = hostNameStatics->GetHostNames(&hostNames); + Q_ASSERT_SUCCEEDED(hr); if (!hostNames) return interfaces; unsigned int hostNameCount; - hostNames->get_Size(&hostNameCount); + hr = hostNames->get_Size(&hostNameCount); + Q_ASSERT_SUCCEEDED(hr); for (unsigned i = 0; i < hostNameCount; ++i) { HostNameInfo hostInfo; ComPtr hostName; - hostNames->GetAt(i, &hostName); + hr = hostNames->GetAt(i, &hostName); + Q_ASSERT_SUCCEEDED(hr); HostNameType type; - hostName->get_Type(&type); + hr = hostName->get_Type(&type); + Q_ASSERT_SUCCEEDED(hr); if (type == HostNameType_DomainName) continue; ComPtr ipInformation; - hostName->get_IPInformation(&ipInformation); + hr = hostName->get_IPInformation(&ipInformation); + Q_ASSERT_SUCCEEDED(hr); ComPtr currentAdapter; - ipInformation->get_NetworkAdapter(¤tAdapter); + hr = ipInformation->get_NetworkAdapter(¤tAdapter); + Q_ASSERT_SUCCEEDED(hr); - currentAdapter->get_NetworkAdapterId(&hostInfo.adapterId); + hr = currentAdapter->get_NetworkAdapterId(&hostInfo.adapterId); + Q_ASSERT_SUCCEEDED(hr); ComPtr> prefixLengthReference; - ipInformation->get_PrefixLength(&prefixLengthReference); + hr = ipInformation->get_PrefixLength(&prefixLengthReference); + Q_ASSERT_SUCCEEDED(hr); - prefixLengthReference->get_Value(&hostInfo.prefixLength); + hr = prefixLengthReference->get_Value(&hostInfo.prefixLength); + Q_ASSERT_SUCCEEDED(hr); // invalid prefixes if ((type == HostNameType_Ipv4 && hostInfo.prefixLength > 32) @@ -103,7 +163,8 @@ static QList interfaceListing() continue; HString name; - hostName->get_CanonicalName(name.GetAddressOf()); + hr = hostName->get_CanonicalName(name.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); UINT32 length; PCWSTR rawString = name.GetRawBuffer(&length); hostInfo.address = QString::fromWCharArray(rawString, length); @@ -112,54 +173,35 @@ static QList interfaceListing() } INetworkInformationStatics *networkInfoStatics; - GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_Connectivity_NetworkInformation).Get(), &networkInfoStatics); + hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_Connectivity_NetworkInformation).Get(), &networkInfoStatics); + Q_ASSERT_SUCCEEDED(hr); + ComPtr connectionProfile; + hr = networkInfoStatics->GetInternetConnectionProfile(&connectionProfile); + Q_ASSERT_SUCCEEDED(hr); + QNetworkInterfacePrivate *iface = interfaceFromProfile(connectionProfile.Get(), &hostList); + if (iface) { + iface->index = 0; + interfaces << iface; + } + ComPtr> connectionProfiles; - networkInfoStatics->GetConnectionProfiles(&connectionProfiles); + hr = networkInfoStatics->GetConnectionProfiles(&connectionProfiles); + Q_ASSERT_SUCCEEDED(hr); if (!connectionProfiles) return interfaces; unsigned int size; - connectionProfiles->get_Size(&size); + hr = connectionProfiles->get_Size(&size); + Q_ASSERT_SUCCEEDED(hr); for (unsigned int i = 0; i < size; ++i) { - QNetworkInterfacePrivate *iface = new QNetworkInterfacePrivate; - interfaces << iface; - ComPtr profile; - connectionProfiles->GetAt(i, &profile); - - NetworkConnectivityLevel connectivityLevel; - profile->GetNetworkConnectivityLevel(&connectivityLevel); - if (connectivityLevel != NetworkConnectivityLevel_None) - iface->flags = QNetworkInterface::IsUp | QNetworkInterface::IsRunning; - - ComPtr adapter; - profile->get_NetworkAdapter(&adapter); - UINT32 type; - adapter->get_IanaInterfaceType(&type); - if (type == 23) - iface->flags |= QNetworkInterface::IsPointToPoint; - GUID id; - adapter->get_NetworkAdapterId(&id); - OLECHAR adapterName[39]={0}; - StringFromGUID2(id, adapterName, 39); - iface->name = QString::fromWCharArray(adapterName); - - // According to http://stackoverflow.com/questions/12936193/how-unique-is-the-ethernet-network-adapter-id-in-winrt-it-is-derived-from-the-m - // obtaining the MAC address using WinRT API is impossible - // iface->hardwareAddress = ? - - for (int i = 0; i < hostList.length(); ++i) { - const HostNameInfo hostInfo = hostList.at(i); - if (id != hostInfo.adapterId) - continue; - - QNetworkAddressEntry entry; - entry.setIp(QHostAddress(hostInfo.address)); - entry.setPrefixLength(hostInfo.prefixLength); - iface->addressEntries << entry; - - hostList.takeAt(i); - --i; + hr = connectionProfiles->GetAt(i, &profile); + Q_ASSERT_SUCCEEDED(hr); + + iface = interfaceFromProfile(profile.Get(), &hostList); + if (iface) { + iface->index = i + 1; + interfaces << iface; } } return interfaces; -- cgit v1.2.3 From 566399937ba3d17df12aa0cd8e7fe79bb0005b16 Mon Sep 17 00:00:00 2001 From: Maurice Kalinowski Date: Fri, 23 Oct 2015 16:03:48 +0200 Subject: winrt: Fix filedialog show on Windows 10 The file picker must be used inside the Xaml thread, otherwise execution will fail without giving any warning or error. Task-number: QTBUG-48389 Change-Id: I917e88e95993da04be3d7cd34344ffd68ee71cdd Reviewed-by: Samuel Nevala Reviewed-by: Andrew Knight --- .../platforms/winrt/qwinrtfiledialoghelper.cpp | 71 ++++++++++++++-------- 1 file changed, 44 insertions(+), 27 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/winrt/qwinrtfiledialoghelper.cpp b/src/plugins/platforms/winrt/qwinrtfiledialoghelper.cpp index 05b1fd76b1..b0f377147e 100644 --- a/src/plugins/platforms/winrt/qwinrtfiledialoghelper.cpp +++ b/src/plugins/platforms/winrt/qwinrtfiledialoghelper.cpp @@ -239,20 +239,24 @@ static bool pickFiles(IFileOpenPicker *picker, QWinRTFileDialogHelper *helper, b eventDispatcher->installEventFilter(helper); return true; #else - if (singleFile) { - ComPtr> op; - hr = picker->PickSingleFileAsync(&op); - RETURN_FALSE_IF_FAILED("Failed to open single file picker"); - hr = op->put_Completed(Callback(helper, &QWinRTFileDialogHelper::onSingleFilePicked).Get()); - RETURN_FALSE_IF_FAILED("Failed to attach file picker callback"); - } else { - ComPtr *>> op; - hr = picker->PickMultipleFilesAsync(&op); - RETURN_FALSE_IF_FAILED("Failed to open multi file picker"); - hr = op->put_Completed(Callback(helper, &QWinRTFileDialogHelper::onMultipleFilesPicked).Get()); - RETURN_FALSE_IF_FAILED("Failed to attach multi file callback"); - } - return true; + hr = QEventDispatcherWinRT::runOnXamlThread([picker, helper, singleFile]() { + HRESULT hr; + if (singleFile) { + ComPtr> op; + hr = picker->PickSingleFileAsync(&op); + RETURN_HR_IF_FAILED("Failed to open single file picker"); + hr = op->put_Completed(Callback(helper, &QWinRTFileDialogHelper::onSingleFilePicked).Get()); + RETURN_HR_IF_FAILED("Failed to attach file picker callback"); + } else { + ComPtr *>> op; + hr = picker->PickMultipleFilesAsync(&op); + RETURN_HR_IF_FAILED("Failed to open multi file picker"); + hr = op->put_Completed(Callback(helper, &QWinRTFileDialogHelper::onMultipleFilesPicked).Get()); + RETURN_HR_IF_FAILED("Failed to attach multi file callback"); + } + return S_OK; + }); + return SUCCEEDED(hr); #endif } @@ -274,13 +278,17 @@ static bool pickFolder(IFolderPicker *picker, QWinRTFileDialogHelper *helper) Q_ASSERT(eventDispatcher); eventDispatcher->installEventFilter(helper); #else - ComPtr> op; - hr = picker->PickSingleFolderAsync(&op); - RETURN_FALSE_IF_FAILED("Failed to open folder picker"); - hr = op->put_Completed(Callback(helper, &QWinRTFileDialogHelper::onSingleFolderPicked).Get()); - RETURN_FALSE_IF_FAILED("Failed to attach folder picker callback"); + hr = QEventDispatcherWinRT::runOnXamlThread([picker, helper]() { + HRESULT hr; + ComPtr> op; + hr = picker->PickSingleFolderAsync(&op); + RETURN_HR_IF_FAILED("Failed to open folder picker"); + hr = op->put_Completed(Callback(helper, &QWinRTFileDialogHelper::onSingleFolderPicked).Get()); + RETURN_HR_IF_FAILED("Failed to attach folder picker callback"); + return S_OK; + }); #endif - return true; + return SUCCEEDED(hr); } static bool pickSaveFile(IFileSavePicker *picker, QWinRTFileDialogHelper *helper) @@ -301,13 +309,17 @@ static bool pickSaveFile(IFileSavePicker *picker, QWinRTFileDialogHelper *helper Q_ASSERT(eventDispatcher); eventDispatcher->installEventFilter(helper); #else - ComPtr> op; - hr = picker->PickSaveFileAsync(&op); - RETURN_FALSE_IF_FAILED("Failed to open save file picker"); - hr = op->put_Completed(Callback(helper, &QWinRTFileDialogHelper::onSingleFilePicked).Get()); - RETURN_FALSE_IF_FAILED("Failed to attach save file picker callback"); + hr = QEventDispatcherWinRT::runOnXamlThread([picker, helper]() { + HRESULT hr; + ComPtr> op; + hr = picker->PickSaveFileAsync(&op); + RETURN_HR_IF_FAILED("Failed to open save file picker"); + hr = op->put_Completed(Callback(helper, &QWinRTFileDialogHelper::onSingleFilePicked).Get()); + RETURN_HR_IF_FAILED("Failed to attach save file picker callback"); + return S_OK; + }); #endif - return true; + return SUCCEEDED(hr); } class QWinRTFileDialogHelperPrivate @@ -423,7 +435,12 @@ bool QWinRTFileDialogHelper::show(Qt::WindowFlags windowFlags, Qt::WindowModalit filterTitle.length()); boolean replaced; hr = choices->Insert(namedFilterRef.Get(), entry.Get(), &replaced); - RETURN_FALSE_IF_FAILED("Failed to insert file extension choice entry"); + // Only print a warning as * or *.* is not a valid choice on Windows 10 + // but used on a regular basis on all other platforms + if (FAILED(hr)) { + qWarning("Failed to insert file extension choice entry: %s: %s", + qPrintable(filterTitle), qPrintable(qt_error_string(hr))); + } } } -- cgit v1.2.3 From abf47610c716955b894e6ee20cc0dae00929799a Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Fri, 6 Nov 2015 12:47:13 +0100 Subject: iOS: only force-finish start-up from file engine when on main thread MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The authorization dialog that grants the application access to the assets will only show after returning back from applicationDidFinishLaunching. Therefore, trying to load an asset from main before qApp->exec() would normally fail. To remedy that, we added a path that starts a QEventLoop for a split second to force the application init process to finish. But this can only work if we start it from the main thread. A bug with this is seen in QML FileDialog, since it (clumsy enough) starts to iterate, in a separate thread, all the files in its currently set directory upon start-up construction (which should be fixed as well). The result is that the application gets dead-locked on start-up. Change-Id: I0047272d53314752903960b33f88b33dc0d7e78d Reviewed-by: Tor Arne Vestbø --- .../platforms/ios/qiosfileengineassetslibrary.mm | 40 ++++++++++++++-------- 1 file changed, 26 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qiosfileengineassetslibrary.mm b/src/plugins/platforms/ios/qiosfileengineassetslibrary.mm index 761a89c989..bb12c164d6 100644 --- a/src/plugins/platforms/ios/qiosfileengineassetslibrary.mm +++ b/src/plugins/platforms/ios/qiosfileengineassetslibrary.mm @@ -48,20 +48,29 @@ static QThreadStorage > g_assetDataCache; static const int kBufferSize = 10; static ALAsset *kNoAsset = 0; -static void ensureAuthorizationDialogNotBlocked() +static bool ensureAuthorizationDialogNotBlocked() { if ([ALAssetsLibrary authorizationStatus] != ALAuthorizationStatusNotDetermined) - return; + return true; + if (static_cast(QObjectPrivate::get(qApp))->in_exec) - return; - - // Since authorization status has not been determined, the user will be asked - // to authorize the app. But since main has not finished, the dialog will be held - // back until the launch completes. To avoid a dead-lock below, we start an event - // loop to complete the launch. - QEventLoop loop; - QTimer::singleShot(1, &loop, &QEventLoop::quit); - loop.exec(); + return true; + + if ([NSThread isMainThread]) { + // The dialog is about to show, but since main has not finished, the dialog will be held + // back until the launch completes. This is problematic since we cannot successfully return + // back to the caller before the asset is ready, which also includes showing the dialog. To + // work around this, we create an event loop to that will complete the launch (return from the + // applicationDidFinishLaunching callback). But this will only work if we're on the main thread. + QEventLoop loop; + QTimer::singleShot(1, &loop, &QEventLoop::quit); + loop.exec(); + } else { + NSLog(@"QIOSFileEngine: unable to show assets authorization dialog from non-gui thread before QApplication is executing."); + return false; + } + + return true; } // ------------------------------------------------------------------------- @@ -80,8 +89,10 @@ public: , m_writeIndex(0) , m_nextAssetReady(false) { - ensureAuthorizationDialogNotBlocked(); - startEnumerate(); + if (!ensureAuthorizationDialogNotBlocked()) + writeAsset(kNoAsset); + else + startEnumerate(); } ~QIOSAssetEnumerator() @@ -186,7 +197,8 @@ public: , m_assetUrl(assetUrl) , m_assetLibrary(0) { - ensureAuthorizationDialogNotBlocked(); + if (!ensureAuthorizationDialogNotBlocked()) + return; if (QIOSAssetData *assetData = g_assetDataCache.localData()) { // It's a common pattern that QFiles pointing to the same path are created and destroyed -- cgit v1.2.3 From 51b19c0d868eccf75b407a3d4ca272d8ce5b2912 Mon Sep 17 00:00:00 2001 From: Nico Vertriest Date: Wed, 4 Nov 2015 14:36:28 +0100 Subject: Doc: Added more details to QIODevice::readAll() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QTBUG-43666 Change-Id: Ibe56a72f9fa7a31a320aceda645fde9b08645271 Reviewed-by: Oswald Buddenhagen Reviewed-by: Topi Reiniö --- src/corelib/io/qiodevice.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/io/qiodevice.cpp b/src/corelib/io/qiodevice.cpp index 3b1cd196d2..3c7a7d69e4 100644 --- a/src/corelib/io/qiodevice.cpp +++ b/src/corelib/io/qiodevice.cpp @@ -973,7 +973,7 @@ QByteArray QIODevice::read(qint64 maxSize) /*! \overload - Reads all available data from the device, and returns it as a + Reads all remaining data from the device, and returns it as a byte array. This function has no way of reporting errors; returning an empty -- cgit v1.2.3 From b91389fef0d3c850dad17eab762d5c873f29a64d Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Tue, 10 Nov 2015 08:48:57 +0100 Subject: winrt: Clean up QNativeSocketEngine WinRT/Windows Phone "coding guidelines" are now used for the native socket engine as well. - Whenever an operation is expected to succeed Q_ASSERT_SUCCEEDED is used. - QWinRTFunctions::await is used for waiting for async operations - Improved error handling Change-Id: I6c8d64731da5c94b911a5190231c7c8f68d9c261 Reviewed-by: Andrew Knight --- src/network/socket/qnativesocketengine_winrt.cpp | 222 ++++++++++++----------- 1 file changed, 112 insertions(+), 110 deletions(-) (limited to 'src') diff --git a/src/network/socket/qnativesocketengine_winrt.cpp b/src/network/socket/qnativesocketengine_winrt.cpp index d41bd4d313..cfb950592f 100644 --- a/src/network/socket/qnativesocketengine_winrt.cpp +++ b/src/network/socket/qnativesocketengine_winrt.cpp @@ -150,16 +150,10 @@ static AsyncStatus opStatus(const ComPtr &op) { ComPtr info; HRESULT hr = op.As(&info); - if (FAILED(hr)) { - qErrnoWarning(hr, "Failed to cast op to IAsyncInfo."); - return Error; - } + Q_ASSERT_SUCCEEDED(hr); AsyncStatus status; hr = info->get_Status(&status); - if (FAILED(hr)) { - qErrnoWarning(hr, "Failed to get AsyncStatus."); - return Error; - } + Q_ASSERT_SUCCEEDED(hr); return status; } @@ -265,25 +259,26 @@ bool QNativeSocketEngine::connectToHostByName(const QString &name, quint16 port) Q_D(QNativeSocketEngine); HStringReference hostNameRef(reinterpret_cast(name.utf16())); ComPtr hostNameFactory; - GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_HostName).Get(), - &hostNameFactory); + HRESULT hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_HostName).Get(), + &hostNameFactory); + Q_ASSERT_SUCCEEDED(hr); ComPtr remoteHost; - if (FAILED(hostNameFactory->CreateHostName(hostNameRef.Get(), &remoteHost))) { - qWarning("QNativeSocketEnginePrivate::nativeConnect:: Could not create hostname"); - return false; - } + hr = hostNameFactory->CreateHostName(hostNameRef.Get(), &remoteHost); + RETURN_FALSE_IF_FAILED("QNativeSocketEngine::connectToHostByName: Could not create hostname."); const QString portString = QString::number(port); HStringReference portReference(reinterpret_cast(portString.utf16())); - HRESULT hr = E_FAIL; if (d->socketType == QAbstractSocket::TcpSocket) hr = d->tcpSocket()->ConnectAsync(remoteHost.Get(), portReference.Get(), &d->connectOp); else if (d->socketType == QAbstractSocket::UdpSocket) hr = d->udpSocket()->ConnectAsync(remoteHost.Get(), portReference.Get(), &d->connectOp); - if (FAILED(hr)) { - qWarning("QNativeSocketEnginePrivate::nativeConnect:: Could not obtain connect action"); + if (hr == E_ACCESSDENIED) { + qErrnoWarning(hr, "QNativeSocketEngine::connectToHostByName: Unable to connect to host. \ + Please check your manifest capabilities."); return false; } + Q_ASSERT_SUCCEEDED(hr); + d->socketState = QAbstractSocket::ConnectingState; hr = d->connectOp->put_Completed(Callback( d, &QNativeSocketEnginePrivate::handleConnectToHost).Get()); @@ -295,68 +290,52 @@ bool QNativeSocketEngine::connectToHostByName(const QString &name, quint16 port) bool QNativeSocketEngine::bind(const QHostAddress &address, quint16 port) { Q_D(QNativeSocketEngine); + HRESULT hr; ComPtr hostAddress; + if (address != QHostAddress::Any && address != QHostAddress::AnyIPv4 && address != QHostAddress::AnyIPv6) { ComPtr hostNameFactory; - GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_HostName).Get(), + hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_HostName).Get(), &hostNameFactory); + Q_ASSERT_SUCCEEDED(hr); const QString addressString = address.toString(); HStringReference addressRef(reinterpret_cast(addressString.utf16())); - hostNameFactory->CreateHostName(addressRef.Get(), &hostAddress); + hr = hostNameFactory->CreateHostName(addressRef.Get(), &hostAddress); + RETURN_FALSE_IF_FAILED("QNativeSocketEngine::bind: Could not create hostname."); } - HRESULT hr; QString portQString = port ? QString::number(port) : QString(); HStringReference portString(reinterpret_cast(portQString.utf16())); ComPtr op; if (d->socketType == QAbstractSocket::TcpSocket) { - if (!d->tcpListener - && FAILED(RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_Networking_Sockets_StreamSocketListener).Get(), - &d->tcpListener))) { - qWarning("Failed to create listener"); - return false; + if (!d->tcpListener) { + hr = RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_Networking_Sockets_StreamSocketListener).Get(), + &d->tcpListener); + Q_ASSERT_SUCCEEDED(hr); } - d->tcpListener->add_ConnectionReceived(Callback(d, &QNativeSocketEnginePrivate::handleClientConnection).Get(), &d->connectionToken); + hr = d->tcpListener->add_ConnectionReceived( + Callback(d, &QNativeSocketEnginePrivate::handleClientConnection).Get(), + &d->connectionToken); + Q_ASSERT_SUCCEEDED(hr); hr = d->tcpListener->BindEndpointAsync(hostAddress.Get(), portString.Get(), &op); - if (FAILED(hr)) { - qErrnoWarning(hr, "Unable to bind socket."); // ### Set error message - return false; - } } else if (d->socketType == QAbstractSocket::UdpSocket) { hr = d->udpSocket()->BindEndpointAsync(hostAddress.Get(), portString.Get(), &op); - if (FAILED(hr)) { - qErrnoWarning(hr, "Unable to bind socket."); // ### Set error message - return false; - } - hr = op->put_Completed(Callback(d, &QNativeSocketEnginePrivate::handleBindCompleted).Get()); - if (FAILED(hr)) { - qErrnoWarning(hr, "Unable to set bind callback."); - return false; - } } - - if (op) { - while (opStatus(op) == Started) - d->eventLoop.processEvents(); - - AsyncStatus status = opStatus(op); - if (status == Error || status == Canceled) - return false; - - hr = op->GetResults(); - if (FAILED(hr)) { - qErrnoWarning(hr, "Failed to bind socket"); - return false; - } - - d->socketState = QAbstractSocket::BoundState; - d->fetchConnectionParameters(); - return true; + if (hr == E_ACCESSDENIED) { + qErrnoWarning(hr, "Unable to bind socket. Please check your manifest capabilities."); + return false; } + Q_ASSERT_SUCCEEDED(hr); - return false; + hr = op->put_Completed(Callback(d, &QNativeSocketEnginePrivate::handleBindCompleted).Get()); + Q_ASSERT_SUCCEEDED(hr); + hr = QWinRTFunctions::await(op); + Q_ASSERT_SUCCEEDED(hr); + + d->socketState = QAbstractSocket::BoundState; + return d->fetchConnectionParameters(); } bool QNativeSocketEngine::listen() @@ -430,27 +409,36 @@ void QNativeSocketEngine::close() d->notifyOnWrite = false; d->notifyOnException = false; + HRESULT hr; if (d->connectOp) { ComPtr info; - d->connectOp.As(&info); + hr = d->connectOp.As(&info); + Q_ASSERT_SUCCEEDED(hr); if (info) { - info->Cancel(); - info->Close(); + hr = info->Cancel(); + Q_ASSERT_SUCCEEDED(hr); + hr = info->Close(); + Q_ASSERT_SUCCEEDED(hr); } } if (d->socketDescriptor != -1) { ComPtr socket; if (d->socketType == QAbstractSocket::TcpSocket) { - d->tcpSocket()->QueryInterface(IID_PPV_ARGS(&socket)); - d->tcpSocket()->Release(); + hr = d->tcpSocket()->QueryInterface(IID_PPV_ARGS(&socket)); + Q_ASSERT_SUCCEEDED(hr); + hr = d->tcpSocket()->Release(); + Q_ASSERT_SUCCEEDED(hr); } else if (d->socketType == QAbstractSocket::UdpSocket) { - d->udpSocket()->QueryInterface(IID_PPV_ARGS(&socket)); - d->udpSocket()->Release(); + hr = d->udpSocket()->QueryInterface(IID_PPV_ARGS(&socket)); + Q_ASSERT_SUCCEEDED(hr); + hr = d->udpSocket()->Release(); + Q_ASSERT_SUCCEEDED(hr); } if (socket) { - socket->Close(); + hr = socket->Close(); + Q_ASSERT_SUCCEEDED(hr); d->socketDescriptor = -1; } d->socketDescriptor = -1; @@ -531,7 +519,7 @@ qint64 QNativeSocketEngine::write(const char *data, qint64 len) hr = d->tcpSocket()->get_OutputStream(&stream); else if (d->socketType == QAbstractSocket::UdpSocket) hr = d->udpSocket()->get_OutputStream(&stream); - RETURN_IF_FAILED("Failed to get output stream to socket", return -1); + Q_ASSERT_SUCCEEDED(hr); qint64 bytesWritten = writeIOStream(stream, data, len); if (bytesWritten < 0) @@ -580,20 +568,21 @@ qint64 QNativeSocketEngine::writeDatagram(const char *data, qint64 len, const QI HRESULT hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_HostName).Get(), &hostNameFactory); - RETURN_IF_FAILED("Could not obtain hostname factory", return -1); + Q_ASSERT_SUCCEEDED(hr); const QString addressString = header.destinationAddress.toString(); HStringReference hostNameRef(reinterpret_cast(addressString.utf16())); - hostNameFactory->CreateHostName(hostNameRef.Get(), &remoteHost); + hr = hostNameFactory->CreateHostName(hostNameRef.Get(), &remoteHost); + RETURN_IF_FAILED("QNativeSocketEngine::writeDatagram: Could not create hostname.", return -1); ComPtr> streamOperation; ComPtr stream; const QString portString = QString::number(header.destinationPort); HStringReference portRef(reinterpret_cast(portString.utf16())); hr = d->udpSocket()->GetOutputStreamAsync(remoteHost.Get(), portRef.Get(), &streamOperation); - RETURN_IF_FAILED("Failed to get output stream to socket", return -1); + Q_ASSERT_SUCCEEDED(hr); hr = QWinRTFunctions::await(streamOperation, stream.GetAddressOf()); - RETURN_IF_FAILED("Failed to get output stream to socket", return -1); + Q_ASSERT_SUCCEEDED(hr); return writeIOStream(stream, data, len); } @@ -778,26 +767,23 @@ void QNativeSocketEngine::establishRead() bool QNativeSocketEnginePrivate::createNewSocket(QAbstractSocket::SocketType socketType, QAbstractSocket::NetworkLayerProtocol &socketProtocol) { Q_UNUSED(socketProtocol); + HRESULT hr; + switch (socketType) { case QAbstractSocket::TcpSocket: { ComPtr socket; - HRESULT hr = RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_Networking_Sockets_StreamSocket).Get(), &socket); - if (FAILED(hr)) { - qWarning("Failed to create StreamSocket instance"); - return false; - } + hr = RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_Networking_Sockets_StreamSocket).Get(), &socket); + Q_ASSERT_SUCCEEDED(hr); socketDescriptor = qintptr(socket.Detach()); break; } case QAbstractSocket::UdpSocket: { ComPtr socket; - HRESULT hr = RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_Networking_Sockets_DatagramSocket).Get(), &socket); - if (FAILED(hr)) { - qWarning("Failed to create stream socket"); - return false; - } + hr = RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_Networking_Sockets_DatagramSocket).Get(), &socket); + Q_ASSERT_SUCCEEDED(hr); socketDescriptor = qintptr(socket.Detach()); - udpSocket()->add_MessageReceived(Callback(this, &QNativeSocketEnginePrivate::handleNewDatagram).Get(), &connectionToken); + hr = udpSocket()->add_MessageReceived(Callback(this, &QNativeSocketEnginePrivate::handleNewDatagram).Get(), &connectionToken); + Q_ASSERT_SUCCEEDED(hr); break; } default: @@ -834,10 +820,12 @@ QNativeSocketEnginePrivate::~QNativeSocketEnginePrivate() if (socketDescriptor == -1 || connectionToken.value == -1) return; + HRESULT hr; if (socketType == QAbstractSocket::UdpSocket) - udpSocket()->remove_MessageReceived(connectionToken); + hr = udpSocket()->remove_MessageReceived(connectionToken); else if (socketType == QAbstractSocket::TcpSocket) - tcpListener->remove_ConnectionReceived(connectionToken); + hr = tcpListener->remove_ConnectionReceived(connectionToken); + Q_ASSERT_SUCCEEDED(hr); } void QNativeSocketEnginePrivate::setError(QAbstractSocket::SocketError error, ErrorString errorString) const @@ -1064,56 +1052,66 @@ bool QNativeSocketEnginePrivate::fetchConnectionParameters() peerPort = 0; peerAddress.clear(); + HRESULT hr; if (socketType == QAbstractSocket::TcpSocket) { ComPtr hostName; HString tmpHString; ComPtr info; - if (FAILED(tcpSocket()->get_Information(&info))) { - qWarning("QNativeSocketEnginePrivate::fetchConnectionParameters: Could not obtain socket info"); - return false; - } - info->get_LocalAddress(&hostName); + hr = tcpSocket()->get_Information(&info); + Q_ASSERT_SUCCEEDED(hr); + hr = info->get_LocalAddress(&hostName); + Q_ASSERT_SUCCEEDED(hr); if (hostName) { - hostName->get_CanonicalName(tmpHString.GetAddressOf()); + hr = hostName->get_CanonicalName(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); localAddress.setAddress(qt_QStringFromHString(tmpHString)); - info->get_LocalPort(tmpHString.GetAddressOf()); + hr = info->get_LocalPort(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); localPort = qt_QStringFromHString(tmpHString).toInt(); } if (!localPort && tcpListener) { ComPtr listenerInfo = 0; - tcpListener->get_Information(&listenerInfo); - listenerInfo->get_LocalPort(tmpHString.GetAddressOf()); + hr = tcpListener->get_Information(&listenerInfo); + Q_ASSERT_SUCCEEDED(hr); + hr = listenerInfo->get_LocalPort(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); localPort = qt_QStringFromHString(tmpHString).toInt(); - localAddress == QHostAddress::Any; + localAddress = QHostAddress::Any; } info->get_RemoteAddress(&hostName); if (hostName) { - hostName->get_CanonicalName(tmpHString.GetAddressOf()); + hr = hostName->get_CanonicalName(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); peerAddress.setAddress(qt_QStringFromHString(tmpHString)); - info->get_RemotePort(tmpHString.GetAddressOf()); + hr = info->get_RemotePort(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); peerPort = qt_QStringFromHString(tmpHString).toInt(); } } else if (socketType == QAbstractSocket::UdpSocket) { ComPtr hostName; HString tmpHString; ComPtr info; - if (FAILED(udpSocket()->get_Information(&info))) { - qWarning("QNativeSocketEnginePrivate::fetchConnectionParameters: Could not obtain socket information"); - return false; - } - info->get_LocalAddress(&hostName); + hr = udpSocket()->get_Information(&info); + Q_ASSERT_SUCCEEDED(hr); + hr = info->get_LocalAddress(&hostName); + Q_ASSERT_SUCCEEDED(hr); if (hostName) { - hostName->get_CanonicalName(tmpHString.GetAddressOf()); + hr = hostName->get_CanonicalName(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); localAddress.setAddress(qt_QStringFromHString(tmpHString)); - info->get_LocalPort(tmpHString.GetAddressOf()); + hr = info->get_LocalPort(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); localPort = qt_QStringFromHString(tmpHString).toInt(); } - info->get_RemoteAddress(&hostName); + hr = info->get_RemoteAddress(&hostName); + Q_ASSERT_SUCCEEDED(hr); if (hostName) { - hostName->get_CanonicalName(tmpHString.GetAddressOf()); + hr = hostName->get_CanonicalName(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); peerAddress.setAddress(qt_QStringFromHString(tmpHString)); - info->get_RemotePort(tmpHString.GetAddressOf()); + hr = info->get_RemotePort(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); peerPort = qt_QStringFromHString(tmpHString).toInt(); } } @@ -1174,12 +1172,16 @@ void QNativeSocketEnginePrivate::handleConnectionEstablished(IAsyncAction *actio // The callback might be triggered several times if we do not cancel/reset it here if (connectOp) { ComPtr info; - connectOp.As(&info); + hr = connectOp.As(&info); + Q_ASSERT_SUCCEEDED(hr); if (info) { - info->Cancel(); - info->Close(); + hr = info->Cancel(); + Q_ASSERT_SUCCEEDED(hr); + hr = info->Close(); + Q_ASSERT_SUCCEEDED(hr); } - connectOp.Reset(); + hr = connectOp.Reset(); + Q_ASSERT_SUCCEEDED(hr); } socketState = QAbstractSocket::ConnectedState; -- cgit v1.2.3 From 5956d8715c7f8c77221b2baeeff0b7fa807f8f0e Mon Sep 17 00:00:00 2001 From: Samuel Nevala Date: Mon, 9 Nov 2015 12:29:26 +0200 Subject: winrt: Make dialog and window behave similarly. Status bar visibility can be controlled from dialog and dialog size is screen size. Change-Id: Ia8e932a9e1e1549a17d12532639391335760f9e0 Reviewed-by: Andrew Knight --- src/plugins/platforms/winrt/qwinrtscreen.cpp | 3 ++- src/plugins/platforms/winrt/qwinrtwindow.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/winrt/qwinrtscreen.cpp b/src/plugins/platforms/winrt/qwinrtscreen.cpp index 8ba71d88e7..5bb29d3805 100644 --- a/src/plugins/platforms/winrt/qwinrtscreen.cpp +++ b/src/plugins/platforms/winrt/qwinrtscreen.cpp @@ -699,7 +699,8 @@ Xaml::IDependencyObject *QWinRTScreen::canvas() const void QWinRTScreen::setStatusBarVisibility(bool visible, QWindow *window) { Q_D(QWinRTScreen); - if (!window || (window->flags() & Qt::WindowType_Mask) != Qt::Window) + const Qt::WindowFlags windowType = window->flags() & Qt::WindowType_Mask; + if (!window || (windowType != Qt::Window && windowType != Qt::Dialog)) return; QEventDispatcherWinRT::runOnXamlThread([d, visible]() { diff --git a/src/plugins/platforms/winrt/qwinrtwindow.cpp b/src/plugins/platforms/winrt/qwinrtwindow.cpp index 0d43e76c1a..bec94c1e51 100644 --- a/src/plugins/platforms/winrt/qwinrtwindow.cpp +++ b/src/plugins/platforms/winrt/qwinrtwindow.cpp @@ -207,7 +207,8 @@ void QWinRTWindow::setGeometry(const QRect &rect) Q_D(QWinRTWindow); const Qt::WindowFlags windowFlags = window()->flags(); - if (window()->isTopLevel() && (windowFlags & Qt::WindowType_Mask) == Qt::Window) { + const Qt::WindowFlags windowType = windowFlags & Qt::WindowType_Mask; + if (window()->isTopLevel() && (windowType == Qt::Window || windowType == Qt::Dialog)) { QPlatformWindow::setGeometry(windowFlags & Qt::MaximizeUsingFullscreenGeometryHint ? d->screen->geometry() : d->screen->availableGeometry()); QWindowSystemInterface::handleGeometryChange(window(), geometry()); -- cgit v1.2.3 From 708424c305d38c53487a4234361cca5c90486c1f Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Mon, 9 Nov 2015 11:49:39 +0100 Subject: Eliminate duplicate "between" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I548e2df4cb94e41bb5247fc6977a3c3f67bf0bda Reviewed-by: Topi Reiniö --- src/corelib/tools/qtimezone.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qtimezone.cpp b/src/corelib/tools/qtimezone.cpp index 900c8ff14e..22091e641f 100644 --- a/src/corelib/tools/qtimezone.cpp +++ b/src/corelib/tools/qtimezone.cpp @@ -116,8 +116,9 @@ Q_GLOBAL_STATIC(QTimeZoneSingleton, global_tz); \class QTimeZone \inmodule QtCore \since 5.2 - \brief The QTimeZone class converts between between UTC and local time in a - specific time zone. + + \brief The QTimeZone class converts between UTC and local time in a specific + time zone. \threadsafe -- cgit v1.2.3 From 4890c75d0d301fcfea594a5ad80577d0ffa6bb88 Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Mon, 9 Nov 2015 12:05:49 +0100 Subject: Prefer "daylight-saving time" and "DST" over "daylight time". MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The first two are the "proper" terms; the last is a colloquialism. Also amended "daylight savings" (which summons to mind a hybrid of "daylight robbery" and "bargain-basket savings"). Improved related wording in many of the places amended. Task-number: QTBUG-49308 Change-Id: I726f18a344b2fe37f765a14684d1447c8b7ab00c Reviewed-by: Topi Reiniö --- src/corelib/kernel/qfunctions_wince.h | 2 +- src/corelib/tools/qdatetime.cpp | 68 +++++++++++++------------- src/corelib/tools/qelapsedtimer.cpp | 2 +- src/corelib/tools/qtimezone.cpp | 68 +++++++++++++------------- src/corelib/tools/qtimezoneprivate.cpp | 10 ++-- src/corelib/tools/qtimezoneprivate_android.cpp | 22 ++++----- 6 files changed, 85 insertions(+), 87 deletions(-) (limited to 'src') diff --git a/src/corelib/kernel/qfunctions_wince.h b/src/corelib/kernel/qfunctions_wince.h index d172acceec..4273070c11 100644 --- a/src/corelib/kernel/qfunctions_wince.h +++ b/src/corelib/kernel/qfunctions_wince.h @@ -103,7 +103,7 @@ struct tm { int tm_year; /* years since 1900 */ int tm_wday; /* days since Sunday - [0,6] */ int tm_yday; /* days since January 1 - [0,365] */ - int tm_isdst; /* daylight savings time flag */ + int tm_isdst; /* daylight-saving time flag */ }; #endif // _TM_DEFINED diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp index 1519b8b926..9bbf5b8944 100644 --- a/src/corelib/tools/qdatetime.cpp +++ b/src/corelib/tools/qdatetime.cpp @@ -1383,7 +1383,7 @@ bool QDate::isLeapYear(int y) QTime uses the 24-hour clock format; it has no concept of AM/PM. Unlike QDateTime, QTime knows nothing about time zones or - daylight savings time (DST). + daylight-saving time (DST). A QTime object is typically created either by giving the number of hours, minutes, seconds, and milliseconds explicitly, or by @@ -2059,7 +2059,7 @@ void QTime::start() \warning If the system's clock setting has been changed since the last time start() or restart() was called, the result is - undefined. This can happen when daylight savings time is turned on + undefined. This can happen when daylight-saving time is turned on or off. \sa start(), elapsed(), currentTime() @@ -2087,7 +2087,7 @@ int QTime::restart() \warning If the system's clock setting has been changed since the last time start() or restart() was called, the result is - undefined. This can happen when daylight savings time is turned on + undefined. This can happen when daylight-saving time is turned on or off. \sa start(), restart() @@ -2301,7 +2301,7 @@ static qint64 qt_mktime(QDate *date, QTime *time, QDateTimePrivate::DaylightStat } // Calls the platform variant of localtime for the given msecs, and updates -// the date, time, and daylight status with the returned values. +// the date, time, and DST status with the returned values. static bool qt_localtime(qint64 msecsSinceEpoch, QDate *localDate, QTime *localTime, QDateTimePrivate::DaylightStatus *daylightStatus) { @@ -2417,7 +2417,7 @@ static bool epochMSecsToLocalTime(qint64 msecs, QDate *localDate, QTime *localTi *daylightStatus = QDateTimePrivate::StandardTime; return true; } else if (msecs > (qint64(TIME_T_MAX) * 1000)) { - // Docs state any LocalTime after 2037-12-31 *will* have any Daylight Time applied + // Docs state any LocalTime after 2037-12-31 *will* have any DST applied // but this may fall outside the supported time_t range, so need to fake it. // Use existing method to fake the conversion, but this is deeply flawed as it may // apply the conversion from the wrong day number, e.g. if rule is last Sunday of month @@ -2442,7 +2442,7 @@ static bool epochMSecsToLocalTime(qint64 msecs, QDate *localDate, QTime *localTi } // Convert a LocalTime expressed in local msecs encoding and the corresponding -// daylight status into a UTC epoch msecs. Optionally populate the returned +// DST status into a UTC epoch msecs. Optionally populate the returned // values from mktime for the adjusted local date and time. static qint64 localMSecsToEpochMSecs(qint64 localMsecs, QDateTimePrivate::DaylightStatus *daylightStatus, @@ -2457,10 +2457,10 @@ static qint64 localMSecsToEpochMSecs(qint64 localMsecs, if (localMsecs <= qint64(MSECS_PER_DAY)) { - // Docs state any LocalTime before 1970-01-01 will *not* have any Daylight Time applied + // Docs state any LocalTime before 1970-01-01 will *not* have any DST applied // First, if localMsecs is within +/- 1 day of minimum time_t try mktime in case it does - // fall after minimum and needs proper daylight conversion + // fall after minimum and needs proper DST conversion if (localMsecs >= -qint64(MSECS_PER_DAY)) { bool valid; qint64 utcMsecs = qt_mktime(&dt, &tm, daylightStatus, abbreviation, &valid); @@ -2488,11 +2488,11 @@ static qint64 localMSecsToEpochMSecs(qint64 localMsecs, } else if (localMsecs >= msecsMax - MSECS_PER_DAY) { - // Docs state any LocalTime after 2037-12-31 *will* have any Daylight Time applied + // Docs state any LocalTime after 2037-12-31 *will* have any DST applied // but this may fall outside the supported time_t range, so need to fake it. // First, if localMsecs is within +/- 1 day of maximum time_t try mktime in case it does - // fall before maximum and can use proper daylight conversion + // fall before maximum and can use proper DST conversion if (localMsecs <= msecsMax + MSECS_PER_DAY) { bool valid; qint64 utcMsecs = qt_mktime(&dt, &tm, daylightStatus, abbreviation, &valid); @@ -2662,7 +2662,7 @@ void QDateTimePrivate::setDaylightStatus(QDateTimePrivate::DaylightStatus status } } -// Get the Daylight Status if LocalTime set via msecs +// Get the DST Status if LocalTime set via msecs QDateTimePrivate::DaylightStatus QDateTimePrivate::daylightStatus() const { if ((m_status & SetToDaylightTime) == SetToDaylightTime) @@ -2746,7 +2746,7 @@ void QDateTimePrivate::refreshDateTime() #endif // QT_BOOTSTRAPPED // We have a valid date and time and a Qt::LocalTime or Qt::TimeZone that needs calculating - // LocalTime and TimeZone might fall into "missing" DaylightTime transition hour + // LocalTime and TimeZone might fall into a "missing" DST transition hour // Calling toEpochMSecs will adjust the returned date/time if it does QDate testDate; QTime testTime; @@ -2776,8 +2776,8 @@ qint64 QDateTimePrivate::zoneMSecsToEpochMSecs(qint64 zoneMSecs, const QTimeZone { // Get the effective data from QTimeZone QTimeZonePrivate::Data data = zone.d->dataForLocalTime(zoneMSecs); - // Docs state any LocalTime before 1970-01-01 will *not* have any Daylight Time applied - // but all times afterwards will have Daylight Time applied. + // Docs state any LocalTime before 1970-01-01 will *not* have any DST applied + // but all affected times afterwards will have DST applied. if (data.atMSecsSinceEpoch >= 0) { msecsToTime(data.atMSecsSinceEpoch + (data.offsetFromUtc * 1000), localDate, localTime); return data.atMSecsSinceEpoch; @@ -2836,7 +2836,7 @@ qint64 QDateTimePrivate::zoneMSecsToEpochMSecs(qint64 zoneMSecs, const QTimeZone QDateTime expressed as local time; use toUTC() to convert it to UTC. You can also use timeSpec() to find out if a QDateTime object stores a UTC time or a local time. Operations such as - addSecs() and secsTo() are aware of daylight saving time (DST). + addSecs() and secsTo() are aware of daylight-saving time (DST). \note QDateTime does not account for leap seconds. @@ -2866,7 +2866,7 @@ qint64 QDateTimePrivate::zoneMSecsToEpochMSecs(qint64 zoneMSecs, const QTimeZone correctly or not up-to-date, QDateTime will give wrong results as well. - \section2 Daylight Savings Time (DST) + \section2 Daylight-Saving Time (DST) QDateTime takes into account the system's time zone information when dealing with DST. On modern Unix systems, this means it @@ -2884,7 +2884,7 @@ qint64 QDateTimePrivate::zoneMSecsToEpochMSecs(qint64 zoneMSecs, const QTimeZone time zone before 1970, even if the system's time zone database supports that information. - QDateTime takes into consideration the Standard Time to Daylight Time + QDateTime takes into consideration the Standard Time to Daylight-Saving Time transition. For example if the transition is at 2am and the clock goes forward to 3am, then there is a "missing" hour from 02:00:00 to 02:59:59.999 which QDateTime considers to be invalid. Any date maths performed @@ -2896,7 +2896,7 @@ qint64 QDateTimePrivate::zoneMSecsToEpochMSecs(qint64 zoneMSecs, const QTimeZone to define a QDateTime relative to UTC at a fixed offset of a given number of seconds from UTC. For example, an offset of +3600 seconds is one hour ahead of UTC and is usually written in ISO standard notation as - "UTC+01:00". Daylight Savings Time never applies with this TimeSpec. + "UTC+01:00". Daylight-Saving Time never applies with this TimeSpec. There is no explicit size restriction to the offset seconds, but there is an implicit limit imposed when using the toString() and fromString() @@ -2908,8 +2908,8 @@ qint64 QDateTimePrivate::zoneMSecsToEpochMSecs(qint64 zoneMSecs, const QTimeZone A Qt::TimeSpec of Qt::TimeZone is also supported in conjunction with the QTimeZone class. This allows you to define a datetime in a named time zone - adhering to a consistent set of daylight savings transition rules. For - example a time zone of "Europe/Berlin" will apply the daylight savings + adhering to a consistent set of daylight-saving transition rules. For + example a time zone of "Europe/Berlin" will apply the daylight-saving rules as used in Germany since 1970. Note that the transition rules applied depend on the platform support. See the QTimeZone documentation for more details. @@ -3051,7 +3051,7 @@ bool QDateTime::isNull() const the current Qt::TimeSpec, otherwise returns \c false. If the timeSpec() is Qt::LocalTime or Qt::TimeZone then the date and time are - checked to see if they fall in the Standard Time to Daylight Time transition + checked to see if they fall in the Standard Time to Daylight-Saving Time transition hour, i.e. if the transition is at 2am and the clock goes forward to 3am then the time from 02:00:00 to 02:59:59.999 is considered to be invalid. @@ -3142,10 +3142,10 @@ QTimeZone QDateTime::timeZone() const If the timeSpec() is Qt::OffsetFromUTC this will be the value originally set. If the timeSpec() is Qt::TimeZone this will be the offset effective in the - Time Zone including any Daylight Saving Offset. + Time Zone including any Daylight-Saving Offset. If the timeSpec() is Qt::LocalTime this will be the difference between the - Local Time and UTC including any Daylight Saving Offset. + Local Time and UTC including any Daylight-Saving Offset. If the timeSpec() is Qt::UTC this will be 0. @@ -3202,7 +3202,7 @@ QString QDateTime::timeZoneAbbreviation() const /*! \since 5.2 - Returns if this datetime falls in Daylight Savings Time. + Returns if this datetime falls in Daylight-Saving Time. If the Qt::TimeSpec is not Qt::LocalTime or Qt::TimeZone then will always return false. @@ -3415,8 +3415,8 @@ void QDateTime::setMSecsSinceEpoch(qint64 msecs) break; case Qt::TimeZone: #ifndef QT_BOOTSTRAPPED - // Docs state any LocalTime before 1970-01-01 will *not* have any Daylight Time applied - // but all times afterwards will have Daylight Time applied. + // Docs state any LocalTime before 1970-01-01 will *not* have any DST applied + // but all affected times afterwards will have DST applied. if (msecs >= 0) d->m_offsetFromUtc = d->m_timeZone.d->offsetFromUtc(msecs); else @@ -3658,7 +3658,7 @@ QString QDateTime::toString(const QString& format) const negative). If the timeSpec() is Qt::LocalTime and the resulting - date and time fall in the Standard Time to Daylight Time transition + date and time fall in the Standard Time to Daylight-Saving Time transition hour then the result will be adjusted accordingly, i.e. if the transition is at 2am and the clock goes forward to 3am and the result falls between 2am and 3am then the result will be adjusted to fall after 3am. @@ -3693,7 +3693,7 @@ QDateTime QDateTime::addDays(qint64 ndays) const is negative). If the timeSpec() is Qt::LocalTime and the resulting - date and time fall in the Standard Time to Daylight Time transition + date and time fall in the Standard Time to Daylight-Saving Time transition hour then the result will be adjusted accordingly, i.e. if the transition is at 2am and the clock goes forward to 3am and the result falls between 2am and 3am then the result will be adjusted to fall after 3am. @@ -3728,7 +3728,7 @@ QDateTime QDateTime::addMonths(int nmonths) const negative). If the timeSpec() is Qt::LocalTime and the resulting - date and time fall in the Standard Time to Daylight Time transition + date and time fall in the Standard Time to Daylight-Saving Time transition hour then the result will be adjusted accordingly, i.e. if the transition is at 2am and the clock goes forward to 3am and the result falls between 2am and 3am then the result will be adjusted to fall after 3am. @@ -3788,7 +3788,7 @@ QDateTime QDateTime::addMSecs(qint64 msecs) const QDateTime dt(*this); if (d->m_spec == Qt::LocalTime || d->m_spec == Qt::TimeZone) - // Convert to real UTC first in case crosses daylight transition + // Convert to real UTC first in case crosses DST transition dt.setMSecsSinceEpoch(d->toMSecsSinceEpoch() + msecs); else // No need to convert, just add on @@ -3823,8 +3823,8 @@ qint64 QDateTime::daysTo(const QDateTime &other) const the value returned is negative. Before performing the comparison, the two datetimes are converted - to Qt::UTC to ensure that the result is correct if one of the two - datetimes has daylight saving time (DST) and the other doesn't. + to Qt::UTC to ensure that the result is correct if daylight-saving + (DST) applies to one of the two datetimes but not the other. Returns 0 if either datetime is invalid. @@ -3845,8 +3845,8 @@ qint64 QDateTime::secsTo(const QDateTime &other) const the value returned is negative. Before performing the comparison, the two datetimes are converted - to Qt::UTC to ensure that the result is correct if one of the two - datetimes has daylight saving time (DST) and the other doesn't. + to Qt::UTC to ensure that the result is correct if daylight-saving + (DST) applies to one of the two datetimes and but not the other. Returns 0 if either datetime is invalid. diff --git a/src/corelib/tools/qelapsedtimer.cpp b/src/corelib/tools/qelapsedtimer.cpp index 41e8b4854d..8360f11632 100644 --- a/src/corelib/tools/qelapsedtimer.cpp +++ b/src/corelib/tools/qelapsedtimer.cpp @@ -83,7 +83,7 @@ QT_BEGIN_NAMESPACE platforms that support it (see QElapsedTimer::isMonotonic()). This has the added benefit that QElapsedTimer is immune to time adjustments, such as the user correcting the time. Also unlike QTime, QElapsedTimer is - immune to changes in the timezone settings, such as daylight saving + immune to changes in the timezone settings, such as daylight-saving periods. On the other hand, this means QElapsedTimer values can only be compared diff --git a/src/corelib/tools/qtimezone.cpp b/src/corelib/tools/qtimezone.cpp index 22091e641f..57c1838b76 100644 --- a/src/corelib/tools/qtimezone.cpp +++ b/src/corelib/tools/qtimezone.cpp @@ -199,14 +199,15 @@ Q_GLOBAL_STATIC(QTimeZoneSingleton, global_tz); The difference between UTC and the local time in a time zone is expressed as an offset in seconds from UTC, i.e. the number of seconds to add to UTC to obtain the local time. The total offset is comprised of two component - parts, the standard time offset and the daylight time offset. The standard - time offset is the number of seconds to add to UTC to obtain standard time - in the time zone. The daylight time offset is the number of seconds to add - to the standard time offset to obtain daylight time in the time zone. + parts, the standard time offset and the daylight-saving time offset. The + standard time offset is the number of seconds to add to UTC to obtain + standard time in the time zone. The daylight-saving time offset is the + number of seconds to add to the standard time offset to obtain + daylight-saving time (abbreviated DST and sometimes called "daylight time" + or "summer time") in the time zone. - Note that the standard and daylight offsets for a time zone may change over - time as countries have changed daylight time laws or even their standard - time offset. + Note that the standard and DST offsets for a time zone may change over time + as countries have changed DST laws or even their standard time offset. \section2 License @@ -241,21 +242,20 @@ Q_GLOBAL_STATIC(QTimeZoneSingleton, global_tz); \enum QTimeZone::TimeType The type of time zone time, for example when requesting the name. In time - zones that do not apply daylight time, all three values may return the - same result. + zones that do not apply DST, all three values may return the same result. \value StandardTime - The standard time in a time zone, i.e. when Daylight Savings is not + The standard time in a time zone, i.e. when Daylight-Saving is not in effect. For example when formatting a display name this will show something like "Pacific Standard Time". \value DaylightTime - A time when Daylight Savings is in effect. + A time when Daylight-Saving is in effect. For example when formatting a display name this will show something - like "Pacific daylight time". + like "Pacific daylight-saving time". \value GenericTime - A time which is not specifically Standard or Daylight time, either - an unknown time or a neutral form. + A time which is not specifically Standard or Daylight-Saving time, + either an unknown time or a neutral form. For example when formatting a display name this will show something like "Pacific Time". */ @@ -286,11 +286,11 @@ Q_GLOBAL_STATIC(QTimeZoneSingleton, global_tz); \li OffsetData::atUtc The datetime of the offset data in UTC time. \li OffsetData::offsetFromUtc The total offset from UTC in effect at the datetime. \li OffsetData::standardTimeOffset The standard time offset component of the total offset. - \li OffsetData::daylightTimeOffset The daylight time offset component of the total offset. + \li OffsetData::daylightTimeOffset The DST offset component of the total offset. \li OffsetData::abbreviation The abbreviation in effect at the datetime. \endlist - For example, for time zone "Europe/Berlin" the OffsetDate in standard and daylight time might be: + For example, for time zone "Europe/Berlin" the OffsetDate in standard and DST might be: \list \li atUtc = QDateTime(QDate(2013, 1, 1), QTime(0, 0, 0), Qt::UTC) @@ -531,8 +531,7 @@ QString QTimeZone::comment() const If the \a locale is not provided then the application default locale will be used. - The display name may change depending on daylight time or historical - events. + The display name may change depending on DST or historical events. \sa abbreviation() */ @@ -572,8 +571,7 @@ QString QTimeZone::displayName(TimeType timeType, NameType nameType, /*! Returns the time zone abbreviation at the given \a atDateTime. The - abbreviation may change depending on daylight time or even - historical events. + abbreviation may change depending on DST or even historical events. Note that the abbreviation is not guaranteed to be unique to this time zone and should not be used in place of the ID or display name. @@ -592,13 +590,13 @@ QString QTimeZone::abbreviation(const QDateTime &atDateTime) const /*! Returns the total effective offset at the given \a atDateTime, i.e. the number of seconds to add to UTC to obtain the local time. This includes - any daylight time offset that may be in effect, i.e. it is the sum of + any DST offset that may be in effect, i.e. it is the sum of standardTimeOffset() and daylightTimeOffset() for the given datetime. For example, for the time zone "Europe/Berlin" the standard time offset is - +3600 seconds and the daylight time offset is +3600 seconds. During standard - time offsetFromUtc() will return +3600 (UTC+01:00), and during daylight time - it will return +7200 (UTC+02:00). + +3600 seconds and the DST offset is +3600 seconds. During standard time + offsetFromUtc() will return +3600 (UTC+01:00), and during DST it will + return +7200 (UTC+02:00). \sa standardTimeOffset(), daylightTimeOffset() */ @@ -614,11 +612,11 @@ int QTimeZone::offsetFromUtc(const QDateTime &atDateTime) const /*! Returns the standard time offset at the given \a atDateTime, i.e. the number of seconds to add to UTC to obtain the local Standard Time. This - excludes any daylight time offset that may be in effect. + excludes any DST offset that may be in effect. For example, for the time zone "Europe/Berlin" the standard time offset is - +3600 seconds. During both standard and daylight time offsetFromUtc() will - return +3600 (UTC+01:00). + +3600 seconds. During both standard and DST offsetFromUtc() will return + +3600 (UTC+01:00). \sa offsetFromUtc(), daylightTimeOffset() */ @@ -632,13 +630,13 @@ int QTimeZone::standardTimeOffset(const QDateTime &atDateTime) const } /*! - Returns the daylight time offset at the given \a atDateTime, i.e. the - number of seconds to add to the standard time offset to obtain the local - daylight time. + Returns the daylight-saving time offset at the given \a atDateTime, + i.e. the number of seconds to add to the standard time offset to obtain the + local daylight-saving time. - For example, for the time zone "Europe/Berlin" the daylight time offset - is +3600 seconds. During standard time daylightTimeOffset() will return - 0, and during daylight time it will return +3600. + For example, for the time zone "Europe/Berlin" the DST offset is +3600 + seconds. During standard time daylightTimeOffset() will return 0, and when + daylight-saving is in effect it will return +3600. \sa offsetFromUtc(), standardTimeOffset() */ @@ -652,7 +650,7 @@ int QTimeZone::daylightTimeOffset(const QDateTime &atDateTime) const } /*! - Returns \c true if the time zone has observed daylight time at any time. + Returns \c true if the time zone has practiced daylight-saving at any time. \sa isDaylightTime(), daylightTimeOffset() */ @@ -666,7 +664,7 @@ bool QTimeZone::hasDaylightTime() const } /*! - Returns \c true if the given \a atDateTime is in daylight time. + Returns \c true if daylight-saving was in effect at the given \a atDateTime. \sa hasDaylightTime(), daylightTimeOffset() */ diff --git a/src/corelib/tools/qtimezoneprivate.cpp b/src/corelib/tools/qtimezoneprivate.cpp index 5bc3610af0..ab8332aea3 100644 --- a/src/corelib/tools/qtimezoneprivate.cpp +++ b/src/corelib/tools/qtimezoneprivate.cpp @@ -246,8 +246,8 @@ QTimeZonePrivate::Data QTimeZonePrivate::data(qint64 forMSecsSinceEpoch) const QTimeZonePrivate::Data QTimeZonePrivate::dataForLocalTime(qint64 forLocalMSecs) const { if (!hasDaylightTime() ||!hasTransitions()) { - // No daylight time means same offset for all local msecs - // Having daylight time but no transitions means we can't calculate, so use nearest + // No DST means same offset for all local msecs + // Having DST but no transitions means we can't calculate, so use nearest return data(forLocalMSecs - (standardTimeOffset(forLocalMSecs) * 1000)); } @@ -276,16 +276,16 @@ QTimeZonePrivate::Data QTimeZonePrivate::dataForLocalTime(qint64 forLocalMSecs) } if (tran.daylightTimeOffset == 0) { - // If tran is in StandardTime, then need to check if falls close either daylight transition + // If tran is in StandardTime, then need to check if falls close to either DST transition. // If it does, then it may need adjusting for missing hour or for second occurrence qint64 diffPrevTran = forLocalMSecs - (tran.atMSecsSinceEpoch + (tran.offsetFromUtc * 1000)); qint64 diffNextTran = nextTran.atMSecsSinceEpoch + (nextTran.offsetFromUtc * 1000) - forLocalMSecs; if (diffPrevTran >= 0 && diffPrevTran < MSECS_TRAN_WINDOW) { - // If tran picked is for standard time check if changed from daylight in last 6 hours, + // If tran picked is for standard time check if changed from DST in last 6 hours, // as the local msecs may be ambiguous and represent two valid utc msecs. - // If in last 6 hours then get prev tran and if diff falls within the daylight offset + // If in last 6 hours then get prev tran and if diff falls within the DST offset // then use the prev tran as we default to the FirstOccurrence // TODO Check if faster to just always get prev tran, or if faster using 6 hour check. Data dstTran = previousTransition(tran.atMSecsSinceEpoch); diff --git a/src/corelib/tools/qtimezoneprivate_android.cpp b/src/corelib/tools/qtimezoneprivate_android.cpp index 6178fe935a..e66d00c67c 100644 --- a/src/corelib/tools/qtimezoneprivate_android.cpp +++ b/src/corelib/tools/qtimezoneprivate_android.cpp @@ -150,7 +150,7 @@ int QAndroidTimeZonePrivate::daylightTimeOffset(qint64 atMSecsSinceEpoch) const bool QAndroidTimeZonePrivate::hasDaylightTime() const { if ( androidTimeZone.isValid() ) - /* note: the Java function only tests for future daylight transtions, not past */ + /* note: the Java function only tests for future DST transtions, not past */ return androidTimeZone.callMethod("useDaylightTime" ); else return false; @@ -210,34 +210,34 @@ QTimeZonePrivate::Data QAndroidTimeZonePrivate::dataForLocalTime(qint64 forLocal } else { qint64 UTCepochMSecs; - // compare the UTC time with standard offset against normal daylight offset of one hour + // compare the UTC time with standard offset against normal DST offset of one hour qint64 standardUTCMSecs(forLocalMSecs - (standardTimeOffset(forLocalMSecs) * 1000)); qint64 daylightUTCMsecs; - // Check if daylight time does apply, - // checking also for daylight time boundaries + // Check if daylight-saving time applies, + // checking also for DST boundaries if (isDaylightTime(standardUTCMSecs)) { - // If daylight does apply, then standardUTCMSecs will be an hour or so ahead of the real epoch time + // If DST does apply, then standardUTCMSecs will be an hour or so ahead of the real epoch time // so check that time daylightUTCMsecs = standardUTCMSecs - daylightTimeOffset(standardUTCMSecs)*1000; if (isDaylightTime(daylightUTCMsecs)) { - // daylight time confirmed + // DST confirmed UTCepochMSecs = daylightUTCMsecs; } else { - // daylight time has just finished + // DST has just finished UTCepochMSecs = standardUTCMSecs; } } else { // Standard time indicated, but check for a false negative. - // Would a standard one-hour daylight offset indicate daylight time? + // Would a standard one-hour DST offset indicate DST? daylightUTCMsecs = standardUTCMSecs - 3600000; // 3600000 MSECS_PER_HOUR if (isDaylightTime(daylightUTCMsecs)) { - // daylight time may have just started, - // but double check against timezone's own daylight offset + // DST may have just started, + // but double check against timezone's own DST offset // (don't necessarily assume a one-hour offset) daylightUTCMsecs = standardUTCMSecs - daylightTimeOffset(daylightUTCMsecs)*1000; if (isDaylightTime(daylightUTCMsecs)) { - // daylight time confirmed + // DST confirmed UTCepochMSecs = daylightUTCMsecs; } else { // false positive, apply standard time after all -- cgit v1.2.3 From 351853e04d585cc7e9098140fb50920d99597629 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Mon, 9 Nov 2015 12:53:54 +0100 Subject: Do not overwrite detailed error message if process fails to launch On Unix we get a detailed error message when a process fails to start, but later on we overwrite it with a generic "Process fails to start". Fix this by keeping the original error message (if one is available). This fixes a regression introduced in commit 5147f73ac3. Task-number: QTBUG-49286 Change-Id: Idd0f0fed9773d39f2947fc3e532b51e670952caf Reviewed-by: Oswald Buddenhagen Reviewed-by: Thiago Macieira --- src/corelib/io/qprocess.cpp | 5 +++-- src/corelib/io/qprocess_p.h | 2 +- src/corelib/io/qprocess_unix.cpp | 6 +++--- src/corelib/io/qprocess_win.cpp | 2 +- src/corelib/io/qprocess_wince.cpp | 2 +- 5 files changed, 9 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/corelib/io/qprocess.cpp b/src/corelib/io/qprocess.cpp index 8fbe96adb9..b09c99985c 100644 --- a/src/corelib/io/qprocess.cpp +++ b/src/corelib/io/qprocess.cpp @@ -1179,14 +1179,15 @@ bool QProcessPrivate::_q_startupNotification() if (startupSocketNotifier) startupSocketNotifier->setEnabled(false); - if (processStarted()) { + QString errorMessage; + if (processStarted(&errorMessage)) { q->setProcessState(QProcess::Running); emit q->started(QProcess::QPrivateSignal()); return true; } q->setProcessState(QProcess::NotRunning); - setErrorAndEmit(QProcess::FailedToStart); + setErrorAndEmit(QProcess::FailedToStart, errorMessage); #ifdef Q_OS_UNIX // make sure the process manager removes this entry waitForDeadChild(); diff --git a/src/corelib/io/qprocess_p.h b/src/corelib/io/qprocess_p.h index fc6b5345d1..d3f251c399 100644 --- a/src/corelib/io/qprocess_p.h +++ b/src/corelib/io/qprocess_p.h @@ -352,7 +352,7 @@ public: #elif defined(QPROCESS_USE_SPAWN) pid_t spawnChild(pid_t *ppid, const char *workingDirectory, char **argv, char **envp); #endif - bool processStarted(); + bool processStarted(QString *errorMessage = Q_NULLPTR); void terminateProcess(); void killProcess(); void findExitCode(); diff --git a/src/corelib/io/qprocess_unix.cpp b/src/corelib/io/qprocess_unix.cpp index 63480dfc6b..a5488f48cc 100644 --- a/src/corelib/io/qprocess_unix.cpp +++ b/src/corelib/io/qprocess_unix.cpp @@ -714,7 +714,7 @@ report_errno: } #endif -bool QProcessPrivate::processStarted() +bool QProcessPrivate::processStarted(QString *errorMessage) { ushort buf[errorBufferMax]; int i = qt_safe_read(childStartedPipe[0], &buf, sizeof buf); @@ -731,8 +731,8 @@ bool QProcessPrivate::processStarted() #endif // did we read an error message? - if (i > 0) - q_func()->setErrorString(QString((const QChar *)buf, i / sizeof(QChar))); + if ((i > 0) && errorMessage) + *errorMessage = QString((const QChar *)buf, i / sizeof(QChar)); return i <= 0; } diff --git a/src/corelib/io/qprocess_win.cpp b/src/corelib/io/qprocess_win.cpp index e77249975c..80e6d5bb61 100644 --- a/src/corelib/io/qprocess_win.cpp +++ b/src/corelib/io/qprocess_win.cpp @@ -543,7 +543,7 @@ void QProcessPrivate::startProcess() _q_startupNotification(); } -bool QProcessPrivate::processStarted() +bool QProcessPrivate::processStarted(QString * /*errorMessage*/) { return processState == QProcess::Running; } diff --git a/src/corelib/io/qprocess_wince.cpp b/src/corelib/io/qprocess_wince.cpp index 807472b7b2..9b63ece15c 100644 --- a/src/corelib/io/qprocess_wince.cpp +++ b/src/corelib/io/qprocess_wince.cpp @@ -160,7 +160,7 @@ void QProcessPrivate::startProcess() _q_startupNotification(); } -bool QProcessPrivate::processStarted() +bool QProcessPrivate::processStarted(QString * /*errorMessage*/) { return processState == QProcess::Running; } -- cgit v1.2.3 From bee361209f82425e6727a96c210ec6abf76b4bff Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Wed, 11 Nov 2015 12:24:07 +0200 Subject: JSON: Fix MSVC2013 warnings json_p.h(283) : warning C4800: 'uint64_t' : forcing value to bool 'true' or 'false' (performance warning) json_p.h(546) : warning C4800: 'uint32_t' : forcing value to bool 'true' or 'false' (performance warning) qjsonvalue.cpp(176) : warning C4244: '=' : conversion from 'int64_t' to 'double', possible loss of data qjsonvalue.cpp(518) : warning C4244: 'return' : conversion from 'const double' to 'int', possible loss of data Change-Id: I2a24f90f7615aeb47f747ecbe3b580f23773ebda Reviewed-by: Marc Mutz Reviewed-by: hjk Reviewed-by: Lars Knoll --- src/corelib/json/qjson_p.h | 4 ++-- src/corelib/json/qjsonvalue.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/corelib/json/qjson_p.h b/src/corelib/json/qjson_p.h index 5fc021c841..35a16b0ef6 100644 --- a/src/corelib/json/qjson_p.h +++ b/src/corelib/json/qjson_p.h @@ -280,7 +280,7 @@ static inline int compressedNumber(double d) if (non_int) return INT_MAX; - bool neg = (val >> 63); + bool neg = (val >> 63) != 0; val &= fraction_mask; val |= ((quint64)1 << 52); int res = (int)(val >> (52 - exp)); @@ -543,7 +543,7 @@ public: offset tableOffset; // content follows here - inline bool isObject() const { return is_object; } + inline bool isObject() const { return !!is_object; } inline bool isArray() const { return !isObject(); } inline offset *table() const { return (offset *) (((char *) this) + tableOffset); } diff --git a/src/corelib/json/qjsonvalue.cpp b/src/corelib/json/qjsonvalue.cpp index 4c7a44b4a0..328e07d18e 100644 --- a/src/corelib/json/qjsonvalue.cpp +++ b/src/corelib/json/qjsonvalue.cpp @@ -173,7 +173,7 @@ QJsonValue::QJsonValue(int n) QJsonValue::QJsonValue(qint64 n) : d(0), t(Double) { - this->dbl = n; + this->dbl = double(n); } /*! @@ -515,7 +515,7 @@ bool QJsonValue::toBool(bool defaultValue) const int QJsonValue::toInt(int defaultValue) const { if (t == Double && int(dbl) == dbl) - return dbl; + return int(dbl); return defaultValue; } -- cgit v1.2.3 From 6f84d50457ad6c8864e776fc722895458350c2e1 Mon Sep 17 00:00:00 2001 From: Liang Qi Date: Wed, 11 Nov 2015 14:58:22 +0100 Subject: move styleOverride from QApplicationPrivate to QGuiApplicationPrivate * -style option is also used in other cases than widget world Change-Id: I8555d309a7b9df0d26ad7a7b930411260537180e Reviewed-by: J-P Nurmi --- src/gui/kernel/qguiapplication.cpp | 10 ++++++++++ src/gui/kernel/qguiapplication_p.h | 1 + src/widgets/kernel/qapplication.cpp | 21 +++++++-------------- src/widgets/kernel/qapplication_p.h | 2 -- 4 files changed, 18 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 216537e51a..c5762fe1ee 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -127,6 +127,8 @@ Qt::MouseButtons QGuiApplicationPrivate::tabletState = Qt::NoButton; QWindow *QGuiApplicationPrivate::tabletPressTarget = 0; QWindow *QGuiApplicationPrivate::currentMouseWindow = 0; +QString QGuiApplicationPrivate::styleOverride; + Qt::ApplicationState QGuiApplicationPrivate::applicationState = Qt::ApplicationInactive; bool QGuiApplicationPrivate::highDpiScalingUpdated = false; @@ -1256,6 +1258,7 @@ void QGuiApplicationPrivate::init() session_key = QString::fromWCharArray(guidstr); # endif #endif + QString s; int j = argc ? 1 : 0; for (int i=1; i Date: Tue, 10 Nov 2015 17:34:00 +0100 Subject: Docs: Add a note clarifying that Q_MOVABLE_TYPE is not about move semantics Change-Id: Ib1fb9ac00c0437ed2312c46e3e97d7ece05ba8e8 Reviewed-by: Thiago Macieira --- src/corelib/global/qglobal.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp index ed8a9163d4..81925642f8 100644 --- a/src/corelib/global/qglobal.cpp +++ b/src/corelib/global/qglobal.cpp @@ -3837,7 +3837,8 @@ int qrand() independent copy of the object. \li \c Q_MOVABLE_TYPE specifies that \a Type has a constructor and/or a destructor but can be moved in memory using \c - memcpy(). + memcpy(). Note: despite the name, this has nothing to do with move + constructors or C++ move semantics. \li \c Q_COMPLEX_TYPE (the default) specifies that \a Type has constructors and/or a destructor and that it may not be moved in memory. -- cgit v1.2.3 From 45be40540801bc760b09d731958ba646e4eb946c Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Tue, 10 Nov 2015 17:52:28 +0100 Subject: Document performance of QMutex Change-Id: I4de2fd5ba717975b5de98ffe7ca6348afbed1b2f Reviewed-by: Marc Mutz --- src/corelib/thread/qmutex.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src') diff --git a/src/corelib/thread/qmutex.cpp b/src/corelib/thread/qmutex.cpp index 742a572bef..fa3bb080ae 100644 --- a/src/corelib/thread/qmutex.cpp +++ b/src/corelib/thread/qmutex.cpp @@ -139,6 +139,11 @@ public: lock calls unlock(). A non-blocking alternative to lock() is tryLock(). + QMutex is optimized to be fast in the non-contended case. A non-recursive + QMutex will not allocate memory if there is no contention on that mutex. + It is constructed and destroyed with almost no overhead, + which means it is fine to have many mutexes as part of other classes. + \sa QMutexLocker, QReadWriteLock, QSemaphore, QWaitCondition */ @@ -165,6 +170,8 @@ public: a thread may only lock a mutex once. The default is QMutex::NonRecursive. + Recursive mutexes are slower and take more memory than non-recursive ones. + \sa lock(), unlock() */ QMutex::QMutex(RecursionMode mode) -- cgit v1.2.3 From d6b45853f5d45b5922c93f947d8909855f19a8b9 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Wed, 11 Nov 2015 15:32:29 +0100 Subject: Make qt_findAtNxFile return the source device pixel ratio MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QTextImageHandler needs it. And QQuickImageBase will also need it. Change-Id: Ica5d17519c4c6c06e25bab7d2b1d3733f4058425 Reviewed-by: Tor Arne Vestbø --- src/gui/image/qicon.cpp | 11 +++++++++-- src/gui/image/qicon.h | 3 ++- src/gui/text/qtextimagehandler.cpp | 20 ++++++++++++-------- 3 files changed, 23 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp index af3af516db..b2d9ed18f5 100644 --- a/src/gui/image/qicon.cpp +++ b/src/gui/image/qicon.cpp @@ -1378,8 +1378,12 @@ QDebug operator<<(QDebug dbg, const QIcon &i) Given base foo.png and a target dpr of 2.5, this function will look for foo@3x.png, then foo@2x, then fall back to foo.png if not found. + + \a sourceDevicePixelRatio will be set to the value of N if the argument is + a non-null pointer */ -QString qt_findAtNxFile(const QString &baseFileName, qreal targetDevicePixelRatio) +QString qt_findAtNxFile(const QString &baseFileName, qreal targetDevicePixelRatio, + qreal *sourceDevicePixelRatio) { if (targetDevicePixelRatio <= 1.0) return baseFileName; @@ -1397,8 +1401,11 @@ QString qt_findAtNxFile(const QString &baseFileName, qreal targetDevicePixelRati for (int n = qCeil(targetDevicePixelRatio); n > 1; --n) { QString atNxfileName = baseFileName; atNxfileName.insert(dotIndex, atNx.arg(n)); - if (QFile::exists(atNxfileName)) + if (QFile::exists(atNxfileName)) { + if (sourceDevicePixelRatio) + *sourceDevicePixelRatio = n; return atNxfileName; + } } return baseFileName; diff --git a/src/gui/image/qicon.h b/src/gui/image/qicon.h index 8c72f54629..9ed7336502 100644 --- a/src/gui/image/qicon.h +++ b/src/gui/image/qicon.h @@ -139,7 +139,8 @@ Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QIcon &); Q_GUI_EXPORT QDebug operator<<(QDebug dbg, const QIcon &); #endif -Q_GUI_EXPORT QString qt_findAtNxFile(const QString &baseFileName, qreal targetDevicePixelRatio); +Q_GUI_EXPORT QString qt_findAtNxFile(const QString &baseFileName, qreal targetDevicePixelRatio, + qreal *sourceDevicePixelRatio = Q_NULLPTR); QT_END_NAMESPACE diff --git a/src/gui/text/qtextimagehandler.cpp b/src/gui/text/qtextimagehandler.cpp index 747ed90281..16d81a7d6d 100644 --- a/src/gui/text/qtextimagehandler.cpp +++ b/src/gui/text/qtextimagehandler.cpp @@ -44,8 +44,10 @@ QT_BEGIN_NAMESPACE -extern QString qt_findAtNxFile(const QString &baseFileName, qreal targetDevicePixelRatio); -static QString resolveFileName(QString fileName, QUrl *url, qreal targetDevicePixelRatio) +extern QString qt_findAtNxFile(const QString &baseFileName, qreal targetDevicePixelRatio, + qreal *sourceDevicePixelRatio); +static QString resolveFileName(QString fileName, QUrl *url, qreal targetDevicePixelRatio, + qreal *sourceDevicePixelRatio) { // We might use the fileName for loading if url loading fails // try to make sure it is a valid file path. @@ -64,7 +66,7 @@ static QString resolveFileName(QString fileName, QUrl *url, qreal targetDevicePi return fileName; // try to find a Nx version - return qt_findAtNxFile(fileName, targetDevicePixelRatio); + return qt_findAtNxFile(fileName, targetDevicePixelRatio, sourceDevicePixelRatio); } @@ -76,7 +78,8 @@ static QPixmap getPixmap(QTextDocument *doc, const QTextImageFormat &format, con if (name.startsWith(QLatin1String(":/"))) // auto-detect resources and convert them to url name.prepend(QLatin1String("qrc")); QUrl url = QUrl(name); - name = resolveFileName(name, &url, devicePixelRatio); + qreal sourcePixelRatio = 1.0; + name = resolveFileName(name, &url, devicePixelRatio, &sourcePixelRatio); const QVariant data = doc->resource(QTextDocument::ImageResource, url); if (data.type() == QVariant::Pixmap || data.type() == QVariant::Image) { pm = qvariant_cast(data); @@ -102,7 +105,7 @@ static QPixmap getPixmap(QTextDocument *doc, const QTextImageFormat &format, con } if (name.contains(QStringLiteral("@2x"))) - pm.setDevicePixelRatio(2.0); + pm.setDevicePixelRatio(sourcePixelRatio); return pm; } @@ -157,7 +160,8 @@ static QImage getImage(QTextDocument *doc, const QTextImageFormat &format, const if (name.startsWith(QLatin1String(":/"))) // auto-detect resources name.prepend(QLatin1String("qrc")); QUrl url = QUrl(name); - name = resolveFileName(name, &url, devicePixelRatio); + qreal sourcePixelRatio = 1.0; + name = resolveFileName(name, &url, devicePixelRatio, &sourcePixelRatio); const QVariant data = doc->resource(QTextDocument::ImageResource, url); if (data.type() == QVariant::Image) { image = qvariant_cast(data); @@ -181,8 +185,8 @@ static QImage getImage(QTextDocument *doc, const QTextImageFormat &format, const doc->addResource(QTextDocument::ImageResource, url, image); } - if (name.contains(QStringLiteral("@2x"))) - image.setDevicePixelRatio(2.0); + if (sourcePixelRatio != 1.0) + image.setDevicePixelRatio(sourcePixelRatio); return image; } -- cgit v1.2.3 From 037b05ac760a50630a009362011c12bcce11644d Mon Sep 17 00:00:00 2001 From: Nico Vertriest Date: Tue, 27 Oct 2015 15:28:38 +0100 Subject: Doc: corrected error in doc static plugins MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QTBUG-43160 Change-Id: I94f92318cec095391050b2af90980010bd1066b9 Reviewed-by: Topi Reiniö Reviewed-by: Martin Smith --- src/corelib/plugin/qplugin.qdoc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/corelib/plugin/qplugin.qdoc b/src/corelib/plugin/qplugin.qdoc index 00ecb30430..1b394c4174 100644 --- a/src/corelib/plugin/qplugin.qdoc +++ b/src/corelib/plugin/qplugin.qdoc @@ -93,9 +93,9 @@ \macro Q_IMPORT_PLUGIN(PluginName) \relates - This macro imports the plugin named \a PluginName, corresponding - to the \l{qmake Variable Reference#TARGET}{TARGET} specified in the - plugin's project file. + This macro imports the plugin named \a PluginName, which corresponds + with the name of the class that declares metadata for the plugin with + Q_PLUGIN_METADATA(). Inserting this macro into your application's source code will allow you to make use of a static plugin. -- cgit v1.2.3 From 0f336e85655fd50cf84b67cf9101e92bba1efbfc Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sat, 7 Nov 2015 00:26:03 +0400 Subject: Introduce png_dependency.pri Just like any other x_dependency.pri, it shall be included instead of linking with png lib directly. Change-Id: I698c8a8137f937d2e2c5f5dc9b9188b780c9e49a Reviewed-by: Oswald Buddenhagen Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/3rdparty/png_dependency.pri | 6 ++++++ src/gui/image/qpnghandler.pri | 7 +------ 2 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 src/3rdparty/png_dependency.pri (limited to 'src') diff --git a/src/3rdparty/png_dependency.pri b/src/3rdparty/png_dependency.pri new file mode 100644 index 0000000000..78da861f77 --- /dev/null +++ b/src/3rdparty/png_dependency.pri @@ -0,0 +1,6 @@ +contains(QT_CONFIG, system-png) { + unix|mingw: LIBS_PRIVATE += -lpng + else: LIBS += libpng.lib +} else: contains(QT_CONFIG, png) { + include($$PWD/libpng.pri) +} diff --git a/src/gui/image/qpnghandler.pri b/src/gui/image/qpnghandler.pri index 9ab175d628..505d214130 100644 --- a/src/gui/image/qpnghandler.pri +++ b/src/gui/image/qpnghandler.pri @@ -1,9 +1,4 @@ HEADERS += $$PWD/qpnghandler_p.h SOURCES += $$PWD/qpnghandler.cpp -contains(QT_CONFIG, system-png) { - if(unix|mingw): LIBS_PRIVATE += -lpng - else:win32: LIBS += libpng.lib -} else { - include($$PWD/../../3rdparty/libpng.pri) -} +include($$PWD/../../3rdparty/png_dependency.pri) -- cgit v1.2.3 From 3a3e2193d7f8879e2d68c311c3149e9f6b779d5a Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sat, 7 Nov 2015 00:31:43 +0400 Subject: QUnicodeTables generator: Minor clean-up & stricter checks Use static_cast instead of C-style cast; ushort -> unsigned short; Avoid a lvalue in qGetProp(); Minor styling fixes. Change-Id: Ic6412e28ac9316a587d32d0e674d21f672967fd6 Reviewed-by: Lars Knoll --- src/corelib/tools/qunicodetables.cpp | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qunicodetables.cpp b/src/corelib/tools/qunicodetables.cpp index 24a9eafcd5..14e4fd10aa 100644 --- a/src/corelib/tools/qunicodetables.cpp +++ b/src/corelib/tools/qunicodetables.cpp @@ -40,7 +40,7 @@ QT_BEGIN_NAMESPACE namespace QUnicodeTables { static const unsigned short uc_property_trie[] = { - // 0 - 0x11000 + // [0x0..0x11000) 6256, 6288, 6320, 6352, 6384, 6416, 6448, 6480, 6512, 6544, 6576, 6608, 6640, 6672, 6704, 6736, @@ -331,7 +331,7 @@ static const unsigned short uc_property_trie[] = { 8400, 8400, 8400, 23088, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, - // 0x11000 - 0x110000 + // [0x11000..0x110000) 23120, 23376, 23632, 23888, 24144, 24400, 24656, 24912, 25168, 25424, 25680, 25424, 25424, 25424, 25424, 25424, @@ -5738,7 +5738,7 @@ static const unsigned short uc_property_trie[] = { 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, - 2494, 2494, 2494, 2494, 2494, 2494, 2489, 2489, + 2494, 2494, 2494, 2494, 2494, 2494, 2489, 2489 }; #define GET_PROP_INDEX(ucs4) \ @@ -8249,14 +8249,12 @@ static const Properties uc_properties[] = { Q_DECL_CONST_FUNCTION static inline const Properties *qGetProp(uint ucs4) Q_DECL_NOTHROW { - const int index = GET_PROP_INDEX(ucs4); - return uc_properties + index; + return uc_properties + GET_PROP_INDEX(ucs4); } Q_DECL_CONST_FUNCTION static inline const Properties *qGetProp(ushort ucs2) Q_DECL_NOTHROW { - const int index = GET_PROP_INDEX_UCS2(ucs2); - return uc_properties + index; + return uc_properties + GET_PROP_INDEX_UCS2(ucs2); } Q_DECL_CONST_FUNCTION Q_CORE_EXPORT const Properties * QT_FASTCALL properties(uint ucs4) Q_DECL_NOTHROW @@ -8271,26 +8269,26 @@ Q_DECL_CONST_FUNCTION Q_CORE_EXPORT const Properties * QT_FASTCALL properties(us Q_CORE_EXPORT GraphemeBreakClass QT_FASTCALL graphemeBreakClass(uint ucs4) Q_DECL_NOTHROW { - return (GraphemeBreakClass)qGetProp(ucs4)->graphemeBreakClass; + return static_cast(qGetProp(ucs4)->graphemeBreakClass); } Q_CORE_EXPORT WordBreakClass QT_FASTCALL wordBreakClass(uint ucs4) Q_DECL_NOTHROW { - return (WordBreakClass)qGetProp(ucs4)->wordBreakClass; + return static_cast(qGetProp(ucs4)->wordBreakClass); } Q_CORE_EXPORT SentenceBreakClass QT_FASTCALL sentenceBreakClass(uint ucs4) Q_DECL_NOTHROW { - return (SentenceBreakClass)qGetProp(ucs4)->sentenceBreakClass; + return static_cast(qGetProp(ucs4)->sentenceBreakClass); } Q_CORE_EXPORT LineBreakClass QT_FASTCALL lineBreakClass(uint ucs4) Q_DECL_NOTHROW { - return (LineBreakClass)qGetProp(ucs4)->lineBreakClass; + return static_cast(qGetProp(ucs4)->lineBreakClass); } -static const ushort specialCaseMap[] = { +static const unsigned short specialCaseMap[] = { 0x0, // placeholder 0x1, 0x2c65, 0x1, 0x2c66, @@ -10407,8 +10405,8 @@ static const unsigned short uc_decomposition_trie[] = { #define GET_DECOMPOSITION_INDEX(ucs4) \ (ucs4 < 0x3400 \ ? (uc_decomposition_trie[uc_decomposition_trie[ucs4>>4] + (ucs4 & 0xf)]) \ - : (ucs4 < 0x30000\ - ? uc_decomposition_trie[uc_decomposition_trie[((ucs4 - 0x3400)>>8) + 0x340] + (ucs4 & 0xff)]\ + : (ucs4 < 0x30000 \ + ? uc_decomposition_trie[uc_decomposition_trie[((ucs4 - 0x3400)>>8) + 0x340] + (ucs4 & 0xff)] \ : 0xffff)) static const unsigned short uc_decomposition_map[] = { @@ -12608,8 +12606,8 @@ static const unsigned short uc_ligature_trie[] = { #define GET_LIGATURE_INDEX(ucs4) \ (ucs4 < 0x3100 \ ? (uc_ligature_trie[uc_ligature_trie[ucs4>>5] + (ucs4 & 0x1f)]) \ - : (ucs4 < 0x12000\ - ? uc_ligature_trie[uc_ligature_trie[((ucs4 - 0x3100)>>8) + 0x188] + (ucs4 & 0xff)]\ + : (ucs4 < 0x12000 \ + ? uc_ligature_trie[uc_ligature_trie[((ucs4 - 0x3100)>>8) + 0x188] + (ucs4 & 0xff)] \ : 0xffff)) static const unsigned short uc_ligature_map[] = { @@ -12874,7 +12872,7 @@ static const NormalizationCorrection uc_normalization_corrections[] = { { 0x2f874, 0x5f33, 7 }, { 0x2f91f, 0x43ab, 7 }, { 0x2f95f, 0x7aae, 7 }, - { 0x2f9bf, 0x4d57, 7 }, + { 0x2f9bf, 0x4d57, 7 } }; enum { NumNormalizationCorrections = 6 }; -- cgit v1.2.3 From 2316db05a89c7de6a10ac64e0860262b25ed2a31 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sat, 7 Nov 2015 09:53:56 +0400 Subject: QFontEngine: Check for AAT support only with HB-NG HB-old is unable to handle these anyways. Change-Id: Ibe69b5d030134b8a0a76dc966b6dfc6b5ff9a883 Reviewed-by: Lars Knoll --- src/gui/text/qfontengine.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp index a0eedee6b9..3208a199b7 100644 --- a/src/gui/text/qfontengine.cpp +++ b/src/gui/text/qfontengine.cpp @@ -370,17 +370,15 @@ bool QFontEngine::supportsScript(QChar::Script script) const return true; } -#ifdef Q_OS_MAC - { +#ifdef QT_ENABLE_HARFBUZZ_NG + if (qt_useHarfbuzzNG()) { +#if defined(Q_OS_DARWIN) // in AAT fonts, 'gsub' table is effectively replaced by 'mort'/'morx' table uint len; if (getSfntTableData(MAKE_TAG('m','o','r','t'), 0, &len) || getSfntTableData(MAKE_TAG('m','o','r','x'), 0, &len)) return true; - } #endif -#ifdef QT_ENABLE_HARFBUZZ_NG - if (qt_useHarfbuzzNG()) { bool ret = false; if (hb_face_t *face = hb_qt_face_get_for_engine(const_cast(this))) { hb_tag_t script_tag_1, script_tag_2; -- cgit v1.2.3 From 50af66293de8bd5dd9fd9141a45d9415b5c688aa Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sat, 7 Nov 2015 09:54:21 +0400 Subject: QTextEngine: Do not disable graphite2 HB shaper backend This fixes-up bf013c9e745c63cb112be4d3a37027ff997927dd by specifying graphite2 shaper in a "safe" shaper list, one used for non-CoreText font engines (currently, FreeType font engine only). Make the the comment and the code a bit cleaner about the fallback shaper list. Change-Id: Ib0cedc0b593023c9ee771e8e98c314d9c8f13037 Reviewed-by: Lars Knoll --- src/gui/text/qtextengine.cpp | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index 6b98c14205..530871f65b 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -1120,15 +1120,6 @@ QT_BEGIN_INCLUDE_NAMESPACE QT_END_INCLUDE_NAMESPACE -#if defined(Q_OS_OSX) && !defined(QT_NO_FREETYPE) -static const char *s_shapersForOsxFreeType[] = -{ - "ot", - "fallback", - Q_NULLPTR -}; -#endif - int QTextEngine::shapeTextWithHarfbuzzNG(const QScriptItem &si, const ushort *string, int itemLength, QFontEngine *fontEngine, const QVector &itemBoundaries, bool kerningEnabled) const { uint glyphs_shaped = 0; @@ -1182,13 +1173,21 @@ int QTextEngine::shapeTextWithHarfbuzzNG(const QScriptItem &si, const ushort *st const int num_features = 1; const char *const *shaper_list = Q_NULLPTR; -#if defined(Q_OS_OSX) && !defined(QT_NO_FREETYPE) - // What's behind QFontEngine::FaceData::user_data isn't compatible between CoreText and - // FreeType font engines - specifically functions in hb-coretext.cc would run into undefined - // behavior with data from the FreeType engine. The OpenType shaper works with that engine. - if (actualFontEngine->type() == QFontEngine::Freetype) - shaper_list = s_shapersForOsxFreeType; +#if defined(Q_OS_DARWIN) + // What's behind QFontEngine::FaceData::user_data isn't compatible between different font engines + // - specifically functions in hb-coretext.cc would run into undefined behavior with data + // from non-CoreText engine. The other shapers works with that engine just fine. + if (actualFontEngine->type() != QFontEngine::Mac) { + static const char *s_shaper_list_without_coretext[] = { + "graphite2", + "ot", + "fallback", + Q_NULLPTR + }; + shaper_list = s_shaper_list_without_coretext; + } #endif + bool shapedOk = hb_shape_full(hb_font, buffer, features, num_features, shaper_list); if (Q_UNLIKELY(!shapedOk)) { hb_buffer_destroy(buffer); -- cgit v1.2.3 From c1da13f6db756a9b23c46193304156c5e10f3bc1 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sat, 7 Nov 2015 09:54:46 +0400 Subject: QTextEngine: Apply CoreText specific post-processing for QFE::Mac only These tricks has no meaning to other font engines (i.e. to FreeType). Change-Id: I0410693d4d159367d760433062506691dc7c4610 Reviewed-by: Lars Knoll --- src/gui/text/qtextengine.cpp | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index 530871f65b..50a242d81e 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -1267,19 +1267,20 @@ int QTextEngine::shapeTextWithHarfbuzzNG(const QScriptItem &si, const ushort *st g.glyphs[i] |= (engineIdx << 24); } -#ifdef Q_OS_MAC - // CTRunGetPosition has a bug which applies matrix on 10.6, so we disable - // scaling the advances for this particular version - if (actualFontEngine->fontDef.stretch != 100 - && QSysInfo::MacintoshVersion != QSysInfo::MV_10_6) { - QFixed stretch = QFixed(int(actualFontEngine->fontDef.stretch)) / QFixed(100); - for (uint i = 0; i < num_glyphs; ++i) - g.advances[i] *= stretch; - } - - if (actualFontEngine->fontDef.styleStrategy & QFont::ForceIntegerMetrics) { - for (uint i = 0; i < num_glyphs; ++i) - g.advances[i] = g.advances[i].round(); +#ifdef Q_OS_DARWIN + if (actualFontEngine->type() == QFontEngine::Mac) { + // CTRunGetPosition has a bug which applies matrix on 10.6, so we disable + // scaling the advances for this particular version + if (QSysInfo::MacintoshVersion != QSysInfo::MV_10_6 && actualFontEngine->fontDef.stretch != 100) { + QFixed stretch = QFixed(int(actualFontEngine->fontDef.stretch)) / QFixed(100); + for (uint i = 0; i < num_glyphs; ++i) + g.advances[i] *= stretch; + } + + if (actualFontEngine->fontDef.styleStrategy & QFont::ForceIntegerMetrics) { + for (uint i = 0; i < num_glyphs; ++i) + g.advances[i] = g.advances[i].round(); + } } #endif -- cgit v1.2.3 From 26e66694fad4f3ec1afba2f2c1de3c66c6d3d7ac Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sun, 8 Nov 2015 11:44:57 +0400 Subject: QFontEngineFT: Minor optimization to convertGRAYToARGB() Precalculate everything we can and use faster loop. Make inlined as it is used just in a single place. Change-Id: If3c33d60739eb4ce896020321442ae81edd1c13d Reviewed-by: Friedemann Kleint Reviewed-by: Lars Knoll --- src/gui/text/qfontengine_ft.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp index 0d28785aa1..162f409acd 100644 --- a/src/gui/text/qfontengine_ft.cpp +++ b/src/gui/text/qfontengine_ft.cpp @@ -590,13 +590,16 @@ static void convertRGBToARGB_V(const uchar *src, uint *dst, int width, int heigh } } -static void convertGRAYToARGB(const uchar *src, uint *dst, int width, int height, int src_pitch) { - for (int y = 0; y < height; ++y) { - int readpos = (y * src_pitch); - int writepos = (y * width); - for (int x = 0; x < width; ++x) { - dst[writepos + x] = (0xFF << 24) + (src[readpos + x] << 16) + (src[readpos + x] << 8) + src[readpos + x]; +static inline void convertGRAYToARGB(const uchar *src, uint *dst, int width, int height, int src_pitch) +{ + while (height--) { + const uchar *p = src; + const uchar * const e = p + width; + while (p < e) { + uchar gray = *p++; + *dst++ = (0xFF << 24) | (gray << 16) | (gray << 8) | gray; } + src += src_pitch; } } -- cgit v1.2.3 From 10d311d9d244c3a6855dd654dcf9af4bbc7044b2 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 9 Nov 2015 15:13:55 +0100 Subject: Windows/Direct2D: Handle screen changes after window creation. Call QWindowSystemInterface::handleWindowScreenChanged() in QWindowsIntegration::createPlatformWindow() should the effective screen be different from the initial screen due to the geometry. In order to avoid code duplication in the Direct2D plugin, fold the helper method createWindowData() into QWindowsIntegration::createPlatformWindow() and introduce a new virtual helper to create the actual platform window for QWindowsDirect2DIntegration to hook in. Task-number: QTBUG-48379 Change-Id: I49c7a50a12245691414ab49bffe802239a87d2d6 Reviewed-by: J-P Nurmi Reviewed-by: Joerg Bornemann --- .../direct2d/qwindowsdirect2dintegration.cpp | 11 ++++---- .../direct2d/qwindowsdirect2dintegration.h | 4 ++- .../platforms/windows/qwindowsintegration.cpp | 30 ++++++++++++++-------- .../platforms/windows/qwindowsintegration.h | 4 ++- src/plugins/platforms/windows/qwindowswindow.h | 2 ++ 5 files changed, 32 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/direct2d/qwindowsdirect2dintegration.cpp b/src/plugins/platforms/direct2d/qwindowsdirect2dintegration.cpp index 20dde476c1..b86dfa3546 100644 --- a/src/plugins/platforms/direct2d/qwindowsdirect2dintegration.cpp +++ b/src/plugins/platforms/direct2d/qwindowsdirect2dintegration.cpp @@ -219,12 +219,11 @@ QWindowsDirect2DIntegration::~QWindowsDirect2DIntegration() return static_cast(QWindowsIntegration::instance()); } - QPlatformWindow *QWindowsDirect2DIntegration::createPlatformWindow(QWindow *window) const - { - QWindowsWindowData data = createWindowData(window); - return data.hwnd ? new QWindowsDirect2DWindow(window, data) - : Q_NULLPTR; - } + +QWindowsWindow *QWindowsDirect2DIntegration::createPlatformWindowHelper(QWindow *window, const QWindowsWindowData &data) const +{ + return new QWindowsDirect2DWindow(window, data); +} QPlatformNativeInterface *QWindowsDirect2DIntegration::nativeInterface() const { diff --git a/src/plugins/platforms/direct2d/qwindowsdirect2dintegration.h b/src/plugins/platforms/direct2d/qwindowsdirect2dintegration.h index 6b7b3fbea2..64042cab0a 100644 --- a/src/plugins/platforms/direct2d/qwindowsdirect2dintegration.h +++ b/src/plugins/platforms/direct2d/qwindowsdirect2dintegration.h @@ -52,7 +52,6 @@ public: static QWindowsDirect2DIntegration *instance(); - QPlatformWindow *createPlatformWindow(QWindow *window) const Q_DECL_OVERRIDE; QPlatformNativeInterface *nativeInterface() const Q_DECL_OVERRIDE; QPlatformPixmap *createPlatformPixmap(QPlatformPixmap::PixelType type) const Q_DECL_OVERRIDE; QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const Q_DECL_OVERRIDE; @@ -60,6 +59,9 @@ public: QWindowsDirect2DContext *direct2DContext() const; +protected: + QWindowsWindow *createPlatformWindowHelper(QWindow *window, const QWindowsWindowData &) const Q_DECL_OVERRIDE; + private: explicit QWindowsDirect2DIntegration(const QStringList ¶mList); bool init(); diff --git a/src/plugins/platforms/windows/qwindowsintegration.cpp b/src/plugins/platforms/windows/qwindowsintegration.cpp index b67e0b859f..36ec9ebc92 100644 --- a/src/plugins/platforms/windows/qwindowsintegration.cpp +++ b/src/plugins/platforms/windows/qwindowsintegration.cpp @@ -288,7 +288,7 @@ bool QWindowsIntegration::hasCapability(QPlatformIntegration::Capability cap) co return false; } -QWindowsWindowData QWindowsIntegration::createWindowData(QWindow *window) const +QPlatformWindow *QWindowsIntegration::createPlatformWindow(QWindow *window) const { QWindowsWindowData requested; requested.flags = window->flags(); @@ -307,22 +307,30 @@ QWindowsWindowData QWindowsIntegration::createWindowData(QWindow *window) const << "\n Obtained : " << obtained.geometry << " margins=" << obtained.frame << " handle=" << obtained.hwnd << ' ' << obtained.flags << '\n'; - if (obtained.hwnd) { - if (requested.flags != obtained.flags) - window->setFlags(obtained.flags); - // Trigger geometry change signals of QWindow. - if ((obtained.flags & Qt::Desktop) != Qt::Desktop && requested.geometry != obtained.geometry) + if (Q_UNLIKELY(!obtained.hwnd)) + return Q_NULLPTR; + + QWindowsWindow *result = createPlatformWindowHelper(window, obtained); + Q_ASSERT(result); + + if (requested.flags != obtained.flags) + window->setFlags(obtained.flags); + // Trigger geometry/screen change signals of QWindow. + if ((obtained.flags & Qt::Desktop) != Qt::Desktop) { + if (requested.geometry != obtained.geometry) QWindowSystemInterface::handleGeometryChange(window, obtained.geometry); + QPlatformScreen *screen = result->screenForGeometry(obtained.geometry); + if (screen && result->screen() != screen) + QWindowSystemInterface::handleWindowScreenChanged(window, screen->screen()); } - return obtained; + return result; } -QPlatformWindow *QWindowsIntegration::createPlatformWindow(QWindow *window) const +// Overridden to return a QWindowsDirect2DWindow in Direct2D plugin. +QWindowsWindow *QWindowsIntegration::createPlatformWindowHelper(QWindow *window, const QWindowsWindowData &data) const { - QWindowsWindowData data = createWindowData(window); - return data.hwnd ? new QWindowsWindow(window, data) - : Q_NULLPTR; + return new QWindowsWindow(window, data); } #ifndef QT_NO_OPENGL diff --git a/src/plugins/platforms/windows/qwindowsintegration.h b/src/plugins/platforms/windows/qwindowsintegration.h index fa5192ba03..cb10bf08f5 100644 --- a/src/plugins/platforms/windows/qwindowsintegration.h +++ b/src/plugins/platforms/windows/qwindowsintegration.h @@ -62,7 +62,6 @@ public: bool hasCapability(QPlatformIntegration::Capability cap) const; - QWindowsWindowData createWindowData(QWindow *window) const; QPlatformWindow *createPlatformWindow(QWindow *window) const; #ifndef QT_NO_OPENGL QPlatformOpenGLContext *createPlatformOpenGLContext(QOpenGLContext *context) const Q_DECL_OVERRIDE; @@ -101,6 +100,9 @@ public: QPlatformSessionManager *createPlatformSessionManager(const QString &id, const QString &key) const Q_DECL_OVERRIDE; #endif +protected: + virtual QWindowsWindow *createPlatformWindowHelper(QWindow *window, const QWindowsWindowData &) const; + private: QScopedPointer d; diff --git a/src/plugins/platforms/windows/qwindowswindow.h b/src/plugins/platforms/windows/qwindowswindow.h index 583d3a4267..40d7a3f076 100644 --- a/src/plugins/platforms/windows/qwindowswindow.h +++ b/src/plugins/platforms/windows/qwindowswindow.h @@ -143,6 +143,8 @@ public: QWindowsWindow(QWindow *window, const QWindowsWindowData &data); ~QWindowsWindow(); + using QPlatformWindow::screenForGeometry; + QSurfaceFormat format() const Q_DECL_OVERRIDE { return m_format; } void setGeometry(const QRect &rect) Q_DECL_OVERRIDE; QRect geometry() const Q_DECL_OVERRIDE { return m_data.geometry; } -- cgit v1.2.3 From d29fbbd6ebc1464d5d2fada4e20512dbffe8f0e8 Mon Sep 17 00:00:00 2001 From: Timur Pocheptsov Date: Fri, 13 Nov 2015 14:14:11 +0100 Subject: Make CoreFoundation event dispatcher available on OS X also MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CoreFoundation event dispatcher on OS X can help users working with QtBluetooth from either non-GUI threads or non-GUI applications. Change-Id: Ie0793e7f49074a8ea9059251cd7c9bdf7953c206 Task-number: QTBUG-48758 Task-number: QTBUG-46625 Reviewed-by: Tor Arne Vestbø --- src/corelib/kernel/kernel.pri | 13 +++++-------- src/corelib/kernel/qeventdispatcher_cf.mm | 10 +++++++++- 2 files changed, 14 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/corelib/kernel/kernel.pri b/src/corelib/kernel/kernel.pri index 600c28b5d7..f09fa4debc 100644 --- a/src/corelib/kernel/kernel.pri +++ b/src/corelib/kernel/kernel.pri @@ -101,7 +101,8 @@ winrt { mac { HEADERS += \ kernel/qcfsocketnotifier_p.h \ - kernel/qcore_mac_p.h + kernel/qcore_mac_p.h \ + kernel/qeventdispatcher_cf_p.h SOURCES += \ kernel/qcfsocketnotifier.cpp \ @@ -109,18 +110,14 @@ mac { kernel/qcore_mac.cpp OBJECTIVE_SOURCES += \ - kernel/qcore_mac_objc.mm + kernel/qcore_mac_objc.mm \ + kernel/qeventdispatcher_cf.mm LIBS_PRIVATE += -framework Foundation - osx: LIBS_PRIVATE += -framework CoreServices + osx: LIBS_PRIVATE += -framework CoreServices -framework AppKit ios { - OBJECTIVE_SOURCES += \ - kernel/qeventdispatcher_cf.mm - HEADERS += \ - kernel/qeventdispatcher_cf_p.h - # We need UIKit for UIDevice LIBS_PRIVATE += -framework UIKit } diff --git a/src/corelib/kernel/qeventdispatcher_cf.mm b/src/corelib/kernel/qeventdispatcher_cf.mm index 5b9ad38b28..240dfed79f 100644 --- a/src/corelib/kernel/qeventdispatcher_cf.mm +++ b/src/corelib/kernel/qeventdispatcher_cf.mm @@ -43,7 +43,11 @@ #include -#include +#ifdef Q_OS_OSX +# include +#else +# include +#endif @interface RunLoopModeTracker : NSObject { QStack m_runLoopModes; @@ -61,7 +65,11 @@ addObserver:self selector:@selector(receivedNotification:) name:nil +#ifdef Q_OS_OSX + object:[NSApplication sharedApplication]]; +#else object:[UIApplication sharedApplication]]; +#endif } return self; -- cgit v1.2.3 From 08a4b7f74507be7aa9dc09a9234d3bc83d4ed908 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 10 Nov 2015 11:26:27 +0100 Subject: Windows: Move GUI event dispatcher to QtPlatformSupport. This makes it possible to reuse it for the minimalegl QPA plugin. Change-Id: I1c3dbaf67f32294a5d0e03cc1eb8557049b810a5 Reviewed-by: Oliver Wolff --- .../eventdispatchers/eventdispatchers.pri | 6 + .../qwindowsguieventdispatcher.cpp | 197 ++++++++++++++++++++ .../qwindowsguieventdispatcher_p.h | 69 +++++++ .../platforms/windows/qwindowsclipboard.cpp | 3 +- src/plugins/platforms/windows/qwindowscontext.cpp | 3 +- .../windows/qwindowsguieventdispatcher.cpp | 201 --------------------- .../platforms/windows/qwindowsguieventdispatcher.h | 60 ------ .../platforms/windows/qwindowsintegration.cpp | 4 +- .../platforms/windows/qwindowskeymapper.cpp | 2 +- src/plugins/platforms/windows/windows.pri | 2 - 10 files changed, 279 insertions(+), 268 deletions(-) create mode 100644 src/platformsupport/eventdispatchers/qwindowsguieventdispatcher.cpp create mode 100644 src/platformsupport/eventdispatchers/qwindowsguieventdispatcher_p.h delete mode 100644 src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp delete mode 100644 src/plugins/platforms/windows/qwindowsguieventdispatcher.h (limited to 'src') diff --git a/src/platformsupport/eventdispatchers/eventdispatchers.pri b/src/platformsupport/eventdispatchers/eventdispatchers.pri index 6e16a46b34..a0b37cae1a 100644 --- a/src/platformsupport/eventdispatchers/eventdispatchers.pri +++ b/src/platformsupport/eventdispatchers/eventdispatchers.pri @@ -6,6 +6,12 @@ SOURCES +=\ HEADERS +=\ $$PWD/qunixeventdispatcher_qpa_p.h\ $$PWD/qgenericunixeventdispatcher_p.h\ +} else: win32 { +SOURCES +=\ + $$PWD/qwindowsguieventdispatcher.cpp + +HEADERS +=\ + $$PWD/qwindowsguieventdispatcher_p.h } contains(QT_CONFIG, glib) { diff --git a/src/platformsupport/eventdispatchers/qwindowsguieventdispatcher.cpp b/src/platformsupport/eventdispatchers/qwindowsguieventdispatcher.cpp new file mode 100644 index 0000000000..f57d16f51d --- /dev/null +++ b/src/platformsupport/eventdispatchers/qwindowsguieventdispatcher.cpp @@ -0,0 +1,197 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Samuel Gaist +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://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 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qwindowsguieventdispatcher_p.h" + +#include + +#include +#include + +QT_BEGIN_NAMESPACE + +/*! + \class QWindowsGuiEventDispatcher + \brief Event dispatcher for Windows + + Maintains a global stack storing the current event dispatcher and + its processing flags for access from the Windows procedure + qWindowsWndProc. Handling the Lighthouse gui events should be done + from within the qWindowsWndProc to ensure correct processing of messages. + + \internal + \ingroup qt-lighthouse-win +*/ + +QWindowsGuiEventDispatcher::QWindowsGuiEventDispatcher(QObject *parent) : + QEventDispatcherWin32(parent), m_flags(0) +{ + setObjectName(QStringLiteral("QWindowsGuiEventDispatcher")); + createInternalHwnd(); // QTBUG-40881: Do not delay registering timers, etc. for QtMfc. +} + +bool QWindowsGuiEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags) +{ + const QEventLoop::ProcessEventsFlags oldFlags = m_flags; + m_flags = flags; + const bool rc = QEventDispatcherWin32::processEvents(flags); + m_flags = oldFlags; + return rc; +} + +void QWindowsGuiEventDispatcher::sendPostedEvents() +{ + QEventDispatcherWin32::sendPostedEvents(); + QWindowSystemInterface::sendWindowSystemEvents(m_flags); +} + +// Helpers for printing debug output for WM_* messages. +struct MessageDebugEntry +{ + UINT message; + const char *description; + bool interesting; +}; + +static const MessageDebugEntry +messageDebugEntries[] = { + {WM_CREATE, "WM_CREATE", true}, + {WM_PAINT, "WM_PAINT", true}, + {WM_CLOSE, "WM_CLOSE", true}, + {WM_DESTROY, "WM_DESTROY", true}, + {WM_MOVE, "WM_MOVE", true}, + {WM_SIZE, "WM_SIZE", true}, + {WM_GETICON, "WM_GETICON", false}, + {WM_KEYDOWN, "WM_KEYDOWN", true}, + {WM_SYSKEYDOWN, "WM_SYSKEYDOWN", true}, + {WM_SYSCOMMAND, "WM_SYSCOMMAND", true}, + {WM_KEYUP, "WM_KEYUP", true}, + {WM_SYSKEYUP, "WM_SYSKEYUP", true}, +#if defined(WM_APPCOMMAND) + {WM_APPCOMMAND, "WM_APPCOMMAND", true}, +#endif + {WM_IME_CHAR, "WM_IMECHAR", true}, + {WM_IME_KEYDOWN, "WM_IMECHAR", true}, + {WM_CANCELMODE, "WM_CANCELMODE", true}, + {WM_CHAR, "WM_CHAR", true}, + {WM_DEADCHAR, "WM_DEADCHAR", true}, + {WM_ACTIVATE, "WM_ACTIVATE", true}, + {WM_SETFOCUS, "WM_SETFOCUS", true}, + {WM_KILLFOCUS, "WM_KILLFOCUS", true}, + {WM_ENABLE, "WM_ENABLE", true}, + {WM_SHOWWINDOW, "WM_SHOWWINDOW", true}, + {WM_WINDOWPOSCHANGED, "WM_WINDOWPOSCHANGED", true}, + {WM_SETCURSOR, "WM_SETCURSOR", false}, + {WM_GETFONT, "WM_GETFONT", true}, + {WM_LBUTTONDOWN, "WM_LBUTTONDOWN", true}, + {WM_LBUTTONUP, "WM_LBUTTONUP", true}, + {WM_LBUTTONDBLCLK, "WM_LBUTTONDBLCLK", true}, + {WM_RBUTTONDOWN, "WM_RBUTTONDOWN", true}, + {WM_RBUTTONUP, "WM_RBUTTONUP", true}, + {WM_RBUTTONDBLCLK, "WM_RBUTTONDBLCLK", true}, + {WM_MBUTTONDOWN, "WM_MBUTTONDOWN", true}, + {WM_MBUTTONUP, "WM_MBUTTONUP", true}, + {WM_MBUTTONDBLCLK, "WM_MBUTTONDBLCLK", true}, + {WM_MOUSEWHEEL, "WM_MOUSEWHEEL", true}, + {WM_XBUTTONDOWN, "WM_XBUTTONDOWN", true}, + {WM_XBUTTONUP, "WM_XBUTTONUP", true}, + {WM_XBUTTONDBLCLK, "WM_XBUTTONDBLCLK", true}, + {WM_MOUSEHWHEEL, "WM_MOUSEHWHEEL", true}, + {WM_IME_SETCONTEXT, "WM_IME_SETCONTEXT", true}, + {WM_INPUTLANGCHANGE, "WM_INPUTLANGCHANGE", true}, + {WM_IME_NOTIFY, "WM_IME_NOTIFY", true}, +#if defined(WM_DWMNCRENDERINGCHANGED) + {WM_DWMNCRENDERINGCHANGED, "WM_DWMNCRENDERINGCHANGED", true}, +#endif + {WM_IME_SETCONTEXT, "WM_IME_SETCONTEXT", true}, + {WM_IME_NOTIFY, "WM_IME_NOTIFY", true}, + {WM_RENDERFORMAT, "WM_RENDERFORMAT", true}, + {WM_RENDERALLFORMATS, "WM_RENDERALLFORMATS", true}, + {WM_DESTROYCLIPBOARD, "WM_DESTROYCLIPBOARD", true}, + {WM_CAPTURECHANGED, "WM_CAPTURECHANGED", true}, + {WM_IME_STARTCOMPOSITION, "WM_IME_STARTCOMPOSITION", true}, + {WM_IME_COMPOSITION, "WM_IME_COMPOSITION", true}, + {WM_IME_ENDCOMPOSITION, "WM_IME_ENDCOMPOSITION", true}, + {WM_IME_NOTIFY, "WM_IME_NOTIFY", true}, + {WM_IME_REQUEST, "WM_IME_REQUEST", true}, +#if !defined(Q_OS_WINCE) && !defined(QT_NO_SESSIONMANAGER) + {WM_QUERYENDSESSION, "WM_QUERYENDSESSION", true}, + {WM_ENDSESSION, "WM_ENDSESSION", true}, +#endif +#ifndef Q_OS_WINCE + {WM_MOUSEACTIVATE,"WM_MOUSEACTIVATE", true}, + {WM_CHILDACTIVATE, "WM_CHILDACTIVATE", true}, + {WM_PARENTNOTIFY, "WM_PARENTNOTIFY", true}, + {WM_ENTERIDLE, "WM_ENTERIDLE", false}, + {WM_GETMINMAXINFO, "WM_GETMINMAXINFO", true}, + {WM_WINDOWPOSCHANGING, "WM_WINDOWPOSCHANGING", true}, + {WM_NCCREATE, "WM_NCCREATE", true}, + {WM_NCCALCSIZE, "WM_NCCALCSIZE", true}, + {WM_NCACTIVATE, "WM_NCACTIVATE", true}, + {WM_NCMOUSEMOVE, "WM_NCMOUSEMOVE", true}, + {WM_NCMOUSELEAVE, "WM_NCMOUSELEAVE", true}, + {WM_NCLBUTTONDOWN, "WM_NCLBUTTONDOWN", true}, + {WM_NCLBUTTONUP, "WM_NCLBUTTONUP", true}, + {WM_ACTIVATEAPP, "WM_ACTIVATEAPP", true}, + {WM_NCPAINT, "WM_NCPAINT", true}, + {WM_ERASEBKGND, "WM_ERASEBKGND", true}, + {WM_MOUSEMOVE, "WM_MOUSEMOVE", true}, + {WM_MOUSELEAVE, "WM_MOUSELEAVE", true}, + {WM_NCHITTEST, "WM_NCHITTEST", false}, +#ifdef WM_TOUCH + {WM_TOUCH, "WM_TOUCH", true}, +#endif + {WM_CHANGECBCHAIN, "WM_CHANGECBCHAIN", true}, + {WM_DISPLAYCHANGE, "WM_DISPLAYCHANGE", true}, + {WM_DRAWCLIPBOARD, "WM_DRAWCLIPBOARD", true}, +#endif // !Q_OS_WINCE + {WM_THEMECHANGED, "WM_THEMECHANGED", true} +}; + +static inline const MessageDebugEntry *messageDebugEntry(UINT msg) +{ + for (size_t i = 0; i < sizeof(messageDebugEntries)/sizeof(MessageDebugEntry); i++) + if (messageDebugEntries[i].message == msg) + return messageDebugEntries + i; + return 0; +} + +const char *QWindowsGuiEventDispatcher::windowsMessageName(UINT msg) +{ + if (const MessageDebugEntry *e = messageDebugEntry(msg)) + return e->description; + return "Unknown"; +} + +QT_END_NAMESPACE diff --git a/src/platformsupport/eventdispatchers/qwindowsguieventdispatcher_p.h b/src/platformsupport/eventdispatchers/qwindowsguieventdispatcher_p.h new file mode 100644 index 0000000000..1e9c906cc8 --- /dev/null +++ b/src/platformsupport/eventdispatchers/qwindowsguieventdispatcher_p.h @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://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 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QWINDOWSGUIEVENTDISPATCHER_H +#define QWINDOWSGUIEVENTDISPATCHER_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the QLibrary class. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include + +QT_BEGIN_NAMESPACE + +class QWindowsGuiEventDispatcher : public QEventDispatcherWin32 +{ + Q_OBJECT +public: + explicit QWindowsGuiEventDispatcher(QObject *parent = 0); + + static const char *windowsMessageName(UINT msg); + + bool QT_ENSURE_STACK_ALIGNED_FOR_SSE processEvents(QEventLoop::ProcessEventsFlags flags) Q_DECL_OVERRIDE; + void sendPostedEvents() Q_DECL_OVERRIDE; + +private: + QEventLoop::ProcessEventsFlags m_flags; +}; + +QT_END_NAMESPACE + +#endif // QWINDOWSGUIEVENTDISPATCHER_H diff --git a/src/plugins/platforms/windows/qwindowsclipboard.cpp b/src/plugins/platforms/windows/qwindowsclipboard.cpp index 8936b96b1f..25cfd12b44 100644 --- a/src/plugins/platforms/windows/qwindowsclipboard.cpp +++ b/src/plugins/platforms/windows/qwindowsclipboard.cpp @@ -35,7 +35,6 @@ #include "qwindowscontext.h" #include "qwindowsole.h" #include "qwindowsmime.h" -#include "qwindowsguieventdispatcher.h" #include #include @@ -48,6 +47,8 @@ #include #include +#include + QT_BEGIN_NAMESPACE static const char formatTextPlainC[] = "text/plain"; diff --git a/src/plugins/platforms/windows/qwindowscontext.cpp b/src/plugins/platforms/windows/qwindowscontext.cpp index 02accfae01..5cda6379de 100644 --- a/src/plugins/platforms/windows/qwindowscontext.cpp +++ b/src/plugins/platforms/windows/qwindowscontext.cpp @@ -36,7 +36,6 @@ #include "qwindowsintegration.h" #include "qwindowswindow.h" #include "qwindowskeymapper.h" -#include "qwindowsguieventdispatcher.h" #include "qwindowsmousehandler.h" #include "qtwindowsglobal.h" #include "qwindowsmime.h" @@ -66,6 +65,8 @@ #include #include +#include + #include #include #include diff --git a/src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp b/src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp deleted file mode 100644 index 0bfa0239aa..0000000000 --- a/src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp +++ /dev/null @@ -1,201 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Samuel Gaist -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL21$ -** 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 http://www.qt.io/terms-conditions. For further -** information use the contact form at http://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 2.1 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qwindowsguieventdispatcher.h" -#include "qwindowscontext.h" - -#include - -#include -#include -#include - -#include - -QT_BEGIN_NAMESPACE - -/*! - \class QWindowsGuiEventDispatcher - \brief Event dispatcher for Windows - - Maintains a global stack storing the current event dispatcher and - its processing flags for access from the Windows procedure - qWindowsWndProc. Handling the Lighthouse gui events should be done - from within the qWindowsWndProc to ensure correct processing of messages. - - \internal - \ingroup qt-lighthouse-win -*/ - -QWindowsGuiEventDispatcher::QWindowsGuiEventDispatcher(QObject *parent) : - QEventDispatcherWin32(parent), m_flags(0) -{ - setObjectName(QStringLiteral("QWindowsGuiEventDispatcher")); - createInternalHwnd(); // QTBUG-40881: Do not delay registering timers, etc. for QtMfc. -} - -bool QWindowsGuiEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags) -{ - const QEventLoop::ProcessEventsFlags oldFlags = m_flags; - m_flags = flags; - if (QWindowsContext::verbose > 2 && lcQpaEvents().isDebugEnabled()) - qCDebug(lcQpaEvents) << '>' << __FUNCTION__ << objectName() << flags; - const bool rc = QEventDispatcherWin32::processEvents(flags); - if (QWindowsContext::verbose > 2 && lcQpaEvents().isDebugEnabled()) - qCDebug(lcQpaEvents) << '<' << __FUNCTION__ << "returns" << rc; - m_flags = oldFlags; - return rc; -} - -void QWindowsGuiEventDispatcher::sendPostedEvents() -{ - QEventDispatcherWin32::sendPostedEvents(); - QWindowSystemInterface::sendWindowSystemEvents(m_flags); -} - -// Helpers for printing debug output for WM_* messages. -struct MessageDebugEntry -{ - UINT message; - const char *description; - bool interesting; -}; - -static const MessageDebugEntry -messageDebugEntries[] = { - {WM_CREATE, "WM_CREATE", true}, - {WM_PAINT, "WM_PAINT", true}, - {WM_CLOSE, "WM_CLOSE", true}, - {WM_DESTROY, "WM_DESTROY", true}, - {WM_MOVE, "WM_MOVE", true}, - {WM_SIZE, "WM_SIZE", true}, - {WM_MOUSEACTIVATE,"WM_MOUSEACTIVATE", true}, - {WM_CHILDACTIVATE, "WM_CHILDACTIVATE", true}, - {WM_PARENTNOTIFY, "WM_PARENTNOTIFY", true}, - {WM_ENTERIDLE, "WM_ENTERIDLE", false}, - {WM_GETICON, "WM_GETICON", false}, - {WM_KEYDOWN, "WM_KEYDOWN", true}, - {WM_SYSKEYDOWN, "WM_SYSKEYDOWN", true}, - {WM_SYSCOMMAND, "WM_SYSCOMMAND", true}, - {WM_KEYUP, "WM_KEYUP", true}, - {WM_SYSKEYUP, "WM_SYSKEYUP", true}, -#if defined(WM_APPCOMMAND) - {WM_APPCOMMAND, "WM_APPCOMMAND", true}, -#endif - {WM_IME_CHAR, "WM_IMECHAR", true}, - {WM_IME_KEYDOWN, "WM_IMECHAR", true}, - {WM_CANCELMODE, "WM_CANCELMODE", true}, - {WM_CHAR, "WM_CHAR", true}, - {WM_DEADCHAR, "WM_DEADCHAR", true}, - {WM_ACTIVATE, "WM_ACTIVATE", true}, - {WM_GETMINMAXINFO, "WM_GETMINMAXINFO", true}, - {WM_SETFOCUS, "WM_SETFOCUS", true}, - {WM_KILLFOCUS, "WM_KILLFOCUS", true}, - {WM_ENABLE, "WM_ENABLE", true}, - {WM_SHOWWINDOW, "WM_SHOWWINDOW", true}, - {WM_WINDOWPOSCHANGING, "WM_WINDOWPOSCHANGING", true}, - {WM_WINDOWPOSCHANGED, "WM_WINDOWPOSCHANGED", true}, - {WM_SETCURSOR, "WM_SETCURSOR", false}, - {WM_GETFONT, "WM_GETFONT", true}, - {WM_NCMOUSEMOVE, "WM_NCMOUSEMOVE", true}, - {WM_LBUTTONDOWN, "WM_LBUTTONDOWN", true}, - {WM_LBUTTONUP, "WM_LBUTTONUP", true}, - {WM_LBUTTONDBLCLK, "WM_LBUTTONDBLCLK", true}, - {WM_RBUTTONDOWN, "WM_RBUTTONDOWN", true}, - {WM_RBUTTONUP, "WM_RBUTTONUP", true}, - {WM_RBUTTONDBLCLK, "WM_RBUTTONDBLCLK", true}, - {WM_MBUTTONDOWN, "WM_MBUTTONDOWN", true}, - {WM_MBUTTONUP, "WM_MBUTTONUP", true}, - {WM_MBUTTONDBLCLK, "WM_MBUTTONDBLCLK", true}, - {WM_MOUSEWHEEL, "WM_MOUSEWHEEL", true}, - {WM_XBUTTONDOWN, "WM_XBUTTONDOWN", true}, - {WM_XBUTTONUP, "WM_XBUTTONUP", true}, - {WM_XBUTTONDBLCLK, "WM_XBUTTONDBLCLK", true}, - {WM_MOUSEHWHEEL, "WM_MOUSEHWHEEL", true}, - {WM_NCCREATE, "WM_NCCREATE", true}, - {WM_NCCALCSIZE, "WM_NCCALCSIZE", true}, - {WM_NCACTIVATE, "WM_NCACTIVATE", true}, - {WM_NCMOUSELEAVE, "WM_NCMOUSELEAVE", true}, - {WM_NCLBUTTONDOWN, "WM_NCLBUTTONDOWN", true}, - {WM_NCLBUTTONUP, "WM_NCLBUTTONUP", true}, - {WM_ACTIVATEAPP, "WM_ACTIVATEAPP", true}, - {WM_NCPAINT, "WM_NCPAINT", true}, - {WM_ERASEBKGND, "WM_ERASEBKGND", true}, - {WM_MOUSEMOVE, "WM_MOUSEMOVE", true}, - {WM_MOUSELEAVE, "WM_MOUSELEAVE", true}, - {WM_NCHITTEST, "WM_NCHITTEST", false}, - {WM_IME_SETCONTEXT, "WM_IME_SETCONTEXT", true}, - {WM_INPUTLANGCHANGE, "WM_INPUTLANGCHANGE", true}, - {WM_IME_NOTIFY, "WM_IME_NOTIFY", true}, -#if defined(WM_DWMNCRENDERINGCHANGED) - {WM_DWMNCRENDERINGCHANGED, "WM_DWMNCRENDERINGCHANGED", true}, -#endif - {WM_IME_SETCONTEXT, "WM_IME_SETCONTEXT", true}, - {WM_IME_NOTIFY, "WM_IME_NOTIFY", true}, - {WM_TOUCH, "WM_TOUCH", true}, - {WM_CHANGECBCHAIN, "WM_CHANGECBCHAIN", true}, - {WM_DRAWCLIPBOARD, "WM_DRAWCLIPBOARD", true}, - {WM_RENDERFORMAT, "WM_RENDERFORMAT", true}, - {WM_RENDERALLFORMATS, "WM_RENDERALLFORMATS", true}, - {WM_DESTROYCLIPBOARD, "WM_DESTROYCLIPBOARD", true}, - {WM_CAPTURECHANGED, "WM_CAPTURECHANGED", true}, - {WM_IME_STARTCOMPOSITION, "WM_IME_STARTCOMPOSITION", true}, - {WM_IME_COMPOSITION, "WM_IME_COMPOSITION", true}, - {WM_IME_ENDCOMPOSITION, "WM_IME_ENDCOMPOSITION", true}, - {WM_IME_NOTIFY, "WM_IME_NOTIFY", true}, - {WM_IME_REQUEST, "WM_IME_REQUEST", true}, -#if !defined(Q_OS_WINCE) && !defined(QT_NO_SESSIONMANAGER) - {WM_QUERYENDSESSION, "WM_QUERYENDSESSION", true}, - {WM_ENDSESSION, "WM_ENDSESSION", true}, -#endif - {WM_DISPLAYCHANGE, "WM_DISPLAYCHANGE", true}, - {WM_THEMECHANGED, "WM_THEMECHANGED", true} -}; - -static inline const MessageDebugEntry *messageDebugEntry(UINT msg) -{ - for (size_t i = 0; i < sizeof(messageDebugEntries)/sizeof(MessageDebugEntry); i++) - if (messageDebugEntries[i].message == msg) - return messageDebugEntries + i; - return 0; -} - -const char *QWindowsGuiEventDispatcher::windowsMessageName(UINT msg) -{ - if (const MessageDebugEntry *e = messageDebugEntry(msg)) - return e->description; - return "Unknown"; -} - -QT_END_NAMESPACE diff --git a/src/plugins/platforms/windows/qwindowsguieventdispatcher.h b/src/plugins/platforms/windows/qwindowsguieventdispatcher.h deleted file mode 100644 index 3389139461..0000000000 --- a/src/plugins/platforms/windows/qwindowsguieventdispatcher.h +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL21$ -** 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 http://www.qt.io/terms-conditions. For further -** information use the contact form at http://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 2.1 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QWINDOWSGUIEVENTDISPATCHER_H -#define QWINDOWSGUIEVENTDISPATCHER_H - -#include "qtwindows_additional.h" - -#include - -QT_BEGIN_NAMESPACE - -class QWindowsGuiEventDispatcher : public QEventDispatcherWin32 -{ - Q_OBJECT -public: - explicit QWindowsGuiEventDispatcher(QObject *parent = 0); - - static const char *windowsMessageName(UINT msg); - - bool QT_ENSURE_STACK_ALIGNED_FOR_SSE processEvents(QEventLoop::ProcessEventsFlags flags) Q_DECL_OVERRIDE; - void sendPostedEvents() Q_DECL_OVERRIDE; - -private: - QEventLoop::ProcessEventsFlags m_flags; -}; - -QT_END_NAMESPACE - -#endif // QWINDOWSGUIEVENTDISPATCHER_H diff --git a/src/plugins/platforms/windows/qwindowsintegration.cpp b/src/plugins/platforms/windows/qwindowsintegration.cpp index 36ec9ebc92..797a96cda7 100644 --- a/src/plugins/platforms/windows/qwindowsintegration.cpp +++ b/src/plugins/platforms/windows/qwindowsintegration.cpp @@ -44,7 +44,6 @@ # include "qwindowsfontdatabase_ft.h" #endif #include "qwindowsfontdatabase.h" -#include "qwindowsguieventdispatcher.h" #ifndef QT_NO_CLIPBOARD # include "qwindowsclipboard.h" # ifndef QT_NO_DRAGANDDROP @@ -66,7 +65,8 @@ #include #include -#include +#include + #include #include diff --git a/src/plugins/platforms/windows/qwindowskeymapper.cpp b/src/plugins/platforms/windows/qwindowskeymapper.cpp index f8e2ded228..4c0b94e6e7 100644 --- a/src/plugins/platforms/windows/qwindowskeymapper.cpp +++ b/src/plugins/platforms/windows/qwindowskeymapper.cpp @@ -35,7 +35,6 @@ #include "qwindowscontext.h" #include "qwindowsintegration.h" #include "qwindowswindow.h" -#include "qwindowsguieventdispatcher.h" #include "qwindowsinputcontext.h" #include @@ -43,6 +42,7 @@ #include #include #include +#include #if defined(WM_APPCOMMAND) # ifndef FAPPCOMMAND_MOUSE diff --git a/src/plugins/platforms/windows/windows.pri b/src/plugins/platforms/windows/windows.pri index 6e5789a86e..29297116da 100644 --- a/src/plugins/platforms/windows/windows.pri +++ b/src/plugins/platforms/windows/windows.pri @@ -29,7 +29,6 @@ SOURCES += \ $$PWD/qwindowsfontengine.cpp \ $$PWD/qwindowsfontdatabase.cpp \ $$PWD/qwindowsmousehandler.cpp \ - $$PWD/qwindowsguieventdispatcher.cpp \ $$PWD/qwindowsole.cpp \ $$PWD/qwindowsmime.cpp \ $$PWD/qwindowsinternalmimedata.cpp \ @@ -51,7 +50,6 @@ HEADERS += \ $$PWD/qwindowsfontengine.h \ $$PWD/qwindowsfontdatabase.h \ $$PWD/qwindowsmousehandler.h \ - $$PWD/qwindowsguieventdispatcher.h \ $$PWD/qtwindowsglobal.h \ $$PWD/qtwindows_additional.h \ $$PWD/qwindowsole.h \ -- cgit v1.2.3 From 3d6975af4b0b77f13b5a4f36f82b86ed551aa85a Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 10 Nov 2015 11:28:38 +0100 Subject: Compile minimalegl QPA plugin on Windows/WinRT. Add event dispatchers. Change-Id: I548b50d1ec648fa8cb6c77881c95125f361343f0 Reviewed-by: Andrew Knight Reviewed-by: Laszlo Agocs --- .../minimalegl/qminimaleglintegration.cpp | 41 +++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/minimalegl/qminimaleglintegration.cpp b/src/plugins/platforms/minimalegl/qminimaleglintegration.cpp index ef96985f1a..1bcb22618e 100644 --- a/src/plugins/platforms/minimalegl/qminimaleglintegration.cpp +++ b/src/plugins/platforms/minimalegl/qminimaleglintegration.cpp @@ -37,7 +37,15 @@ #include "qminimaleglbackingstore.h" #include -#include + +#if defined(Q_OS_UNIX) +# include +#elif defined(Q_OS_WINRT) +# include +# include +#elif defined(Q_OS_WIN) +# include +#endif #include #include @@ -48,6 +56,29 @@ QT_BEGIN_NAMESPACE +#ifdef Q_OS_WINRT +namespace { +class QWinRTEventDispatcher : public QEventDispatcherWinRT { +public: + QWinRTEventDispatcher() {} + +protected: + bool hasPendingEvents() Q_DECL_OVERRIDE + { + return QEventDispatcherWinRT::hasPendingEvents() || QWindowSystemInterface::windowSystemEventsQueued(); + } + + bool sendPostedEvents(QEventLoop::ProcessEventsFlags flags) + { + bool didProcess = QEventDispatcherWinRT::sendPostedEvents(flags); + if (!(flags & QEventLoop::ExcludeUserInputEvents)) + didProcess |= QWindowSystemInterface::sendWindowSystemEvents(flags); + return didProcess; + } +}; +} // anonymous namespace +#endif // Q_OS_WINRT + QMinimalEglIntegration::QMinimalEglIntegration() : mFontDb(new QGenericUnixFontDatabase()), mScreen(new QMinimalEglScreen(EGL_DEFAULT_DISPLAY)) { @@ -104,7 +135,15 @@ QPlatformFontDatabase *QMinimalEglIntegration::fontDatabase() const QAbstractEventDispatcher *QMinimalEglIntegration::createEventDispatcher() const { +#if defined(Q_OS_UNIX) return createUnixEventDispatcher(); +#elif defined(Q_OS_WINRT) + return new QWinRTEventDispatcher; +#elif defined(Q_OS_WIN) + return new QWindowsGuiEventDispatcher; +#else + return Q_NULLPTR; +#endif } QVariant QMinimalEglIntegration::styleHint(QPlatformIntegration::StyleHint hint) const -- cgit v1.2.3 From 96cebb46c2e9b74ea119b8ed13896f012bea496e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Wed, 4 Nov 2015 15:19:13 +0100 Subject: OS X: Don't forward key events to popup window if it's a tooltip MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 676edc006e9f43 introduced a regression by not filtering the active popup window for tooltips, which is what the corresponding mouse handler in QNSView does. Change-Id: I5091dba0dd43be2e859ea360dfd812c0f081fd32 Reviewed-by: Eike Ziller Reviewed-by: Jake Petroules Reviewed-by: Richard Moe Gustavsen Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/cocoa/qnsview.mm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm index aac50e7833..f414193bdb 100644 --- a/src/plugins/platforms/cocoa/qnsview.mm +++ b/src/plugins/platforms/cocoa/qnsview.mm @@ -1465,8 +1465,10 @@ static QTabletEvent::TabletDevice wacomTabletDevice(NSEvent *theEvent) // Popups implicitly grab key events; forward to the active popup if there is one. // This allows popups to e.g. intercept shortcuts and close the popup in response. - if (QCocoaWindow *popup = QCocoaIntegration::instance()->activePopupWindow()) - window = popup->window(); + if (QCocoaWindow *popup = QCocoaIntegration::instance()->activePopupWindow()) { + if (!popup->m_windowFlags.testFlag(Qt::ToolTip)) + window = popup->window(); + } if (eventType == QEvent::KeyPress) { -- cgit v1.2.3 From a856c4a902816a7d691ca50e6f556521287be441 Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Tue, 27 Oct 2015 11:00:35 +0100 Subject: Fix falsely reported style for fallback font In change 8f6b3284106fa11129e4fa6e5ec3adc6cb1f489f we override the fontDef of the fallback font with the fontDef of the original font (with the family name replaced) to fix a regression where boldness was not inherited by the fallback font. This caused a bug, though, since the contents of the fontDef would now misrepresent the actual font used. The side effect of this was that isSmoothlyScalable() returned false because the family and styleName combination we claim to have did not exist in the font database. Result: We fell back to native rendering for the font even though it's scalable. Weight and style are the only parts that should be inherited, since they are synthesized. So rather than overwriting the fontDef completely, we copy the weight and style when needed. The bug in QTBUG-42963 is still fixed after this change. [ChangeLog][Text] Fixed problem where fallback fonts for text with certain styles would be reported as unscalable. Change-Id: I95ef67f818852aea5a6ae8df789a52364ecb59a6 Task-number: QTBUG-47547 Reviewed-by: Lars Knoll Reviewed-by: Konstantin Ritt --- src/gui/text/qfontengine.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp index 3208a199b7..f267b2d147 100644 --- a/src/gui/text/qfontengine.cpp +++ b/src/gui/text/qfontengine.cpp @@ -1835,7 +1835,10 @@ QFontEngine *QFontEngineMulti::loadEngine(int at) request.family = fallbackFamilyAt(at - 1); if (QFontEngine *engine = QFontDatabase::findFont(request, m_script)) { - engine->fontDef = request; + if (request.weight > QFont::Normal) + engine->fontDef.weight = request.weight; + if (request.style > QFont::StyleNormal) + engine->fontDef.style = request.style; return engine; } -- cgit v1.2.3 From 6a7155997bfbc909c9875198a93dc2a6cba75795 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Mon, 9 Nov 2015 01:21:24 +0400 Subject: QFontEngineFT: Revise the legacy LCD filter implementation Use an optimized version of the intra-pixel filter found in FreeType's _ft_lcd_filter_legacy(). Gives us somewhat better accuracy and better performance. Change-Id: Id4200b67e6ff55f605037c3e5464fef8bb03fbde Reviewed-by: Friedemann Kleint Reviewed-by: Lars Knoll Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/gui/text/qfontengine_ft.cpp | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp index 162f409acd..242dd84096 100644 --- a/src/gui/text/qfontengine_ft.cpp +++ b/src/gui/text/qfontengine_ft.cpp @@ -534,25 +534,18 @@ QFontEngineFT::Glyph::~Glyph() delete [] data; } -static const uint subpixel_filter[3][3] = { - { 180, 60, 16 }, - { 38, 180, 38 }, - { 16, 60, 180 } -}; - -static inline uint filterPixel(uint red, uint green, uint blue, bool legacyFilter) +static inline uint filterPixel(uchar red, uchar green, uchar blue, bool legacyFilter) { - uint res; if (legacyFilter) { - uint high = (red*subpixel_filter[0][0] + green*subpixel_filter[0][1] + blue*subpixel_filter[0][2]) >> 8; - uint mid = (red*subpixel_filter[1][0] + green*subpixel_filter[1][1] + blue*subpixel_filter[1][2]) >> 8; - uint low = (red*subpixel_filter[2][0] + green*subpixel_filter[2][1] + blue*subpixel_filter[2][2]) >> 8; - res = (mid << 24) + (high << 16) + (mid << 8) + low; - } else { - uint alpha = green; - res = (alpha << 24) + (red << 16) + (green << 8) + blue; + uint r = red, g = green, b = blue; + // intra-pixel filter used by the legacy filter (adopted from _ft_lcd_filter_legacy) + red = (r * uint(65538 * 9/13) + g * uint(65538 * 1/6) + b * uint(65538 * 1/13)) / 65536; + green = (r * uint(65538 * 3/13) + g * uint(65538 * 4/6) + b * uint(65538 * 3/13)) / 65536; + blue = (r * uint(65538 * 1/13) + g * uint(65538 * 1/6) + b * uint(65538 * 9/13)) / 65536; } - return res; + + // alpha = green + return (green << 24) + (red << 16) + (green << 8) + blue; } static void convertRGBToARGB(const uchar *src, uint *dst, int width, int height, int src_pitch, bool bgr, bool legacyFilter) @@ -563,9 +556,9 @@ static void convertRGBToARGB(const uchar *src, uint *dst, int width, int height, while (h--) { uint *dd = dst; for (int x = 0; x < w; x += 3) { - uint red = src[x+1-offs]; - uint green = src[x+1]; - uint blue = src[x+1+offs]; + uchar red = src[x + 1 - offs]; + uchar green = src[x + 1]; + uchar blue = src[x + 1 + offs]; *dd = filterPixel(red, green, blue, legacyFilter); ++dd; } @@ -580,9 +573,9 @@ static void convertRGBToARGB_V(const uchar *src, uint *dst, int width, int heigh const int offs = bgr ? -src_pitch : src_pitch; while (h--) { for (int x = 0; x < width; x++) { - uint red = src[x+src_pitch-offs]; - uint green = src[x+src_pitch]; - uint blue = src[x+src_pitch+offs]; + uchar red = src[x + src_pitch - offs]; + uchar green = src[x + src_pitch]; + uchar blue = src[x + src_pitch + offs]; dst[x] = filterPixel(red, green, blue, legacyFilter); } dst += width; -- cgit v1.2.3 From 4d5b57825a2ec5eb15ab8a40bb173306e2279914 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Mon, 9 Nov 2015 01:47:07 +0400 Subject: QFontEngineFT: Optimize format convertion code with template magic Avoids in-loop check for every pixel by costs of slightly bigger code. Change-Id: I8321d0945ac6b677786431670b2316c60e4db492 Reviewed-by: Friedemann Kleint Reviewed-by: Lars Knoll --- src/gui/text/qfontengine_ft.cpp | 54 +++++++++++++++++++++++++++++------------ 1 file changed, 38 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp index 242dd84096..8dfabd48ad 100644 --- a/src/gui/text/qfontengine_ft.cpp +++ b/src/gui/text/qfontengine_ft.cpp @@ -534,55 +534,77 @@ QFontEngineFT::Glyph::~Glyph() delete [] data; } -static inline uint filterPixel(uchar red, uchar green, uchar blue, bool legacyFilter) +struct LcdFilterDummy { - if (legacyFilter) { + static inline void filterPixel(uchar &, uchar &, uchar &) + {} +}; + +struct LcdFilterLegacy +{ + static inline void filterPixel(uchar &red, uchar &green, uchar &blue) + { uint r = red, g = green, b = blue; // intra-pixel filter used by the legacy filter (adopted from _ft_lcd_filter_legacy) red = (r * uint(65538 * 9/13) + g * uint(65538 * 1/6) + b * uint(65538 * 1/13)) / 65536; green = (r * uint(65538 * 3/13) + g * uint(65538 * 4/6) + b * uint(65538 * 3/13)) / 65536; blue = (r * uint(65538 * 1/13) + g * uint(65538 * 1/6) + b * uint(65538 * 9/13)) / 65536; } +}; - // alpha = green - return (green << 24) + (red << 16) + (green << 8) + blue; -} - -static void convertRGBToARGB(const uchar *src, uint *dst, int width, int height, int src_pitch, bool bgr, bool legacyFilter) +template +static void convertRGBToARGB_helper(const uchar *src, uint *dst, int width, int height, int src_pitch, bool bgr) { - int h = height; const int offs = bgr ? -1 : 1; const int w = width * 3; - while (h--) { + while (height--) { uint *dd = dst; for (int x = 0; x < w; x += 3) { uchar red = src[x + 1 - offs]; uchar green = src[x + 1]; uchar blue = src[x + 1 + offs]; - *dd = filterPixel(red, green, blue, legacyFilter); - ++dd; + LcdFilter::filterPixel(red, green, blue); + // alpha = green + *dd++ = (green << 24) | (red << 16) | (green << 8) | blue; } dst += width; src += src_pitch; } } -static void convertRGBToARGB_V(const uchar *src, uint *dst, int width, int height, int src_pitch, bool bgr, bool legacyFilter) +static inline void convertRGBToARGB(const uchar *src, uint *dst, int width, int height, int src_pitch, bool bgr, bool legacyFilter) +{ + if (!legacyFilter) + convertRGBToARGB_helper(src, dst, width, height, src_pitch, bgr); + else + convertRGBToARGB_helper(src, dst, width, height, src_pitch, bgr); +} + +template +static void convertRGBToARGB_V_helper(const uchar *src, uint *dst, int width, int height, int src_pitch, bool bgr) { - int h = height; const int offs = bgr ? -src_pitch : src_pitch; - while (h--) { + while (height--) { for (int x = 0; x < width; x++) { uchar red = src[x + src_pitch - offs]; uchar green = src[x + src_pitch]; uchar blue = src[x + src_pitch + offs]; - dst[x] = filterPixel(red, green, blue, legacyFilter); + LcdFilter::filterPixel(red, green, blue); + // alpha = green + *dst++ = (green << 24) | (red << 16) | (green << 8) | blue; } - dst += width; src += 3*src_pitch; } } +static inline void convertRGBToARGB_V(const uchar *src, uint *dst, int width, int height, int src_pitch, bool bgr, bool legacyFilter) +{ + if (!legacyFilter) + convertRGBToARGB_V_helper(src, dst, width, height, src_pitch, bgr); + else + convertRGBToARGB_V_helper(src, dst, width, height, src_pitch, bgr); +} + static inline void convertGRAYToARGB(const uchar *src, uint *dst, int width, int height, int src_pitch) { while (height--) { -- cgit v1.2.3 From c26764686718f46a22371ea16d683d6bf17b9e66 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Thu, 5 Nov 2015 11:03:28 +0400 Subject: Move CasexTraits from qstring.cpp to qunicodetables_p.h and implement TitlecaseTraits as well, to be re-used in the following commit. Change-Id: I5c0bff42fe3b9bc9c2454cc16916cc2be87f604f Reviewed-by: Lars Knoll --- src/corelib/tools/qstring.cpp | 24 ------------------------ src/corelib/tools/qunicodetables_p.h | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 24 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index a88b48c767..6b15900031 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -5666,30 +5666,6 @@ QString QString::rightJustified(int width, QChar fill, bool truncate) const */ namespace QUnicodeTables { -struct LowercaseTraits -{ - static signed short caseDiff(const Properties *prop) - { return prop->lowerCaseDiff; } - static bool caseSpecial(const Properties *prop) - { return prop->lowerCaseSpecial; } -}; - -struct UppercaseTraits -{ - static signed short caseDiff(const Properties *prop) - { return prop->upperCaseDiff; } - static bool caseSpecial(const Properties *prop) - { return prop->upperCaseSpecial; } -}; - -struct CasefoldTraits -{ - static signed short caseDiff(const Properties *prop) - { return prop->caseFoldDiff; } - static bool caseSpecial(const Properties *prop) - { return prop->caseFoldSpecial; } -}; - template Q_NEVER_INLINE static QString detachAndConvertCase(T &str, QStringIterator it) diff --git a/src/corelib/tools/qunicodetables_p.h b/src/corelib/tools/qunicodetables_p.h index 1fbcc39666..6a2797be0e 100644 --- a/src/corelib/tools/qunicodetables_p.h +++ b/src/corelib/tools/qunicodetables_p.h @@ -82,6 +82,38 @@ struct Properties { Q_CORE_EXPORT const Properties * QT_FASTCALL properties(uint ucs4) Q_DECL_NOTHROW; Q_CORE_EXPORT const Properties * QT_FASTCALL properties(ushort ucs2) Q_DECL_NOTHROW; +struct LowercaseTraits +{ + static inline signed short caseDiff(const Properties *prop) + { return prop->lowerCaseDiff; } + static inline bool caseSpecial(const Properties *prop) + { return prop->lowerCaseSpecial; } +}; + +struct UppercaseTraits +{ + static inline signed short caseDiff(const Properties *prop) + { return prop->upperCaseDiff; } + static inline bool caseSpecial(const Properties *prop) + { return prop->upperCaseSpecial; } +}; + +struct TitlecaseTraits +{ + static inline signed short caseDiff(const Properties *prop) + { return prop->titleCaseDiff; } + static inline bool caseSpecial(const Properties *prop) + { return prop->titleCaseSpecial; } +}; + +struct CasefoldTraits +{ + static inline signed short caseDiff(const Properties *prop) + { return prop->caseFoldDiff; } + static inline bool caseSpecial(const Properties *prop) + { return prop->caseFoldSpecial; } +}; + enum GraphemeBreakClass { GraphemeBreak_Other, GraphemeBreak_CR, -- cgit v1.2.3 From e593e5aa67397752a5ce3364fb1a2ba8b883c41b Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Thu, 5 Nov 2015 11:31:48 +0400 Subject: QChar: Simplify case convertion code with template magic Same as in QString, though simpler a bit due to fixed-length sequence. Change-Id: Idd6670a7b6415f5d515987c30931d16b73dd280e Reviewed-by: Lars Knoll --- src/corelib/tools/qchar.cpp | 72 +++++++++++++-------------------------------- 1 file changed, 21 insertions(+), 51 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qchar.cpp b/src/corelib/tools/qchar.cpp index 9d2d90fc0d..78fa0bccf0 100644 --- a/src/corelib/tools/qchar.cpp +++ b/src/corelib/tools/qchar.cpp @@ -1430,48 +1430,18 @@ QChar::UnicodeVersion QChar::currentUnicodeVersion() Q_DECL_NOTHROW } -template -Q_DECL_CONST_FUNCTION static inline T toLowerCase_helper(T uc) Q_DECL_NOTHROW +template +Q_DECL_CONST_FUNCTION static inline T convertCase_helper(T uc) Q_DECL_NOTHROW { - const QUnicodeTables::Properties *p = qGetProp(uc); - if (p->lowerCaseSpecial) { - const ushort *specialCase = specialCaseMap + p->lowerCaseDiff; - return (*specialCase == 1) ? specialCase[1] : uc; - } - return uc + p->lowerCaseDiff; -} - -template -Q_DECL_CONST_FUNCTION static inline T toUpperCase_helper(T uc) Q_DECL_NOTHROW -{ - const QUnicodeTables::Properties *p = qGetProp(uc); - if (p->upperCaseSpecial) { - const ushort *specialCase = specialCaseMap + p->upperCaseDiff; - return (*specialCase == 1) ? specialCase[1] : uc; - } - return uc + p->upperCaseDiff; -} + const QUnicodeTables::Properties *prop = qGetProp(uc); -template -Q_DECL_CONST_FUNCTION static inline T toTitleCase_helper(T uc) Q_DECL_NOTHROW -{ - const QUnicodeTables::Properties *p = qGetProp(uc); - if (p->titleCaseSpecial) { - const ushort *specialCase = specialCaseMap + p->titleCaseDiff; - return (*specialCase == 1) ? specialCase[1] : uc; + if (Q_UNLIKELY(Traits::caseSpecial(prop))) { + const ushort *specialCase = specialCaseMap + Traits::caseDiff(prop); + // so far, there are no special cases beyond BMP (guaranteed by the qunicodetables generator) + return *specialCase == 1 ? specialCase[1] : uc; } - return uc + p->titleCaseDiff; -} -template -Q_DECL_CONST_FUNCTION static inline T toCaseFolded_helper(T uc) Q_DECL_NOTHROW -{ - const QUnicodeTables::Properties *p = qGetProp(uc); - if (p->caseFoldSpecial) { - const ushort *specialCase = specialCaseMap + p->caseFoldDiff; - return (*specialCase == 1) ? specialCase[1] : uc; - } - return uc + p->caseFoldDiff; + return uc + Traits::caseDiff(prop); } /*! @@ -1491,7 +1461,7 @@ uint QChar::toLower(uint ucs4) Q_DECL_NOTHROW { if (ucs4 > LastValidCodePoint) return ucs4; - return toLowerCase_helper(ucs4); + return convertCase_helper(ucs4); } /*! @@ -1511,7 +1481,7 @@ uint QChar::toUpper(uint ucs4) Q_DECL_NOTHROW { if (ucs4 > LastValidCodePoint) return ucs4; - return toUpperCase_helper(ucs4); + return convertCase_helper(ucs4); } /*! @@ -1531,29 +1501,29 @@ uint QChar::toTitleCase(uint ucs4) Q_DECL_NOTHROW { if (ucs4 > LastValidCodePoint) return ucs4; - return toTitleCase_helper(ucs4); + return convertCase_helper(ucs4); } static inline uint foldCase(const ushort *ch, const ushort *start) { - uint c = *ch; - if (QChar(c).isLowSurrogate() && ch > start && QChar(*(ch - 1)).isHighSurrogate()) - c = QChar::surrogateToUcs4(*(ch - 1), c); - return toCaseFolded_helper(c); + uint ucs4 = *ch; + if (QChar::isLowSurrogate(ucs4) && ch > start && QChar::isHighSurrogate(*(ch - 1))) + ucs4 = QChar::surrogateToUcs4(*(ch - 1), ucs4); + return convertCase_helper(ucs4); } static inline uint foldCase(uint ch, uint &last) Q_DECL_NOTHROW { - uint c = ch; - if (QChar(c).isLowSurrogate() && QChar(last).isHighSurrogate()) - c = QChar::surrogateToUcs4(last, c); + uint ucs4 = ch; + if (QChar::isLowSurrogate(ucs4) && QChar::isHighSurrogate(last)) + ucs4 = QChar::surrogateToUcs4(last, ucs4); last = ch; - return toCaseFolded_helper(c); + return convertCase_helper(ucs4); } static inline ushort foldCase(ushort ch) Q_DECL_NOTHROW { - return toCaseFolded_helper(ch); + return convertCase_helper(ch); } /*! @@ -1572,7 +1542,7 @@ uint QChar::toCaseFolded(uint ucs4) Q_DECL_NOTHROW { if (ucs4 > LastValidCodePoint) return ucs4; - return toCaseFolded_helper(ucs4); + return convertCase_helper(ucs4); } /*! -- cgit v1.2.3 From 79cdc7a26c0ab66b4df32b6ec9ef0d27de37d46b Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 12 Nov 2015 16:35:44 +0100 Subject: remove abuse of module include path overrides these modules simply have no "proper" include paths (they are used only within qtbase, with explicit INCLUDEPATH statements). Change-Id: Iec6aa6ae0bc449eb8cac2fa1c86a791755eec06e Reviewed-by: Laszlo Agocs --- src/plugins/platforms/eglfs/eglfs_device_lib.pro | 7 ------- src/plugins/platforms/xcb/xcb_qpa_lib.pro | 7 ------- 2 files changed, 14 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/eglfs/eglfs_device_lib.pro b/src/plugins/platforms/eglfs/eglfs_device_lib.pro index 22a32663c7..4fe2ce4897 100644 --- a/src/plugins/platforms/eglfs/eglfs_device_lib.pro +++ b/src/plugins/platforms/eglfs/eglfs_device_lib.pro @@ -6,13 +6,6 @@ TARGET = QtEglDeviceIntegration CONFIG += no_module_headers internal_module -MODULE_INCLUDES = \ - \$\$QT_MODULE_INCLUDE_BASE \ - \$\$QT_MODULE_INCLUDE_BASE/QtQGui -MODULE_PRIVATE_INCLUDES = \ - \$\$QT_MODULE_INCLUDE_BASE/QtGui/$$QT.gui.VERSION \ - \$\$QT_MODULE_INCLUDE_BASE/QtGui/$$QT.gui.VERSION/QtGui - load(qt_module) QT += core-private gui-private platformsupport-private diff --git a/src/plugins/platforms/xcb/xcb_qpa_lib.pro b/src/plugins/platforms/xcb/xcb_qpa_lib.pro index 12987567ff..945bf06d6f 100644 --- a/src/plugins/platforms/xcb/xcb_qpa_lib.pro +++ b/src/plugins/platforms/xcb/xcb_qpa_lib.pro @@ -1,13 +1,6 @@ TARGET = QtXcbQpa CONFIG += no_module_headers internal_module -MODULE_INCLUDES = \ - \$\$QT_MODULE_INCLUDE_BASE \ - \$\$QT_MODULE_INCLUDE_BASE/QtQGui -MODULE_PRIVATE_INCLUDES = \ - \$\$QT_MODULE_INCLUDE_BASE/QtGui/$$QT.gui.VERSION \ - \$\$QT_MODULE_INCLUDE_BASE/QtGui/$$QT.gui.VERSION/QtGui - load(qt_module) QT += core-private gui-private platformsupport-private -- cgit v1.2.3 From 778e6de8a24357d9f4d317a837cbdf2df83c35e8 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 13 Nov 2015 21:01:06 +0100 Subject: move addition of libdl to right project Change-Id: Ifae8b906ef3767d9c21f09953076bd640829858f Reviewed-by: Laszlo Agocs --- src/plugins/platforms/xcb/gl_integrations/xcb_glx/xcb_glx.pro | 2 ++ src/plugins/platforms/xcb/xcb_qpa_lib.pro | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/xcb_glx.pro b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/xcb_glx.pro index 57cd81ec3b..1c577e5dc9 100644 --- a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/xcb_glx.pro +++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/xcb_glx.pro @@ -17,6 +17,8 @@ contains(QT_CONFIG, xcb-glx) { LIBS += -lxcb-glx } +LIBS += $$QMAKE_LIBS_DYNLOAD + HEADERS += \ qxcbglxintegration.h \ qxcbglxwindow.h \ diff --git a/src/plugins/platforms/xcb/xcb_qpa_lib.pro b/src/plugins/platforms/xcb/xcb_qpa_lib.pro index 945bf06d6f..60eb8a02e3 100644 --- a/src/plugins/platforms/xcb/xcb_qpa_lib.pro +++ b/src/plugins/platforms/xcb/xcb_qpa_lib.pro @@ -40,8 +40,6 @@ HEADERS = \ qxcbxsettings.h \ qxcbsystemtraytracker.h -LIBS += $$QMAKE_LIBS_DYNLOAD - DEFINES += QT_BUILD_XCB_PLUGIN # needed by Xcursor ... contains(QT_CONFIG, xcb-xlib) { -- cgit v1.2.3 From 5c4c5dd7a2032a6769c51174eb46d456a769378d Mon Sep 17 00:00:00 2001 From: Nico Vertriest Date: Fri, 13 Nov 2015 13:47:26 +0100 Subject: Doc: corrected snippet QSqlTableModel Wrongly used QSQLQueryModel previously Task-number: QTBUG-35860 Change-Id: I059ba45e54ac67b75b68eb0b804f66642b87a29f Reviewed-by: Martin Smith --- src/sql/doc/snippets/sqldatabase/sqldatabase.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/sql/doc/snippets/sqldatabase/sqldatabase.cpp b/src/sql/doc/snippets/sqldatabase/sqldatabase.cpp index 0938fa775d..068a2c04f1 100644 --- a/src/sql/doc/snippets/sqldatabase/sqldatabase.cpp +++ b/src/sql/doc/snippets/sqldatabase/sqldatabase.cpp @@ -239,8 +239,9 @@ void QSqlQueryModel_snippets() } //! [21] - QSqlQueryModel model; - model.setQuery("SELECT * FROM employee"); + QSqlTableModel model; + model.setTable("employee"); + model.select(); int salary = model.record(4).value("salary").toInt(); //! [21] Q_UNUSED(salary); -- cgit v1.2.3 From c81fcffed86cb3a4ed21d880bc9f1a4d3b847197 Mon Sep 17 00:00:00 2001 From: Nico Vertriest Date: Mon, 16 Nov 2015 13:22:40 +0100 Subject: Doc: Corrected minor typo Task-number: QTBUG-27499 Change-Id: I20b8da6300b84a107f6f581b99c63a39f8455d6c Reviewed-by: Martin Smith --- src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc b/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc index 0547c4f64a..843807b67c 100644 --- a/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc +++ b/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc @@ -829,7 +829,7 @@ \l{#selected-ps}{:selected}, and \l{#checked-ps}{:checked} pseudo states. - Sort indicator in can be styled using the + The sort indicator can be styled using the \l{#up-arrow-sub}{::up-arrow} and the \l{#down-arrow-sub}{::down-arrow} Sub-control. -- cgit v1.2.3 From 50f91545a341b609f54af3dd4a335a734f8e78aa Mon Sep 17 00:00:00 2001 From: Nico Vertriest Date: Wed, 11 Nov 2015 15:05:29 +0100 Subject: Doc: removed 2 invalid external links in external resources. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Link to Using a Designer UI File Task-number: QTBUG-49251 Change-Id: I9d2e5ad746ce5c3933f28b8159e381dcdb8e643a Reviewed-by: Topi Reiniö Reviewed-by: Martin Smith --- src/corelib/doc/src/external-resources.qdoc | 10 ---------- 1 file changed, 10 deletions(-) (limited to 'src') diff --git a/src/corelib/doc/src/external-resources.qdoc b/src/corelib/doc/src/external-resources.qdoc index d612ce8280..3d01b9ee2d 100644 --- a/src/corelib/doc/src/external-resources.qdoc +++ b/src/corelib/doc/src/external-resources.qdoc @@ -56,16 +56,6 @@ \title IANA character-sets encoding file */ -/*! - \externalpage http://doc-snapshot.qt-project.org/qt5-5.4/qtdesigner-manual.html - \title Using a Designer UI File in Your Application -*/ - -/*! - \externalpage http://doc-snapshot.qt-project.org/qt5-5.4/designer-widget-mode.html#the-property-editor - \title Qt Designer's Widget Editing Mode#The Property Editor -*/ - /*! \externalpage http://marcmutz.wordpress.com/effective-qt/containers/#containers-qlist \title Pros and Cons of Using QList -- cgit v1.2.3 From 90c81366d18c94cea17c2b25d2b7c55b6fa0ab97 Mon Sep 17 00:00:00 2001 From: Nico Vertriest Date: Mon, 9 Nov 2015 13:20:58 +0100 Subject: Doc: added specs to setHorizontalHeaderItem() Added that adding an item deletes an existing one Task-number: QTBUG-42105 Change-Id: Ibcf08e6e2bf9c9239e7eca5aa48f2f30c8417fec Reviewed-by: Martin Smith --- src/widgets/itemviews/qtablewidget.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/widgets/itemviews/qtablewidget.cpp b/src/widgets/itemviews/qtablewidget.cpp index a10b95f701..cd38f4b282 100644 --- a/src/widgets/itemviews/qtablewidget.cpp +++ b/src/widgets/itemviews/qtablewidget.cpp @@ -2029,6 +2029,8 @@ QTableWidgetItem *QTableWidget::horizontalHeaderItem(int column) const /*! Sets the horizontal header item for column \a column to \a item. + If necessary, the column count is increased to fit the item. + The previous header item (if there was one) is deleted. */ void QTableWidget::setHorizontalHeaderItem(int column, QTableWidgetItem *item) { -- cgit v1.2.3 From d0f57439d02582cf7564d1509d13f715eadc7f05 Mon Sep 17 00:00:00 2001 From: Nico Vertriest Date: Thu, 12 Nov 2015 12:10:21 +0100 Subject: Doc: Added info about sorting in QItemSelectionModel::selectedIndexes Task-number: QTBUG-40726 Change-Id: I450f9735fbbdc6574e8a14ea0076a28ee65077de Reviewed-by: Martin Smith --- src/corelib/itemmodels/qitemselectionmodel.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/corelib/itemmodels/qitemselectionmodel.cpp b/src/corelib/itemmodels/qitemselectionmodel.cpp index 51c670f79e..222e722c06 100644 --- a/src/corelib/itemmodels/qitemselectionmodel.cpp +++ b/src/corelib/itemmodels/qitemselectionmodel.cpp @@ -1646,6 +1646,7 @@ QModelIndexList QItemSelectionModel::selectedIndexes() const /*! \since 4.2 Returns the indexes in the given \a column for the rows where all columns are selected. + The list is not sorted. \sa selectedIndexes(), selectedColumns() */ -- cgit v1.2.3 From d2792d2ed90e1e2789aa80f1667d6e67cd35af66 Mon Sep 17 00:00:00 2001 From: Aleix Pol Date: Fri, 30 Oct 2015 15:58:10 +0100 Subject: Fix screenForGeometry on a corner case MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QRect only deals with integers, and I had a window set on the corner and without a size. When this screen was created, it was reported to be on the wrong screen, thus created there wrong. The reason for this is that ::center is not prepared for this use. QRect(QPoint(500,500), QSize()).center() is QRect(499, 499) Change-Id: I24e57182f84873306f180749e96368d6da1147a9 Reviewed-by: Paul Olav Tvete Reviewed-by: Tor Arne Vestbø --- src/gui/kernel/qplatformwindow.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/kernel/qplatformwindow.cpp b/src/gui/kernel/qplatformwindow.cpp index ea3b75c81c..8757715c0d 100644 --- a/src/gui/kernel/qplatformwindow.cpp +++ b/src/gui/kernel/qplatformwindow.cpp @@ -484,7 +484,9 @@ QPlatformScreen *QPlatformWindow::screenForGeometry(const QRect &newGeometry) co { QPlatformScreen *currentScreen = screen(); QPlatformScreen *fallback = currentScreen; - QPoint center = newGeometry.center(); + //QRect::center can return a value outside the rectangle if it's empty + const QPoint center = newGeometry.isEmpty() ? newGeometry.topLeft() : newGeometry.center(); + if (!parent() && currentScreen && !currentScreen->geometry().contains(center)) { Q_FOREACH (QPlatformScreen* screen, currentScreen->virtualSiblings()) { if (screen->geometry().contains(center)) -- cgit v1.2.3 From 99d061ffd5ea9fc52d96b92cdf3dce93685b4205 Mon Sep 17 00:00:00 2001 From: Maurice Kalinowski Date: Fri, 13 Nov 2015 15:02:01 +0100 Subject: winrt: Do not emit keyboard changes in the constructor QWinRTInputContext is created from the XAML Thread, which can cause problems when handleVisibilityChange is invoked. Instead just query the keyboardRect and skip the emit. Task-number: QTBUG-49389 Change-Id: I158204a07b9e000adffdc308e68b0f1425ed7c62 Reviewed-by: Andrew Knight --- src/plugins/platforms/winrt/qwinrtinputcontext.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/winrt/qwinrtinputcontext.cpp b/src/plugins/platforms/winrt/qwinrtinputcontext.cpp index 750233c94f..9d8792a6db 100644 --- a/src/plugins/platforms/winrt/qwinrtinputcontext.cpp +++ b/src/plugins/platforms/winrt/qwinrtinputcontext.cpp @@ -54,6 +54,14 @@ typedef ITypedEventHandler InputPaneV QT_BEGIN_NAMESPACE +inline QRectF getInputPaneRect(IInputPane *pane, qreal scaleFactor) +{ + Rect rect; + pane->get_OccludedRect(&rect); + return QRectF(qRound(rect.X * scaleFactor), qRound(rect.Y * scaleFactor), + qRound(rect.Width * scaleFactor), qRound(rect.Height * scaleFactor)); +} + /*! \class QWinRTInputContext \brief Manages Input Method visibility @@ -87,7 +95,7 @@ QWinRTInputContext::QWinRTInputContext(QWinRTScreen *screen) inputPane->add_Hiding(Callback( this, &QWinRTInputContext::onHiding).Get(), &hideToken); - handleVisibilityChange(inputPane); + m_keyboardRect = getInputPaneRect(inputPane, m_screen->scaleFactor()); m_isInputPanelVisible = !m_keyboardRect.isEmpty(); } else { qWarning(Q_FUNC_INFO ": failed to retrieve InputPane."); @@ -120,10 +128,7 @@ HRESULT QWinRTInputContext::onHiding(IInputPane *pane, IInputPaneVisibilityEvent HRESULT QWinRTInputContext::handleVisibilityChange(IInputPane *pane) { - Rect rect; - pane->get_OccludedRect(&rect); - const QRectF keyboardRect = QRectF(qRound(rect.X * m_screen->scaleFactor()), qRound(rect.Y * m_screen->scaleFactor()), - qRound(rect.Width * m_screen->scaleFactor()), qRound(rect.Height * m_screen->scaleFactor())); + const QRectF keyboardRect = getInputPaneRect(pane, m_screen->scaleFactor()); if (m_keyboardRect != keyboardRect) { m_keyboardRect = keyboardRect; emitKeyboardRectChanged(); -- cgit v1.2.3 From 2a2ca8e6bb544c777799fc3cdeb36946858eaf9f Mon Sep 17 00:00:00 2001 From: Dmitry Shachnev Date: Sat, 14 Nov 2015 21:38:21 +0300 Subject: =?UTF-8?q?Use=20=E2=80=9CAdwaita=E2=80=9D=20as=20the=20default=20?= =?UTF-8?q?icon=20theme=20for=20QGnomeTheme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit That is the new name for gnome-icon-theme for more than 1.5 years. See [1] for details. Still keep “gnome” as the fallback icon theme, so this commit should not break anything. [1]: https://mail.gnome.org/archives/desktop-devel-list/2014-April/msg00086.html Change-Id: Ifc2178827ad2cf6fdbc4e5248c83789ebc5b797e Reviewed-by: Friedemann Kleint Reviewed-by: Jens Bache-Wiig --- src/platformsupport/themes/genericunix/qgenericunixthemes.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp b/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp index a369747a64..c94bfd4f4e 100644 --- a/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp +++ b/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp @@ -609,8 +609,9 @@ QVariant QGnomeTheme::themeHint(QPlatformTheme::ThemeHint hint) const case QPlatformTheme::DialogButtonBoxLayout: return QVariant(QPlatformDialogHelper::GnomeLayout); case QPlatformTheme::SystemIconThemeName: + return QVariant(QStringLiteral("Adwaita")); case QPlatformTheme::SystemIconFallbackThemeName: - return QVariant(QString(QStringLiteral("gnome"))); + return QVariant(QStringLiteral("gnome")); case QPlatformTheme::IconThemeSearchPaths: return QVariant(QGenericUnixTheme::xdgIconThemePaths()); case QPlatformTheme::StyleNames: { -- cgit v1.2.3 From f49deb790fb26ae613f54689c307e5c6b1d88b82 Mon Sep 17 00:00:00 2001 From: Tim Blechmann Date: Tue, 17 Nov 2015 14:58:23 +0700 Subject: Windows: Open GL - Blacklist all 6th generation intel hd graphics devices the windows driver for Intel HD Graphics 3000 is buggy. the original blacklist was using device ids from: http://www.pcidatabase.com/search.php?device_search_str=graphics however this list seems to be incomplete. to be on the safe side, we should blacklist all 6th generation devices, as taken from: https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units#Sixth_generation Change-Id: I1bb6c39a310d741b7a9eb0fed9767bb316415996 Reviewed-by: Friedemann Kleint Reviewed-by: Laszlo Agocs --- src/plugins/platforms/windows/openglblacklists/default.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/plugins/platforms/windows/openglblacklists/default.json b/src/plugins/platforms/windows/openglblacklists/default.json index 5d8bd56a1e..a5d42719a9 100644 --- a/src/plugins/platforms/windows/openglblacklists/default.json +++ b/src/plugins/platforms/windows/openglblacklists/default.json @@ -47,7 +47,7 @@ "id": 4, "description": "Intel HD Graphics 3000 crashes when initializing the OpenGL driver (QTBUG-42240)", "vendor_id": "0x8086", - "device_id": [ "0x0102", "0x0116" ], + "device_id": [ "0x0102", "0x0106", "0x010A", "0x0112", "0x0116", "0x0122", "0x0126" ], "os": { "type": "win" }, -- cgit v1.2.3 From 4f1234033ba647dd4d32e87eecb832773d089abc Mon Sep 17 00:00:00 2001 From: Samuel Nevala Date: Mon, 16 Nov 2015 13:21:46 +0200 Subject: wirt: Fix cursor position method. The native position is given in device-independent pixels, so multiply that by the window scale factor. If no cursor is present (e.g. on Windows Phone), the native API returns SHRT_MIN as the coordinate values. Catch that and pass Infinity instead in order to enable the cursorless fall-back behavior in QQuickMenu::popup(). Change-Id: Ibe8ebcdbe257e8df25eea9873e8f4fa647ae1ab2 Task-Id: QTBUG-48265 Reviewed-by: Andrew Knight --- src/plugins/platforms/winrt/qwinrtcursor.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/winrt/qwinrtcursor.cpp b/src/plugins/platforms/winrt/qwinrtcursor.cpp index 707f3bf0ba..1a511f103f 100644 --- a/src/plugins/platforms/winrt/qwinrtcursor.cpp +++ b/src/plugins/platforms/winrt/qwinrtcursor.cpp @@ -161,15 +161,19 @@ void QWinRTCursor::changeCursor(QCursor *windowCursor, QWindow *window) QPoint QWinRTCursor::pos() const { - ICoreWindow *coreWindow = - static_cast(QGuiApplication::primaryScreen()->handle())->coreWindow(); - HRESULT hr; + const QWinRTScreen *screen = static_cast(QGuiApplication::primaryScreen()->handle()); + Q_ASSERT(screen); + ICoreWindow *coreWindow = screen->coreWindow(); + Q_ASSERT(coreWindow); Point point; - hr = QEventDispatcherWinRT::runOnXamlThread([coreWindow, &point]() { + HRESULT hr = QEventDispatcherWinRT::runOnXamlThread([coreWindow, &point]() { return coreWindow->get_PointerPosition(&point); }); - RETURN_IF_FAILED("Failed to get native cursor position", QPoint()); - return QPoint(point.X, point.Y); + Q_ASSERT_SUCCEEDED(hr); + const QPoint position = QPoint(point.X, point.Y) * screen->scaleFactor(); + // If no cursor get_PointerPosition returns SHRT_MIN for x and y + return position.x() == SHRT_MIN && position.y() == SHRT_MIN || FAILED(hr) ? QPointF(Q_INFINITY, Q_INFINITY).toPoint() + : position; } QT_END_NAMESPACE -- cgit v1.2.3 From 874aaa6ea02d02a2eedc2b604f9b52daee630460 Mon Sep 17 00:00:00 2001 From: Volker Krause Date: Tue, 17 Nov 2015 16:16:12 +0100 Subject: QTest::mouseEvent expects window-local coordinates. This makes the automatic center click feature of the mouse event methods also work if the target window isn't positioned at 0,0. Change-Id: I0d711e484620900ba2ffc4139f7e13346a7482d3 Reviewed-by: Friedemann Kleint --- src/testlib/qtestmouse.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/testlib/qtestmouse.h b/src/testlib/qtestmouse.h index c422a990ef..c5969a1603 100644 --- a/src/testlib/qtestmouse.h +++ b/src/testlib/qtestmouse.h @@ -95,7 +95,7 @@ namespace QTest } if (pos.isNull()) - pos = window->geometry().center(); + pos = QPoint(window->width() / 2, window->height() / 2); QTEST_ASSERT(uint(stateKey) == 0 || stateKey & Qt::KeyboardModifierMask); -- cgit v1.2.3 From 8beec998999b0ad7abf3192069c649b64aa999f5 Mon Sep 17 00:00:00 2001 From: Alexander Volkov Date: Thu, 5 Nov 2015 18:31:32 +0300 Subject: xcb: Handle screen siblings in QXcbVirtualDesktop MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I2f3c3ad75bb3914667cf6f27dc2d91aac103607b Reviewed-by: Błażej Szczygieł Reviewed-by: Shawn Rutledge --- src/plugins/platforms/xcb/qxcbconnection.cpp | 15 +++++---------- src/plugins/platforms/xcb/qxcbscreen.cpp | 5 +++++ src/plugins/platforms/xcb/qxcbscreen.h | 12 +++++++----- 3 files changed, 17 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp index a20d957138..e4eaeef5d8 100644 --- a/src/plugins/platforms/xcb/qxcbconnection.cpp +++ b/src/plugins/platforms/xcb/qxcbconnection.cpp @@ -263,8 +263,7 @@ void QXcbConnection::updateScreens(const xcb_randr_notify_event_t *event) // Known screen removed -> delete it m_screens.removeOne(screen); - foreach (QXcbScreen *otherScreen, m_screens) - otherScreen->removeVirtualSibling((QPlatformScreen *) screen); + virtualDesktop->removeScreen(screen); QXcbIntegration::instance()->destroyScreen(screen); @@ -283,9 +282,7 @@ void QXcbConnection::updateScreens(const xcb_randr_notify_event_t *event) qCDebug(lcQpaScreen) << "output" << screen->name() << "is connected and enabled"; screen->setPrimary(checkOutputIsPrimary(output.window, output.output)); - foreach (QXcbScreen *otherScreen, m_screens) - if (otherScreen->root() == output.window) - otherScreen->addVirtualSibling(screen); + virtualDesktop->addScreen(screen); m_screens << screen; QXcbIntegration::instance()->screenAdded(screen, screen->isPrimary()); @@ -308,8 +305,7 @@ void QXcbConnection::updateScreens(const xcb_randr_notify_event_t *event) if (outputInfo->crtc == XCB_NONE) { qCDebug(lcQpaScreen) << "output" << screen->name() << "has been disabled"; m_screens.removeOne(screen); - foreach (QXcbScreen *otherScreen, m_screens) - otherScreen->removeVirtualSibling((QPlatformScreen *) screen); + virtualDesktop->removeScreen(screen); QXcbIntegration::instance()->destroyScreen(screen); } else { qCDebug(lcQpaScreen) << "output" << screen->name() << "has been temporarily disabled for the mode switch"; @@ -443,8 +439,7 @@ void QXcbConnection::initializeScreens() } } } - foreach (QPlatformScreen* s, siblings) - ((QXcbScreen*)s)->setVirtualSiblings(siblings); + virtualDesktop->setScreens(siblings); xcb_screen_next(&it); ++xcbScreenNumber; } // for each xcb screen @@ -460,7 +455,7 @@ void QXcbConnection::initializeScreens() QXcbVirtualDesktop *virtualDesktop = m_virtualDesktops.value(0); if (virtualDesktop && !hasOutputs && !virtualDesktop->size().isEmpty() && m_screens.isEmpty()) { QXcbScreen *screen = createScreen(virtualDesktop, 0, Q_NULLPTR); - screen->setVirtualSiblings(QList() << screen); + virtualDesktop->setScreens(QList() << screen); m_screens << screen; primaryScreen = screen; primaryScreen->setPrimary(true); diff --git a/src/plugins/platforms/xcb/qxcbscreen.cpp b/src/plugins/platforms/xcb/qxcbscreen.cpp index 0aa5810a72..9b24884e1c 100644 --- a/src/plugins/platforms/xcb/qxcbscreen.cpp +++ b/src/plugins/platforms/xcb/qxcbscreen.cpp @@ -74,6 +74,11 @@ QXcbScreen *QXcbVirtualDesktop::screenAt(const QPoint &pos) const return Q_NULLPTR; } +void QXcbVirtualDesktop::addScreen(QPlatformScreen *s) +{ + ((QXcbScreen *) s)->isPrimary() ? m_screens.prepend(s) : m_screens.append(s); +} + QXcbXSettings *QXcbVirtualDesktop::xSettings() const { if (!m_xSettings) { diff --git a/src/plugins/platforms/xcb/qxcbscreen.h b/src/plugins/platforms/xcb/qxcbscreen.h index 51c92a40ae..7b5d3cb30f 100644 --- a/src/plugins/platforms/xcb/qxcbscreen.h +++ b/src/plugins/platforms/xcb/qxcbscreen.h @@ -68,6 +68,11 @@ public: xcb_window_t root() const { return m_screen->root; } QXcbScreen *screenAt(const QPoint &pos) const; + QList screens() const { return m_screens; } + void setScreens(QList sl) { m_screens = sl; } + void removeScreen(QPlatformScreen *s) { m_screens.removeOne(s); } + void addScreen(QPlatformScreen *s); + QXcbXSettings *xSettings() const; bool compositingActive() const; @@ -78,6 +83,7 @@ public: private: xcb_screen_t *m_screen; int m_number; + QList m_screens; QXcbXSettings *m_xSettings; xcb_atom_t m_net_wm_cm_atom; @@ -110,10 +116,7 @@ public: QPlatformCursor *cursor() const Q_DECL_OVERRIDE; qreal refreshRate() const Q_DECL_OVERRIDE { return m_refreshRate; } Qt::ScreenOrientation orientation() const Q_DECL_OVERRIDE { return m_orientation; } - QList virtualSiblings() const Q_DECL_OVERRIDE { return m_siblings; } - void setVirtualSiblings(QList sl) { m_siblings = sl; } - void removeVirtualSibling(QPlatformScreen *s) { m_siblings.removeOne(s); } - void addVirtualSibling(QPlatformScreen *s) { ((QXcbScreen *) s)->isPrimary() ? m_siblings.prepend(s) : m_siblings.append(s); } + QList virtualSiblings() const Q_DECL_OVERRIDE { return m_virtualDesktop->screens(); } QXcbVirtualDesktop *virtualDesktop() const { return m_virtualDesktop; } void setPrimary(bool primary) { m_primary = primary; } @@ -171,7 +174,6 @@ private: QRect m_availableGeometry; QSize m_virtualSize; QSizeF m_virtualSizeMillimeters; - QList m_siblings; Qt::ScreenOrientation m_orientation; QString m_windowManagerName; bool m_syncRequestSupported; -- cgit v1.2.3 From 2047fe9253775347cced87bca5a6b9adf364c0bb Mon Sep 17 00:00:00 2001 From: Alexander Volkov Date: Wed, 19 Aug 2015 19:13:07 +0300 Subject: xcb: Process _NET_WORKAREA and screen geometry changes separately MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit allows to avoid superfluous calls to the X server. We don't request _NET_WORKAREA values when the screen geometry changes, and we avoid RandR calls on each _NET_WORKAREA change. Besides, update the available geometry of all screens with the same root window, rather than only that one which corresponds to Qt::Desktop window. Change-Id: I5ec624717f5f261c986cd9aaf2425f22985e11c0 Reviewed-by: Błażej Szczygieł Reviewed-by: Uli Schlachter Reviewed-by: Shawn Rutledge --- src/plugins/platforms/xcb/qxcbconnection.cpp | 11 ++++- src/plugins/platforms/xcb/qxcbscreen.cpp | 68 +++++++++++++++++++--------- src/plugins/platforms/xcb/qxcbscreen.h | 8 ++++ src/plugins/platforms/xcb/qxcbwindow.cpp | 2 - 4 files changed, 64 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp index e4eaeef5d8..901764bbf8 100644 --- a/src/plugins/platforms/xcb/qxcbconnection.cpp +++ b/src/plugins/platforms/xcb/qxcbconnection.cpp @@ -1121,8 +1121,17 @@ void QXcbConnection::handleXcbEvent(xcb_generic_event_t *event) handled = false; break; case XCB_PROPERTY_NOTIFY: - HANDLE_PLATFORM_WINDOW_EVENT(xcb_property_notify_event_t, window, handlePropertyNotifyEvent); + { + xcb_property_notify_event_t *pn = (xcb_property_notify_event_t *)event; + if (pn->atom == atom(QXcbAtom::_NET_WORKAREA)) { + QXcbVirtualDesktop *virtualDesktop = virtualDesktopForRootWindow(pn->window); + if (virtualDesktop) + virtualDesktop->updateWorkArea(); + } else { + HANDLE_PLATFORM_WINDOW_EVENT(xcb_property_notify_event_t, window, handlePropertyNotifyEvent); + } break; + } #if defined(XCB_USE_XINPUT2) case XCB_GE_GENERIC: // Here the windowEventListener is invoked from xi2HandleEvent() diff --git a/src/plugins/platforms/xcb/qxcbscreen.cpp b/src/plugins/platforms/xcb/qxcbscreen.cpp index 9b24884e1c..2a53b18890 100644 --- a/src/plugins/platforms/xcb/qxcbscreen.cpp +++ b/src/plugins/platforms/xcb/qxcbscreen.cpp @@ -58,6 +58,8 @@ QXcbVirtualDesktop::QXcbVirtualDesktop(QXcbConnection *connection, xcb_screen_t cmAtomName += QByteArray::number(m_number); m_net_wm_cm_atom = connection->internAtom(cmAtomName.constData()); m_compositingActive = connection->getSelectionOwner(m_net_wm_cm_atom); + + m_workArea = getWorkArea(); } QXcbVirtualDesktop::~QXcbVirtualDesktop() @@ -112,6 +114,40 @@ void QXcbVirtualDesktop::subscribeToXFixesSelectionNotify() } } +QRect QXcbVirtualDesktop::getWorkArea() const +{ + QRect r; + xcb_get_property_reply_t * workArea = + xcb_get_property_reply(xcb_connection(), + xcb_get_property_unchecked(xcb_connection(), false, screen()->root, + atom(QXcbAtom::_NET_WORKAREA), + XCB_ATOM_CARDINAL, 0, 1024), NULL); + if (workArea && workArea->type == XCB_ATOM_CARDINAL && workArea->format == 32 && workArea->value_len >= 4) { + // If workArea->value_len > 4, the remaining ones seem to be for WM's virtual desktops + // (don't mess with QXcbVirtualDesktop which represents an X screen). + // But QScreen doesn't know about that concept. In reality there could be a + // "docked" panel (with _NET_WM_STRUT_PARTIAL atom set) on just one desktop. + // But for now just assume the first 4 values give us the geometry of the + // "work area", AKA "available geometry" + uint32_t *geom = (uint32_t*)xcb_get_property_value(workArea); + r = QRect(geom[0], geom[1], geom[2], geom[3]); + } else { + r = QRect(QPoint(), size()); + } + free(workArea); + return r; +} + +void QXcbVirtualDesktop::updateWorkArea() +{ + QRect workArea = getWorkArea(); + if (m_workArea != workArea) { + m_workArea = workArea; + foreach (QPlatformScreen *screen, m_screens) + ((QXcbScreen *)screen)->updateAvailableGeometry(); + } +} + QXcbScreen::QXcbScreen(QXcbConnection *connection, QXcbVirtualDesktop *virtualDesktop, xcb_randr_output_t outputId, xcb_randr_get_output_info_reply_t *output, QString outputName) @@ -457,7 +493,6 @@ void QXcbScreen::updateGeometry(xcb_timestamp_t timestamp) void QXcbScreen::updateGeometry(const QRect &geom, uint8_t rotation) { QRect xGeometry = geom; - QRect xAvailableGeometry = xGeometry; switch (rotation) { case XCB_RANDR_ROTATION_ROTATE_0: // xrandr --rotate normal m_orientation = Qt::LandscapeOrientation; @@ -486,34 +521,23 @@ void QXcbScreen::updateGeometry(const QRect &geom, uint8_t rotation) Q_MM_PER_INCH * xGeometry.width() / dpi.second); } - xcb_get_property_reply_t * workArea = - xcb_get_property_reply(xcb_connection(), - xcb_get_property_unchecked(xcb_connection(), false, screen()->root, - atom(QXcbAtom::_NET_WORKAREA), - XCB_ATOM_CARDINAL, 0, 1024), NULL); - - if (workArea && workArea->type == XCB_ATOM_CARDINAL && workArea->format == 32 && workArea->value_len >= 4) { - // If workArea->value_len > 4, the remaining ones seem to be for virtual desktops. - // But QScreen doesn't know about that concept. In reality there could be a - // "docked" panel (with _NET_WM_STRUT_PARTIAL atom set) on just one desktop. - // But for now just assume the first 4 values give us the geometry of the - // "work area", AKA "available geometry" - uint32_t *geom = (uint32_t*)xcb_get_property_value(workArea); - QRect virtualAvailableGeometry(geom[0], geom[1], geom[2], geom[3]); - // Take the intersection of the desktop's available geometry with this screen's geometry - // to get the part of the available geometry which belongs to this screen. - xAvailableGeometry = xGeometry & virtualAvailableGeometry; - } - free(workArea); - qreal dpi = xGeometry.width() / physicalSize().width() * qreal(25.4); m_pixelDensity = qRound(dpi/96); m_geometry = QRect(xGeometry.topLeft(), xGeometry.size()); m_nativeGeometry = QRect(xGeometry.topLeft(), xGeometry.size()); - m_availableGeometry = QRect(xAvailableGeometry.topLeft(), xAvailableGeometry.size()); + m_availableGeometry = xGeometry & m_virtualDesktop->workArea(); QWindowSystemInterface::handleScreenGeometryChange(QPlatformScreen::screen(), m_geometry, m_availableGeometry); } +void QXcbScreen::updateAvailableGeometry() +{ + QRect availableGeometry = m_geometry & m_virtualDesktop->workArea(); + if (m_availableGeometry != availableGeometry) { + m_availableGeometry = availableGeometry; + QWindowSystemInterface::handleScreenGeometryChange(QPlatformScreen::screen(), m_geometry, m_availableGeometry); + } +} + void QXcbScreen::updateRefreshRate(xcb_randr_mode_t mode) { if (!connection()->hasXRandr()) diff --git a/src/plugins/platforms/xcb/qxcbscreen.h b/src/plugins/platforms/xcb/qxcbscreen.h index 7b5d3cb30f..c68c290791 100644 --- a/src/plugins/platforms/xcb/qxcbscreen.h +++ b/src/plugins/platforms/xcb/qxcbscreen.h @@ -77,10 +77,15 @@ public: bool compositingActive() const; + QRect workArea() const { return m_workArea; } + void updateWorkArea(); + void handleXFixesSelectionNotify(xcb_xfixes_selection_notify_event_t *notify_event); void subscribeToXFixesSelectionNotify(); private: + QRect getWorkArea() const; + xcb_screen_t *m_screen; int m_number; QList m_screens; @@ -88,6 +93,8 @@ private: QXcbXSettings *m_xSettings; xcb_atom_t m_net_wm_cm_atom; bool m_compositingActive; + + QRect m_workArea; }; class Q_XCB_EXPORT QXcbScreen : public QXcbObject, public QPlatformScreen @@ -142,6 +149,7 @@ public: void handleScreenChange(xcb_randr_screen_change_notify_event_t *change_event); void updateGeometry(const QRect &geom, uint8_t rotation); void updateGeometry(xcb_timestamp_t timestamp = XCB_TIME_CURRENT_TIME); + void updateAvailableGeometry(); void updateRefreshRate(xcb_randr_mode_t mode); void readXResources(); diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp index b691c7550f..bcc571c3c8 100644 --- a/src/plugins/platforms/xcb/qxcbwindow.cpp +++ b/src/plugins/platforms/xcb/qxcbwindow.cpp @@ -2378,8 +2378,6 @@ void QXcbWindow::handlePropertyNotifyEvent(const xcb_property_notify_event_t *ev return; } else if (event->atom == atom(QXcbAtom::_NET_FRAME_EXTENTS)) { m_dirtyFrameMargins = true; - } else if (event->atom == atom(QXcbAtom::_NET_WORKAREA) && xcbScreen() && event->window == xcbScreen()->root()) { - xcbScreen()->updateGeometry(event->time); } } -- cgit v1.2.3 From ded63fbb94088c3b0fbbf9d3b3a421b2b934ab50 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 10 Nov 2015 18:40:04 +0100 Subject: make a proper header-only module for QtZlib that way other modules can use the headers without hacks. this required making the base directory for paths in headers.pri configurable in syncqt. Change-Id: Id35cfe05bcf4c576d3f2d0d8d09590a5e23d21d3 Reviewed-by: Andy Nichols --- src/corelib/qtzlib.pro | 7 +++++++ src/corelib/tools/tools.pri | 4 ---- src/src.pro | 4 ++++ src/tools/bootstrap/bootstrap.pro | 5 +---- 4 files changed, 12 insertions(+), 8 deletions(-) create mode 100644 src/corelib/qtzlib.pro (limited to 'src') diff --git a/src/corelib/qtzlib.pro b/src/corelib/qtzlib.pro new file mode 100644 index 0000000000..744750fbbe --- /dev/null +++ b/src/corelib/qtzlib.pro @@ -0,0 +1,7 @@ +TARGET = QtZlib +MODULE = zlib +MAKEFILE = Makefile.qtzlib +CONFIG += internal_module header_module alien_syncqt +QT = + +load(qt_module) diff --git a/src/corelib/tools/tools.pri b/src/corelib/tools/tools.pri index c43fd761d8..ed07f70e87 100644 --- a/src/corelib/tools/tools.pri +++ b/src/corelib/tools/tools.pri @@ -155,10 +155,6 @@ else:SOURCES += tools/qelapsedtimer_generic.cpp contains(QT_CONFIG, zlib) { include($$PWD/../../3rdparty/zlib.pri) - corelib_zlib_headers.files = $$PWD/../../3rdparty/zlib/zconf.h\ - $$PWD/../../3rdparty/zlib/zlib.h - corelib_zlib_headers.path = $$[QT_INSTALL_HEADERS]/QtZlib - INSTALLS += corelib_zlib_headers } else { include($$PWD/../../3rdparty/zlib_dependency.pri) } diff --git a/src/src.pro b/src/src.pro index a970391382..df5c85fa53 100644 --- a/src/src.pro +++ b/src/src.pro @@ -2,6 +2,9 @@ TEMPLATE = subdirs load(qfeatures) +src_qtzlib.file = $$PWD/corelib/qtzlib.pro +src_qtzlib.target = sub-zlib + src_tools_bootstrap.subdir = tools/bootstrap src_tools_bootstrap.target = sub-bootstrap src_tools_bootstrap.CONFIG = host_build @@ -125,6 +128,7 @@ src_plugins.depends = src_sql src_xml src_network src_android.subdir = $$PWD/android # this order is important +contains(QT_CONFIG, zlib)|cross_compile: SUBDIRS += src_qtzlib SUBDIRS += src_tools_bootstrap src_tools_moc src_tools_rcc !contains(QT_DISABLED_FEATURES, regularexpression):pcre { SUBDIRS += src_3rdparty_pcre diff --git a/src/tools/bootstrap/bootstrap.pro b/src/tools/bootstrap/bootstrap.pro index b6b16dcd3d..ca05f804a2 100644 --- a/src/tools/bootstrap/bootstrap.pro +++ b/src/tools/bootstrap/bootstrap.pro @@ -39,10 +39,7 @@ MODULE_PRIVATE_INCLUDES = \ # We need the forwarding headers before their respective modules are built, # so do a minimal syncqt run. CONFIG += minimal_syncqt -QMAKE_SYNCQT_OPTIONS = -module QtCore -module QtDBus -module QtXml -contains(QT_CONFIG, zlib): \ - QMAKE_SYNCQT_OPTIONS += -module QtZlib -QMAKE_SYNCQT_OPTIONS += -version $$QT_VERSION +QMAKE_SYNCQT_OPTIONS = -module QtCore -module QtDBus -module QtXml -version $$QT_VERSION load(qt_module) -- cgit v1.2.3 From f29b6943f0a3b535309a383c41711de05f22eb54 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 2 Nov 2015 16:06:49 -0500 Subject: QString: Fix in-place toUpper/Lower when there's size expansion When that happens, we need to detach (in-place conversion won't work), so we recurse back into the same function, but the template version that does detaching. Task-number: QTBUG-49181 Change-Id: Idba8c29717f34c70a58fffff1412fea3acc95f98 Reviewed-by: Olivier Goffart (Woboq GmbH) --- src/corelib/tools/qstring.cpp | 41 +++++++++++++++++++++++++++++++---- src/corelib/tools/qstringiterator_p.h | 7 ++++++ 2 files changed, 44 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index 6b15900031..d1b5327f5c 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -5666,10 +5666,36 @@ QString QString::rightJustified(int width, QChar fill, bool truncate) const */ namespace QUnicodeTables { +/*! + \internal + Converts the \a str string starting from the position pointed to by the \a + it iterator, using the Unicode case traits \c Traits, and returns the + result. The input string must not be empty (the convertCase function below + guarantees that). + + The string type \c{T} is also a template and is either \c{const QString} or + \c{QString}. This function can do both copy-conversion and in-place + conversion depending on the state of the \a str parameter: + \list + \li \c{T} is \c{const QString}: copy-convert + \li \c{T} is \c{QString} and its refcount != 1: copy-convert + \li \c{T} is \c{QString} and its refcount == 1: in-place convert + \endlist + + In copy-convert mode, the local variable \c{s} is detached from the input + \a str. In the in-place convert mode, \a str is in moved-from state (which + this function requires to be a valid, empty string) and \c{s} contains the + only copy of the string, without reallocation (thus, \a it is still valid). + + There's one pathological case left: when the in-place conversion needs to + reallocate memory to grow the buffer. In that case, we need to adjust the \a + it pointer. + */ template Q_NEVER_INLINE static QString detachAndConvertCase(T &str, QStringIterator it) { + Q_ASSERT(!str.isEmpty()); QString s = qMove(str); // will copy if T is const QString QChar *pp = s.begin() + it.index(); // will detach if necessary uint uc = it.nextUnchecked(); @@ -5678,12 +5704,19 @@ static QString detachAndConvertCase(T &str, QStringIterator it) signed short caseDiff = Traits::caseDiff(prop); if (Q_UNLIKELY(Traits::caseSpecial(prop))) { - // slow path + // slow path: the string is growing const ushort *specialCase = specialCaseMap + caseDiff; ushort length = *specialCase++; - int pos = pp - s.constBegin(); - s.replace(pos, 1, reinterpret_cast(specialCase), length); - pp = const_cast(s.constBegin()) + pos + length; + int inpos = it.index() - 1; + int outpos = pp - s.constBegin(); + + s.replace(outpos, 1, reinterpret_cast(specialCase), length); + pp = const_cast(s.constBegin()) + outpos + length; + + // do we need to adjust the input iterator too? + // if it is pointing to s's data, str is empty + if (str.isEmpty()) + it = QStringIterator(s.constBegin(), inpos + length, s.constEnd()); } else if (QChar::requiresSurrogates(uc)) { *pp++ = QChar::highSurrogate(uc + caseDiff); *pp++ = QChar::lowSurrogate(uc + caseDiff); diff --git a/src/corelib/tools/qstringiterator_p.h b/src/corelib/tools/qstringiterator_p.h index 06b05de833..1c098a314d 100644 --- a/src/corelib/tools/qstringiterator_p.h +++ b/src/corelib/tools/qstringiterator_p.h @@ -69,6 +69,13 @@ public: { } + inline explicit QStringIterator(const QChar *begin, int idx, const QChar *end) + : i(begin), + pos(begin + idx), + e(end) + { + } + inline QString::const_iterator position() const { return pos; -- cgit v1.2.3 From 1378e7af1de3c0133e277ec3832ccd72e7286e67 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 16 Nov 2015 14:06:42 -0800 Subject: qdrawhelper.cpp: Fix constexpr build with MSVC 2015 Update 1 error C2397: conversion from 'uint' to 'uchar' requires a narrowing conversion Change-Id: Ic1b9e0a78b2faa5a0ae4e6de33ab2ee4b654af5f Reviewed-by: Olivier Goffart (Woboq GmbH) --- src/gui/painting/qdrawhelper.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp index 5c1cd8adef..52843fa113 100644 --- a/src/gui/painting/qdrawhelper.cpp +++ b/src/gui/painting/qdrawhelper.cpp @@ -379,9 +379,9 @@ static const uint *QT_FASTCALL convertARGBPMFromARGB32PM(uint *buffer, const uin template Q_DECL_CONSTEXPR static inline QPixelLayout pixelLayoutRGB() { return QPixelLayout{ - redWidth(), redShift(), - greenWidth(), greenShift(), - blueWidth(), blueShift(), + uchar(redWidth()), uchar(redShift()), + uchar(greenWidth()), uchar(greenShift()), + uchar(blueWidth()), uchar(blueShift()), 0, 0, false, bitsPerPixel(), convertToRGB32, @@ -394,10 +394,10 @@ template Q_DECL_CONSTEXPR static inline QPixelLayout pixe template Q_DECL_CONSTEXPR static inline QPixelLayout pixelLayoutARGBPM() { return QPixelLayout{ - redWidth(), redShift(), - greenWidth(), greenShift(), - blueWidth(), blueShift(), - alphaWidth(), alphaShift(), + uchar(redWidth()), uchar(redShift()), + uchar(greenWidth()), uchar(greenShift()), + uchar(blueWidth()), uchar(blueShift()), + uchar(alphaWidth()), uchar(alphaShift()), true, bitsPerPixel(), convertARGBPMToARGB32PM, convertARGBPMFromARGB32PM, -- cgit v1.2.3 From 7ad560b2bcae2d85aead0693219dd49233f8c9e4 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sat, 17 Oct 2015 14:18:19 -0700 Subject: Fix build with OS X 10.8 SDK The ffsll function is missing with that SDK, but Clang and GCC support it as the builtin. Change-Id: I9f4d900898814b569c1affff140e15fb59fb45d8 Reviewed-by: Samuel Gaist Reviewed-by: Jake Petroules --- src/corelib/tools/qsimd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/corelib/tools/qsimd.cpp b/src/corelib/tools/qsimd.cpp index ad02d2c147..3e4fdfaaf1 100644 --- a/src/corelib/tools/qsimd.cpp +++ b/src/corelib/tools/qsimd.cpp @@ -636,7 +636,7 @@ int ffsll(quint64 i) #endif } #endif -#elif defined(Q_OS_ANDROID) || defined(Q_OS_QNX) +#elif defined(Q_OS_ANDROID) || defined(Q_OS_QNX) || defined(Q_OS_OSX) # define ffsll __builtin_ffsll #endif -- cgit v1.2.3 From 3dd6ac244fce7ed5f09910b427eaf0eac338be4b Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 16 Nov 2015 13:44:12 -0800 Subject: Add support for the C++11 features fixed in MSVC 2015 Update 1 This brings MSVC 2015 support to almost C++11 feature completion. Constexpr support still has one annoying bug, for which the fix is promised for Update 2. Change-Id: I92c2ee6638625c61e3a16690563434e32d853368 Reviewed-by: Friedemann Kleint Reviewed-by: Olivier Goffart (Woboq GmbH) --- src/corelib/global/qcompilerdetection.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src') diff --git a/src/corelib/global/qcompilerdetection.h b/src/corelib/global/qcompilerdetection.h index 2ff75d7561..ba830977ad 100644 --- a/src/corelib/global/qcompilerdetection.h +++ b/src/corelib/global/qcompilerdetection.h @@ -914,6 +914,13 @@ //# define Q_COMPILER_UNIFORM_INIT # define Q_COMPILER_UNRESTRICTED_UNIONS # endif +# if _MSC_FULL_VER >= 190023419 +# define Q_COMPILER_ATTRIBUTES +// Almost working, see https://connect.microsoft.com/VisualStudio/feedback/details/2011648 +//# define Q_COMPILER_CONSTEXPR +# define Q_COMPILER_THREADSAFE_STATICS +# define Q_COMPILER_UNIFORM_INIT +# endif # endif /* __cplusplus */ #endif /* Q_CC_MSVC */ -- cgit v1.2.3 From aecf3006bddb959795d03dd72d9c520e49713913 Mon Sep 17 00:00:00 2001 From: Samuel Nevala Date: Tue, 17 Nov 2015 09:32:20 +0200 Subject: winrt: Fix startup orientation handling Calling QWinRTScreen::onOrientationChanged in the class constructor can lead to situation where QWinRTScreen is expected to be fully constructed. Moving the onOrientationChanged call to QWinRTScreen::initialize ensures that QWinRTScreen is fully constructed when it is called. Task-Id: QTBUG-49470 Change-Id: I52748f33a9011dec3a172c1a74023cad15aae38a Reviewed-by: Andrew Knight --- src/plugins/platforms/winrt/qwinrtscreen.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/winrt/qwinrtscreen.cpp b/src/plugins/platforms/winrt/qwinrtscreen.cpp index 5bb29d3805..158917184c 100644 --- a/src/plugins/platforms/winrt/qwinrtscreen.cpp +++ b/src/plugins/platforms/winrt/qwinrtscreen.cpp @@ -507,11 +507,7 @@ QWinRTScreen::QWinRTScreen() hr = d->displayInformation->get_NativeOrientation(&displayOrientation); Q_ASSERT_SUCCEEDED(hr); d->nativeOrientation = static_cast(static_cast(qtOrientationsFromNative(displayOrientation))); - - // Set initial orientation & pixel density - onDpiChanged(Q_NULLPTR, Q_NULLPTR); d->orientation = d->nativeOrientation; - onOrientationChanged(Q_NULLPTR, Q_NULLPTR); ComPtr applicationViewStatics; hr = RoGetActivationFactory(HString::MakeReference(RuntimeClass_Windows_UI_ViewManagement_ApplicationView).Get(), @@ -757,6 +753,8 @@ void QWinRTScreen::initialize() Q_ASSERT_SUCCEEDED(hr); hr = d->displayInformation->add_DpiChanged(Callback(this, &QWinRTScreen::onDpiChanged).Get(), &d->displayTokens[&IDisplayInformation::remove_DpiChanged]); Q_ASSERT_SUCCEEDED(hr); + onDpiChanged(Q_NULLPTR, Q_NULLPTR); + onOrientationChanged(Q_NULLPTR, Q_NULLPTR); onVisibilityChanged(nullptr, nullptr); } -- cgit v1.2.3 From 08f9a1bd6ab9b1777ee5ba163d75e5c848c39eb4 Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Tue, 10 Nov 2015 08:28:12 +0100 Subject: winrt: Fixed listening to tcp socket For some reason add_ConnectionReceived has to be called on the Xaml thread now. Otherwise the callback function won't be called and thus listening on a TCP socket won't work at all. Task-number: QTBUG-49121 Change-Id: I11ce2f72b0c1d3bb20e9579de5a2ce5150ca966a Reviewed-by: Andrew Knight Reviewed-by: Samuel Nevala Reviewed-by: Maurice Kalinowski --- src/network/socket/qnativesocketengine_winrt.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/network/socket/qnativesocketengine_winrt.cpp b/src/network/socket/qnativesocketengine_winrt.cpp index cfb950592f..e9fa227733 100644 --- a/src/network/socket/qnativesocketengine_winrt.cpp +++ b/src/network/socket/qnativesocketengine_winrt.cpp @@ -47,11 +47,13 @@ #include #include +#include #ifndef QT_NO_SSL #include #endif +#include #include #include #include @@ -315,9 +317,11 @@ bool QNativeSocketEngine::bind(const QHostAddress &address, quint16 port) Q_ASSERT_SUCCEEDED(hr); } - hr = d->tcpListener->add_ConnectionReceived( - Callback(d, &QNativeSocketEnginePrivate::handleClientConnection).Get(), - &d->connectionToken); + hr = QEventDispatcherWinRT::runOnXamlThread([d]() { + return d->tcpListener->add_ConnectionReceived( + Callback(d, &QNativeSocketEnginePrivate::handleClientConnection).Get(), + &d->connectionToken); + }); Q_ASSERT_SUCCEEDED(hr); hr = d->tcpListener->BindEndpointAsync(hostAddress.Get(), portString.Get(), &op); } else if (d->socketType == QAbstractSocket::UdpSocket) { -- cgit v1.2.3