From 563f62cba107a1af57ed31b69581e68c27b02729 Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Wed, 25 May 2022 22:37:55 +0200 Subject: [PATCH 01/28] Add Commenter feature --- CHANGELOG.md | 11 +++++++ .../editor/comments/AntlersCommenter.java | 32 +++++++++++++++++++ src/main/resources/META-INF/plugin.xml | 4 +++ 3 files changed, 47 insertions(+) create mode 100644 src/main/java/de/arrobait/antlers/editor/comments/AntlersCommenter.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 23e8f5e1..dda51fab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,18 @@ # Antlers Language Support Changelog ## [Unreleased] +### Added +- Support the IDEs Commenter feature -> `Code | Comment with Line Comment` + +### Changed + +### Deprecated + +### Removed + +### Fixed +## [0.0.1] - 2022-05-25 ### Added - Infrastructure - Initial scaffold created from [IntelliJ Platform Plugin Template](https://github.com/JetBrains/intellij-platform-plugin-template) diff --git a/src/main/java/de/arrobait/antlers/editor/comments/AntlersCommenter.java b/src/main/java/de/arrobait/antlers/editor/comments/AntlersCommenter.java new file mode 100644 index 00000000..4b36c615 --- /dev/null +++ b/src/main/java/de/arrobait/antlers/editor/comments/AntlersCommenter.java @@ -0,0 +1,32 @@ +package de.arrobait.antlers.editor.comments; + +import com.intellij.lang.Commenter; +import org.jetbrains.annotations.Nullable; + +public class AntlersCommenter implements Commenter { + + @Override + public @Nullable String getLineCommentPrefix() { + return null; + } + + @Override + public @Nullable String getBlockCommentPrefix() { + return "{{# "; + } + + @Override + public @Nullable String getBlockCommentSuffix() { + return " #}}"; + } + + @Override + public @Nullable String getCommentedBlockCommentPrefix() { + return null; + } + + @Override + public @Nullable String getCommentedBlockCommentSuffix() { + return null; + } +} diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 54e0ac57..3b712a42 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -41,6 +41,10 @@ + + + From 9a5efd819027afe45f195ba5c8a8134643459a33 Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Wed, 25 May 2022 22:39:46 +0200 Subject: [PATCH 02/28] Fix the publish token --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index b1ed8512..f2f3d344 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -134,7 +134,7 @@ tasks { publishPlugin { dependsOn("patchChangelog") - token.set(System.getenv("ANTLERS_LANGUAGE_SUPPORT_PUBLISH_TOKEN")) + token.set(System.getenv("PUBLISH_TOKEN")) // pluginVersion is based on the SemVer (https://semver.org) and supports pre-release labels, like 2.1.7-alpha.3 // Specify pre-release label to publish the plugin in a custom Release Channel automatically. Read more: // https://plugins.jetbrains.com/docs/intellij/deployment.html#specifying-a-release-channel From 79e9eacb91798b4a96c8f9e14f728537204c072a Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Fri, 27 May 2022 11:57:46 +0200 Subject: [PATCH 03/28] Define support for older version down to 2020.3 --- CHANGELOG.md | 5 +++-- gradle.properties | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dda51fab..fc66ec4f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,8 +4,9 @@ ## [Unreleased] ### Added -- Support the IDEs Commenter feature -> `Code | Comment with Line Comment` - +- Support the IDEs Commenter feature -> `Code | Comment with Line Comment` +- Add Support for older IDE versions down to 2020.3 + ### Changed ### Deprecated diff --git a/gradle.properties b/gradle.properties index 37711aac..023d1ebb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ pluginVersion = 0.0.1 # See https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html # for insight into build numbers and IntelliJ Platform versions. -pluginSinceBuild = 221 +pluginSinceBuild = 203 pluginUntilBuild = 221.* # IntelliJ Platform Properties -> https://github.com/JetBrains/gradle-intellij-plugin#intellij-platform-properties From a2113d8c3582d0437699861d555eb646a635e990 Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Mon, 30 May 2022 21:01:23 +0200 Subject: [PATCH 04/28] Make the comment shortcuts working correctly IDEs line or block comment functions did add a single whitespace before and after the the line when uncommenting it. This commit fixes this. --- CHANGELOG.md | 8 +++-- .../psi/impl/AntlersCommentBlockImpl.java | 4 +-- .../editor/comments/AntlersCommenter.java | 33 ++++++++++++++----- .../de/arrobait/antlers/grammar/Antlers.bnf | 2 ++ .../psi/mixins/AntlersCommentMixin.java | 19 +++++++++++ 5 files changed, 53 insertions(+), 13 deletions(-) create mode 100644 src/main/java/de/arrobait/antlers/psi/mixins/AntlersCommentMixin.java diff --git a/CHANGELOG.md b/CHANGELOG.md index fc66ec4f..f21ee1cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,10 +4,12 @@ ## [Unreleased] ### Added -- Support the IDEs Commenter feature -> `Code | Comment with Line Comment` -- Add Support for older IDE versions down to 2020.3 - +- Support commenting code + - `Code | Comment with Line Comment` + - `Code | Comment with Block Comment` + ### Changed +- Add support for older IDE versions down to 2020.3 ### Deprecated diff --git a/src/main/gen/de/arrobait/antlers/psi/impl/AntlersCommentBlockImpl.java b/src/main/gen/de/arrobait/antlers/psi/impl/AntlersCommentBlockImpl.java index 0109970e..9e715cd1 100644 --- a/src/main/gen/de/arrobait/antlers/psi/impl/AntlersCommentBlockImpl.java +++ b/src/main/gen/de/arrobait/antlers/psi/impl/AntlersCommentBlockImpl.java @@ -8,10 +8,10 @@ import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.util.PsiTreeUtil; import static de.arrobait.antlers.psi.AntlersTypes.*; -import com.intellij.extapi.psi.ASTWrapperPsiElement; +import de.arrobait.antlers.psi.mixins.AntlersCommentMixin; import de.arrobait.antlers.psi.*; -public class AntlersCommentBlockImpl extends ASTWrapperPsiElement implements AntlersCommentBlock { +public class AntlersCommentBlockImpl extends AntlersCommentMixin implements AntlersCommentBlock { public AntlersCommentBlockImpl(@NotNull ASTNode node) { super(node); diff --git a/src/main/java/de/arrobait/antlers/editor/comments/AntlersCommenter.java b/src/main/java/de/arrobait/antlers/editor/comments/AntlersCommenter.java index 4b36c615..94b73e69 100644 --- a/src/main/java/de/arrobait/antlers/editor/comments/AntlersCommenter.java +++ b/src/main/java/de/arrobait/antlers/editor/comments/AntlersCommenter.java @@ -1,32 +1,49 @@ package de.arrobait.antlers.editor.comments; -import com.intellij.lang.Commenter; +import com.intellij.codeInsight.generation.CommenterWithLineSuffix; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class AntlersCommenter implements Commenter { +public class AntlersCommenter implements CommenterWithLineSuffix { @Override - public @Nullable String getLineCommentPrefix() { - return null; + @Nullable + public String getLineCommentPrefix() { + return "{{# "; } @Override - public @Nullable String getBlockCommentPrefix() { + @NotNull + public String getLineCommentSuffix() { + return " #}}"; + } + + @Override + @Nullable + public String getBlockCommentPrefix() { return "{{# "; } @Override - public @Nullable String getBlockCommentSuffix() { + @Nullable + public String getBlockCommentSuffix() { return " #}}"; } @Override - public @Nullable String getCommentedBlockCommentPrefix() { + @Nullable + public String getCommentedBlockCommentPrefix() { return null; } @Override - public @Nullable String getCommentedBlockCommentSuffix() { + @Nullable + public String getCommentedBlockCommentSuffix() { return null; } + + @Override + public boolean blockCommentRequiresFullLineSelection() { + return true; + } } diff --git a/src/main/java/de/arrobait/antlers/grammar/Antlers.bnf b/src/main/java/de/arrobait/antlers/grammar/Antlers.bnf index cf2553b9..29bb9710 100644 --- a/src/main/java/de/arrobait/antlers/grammar/Antlers.bnf +++ b/src/main/java/de/arrobait/antlers/grammar/Antlers.bnf @@ -13,6 +13,8 @@ elementTypeClass="de.arrobait.antlers.psi.AntlersElementType" tokenTypeClass="de.arrobait.antlers.psi.AntlersTokenType" + mixin("comment_block")="de.arrobait.antlers.psi.mixins.AntlersCommentMixin" + tokens = [ T_COMMENT_OPEN='{{#' T_COMMENT_CLOSE='#}}' diff --git a/src/main/java/de/arrobait/antlers/psi/mixins/AntlersCommentMixin.java b/src/main/java/de/arrobait/antlers/psi/mixins/AntlersCommentMixin.java new file mode 100644 index 00000000..913b32be --- /dev/null +++ b/src/main/java/de/arrobait/antlers/psi/mixins/AntlersCommentMixin.java @@ -0,0 +1,19 @@ +package de.arrobait.antlers.psi.mixins; + +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiComment; +import com.intellij.psi.tree.IElementType; +import org.jetbrains.annotations.NotNull; + +abstract public class AntlersCommentMixin extends ASTWrapperPsiElement implements PsiComment { + public AntlersCommentMixin(@NotNull ASTNode node) { + super(node); + } + + @Override + @NotNull + public IElementType getTokenType() { + return getNode().getElementType(); + } +} From 30e0e9f0eeaf218505ad4a295384ff09aef324d8 Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Mon, 30 May 2022 21:15:02 +0200 Subject: [PATCH 05/28] Remove double empty line --- src/test/java/de/arrobait/antlers/lexer/LogicalLexerTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/de/arrobait/antlers/lexer/LogicalLexerTest.java b/src/test/java/de/arrobait/antlers/lexer/LogicalLexerTest.java index 09165fee..52d2a3a8 100644 --- a/src/test/java/de/arrobait/antlers/lexer/LogicalLexerTest.java +++ b/src/test/java/de/arrobait/antlers/lexer/LogicalLexerTest.java @@ -11,7 +11,6 @@ public LogicalLexerTest() { super(new AntlersLexerAdapter()); } - @Test public void lex_and_expression() { givenInput("{{ 10 && 20 }}"); From 6700ccd35cbf6d565aa9c62bebdae6014775f8f7 Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Mon, 30 May 2022 21:18:17 +0200 Subject: [PATCH 06/28] Fix alignment in JFlex file --- .../antlers/grammar/AntlersLexer.java | 3647 +++++++++-------- .../antlers/grammar/AntlersLexer.flex | 102 +- 2 files changed, 1878 insertions(+), 1871 deletions(-) diff --git a/src/main/gen/de/arrobait/antlers/grammar/AntlersLexer.java b/src/main/gen/de/arrobait/antlers/grammar/AntlersLexer.java index 90132e44..417f16af 100644 --- a/src/main/gen/de/arrobait/antlers/grammar/AntlersLexer.java +++ b/src/main/gen/de/arrobait/antlers/grammar/AntlersLexer.java @@ -100,39 +100,39 @@ public static int ZZ_CMAP(int ch) { "\1\14\1\16\1\17\2\15\1\3\1\20\1\21\1\22"+ "\1\23\1\24\1\4\1\25\1\26\1\3\1\27\1\30"+ "\1\31\1\32\1\33\1\34\1\35\1\36\1\14\2\15"+ - "\1\37\1\40\1\2\25\14\1\40\1\41\1\42\1\43"+ - "\1\10\22\14\1\44\1\45\1\42\1\46\1\47\1\7"+ - "\1\11\1\14\1\50\1\14\1\51\1\3\1\52\5\3"+ - "\1\53\3\0\1\54\1\55\2\0\1\56\1\57\1\60"+ - "\1\14\1\61\1\62\26\14\1\62\1\63\11\14\1\64"+ - "\11\14\2\0\1\14\1\65\23\0\1\15\1\0\1\66"+ - "\1\67\1\0\1\70\1\64\1\71\1\72\1\73\1\74"+ - "\1\75\1\76\1\77\1\100\1\14\1\101\1\14\1\101"+ - "\111\14\1\102\21\14\1\102\16\14\1\0\1\103\1\14"+ - "\11\0\1\14\1\0\1\104\7\0\1\105\1\106\1\107"+ - "\1\0\1\110\1\111\1\0\1\112\1\14\1\75\1\62"+ - "\56\14\1\113\1\66\1\0\1\14\1\0\1\62\21\0"+ - "\1\62\17\0\1\62\1\0\1\114\1\115\1\101\51\14"+ - "\1\101\5\14\1\101\42\14\1\101\60\14\1\102\1\14"+ - "\2\0\1\116\7\0\2\116\1\0\1\14\1\0\1\117"+ - "\1\0\1\120\1\121\1\0\5\14\1\122\2\14\1\123"+ - "\15\14\1\124\2\14\1\125\5\14\1\62\6\14\44\0"+ - "\77\14\1\125\60\14\1\102\4\14\7\0\1\116\5\0"+ - "\1\14\1\126\1\0\5\14\1\111\2\14\1\127\2\14"+ - "\1\130\6\14\1\62\10\14\1\131\1\132\23\0\1\62"+ - "\4\0\67\14\1\101\11\14\1\132\16\14\1\102\6\14"+ - "\16\0\1\14\1\0\2\14\1\62\1\14\1\133\15\14"+ - "\1\134\13\0\1\62\6\0\63\14\1\101\16\14\13\0"+ - "\1\14\1\135\1\14\1\136\1\14\1\137\5\14\1\140"+ - "\1\141\15\0\52\14\12\0\4\14\7\0\20\14\1\101"+ - "\1\14\1\101\12\14\11\0\1\14\1\135\1\14\3\0"+ - "\20\14\1\101\3\14\1\142\5\0\1\116\4\0\2\14"+ - "\1\0\1\143\15\14\13\0\7\14\10\0\5\14\6\0"+ - "\3\14\3\0\2\14\1\0\1\14\1\0\1\14\2\0"+ - "\1\144"; + "\1\37\1\2\25\14\1\36\1\40\1\41\1\42\1\10"+ + "\22\14\1\43\1\44\1\41\1\45\1\46\1\47\1\7"+ + "\1\11\1\14\1\50\1\51\1\14\1\52\1\3\1\53"+ + "\5\3\1\54\3\0\1\55\1\56\2\0\1\57\1\60"+ + "\1\61\1\14\1\62\1\63\26\14\1\63\1\64\11\14"+ + "\1\65\11\14\2\0\1\14\1\66\23\0\1\15\1\0"+ + "\1\67\1\70\1\0\1\71\1\65\1\72\1\73\1\74"+ + "\1\75\1\76\1\77\1\100\1\101\1\14\1\102\1\14"+ + "\1\102\111\14\1\103\21\14\1\103\16\14\1\0\1\104"+ + "\1\14\11\0\1\14\1\0\1\105\7\0\1\106\1\107"+ + "\1\110\1\0\1\111\1\112\1\0\1\113\1\14\1\76"+ + "\1\63\56\14\1\114\1\67\1\0\1\14\1\0\1\63"+ + "\21\0\1\63\17\0\1\63\1\0\1\115\1\116\1\102"+ + "\51\14\1\102\5\14\1\102\42\14\1\102\60\14\1\103"+ + "\1\14\2\0\1\117\7\0\2\117\1\0\1\14\1\0"+ + "\1\120\1\0\1\121\1\122\1\0\5\14\1\123\2\14"+ + "\1\124\15\14\1\125\2\14\1\126\5\14\1\63\6\14"+ + "\44\0\77\14\1\126\60\14\1\103\4\14\7\0\1\117"+ + "\5\0\1\14\1\127\1\0\5\14\1\112\2\14\1\130"+ + "\2\14\1\131\6\14\1\63\10\14\1\132\1\133\23\0"+ + "\1\63\4\0\67\14\1\102\11\14\1\133\16\14\1\103"+ + "\6\14\16\0\1\14\1\0\2\14\1\63\1\14\1\134"+ + "\15\14\1\135\13\0\1\63\6\0\63\14\1\102\16\14"+ + "\13\0\1\14\1\136\1\14\1\137\1\14\1\140\5\14"+ + "\1\141\1\142\15\0\52\14\12\0\4\14\7\0\20\14"+ + "\1\102\1\14\1\102\12\14\11\0\1\14\1\136\1\14"+ + "\3\0\20\14\1\102\3\14\1\143\5\0\1\117\4\0"+ + "\2\14\1\0\1\144\15\14\13\0\7\14\10\0\5\14"+ + "\6\0\3\14\3\0\2\14\1\0\1\14\1\0\1\14"+ + "\2\0\1\145"; private static int [] zzUnpackAction() { - int [] result = new int[1330]; + int [] result = new int[1331]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -166,167 +166,167 @@ private static int zzUnpackAction(String packed, int offset, int [] result) { "\0\u0b2c\0\u0b6d\0\u0492\0\u0bae\0\u0bef\0\u0c30\0\u0c71\0\u0cb2"+ "\0\u0cf3\0\u0492\0\u0d34\0\u0492\0\u0d75\0\u0492\0\u0db6\0\u0492"+ "\0\u0492\0\u0df7\0\u0e38\0\u0492\0\u0492\0\u0e79\0\u0492\0\u0eba"+ - "\0\u0efb\0\u0492\0\u0492\0\u0492\0\u0f3c\0\u0f7d\0\u0fbe\0\u0fff"+ - "\0\u1040\0\u1081\0\u10c2\0\u1103\0\u1144\0\u1185\0\u11c6\0\u1207"+ - "\0\u1248\0\u1289\0\u12ca\0\u130b\0\u134c\0\u138d\0\u13ce\0\u140f"+ - "\0\u1450\0\u1491\0\u0c30\0\u0492\0\u0492\0\u14d2\0\u0492\0\u1513"+ - "\0\u1554\0\u1595\0\u15d6\0\u1617\0\u1658\0\u1699\0\u16da\0\u171b"+ - "\0\u175c\0\u179d\0\u17de\0\u181f\0\u1860\0\u18a1\0\u18e2\0\u1923"+ - "\0\u1964\0\u0492\0\u0492\0\u19a5\0\u19e6\0\u0492\0\u1a27\0\u0492"+ - "\0\u1a68\0\u1aa9\0\u1aea\0\u0492\0\u1b2b\0\u0492\0\u1b6c\0\u1bad"+ - "\0\u1bee\0\u1c2f\0\u1c70\0\u1cb1\0\u0410\0\u1cf2\0\u1d33\0\u0492"+ - "\0\u0492\0\u1d74\0\u1db5\0\u1df6\0\u0492\0\u1e37\0\u1e78\0\u0492"+ - "\0\u1eb9\0\u1efa\0\u1f3b\0\u1f7c\0\u1fbd\0\u1ffe\0\u203f\0\u2080"+ - "\0\u20c1\0\u2102\0\u2143\0\u2184\0\u21c5\0\u2206\0\u2247\0\u2288"+ - "\0\u22c9\0\u230a\0\u234b\0\u238c\0\u23cd\0\u240e\0\u244f\0\u2490"+ - "\0\u0659\0\u24d1\0\u2512\0\u2553\0\u2594\0\u25d5\0\u2616\0\u2657"+ - "\0\u2698\0\u26d9\0\u271a\0\u275b\0\u279c\0\u27dd\0\u281e\0\u285f"+ - "\0\u28a0\0\u28e1\0\u2922\0\u2963\0\u29a4\0\u0c30\0\u29e5\0\u0492"+ - "\0\u2a26\0\u2a67\0\u2aa8\0\u2ae9\0\u2b2a\0\u2b6b\0\u2bac\0\u2bed"+ - "\0\u2c2e\0\u2c6f\0\u2cb0\0\u2cf1\0\u2d32\0\u2d73\0\u2db4\0\u2df5"+ - "\0\u2e36\0\u2e77\0\u2eb8\0\u2ef9\0\u0bef\0\u2f3a\0\u0492\0\u2f7b"+ - "\0\u0492\0\u0492\0\u0492\0\u0492\0\u0492\0\u0492\0\u0492\0\u0492"+ - "\0\u2fbc\0\u2ffd\0\u303e\0\u307f\0\u30c0\0\u0eba\0\u3101\0\u3142"+ - "\0\u3183\0\u31c4\0\u3205\0\u3246\0\u3287\0\u32c8\0\u3309\0\u334a"+ - "\0\u338b\0\u33cc\0\u340d\0\u344e\0\u348f\0\u34d0\0\u3511\0\u3552"+ - "\0\u3593\0\u35d4\0\u3615\0\u3656\0\u3697\0\u36d8\0\u3719\0\u375a"+ - "\0\u379b\0\u37dc\0\u381d\0\u385e\0\u389f\0\u38e0\0\u3921\0\u3962"+ - "\0\u39a3\0\u39e4\0\u3a25\0\u3a66\0\u3aa7\0\u3ae8\0\u3b29\0\u3b6a"+ - "\0\u3bab\0\u3bec\0\u3c2d\0\u3c6e\0\u3caf\0\u3cf0\0\u3d31\0\u3d72"+ - "\0\u3db3\0\u3df4\0\u3e35\0\u3e76\0\u3eb7\0\u3ef8\0\u3f39\0\u3f7a"+ - "\0\u3fbb\0\u3ffc\0\u403d\0\u407e\0\u40bf\0\u4100\0\u4141\0\u4182"+ - "\0\u41c3\0\u4204\0\u4245\0\u4286\0\u42c7\0\u4308\0\u4349\0\u0eba"+ - "\0\u438a\0\u43cb\0\u440c\0\u444d\0\u448e\0\u44cf\0\u4510\0\u4551"+ - "\0\u4592\0\u45d3\0\u4614\0\u4655\0\u4696\0\u46d7\0\u4718\0\u4759"+ - "\0\u479a\0\u47db\0\u481c\0\u485d\0\u489e\0\u48df\0\u4920\0\u4961"+ - "\0\u49a2\0\u49e3\0\u4a24\0\u4a65\0\u4aa6\0\u4ae7\0\u4b28\0\u4b69"+ - "\0\u4baa\0\u0492\0\u4beb\0\u4c2c\0\u4c6d\0\u4cae\0\u4cef\0\u4d30"+ - "\0\u4d71\0\u4db2\0\u4df3\0\u4e34\0\u4e75\0\u1b2b\0\u0492\0\u1b6c"+ - "\0\u1bad\0\u4eb6\0\u4ef7\0\u1c2f\0\u4f38\0\u4f79\0\u0492\0\u0492"+ - "\0\u0492\0\u4fba\0\u0492\0\u0492\0\u4ffb\0\u0492\0\u503c\0\u0659"+ - "\0\u0492\0\u507d\0\u50be\0\u50ff\0\u5140\0\u5181\0\u51c2\0\u5203"+ - "\0\u5244\0\u5285\0\u52c6\0\u5307\0\u5348\0\u5389\0\u53ca\0\u540b"+ - "\0\u544c\0\u548d\0\u54ce\0\u550f\0\u5550\0\u5591\0\u55d2\0\u5613"+ - "\0\u5654\0\u5695\0\u56d6\0\u5717\0\u5758\0\u5799\0\u57da\0\u581b"+ - "\0\u585c\0\u589d\0\u58de\0\u591f\0\u5960\0\u59a1\0\u59e2\0\u5a23"+ - "\0\u5a64\0\u5aa5\0\u5ae6\0\u5b27\0\u5b68\0\u5ba9\0\u5bea\0\u0659"+ - "\0\u5c2b\0\u5c2b\0\u5c6c\0\u5cad\0\u5cee\0\u5d2f\0\u5d70\0\u5db1"+ - "\0\u5df2\0\u5e33\0\u5e74\0\u5eb5\0\u5ef6\0\u5f37\0\u5f78\0\u5fb9"+ - "\0\u5ffa\0\u603b\0\u607c\0\u60bd\0\u60fe\0\u613f\0\u6180\0\u61c1"+ - "\0\u6202\0\u6243\0\u6284\0\u62c5\0\u6306\0\u6347\0\u6388\0\u63c9"+ - "\0\u640a\0\u644b\0\u648c\0\u64cd\0\u650e\0\u654f\0\u6590\0\u65d1"+ - "\0\u0492\0\u0492\0\u6612\0\u6653\0\u6694\0\u66d5\0\u6716\0\u6757"+ - "\0\u6798\0\u67d9\0\u681a\0\u685b\0\u689c\0\u68dd\0\u691e\0\u695f"+ - "\0\u69a0\0\u69e1\0\u6a22\0\u6a63\0\u6aa4\0\u6ae5\0\u6b26\0\u6b67"+ - "\0\u6ba8\0\u6be9\0\u6c2a\0\u6c6b\0\u6cac\0\u6ced\0\u6d2e\0\u6d6f"+ - "\0\u6db0\0\u6df1\0\u6e32\0\u6e73\0\u6eb4\0\u6ef5\0\u6f36\0\u6f77"+ - "\0\u6fb8\0\u6ff9\0\u703a\0\u707b\0\u70bc\0\u70fd\0\u713e\0\u717f"+ - "\0\u71c0\0\u7201\0\u7242\0\u7283\0\u72c4\0\u7305\0\u7346\0\u7387"+ - "\0\u73c8\0\u7409\0\u744a\0\u748b\0\u74cc\0\u750d\0\u754e\0\u758f"+ - "\0\u75d0\0\u7611\0\u7652\0\u7693\0\u76d4\0\u7715\0\u7756\0\u7797"+ - "\0\u77d8\0\u7819\0\u785a\0\u789b\0\u78dc\0\u791d\0\u795e\0\u799f"+ - "\0\u79e0\0\u7a21\0\u7a62\0\u7aa3\0\u7ae4\0\u7b25\0\u7b66\0\u7ba7"+ - "\0\u7be8\0\u7c29\0\u7c6a\0\u7cab\0\u7cec\0\u7d2d\0\u7d6e\0\u7daf"+ - "\0\u7df0\0\u7e31\0\u7e72\0\u7eb3\0\u7ef4\0\u7f35\0\u7f76\0\u7fb7"+ - "\0\u7ff8\0\u8039\0\u807a\0\u80bb\0\u80fc\0\u813d\0\u817e\0\u81bf"+ - "\0\u8200\0\u8241\0\u8282\0\u82c3\0\u8304\0\u8345\0\u8386\0\u83c7"+ - "\0\u8408\0\u8449\0\u848a\0\u84cb\0\u850c\0\u854d\0\u858e\0\u85cf"+ - "\0\u8610\0\u8651\0\u8692\0\u86d3\0\u8714\0\u8755\0\u0492\0\u8796"+ - "\0\u87d7\0\u8818\0\u8859\0\u889a\0\u88db\0\u891c\0\u895d\0\u899e"+ - "\0\u89df\0\u8a20\0\u8a61\0\u0492\0\u8aa2\0\u8ae3\0\u8b24\0\u0492"+ - "\0\u8b65\0\u0492\0\u0492\0\u8ba6\0\u8be7\0\u8c28\0\u8c69\0\u8caa"+ - "\0\u8ceb\0\u0659\0\u8d2c\0\u8d6d\0\u8dae\0\u8def\0\u8e30\0\u8e71"+ - "\0\u8eb2\0\u8ef3\0\u8f34\0\u8f75\0\u8fb6\0\u8ff7\0\u9038\0\u9079"+ - "\0\u90ba\0\u90fb\0\u0659\0\u913c\0\u917d\0\u0659\0\u91be\0\u91ff"+ - "\0\u9240\0\u9281\0\u92c2\0\u9303\0\u9344\0\u9385\0\u93c6\0\u9407"+ - "\0\u9448\0\u9489\0\u94ca\0\u950b\0\u954c\0\u958d\0\u95ce\0\u960f"+ - "\0\u9650\0\u9691\0\u96d2\0\u9713\0\u9754\0\u9795\0\u97d6\0\u9817"+ - "\0\u9858\0\u9899\0\u98da\0\u991b\0\u995c\0\u999d\0\u99de\0\u9a1f"+ - "\0\u9a60\0\u9aa1\0\u9ae2\0\u9b23\0\u9b64\0\u9ba5\0\u9be6\0\u9c27"+ - "\0\u9c68\0\u9ca9\0\u9cea\0\u9d2b\0\u9d6c\0\u9dad\0\u9dee\0\u9e2f"+ - "\0\u9e70\0\u9eb1\0\u9ef2\0\u9f33\0\u9f74\0\u9fb5\0\u9ff6\0\ua037"+ - "\0\ua078\0\ua0b9\0\ua0fa\0\ua13b\0\ua17c\0\ua1bd\0\ua1fe\0\ua23f"+ - "\0\ua280\0\ua2c1\0\ua302\0\ua343\0\ua384\0\ua3c5\0\ua406\0\ua447"+ - "\0\ua488\0\ua4c9\0\ua50a\0\ua54b\0\ua58c\0\ua5cd\0\ua60e\0\ua64f"+ - "\0\ua690\0\ua6d1\0\ua712\0\ua753\0\ua794\0\ua7d5\0\ua816\0\ua857"+ - "\0\ua898\0\ua8d9\0\ua91a\0\ua95b\0\ua99c\0\ua9dd\0\uaa1e\0\uaa5f"+ - "\0\uaaa0\0\uaae1\0\uab22\0\uab63\0\uaba4\0\uabe5\0\uac26\0\uac67"+ - "\0\uaca8\0\uace9\0\uad2a\0\uad6b\0\uadac\0\u0eba\0\uaded\0\uae2e"+ - "\0\uae6f\0\uaeb0\0\uaef1\0\uaf32\0\uaf73\0\uafb4\0\uaff5\0\ub036"+ - "\0\ub077\0\ub0b8\0\ub0f9\0\ub13a\0\ub17b\0\ub1bc\0\ub1fd\0\ub23e"+ - "\0\ub27f\0\ub2c0\0\ub301\0\ub342\0\ub383\0\ub3c4\0\ub405\0\ub446"+ - "\0\ub487\0\ub4c8\0\ub509\0\ub54a\0\ub58b\0\ub5cc\0\ub60d\0\ub64e"+ - "\0\ub68f\0\ub6d0\0\ub711\0\ub752\0\ub793\0\ub7d4\0\ub815\0\ub856"+ - "\0\ub897\0\ub8d8\0\ub919\0\ub95a\0\ub99b\0\ub9dc\0\uba1d\0\uba5e"+ - "\0\uba9f\0\ubae0\0\ubb21\0\ubb62\0\ubba3\0\ubbe4\0\ubc25\0\ubc66"+ - "\0\ubca7\0\ubce8\0\ubd29\0\ubd6a\0\ubdab\0\ubdec\0\ube2d\0\ube6e"+ - "\0\ubeaf\0\u0492\0\ubef0\0\ubf31\0\ubf72\0\ubfb3\0\ubff4\0\uc035"+ - "\0\u0659\0\uc076\0\uc0b7\0\u0659\0\uc0f8\0\uc139\0\u0659\0\uc17a"+ - "\0\uc1bb\0\uc1fc\0\uc23d\0\uc27e\0\uc2bf\0\uc300\0\uc341\0\uc382"+ - "\0\uc3c3\0\uc404\0\uc445\0\uc486\0\uc4c7\0\uc508\0\u0659\0\u0659"+ - "\0\uc549\0\uc58a\0\uc5cb\0\uc60c\0\uc64d\0\uc68e\0\uc6cf\0\uc710"+ - "\0\uc751\0\uc792\0\uc7d3\0\uc814\0\uc855\0\uc896\0\uc8d7\0\uc918"+ - "\0\uc959\0\uc99a\0\uc9db\0\uca1c\0\uca5d\0\uca9e\0\ucadf\0\ucb20"+ - "\0\ucb61\0\ucba2\0\ucbe3\0\ucc24\0\ucc65\0\ucca6\0\ucce7\0\ucd28"+ - "\0\ucd69\0\ucdaa\0\ucdeb\0\uce2c\0\uce6d\0\uceae\0\uceef\0\ucf30"+ - "\0\ucf71\0\ucfb2\0\ucff3\0\ud034\0\ud075\0\ud0b6\0\ud0f7\0\ud138"+ - "\0\ud179\0\ud1ba\0\ud1fb\0\ud23c\0\ud27d\0\ud2be\0\ud2ff\0\ud340"+ - "\0\ud381\0\ud3c2\0\ud403\0\ud444\0\ud485\0\ud4c6\0\ud507\0\ud548"+ - "\0\ud589\0\ud5ca\0\ud60b\0\ud64c\0\ud68d\0\ud6ce\0\ud70f\0\ud750"+ - "\0\ud791\0\ud7d2\0\ud813\0\ud854\0\ud895\0\ud8d6\0\ud917\0\ud958"+ - "\0\ud999\0\ud9da\0\uda1b\0\uda5c\0\uda9d\0\udade\0\udb1f\0\udb60"+ - "\0\udba1\0\u0eba\0\udbe2\0\udc23\0\udc64\0\udca5\0\udce6\0\udd27"+ - "\0\udd68\0\udda9\0\uddea\0\ude2b\0\ude6c\0\udead\0\udeee\0\udf2f"+ - "\0\udf70\0\udfb1\0\udff2\0\ue033\0\ue074\0\ue0b5\0\ue0f6\0\ue137"+ - "\0\ue178\0\ue1b9\0\ue1fa\0\ue23b\0\ue27c\0\ue2bd\0\ue2fe\0\ue33f"+ - "\0\ue380\0\ue3c1\0\ue402\0\ue443\0\ue484\0\ue4c5\0\ue506\0\ue547"+ - "\0\ue588\0\ue5c9\0\ue60a\0\u0659\0\ue64b\0\ue68c\0\ue6cd\0\ue70e"+ - "\0\ue74f\0\ue790\0\ue7d1\0\ue812\0\ue853\0\ue894\0\ue8d5\0\ue916"+ - "\0\ue957\0\u0659\0\ue998\0\ue9d9\0\uea1a\0\uea5b\0\uea9c\0\ueadd"+ - "\0\ueb1e\0\ueb5f\0\ueba0\0\uebe1\0\uec22\0\uec63\0\ueca4\0\uece5"+ - "\0\ued26\0\ued67\0\ueda8\0\uede9\0\uee2a\0\uee6b\0\ueeac\0\ueeed"+ - "\0\uef2e\0\uef6f\0\uefb0\0\ueff1\0\uf032\0\uf073\0\uf0b4\0\uf0f5"+ - "\0\uf136\0\uf177\0\uf1b8\0\uf1f9\0\uf23a\0\uf27b\0\uf2bc\0\uf2fd"+ - "\0\uf33e\0\uf37f\0\uf3c0\0\uf401\0\uf442\0\uf483\0\uf4c4\0\uf505"+ - "\0\uf546\0\uf587\0\uf5c8\0\uf609\0\uf64a\0\uf68b\0\uf6cc\0\uf70d"+ - "\0\uf74e\0\uf78f\0\uf7d0\0\uf811\0\uf852\0\uf893\0\uf8d4\0\uf915"+ - "\0\uf956\0\uf997\0\uf9d8\0\ufa19\0\ufa5a\0\ufa9b\0\ufadc\0\ufb1d"+ - "\0\ufb5e\0\ufb9f\0\ufbe0\0\uba1d\0\ufc21\0\ufc62\0\ufca3\0\ufce4"+ - "\0\ufd25\0\ufd66\0\ufda7\0\ufde8\0\ufe29\0\ufe6a\0\ufeab\0\ufeec"+ - "\0\uff2d\0\uff6e\0\uffaf\0\ufff0\1\61\1\162\1\263\1\364"+ - "\1\u0135\1\u0176\0\u0492\1\u01b7\0\u0492\1\u01f8\0\u0659\1\u0239"+ - "\1\u027a\1\u02bb\1\u02fc\1\u033d\0\u0659\0\u0659\1\u037e\1\u03bf"+ - "\1\u0400\1\u0441\1\u0482\1\u04c3\1\u0504\1\u0545\1\u0586\1\u05c7"+ - "\1\u0608\1\u0649\1\u068a\1\u06cb\1\u070c\1\u074d\1\u078e\1\u07cf"+ - "\1\u0810\1\u0851\1\u0892\1\u08d3\1\u0914\1\u0955\1\u0996\1\u09d7"+ - "\1\u0a18\1\u0a59\1\u0a9a\1\u0adb\1\u0b1c\1\u0b5d\1\u0b9e\1\u0bdf"+ - "\1\u0c20\1\u0c61\1\u0ca2\1\u0ce3\1\u0d24\1\u0d65\1\u0da6\1\u0de7"+ - "\1\u0e28\1\u0e69\1\u0eaa\1\u0eeb\1\u0f2c\1\u0f6d\1\u0fae\1\u0fef"+ - "\1\u1030\1\u1071\1\u10b2\1\u10f3\1\u1134\1\u1175\1\u11b6\1\u11f7"+ - "\1\u1238\1\u1279\1\u12ba\1\u12fb\1\u133c\1\u137d\1\u13be\1\u13ff"+ - "\1\u1440\1\u1481\1\u14c2\1\u1503\1\u1544\1\u1585\1\u15c6\1\u1607"+ - "\1\u1648\1\u1689\1\u16ca\1\u170b\1\u174c\1\u178d\1\u17ce\1\u180f"+ - "\1\u1850\1\u1891\1\u18d2\1\u1913\1\u1954\1\u1995\1\u19d6\1\u1a17"+ - "\1\u1a58\1\u1a99\1\u1ada\1\u1b1b\1\u1b5c\1\u1b9d\1\u1bde\1\u1c1f"+ - "\1\u1c60\1\u1ca1\1\u1ce2\1\u1d23\1\u1d64\1\u1da5\1\u1de6\1\u1e27"+ - "\1\u1e68\1\u1ea9\1\u1eea\1\u1f2b\1\u1f6c\1\u1fad\1\u1fee\1\u202f"+ - "\1\u2070\0\u0659\1\u20b1\1\u20f2\1\u2133\1\u2174\1\u21b5\1\u21f6"+ - "\1\u2237\1\u2278\1\u22b9\1\u22fa\1\u233b\1\u237c\1\u23bd\1\u23fe"+ - "\1\u243f\1\u2480\1\u24c1\1\u2502\1\u2543\1\u2584\1\u25c5\1\u2606"+ - "\1\u2647\1\u2688\0\u0492\1\u26c9\1\u270a\1\u274b\1\u278c\1\u27cd"+ - "\1\u280e\1\u284f\1\u2890\1\u28d1\0\u8859\1\u2912\1\u2953\1\u2994"+ - "\0\u0492\1\u29d5\1\u2a16\1\u2a57\1\u2a98\1\u2ad9\1\u2b1a\1\u2b5b"+ - "\1\u2b9c\1\u2bdd\1\u2c1e\1\u2c5f\1\u2ca0\1\u2ce1\1\u2d22\1\u2d63"+ - "\1\u2da4\1\u2de5\1\u2e26\1\u2e67\1\u2ea8\1\u2ee9\1\u2f2a\1\u2f6b"+ - "\1\u2fac\1\u2fed\1\u302e\1\u306f\1\u30b0\1\u30f1\1\u3132\1\u3173"+ - "\1\u31b4\1\u31f5\1\u3236\1\u3277\1\u32b8\1\u32f9\1\u333a\1\u337b"+ - "\1\u33bc\1\u33fd\1\u343e\1\u347f\1\u34c0\1\u3501\1\u3542\1\u3583"+ - "\1\u35c4\1\u3605\1\u3646\1\u3687\1\u36c8\1\u3709\1\u374a\1\u378b"+ - "\1\u37cc\1\u380d\1\u384e\1\u388f\1\u38d0\1\u3911\1\u3952\1\u3993"+ - "\1\u39d4\0\u0492"; + "\0\u0efb\0\u0492\0\u0492\0\u0f3c\0\u0f7d\0\u0fbe\0\u0fff\0\u1040"+ + "\0\u1081\0\u10c2\0\u1103\0\u1144\0\u1185\0\u11c6\0\u1207\0\u1248"+ + "\0\u1289\0\u12ca\0\u130b\0\u134c\0\u138d\0\u13ce\0\u140f\0\u1450"+ + "\0\u1491\0\u0c30\0\u0492\0\u0492\0\u14d2\0\u0492\0\u1513\0\u1554"+ + "\0\u1595\0\u15d6\0\u1617\0\u1658\0\u1699\0\u16da\0\u171b\0\u175c"+ + "\0\u179d\0\u17de\0\u181f\0\u1860\0\u18a1\0\u18e2\0\u1923\0\u1964"+ + "\0\u0492\0\u0492\0\u19a5\0\u0492\0\u19e6\0\u0492\0\u1a27\0\u0492"+ + "\0\u1a68\0\u1aa9\0\u0492\0\u1aea\0\u0492\0\u1b2b\0\u0492\0\u1b6c"+ + "\0\u1bad\0\u1bee\0\u1c2f\0\u1c70\0\u1cb1\0\u0410\0\u1cf2\0\u1d33"+ + "\0\u0492\0\u0492\0\u1d74\0\u1db5\0\u1df6\0\u0492\0\u1e37\0\u1e78"+ + "\0\u0492\0\u1eb9\0\u1efa\0\u1f3b\0\u1f7c\0\u1fbd\0\u1ffe\0\u203f"+ + "\0\u2080\0\u20c1\0\u2102\0\u2143\0\u2184\0\u21c5\0\u2206\0\u2247"+ + "\0\u2288\0\u22c9\0\u230a\0\u234b\0\u238c\0\u23cd\0\u240e\0\u244f"+ + "\0\u2490\0\u0659\0\u24d1\0\u2512\0\u2553\0\u2594\0\u25d5\0\u2616"+ + "\0\u2657\0\u2698\0\u26d9\0\u271a\0\u275b\0\u279c\0\u27dd\0\u281e"+ + "\0\u285f\0\u28a0\0\u28e1\0\u2922\0\u2963\0\u29a4\0\u0c30\0\u29e5"+ + "\0\u0492\0\u2a26\0\u2a67\0\u2aa8\0\u2ae9\0\u2b2a\0\u2b6b\0\u2bac"+ + "\0\u2bed\0\u2c2e\0\u2c6f\0\u2cb0\0\u2cf1\0\u2d32\0\u2d73\0\u2db4"+ + "\0\u2df5\0\u2e36\0\u2e77\0\u2eb8\0\u2ef9\0\u0bef\0\u2f3a\0\u0492"+ + "\0\u2f7b\0\u0492\0\u0492\0\u0492\0\u0492\0\u0492\0\u0492\0\u0492"+ + "\0\u0492\0\u2fbc\0\u2ffd\0\u303e\0\u307f\0\u30c0\0\u0eba\0\u3101"+ + "\0\u3142\0\u3183\0\u31c4\0\u3205\0\u3246\0\u3287\0\u32c8\0\u3309"+ + "\0\u334a\0\u338b\0\u33cc\0\u340d\0\u344e\0\u348f\0\u34d0\0\u3511"+ + "\0\u3552\0\u3593\0\u35d4\0\u3615\0\u3656\0\u3697\0\u36d8\0\u3719"+ + "\0\u375a\0\u379b\0\u37dc\0\u381d\0\u385e\0\u389f\0\u38e0\0\u3921"+ + "\0\u3962\0\u39a3\0\u39e4\0\u3a25\0\u3a66\0\u3aa7\0\u3ae8\0\u3b29"+ + "\0\u3b6a\0\u3bab\0\u3bec\0\u3c2d\0\u3c6e\0\u3caf\0\u3cf0\0\u3d31"+ + "\0\u3d72\0\u3db3\0\u3df4\0\u3e35\0\u3e76\0\u3eb7\0\u3ef8\0\u3f39"+ + "\0\u3f7a\0\u3fbb\0\u3ffc\0\u403d\0\u407e\0\u40bf\0\u4100\0\u4141"+ + "\0\u4182\0\u41c3\0\u4204\0\u4245\0\u4286\0\u42c7\0\u4308\0\u4349"+ + "\0\u0eba\0\u438a\0\u43cb\0\u440c\0\u444d\0\u448e\0\u44cf\0\u4510"+ + "\0\u4551\0\u4592\0\u45d3\0\u4614\0\u4655\0\u4696\0\u46d7\0\u4718"+ + "\0\u4759\0\u479a\0\u47db\0\u481c\0\u485d\0\u489e\0\u48df\0\u4920"+ + "\0\u4961\0\u49a2\0\u49e3\0\u4a24\0\u4a65\0\u4aa6\0\u4ae7\0\u4b28"+ + "\0\u4b69\0\u4baa\0\u0492\0\u4beb\0\u4c2c\0\u4c6d\0\u4cae\0\u4cef"+ + "\0\u4d30\0\u4d71\0\u4db2\0\u4df3\0\u4e34\0\u4e75\0\u1b2b\0\u0492"+ + "\0\u1b6c\0\u1bad\0\u4eb6\0\u4ef7\0\u1c2f\0\u4f38\0\u4f79\0\u0492"+ + "\0\u0492\0\u0492\0\u4fba\0\u0492\0\u0492\0\u4ffb\0\u0492\0\u503c"+ + "\0\u0659\0\u0492\0\u507d\0\u50be\0\u50ff\0\u5140\0\u5181\0\u51c2"+ + "\0\u5203\0\u5244\0\u5285\0\u52c6\0\u5307\0\u5348\0\u5389\0\u53ca"+ + "\0\u540b\0\u544c\0\u548d\0\u54ce\0\u550f\0\u5550\0\u5591\0\u55d2"+ + "\0\u5613\0\u5654\0\u5695\0\u56d6\0\u5717\0\u5758\0\u5799\0\u57da"+ + "\0\u581b\0\u585c\0\u589d\0\u58de\0\u591f\0\u5960\0\u59a1\0\u59e2"+ + "\0\u5a23\0\u5a64\0\u5aa5\0\u5ae6\0\u5b27\0\u5b68\0\u5ba9\0\u5bea"+ + "\0\u0659\0\u5c2b\0\u5c2b\0\u5c6c\0\u5cad\0\u5cee\0\u5d2f\0\u5d70"+ + "\0\u5db1\0\u5df2\0\u5e33\0\u5e74\0\u5eb5\0\u5ef6\0\u5f37\0\u5f78"+ + "\0\u5fb9\0\u5ffa\0\u603b\0\u607c\0\u60bd\0\u60fe\0\u613f\0\u6180"+ + "\0\u61c1\0\u6202\0\u6243\0\u6284\0\u62c5\0\u6306\0\u6347\0\u6388"+ + "\0\u63c9\0\u640a\0\u644b\0\u648c\0\u64cd\0\u650e\0\u654f\0\u6590"+ + "\0\u65d1\0\u0492\0\u0492\0\u6612\0\u6653\0\u6694\0\u66d5\0\u6716"+ + "\0\u6757\0\u6798\0\u67d9\0\u681a\0\u685b\0\u689c\0\u68dd\0\u691e"+ + "\0\u695f\0\u69a0\0\u69e1\0\u6a22\0\u6a63\0\u6aa4\0\u6ae5\0\u6b26"+ + "\0\u6b67\0\u6ba8\0\u6be9\0\u6c2a\0\u6c6b\0\u6cac\0\u6ced\0\u6d2e"+ + "\0\u6d6f\0\u6db0\0\u6df1\0\u6e32\0\u6e73\0\u6eb4\0\u6ef5\0\u6f36"+ + "\0\u6f77\0\u6fb8\0\u6ff9\0\u703a\0\u707b\0\u70bc\0\u70fd\0\u713e"+ + "\0\u717f\0\u71c0\0\u7201\0\u7242\0\u7283\0\u72c4\0\u7305\0\u7346"+ + "\0\u7387\0\u73c8\0\u7409\0\u744a\0\u748b\0\u74cc\0\u750d\0\u754e"+ + "\0\u758f\0\u75d0\0\u7611\0\u7652\0\u7693\0\u76d4\0\u7715\0\u7756"+ + "\0\u7797\0\u77d8\0\u7819\0\u785a\0\u789b\0\u78dc\0\u791d\0\u795e"+ + "\0\u799f\0\u79e0\0\u7a21\0\u7a62\0\u7aa3\0\u7ae4\0\u7b25\0\u7b66"+ + "\0\u7ba7\0\u7be8\0\u7c29\0\u7c6a\0\u7cab\0\u7cec\0\u7d2d\0\u7d6e"+ + "\0\u7daf\0\u7df0\0\u7e31\0\u7e72\0\u7eb3\0\u7ef4\0\u7f35\0\u7f76"+ + "\0\u7fb7\0\u7ff8\0\u8039\0\u807a\0\u80bb\0\u80fc\0\u813d\0\u817e"+ + "\0\u81bf\0\u8200\0\u8241\0\u8282\0\u82c3\0\u8304\0\u8345\0\u8386"+ + "\0\u83c7\0\u8408\0\u8449\0\u848a\0\u84cb\0\u850c\0\u854d\0\u858e"+ + "\0\u85cf\0\u8610\0\u8651\0\u8692\0\u86d3\0\u8714\0\u8755\0\u0492"+ + "\0\u8796\0\u87d7\0\u8818\0\u8859\0\u889a\0\u88db\0\u891c\0\u895d"+ + "\0\u899e\0\u89df\0\u8a20\0\u8a61\0\u0492\0\u8aa2\0\u8ae3\0\u8b24"+ + "\0\u0492\0\u8b65\0\u0492\0\u0492\0\u8ba6\0\u8be7\0\u8c28\0\u8c69"+ + "\0\u8caa\0\u8ceb\0\u0659\0\u8d2c\0\u8d6d\0\u8dae\0\u8def\0\u8e30"+ + "\0\u8e71\0\u8eb2\0\u8ef3\0\u8f34\0\u8f75\0\u8fb6\0\u8ff7\0\u9038"+ + "\0\u9079\0\u90ba\0\u90fb\0\u0659\0\u913c\0\u917d\0\u0659\0\u91be"+ + "\0\u91ff\0\u9240\0\u9281\0\u92c2\0\u9303\0\u9344\0\u9385\0\u93c6"+ + "\0\u9407\0\u9448\0\u9489\0\u94ca\0\u950b\0\u954c\0\u958d\0\u95ce"+ + "\0\u960f\0\u9650\0\u9691\0\u96d2\0\u9713\0\u9754\0\u9795\0\u97d6"+ + "\0\u9817\0\u9858\0\u9899\0\u98da\0\u991b\0\u995c\0\u999d\0\u99de"+ + "\0\u9a1f\0\u9a60\0\u9aa1\0\u9ae2\0\u9b23\0\u9b64\0\u9ba5\0\u9be6"+ + "\0\u9c27\0\u9c68\0\u9ca9\0\u9cea\0\u9d2b\0\u9d6c\0\u9dad\0\u9dee"+ + "\0\u9e2f\0\u9e70\0\u9eb1\0\u9ef2\0\u9f33\0\u9f74\0\u9fb5\0\u9ff6"+ + "\0\ua037\0\ua078\0\ua0b9\0\ua0fa\0\ua13b\0\ua17c\0\ua1bd\0\ua1fe"+ + "\0\ua23f\0\ua280\0\ua2c1\0\ua302\0\ua343\0\ua384\0\ua3c5\0\ua406"+ + "\0\ua447\0\ua488\0\ua4c9\0\ua50a\0\ua54b\0\ua58c\0\ua5cd\0\ua60e"+ + "\0\ua64f\0\ua690\0\ua6d1\0\ua712\0\ua753\0\ua794\0\ua7d5\0\ua816"+ + "\0\ua857\0\ua898\0\ua8d9\0\ua91a\0\ua95b\0\ua99c\0\ua9dd\0\uaa1e"+ + "\0\uaa5f\0\uaaa0\0\uaae1\0\uab22\0\uab63\0\uaba4\0\uabe5\0\uac26"+ + "\0\uac67\0\uaca8\0\uace9\0\uad2a\0\uad6b\0\uadac\0\u0eba\0\uaded"+ + "\0\uae2e\0\uae6f\0\uaeb0\0\uaef1\0\uaf32\0\uaf73\0\uafb4\0\uaff5"+ + "\0\ub036\0\ub077\0\ub0b8\0\ub0f9\0\ub13a\0\ub17b\0\ub1bc\0\ub1fd"+ + "\0\ub23e\0\ub27f\0\ub2c0\0\ub301\0\ub342\0\ub383\0\ub3c4\0\ub405"+ + "\0\ub446\0\ub487\0\ub4c8\0\ub509\0\ub54a\0\ub58b\0\ub5cc\0\ub60d"+ + "\0\ub64e\0\ub68f\0\ub6d0\0\ub711\0\ub752\0\ub793\0\ub7d4\0\ub815"+ + "\0\ub856\0\ub897\0\ub8d8\0\ub919\0\ub95a\0\ub99b\0\ub9dc\0\uba1d"+ + "\0\uba5e\0\uba9f\0\ubae0\0\ubb21\0\ubb62\0\ubba3\0\ubbe4\0\ubc25"+ + "\0\ubc66\0\ubca7\0\ubce8\0\ubd29\0\ubd6a\0\ubdab\0\ubdec\0\ube2d"+ + "\0\ube6e\0\ubeaf\0\u0492\0\ubef0\0\ubf31\0\ubf72\0\ubfb3\0\ubff4"+ + "\0\uc035\0\u0659\0\uc076\0\uc0b7\0\u0659\0\uc0f8\0\uc139\0\u0659"+ + "\0\uc17a\0\uc1bb\0\uc1fc\0\uc23d\0\uc27e\0\uc2bf\0\uc300\0\uc341"+ + "\0\uc382\0\uc3c3\0\uc404\0\uc445\0\uc486\0\uc4c7\0\uc508\0\u0659"+ + "\0\u0659\0\uc549\0\uc58a\0\uc5cb\0\uc60c\0\uc64d\0\uc68e\0\uc6cf"+ + "\0\uc710\0\uc751\0\uc792\0\uc7d3\0\uc814\0\uc855\0\uc896\0\uc8d7"+ + "\0\uc918\0\uc959\0\uc99a\0\uc9db\0\uca1c\0\uca5d\0\uca9e\0\ucadf"+ + "\0\ucb20\0\ucb61\0\ucba2\0\ucbe3\0\ucc24\0\ucc65\0\ucca6\0\ucce7"+ + "\0\ucd28\0\ucd69\0\ucdaa\0\ucdeb\0\uce2c\0\uce6d\0\uceae\0\uceef"+ + "\0\ucf30\0\ucf71\0\ucfb2\0\ucff3\0\ud034\0\ud075\0\ud0b6\0\ud0f7"+ + "\0\ud138\0\ud179\0\ud1ba\0\ud1fb\0\ud23c\0\ud27d\0\ud2be\0\ud2ff"+ + "\0\ud340\0\ud381\0\ud3c2\0\ud403\0\ud444\0\ud485\0\ud4c6\0\ud507"+ + "\0\ud548\0\ud589\0\ud5ca\0\ud60b\0\ud64c\0\ud68d\0\ud6ce\0\ud70f"+ + "\0\ud750\0\ud791\0\ud7d2\0\ud813\0\ud854\0\ud895\0\ud8d6\0\ud917"+ + "\0\ud958\0\ud999\0\ud9da\0\uda1b\0\uda5c\0\uda9d\0\udade\0\udb1f"+ + "\0\udb60\0\udba1\0\u0eba\0\udbe2\0\udc23\0\udc64\0\udca5\0\udce6"+ + "\0\udd27\0\udd68\0\udda9\0\uddea\0\ude2b\0\ude6c\0\udead\0\udeee"+ + "\0\udf2f\0\udf70\0\udfb1\0\udff2\0\ue033\0\ue074\0\ue0b5\0\ue0f6"+ + "\0\ue137\0\ue178\0\ue1b9\0\ue1fa\0\ue23b\0\ue27c\0\ue2bd\0\ue2fe"+ + "\0\ue33f\0\ue380\0\ue3c1\0\ue402\0\ue443\0\ue484\0\ue4c5\0\ue506"+ + "\0\ue547\0\ue588\0\ue5c9\0\ue60a\0\u0659\0\ue64b\0\ue68c\0\ue6cd"+ + "\0\ue70e\0\ue74f\0\ue790\0\ue7d1\0\ue812\0\ue853\0\ue894\0\ue8d5"+ + "\0\ue916\0\ue957\0\u0659\0\ue998\0\ue9d9\0\uea1a\0\uea5b\0\uea9c"+ + "\0\ueadd\0\ueb1e\0\ueb5f\0\ueba0\0\uebe1\0\uec22\0\uec63\0\ueca4"+ + "\0\uece5\0\ued26\0\ued67\0\ueda8\0\uede9\0\uee2a\0\uee6b\0\ueeac"+ + "\0\ueeed\0\uef2e\0\uef6f\0\uefb0\0\ueff1\0\uf032\0\uf073\0\uf0b4"+ + "\0\uf0f5\0\uf136\0\uf177\0\uf1b8\0\uf1f9\0\uf23a\0\uf27b\0\uf2bc"+ + "\0\uf2fd\0\uf33e\0\uf37f\0\uf3c0\0\uf401\0\uf442\0\uf483\0\uf4c4"+ + "\0\uf505\0\uf546\0\uf587\0\uf5c8\0\uf609\0\uf64a\0\uf68b\0\uf6cc"+ + "\0\uf70d\0\uf74e\0\uf78f\0\uf7d0\0\uf811\0\uf852\0\uf893\0\uf8d4"+ + "\0\uf915\0\uf956\0\uf997\0\uf9d8\0\ufa19\0\ufa5a\0\ufa9b\0\ufadc"+ + "\0\ufb1d\0\ufb5e\0\ufb9f\0\ufbe0\0\uba1d\0\ufc21\0\ufc62\0\ufca3"+ + "\0\ufce4\0\ufd25\0\ufd66\0\ufda7\0\ufde8\0\ufe29\0\ufe6a\0\ufeab"+ + "\0\ufeec\0\uff2d\0\uff6e\0\uffaf\0\ufff0\1\61\1\162\1\263"+ + "\1\364\1\u0135\1\u0176\0\u0492\1\u01b7\0\u0492\1\u01f8\0\u0659"+ + "\1\u0239\1\u027a\1\u02bb\1\u02fc\1\u033d\0\u0659\0\u0659\1\u037e"+ + "\1\u03bf\1\u0400\1\u0441\1\u0482\1\u04c3\1\u0504\1\u0545\1\u0586"+ + "\1\u05c7\1\u0608\1\u0649\1\u068a\1\u06cb\1\u070c\1\u074d\1\u078e"+ + "\1\u07cf\1\u0810\1\u0851\1\u0892\1\u08d3\1\u0914\1\u0955\1\u0996"+ + "\1\u09d7\1\u0a18\1\u0a59\1\u0a9a\1\u0adb\1\u0b1c\1\u0b5d\1\u0b9e"+ + "\1\u0bdf\1\u0c20\1\u0c61\1\u0ca2\1\u0ce3\1\u0d24\1\u0d65\1\u0da6"+ + "\1\u0de7\1\u0e28\1\u0e69\1\u0eaa\1\u0eeb\1\u0f2c\1\u0f6d\1\u0fae"+ + "\1\u0fef\1\u1030\1\u1071\1\u10b2\1\u10f3\1\u1134\1\u1175\1\u11b6"+ + "\1\u11f7\1\u1238\1\u1279\1\u12ba\1\u12fb\1\u133c\1\u137d\1\u13be"+ + "\1\u13ff\1\u1440\1\u1481\1\u14c2\1\u1503\1\u1544\1\u1585\1\u15c6"+ + "\1\u1607\1\u1648\1\u1689\1\u16ca\1\u170b\1\u174c\1\u178d\1\u17ce"+ + "\1\u180f\1\u1850\1\u1891\1\u18d2\1\u1913\1\u1954\1\u1995\1\u19d6"+ + "\1\u1a17\1\u1a58\1\u1a99\1\u1ada\1\u1b1b\1\u1b5c\1\u1b9d\1\u1bde"+ + "\1\u1c1f\1\u1c60\1\u1ca1\1\u1ce2\1\u1d23\1\u1d64\1\u1da5\1\u1de6"+ + "\1\u1e27\1\u1e68\1\u1ea9\1\u1eea\1\u1f2b\1\u1f6c\1\u1fad\1\u1fee"+ + "\1\u202f\1\u2070\0\u0659\1\u20b1\1\u20f2\1\u2133\1\u2174\1\u21b5"+ + "\1\u21f6\1\u2237\1\u2278\1\u22b9\1\u22fa\1\u233b\1\u237c\1\u23bd"+ + "\1\u23fe\1\u243f\1\u2480\1\u24c1\1\u2502\1\u2543\1\u2584\1\u25c5"+ + "\1\u2606\1\u2647\1\u2688\0\u0492\1\u26c9\1\u270a\1\u274b\1\u278c"+ + "\1\u27cd\1\u280e\1\u284f\1\u2890\1\u28d1\0\u8859\1\u2912\1\u2953"+ + "\1\u2994\0\u0492\1\u29d5\1\u2a16\1\u2a57\1\u2a98\1\u2ad9\1\u2b1a"+ + "\1\u2b5b\1\u2b9c\1\u2bdd\1\u2c1e\1\u2c5f\1\u2ca0\1\u2ce1\1\u2d22"+ + "\1\u2d63\1\u2da4\1\u2de5\1\u2e26\1\u2e67\1\u2ea8\1\u2ee9\1\u2f2a"+ + "\1\u2f6b\1\u2fac\1\u2fed\1\u302e\1\u306f\1\u30b0\1\u30f1\1\u3132"+ + "\1\u3173\1\u31b4\1\u31f5\1\u3236\1\u3277\1\u32b8\1\u32f9\1\u333a"+ + "\1\u337b\1\u33bc\1\u33fd\1\u343e\1\u347f\1\u34c0\1\u3501\1\u3542"+ + "\1\u3583\1\u35c4\1\u3605\1\u3646\1\u3687\1\u36c8\1\u3709\1\u374a"+ + "\1\u378b\1\u37cc\1\u380d\1\u384e\1\u388f\1\u38d0\1\u3911\1\u3952"+ + "\1\u3993\1\u39d4\0\u0492"; private static int [] zzUnpackRowMap() { - int [] result = new int[1330]; + int [] result = new int[1331]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -360,1562 +360,1562 @@ private static int zzUnpackRowMap(String packed, int offset, int [] result) { "\1\77\1\100\1\101\1\102\1\103\1\104\1\105\1\106"+ "\1\25\7\107\1\32\1\33\32\110\2\111\1\110\1\107"+ "\1\63\1\111\1\112\1\110\1\113\2\107\1\110\1\107"+ - "\1\72\1\111\1\107\1\110\12\107\1\105\2\107\1\114"+ - "\1\115\5\114\1\32\1\33\1\116\1\117\1\110\1\120"+ + "\1\72\1\111\1\107\1\110\12\107\1\105\3\107\1\114"+ + "\5\107\1\32\1\33\1\115\1\116\1\110\1\117\1\120"+ "\1\121\1\122\1\123\1\124\1\125\1\126\1\127\1\130"+ - "\1\131\1\132\1\133\1\110\1\134\1\135\1\136\1\110"+ - "\1\137\1\140\1\141\2\110\1\142\2\60\1\110\2\114"+ - "\1\60\1\65\1\110\1\143\2\114\1\110\1\114\1\72"+ - "\1\60\1\114\1\110\3\114\1\76\1\114\1\100\3\114"+ - "\1\144\1\105\1\114\1\115\1\145\1\146\2\145\1\147"+ - "\4\145\1\150\1\151\1\110\1\152\1\153\2\110\1\154"+ - "\1\155\1\156\1\157\1\160\1\161\1\162\2\110\1\163"+ - "\1\164\1\165\1\110\1\166\1\167\1\170\3\110\2\145"+ - "\1\171\1\172\1\173\1\174\1\145\1\110\3\145\1\110"+ - "\4\145\1\110\14\145\1\146\11\145\32\175\2\145\1\175"+ - "\4\145\1\175\10\145\1\175\15\145\1\176\1\115\1\26"+ - "\1\177\1\147\1\200\1\176\1\32\1\33\14\110\1\201"+ - "\15\110\2\176\1\110\1\176\1\202\2\176\1\110\3\176"+ - "\1\110\4\176\1\110\14\176\1\115\1\145\1\115\7\145"+ - "\11\110\1\203\20\110\2\145\1\110\1\145\1\63\2\145"+ - "\1\110\1\145\1\204\1\145\1\110\4\145\1\110\14\145"+ - "\1\115\7\205\1\206\71\205\10\207\1\206\70\207\56\210"+ - "\1\211\22\210\66\212\1\213\12\212\2\16\1\0\77\16"+ - "\1\17\1\0\75\16\1\17\2\0\1\214\76\0\6\215"+ - "\1\216\75\215\1\217\2\215\1\216\72\215\102\0\1\25"+ - "\76\0\1\25\3\0\1\220\102\0\1\221\16\0\1\222"+ - "\6\0\1\223\52\0\1\224\65\0\1\225\16\0\3\36"+ - "\1\226\6\36\1\227\22\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\26\0\1\36"+ - "\1\231\20\36\1\232\12\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\26\0\35\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\26\0\6\36\1\233\5\36\1\234\1\235"+ - "\1\36\1\236\4\36\1\237\2\36\1\240\5\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\26\0\13\36\1\241\5\36\1\242\13\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\26\0\4\36\1\243\5\36\1\244\22\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\26\0\1\245\5\36\1\246\4\36\1\247\21\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\26\0\1\250\3\36\1\251\4\36\1\252"+ - "\23\36\1\0\1\230\3\36\1\230\3\0\1\36\1\230"+ - "\1\36\1\0\1\36\26\0\1\253\5\36\1\254\12\36"+ - "\1\255\13\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\26\0\1\256\20\36\1\257"+ - "\13\36\1\0\1\230\3\36\1\230\3\0\1\36\1\230"+ - "\1\36\1\0\1\36\26\0\3\36\1\231\6\36\1\260"+ - "\13\36\1\261\6\36\1\0\1\230\3\36\1\230\3\0"+ - "\1\36\1\230\1\36\1\0\1\36\26\0\1\262\4\36"+ - "\1\263\3\36\1\264\23\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\26\0\1\265"+ - "\20\36\1\266\13\36\1\0\1\230\3\36\1\230\3\0"+ - "\1\36\1\230\1\36\1\0\1\36\26\0\4\36\1\267"+ - "\1\36\1\270\2\36\1\271\23\36\1\0\1\230\3\36"+ - "\1\230\3\0\1\36\1\230\1\36\1\0\1\36\26\0"+ - "\1\272\10\36\1\273\4\36\1\274\16\36\1\0\1\230"+ - "\3\36\1\230\3\0\1\36\1\230\1\36\1\0\1\36"+ - "\26\0\3\36\1\275\6\36\1\276\22\36\1\0\1\230"+ - "\3\36\1\230\3\0\1\36\1\230\1\36\1\0\1\36"+ - "\26\0\5\36\1\277\5\36\1\300\21\36\1\0\1\230"+ - "\3\36\1\230\3\0\1\36\1\230\1\36\1\0\1\36"+ - "\26\0\13\36\1\301\21\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\26\0\1\302"+ - "\20\36\1\303\13\36\1\0\1\230\3\36\1\230\3\0"+ - "\1\36\1\230\1\36\1\0\1\36\26\0\21\36\1\304"+ - "\13\36\1\0\1\230\3\36\1\230\3\0\1\36\1\230"+ - "\1\36\1\0\1\36\34\0\1\305\23\0\2\60\3\0"+ - "\2\60\1\0\1\306\5\0\1\60\1\111\1\305\26\0"+ - "\22\36\1\307\12\36\1\0\1\230\3\36\1\230\3\0"+ - "\1\36\1\230\1\36\1\0\1\36\22\0\1\310\3\0"+ - "\1\311\1\312\1\0\1\313\1\314\2\0\1\315\1\316"+ - "\1\317\1\320\1\321\1\322\1\323\2\0\1\324\1\325"+ - "\1\326\1\0\1\327\1\330\1\331\5\0\1\332\2\0"+ - "\1\333\47\0\1\305\23\0\2\60\3\0\1\60\1\334"+ - "\1\0\1\306\5\0\1\60\1\111\1\305\34\0\1\305"+ - "\23\0\2\335\3\0\2\335\1\0\1\306\5\0\1\335"+ - "\1\0\1\305\60\0\2\336\3\0\2\336\7\0\1\336"+ - "\24\0\1\337\14\0\1\340\31\0\1\341\101\0\1\342"+ - "\30\0\1\343\100\0\1\344\100\0\1\345\60\0\1\346"+ - "\102\0\1\347\15\0\1\350\100\0\1\351\100\0\1\352"+ - "\104\0\35\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\60\0\2\111\3\0\2\111\7\0\2\111"+ - "\17\0\1\115\76\0\1\115\11\0\1\110\1\353\1\110"+ - "\1\354\3\110\1\355\4\110\1\356\20\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\357"+ - "\3\110\1\356\1\110\1\360\4\110\1\361\6\110\1\362"+ - "\12\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\363\3\110\1\364\1\365\1\366\1\367"+ - "\1\370\2\110\1\371\1\372\4\110\1\373\1\374\1\110"+ - "\1\375\10\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\376\5\110\1\377\4\110\1\u0100"+ - "\1\110\1\u0101\3\110\1\u0102\13\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\1\u0103\20\110"+ - "\1\u0104\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\7\110\1\u0105\2\110\1\u0106\15\110"+ - "\1\u0107\4\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\u0108\1\u0109\4\110\1\u010a\4\110"+ - "\1\u010b\5\110\1\u010c\1\u010d\12\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\1\u010e\3\110"+ - "\1\u010f\6\110\1\u0110\21\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\1\u0111\5\110\1\u0112"+ - "\12\110\1\u0113\13\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\4\110\1\u0114\30\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\3\110\1\u0115\3\110\1\u0116\2\110\1\u0117\22\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\1\u0118\10\110\1\u0119\1\110\1\u011a\5\110\1\u011b\13\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\1\u011c\1\u011d\3\110\1\u011e\1\u011f\12\110\1\u0120"+ + "\1\131\1\132\1\110\1\133\1\134\1\135\1\110\1\136"+ + "\1\137\1\140\2\110\1\141\2\60\1\110\2\107\1\60"+ + "\1\65\1\110\1\142\2\107\1\110\1\107\1\72\1\60"+ + "\1\107\1\110\3\107\1\76\1\107\1\100\3\107\1\143"+ + "\1\105\1\107\1\114\1\144\1\145\2\144\1\146\4\144"+ + "\1\147\1\150\1\110\1\151\1\152\2\110\1\153\1\154"+ + "\1\155\1\156\1\157\1\160\1\161\2\110\1\162\1\163"+ + "\1\164\1\110\1\165\1\166\1\167\3\110\2\144\1\170"+ + "\1\171\1\172\1\173\1\144\1\110\3\144\1\110\4\144"+ + "\1\110\14\144\1\145\11\174\32\175\2\174\1\175\4\174"+ + "\1\175\10\174\1\175\15\174\1\176\1\114\1\26\1\177"+ + "\1\146\1\200\1\176\1\32\1\33\14\110\1\201\15\110"+ + "\2\176\1\110\1\176\1\202\2\176\1\110\3\176\1\110"+ + "\4\176\1\110\14\176\1\114\1\203\1\114\7\203\11\110"+ + "\1\204\20\110\2\203\1\110\1\203\1\63\2\203\1\110"+ + "\1\203\1\205\1\203\1\110\4\203\1\110\14\203\1\114"+ + "\7\206\1\207\71\206\10\210\1\207\70\210\56\211\1\212"+ + "\22\211\66\213\1\214\12\213\2\16\1\0\77\16\1\17"+ + "\1\0\75\16\1\17\2\0\1\215\76\0\6\216\1\217"+ + "\75\216\1\220\2\216\1\217\72\216\102\0\1\25\76\0"+ + "\1\25\3\0\1\221\102\0\1\222\16\0\1\223\6\0"+ + "\1\224\52\0\1\225\65\0\1\226\16\0\3\36\1\227"+ + "\6\36\1\230\22\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\1\36\1\232"+ + "\20\36\1\233\12\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\35\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\6\36\1\234\5\36\1\235\1\236\1\36"+ + "\1\237\4\36\1\240\2\36\1\241\5\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\13\36\1\242\5\36\1\243\13\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\4\36\1\244\5\36\1\245\22\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\1\246\5\36\1\247\4\36\1\250\21\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\1\251\3\36\1\252\4\36\1\253\23\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\1\254\5\36\1\255\12\36\1\256"+ + "\13\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\1\257\20\36\1\260\13\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\3\36\1\232\6\36\1\261\13\36"+ + "\1\262\6\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\1\263\4\36\1\264"+ + "\3\36\1\265\23\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\1\266\20\36"+ + "\1\267\13\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\4\36\1\270\1\36"+ + "\1\271\2\36\1\272\23\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\1\273"+ + "\10\36\1\274\4\36\1\275\16\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\3\36\1\276\6\36\1\277\22\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\5\36\1\300\5\36\1\301\21\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\13\36\1\302\21\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\1\303\20\36"+ + "\1\304\13\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\21\36\1\305\13\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\34\0\1\306\23\0\2\60\3\0\2\60"+ + "\1\0\1\307\5\0\1\60\1\111\1\306\26\0\22\36"+ + "\1\310\12\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\22\0\1\311\3\0\1\312"+ + "\1\313\1\0\1\314\1\315\2\0\1\316\1\317\1\320"+ + "\1\321\1\322\1\323\1\324\2\0\1\325\1\326\1\327"+ + "\1\0\1\330\1\331\1\332\5\0\1\333\2\0\1\334"+ + "\47\0\1\306\23\0\2\60\3\0\1\60\1\335\1\0"+ + "\1\307\5\0\1\60\1\111\1\306\34\0\1\306\23\0"+ + "\2\336\3\0\2\336\1\0\1\307\5\0\1\336\1\0"+ + "\1\306\60\0\2\337\3\0\2\337\7\0\1\337\24\0"+ + "\1\340\14\0\1\341\31\0\1\342\101\0\1\343\30\0"+ + "\1\344\100\0\1\345\100\0\1\346\60\0\1\347\102\0"+ + "\1\350\15\0\1\351\100\0\1\352\100\0\1\353\104\0"+ + "\35\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\60\0\2\111\3\0\2\111\7\0\2\111\17\0"+ + "\1\114\76\0\1\114\11\0\1\110\1\354\1\110\1\355"+ + "\3\110\1\356\4\110\1\357\20\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\1\360\3\110"+ + "\1\357\1\110\1\361\4\110\1\362\6\110\1\363\12\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\1\364\3\110\1\365\1\366\1\367\1\370\1\371"+ + "\2\110\1\372\1\373\4\110\1\374\1\375\1\110\1\376"+ + "\10\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\1\377\5\110\1\u0100\4\110\1\u0101\1\110"+ + "\1\u0102\3\110\1\u0103\13\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\1\u0104\20\110\1\u0105"+ "\13\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\u0121\34\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\6\110\1\u0122\2\110"+ - "\1\u0123\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\4\110\1\356\3\110\1\u0124\5\110"+ - "\1\u0125\3\110\1\u0126\3\110\1\u0127\6\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\4\110"+ - "\1\356\3\110\1\u0128\1\u0129\1\u012a\2\110\1\u0101\17\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\5\110\1\u012b\1\u012c\2\110\1\u012d\1\110\1\u012e"+ - "\5\110\1\u012f\13\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\6\110\1\u0130\26\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\1\u0131\3\110\1\u0132\6\110\1\u0133\5\110\1\u0134\1\u0135"+ - "\12\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\21\110\1\u0136\13\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\16\0\1\146\76\0"+ - "\1\146\11\0\3\110\1\u0137\31\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\1\110\1\u0138"+ - "\20\110\1\u0139\12\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\6\110\1\u013a\5\110\1\u013b"+ - "\1\u013c\6\110\1\u013d\2\110\1\u013e\5\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\13\110"+ - "\1\u013f\5\110\1\u0140\13\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\1\u0141\12\110\1\u0142"+ - "\21\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\u0143\10\110\1\u0144\23\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u0145"+ - "\5\110\1\u0146\12\110\1\u0147\13\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\1\u0148\20\110"+ - "\1\u0149\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\3\110\1\u0138\6\110\1\u014a\22\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\1\u014b\4\110\1\u014c\3\110\1\u014d\23\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\1\u014e\20\110\1\u014f\13\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\4\110\1\u0150\1\110"+ - "\1\u0151\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\u0152\15\110\1\u0153\16\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\3\110\1\u0154\31\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\13\110\1\u0155\21\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\13\110\1\u0156\21\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\21\110\1\u0157\13\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\22\110\1\u0158\12\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\66\0\1\u0159\33\0\1\175\4\0"+ - "\35\175\2\0\4\175\3\0\1\175\1\0\1\175\1\0"+ - "\1\175\20\0\1\u015a\106\0\1\u015b\34\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\27\0\1\u015c"+ - "\1\0\1\u015d\1\u015e\1\0\1\u015f\1\u0160\1\0\1\u0161"+ - "\1\u0162\1\u0163\1\0\1\u0164\2\0\1\u015e\60\0\6\110"+ - "\1\u0165\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\15\0\7\u0166\1\u0167\71\u0166\10\u0168\1\u0167"+ - "\70\u0168\56\u0169\1\u016a\25\u0169\1\u016b\52\u0169\1\u016a\22\u0169"+ - "\66\u016c\1\u016d\15\u016c\1\u016e\62\u016c\1\u016d\12\u016c\6\0"+ - "\1\u016f\47\0\1\u0170\7\0\1\u0171\12\0\3\215\1\u0172"+ - "\2\215\1\216\75\215\1\u0173\2\215\1\216\72\215\37\0"+ - "\1\u0174\64\0\1\u0175\62\0\1\u0176\104\0\3\36\1\u0177"+ - "\31\36\1\0\1\230\3\36\1\230\3\0\1\36\1\230"+ - "\1\36\1\0\1\36\26\0\1\36\1\u0178\33\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\26\0\35\36\1\0\1\u0179\3\36\1\230\3\0"+ - "\1\36\1\230\1\36\1\0\1\36\26\0\7\36\1\u017a"+ - "\25\36\1\0\1\230\3\36\1\230\3\0\1\36\1\230"+ - "\1\36\1\0\1\36\26\0\1\u017b\2\36\1\u017c\10\36"+ - "\1\231\1\u017d\17\36\1\0\1\230\3\36\1\230\3\0"+ - "\1\36\1\230\1\36\1\0\1\36\26\0\11\36\1\u017e"+ - "\23\36\1\0\1\230\3\36\1\230\3\0\1\36\1\230"+ - "\1\36\1\0\1\36\26\0\21\36\1\u017f\13\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\26\0\13\36\1\u0180\21\36\1\0\1\230\3\36"+ - "\1\230\3\0\1\36\1\230\1\36\1\0\1\36\26\0"+ - "\13\36\1\u0181\21\36\1\0\1\230\3\36\1\230\3\0"+ - "\1\36\1\230\1\36\1\0\1\36\26\0\20\36\1\231"+ - "\14\36\1\0\1\230\3\36\1\230\3\0\1\36\1\230"+ - "\1\36\1\0\1\36\26\0\12\36\1\u0182\22\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\26\0\15\36\1\u0183\3\36\1\u017a\13\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\26\0\3\36\1\u0184\31\36\1\0\1\230\3\36"+ - "\1\230\3\0\1\36\1\230\1\36\1\0\1\36\26\0"+ - "\1\36\1\u0185\33\36\1\0\1\230\3\36\1\230\3\0"+ - "\1\36\1\230\1\36\1\0\1\36\26\0\11\36\1\u0186"+ - "\23\36\1\0\1\230\3\36\1\230\3\0\1\36\1\230"+ - "\1\36\1\0\1\36\26\0\11\36\1\u0187\23\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\26\0\30\36\1\231\4\36\1\0\1\230\3\36"+ - "\1\230\3\0\1\36\1\230\1\36\1\0\1\36\26\0"+ - "\11\36\1\u0188\2\36\1\u0189\20\36\1\0\1\230\3\36"+ - "\1\230\3\0\1\36\1\230\1\36\1\0\1\36\26\0"+ - "\22\36\1\u018a\12\36\1\0\1\230\3\36\1\230\3\0"+ - "\1\36\1\230\1\36\1\0\1\36\26\0\21\36\1\u018b"+ - "\13\36\1\0\1\230\3\36\1\230\3\0\1\36\1\230"+ - "\1\36\1\0\1\36\26\0\12\36\1\u018c\22\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\26\0\1\36\1\u018d\2\36\1\u018e\30\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\26\0\14\36\1\u018e\5\36\1\u018f\12\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\26\0\27\36\1\231\5\36\1\0\1\230\3\36"+ - "\1\230\3\0\1\36\1\230\1\36\1\0\1\36\26\0"+ - "\10\36\1\u0190\3\36\1\u0191\20\36\1\0\1\230\3\36"+ - "\1\230\3\0\1\36\1\230\1\36\1\0\1\36\26\0"+ - "\3\36\1\u0192\11\36\1\u0193\17\36\1\0\1\u0179\3\36"+ - "\1\230\3\0\1\36\1\230\1\36\1\0\1\36\26\0"+ - "\17\36\1\u0194\10\36\1\u0195\4\36\1\0\1\230\3\36"+ - "\1\230\3\0\1\36\1\230\1\36\1\0\1\36\26\0"+ - "\6\36\1\u0196\26\36\1\0\1\230\3\36\1\230\3\0"+ - "\1\36\1\230\1\36\1\0\1\36\26\0\1\u0197\21\36"+ - "\1\u0198\12\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\26\0\12\36\1\231\2\36"+ - "\1\u0199\17\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\26\0\4\36\1\u019a\30\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\26\0\13\36\1\u019b\21\36\1\0\1\230"+ - "\3\36\1\230\3\0\1\36\1\230\1\36\1\0\1\36"+ - "\26\0\14\36\1\u019c\20\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\26\0\21\36"+ - "\1\u019d\13\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\26\0\22\36\1\u019e\12\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\26\0\1\36\1\u019f\33\36\1\0\1\230"+ - "\3\36\1\230\3\0\1\36\1\230\1\36\1\0\1\36"+ - "\26\0\26\36\1\u01a0\6\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\26\0\6\36"+ - "\1\u01a1\26\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\26\0\4\36\1\u01a2\30\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\26\0\6\36\1\u01a3\26\36\1\0\1\230"+ - "\3\36\1\230\3\0\1\36\1\230\1\36\1\0\1\36"+ - "\26\0\1\36\1\u01a4\33\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\26\0\6\36"+ - "\1\u01a5\26\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\26\0\4\36\1\u01a6\30\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\26\0\11\36\1\u01a7\23\36\1\0\1\230"+ - "\3\36\1\230\3\0\1\36\1\230\1\36\1\0\1\36"+ - "\26\0\11\36\1\u01a8\23\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\60\0\2\u01a9"+ - "\3\0\2\u01a9\5\0\1\u01aa\1\0\1\u01a9\2\0\1\u01aa"+ - "\25\0\6\36\1\u01ab\26\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\31\0\1\u01ac"+ - "\76\0\1\u01ad\20\0\1\u01ae\64\0\1\u01af\5\0\1\u01b0"+ - "\1\u01b1\6\0\1\u01b2\2\0\1\u01b3\64\0\1\u01b4\5\0"+ - "\1\u01b5\57\0\1\u01b6\12\0\1\u01b7\65\0\1\u01b8\10\0"+ - "\1\u01b9\67\0\1\u01ba\5\0\1\u01bb\12\0\1\u01bc\57\0"+ - "\1\u01bd\20\0\1\u01be\62\0\1\u01ad\6\0\1\u01bf\66\0"+ - "\1\u01c0\4\0\1\u01c1\3\0\1\u01c2\67\0\1\u01c3\20\0"+ - "\1\u01c4\63\0\1\u01c5\1\0\1\u01c6\72\0\1\u01c7\15\0"+ - "\1\u01c8\65\0\1\u01c9\110\0\1\u01ca\100\0\1\u01cb\106\0"+ - "\1\u01cc\101\0\1\u01cd\116\0\1\u01ce\46\0\1\305\23\0"+ - "\2\60\3\0\1\u01cf\1\60\1\0\1\306\5\0\1\60"+ - "\1\111\1\305\34\0\1\305\23\0\2\336\3\0\2\336"+ - "\7\0\1\336\1\0\1\305\34\0\1\u01d0\66\0\1\u01d1"+ - "\166\0\1\u01d2\16\0\1\110\1\u01d3\33\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\15\110"+ - "\1\u01d4\17\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\10\110\1\u01d5\24\110\2\0\3\110"+ + "\1\110\26\0\7\110\1\u0106\2\110\1\u0107\15\110\1\u0108"+ + "\4\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\1\u0109\1\u010a\4\110\1\u010b\4\110\1\u010c"+ + "\5\110\1\u010d\1\u010e\12\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\1\u010f\3\110\1\u0110"+ + "\6\110\1\u0111\21\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\1\u0112\5\110\1\u0113\12\110"+ + "\1\u0114\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\4\110\1\u0115\30\110\2\0\3\110"+ "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\3\110"+ - "\1\u01d6\21\110\1\u01d7\7\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\3\110\1\u01d8\11\110"+ - "\1\u01d9\17\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\27\110\1\u01da\5\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\7\110"+ - "\1\u01db\25\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\12\110\1\u01dc\13\110\1\u01dd\6\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\22\110\1\u01de\12\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\22\110\1\u01df\12\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\12\110\1\u01e0\2\110\1\u01e1\2\110\1\u01e2\14\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\1\u01e3\34\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\1\u01e4\34\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\12\110"+ - "\1\u01e5\22\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\u01e6\10\110\1\u01e7\23\110\2\0"+ + "\1\u0116\3\110\1\u0117\2\110\1\u0118\22\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u0119"+ + "\10\110\1\u011a\1\110\1\u011b\5\110\1\u011c\13\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\11\110\1\u0122\23\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\7\110\1\356\1\110\1\u01e8"+ - "\4\110\1\u01e9\16\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\1\u01ea\34\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\3\110"+ - "\1\u0122\31\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\12\110\1\u01eb\22\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\3\110"+ - "\1\u0122\3\110\1\u01ec\2\110\1\u01ed\22\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\26\110"+ - "\1\u01ee\6\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\24\110\1\u01ef\10\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\3\110"+ - "\1\u01f0\31\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\22\110\1\u01f1\12\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\16\110"+ - "\1\u01f2\16\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\110\1\u01f3\1\110\1\u01f4\10\110"+ - "\1\u01f5\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\10\110\1\u01f6\4\110\1\u01f7\17\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\11\110\1\u01f8\1\110\1\u01f9\1\110\1\u01fa\17\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\32\110\1\356\2\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\11\110\1\u01fb\23\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\12\110\1\u01fc\22\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\1\110\1\u01fd\10\110"+ - "\1\u01fe\22\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\4\110\1\u01ff\30\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\110"+ - "\1\356\7\110\1\u0200\23\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\22\110\1\u0201\12\110"+ + "\1\u011d\1\u011e\3\110\1\u011f\1\u0120\12\110\1\u0121\13\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\10\110\1\u0202\24\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\24\110\1\u0203\1\356"+ - "\7\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\u0204\3\110\1\u0205\2\110\1\u0206\1\u0207"+ - "\7\110\1\u0208\6\110\1\u0209\5\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\22\110\1\u020a"+ - "\12\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\33\110\1\u020b\1\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\2\110\1\u020c"+ - "\16\110\1\u020d\13\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\1\u01fb\34\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\2\110"+ - "\1\u020e\1\u020f\31\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\16\110\1\u0210\16\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\1\u0211\12\110\1\u0212\6\110\1\u0213\12\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\110"+ - "\1\u0214\5\110\1\u0215\4\110\1\u0210\20\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\2\110"+ - "\1\u0216\32\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\7\110\1\u0217\25\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u0218"+ - "\34\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\22\110\1\u0219\12\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\13\110\1\u021a"+ - "\21\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\4\110\1\u021b\2\110\1\u021c\2\110\1\u021d"+ - "\7\110\1\u021e\12\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\15\110\1\u021f\17\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\14\110\1\356\20\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\1\u0220\20\110\1\u0221\13\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\14\110\1\u0222\20\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\26\110\1\u0223\6\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\14\110\1\u0224\20\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\26\110\1\u0225\6\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\10\110\1\u01ef\24\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\4\110\1\u0226\30\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\1\110\1\u0227\11\110\1\u0228\21\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ - "\1\u0229\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\6\110\1\u022a\26\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u01db"+ - "\34\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\110\1\u022b\33\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\11\110\1\u022c"+ + "\26\0\1\u0122\34\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\6\110\1\u0123\2\110\1\u0124"+ "\23\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\u01f1\34\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\4\110\1\u022d\22\110"+ - "\1\u022e\5\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\u022f\12\110\1\u01db\5\110\1\u0230"+ - "\13\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\11\110\1\376\23\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\11\110\1\u0231"+ - "\23\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\4\110\1\u0232\30\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\13\110\1\u0233"+ - "\21\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\3\110\1\u0234\31\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\7\110\1\u0235"+ - "\25\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\u0236\2\110\1\u0237\10\110\1\u0138\1\u0238"+ - "\17\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\11\110\1\u0239\23\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\21\110\1\u023a"+ + "\1\110\26\0\4\110\1\357\3\110\1\u0125\5\110\1\u0126"+ + "\3\110\1\u0127\3\110\1\u0128\6\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\4\110\1\357"+ + "\3\110\1\u0129\1\u012a\1\u012b\2\110\1\u0102\17\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\5\110\1\u012c\1\u012d\2\110\1\u012e\1\110\1\u012f\5\110"+ + "\1\u0130\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\6\110\1\u0131\26\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u0132"+ + "\3\110\1\u0133\6\110\1\u0134\5\110\1\u0135\1\u0136\12\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\21\110\1\u0137\13\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\16\0\1\145\76\0\1\145"+ + "\11\0\3\110\1\u0138\31\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\1\110\1\u0139\20\110"+ + "\1\u013a\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\6\110\1\u013b\5\110\1\u013c\1\u013d"+ + "\6\110\1\u013e\2\110\1\u013f\5\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\13\110\1\u0140"+ + "\5\110\1\u0141\13\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\1\u0142\12\110\1\u0143\21\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\1\u0144\10\110\1\u0145\23\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\1\u0146\5\110"+ + "\1\u0147\12\110\1\u0148\13\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\1\u0149\20\110\1\u014a"+ "\13\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\13\110\1\u023b\21\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\20\110\1\u0138"+ - "\14\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\12\110\1\u023c\22\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\15\110\1\u023d"+ - "\3\110\1\u0235\13\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\11\110\1\u023e\23\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\30\110\1\u0138\4\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\11\110\1\u023f\2\110\1\u0240"+ - "\20\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\21\110\1\u0241\13\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\12\110\1\u0242"+ - "\22\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\110\1\u0243\2\110\1\u0244\30\110\2\0"+ + "\1\110\26\0\3\110\1\u0139\6\110\1\u014b\22\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\14\110\1\u0244\5\110\1\u0245\12\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\27\110\1\u0138"+ - "\5\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\14\110\1\u0246\20\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\3\110\1\u0247"+ - "\11\110\1\u0248\17\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\30\110\1\u0249\4\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\6\110\1\u024a\26\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\1\u024b\34\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\12\110"+ - "\1\u0138\2\110\1\u024c\17\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\4\110\1\u024d\30\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\13\110\1\u024e\21\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\14\110\1\u024f\20\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\22\110\1\u0250\12\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\26\110\1\u0251\6\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\6\110\1\u0252\26\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\1\110\1\u0253\33\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\6\110\1\u0254\26\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\11\110\1\u0255\23\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\6\110\1\u0256\26\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\65\0\1\u0257\41\0\30\110"+ - "\1\u0258\4\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\47\0\1\u0259\73\0\1\u025a\100\0\1\u025b"+ - "\76\0\1\u025c\15\0\1\u025d\3\0\1\u025e\44\0\1\u025f"+ - "\106\0\1\u0260\113\0\1\u0261\1\u0262\61\0\1\u0263\6\0"+ - "\1\u0264\107\0\1\u0265\57\0\15\110\1\u0266\17\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\15\0"+ - "\3\u0169\1\u0267\52\u0169\1\u016a\25\u0169\1\u0268\52\u0169\1\u016a"+ - "\22\u0169\3\u016c\1\u0269\62\u016c\1\u016d\15\u016c\1\u026a\62\u016c"+ - "\1\u016d\12\u016c\3\215\1\u026b\2\215\1\216\72\215\15\0"+ - "\1\u026c\74\0\6\36\1\u026d\26\36\1\0\1\230\3\36"+ - "\1\230\3\0\1\36\1\230\1\36\1\0\1\36\26\0"+ - "\10\36\1\231\24\36\1\0\1\230\3\36\1\230\3\0"+ - "\1\36\1\230\1\36\1\0\1\36\26\0\11\36\1\u026e"+ - "\23\36\1\0\1\230\3\36\1\230\3\0\1\36\1\230"+ - "\1\36\1\0\1\36\26\0\3\36\1\u026f\31\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\26\0\14\36\1\u026f\20\36\1\0\1\230\3\36"+ - "\1\230\3\0\1\36\1\230\1\36\1\0\1\36\26\0"+ - "\22\36\1\u0270\12\36\1\0\1\230\3\36\1\230\3\0"+ - "\1\36\1\230\1\36\1\0\1\36\26\0\10\36\1\u0271"+ - "\24\36\1\0\1\230\3\36\1\230\3\0\1\36\1\230"+ - "\1\36\1\0\1\36\26\0\10\36\1\u0272\24\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\26\0\14\36\1\u0273\20\36\1\0\1\230\3\36"+ - "\1\230\3\0\1\36\1\230\1\36\1\0\1\36\26\0"+ - "\17\36\1\231\15\36\1\0\1\230\3\36\1\230\3\0"+ - "\1\36\1\230\1\36\1\0\1\36\26\0\1\u0274\34\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\26\0\6\36\1\u0275\26\36\1\0\1\230"+ - "\3\36\1\230\3\0\1\36\1\230\1\36\1\0\1\36"+ - "\26\0\13\36\1\u0276\6\36\1\u0277\12\36\1\0\1\230"+ - "\3\36\1\230\3\0\1\36\1\230\1\36\1\0\1\36"+ - "\26\0\17\36\1\u0278\15\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\26\0\20\36"+ - "\1\u0279\14\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\26\0\6\36\1\u027a\5\36"+ - "\1\u027b\20\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\26\0\5\36\1\231\27\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\26\0\15\36\1\u027c\17\36\1\0\1\230"+ - "\3\36\1\230\3\0\1\36\1\230\1\36\1\0\1\36"+ - "\26\0\14\36\1\u027d\20\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\26\0\20\36"+ - "\1\u0271\14\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\26\0\13\36\1\u027e\21\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\26\0\1\u018f\34\36\1\0\1\230\3\36"+ - "\1\230\3\0\1\36\1\230\1\36\1\0\1\36\26\0"+ - "\14\36\1\u0271\20\36\1\0\1\230\3\36\1\230\3\0"+ - "\1\36\1\230\1\36\1\0\1\36\26\0\1\u027f\34\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\26\0\2\36\1\u0280\32\36\1\0\1\230"+ - "\3\36\1\230\3\0\1\36\1\230\1\36\1\0\1\36"+ - "\26\0\14\36\1\u0281\20\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\26\0\11\36"+ - "\1\u0282\23\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\26\0\6\36\1\u0283\26\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\26\0\21\36\1\u0284\13\36\1\0\1\230"+ - "\3\36\1\230\3\0\1\36\1\230\1\36\1\0\1\36"+ - "\26\0\7\36\1\u0271\25\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\26\0\12\36"+ - "\1\u0285\22\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\26\0\6\36\1\u0286\26\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\26\0\5\36\1\u0271\27\36\1\0\1\230"+ - "\3\36\1\230\3\0\1\36\1\230\1\36\1\0\1\36"+ - "\26\0\4\36\1\u0287\30\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\26\0\1\36"+ - "\1\u0271\33\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\26\0\2\36\1\u0288\32\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\26\0\22\36\1\u0289\12\36\1\0\1\230"+ - "\3\36\1\230\3\0\1\36\1\230\1\36\1\0\1\36"+ - "\26\0\14\36\1\u0189\20\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\26\0\6\36"+ - "\1\u028a\26\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\26\0\22\36\1\u028b\12\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\26\0\11\36\1\u028c\23\36\1\0\1\230"+ - "\3\36\1\230\3\0\1\36\1\230\1\36\1\0\1\36"+ - "\26\0\6\36\1\u028d\26\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\26\0\11\36"+ - "\1\u028e\23\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\26\0\21\36\1\u027a\13\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\26\0\4\36\1\u028f\30\36\1\0\1\230"+ - "\3\36\1\230\3\0\1\36\1\230\1\36\1\0\1\36"+ - "\26\0\3\36\1\u0290\31\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\26\0\6\36"+ - "\1\u0291\1\231\25\36\1\0\1\230\3\36\1\230\3\0"+ - "\1\36\1\230\1\36\1\0\1\36\60\0\2\u01a9\3\0"+ - "\2\u01a9\7\0\1\u01a9\30\0\11\36\1\u0292\23\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\31\0\1\u0293\133\0\1\u0179\51\0\1\u0294\71\0"+ - "\1\u0295\2\0\1\u0296\10\0\1\u01ad\1\u0297\74\0\1\u0298"+ - "\110\0\1\u0299\72\0\1\u029a\105\0\1\u01ad\72\0\1\u029b"+ - "\103\0\1\u029c\3\0\1\u0294\70\0\1\u029d\117\0\1\u01ad"+ - "\61\0\1\u029e\2\0\1\u029f\105\0\1\u02a0\71\0\1\u02a1"+ - "\67\0\1\u02a2\2\0\1\u02a3\110\0\1\u02a3\5\0\1\u02a4"+ - "\105\0\1\u01ad\65\0\1\u02a5\67\0\1\u02a6\11\0\1\u02a7"+ - "\20\0\1\u0179\72\0\1\u02a8\56\0\1\u02a9\72\0\1\u02aa"+ - "\112\0\1\u01ad\2\0\1\u02ab\67\0\1\u02ac\107\0\1\u02ad"+ - "\101\0\1\u02ae\106\0\1\u02af\104\0\1\u02b0\60\0\1\u02b1"+ - "\73\0\1\u02b2\105\0\1\u02b3\103\0\1\u02b4\75\0\1\u02b5"+ - "\131\0\1\u01ad\47\0\1\305\23\0\2\60\2\0\1\u0179"+ - "\2\60\1\0\1\306\5\0\1\60\1\111\1\305\43\0"+ - "\1\u02b6\63\0\2\110\1\u02b7\32\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\13\110\1\u02b8"+ - "\21\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\6\110\1\u02b9\26\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\5\110\1\u02ba"+ - "\27\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\3\110\1\u02bb\31\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\4\110\1\364"+ - "\30\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\21\110\1\u02bc\13\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\13\110\1\u02bc"+ - "\21\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\10\110\1\356\24\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\13\110\1\u02bd"+ - "\21\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\6\110\1\u02be\26\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\20\110\1\u02ba"+ - "\14\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\26\110\1\u02bf\6\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\14\110\1\u02c0"+ - "\20\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\21\110\1\u02c1\13\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\7\110\1\u02c2"+ - "\25\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\11\110\1\u02c3\23\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\15\110\1\u02c4"+ + "\1\u014c\4\110\1\u014d\3\110\1\u014e\23\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u014f"+ + "\20\110\1\u0150\13\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\4\110\1\u0151\1\110\1\u0152"+ + "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\1\u0153\15\110\1\u0154\16\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\3\110"+ + "\1\u0155\31\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\13\110\1\u0156\21\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\13\110"+ + "\1\u0157\21\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\21\110\1\u0158\13\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\22\110"+ + "\1\u0159\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\66\0\1\u015a\33\0\1\175\4\0\35\175"+ + "\2\0\4\175\3\0\1\175\1\0\1\175\1\0\1\175"+ + "\20\0\1\u015b\106\0\1\u015c\34\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\27\0\1\u015d\1\0"+ + "\1\u015e\1\u015f\1\0\1\u0160\1\u0161\1\0\1\u0162\1\u0163"+ + "\1\u0164\1\0\1\u0165\2\0\1\u015f\60\0\6\110\1\u0166"+ + "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\15\0\7\u0167\1\u0168\71\u0167\10\u0169\1\u0168\70\u0169"+ + "\56\u016a\1\u016b\25\u016a\1\u016c\52\u016a\1\u016b\22\u016a\66\u016d"+ + "\1\u016e\15\u016d\1\u016f\62\u016d\1\u016e\12\u016d\6\0\1\u0170"+ + "\47\0\1\u0171\7\0\1\u0172\12\0\3\216\1\u0173\2\216"+ + "\1\217\75\216\1\u0174\2\216\1\217\72\216\37\0\1\u0175"+ + "\64\0\1\u0176\62\0\1\u0177\104\0\3\36\1\u0178\31\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\1\36\1\u0179\33\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\35\36\1\0\1\u017a\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\7\36\1\u017b\25\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\1\u017c\2\36\1\u017d\10\36\1\232"+ + "\1\u017e\17\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\11\36\1\u017f\23\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\21\36\1\u0180\13\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\13\36\1\u0181\21\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\13\36"+ + "\1\u0182\21\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\20\36\1\232\14\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\12\36\1\u0183\22\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\15\36\1\u0184\3\36\1\u017b\13\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\3\36\1\u0185\31\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\1\36"+ + "\1\u0186\33\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\11\36\1\u0187\23\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\11\36\1\u0188\23\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\30\36\1\232\4\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\11\36"+ + "\1\u0189\2\36\1\u018a\20\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\22\36"+ + "\1\u018b\12\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\21\36\1\u018c\13\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\12\36\1\u018d\22\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\1\36\1\u018e\2\36\1\u018f\30\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\14\36\1\u018f\5\36\1\u0190\12\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\27\36\1\232\5\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\10\36"+ + "\1\u0191\3\36\1\u0192\20\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\3\36"+ + "\1\u0193\11\36\1\u0194\17\36\1\0\1\u017a\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\17\36"+ + "\1\u0195\10\36\1\u0196\4\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\6\36"+ + "\1\u0197\26\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\1\u0198\21\36\1\u0199"+ + "\12\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\12\36\1\232\2\36\1\u019a"+ + "\17\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\4\36\1\u019b\30\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\13\36\1\u019c\21\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\14\36\1\u019d\20\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\21\36\1\u019e"+ + "\13\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\22\36\1\u019f\12\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\1\36\1\u01a0\33\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\26\36\1\u01a1\6\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\6\36\1\u01a2"+ + "\26\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\4\36\1\u01a3\30\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\6\36\1\u01a4\26\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\1\36\1\u01a5\33\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\6\36\1\u01a6"+ + "\26\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\4\36\1\u01a7\30\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\11\36\1\u01a8\23\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\11\36\1\u01a9\23\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\60\0\2\u01aa\3\0"+ + "\2\u01aa\5\0\1\u01ab\1\0\1\u01aa\2\0\1\u01ab\25\0"+ + "\6\36\1\u01ac\26\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\31\0\1\u01ad\76\0"+ + "\1\u01ae\20\0\1\u01af\64\0\1\u01b0\5\0\1\u01b1\1\u01b2"+ + "\6\0\1\u01b3\2\0\1\u01b4\64\0\1\u01b5\5\0\1\u01b6"+ + "\57\0\1\u01b7\12\0\1\u01b8\65\0\1\u01b9\10\0\1\u01ba"+ + "\67\0\1\u01bb\5\0\1\u01bc\12\0\1\u01bd\57\0\1\u01be"+ + "\20\0\1\u01bf\62\0\1\u01ae\6\0\1\u01c0\66\0\1\u01c1"+ + "\4\0\1\u01c2\3\0\1\u01c3\67\0\1\u01c4\20\0\1\u01c5"+ + "\63\0\1\u01c6\1\0\1\u01c7\72\0\1\u01c8\15\0\1\u01c9"+ + "\65\0\1\u01ca\110\0\1\u01cb\100\0\1\u01cc\106\0\1\u01cd"+ + "\101\0\1\u01ce\116\0\1\u01cf\46\0\1\306\23\0\2\60"+ + "\3\0\1\u01d0\1\60\1\0\1\307\5\0\1\60\1\111"+ + "\1\306\34\0\1\306\23\0\2\337\3\0\2\337\7\0"+ + "\1\337\1\0\1\306\34\0\1\u01d1\66\0\1\u01d2\166\0"+ + "\1\u01d3\16\0\1\110\1\u01d4\33\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\15\110\1\u01d5"+ "\17\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\20\110\1\u02c5\14\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\11\110\1\u02c6"+ - "\23\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\13\110\1\u02c7\21\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\11\110\1\u02c8"+ - "\23\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\3\110\1\u02c9\10\110\1\u02ca\20\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\10\110\1\u02cb\24\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\20\110\1\u02cc\14\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\13\110\1\u0122\21\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\17\110\1\356\15\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\13\110\1\u0133\21\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\6\110\1\u02cd\26\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\2\110\1\u02ce\32\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\11\110\1\u01d7\23\110\2\0"+ + "\1\110\26\0\10\110\1\u01d6\24\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\3\110\1\u01d7"+ + "\21\110\1\u01d8\7\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\3\110\1\u01d9\11\110\1\u01da"+ + "\17\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\27\110\1\u01db\5\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\7\110\1\u01dc"+ + "\25\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\12\110\1\u01dd\13\110\1\u01de\6\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\6\110\1\u02cf\26\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\3\110\1\u02d0\31\110\2\0"+ + "\22\110\1\u01df\12\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\22\110\1\u01e0\12\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\22\110\1\u02d1\12\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\13\110\1\u02d2\21\110\2\0"+ + "\12\110\1\u01e1\2\110\1\u01e2\2\110\1\u01e3\14\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\4\110\1\u01d9\30\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\6\110\1\u02d3\26\110\2\0"+ + "\1\u01e4\34\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\1\u01e5\34\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\12\110\1\u01e6"+ + "\22\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\1\u01e7\10\110\1\u01e8\23\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ + "\1\u0123\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\7\110\1\357\1\110\1\u01e9\4\110"+ + "\1\u01ea\16\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\1\u01eb\34\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\3\110\1\u0123"+ + "\31\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\12\110\1\u01ec\22\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\3\110\1\u0123"+ + "\3\110\1\u01ed\2\110\1\u01ee\22\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\26\110\1\u01ef"+ + "\6\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\24\110\1\u01f0\10\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\3\110\1\u01f1"+ + "\31\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\22\110\1\u01f2\12\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\16\110\1\u01f3"+ + "\16\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\1\110\1\u01f4\1\110\1\u01f5\10\110\1\u01f6"+ + "\20\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\10\110\1\u01f7\4\110\1\u01f8\17\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\17\110\1\u02d4\15\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\4\110\1\u02d5\30\110\2\0"+ + "\11\110\1\u01f9\1\110\1\u01fa\1\110\1\u01fb\17\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\11\110\1\u02d6\23\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\20\110\1\u02d7\14\110\2\0"+ + "\32\110\1\357\2\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\11\110\1\u01fc\23\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\22\110\1\u02d8\12\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\13\110\1\u02d9\21\110\2\0"+ + "\12\110\1\u01fd\22\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\1\110\1\u01fe\10\110\1\u01ff"+ + "\22\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\4\110\1\u0200\30\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\1\110\1\357"+ + "\7\110\1\u0201\23\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\22\110\1\u0202\12\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\10\110\1\u0203\24\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\24\110\1\u0204\1\357\7\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\1\u0205\3\110\1\u0206\2\110\1\u0207\1\u0208\7\110"+ + "\1\u0209\6\110\1\u020a\5\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\22\110\1\u020b\12\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\33\110\1\u020c\1\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\2\110\1\u020d\16\110"+ + "\1\u020e\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\1\u01fc\34\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\2\110\1\u020f"+ + "\1\u0210\31\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\16\110\1\u0211\16\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u0212"+ + "\12\110\1\u0213\6\110\1\u0214\12\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\1\110\1\u0215"+ + "\5\110\1\u0216\4\110\1\u0211\20\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\2\110\1\u0217"+ + "\32\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\7\110\1\u0218\25\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\1\u0219\34\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\22\110\1\u021a\12\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\13\110\1\u021b\21\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\4\110\1\u021c\2\110\1\u021d\2\110\1\u021e\7\110"+ + "\1\u021f\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\15\110\1\u0220\17\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ + "\1\357\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\1\u0221\20\110\1\u0222\13\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\14\110\1\u02da\20\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\14\110\1\u02db\20\110\2\0"+ + "\14\110\1\u0223\20\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\26\110\1\u0224\6\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\14\110\1\u02dc\20\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\11\110\1\u02dd\23\110\2\0"+ + "\14\110\1\u0225\20\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\26\110\1\u0226\6\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\6\110\1\u02de\26\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\22\110\1\u02df\12\110\2\0"+ + "\10\110\1\u01f0\24\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\4\110\1\u0227\30\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\1\110\1\u02e0\33\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\1\u02e1\34\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\21\110"+ - "\1\u02e2\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\4\110\1\u02e3\1\110\1\u02e4\26\110"+ + "\1\110\1\u0228\11\110\1\u0229\21\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\u022a"+ + "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\6\110\1\u022b\26\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\1\u01dc\34\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\6\110\1\u02e5\26\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\6\110\1\u02e6\26\110"+ + "\26\0\1\110\1\u022c\33\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\11\110\1\u022d\23\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\12\110\1\u02de\22\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\16\110\1\u02cd\16\110"+ + "\26\0\1\u01f2\34\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\4\110\1\u022e\22\110\1\u022f"+ + "\5\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\1\u0230\12\110\1\u01dc\5\110\1\u0231\13\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\1\u02e7\3\110\1\u02e8\1\110\1\u02e9\1\110\1\u02ea"+ - "\1\110\1\u02eb\1\110\1\u02ec\1\110\1\u02ed\3\110\1\u02ee"+ - "\1\110\1\u02ef\1\u02f0\1\u02f1\2\110\1\u02f2\3\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\2\110\1\u02f3\32\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\1\u02f4\34\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ - "\1\373\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\4\110\1\u02d7\30\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\12\110"+ - "\1\u02f5\22\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\7\110\1\356\25\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ - "\1\u02f6\3\110\1\u02f7\22\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\25\110\1\356\7\110"+ + "\26\0\11\110\1\377\23\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\11\110\1\u0232\23\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\6\110\1\u02f8\26\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\3\110\1\u02f9\10\110"+ - "\1\u02fa\14\110\1\u02f2\3\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\6\110\1\u02fb\26\110"+ + "\26\0\4\110\1\u0233\30\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\13\110\1\u0234\21\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\14\110\1\u02fc\20\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\12\110\1\u01ed\22\110"+ + "\26\0\3\110\1\u0235\31\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\7\110\1\u0236\25\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\4\110\1\356\30\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\4\110\1\u02fd\30\110"+ + "\26\0\1\u0237\2\110\1\u0238\10\110\1\u0139\1\u0239\17\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\10\110\1\u02fe\24\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\3\110\1\u02ff\10\110"+ - "\1\u0300\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\12\110\1\u0301\22\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\17\110"+ - "\1\u0302\15\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\27\110\1\u0303\5\110\2\0\3\110"+ + "\26\0\11\110\1\u023a\23\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\21\110\1\u023b\13\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\13\110\1\u023c\21\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\20\110\1\u0139\14\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\12\110\1\u023d\22\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\15\110\1\u023e\3\110"+ + "\1\u0236\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\11\110\1\u023f\23\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\30\110"+ + "\1\u0139\4\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\11\110\1\u0240\2\110\1\u0241\20\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\21\110\1\u0242\13\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\12\110\1\u0243\22\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\1\110\1\u0244\2\110\1\u0245\30\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ + "\1\u0245\5\110\1\u0246\12\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\27\110\1\u0139\5\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\14\110\1\u0247\20\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\3\110\1\u0248\11\110"+ + "\1\u0249\17\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\30\110\1\u024a\4\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ + "\1\u024b\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\1\u024c\34\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\12\110\1\u0139"+ + "\2\110\1\u024d\17\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\4\110\1\u024e\30\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\13\110\1\u024f\21\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\14\110\1\u0250\20\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\22\110\1\u0251\12\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\26\110\1\u0252\6\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\6\110\1\u0253\26\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\1\110\1\u0254\33\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\6\110\1\u0255\26\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\11\110\1\u0256\23\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\6\110\1\u0257\26\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\65\0\1\u0258\41\0\30\110\1\u0259"+ + "\4\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\47\0\1\u025a\73\0\1\u025b\100\0\1\u025c\76\0"+ + "\1\u025d\15\0\1\u025e\3\0\1\u025f\44\0\1\u0260\106\0"+ + "\1\u0261\113\0\1\u0262\1\u0263\61\0\1\u0264\6\0\1\u0265"+ + "\107\0\1\u0266\57\0\15\110\1\u0267\17\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\15\0\3\u016a"+ + "\1\u0268\52\u016a\1\u016b\25\u016a\1\u0269\52\u016a\1\u016b\22\u016a"+ + "\3\u016d\1\u026a\62\u016d\1\u016e\15\u016d\1\u026b\62\u016d\1\u016e"+ + "\12\u016d\3\216\1\u026c\2\216\1\217\72\216\15\0\1\u026d"+ + "\74\0\6\36\1\u026e\26\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\10\36"+ + "\1\232\24\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\11\36\1\u026f\23\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\3\36\1\u0270\31\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\14\36\1\u0270\20\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\22\36"+ + "\1\u0271\12\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\10\36\1\u0272\24\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\10\36\1\u0273\24\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\14\36\1\u0274\20\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\17\36"+ + "\1\232\15\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\1\u0275\34\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\6\36\1\u0276\26\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\13\36\1\u0277\6\36\1\u0278\12\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\17\36\1\u0279\15\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\20\36\1\u027a"+ + "\14\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\6\36\1\u027b\5\36\1\u027c"+ + "\20\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\5\36\1\232\27\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\15\36\1\u027d\17\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\14\36\1\u027e\20\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\20\36\1\u0272"+ + "\14\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\13\36\1\u027f\21\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\1\u0190\34\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\14\36"+ + "\1\u0272\20\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\1\u0280\34\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\2\36\1\u0281\32\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\14\36\1\u0282\20\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\11\36\1\u0283"+ + "\23\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\6\36\1\u0284\26\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\21\36\1\u0285\13\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\7\36\1\u0272\25\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\12\36\1\u0286"+ + "\22\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\6\36\1\u0287\26\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\5\36\1\u0272\27\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\4\36\1\u0288\30\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\1\36\1\u0272"+ + "\33\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\2\36\1\u0289\32\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\22\36\1\u028a\12\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\14\36\1\u018a\20\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\6\36\1\u028b"+ + "\26\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\22\36\1\u028c\12\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\11\36\1\u028d\23\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\6\36\1\u028e\26\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\11\36\1\u028f"+ + "\23\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\21\36\1\u027b\13\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\4\36\1\u0290\30\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\3\36\1\u0291\31\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\6\36\1\u0292"+ + "\1\232\25\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\60\0\2\u01aa\3\0\2\u01aa"+ + "\7\0\1\u01aa\30\0\11\36\1\u0293\23\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\31\0\1\u0294\133\0\1\u017a\51\0\1\u0295\71\0\1\u0296"+ + "\2\0\1\u0297\10\0\1\u01ae\1\u0298\74\0\1\u0299\110\0"+ + "\1\u029a\72\0\1\u029b\105\0\1\u01ae\72\0\1\u029c\103\0"+ + "\1\u029d\3\0\1\u0295\70\0\1\u029e\117\0\1\u01ae\61\0"+ + "\1\u029f\2\0\1\u02a0\105\0\1\u02a1\71\0\1\u02a2\67\0"+ + "\1\u02a3\2\0\1\u02a4\110\0\1\u02a4\5\0\1\u02a5\105\0"+ + "\1\u01ae\65\0\1\u02a6\67\0\1\u02a7\11\0\1\u02a8\20\0"+ + "\1\u017a\72\0\1\u02a9\56\0\1\u02aa\72\0\1\u02ab\112\0"+ + "\1\u01ae\2\0\1\u02ac\67\0\1\u02ad\107\0\1\u02ae\101\0"+ + "\1\u02af\106\0\1\u02b0\104\0\1\u02b1\60\0\1\u02b2\73\0"+ + "\1\u02b3\105\0\1\u02b4\103\0\1\u02b5\75\0\1\u02b6\131\0"+ + "\1\u01ae\47\0\1\306\23\0\2\60\2\0\1\u017a\2\60"+ + "\1\0\1\307\5\0\1\60\1\111\1\306\43\0\1\u02b7"+ + "\63\0\2\110\1\u02b8\32\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\13\110\1\u02b9\21\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\6\110\1\u02ba\26\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\5\110\1\u02bb\27\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\3\110\1\u02bc\31\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\4\110\1\365\30\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\21\110\1\u02bd\13\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\13\110\1\u02bd\21\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\10\110\1\357\24\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\13\110\1\u02be\21\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\6\110\1\u02bf\26\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\20\110\1\u02bb\14\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\26\110\1\u02c0\6\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\14\110\1\u02c1\20\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\21\110\1\u02c2\13\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\7\110\1\u02c3\25\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\11\110\1\u02c4\23\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\15\110\1\u02c5\17\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\20\110\1\u02c6\14\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\11\110\1\u02c7\23\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\13\110\1\u02c8\21\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\11\110\1\u02c9\23\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\3\110\1\u02ca\10\110\1\u02cb\20\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\10\110"+ + "\1\u02cc\24\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\20\110\1\u02cd\14\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\13\110"+ + "\1\u0123\21\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\17\110\1\357\15\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\13\110"+ + "\1\u0134\21\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\6\110\1\u02ce\26\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\2\110"+ + "\1\u02cf\32\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\11\110\1\u01d8\23\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ + "\1\u02d0\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\3\110\1\u02d1\31\110\2\0\3\110"+ "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\22\110"+ - "\1\u0304\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\13\110\1\u0305\21\110\2\0\3\110"+ + "\1\u02d2\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\13\110\1\u02d3\21\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\4\110"+ + "\1\u01da\30\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\6\110\1\u02d4\26\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\17\110"+ + "\1\u02d5\15\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\4\110\1\u02d6\30\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ + "\1\u02d7\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\20\110\1\u02d8\14\110\2\0\3\110"+ "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\22\110"+ - "\1\u0306\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\10\110\1\u0307\24\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\3\110"+ - "\1\u0308\31\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\110\1\u0309\4\110\1\u030a\26\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\6\110\1\u030b\26\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\34\110\1\u030c\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\11\110\1\u02d7\23\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\17\110\1\u01d7\15\110\2\0"+ + "\1\u02d9\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\13\110\1\u02da\21\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ + "\1\u02db\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\14\110\1\u02dc\20\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ + "\1\u02dd\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\11\110\1\u02de\23\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ + "\1\u02df\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\22\110\1\u02e0\12\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\110"+ + "\1\u02e1\33\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\1\u02e2\34\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\21\110\1\u02e3"+ + "\13\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\4\110\1\u02e4\1\110\1\u02e5\26\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\21\110\1\u030d\13\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\1\110\1\u030e\33\110\2\0"+ + "\6\110\1\u02e6\26\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\6\110\1\u02e7\26\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\3\110\1\u030f\31\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\13\110\1\u0310\21\110\2\0"+ + "\12\110\1\u02df\22\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\16\110\1\u02ce\16\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\14\110\1\u0311\20\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\21\110\1\u02cd\13\110\2\0"+ + "\1\u02e8\3\110\1\u02e9\1\110\1\u02ea\1\110\1\u02eb\1\110"+ + "\1\u02ec\1\110\1\u02ed\1\110\1\u02ee\3\110\1\u02ef\1\110"+ + "\1\u02f0\1\u02f1\1\u02f2\2\110\1\u02f3\3\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\2\110"+ + "\1\u02f4\32\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\1\u02f5\34\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\374"+ + "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\4\110\1\u02d8\30\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\12\110\1\u02f6"+ + "\22\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\7\110\1\357\25\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\u02f7"+ + "\3\110\1\u02f8\22\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\25\110\1\357\7\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\7\110\1\u0312\25\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\4\110\1\u0313\30\110\2\0"+ + "\6\110\1\u02f9\26\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\3\110\1\u02fa\10\110\1\u02fb"+ + "\14\110\1\u02f3\3\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\6\110\1\u02fc\26\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\12\110\1\356\22\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\6\110\1\u0314\26\110\2\0"+ + "\14\110\1\u02fd\20\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\12\110\1\u01ee\22\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\10\110\1\u0138\24\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\11\110\1\u0315\23\110\2\0"+ + "\4\110\1\357\30\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\4\110\1\u02fe\30\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\3\110\1\u0316\31\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\14\110\1\u0316\20\110\2\0"+ + "\10\110\1\u02ff\24\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\3\110\1\u0300\10\110\1\u0301"+ + "\20\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\12\110\1\u0302\22\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\17\110\1\u0303"+ + "\15\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\27\110\1\u0304\5\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\22\110\1\u0305"+ + "\12\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\13\110\1\u0306\21\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\22\110\1\u0307"+ + "\12\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\10\110\1\u0308\24\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\3\110\1\u0309"+ + "\31\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\1\110\1\u030a\4\110\1\u030b\26\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\22\110\1\u0317\12\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\10\110\1\u0318\24\110\2\0"+ + "\6\110\1\u030c\26\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\34\110\1\u030d\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ + "\1\u02d8\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\17\110\1\u01d8\15\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\21\110"+ + "\1\u030e\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\1\110\1\u030f\33\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\3\110"+ + "\1\u0310\31\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\13\110\1\u0311\21\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ + "\1\u0312\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\21\110\1\u02ce\13\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\7\110"+ + "\1\u0313\25\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\4\110\1\u0314\30\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\12\110"+ + "\1\357\22\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\6\110\1\u0315\26\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\10\110"+ + "\1\u0139\24\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\11\110\1\u0316\23\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\3\110"+ + "\1\u0317\31\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\14\110\1\u0317\20\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\22\110"+ + "\1\u0318\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\10\110\1\u0319\24\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ + "\1\u0316\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\17\110\1\u0139\15\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u031a"+ + "\34\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\17\110\1\u031b\15\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\u031c"+ + "\5\110\1\u031d\20\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\5\110\1\u0139\27\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\14\110\1\u0315\20\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\17\110\1\u0138\15\110\2\0"+ + "\14\110\1\u031e\20\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\20\110\1\u0319\14\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\1\u0319\34\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\17\110\1\u031a\15\110\2\0\3\110"+ + "\13\110\1\u031f\21\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\1\u0246\34\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ + "\1\u0319\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\2\110\1\u0320\32\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ + "\1\u0321\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\11\110\1\u0322\23\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\21\110"+ + "\1\u0323\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\7\110\1\u0319\25\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\12\110"+ + "\1\u0324\22\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\5\110\1\u0319\27\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\4\110"+ + "\1\u0325\30\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\1\110\1\u0319\33\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\2\110"+ + "\1\u0326\32\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\14\110\1\u0241\20\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\22\110"+ + "\1\u0327\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\11\110\1\u0328\23\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\21\110"+ + "\1\u031c\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\4\110\1\u0329\30\110\2\0\3\110"+ "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ - "\1\u031b\5\110\1\u031c\20\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\5\110\1\u0138\27\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\14\110\1\u031d\20\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\20\110\1\u0318\14\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\13\110\1\u031e\21\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\1\u0245\34\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\14\110\1\u0318\20\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\2\110\1\u031f\32\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\14\110\1\u0320\20\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\11\110\1\u0321\23\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\21\110\1\u0322\13\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\7\110\1\u0318\25\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\12\110\1\u0323\22\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\5\110\1\u0318\27\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\4\110\1\u0324\30\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\1\110\1\u0318\33\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\2\110\1\u0325\32\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\14\110\1\u0240\20\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\22\110\1\u0326\12\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\11\110\1\u0327\23\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\21\110\1\u031b\13\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\4\110\1\u0328\30\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\6\110\1\u0329\1\u0138\25\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\11\110\1\u032a\23\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\21\110\1\u032b\13\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\34\0\1\u032c\72\0\1\u032d"+ - "\106\0\1\u0264\73\0\1\u032e\112\0\1\u032f\107\0\1\u0330"+ - "\72\0\1\u0331\104\0\1\u0332\74\0\1\u0333\70\0\1\u0334"+ - "\76\0\1\u0335\1\u0336\6\0\1\u0337\100\0\1\u0338\66\0"+ - "\22\110\1\u0339\12\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\15\0\3\u0169\1\u033a\52\u0169\1\u016a"+ - "\22\u0169\3\u016c\1\u033a\62\u016c\1\u016d\12\u016c\17\0\1\u033b"+ - "\72\0\14\36\1\u028c\20\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\26\0\15\36"+ - "\1\u0189\17\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\26\0\13\36\1\u033c\21\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\26\0\15\36\1\u033d\17\36\1\0\1\230"+ - "\3\36\1\230\3\0\1\36\1\230\1\36\1\0\1\36"+ - "\26\0\6\36\1\231\26\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\26\0\15\36"+ - "\1\u033e\17\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\26\0\4\36\1\u033f\30\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\26\0\13\36\1\u0340\21\36\1\0\1\230"+ - "\3\36\1\230\3\0\1\36\1\230\1\36\1\0\1\36"+ - "\26\0\26\36\1\u0341\6\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\26\0\12\36"+ - "\1\u0342\22\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\26\0\1\36\1\u0343\33\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\26\0\6\36\1\u0344\26\36\1\0\1\230"+ - "\3\36\1\230\3\0\1\36\1\230\1\36\1\0\1\36"+ - "\26\0\12\36\1\u0345\22\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\26\0\13\36"+ - "\1\u0346\21\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\26\0\17\36\1\u0347\15\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\26\0\6\36\1\u0348\26\36\1\0\1\230"+ - "\3\36\1\230\3\0\1\36\1\230\1\36\1\0\1\36"+ - "\26\0\11\36\1\u027d\23\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\26\0\11\36"+ - "\1\u0349\23\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\26\0\26\36\1\u034a\6\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\26\0\1\u034b\34\36\1\0\1\230\3\36"+ - "\1\230\3\0\1\36\1\230\1\36\1\0\1\36\26\0"+ - "\6\36\1\u034c\26\36\1\0\1\230\3\36\1\230\3\0"+ - "\1\36\1\230\1\36\1\0\1\36\26\0\12\36\1\u034d"+ - "\22\36\1\0\1\230\3\36\1\230\3\0\1\36\1\230"+ - "\1\36\1\0\1\36\26\0\3\36\1\u034e\31\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\26\0\6\36\1\u034f\26\36\1\0\1\230\3\36"+ - "\1\230\3\0\1\36\1\230\1\36\1\0\1\36\26\0"+ - "\6\36\1\u0350\6\36\1\u0351\10\36\1\u0352\6\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\26\0\10\36\1\u0353\24\36\1\0\1\230\3\36"+ - "\1\230\3\0\1\36\1\230\1\36\1\0\1\36\26\0"+ - "\11\36\1\u0354\23\36\1\0\1\230\3\36\1\230\3\0"+ - "\1\36\1\230\1\36\1\0\1\36\26\0\3\36\1\u0355"+ - "\31\36\1\0\1\230\3\36\1\230\3\0\1\36\1\230"+ - "\1\36\1\0\1\36\26\0\3\36\1\231\31\36\1\0"+ - "\1\u0179\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\26\0\3\36\1\u0356\31\36\1\0\1\230\3\36"+ - "\1\230\3\0\1\36\1\230\1\36\1\0\1\36\26\0"+ - "\6\36\1\u0357\26\36\1\0\1\230\3\36\1\230\3\0"+ - "\1\36\1\230\1\36\1\0\1\36\26\0\1\36\1\u028c"+ - "\33\36\1\0\1\230\3\36\1\230\3\0\1\36\1\230"+ - "\1\36\1\0\1\36\26\0\6\36\1\u0358\26\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\26\0\1\u026e\34\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\26\0\25\36"+ - "\1\231\7\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\34\0\1\u0359\102\0\1\u01ad"+ - "\101\0\1\u035a\72\0\1\u035b\111\0\1\u035b\106\0\1\u035c"+ - "\66\0\1\u035d\104\0\1\u035a\103\0\1\u01ad\61\0\1\u035e"+ - "\117\0\1\u035f\67\0\1\u0360\5\0\1\u0361\71\0\1\u01ad"+ - "\107\0\1\u0362\104\0\1\u035d\73\0\1\u0363\65\0\1\u02a4"+ - "\114\0\1\u035d\66\0\1\u0364\112\0\1\u0365\75\0\1\u0366"+ - "\110\0\1\u0367\66\0\1\u035d\103\0\1\u0368\73\0\1\u035d"+ - "\77\0\1\u0369\75\0\1\u035d\101\0\1\u036a\112\0\1\u029f"+ - "\106\0\1\u036b\67\0\1\u036c\110\0\1\u0360\63\0\1\u036d"+ - "\102\0\1\u036e\1\u01ad\102\0\1\u036f\111\0\1\u0370\56\0"+ - "\3\110\1\u0371\31\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\13\110\1\356\21\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\11\110\1\u0372\23\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\13\110\1\u0373\21\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\2\110\1\u0374\32\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\1\110\1\u02d7\33\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\14\110\1\u0375\20\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\2\110\1\u0376\32\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\26\110\1\u0210\6\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\6\110\1\u0377\26\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\12\110\1\u0378\22\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\6\110\1\u030d\26\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\14\110\1\u0379\20\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\6\110\1\u037a\26\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\22\110\1\u037b\12\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\14\110\1\u01f3\20\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\10\110\1\u037c\24\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\21\110\1\u0113\13\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\14\110\1\u02cd\20\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\11\110\1\u02fe\23\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\2\110\1\u037d\32\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\14\110\1\u037e\20\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\11\110\1\356\23\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\4\110\1\u037f\15\110\1\u0380"+ - "\12\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\110\1\u0381\33\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\2\110\1\u0382"+ - "\32\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\11\110\1\u0383\23\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\14\110\1\u0384"+ - "\20\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\11\110\1\u0385\23\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\1\110\1\u0386"+ - "\33\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\14\110\1\u02d6\20\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\21\110\1\356"+ - "\13\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\6\110\1\356\26\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\14\110\1\u0387"+ - "\20\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\26\110\1\u0388\6\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\5\110\1\u01d7"+ - "\27\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\13\110\1\u0389\21\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\13\110\1\u02dd"+ - "\21\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\u021a\34\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\1\110\1\356\33\110"+ + "\1\u032a\1\u0139\25\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\11\110\1\u032b\23\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\21\110\1\u032c\13\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\34\0\1\u032d\72\0\1\u032e\106\0"+ + "\1\u0265\73\0\1\u032f\112\0\1\u0330\107\0\1\u0331\72\0"+ + "\1\u0332\104\0\1\u0333\74\0\1\u0334\70\0\1\u0335\76\0"+ + "\1\u0336\1\u0337\6\0\1\u0338\100\0\1\u0339\66\0\22\110"+ + "\1\u033a\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\15\0\3\u016a\1\u033b\52\u016a\1\u016b\22\u016a"+ + "\3\u016d\1\u033b\62\u016d\1\u016e\12\u016d\17\0\1\u033c\72\0"+ + "\14\36\1\u028d\20\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\15\36\1\u018a"+ + "\17\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\13\36\1\u033d\21\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\15\36\1\u033e\17\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\6\36\1\232\26\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\15\36\1\u033f"+ + "\17\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\4\36\1\u0340\30\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\13\36\1\u0341\21\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\26\36\1\u0342\6\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\12\36\1\u0343"+ + "\22\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\1\36\1\u0344\33\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\6\36\1\u0345\26\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\12\36\1\u0346\22\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\13\36\1\u0347"+ + "\21\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\17\36\1\u0348\15\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\6\36\1\u0349\26\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\11\36\1\u027e\23\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\11\36\1\u034a"+ + "\23\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\26\36\1\u034b\6\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\1\u034c\34\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\6\36"+ + "\1\u034d\26\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\12\36\1\u034e\22\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\3\36\1\u034f\31\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\6\36\1\u0350\26\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\6\36"+ + "\1\u0351\6\36\1\u0352\10\36\1\u0353\6\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\10\36\1\u0354\24\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\11\36"+ + "\1\u0355\23\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\3\36\1\u0356\31\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\3\36\1\232\31\36\1\0\1\u017a"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\3\36\1\u0357\31\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\6\36"+ + "\1\u0358\26\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\1\36\1\u028d\33\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\6\36\1\u0359\26\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\1\u026f\34\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\25\36\1\232"+ + "\7\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\34\0\1\u035a\102\0\1\u01ae\101\0"+ + "\1\u035b\72\0\1\u035c\111\0\1\u035c\106\0\1\u035d\66\0"+ + "\1\u035e\104\0\1\u035b\103\0\1\u01ae\61\0\1\u035f\117\0"+ + "\1\u0360\67\0\1\u0361\5\0\1\u0362\71\0\1\u01ae\107\0"+ + "\1\u0363\104\0\1\u035e\73\0\1\u0364\65\0\1\u02a5\114\0"+ + "\1\u035e\66\0\1\u0365\112\0\1\u0366\75\0\1\u0367\110\0"+ + "\1\u0368\66\0\1\u035e\103\0\1\u0369\73\0\1\u035e\77\0"+ + "\1\u036a\75\0\1\u035e\101\0\1\u036b\112\0\1\u02a0\106\0"+ + "\1\u036c\67\0\1\u036d\110\0\1\u0361\63\0\1\u036e\102\0"+ + "\1\u036f\1\u01ae\102\0\1\u0370\111\0\1\u0371\56\0\3\110"+ + "\1\u0372\31\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\13\110\1\357\21\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ + "\1\u0373\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\13\110\1\u0374\21\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\2\110"+ + "\1\u0375\32\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\1\110\1\u02d8\33\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ + "\1\u0376\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\2\110\1\u0377\32\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\26\110"+ + "\1\u0211\6\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\6\110\1\u0378\26\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\12\110"+ + "\1\u0379\22\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\6\110\1\u030e\26\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ + "\1\u037a\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\6\110\1\u037b\26\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\22\110"+ + "\1\u037c\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\14\110\1\u01f4\20\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\10\110"+ + "\1\u037d\24\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\21\110\1\u0114\13\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ + "\1\u02ce\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\11\110\1\u02ff\23\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\2\110"+ + "\1\u037e\32\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\14\110\1\u037f\20\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ + "\1\357\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\4\110\1\u0380\15\110\1\u0381\12\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\11\110\1\u038a\23\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\2\110\1\u038b\32\110"+ + "\26\0\1\110\1\u0382\33\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\2\110\1\u0383\32\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\14\110\1\u038c\20\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\27\110\1\u0383\5\110"+ + "\26\0\11\110\1\u0384\23\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\14\110\1\u0385\20\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\1\u038d\34\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\1\u0122\34\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\30\110"+ - "\1\u038e\4\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\11\110\1\u038f\23\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\4\110"+ - "\1\u0390\21\110\1\u0391\6\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\6\110\1\u0392\12\110"+ - "\1\u0393\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\7\110\1\u0394\25\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\376"+ - "\34\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\22\110\1\u0395\12\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\21\110\1\u0396"+ - "\13\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\4\110\1\u0397\1\110\1\u0398\26\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\10\110\1\u0399\1\u021a\23\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\6\110\1\u039a\26\110"+ + "\26\0\11\110\1\u0386\23\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\1\110\1\u0387\33\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\6\110\1\u039b\26\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\22\110\1\u039c\12\110"+ + "\26\0\14\110\1\u02d7\20\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\21\110\1\357\13\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\3\110\1\u039d\31\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\26\110\1\u039e\6\110"+ + "\26\0\6\110\1\357\26\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\14\110\1\u0388\20\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\11\110\1\u039f\23\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\3\110\1\356\31\110"+ + "\26\0\26\110\1\u0389\6\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\5\110\1\u01d8\27\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\15\110\1\u03a0\17\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\23\110\1\u03a1\11\110"+ + "\26\0\13\110\1\u038a\21\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\13\110\1\u02de\21\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\10\110\1\u03a2\24\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\1\u03a3\34\110\2\0"+ + "\26\0\1\u021b\34\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\1\110\1\357\33\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\4\110\1\u0375\30\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\1\356\34\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u03a4"+ - "\34\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\u03a5\34\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\21\110\1\u03a6\13\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\1\u03a7\34\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\14\110\1\u03a8\20\110\2\0"+ + "\11\110\1\u038b\23\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\2\110\1\u038c\32\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\3\110\1\u03a9\14\110\1\u03aa\14\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\1\u03ab\34\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\10\110\1\u03ac\24\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\21\110\1\u03ad\13\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\3\110\1\u03ae\31\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\22\110\1\u0122\12\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\6\110\1\u0122\26\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\6\110\1\u03af\26\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\12\110\1\u03af\22\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\11\110\1\u03b0\23\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\22\110\1\u02d7\12\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\12\110\1\u0122\22\110"+ + "\14\110\1\u038d\20\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\27\110\1\u0384\5\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\1\u038e\34\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\1\u0123\34\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\30\110\1\u038f"+ + "\4\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\11\110\1\u0390\23\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\4\110\1\u0391"+ + "\21\110\1\u0392\6\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\6\110\1\u0393\12\110\1\u0394"+ + "\13\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\7\110\1\u0395\25\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\1\377\34\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\2\110\1\u03b1\32\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\6\110\1\u03b2\26\110"+ + "\26\0\22\110\1\u0396\12\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\21\110\1\u0397\13\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\15\110\1\u039d\17\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\14\110\1\u03b3\20\110"+ + "\26\0\4\110\1\u0398\1\110\1\u0399\26\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\10\110"+ + "\1\u039a\1\u021b\23\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\6\110\1\u039b\26\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\6\110\1\u039c\26\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\22\110\1\u039d\12\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\3\110\1\u039e\31\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\26\110\1\u039f\6\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\11\110\1\u03a0\23\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\3\110\1\357\31\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\15\110\1\u03a1\17\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\23\110\1\u03a2\11\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\10\110\1\u03a3\24\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\1\u03a4\34\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\4\110"+ + "\1\u0376\30\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\1\357\34\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\1\u03a5\34\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\1\u03b4\34\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\2\110\1\u03b5\32\110\2\0"+ + "\26\0\1\u03a6\34\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\21\110\1\u03a7\13\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\14\110\1\u0327\20\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\15\110\1\u0240\17\110\2\0"+ + "\1\u03a8\34\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\14\110\1\u03a9\20\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\3\110"+ + "\1\u03aa\14\110\1\u03ab\14\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\1\u03ac\34\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\13\110\1\u03b6\21\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\15\110\1\u03b7\17\110\2\0"+ + "\10\110\1\u03ad\24\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\21\110\1\u03ae\13\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\6\110\1\u0138\26\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\4\110\1\u03b8\30\110\2\0"+ + "\3\110\1\u03af\31\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\22\110\1\u0123\12\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\1\110\1\u03b9\33\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\12\110\1\u03ba\22\110\2\0"+ + "\6\110\1\u0123\26\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\6\110\1\u03b0\26\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\13\110\1\u03bb\21\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\6\110\1\u03bc\26\110\2\0"+ + "\12\110\1\u03b0\22\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\11\110\1\u03b1\23\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\11\110\1\u031d\23\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\26\110\1\u03bd\6\110\2\0"+ + "\22\110\1\u02d8\12\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\12\110\1\u0123\22\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\1\u03be\34\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\6\110\1\u03bf\26\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\12\110"+ - "\1\u03c0\22\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\3\110\1\u03c1\31\110\2\0\3\110"+ + "\2\110\1\u03b2\32\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\6\110\1\u03b3\26\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\15\110\1\u039e\17\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\14\110\1\u03b4\20\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\1\u03b5\34\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\2\110\1\u03b6\32\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ + "\1\u0328\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\15\110\1\u0241\17\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\13\110"+ + "\1\u03b7\21\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\15\110\1\u03b8\17\110\2\0\3\110"+ "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ - "\1\u03c2\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\6\110\1\u03c3\6\110\1\u03c4\10\110"+ - "\1\u03c5\6\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\3\110\1\u03c6\31\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\3\110"+ - "\1\u0138\31\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\110\1\u0327\33\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u0315"+ + "\1\u0139\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\4\110\1\u03b9\30\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\110"+ + "\1\u03ba\33\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\12\110\1\u03bb\22\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\13\110"+ + "\1\u03bc\21\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\6\110\1\u03bd\26\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ + "\1\u031e\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\26\110\1\u03be\6\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u03bf"+ "\34\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\25\110\1\u0138\7\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\12\110\1\u03c7"+ - "\22\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\31\0\1\u03c8\106\0\1\u03c9\72\0\1\u03ca\100\0"+ - "\1\u03cb\75\0\1\u03cc\115\0\1\u03cd\71\0\1\u03ce\74\0"+ - "\1\u03cf\102\0\1\u0264\74\0\1\u03d0\5\0\1\u03d1\3\0"+ - "\1\u03d2\3\0\1\u03d3\3\0\1\u03d4\64\0\1\u0337\106\0"+ - "\1\u0264\100\0\1\u03d5\64\0\11\110\1\u03d6\23\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\31\0"+ - "\1\u03d7\75\0\21\36\1\u03d8\13\36\1\0\1\230\3\36"+ - "\1\230\3\0\1\36\1\230\1\36\1\0\1\36\26\0"+ - "\14\36\1\u03d9\20\36\1\0\1\230\3\36\1\230\3\0"+ - "\1\36\1\230\1\36\1\0\1\36\26\0\5\36\1\u03da"+ - "\27\36\1\0\1\230\3\36\1\230\3\0\1\36\1\230"+ - "\1\36\1\0\1\36\26\0\6\36\1\u03db\26\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\26\0\26\36\1\u03dc\6\36\1\0\1\230\3\36"+ - "\1\230\3\0\1\36\1\230\1\36\1\0\1\36\26\0"+ - "\4\36\1\u03dd\30\36\1\0\1\230\3\36\1\230\3\0"+ - "\1\36\1\230\1\36\1\0\1\36\26\0\21\36\1\u03de"+ - "\13\36\1\0\1\230\3\36\1\230\3\0\1\36\1\230"+ - "\1\36\1\0\1\36\26\0\14\36\1\231\20\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\26\0\1\u03df\34\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\26\0\15\36"+ - "\1\u0345\17\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\26\0\3\36\1\u03e0\31\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\26\0\21\36\1\u03e1\13\36\1\0\1\230"+ - "\3\36\1\230\3\0\1\36\1\230\1\36\1\0\1\36"+ - "\26\0\4\36\1\u03e2\30\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\26\0\7\36"+ - "\1\u03e3\25\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\26\0\21\36\1\u03e4\13\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\26\0\2\36\1\u03e5\32\36\1\0\1\u0179"+ - "\3\36\1\230\3\0\1\36\1\230\1\36\1\0\1\36"+ - "\26\0\15\36\1\u017d\17\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\26\0\11\36"+ - "\1\u03e6\23\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\26\0\21\36\1\u03e7\13\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\26\0\13\36\1\u0274\21\36\1\0\1\230"+ - "\3\36\1\230\3\0\1\36\1\230\1\36\1\0\1\36"+ - "\26\0\16\36\1\u03e8\16\36\1\0\1\230\3\36\1\230"+ - "\3\0\1\36\1\230\1\36\1\0\1\36\26\0\16\36"+ - "\1\u03e9\16\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\26\0\15\36\1\u018e\17\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\26\0\3\36\1\u03ea\31\36\1\0\1\230"+ - "\3\36\1\230\3\0\1\36\1\230\1\36\1\0\1\36"+ - "\42\0\1\u036c\101\0\1\u029f\76\0\1\u03eb\102\0\1\u03ec"+ - "\71\0\1\u01ad\76\0\1\u03ed\75\0\1\u03ee\111\0\1\u03ef"+ - "\101\0\1\u03f0\73\0\1\u03f1\103\0\1\u0362\115\0\1\u03f2"+ - "\52\0\1\u03f3\106\0\1\u03f4\104\0\1\u03f5\71\0\1\u03f6"+ - "\103\0\1\u03f7\100\0\1\u03f8\6\0\1\u03f9\10\0\1\u03fa"+ - "\55\0\1\u03fb\100\0\1\u01ad\32\0\1\u0179\43\0\1\u036c"+ - "\77\0\1\u035a\125\0\1\u01ad\64\0\1\u03fc\67\0\4\110"+ - "\1\u03fd\30\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\3\110\1\u03fe\31\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\26\110"+ - "\1\u0214\6\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\u03ff\34\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\13\110\1\u0400"+ - "\21\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\14\110\1\u0401\20\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\12\110\1\u0402"+ + "\1\110\26\0\6\110\1\u03c0\26\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\12\110\1\u03c1"+ "\22\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\110\1\u01d7\33\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\25\110\1\u0403"+ - "\7\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\4\110\1\u0404\30\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\4\110\1\u0405"+ - "\30\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\2\110\1\u0406\32\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\15\110\1\u0407"+ - "\17\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\5\110\1\356\27\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\21\110\1\u0408"+ - "\13\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\10\110\1\u0409\24\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\2\110\1\u040a"+ - "\32\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\24\110\1\u040b\10\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\u040c"+ - "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\13\110\1\u040d\21\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\10\110\1\u0122"+ - "\24\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\21\110\1\u040e\13\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\u01d7"+ + "\1\110\26\0\3\110\1\u03c2\31\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\u03c3"+ "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\25\110\1\u040f\7\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\10\110\1\u0410"+ - "\24\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\4\110\1\u0411\30\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\14\110\1\u0412"+ - "\20\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\13\110\1\u0413\21\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\15\110\1\u02d7"+ - "\17\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\2\110\1\u0414\32\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\3\110\1\u02d7"+ + "\1\110\26\0\6\110\1\u03c4\6\110\1\u03c5\10\110\1\u03c6"+ + "\6\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\3\110\1\u03c7\31\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\3\110\1\u0139"+ "\31\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\10\110\1\u0415\24\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\14\110\1\u01ef"+ - "\20\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\u0416\34\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\24\110\1\u0417\10\110"+ + "\1\110\26\0\1\110\1\u0328\33\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\1\u0316\34\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\25\110\1\u0139\7\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\12\110\1\u03c8\22\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\31\0\1\u03c9\106\0\1\u03ca\72\0\1\u03cb\100\0\1\u03cc"+ + "\75\0\1\u03cd\115\0\1\u03ce\71\0\1\u03cf\74\0\1\u03d0"+ + "\102\0\1\u0265\74\0\1\u03d1\5\0\1\u03d2\3\0\1\u03d3"+ + "\3\0\1\u03d4\3\0\1\u03d5\64\0\1\u0338\106\0\1\u0265"+ + "\100\0\1\u03d6\64\0\11\110\1\u03d7\23\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\31\0\1\u03d8"+ + "\75\0\21\36\1\u03d9\13\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\14\36"+ + "\1\u03da\20\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\5\36\1\u03db\27\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\6\36\1\u03dc\26\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\26\36\1\u03dd\6\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\4\36"+ + "\1\u03de\30\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\21\36\1\u03df\13\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\14\36\1\232\20\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\1\u03e0\34\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\15\36\1\u0346"+ + "\17\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\3\36\1\u03e1\31\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\21\36\1\u03e2\13\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\4\36\1\u03e3\30\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\7\36\1\u03e4"+ + "\25\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\21\36\1\u03e5\13\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\2\36\1\u03e6\32\36\1\0\1\u017a\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\15\36\1\u017e\17\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\11\36\1\u03e7"+ + "\23\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\21\36\1\u03e8\13\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\13\36\1\u0275\21\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\16\36\1\u03e9\16\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\16\36\1\u03ea"+ + "\16\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\15\36\1\u018f\17\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\3\36\1\u03eb\31\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\42\0"+ + "\1\u036d\101\0\1\u02a0\76\0\1\u03ec\102\0\1\u03ed\71\0"+ + "\1\u01ae\76\0\1\u03ee\75\0\1\u03ef\111\0\1\u03f0\101\0"+ + "\1\u03f1\73\0\1\u03f2\103\0\1\u0363\115\0\1\u03f3\52\0"+ + "\1\u03f4\106\0\1\u03f5\104\0\1\u03f6\71\0\1\u03f7\103\0"+ + "\1\u03f8\100\0\1\u03f9\6\0\1\u03fa\10\0\1\u03fb\55\0"+ + "\1\u03fc\100\0\1\u01ae\32\0\1\u017a\43\0\1\u036d\77\0"+ + "\1\u035b\125\0\1\u01ae\64\0\1\u03fd\67\0\4\110\1\u03fe"+ + "\30\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\3\110\1\u03ff\31\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\26\110\1\u0215"+ + "\6\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\1\u0400\34\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\13\110\1\u0401\21\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\1\u011f\7\110\1\u0418\5\110\1\u0419\16\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\7\110\1\u041a\25\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\1\110\1\u041b\5\110\1\u041c"+ - "\25\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\u0219\34\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\14\110\1\u041d\11\110"+ - "\1\u041e\6\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\10\110\1\u0417\24\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ - "\1\u041f\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\3\110\1\u0420\31\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ - "\1\u0421\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\21\110\1\u0233\13\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\21\110"+ - "\1\u0422\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\11\110\1\u041b\23\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u0423"+ - "\34\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\21\110\1\u0424\13\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\1\u0425\34\110"+ + "\26\0\14\110\1\u0402\20\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\12\110\1\u0403\22\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\1\110\1\u01d8\33\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\25\110\1\u0404\7\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\4\110\1\u0405\30\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\4\110\1\u0406\30\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\16\110\1\u02f5\16\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\10\110\1\u0426\24\110"+ + "\26\0\2\110\1\u0407\32\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\15\110\1\u0408\17\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\15\110\1\u0122\17\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\4\110\1\u0427\30\110"+ + "\26\0\5\110\1\357\27\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\21\110\1\u0409\13\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\13\110\1\u0428\21\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\2\110\1\u0429\32\110"+ + "\26\0\10\110\1\u040a\24\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\2\110\1\u040b\32\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\10\110\1\u02e3\24\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\11\110\1\u042a\23\110"+ + "\26\0\24\110\1\u040c\10\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\6\110\1\u040d\26\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\14\110\1\u0405\20\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\2\110\1\u042b\32\110"+ + "\26\0\13\110\1\u040e\21\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\10\110\1\u0123\24\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\12\110\1\u042c\22\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\15\110\1\u042d\17\110"+ + "\26\0\21\110\1\u040f\13\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\6\110\1\u01d8\26\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\15\110\1\u01d9\17\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\3\110\1\u042e\31\110"+ + "\26\0\25\110\1\u0410\7\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\10\110\1\u0411\24\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\15\110\1\u042f\17\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\6\110\1\u0233\26\110"+ + "\26\0\4\110\1\u0412\30\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\14\110\1\u0413\20\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\14\110\1\u0430\20\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\22\110\1\u0431\12\110"+ + "\26\0\13\110\1\u0414\21\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\15\110\1\u02d8\17\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\21\110\1\u0432\13\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\14\110\1\u0433\20\110"+ + "\26\0\2\110\1\u0415\32\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\3\110\1\u02d8\31\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\6\110\1\u0434\26\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\21\110\1\u0435\13\110"+ + "\26\0\10\110\1\u0416\24\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\14\110\1\u01f0\20\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\14\110\1\u0138\20\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\1\u0436\34\110\2\0"+ + "\26\0\1\u0417\34\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\24\110\1\u0418\10\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\15\110\1\u03ba\17\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\21\110\1\u0437\13\110\2\0"+ + "\1\u0120\7\110\1\u0419\5\110\1\u041a\16\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\7\110"+ + "\1\u041b\25\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\1\110\1\u041c\5\110\1\u041d\25\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\1\u021a\34\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\14\110\1\u041e\11\110\1\u041f"+ + "\6\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\10\110\1\u0418\24\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\u0420"+ + "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\3\110\1\u0421\31\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\14\110\1\u0422"+ + "\20\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\21\110\1\u0234\13\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\21\110\1\u0423"+ + "\13\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\11\110\1\u041c\23\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\1\u0424\34\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\21\110\1\u0425\13\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\1\u0426\34\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\4\110\1\u0438\30\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\7\110\1\u0439\25\110\2\0"+ + "\16\110\1\u02f6\16\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\10\110\1\u0427\24\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\21\110\1\u043a\13\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\2\110\1\u043b\32\110\2\0"+ + "\15\110\1\u0123\17\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\4\110\1\u0428\30\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\15\110\1\u0238\17\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\11\110\1\u043c\23\110\2\0"+ + "\13\110\1\u0429\21\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\2\110\1\u042a\32\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\21\110\1\u043d\13\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\13\110\1\u0319\21\110\2\0"+ + "\10\110\1\u02e4\24\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\11\110\1\u042b\23\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\15\110\1\u0244\17\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\21\110\1\u043e\13\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\40\0"+ - "\1\u043f\102\0\1\u032e\66\0\1\u0440\112\0\1\u0441\70\0"+ - "\1\u0441\101\0\1\u0442\123\0\1\u0264\63\0\1\u0443\71\0"+ - "\1\u0444\21\0\1\u0445\61\0\1\u0446\113\0\1\u0447\64\0"+ - "\1\u0448\103\0\1\u0334\67\0\1\u0449\100\0\3\110\1\u044a"+ - "\31\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\31\0\1\u044b\75\0\12\36\1\231\22\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\26\0\22\36\1\u044c\12\36\1\0\1\230\3\36"+ - "\1\230\3\0\1\36\1\230\1\36\1\0\1\36\26\0"+ - "\35\36\1\0\1\u0179\3\36\1\230\3\0\1\36\1\230"+ - "\1\36\1\0\1\36\3\0\1\u044d\22\0\3\36\1\231"+ - "\31\36\1\0\1\230\3\36\1\230\3\0\1\36\1\230"+ - "\1\36\1\0\1\36\26\0\6\36\1\u044e\26\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\26\0\24\36\1\u03d8\10\36\1\0\1\230\3\36"+ - "\1\230\3\0\1\36\1\230\1\36\1\0\1\36\26\0"+ - "\4\36\1\231\30\36\1\0\1\230\3\36\1\230\3\0"+ - "\1\36\1\230\1\36\1\0\1\36\26\0\6\36\1\u044f"+ - "\26\36\1\0\1\230\3\36\1\230\3\0\1\36\1\230"+ - "\1\36\1\0\1\36\26\0\22\36\1\u0450\12\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\26\0\4\36\1\u0451\30\36\1\0\1\230\3\36"+ - "\1\230\3\0\1\36\1\230\1\36\1\0\1\36\26\0"+ - "\6\36\1\u027a\26\36\1\0\1\230\3\36\1\230\3\0"+ - "\1\36\1\230\1\36\1\0\1\36\26\0\7\36\1\u0292"+ - "\25\36\1\0\1\230\3\36\1\230\3\0\1\36\1\230"+ - "\1\36\1\0\1\36\26\0\15\36\1\u0452\17\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\26\0\11\36\1\u0453\23\36\1\0\1\230\3\36"+ - "\1\230\3\0\1\36\1\230\1\36\1\0\1\36\26\0"+ - "\12\36\1\u0454\22\36\1\0\1\230\3\36\1\230\3\0"+ - "\1\36\1\230\1\36\1\0\1\36\26\0\25\36\1\u0455"+ - "\7\36\1\0\1\230\3\36\1\230\3\0\1\36\1\230"+ - "\1\36\1\0\1\36\26\0\25\36\1\u0456\7\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\47\0\1\u0457\73\0\1\u0458\72\0\1\u0459\113\0"+ - "\1\u045a\73\0\1\u01ad\64\0\1\u045b\115\0\1\u03ef\104\0"+ - "\1\u045c\63\0\1\u045d\103\0\1\u045e\112\0\1\u045f\61\0"+ - "\1\u0460\33\0\1\u0179\57\0\1\u0297\74\0\1\u0461\110\0"+ - "\1\u0462\72\0\1\u035e\102\0\1\u02a3\66\0\1\u0463\75\0"+ - "\1\u0464\34\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\u0465\34\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\20\110\1\u02d6"+ - "\14\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\23\110\1\u02d7\11\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\11\110\1\u0466"+ - "\23\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\15\110\1\u0467\17\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\10\110\1\u0468"+ - "\24\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\6\110\1\u0469\26\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\1\u02cd\34\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\14\110\1\u046a\20\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\1\u038f\34\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\24\110\1\u046b\10\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\10\110\1\u046b\24\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\22\110\1\u046c\12\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\13\110\1\u02cc\21\110\2\0"+ + "\14\110\1\u0406\20\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\2\110\1\u042c\32\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\2\110\1\u046d\32\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\6\110\1\u02f5\26\110\2\0"+ + "\12\110\1\u042d\22\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\15\110\1\u042e\17\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\24\110\1\u0233\10\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\2\110\1\u046e\32\110\2\0"+ + "\15\110\1\u01da\17\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\3\110\1\u042f\31\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\4\110\1\u0214\30\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\6\110\1\u030a\26\110\2\0"+ + "\15\110\1\u0430\17\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\6\110\1\u0234\26\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\13\110\1\u046f\21\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\27\110\1\u02d7\5\110\2\0"+ + "\14\110\1\u0431\20\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\22\110\1\u0432\12\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\11\110\1\u0470\23\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\5\110\1\u0471\27\110\2\0"+ + "\21\110\1\u0433\13\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\14\110\1\u0434\20\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\10\110\1\u0472\24\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\6\110\1\u0473\26\110\2\0"+ + "\6\110\1\u0435\26\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\21\110\1\u0436\13\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\14\110\1\u0214\20\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\6\110\1\u0474\26\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\6\110\1\u0475\7\110\1\u0476\16\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\1\u0214\34\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\21\110\1\u0477\13\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\24\110\1\u0478\10\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\21\110\1\u0229\13\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\17\110\1\u0479\15\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\14\110\1\u047a\20\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\22\110\1\u0229\12\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\11\110\1\u047b\23\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\14\110\1\u02d7\20\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\12\110\1\u02d7\22\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\15\110\1\u040d\17\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\3\110\1\u047c\31\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\6\110\1\u047d\26\110"+ + "\14\110\1\u0139\20\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\1\u0437\34\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\15\110"+ + "\1\u03bb\17\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\21\110\1\u0438\13\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\4\110"+ + "\1\u0439\30\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\7\110\1\u043a\25\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\21\110"+ + "\1\u043b\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\2\110\1\u043c\32\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\15\110"+ + "\1\u0239\17\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\11\110\1\u043d\23\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\21\110"+ + "\1\u043e\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\13\110\1\u031a\21\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\15\110"+ + "\1\u0245\17\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\21\110\1\u043f\13\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\40\0\1\u0440"+ + "\102\0\1\u032f\66\0\1\u0441\112\0\1\u0442\70\0\1\u0442"+ + "\101\0\1\u0443\123\0\1\u0265\63\0\1\u0444\71\0\1\u0445"+ + "\21\0\1\u0446\61\0\1\u0447\113\0\1\u0448\64\0\1\u0449"+ + "\103\0\1\u0335\67\0\1\u044a\100\0\3\110\1\u044b\31\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\31\0\1\u044c\75\0\12\36\1\232\22\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\22\36\1\u044d\12\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\35\36"+ + "\1\0\1\u017a\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\3\0\1\u044e\22\0\3\36\1\232\31\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\6\36\1\u044f\26\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\24\36\1\u03d9\10\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\4\36"+ + "\1\232\30\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\6\36\1\u0450\26\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\22\36\1\u0451\12\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\4\36\1\u0452\30\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\6\36"+ + "\1\u027b\26\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\7\36\1\u0293\25\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\15\36\1\u0453\17\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\11\36\1\u0454\23\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\12\36"+ + "\1\u0455\22\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\25\36\1\u0456\7\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\25\36\1\u0457\7\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\47\0\1\u0458\73\0\1\u0459\72\0\1\u045a\113\0\1\u045b"+ + "\73\0\1\u01ae\64\0\1\u045c\115\0\1\u03f0\104\0\1\u045d"+ + "\63\0\1\u045e\103\0\1\u045f\112\0\1\u0460\61\0\1\u0461"+ + "\33\0\1\u017a\57\0\1\u0298\74\0\1\u0462\110\0\1\u0463"+ + "\72\0\1\u035f\102\0\1\u02a4\66\0\1\u0464\75\0\1\u0465"+ + "\34\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\1\u0466\34\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\20\110\1\u02d7\14\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\12\110\1\u047e\22\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\3\110\1\u047f\31\110"+ + "\26\0\23\110\1\u02d8\11\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\11\110\1\u0467\23\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\21\110\1\u0480\13\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\16\110\1\u0214\16\110"+ + "\26\0\15\110\1\u0468\17\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\10\110\1\u0469\24\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\2\110\1\u0481\32\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\1\u0482\34\110\2\0"+ + "\26\0\6\110\1\u046a\26\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\1\u02ce\34\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\15\110\1\u0483\17\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\21\110\1\u0484\13\110\2\0"+ + "\14\110\1\u046b\20\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\1\u0390\34\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\24\110"+ + "\1\u046c\10\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\10\110\1\u046c\24\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\22\110"+ + "\1\u046d\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\13\110\1\u02cd\21\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\2\110"+ + "\1\u046e\32\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\6\110\1\u02f6\26\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\24\110"+ + "\1\u0234\10\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\2\110\1\u046f\32\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\4\110"+ + "\1\u0215\30\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\6\110\1\u030b\26\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\13\110"+ + "\1\u0470\21\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\27\110\1\u02d8\5\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ + "\1\u0471\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\5\110\1\u0472\27\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\10\110"+ + "\1\u0473\24\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\6\110\1\u0474\26\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ + "\1\u0215\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\6\110\1\u0475\26\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ + "\1\u0476\7\110\1\u0477\16\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\1\u0215\34\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\2\110\1\u0485\32\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\11\110\1\u0486\23\110\2\0"+ + "\21\110\1\u0478\13\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\24\110\1\u0479\10\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\12\110\1\u0138\22\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\22\110\1\u0487\12\110\2\0"+ + "\21\110\1\u022a\13\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\17\110\1\u047a\15\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\24\110\1\u0432\10\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\4\110\1\u0138\30\110\2\0"+ + "\14\110\1\u047b\20\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\22\110\1\u022a\12\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\22\110\1\u0488\12\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\4\110\1\u0489\30\110\2\0"+ + "\11\110\1\u047c\23\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\14\110\1\u02d8\20\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\6\110\1\u031b\26\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\7\110\1\u032a\25\110\2\0"+ + "\12\110\1\u02d8\22\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\15\110\1\u040e\17\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\15\110\1\u048a\17\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\11\110\1\u048b\23\110\2\0"+ + "\3\110\1\u047d\31\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\6\110\1\u047e\26\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\12\110\1\u048c\22\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\7\110\1\u048d\25\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\42\0"+ - "\1\u048e\110\0\1\u048f\57\0\1\u0264\103\0\1\u0441\104\0"+ - "\1\u0264\76\0\1\u0490\104\0\1\u0491\64\0\1\u0492\7\0"+ - "\1\u0493\5\0\1\u0494\71\0\1\u0495\117\0\1\u0496\65\0"+ - "\1\u0497\65\0\13\110\1\u0498\21\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\11\36\1\u0271"+ - "\23\36\1\0\1\230\3\36\1\230\3\0\1\36\1\230"+ - "\1\36\1\0\1\36\26\0\3\36\1\u0499\31\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\26\0\12\36\1\u049a\22\36\1\0\1\230\3\36"+ - "\1\230\3\0\1\36\1\230\1\36\1\0\1\36\26\0"+ - "\6\36\1\u049a\26\36\1\0\1\230\3\36\1\230\3\0"+ - "\1\36\1\230\1\36\1\0\1\36\26\0\5\36\1\u049b"+ - "\27\36\1\0\1\230\3\36\1\230\3\0\1\36\1\230"+ - "\1\36\1\0\1\36\26\0\21\36\1\u01a1\13\36\1\0"+ - "\1\230\3\36\1\230\3\0\1\36\1\230\1\36\1\0"+ - "\1\36\26\0\14\36\1\u03e3\20\36\1\0\1\230\3\36"+ - "\1\230\3\0\1\36\1\230\1\36\1\0\1\36\40\0"+ - "\1\u01ad\110\0\1\u049c\61\0\1\u01ad\121\0\1\u0457\60\0"+ - "\1\u01ad\116\0\1\u049d\62\0\1\u049e\102\0\1\u0360\101\0"+ - "\1\u036f\106\0\1\u049f\74\0\1\u04a0\101\0\1\u04a1\101\0"+ - "\1\u04a2\65\0\3\110\1\u04a3\31\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\12\110\1\u04a4"+ - "\22\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\22\110\1\u04a5\12\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\u042c"+ - "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\u04a6\34\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\3\110\1\u02f5\31\110"+ + "\12\110\1\u047f\22\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\3\110\1\u0480\31\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\21\110\1\u0481\13\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\16\110\1\u0215\16\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\2\110\1\u0482\32\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\1\u0483\34\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\15\110"+ + "\1\u0484\17\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\21\110\1\u0485\13\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\2\110"+ + "\1\u0486\32\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\11\110\1\u0487\23\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\12\110"+ + "\1\u0139\22\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\22\110\1\u0488\12\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\24\110"+ + "\1\u0433\10\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\4\110\1\u0139\30\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\22\110"+ + "\1\u0489\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\4\110\1\u048a\30\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ + "\1\u031c\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\7\110\1\u032b\25\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\15\110"+ + "\1\u048b\17\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\11\110\1\u048c\23\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\12\110"+ + "\1\u048d\22\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\7\110\1\u048e\25\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\42\0\1\u048f"+ + "\110\0\1\u0490\57\0\1\u0265\103\0\1\u0442\104\0\1\u0265"+ + "\76\0\1\u0491\104\0\1\u0492\64\0\1\u0493\7\0\1\u0494"+ + "\5\0\1\u0495\71\0\1\u0496\117\0\1\u0497\65\0\1\u0498"+ + "\65\0\13\110\1\u0499\21\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\11\36\1\u0272\23\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\3\36\1\u049a\31\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\12\36\1\u049b\22\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\6\36"+ + "\1\u049b\26\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\5\36\1\u049c\27\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\21\36\1\u01a2\13\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\14\36\1\u03e4\20\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\40\0\1\u01ae"+ + "\110\0\1\u049d\61\0\1\u01ae\121\0\1\u0458\60\0\1\u01ae"+ + "\116\0\1\u049e\62\0\1\u049f\102\0\1\u0361\101\0\1\u0370"+ + "\106\0\1\u04a0\74\0\1\u04a1\101\0\1\u04a2\101\0\1\u04a3"+ + "\65\0\3\110\1\u04a4\31\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\12\110\1\u04a5\22\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\22\110\1\u04a6\12\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\6\110\1\u042d\26\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ "\26\0\1\u04a7\34\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\6\110\1\u04a8\26\110\2\0"+ + "\1\110\1\0\1\110\26\0\3\110\1\u02f6\31\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\11\110\1\u021a\23\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\4\110\1\u04a9\4\110\1\u04aa"+ - "\23\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\110\1\u03a0\33\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\7\110\1\u02d7"+ - "\25\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\6\110\1\u04ab\26\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\1\u04ac\34\110"+ + "\1\u04a8\34\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\6\110\1\u04a9\26\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ + "\1\u021b\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\4\110\1\u04aa\4\110\1\u04ab\23\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\2\110\1\u04ad\32\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\11\110\1\u037d\23\110"+ + "\26\0\1\110\1\u03a1\33\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\7\110\1\u02d8\25\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\1\110\1\u04ae\33\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\11\110\1\u04af\23\110"+ + "\26\0\6\110\1\u04ac\26\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\1\u04ad\34\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\2\110\1\u04ae\32\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\11\110\1\u037e\23\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\1\110\1\u04af\33\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\11\110\1\u04b0\23\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\6\110\1\u04b1\26\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\11\110\1\u04b2\23\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\6\110\1\u03b4\26\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\1\110\1\u041c\4\110\1\u020b"+ + "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\6\110\1\u04b3\26\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\7\110\1\u02e5"+ + "\25\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\6\110\1\u04b4\26\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\2\110\1\u04b5"+ + "\32\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\3\110\1\u04b6\31\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\22\110\1\u04b7"+ + "\12\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\22\110\1\u04b8\12\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\4\110\1\u04b9"+ + "\30\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\14\110\1\u04ba\20\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\21\110\1\u04bb"+ + "\13\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\22\110\1\u030e\12\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\4\110\1\u04bc"+ + "\5\110\1\u04bd\22\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\4\110\1\u02f6\30\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\11\110\1\u0319\23\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\12\110\1\u04be\22\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\6\110\1\u04be\26\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\5\110\1\u04bf\27\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\21\110\1\u0253\13\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\14\110\1\u043a\20\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\25\110\1\u04c0\7\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\30\0\1\u04c1\111\0\1\u04c2\72\0"+ + "\1\u04c3\101\0\1\u04c4\105\0\1\u0335\101\0\1\u04c5\72\0"+ + "\1\u04c6\100\0\1\u04c7\7\0\1\u04c8\103\0\1\u04c9\71\0"+ + "\1\u0442\66\0\27\110\1\u04ca\5\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\3\36\1\u04cb"+ + "\31\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\1\36\1\232\33\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\21\36\1\u04cc\13\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\37\0"+ + "\1\u035e\101\0\1\u04cd\74\0\1\u04cd\77\0\1\u04ce\114\0"+ + "\1\u02b2\73\0\1\u045f\113\0\1\u04cf\51\0\5\110\1\u040e"+ + "\27\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\1\110\1\u042d\33\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\12\110\1\u02f8"+ + "\22\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\12\110\1\u04d0\22\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\20\110\1\u02f6"+ + "\14\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\11\110\1\u02cc\23\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\u04d1"+ + "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\13\110\1\u04d2\21\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\10\110\1\u04d3"+ + "\24\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\12\110\1\u04d4\22\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\25\110\1\u04d5"+ + "\7\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\1\110\1\u04d6\33\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\13\110\1\u04d7"+ + "\21\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\11\110\1\u04d8\23\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\11\110\1\u04d9"+ + "\23\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\11\110\1\u04da\23\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\2\110\1\u04db"+ + "\32\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\4\110\1\u04dc\30\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\2\110\1\u04dd"+ + "\32\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\16\110\1\u04de\16\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\12\110\1\u04df"+ + "\22\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\13\110\1\377\21\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\u04e0"+ + "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\11\110\1\u0203\23\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\21\110\1\u04e1"+ + "\13\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\22\110\1\u04e2\12\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\1\110\1\u0139"+ + "\33\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\21\110\1\u04e3\13\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\35\110\1\0"+ + "\1\u04e4\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\31\0\1\u04e5\2\0\1\u04e6\1\u04e7\5\0\1\u04e8\77\0"+ + "\1\u04e9\64\0\1\u04ea\111\0\1\u0265\114\0\1\u0265\54\0"+ + "\1\u04eb\110\0\1\u04ec\75\0\1\u04ed\103\0\1\u04ee\67\0"+ + "\6\110\1\u04ef\26\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\13\36\1\u04f0\21\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\27\0\1\u01ae\120\0\1\u04f1\65\0\1\u04f2\72\0"+ + "\14\110\1\u02f6\20\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\26\110\1\u0123\6\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\20\110\1\u04f3\14\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\4\110\1\u02e4\30\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\22\110\1\u04f4\12\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\6\110\1\u0406\26\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\1\u0119\34\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\15\110\1\357\17\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\24\110"+ + "\1\u04f5\10\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\21\110\1\u04f6\13\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\110"+ + "\1\u041c\33\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\24\110\1\u04f7\10\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\21\110"+ + "\1\u04f8\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\1\u04f9\34\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\3\110\1\u04fa"+ + "\31\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\1\110\1\u04fb\33\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\2\110\1\u04fc"+ + "\32\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\15\110\1\u04fd\17\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\7\110\1\u04fe"+ + "\25\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\13\110\1\u04ff\21\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\42\0\1\u0500\76\0"+ + "\1\u0501\15\0\1\u0502\50\0\1\u0503\121\0\1\u0504\64\0"+ + "\1\u0265\75\0\1\u0505\77\0\1\u0506\112\0\1\u0507\76\0"+ + "\1\u0508\67\0\35\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\14\0\1\u0509\11\0\15\36\1\u0272"+ + "\17\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\41\0\1\u050a\65\0\5\110\1\u0123"+ + "\27\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\7\110\1\u050b\25\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\1\u050c\34\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\6\110\1\u04b0\26\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\11\110\1\u04b1\23\110"+ + "\26\0\24\110\1\357\10\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\5\110\1\u050d\27\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\6\110\1\u03b3\26\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\1\110\1\u041b\4\110"+ - "\1\u020a\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\6\110\1\u04b2\26\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\7\110"+ - "\1\u02e4\25\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\6\110\1\u04b3\26\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\2\110"+ - "\1\u04b4\32\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\3\110\1\u04b5\31\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\22\110"+ - "\1\u04b6\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\22\110\1\u04b7\12\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\4\110"+ - "\1\u04b8\30\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\14\110\1\u04b9\20\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\21\110"+ - "\1\u04ba\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\22\110\1\u030d\12\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\4\110"+ - "\1\u04bb\5\110\1\u04bc\22\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\4\110\1\u02f5\30\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\11\110\1\u0318\23\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\12\110\1\u04bd\22\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\6\110\1\u04bd\26\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\5\110\1\u04be\27\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\21\110\1\u0252\13\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\14\110\1\u0439\20\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\25\110\1\u04bf\7\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\30\0\1\u04c0\111\0\1\u04c1"+ - "\72\0\1\u04c2\101\0\1\u04c3\105\0\1\u0334\101\0\1\u04c4"+ - "\72\0\1\u04c5\100\0\1\u04c6\7\0\1\u04c7\103\0\1\u04c8"+ - "\71\0\1\u0441\66\0\27\110\1\u04c9\5\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\3\36"+ - "\1\u04ca\31\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\26\0\1\36\1\231\33\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\26\0\21\36\1\u04cb\13\36\1\0\1\230"+ - "\3\36\1\230\3\0\1\36\1\230\1\36\1\0\1\36"+ - "\37\0\1\u035d\101\0\1\u04cc\74\0\1\u04cc\77\0\1\u04cd"+ - "\114\0\1\u02b1\73\0\1\u045e\113\0\1\u04ce\51\0\5\110"+ - "\1\u040d\27\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\110\1\u042c\33\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\12\110"+ - "\1\u02f7\22\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\12\110\1\u04cf\22\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\20\110"+ - "\1\u02f5\14\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\11\110\1\u02cb\23\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ - "\1\u04d0\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\13\110\1\u04d1\21\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\10\110"+ - "\1\u04d2\24\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\12\110\1\u04d3\22\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\25\110"+ - "\1\u04d4\7\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\110\1\u04d5\33\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\13\110"+ - "\1\u04d6\21\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\11\110\1\u04d7\23\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ - "\1\u04d8\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\11\110\1\u04d9\23\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\2\110"+ - "\1\u04da\32\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\4\110\1\u04db\30\110\2\0\3\110"+ + "\26\0\20\110\1\357\14\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\4\110\1\u021b\5\110"+ + "\1\u0215\22\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\14\110\1\u050e\20\110\2\0\3\110"+ "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\2\110"+ - "\1\u04dc\32\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\16\110\1\u04dd\16\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\12\110"+ - "\1\u04de\22\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\13\110\1\376\21\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ - "\1\u04df\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\11\110\1\u0202\23\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\21\110"+ - "\1\u04e0\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\22\110\1\u04e1\12\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\110"+ - "\1\u0138\33\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\21\110\1\u04e2\13\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\35\110"+ - "\1\0\1\u04e3\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\31\0\1\u04e4\2\0\1\u04e5\1\u04e6\5\0\1\u04e7"+ - "\77\0\1\u04e8\64\0\1\u04e9\111\0\1\u0264\114\0\1\u0264"+ - "\54\0\1\u04ea\110\0\1\u04eb\75\0\1\u04ec\103\0\1\u04ed"+ - "\67\0\6\110\1\u04ee\26\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\13\36\1\u04ef\21\36"+ - "\1\0\1\230\3\36\1\230\3\0\1\36\1\230\1\36"+ - "\1\0\1\36\27\0\1\u01ad\120\0\1\u04f0\65\0\1\u04f1"+ - "\72\0\14\110\1\u02f5\20\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\26\110\1\u0122\6\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\20\110\1\u04f2\14\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\4\110\1\u02e3\30\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\22\110\1\u04f3\12\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\6\110\1\u0405\26\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\1\u0118\34\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\15\110\1\356\17\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\24\110\1\u04f4\10\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\21\110\1\u04f5\13\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\1\110\1\u041b\33\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\24\110\1\u04f6\10\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\21\110\1\u04f7\13\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\1\u04f8\34\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\3\110"+ - "\1\u04f9\31\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\110\1\u04fa\33\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\2\110"+ - "\1\u04fb\32\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\15\110\1\u04fc\17\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\7\110"+ - "\1\u04fd\25\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\13\110\1\u04fe\21\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\42\0\1\u04ff"+ - "\76\0\1\u0500\15\0\1\u0501\50\0\1\u0502\121\0\1\u0503"+ - "\64\0\1\u0264\75\0\1\u0504\77\0\1\u0505\112\0\1\u0506"+ - "\76\0\1\u0507\67\0\35\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\14\0\1\u0508\11\0\15\36"+ - "\1\u0271\17\36\1\0\1\230\3\36\1\230\3\0\1\36"+ - "\1\230\1\36\1\0\1\36\41\0\1\u0509\65\0\5\110"+ - "\1\u0122\27\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\7\110\1\u050a\25\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u050b"+ + "\1\u050f\32\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\6\110\1\u0510\26\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u0511"+ "\34\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\24\110\1\356\10\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\5\110\1\u050c"+ - "\27\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\20\110\1\356\14\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\4\110\1\u021a"+ - "\5\110\1\u0214\22\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\14\110\1\u050d\20\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\2\110\1\u050e\32\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\6\110\1\u050f\26\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\1\u0510\34\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\16\110\1\u01ef\16\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\15\110"+ - "\1\u0318\17\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\u0511\101\0\1\u03ca\112\0\1\u0512"+ - "\101\0\1\u0513\76\0\1\u0514\100\0\1\u0515\66\0\1\u0516"+ - "\115\0\1\u0264\107\0\1\u0517\71\0\1\u0518\100\0\1\u035d"+ - "\63\0\6\110\1\u0475\26\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\12\110\1\u04f7\22\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\13\110\1\u0519\21\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\11\110\1\u051a\23\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\10\110\1\u051b\24\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\7\110\1\u051c\25\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\4\110\1\u051d\30\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\37\0\1\u051e\72\0\1\u0337"+ - "\112\0\1\u04e8\77\0\1\u051f\106\0\1\u0520\74\0\1\u0521"+ - "\62\0\1\u0522\105\0\1\u0523\73\0\14\110\1\u0524\20\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\13\110\1\u050b\21\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\21\110\1\u0525\13\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\1\u011f\34\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\13\110\1\u0526\21\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\42\0"+ - "\1\u03ca\64\0\1\u03cf\107\0\1\u0527\75\0\1\u04ed\106\0"+ - "\1\u0528\101\0\1\u0529\65\0\6\110\1\u052a\26\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\3\110\1\u052b\31\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\23\110\1\u0202\11\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\34\0"+ - "\1\u04c6\112\0\1\u0264\64\0\1\u052c\74\0\3\110\1\u03a9"+ - "\31\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\13\110\1\u052d\21\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\27\0\1\u052e\77\0"+ - "\14\110\1\u052f\20\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\37\0\1\u0530\67\0\13\110\1\u039d"+ - "\21\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\34\0\1\u0531\104\0\1\u0532\55\0"; + "\1\110\26\0\16\110\1\u01f0\16\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\15\110\1\u0319"+ + "\17\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\1\u0512\101\0\1\u03cb\112\0\1\u0513\101\0"+ + "\1\u0514\76\0\1\u0515\100\0\1\u0516\66\0\1\u0517\115\0"+ + "\1\u0265\107\0\1\u0518\71\0\1\u0519\100\0\1\u035e\63\0"+ + "\6\110\1\u0476\26\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\12\110\1\u04f8\22\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\13\110\1\u051a\21\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\11\110\1\u051b\23\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\10\110\1\u051c\24\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\7\110\1\u051d\25\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\4\110\1\u051e\30\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\37\0\1\u051f\72\0\1\u0338\112\0"+ + "\1\u04e9\77\0\1\u0520\106\0\1\u0521\74\0\1\u0522\62\0"+ + "\1\u0523\105\0\1\u0524\73\0\14\110\1\u0525\20\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\13\110\1\u050c\21\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\21\110\1\u0526\13\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\1\u0120\34\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\13\110\1\u0527\21\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\42\0\1\u03cb"+ + "\64\0\1\u03d0\107\0\1\u0528\75\0\1\u04ee\106\0\1\u0529"+ + "\101\0\1\u052a\65\0\6\110\1\u052b\26\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\3\110"+ + "\1\u052c\31\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\23\110\1\u0203\11\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\34\0\1\u04c7"+ + "\112\0\1\u0265\64\0\1\u052d\74\0\3\110\1\u03aa\31\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\13\110\1\u052e\21\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\27\0\1\u052f\77\0\14\110"+ + "\1\u0530\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\37\0\1\u0531\67\0\13\110\1\u039e\21\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\34\0\1\u0532\104\0\1\u0533\55\0"; private static int [] zzUnpackTrans() { int [] result = new int[80405]; @@ -1958,27 +1958,28 @@ private static int zzUnpackTrans(String packed, int offset, int [] result) { private static final String ZZ_ATTRIBUTE_PACKED_0 = "\1\1\14\0\6\1\1\11\1\1\1\11\3\1\2\11"+ "\27\1\1\11\6\1\1\11\1\1\1\11\1\1\1\11"+ - "\1\1\2\11\2\1\2\11\1\1\1\11\2\1\3\11"+ - "\27\1\2\11\1\1\1\11\22\1\2\11\2\1\1\11"+ - "\1\1\1\11\3\1\1\11\1\1\1\11\6\1\3\0"+ - "\2\11\2\0\1\1\1\11\2\1\1\11\54\1\2\0"+ - "\1\1\1\11\23\0\1\1\1\0\1\1\1\11\1\0"+ - "\10\11\160\1\1\0\1\11\1\1\11\0\1\1\1\0"+ - "\1\11\7\0\3\11\1\0\2\11\1\0\1\11\2\1"+ - "\1\11\60\1\1\0\1\1\1\0\1\1\21\0\1\1"+ - "\17\0\1\1\1\0\2\11\204\1\1\11\1\1\2\0"+ - "\1\1\7\0\1\1\1\11\1\0\1\1\1\0\1\11"+ - "\1\0\2\11\1\0\46\1\44\0\165\1\7\0\1\1"+ - "\5\0\1\1\1\11\1\0\35\1\23\0\1\1\4\0"+ - "\127\1\16\0\1\1\1\0\23\1\13\0\1\1\6\0"+ - "\102\1\13\0\1\1\1\11\1\1\1\11\11\1\15\0"+ - "\52\1\12\0\4\1\7\0\35\1\11\0\3\1\3\0"+ - "\24\1\1\11\5\0\1\1\4\0\2\1\1\0\1\11"+ - "\15\1\13\0\7\1\10\0\5\1\6\0\3\1\3\0"+ - "\2\1\1\0\1\1\1\0\1\1\2\0\1\11"; + "\1\1\2\11\2\1\2\11\1\1\1\11\2\1\2\11"+ + "\27\1\2\11\1\1\1\11\22\1\2\11\1\1\1\11"+ + "\1\1\1\11\1\1\1\11\2\1\1\11\1\1\1\11"+ + "\1\1\1\11\6\1\3\0\2\11\2\0\1\1\1\11"+ + "\2\1\1\11\54\1\2\0\1\1\1\11\23\0\1\1"+ + "\1\0\1\1\1\11\1\0\10\11\160\1\1\0\1\11"+ + "\1\1\11\0\1\1\1\0\1\11\7\0\3\11\1\0"+ + "\2\11\1\0\1\11\2\1\1\11\60\1\1\0\1\1"+ + "\1\0\1\1\21\0\1\1\17\0\1\1\1\0\2\11"+ + "\204\1\1\11\1\1\2\0\1\1\7\0\1\1\1\11"+ + "\1\0\1\1\1\0\1\11\1\0\2\11\1\0\46\1"+ + "\44\0\165\1\7\0\1\1\5\0\1\1\1\11\1\0"+ + "\35\1\23\0\1\1\4\0\127\1\16\0\1\1\1\0"+ + "\23\1\13\0\1\1\6\0\102\1\13\0\1\1\1\11"+ + "\1\1\1\11\11\1\15\0\52\1\12\0\4\1\7\0"+ + "\35\1\11\0\3\1\3\0\24\1\1\11\5\0\1\1"+ + "\4\0\2\1\1\0\1\11\15\1\13\0\7\1\10\0"+ + "\5\1\6\0\3\1\3\0\2\1\1\0\1\1\1\0"+ + "\1\1\2\0\1\11"; private static int [] zzUnpackAttribute() { - int [] result = new int[1330]; + int [] result = new int[1331]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -2302,506 +2303,512 @@ else if (zzAtEOF) { { return OUTER_CONTENT; } // fall through - case 101: break; + case 102: break; case 2: { return TokenType.WHITE_SPACE; } // fall through - case 102: break; + case 103: break; case 3: { yybegin(YYINITIAL); return OUTER_CONTENT; } // fall through - case 103: break; + case 104: break; case 4: { return T_AT; } // fall through - case 104: break; + case 105: break; case 5: { return WHITE_SPACE; } // fall through - case 105: break; + case 106: break; case 6: { return T_LEFT_BRACE; } // fall through - case 106: break; + case 107: break; case 7: { return T_RIGHT_BRACE; } // fall through - case 107: break; + case 108: break; case 8: { return T_SLASH; } // fall through - case 108: break; + case 109: break; case 9: { return T_OP_ASSIGN; } // fall through - case 109: break; + case 110: break; case 10: { pushState(SINGLE_STRING); return T_STRING_START; } // fall through - case 110: break; + case 111: break; case 11: { pushState(DOUBLE_STRING); return T_STRING_START; } // fall through - case 111: break; + case 112: break; case 12: { return T_IDENTIFIER; } // fall through - case 112: break; + case 113: break; case 13: { return T_INTEGER_NUMBER; } // fall through - case 113: break; + case 114: break; case 14: { return T_OP_MOD; } // fall through - case 114: break; + case 115: break; case 15: { return T_COLON; } // fall through - case 115: break; + case 116: break; case 16: { return T_OP_MUL; } // fall through - case 116: break; + case 117: break; case 17: { pushState(MODIFIER_LIST); return T_PIPE; } // fall through - case 117: break; + case 118: break; case 18: { return T_OP_MINUS; } // fall through - case 118: break; + case 119: break; case 19: { return T_LEFT_BRACKET; } // fall through - case 119: break; + case 120: break; case 20: { return T_OP_PLUS; } // fall through - case 120: break; + case 121: break; case 21: { return T_OP_QUESTIONMARK; } // fall through - case 121: break; + case 122: break; case 22: { return T_LP; } // fall through - case 122: break; + case 123: break; case 23: { return T_COMMA; } // fall through - case 123: break; + case 124: break; case 24: { return T_SEMICOLON; } // fall through - case 124: break; + case 125: break; case 25: { return T_OP_GT; } // fall through - case 125: break; + case 126: break; case 26: { return T_OP_EXCLAMATION_MARK; } // fall through - case 126: break; + case 127: break; case 27: { return T_RP; } // fall through - case 127: break; + case 128: break; case 28: { return T_RIGHT_BRACKET; } // fall through - case 128: break; + case 129: break; case 29: { return T_OP_LT; } // fall through - case 129: break; + case 130: break; case 30: { yypushback(1); // cancel unexpected char - popState(); // and try to parse it again in + popState(); // and try to parse it again in } // fall through - case 130: break; + case 131: break; case 31: { return T_DOT; } // fall through - case 131: break; - case 32: - { yypushback(1); // cancel unexpected char - popState(); // and try to parse it again in - } - // fall through case 132: break; - case 33: + case 32: { popState(); return T_RP; } // fall through case 133: break; - case 34: + case 33: { yypushback(1); // cancel unexpected char - popState(); // and try to parse it again in + popState(); // and try to parse it again in } // fall through case 134: break; - case 35: + case 34: { pushState(TAG_EXPRESSION_ATTRIBUTE_LIST); return TokenType.WHITE_SPACE; } // fall through case 135: break; - case 36: + case 35: { return T_DISAMBIGUATION; } // fall through case 136: break; - case 37: + case 36: { pushState(TAG_SHORTHAND); return T_SHORTHAND_SEPARATOR; } // fall through case 137: break; + case 37: + { yypushback(1); // cancel unexpected char + popState(); // and try to parse it again in + } + // fall through + case 138: break; case 38: { return T_TAG_METHOD_NAME; } // fall through - case 138: break; + case 139: break; case 39: { yybegin(ANTLERS_NODE); // cancel unexpected char popState(); // and try to parse it again in } // fall through - case 139: break; + case 140: break; case 40: { return T_DYNAMIC_BINDING; } // fall through - case 140: break; + case 141: break; case 41: - { return T_STAR; + { yypushback(1); // cancel unexpected char + popState(); // and try to parse it again in } // fall through - case 141: break; + case 142: break; case 42: - { popState(); return T_STRING_END; + { return T_STAR; } // fall through - case 142: break; + case 143: break; case 43: - { pushState(ANTLERS_NODE); return T_LD; + { popState(); return T_STRING_END; } // fall through - case 143: break; + case 144: break; case 44: - { popState(); return T_RD; + { pushState(ANTLERS_NODE); return T_LD; } // fall through - case 144: break; + case 145: break; case 45: - { return T_OP_SELF_ASSIGN_DIV; + { popState(); return T_RD; } // fall through - case 145: break; + case 146: break; case 46: - { return T_OP_EQ; + { return T_OP_SELF_ASSIGN_DIV; } // fall through - case 146: break; + case 147: break; case 47: - { return T_OP_ARROW; + { return T_OP_EQ; } // fall through - case 147: break; + case 148: break; case 48: - { return T_AS; + { return T_OP_ARROW; } // fall through - case 148: break; + case 149: break; case 49: - { yypushback(yylength()); pushState(PROPERTY_ACCESS); + { return T_AS; } // fall through - case 149: break; + case 150: break; case 50: - { yypushback(yylength()); pushState(TAG_EXPRESSION); + { yypushback(yylength()); pushState(PROPERTY_ACCESS); } // fall through - case 150: break; + case 151: break; case 51: - { return T_IF; + { yypushback(yylength()); pushState(TAG_EXPRESSION); } // fall through - case 151: break; + case 152: break; case 52: - { return T_OP_OR; + { return T_IF; } // fall through - case 152: break; + case 153: break; case 53: - { return T_OP_SELF_ASSIGN_MOD; + { return T_OP_OR; } // fall through - case 153: break; + case 154: break; case 54: - { return T_FLOAT_NUMBER; + { return T_OP_SELF_ASSIGN_MOD; } // fall through - case 154: break; + case 155: break; case 55: - { return T_OP_SELF_ASSIGN_MUL; + { return T_FLOAT_NUMBER; } // fall through - case 155: break; + case 156: break; case 56: - { return T_OP_POW; + { return T_OP_SELF_ASSIGN_MUL; } // fall through - case 156: break; + case 157: break; case 57: - { return T_OP_SELF_ASSIGN_SUB; + { return T_OP_POW; } // fall through - case 157: break; + case 158: break; case 58: - { return T_OP_SELF_ASSIGN_ADD; + { return T_OP_SELF_ASSIGN_SUB; } // fall through - case 158: break; + case 159: break; case 59: - { return T_OP_GATEKEEPER; + { return T_OP_SELF_ASSIGN_ADD; } // fall through - case 159: break; + case 160: break; case 60: - { return T_OP_NULL_COALESCENCE; + { return T_OP_GATEKEEPER; } // fall through - case 160: break; + case 161: break; case 61: - { return T_OP_AND; + { return T_OP_NULL_COALESCENCE; } // fall through - case 161: break; + case 162: break; case 62: - { return T_OP_GTE; + { return T_OP_AND; } // fall through - case 162: break; + case 163: break; case 63: - { return T_OP_NEQ; + { return T_OP_GTE; } // fall through - case 163: break; + case 164: break; case 64: - { return T_OP_LTE; + { return T_OP_NEQ; } // fall through - case 164: break; + case 165: break; case 65: - { return T_MODIFIER; + { return T_OP_LTE; } // fall through - case 165: break; + case 166: break; case 66: - { return T_TAG; + { return T_MODIFIER; } // fall through - case 166: break; + case 167: break; case 67: - { yybegin(YYINITIAL); return T_RD; + { return T_TAG; } // fall through - case 167: break; + case 168: break; case 68: - { yypushback(1); return T_STRING_CONTENT; + { yybegin(YYINITIAL); return T_RD; } // fall through - case 168: break; + case 169: break; case 69: - { yypushback(yylength() - 3); pushState(ANTLERS_COMMENT); return T_COMMENT_OPEN; + { yypushback(1); return T_STRING_CONTENT; } // fall through - case 169: break; + case 170: break; case 70: - { pushState(PHP_ECHO); return T_PHP_ECHO_OPEN; + { yypushback(yylength() - 3); pushState(ANTLERS_COMMENT); return T_COMMENT_OPEN; } // fall through - case 170: break; + case 171: break; case 71: - { pushState(PHP_RAW); return T_PHP_RAW_OPEN; + { pushState(PHP_ECHO); return T_PHP_ECHO_OPEN; } // fall through - case 171: break; + case 172: break; case 72: - { popState(); return T_COMMENT_CLOSE; + { pushState(PHP_RAW); return T_PHP_RAW_OPEN; } // fall through - case 172: break; + case 173: break; case 73: - { return T_END_IF; + { popState(); return T_COMMENT_CLOSE; } // fall through - case 173: break; + case 174: break; case 74: - { return T_OP_IDENT; + { return T_END_IF; } // fall through - case 174: break; + case 175: break; case 75: - { return T_OP_XOR; + { return T_OP_IDENT; } // fall through - case 175: break; + case 176: break; case 76: - { return T_OP_NOT_IDENT; + { return T_OP_XOR; } // fall through - case 176: break; + case 177: break; case 77: - { return T_OP_SPACESHIP; + { return T_OP_NOT_IDENT; } // fall through - case 177: break; + case 178: break; case 78: - { return T_TAG_CONDITION; + { return T_OP_SPACESHIP; } // fall through - case 178: break; + case 179: break; case 79: - { popState(); return T_PHP_ECHO_CLOSE; + { return T_TAG_CONDITION; } // fall through - case 179: break; + case 180: break; case 80: - { popState(); return T_PHP_RAW_CLOSE; + { popState(); return T_PHP_ECHO_CLOSE; } // fall through - case 180: break; + case 181: break; case 81: - { yypushback(3); return T_COMMENT_TEXT; + { popState(); return T_PHP_RAW_CLOSE; } // fall through - case 181: break; + case 182: break; case 82: - { return T_SKIP; + { yypushback(3); return T_COMMENT_TEXT; } // fall through - case 182: break; + case 183: break; case 83: - { return T_ELSE; + { return T_SKIP; } // fall through - case 183: break; + case 184: break; case 84: - { return T_TAKE; + { return T_ELSE; } // fall through - case 184: break; + case 185: break; case 85: - { return T_TRUE; + { return T_TAKE; } // fall through - case 185: break; + case 186: break; case 86: - { yypushback(3); return T_PHP_CONTENT; + { return T_TRUE; } // fall through - case 186: break; + case 187: break; case 87: - { return T_MERGE; + { yypushback(3); return T_PHP_CONTENT; } // fall through - case 187: break; + case 188: break; case 88: - { return T_PLUCK; + { return T_MERGE; } // fall through - case 188: break; + case 189: break; case 89: - { return T_WHERE; + { return T_PLUCK; } // fall through - case 189: break; + case 190: break; case 90: - { return T_FALSE; + { return T_WHERE; } // fall through - case 190: break; + case 191: break; case 91: - { return T_ELSE_IF; + { return T_FALSE; } // fall through - case 191: break; + case 192: break; case 92: - { return T_UNLESS; + { return T_ELSE_IF; } // fall through - case 192: break; + case 193: break; case 93: - { return T_END_UNLESS; + { return T_UNLESS; } // fall through - case 193: break; + case 194: break; case 94: - { yypushback(1); return T_SWITCH; + { return T_END_UNLESS; } // fall through - case 194: break; + case 195: break; case 95: - { return T_NOPARSE; + { yypushback(1); return T_SWITCH; } // fall through - case 195: break; + case 196: break; case 96: - { return T_GROUP_BY; + { return T_NOPARSE; } // fall through - case 196: break; + case 197: break; case 97: - { return T_ORDER_BY; + { return T_GROUP_BY; } // fall through - case 197: break; + case 198: break; case 98: - { return T_TAXONOMY; + { return T_ORDER_BY; } // fall through - case 198: break; + case 199: break; case 99: - { yypushback(yylength()); pushState(RECURSIVE_CHILDREN); + { return T_TAXONOMY; } // fall through - case 199: break; + case 200: break; case 100: + { yypushback(yylength()); pushState(RECURSIVE_CHILDREN); + } + // fall through + case 201: break; + case 101: { return T_RECURSIVE_CHILDREN; } // fall through - case 200: break; + case 202: break; default: zzScanError(ZZ_NO_MATCH); } diff --git a/src/main/java/de/arrobait/antlers/grammar/AntlersLexer.flex b/src/main/java/de/arrobait/antlers/grammar/AntlersLexer.flex index 36f0aefd..14e6ce34 100644 --- a/src/main/java/de/arrobait/antlers/grammar/AntlersLexer.flex +++ b/src/main/java/de/arrobait/antlers/grammar/AntlersLexer.flex @@ -215,63 +215,63 @@ FLOAT_NUMBER=[0-9]*\.[0-9]+([eE][-+]?[0-9]+)?|[0-9]+[eE][-+]?[0-9]+ // State to avoid ambiguity between float values (.0) with object access (person.name) { - ":" { return T_COLON; } - "." { return T_DOT; } - "[" { return T_LEFT_BRACKET; } - "]" { return T_RIGHT_BRACKET; } - {INTEGER_NUMBER} { return T_INTEGER_NUMBER; } - {SINGLE_QUOTE} { pushState(SINGLE_STRING); return T_STRING_START; } - {DOUBLE_QUOTE} { pushState(DOUBLE_STRING); return T_STRING_START; } - {IDENTIFIER} { return T_IDENTIFIER; } - [^] { - yypushback(1); // cancel unexpected char - popState(); // and try to parse it again in - } + ":" { return T_COLON; } + "." { return T_DOT; } + "[" { return T_LEFT_BRACKET; } + "]" { return T_RIGHT_BRACKET; } + {INTEGER_NUMBER} { return T_INTEGER_NUMBER; } + {SINGLE_QUOTE} { pushState(SINGLE_STRING); return T_STRING_START; } + {DOUBLE_QUOTE} { pushState(DOUBLE_STRING); return T_STRING_START; } + {IDENTIFIER} { return T_IDENTIFIER; } + [^] { + yypushback(1); // cancel unexpected char + popState(); // and try to parse it again in + } } // State to avoid ambiguity between core modifiers and custom variables like: {{ title | title }} { - {MODIFIERS} { return T_MODIFIER; } - {WHITE_SPACE} { return TokenType.WHITE_SPACE; } + {MODIFIERS} { return T_MODIFIER; } + {WHITE_SPACE} { return TokenType.WHITE_SPACE; } // Boolean - "true" { return T_TRUE; } - "false" { return T_FALSE; } - "," { return T_COMMA; } - "(" { return T_LP; } - ")" { popState(); return T_RP; } - "[" { return T_LEFT_BRACKET; } - "]" { return T_RIGHT_BRACKET; } - {SINGLE_QUOTE} { pushState(SINGLE_STRING); return T_STRING_START; } - {DOUBLE_QUOTE} { pushState(DOUBLE_STRING); return T_STRING_START; } - {IDENTIFIER} { return T_IDENTIFIER; } - {INTEGER_NUMBER} { return T_INTEGER_NUMBER; } - {FLOAT_NUMBER} { return T_FLOAT_NUMBER; } - [^] { - yypushback(1); // cancel unexpected char - popState(); // and try to parse it again in - } + "true" { return T_TRUE; } + "false" { return T_FALSE; } + "," { return T_COMMA; } + "(" { return T_LP; } + ")" { popState(); return T_RP; } + "[" { return T_LEFT_BRACKET; } + "]" { return T_RIGHT_BRACKET; } + {SINGLE_QUOTE} { pushState(SINGLE_STRING); return T_STRING_START; } + {DOUBLE_QUOTE} { pushState(DOUBLE_STRING); return T_STRING_START; } + {IDENTIFIER} { return T_IDENTIFIER; } + {INTEGER_NUMBER} { return T_INTEGER_NUMBER; } + {FLOAT_NUMBER} { return T_FLOAT_NUMBER; } + [^] { + yypushback(1); // cancel unexpected char + popState(); // and try to parse it again in + } } { - {WHITE_SPACE} { pushState(TAG_EXPRESSION_ATTRIBUTE_LIST); return TokenType.WHITE_SPACE; } - "%" { return T_DISAMBIGUATION; } - ":" { pushState(TAG_SHORTHAND); return T_SHORTHAND_SEPARATOR; } - {SLASH} { return T_SLASH; } - {TAG_NAMES} { return T_TAG; } - {IDENTIFIER} { return T_IDENTIFIER; } - [^] { - yypushback(1); // cancel unexpected char - popState(); // and try to parse it again in - } + {WHITE_SPACE} { pushState(TAG_EXPRESSION_ATTRIBUTE_LIST); return TokenType.WHITE_SPACE; } + "%" { return T_DISAMBIGUATION; } + ":" { pushState(TAG_SHORTHAND); return T_SHORTHAND_SEPARATOR; } + {SLASH} { return T_SLASH; } + {TAG_NAMES} { return T_TAG; } + {IDENTIFIER} { return T_IDENTIFIER; } + [^] { + yypushback(1); // cancel unexpected char + popState(); // and try to parse it again in + } } { - {TAG_METHOD_NAME} { return T_TAG_METHOD_NAME; } - [^] { - yypushback(1); // cancel unexpected char - popState(); // and try to parse it again in - } + {TAG_METHOD_NAME} { return T_TAG_METHOD_NAME; } + [^] { + yypushback(1); // cancel unexpected char + popState(); // and try to parse it again in + } } { @@ -306,8 +306,8 @@ FLOAT_NUMBER=[0-9]*\.[0-9]+([eE][-+]?[0-9]+)?|[0-9]+[eE][-+]?[0-9]+ } { - {COMMENT_CLOSE} { popState(); return T_COMMENT_CLOSE; } - ~{COMMENT_CLOSE} { yypushback(3); return T_COMMENT_TEXT; } + {COMMENT_CLOSE} { popState(); return T_COMMENT_CLOSE; } + ~{COMMENT_CLOSE} { yypushback(3); return T_COMMENT_TEXT; } } { @@ -321,13 +321,13 @@ FLOAT_NUMBER=[0-9]*\.[0-9]+([eE][-+]?[0-9]+)?|[0-9]+[eE][-+]?[0-9]+ } { - "$}}" { popState(); return T_PHP_ECHO_CLOSE;} - ~"$}}" { yypushback(3); return T_PHP_CONTENT;} + "$}}" { popState(); return T_PHP_ECHO_CLOSE;} + ~"$}}" { yypushback(3); return T_PHP_CONTENT;} } { - "?}}" { popState(); return T_PHP_RAW_CLOSE;} - ~"?}}" { yypushback(3); return T_PHP_CONTENT;} + "?}}" { popState(); return T_PHP_RAW_CLOSE;} + ~"?}}" { yypushback(3); return T_PHP_CONTENT;} } [^] { yybegin(YYINITIAL); return OUTER_CONTENT; } From 45fbd8e53fd0317bf2cebf457d814e3025526dd8 Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Tue, 31 May 2022 20:24:55 +0200 Subject: [PATCH 07/28] Autocomplete closing single and double quotes When hitting backspace inside an empty string, remove the closing quote again. --- CHANGELOG.md | 1 + .../antlers/editor/AntlersQuoteHandler.java | 10 ++++ .../backspace/AbstractBackspaceHandler.java | 50 +++++++++++++++++++ ...ersDoubleQuotedStringBackspaceHandler.java | 7 +++ ...ersSingleQuotedStringBackspaceHandler.java | 7 +++ .../AntlersStringBackspaceHandler.java | 21 ++++++++ .../file/AntlersLanguageSubstitutor.java | 24 +++++++++ src/main/resources/META-INF/plugin.xml | 8 +++ 8 files changed, 128 insertions(+) create mode 100644 src/main/java/de/arrobait/antlers/editor/AntlersQuoteHandler.java create mode 100644 src/main/java/de/arrobait/antlers/editor/actions/backspace/AbstractBackspaceHandler.java create mode 100644 src/main/java/de/arrobait/antlers/editor/actions/backspace/AntlersDoubleQuotedStringBackspaceHandler.java create mode 100644 src/main/java/de/arrobait/antlers/editor/actions/backspace/AntlersSingleQuotedStringBackspaceHandler.java create mode 100644 src/main/java/de/arrobait/antlers/editor/actions/backspace/AntlersStringBackspaceHandler.java create mode 100644 src/main/java/de/arrobait/antlers/file/AntlersLanguageSubstitutor.java diff --git a/CHANGELOG.md b/CHANGELOG.md index f21ee1cf..7e9c97a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - Support commenting code - `Code | Comment with Line Comment` - `Code | Comment with Block Comment` +- Autocomplete and remove closing single and double quote ### Changed - Add support for older IDE versions down to 2020.3 diff --git a/src/main/java/de/arrobait/antlers/editor/AntlersQuoteHandler.java b/src/main/java/de/arrobait/antlers/editor/AntlersQuoteHandler.java new file mode 100644 index 00000000..438a8a78 --- /dev/null +++ b/src/main/java/de/arrobait/antlers/editor/AntlersQuoteHandler.java @@ -0,0 +1,10 @@ +package de.arrobait.antlers.editor; + +import com.intellij.codeInsight.editorActions.SimpleTokenSetQuoteHandler; +import de.arrobait.antlers.psi.AntlersTokenSets; + +public class AntlersQuoteHandler extends SimpleTokenSetQuoteHandler { + public AntlersQuoteHandler() { + super(AntlersTokenSets.STRINGS); + } +} diff --git a/src/main/java/de/arrobait/antlers/editor/actions/backspace/AbstractBackspaceHandler.java b/src/main/java/de/arrobait/antlers/editor/actions/backspace/AbstractBackspaceHandler.java new file mode 100644 index 00000000..d6f1c346 --- /dev/null +++ b/src/main/java/de/arrobait/antlers/editor/actions/backspace/AbstractBackspaceHandler.java @@ -0,0 +1,50 @@ +package de.arrobait.antlers.editor.actions.backspace; + +import com.intellij.codeInsight.editorActions.BackspaceHandlerDelegate; +import com.intellij.openapi.editor.Document; +import com.intellij.openapi.editor.Editor; +import com.intellij.psi.PsiFile; +import de.arrobait.antlers.file.AntlersFileType; +import org.jetbrains.annotations.NotNull; + +public abstract class AbstractBackspaceHandler extends BackspaceHandlerDelegate { + char expectedDeletedChar; + char expectedNextChar; + + public AbstractBackspaceHandler(char expectedDeletedChar, char expectedNextChar) { + this.expectedDeletedChar = expectedDeletedChar; + this.expectedNextChar = expectedNextChar; + } + + @Override + public void beforeCharDeleted(char c, @NotNull PsiFile file, @NotNull Editor editor) { + // nothing here + } + + @Override + public boolean charDeleted(char c, @NotNull PsiFile file, @NotNull Editor editor) { + if (c != expectedDeletedChar) { + return false; + } + if (file.getFileType() != AntlersFileType.INSTANCE) { + return false; + } + + Document document = editor.getDocument(); + int offset = editor.getCaretModel().getOffset(); + if (offset < 1 || offset >= document.getTextLength()) { + return false; + } + + char nextChar = document.getCharsSequence().charAt(offset); + + if (nextChar == expectedNextChar && shouldBeDeleted(file, offset)) { + document.deleteString(offset, offset + 1); + return true; + } else { + return false; + } + } + + public abstract boolean shouldBeDeleted(PsiFile file, int offset); +} diff --git a/src/main/java/de/arrobait/antlers/editor/actions/backspace/AntlersDoubleQuotedStringBackspaceHandler.java b/src/main/java/de/arrobait/antlers/editor/actions/backspace/AntlersDoubleQuotedStringBackspaceHandler.java new file mode 100644 index 00000000..c2ce999b --- /dev/null +++ b/src/main/java/de/arrobait/antlers/editor/actions/backspace/AntlersDoubleQuotedStringBackspaceHandler.java @@ -0,0 +1,7 @@ +package de.arrobait.antlers.editor.actions.backspace; + +public class AntlersDoubleQuotedStringBackspaceHandler extends AntlersStringBackspaceHandler{ + public AntlersDoubleQuotedStringBackspaceHandler() { + super('\"'); + } +} diff --git a/src/main/java/de/arrobait/antlers/editor/actions/backspace/AntlersSingleQuotedStringBackspaceHandler.java b/src/main/java/de/arrobait/antlers/editor/actions/backspace/AntlersSingleQuotedStringBackspaceHandler.java new file mode 100644 index 00000000..d4247931 --- /dev/null +++ b/src/main/java/de/arrobait/antlers/editor/actions/backspace/AntlersSingleQuotedStringBackspaceHandler.java @@ -0,0 +1,7 @@ +package de.arrobait.antlers.editor.actions.backspace; + +public class AntlersSingleQuotedStringBackspaceHandler extends AntlersStringBackspaceHandler { + public AntlersSingleQuotedStringBackspaceHandler() { + super('\''); + } +} diff --git a/src/main/java/de/arrobait/antlers/editor/actions/backspace/AntlersStringBackspaceHandler.java b/src/main/java/de/arrobait/antlers/editor/actions/backspace/AntlersStringBackspaceHandler.java new file mode 100644 index 00000000..22483a6a --- /dev/null +++ b/src/main/java/de/arrobait/antlers/editor/actions/backspace/AntlersStringBackspaceHandler.java @@ -0,0 +1,21 @@ +package de.arrobait.antlers.editor.actions.backspace; + +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiFile; +import de.arrobait.antlers.psi.impl.AntlersStringLiteralImpl; + +public class AntlersStringBackspaceHandler extends AbstractBackspaceHandler { + public AntlersStringBackspaceHandler(char quoteChar) { + super(quoteChar, quoteChar); + } + + @Override + public boolean shouldBeDeleted(PsiFile file, int offset) { + PsiElement currentElement = file.findElementAt(offset); + if (currentElement == null) { + return false; + } + + return currentElement.getParent() instanceof AntlersStringLiteralImpl; + } +} diff --git a/src/main/java/de/arrobait/antlers/file/AntlersLanguageSubstitutor.java b/src/main/java/de/arrobait/antlers/file/AntlersLanguageSubstitutor.java new file mode 100644 index 00000000..19d71198 --- /dev/null +++ b/src/main/java/de/arrobait/antlers/file/AntlersLanguageSubstitutor.java @@ -0,0 +1,24 @@ +package de.arrobait.antlers.file; + +import de.arrobait.antlers.AntlersLanguage; +import com.intellij.ide.highlighter.HtmlFileType; +import com.intellij.lang.Language; +import com.intellij.openapi.fileTypes.FileTypeRegistry; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.LanguageSubstitutor; +import com.intellij.testFramework.LightVirtualFile; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class AntlersLanguageSubstitutor extends LanguageSubstitutor { + @Nullable + @Override + public Language getLanguage(@NotNull VirtualFile file, @NotNull Project project) { + if (file instanceof LightVirtualFile) { + return null; + } + + return FileTypeRegistry.getInstance().isFileOfType(file, HtmlFileType.INSTANCE) ? AntlersLanguage.INSTANCE : null; + } +} diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 3b712a42..c7f41ae4 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -45,6 +45,14 @@ + + + + + From ad9327ab1ed32818137a4c95094c2dd488518471 Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Fri, 3 Jun 2022 18:16:14 +0200 Subject: [PATCH 08/28] Simplify [0-9] Regex to \d --- src/main/java/de/arrobait/antlers/grammar/Antlers.bnf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/de/arrobait/antlers/grammar/Antlers.bnf b/src/main/java/de/arrobait/antlers/grammar/Antlers.bnf index 29bb9710..588695ff 100644 --- a/src/main/java/de/arrobait/antlers/grammar/Antlers.bnf +++ b/src/main/java/de/arrobait/antlers/grammar/Antlers.bnf @@ -103,7 +103,7 @@ T_TAXONOMY='taxonomy:' T_INTEGER_NUMBER='regexp:0|[1-9]\d*' - T_FLOAT_NUMBER='regexp:[0-9]*\.[0-9]+([eE][-+]?[0-9]+)?|[0-9]+[eE][-+]?[0-9]+' + T_FLOAT_NUMBER='regexp:\d*\.\d+([eE][-+]?\d+)?|\d+[eE][-+]?\d+' ] extends(".*expr")=expr From 9c239946a34e75d7444a4f06fde1793fea30a406 Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Mon, 6 Jun 2022 14:11:18 +0200 Subject: [PATCH 09/28] Implement brace matcher This matches regular Antlers node braces as `{{ }}`, `{{# #}}`, `{{? ?}}` and `{{$ $}}`, as well the single curly braces, parenthesis and brackets. The commit also contains a refactoring of the FileViewProvider to make it more stable identifying the base and templating language. --- .../editor/braces/AntlersBraceMatcher.java | 36 +++++ .../braces/AntlersBraceMatcherAdapter.java | 10 ++ .../antlers/file/AntlersFileViewProvider.java | 116 ++++++++++---- .../file/AntlersFileViewProviderFactory.java | 11 +- .../AntlersTemplateHighlighter.java | 24 ++- src/main/resources/META-INF/plugin.xml | 3 + .../braces/AntlersBraceMatcherTest.java | 150 ++++++++++++++++++ 7 files changed, 309 insertions(+), 41 deletions(-) create mode 100644 src/main/java/de/arrobait/antlers/editor/braces/AntlersBraceMatcher.java create mode 100644 src/main/java/de/arrobait/antlers/editor/braces/AntlersBraceMatcherAdapter.java create mode 100644 src/test/java/de/arrobait/antlers/editor/braces/AntlersBraceMatcherTest.java diff --git a/src/main/java/de/arrobait/antlers/editor/braces/AntlersBraceMatcher.java b/src/main/java/de/arrobait/antlers/editor/braces/AntlersBraceMatcher.java new file mode 100644 index 00000000..760dd7ca --- /dev/null +++ b/src/main/java/de/arrobait/antlers/editor/braces/AntlersBraceMatcher.java @@ -0,0 +1,36 @@ +package de.arrobait.antlers.editor.braces; + +import com.intellij.lang.BracePair; +import com.intellij.lang.PairedBraceMatcher; +import com.intellij.psi.PsiFile; +import com.intellij.psi.tree.IElementType; +import de.arrobait.antlers.psi.AntlersTypes; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class AntlersBraceMatcher implements PairedBraceMatcher { + private static final BracePair[] PAIRS = new BracePair[] { + new BracePair(AntlersTypes.T_LD, AntlersTypes.T_RD, false), + new BracePair(AntlersTypes.T_COMMENT_OPEN, AntlersTypes.T_COMMENT_CLOSE, false), + new BracePair(AntlersTypes.T_PHP_ECHO_OPEN, AntlersTypes.T_PHP_ECHO_CLOSE, false), + new BracePair(AntlersTypes.T_PHP_RAW_OPEN, AntlersTypes.T_PHP_RAW_CLOSE, false), + new BracePair(AntlersTypes.T_LEFT_BRACE, AntlersTypes.T_RIGHT_BRACE, false), + new BracePair(AntlersTypes.T_LEFT_BRACKET, AntlersTypes.T_RIGHT_BRACKET, false), + new BracePair(AntlersTypes.T_LP, AntlersTypes.T_RP, false), + }; + + @Override + public BracePair @NotNull [] getPairs() { + return PAIRS; + } + + @Override + public boolean isPairedBracesAllowedBeforeType(@NotNull IElementType lbraceType, @Nullable IElementType contextType) { + return true; + } + + @Override + public int getCodeConstructStart(PsiFile file, int openingBraceOffset) { + return openingBraceOffset; + } +} diff --git a/src/main/java/de/arrobait/antlers/editor/braces/AntlersBraceMatcherAdapter.java b/src/main/java/de/arrobait/antlers/editor/braces/AntlersBraceMatcherAdapter.java new file mode 100644 index 00000000..164a179b --- /dev/null +++ b/src/main/java/de/arrobait/antlers/editor/braces/AntlersBraceMatcherAdapter.java @@ -0,0 +1,10 @@ +package de.arrobait.antlers.editor.braces; + +import com.intellij.codeInsight.highlighting.PairedBraceMatcherAdapter; +import de.arrobait.antlers.AntlersLanguage; + +public class AntlersBraceMatcherAdapter extends PairedBraceMatcherAdapter { + public AntlersBraceMatcherAdapter() { + super(new AntlersBraceMatcher(), AntlersLanguage.INSTANCE); + } +} diff --git a/src/main/java/de/arrobait/antlers/file/AntlersFileViewProvider.java b/src/main/java/de/arrobait/antlers/file/AntlersFileViewProvider.java index 0b1d30d5..3b216ab7 100644 --- a/src/main/java/de/arrobait/antlers/file/AntlersFileViewProvider.java +++ b/src/main/java/de/arrobait/antlers/file/AntlersFileViewProvider.java @@ -1,11 +1,8 @@ package de.arrobait.antlers.file; -import de.arrobait.antlers.AntlersLanguage; -import de.arrobait.antlers.psi.AntlersTypes; import com.intellij.lang.Language; import com.intellij.lang.LanguageParserDefinitions; import com.intellij.lang.ParserDefinition; -import com.intellij.lang.html.HTMLLanguage; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.LanguageSubstitutors; import com.intellij.psi.MultiplePsiFilesPerDocumentFileViewProvider; @@ -14,9 +11,11 @@ import com.intellij.psi.impl.source.PsiFileImpl; import com.intellij.psi.templateLanguages.TemplateDataElementType; import com.intellij.psi.templateLanguages.TemplateDataLanguageMappings; -import com.intellij.psi.templateLanguages.TemplateLanguage; import com.intellij.psi.templateLanguages.TemplateLanguageFileViewProvider; +import com.intellij.psi.tree.IElementType; import com.intellij.psi.tree.OuterLanguageElementType; +import de.arrobait.antlers.AntlersLanguage; +import de.arrobait.antlers.psi.AntlersTypes; import gnu.trove.THashSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -25,72 +24,123 @@ import java.util.Set; public class AntlersFileViewProvider extends MultiplePsiFilesPerDocumentFileViewProvider implements TemplateLanguageFileViewProvider { - private final Language templateDataLanguage; + private final Language myBaseLanguage; + private final Language myTemplateLanguage; private static final TemplateDataElementType htmlTemplateDataType; - public AntlersFileViewProvider(PsiManager manager, VirtualFile virtualFile, boolean eventSystemEnabled) { + public AntlersFileViewProvider(PsiManager manager, VirtualFile virtualFile, boolean eventSystemEnabled, Language baseLanguage) { + this(manager, virtualFile, eventSystemEnabled, baseLanguage, getTemplateDataLanguage(manager, virtualFile)); + } + + public AntlersFileViewProvider(PsiManager manager, VirtualFile virtualFile, boolean eventSystemEnabled, Language baseLanguage, Language templateDataLanguage) { super(manager, virtualFile, eventSystemEnabled); + this.myBaseLanguage = baseLanguage; + this.myTemplateLanguage = templateDataLanguage; + } - Language language = TemplateDataLanguageMappings.getInstance(manager.getProject()).getMapping(virtualFile); - if (language == null) { - language = HTMLLanguage.INSTANCE; + private static @NotNull Language getTemplateDataLanguage(PsiManager manager, VirtualFile file) { + Language dataLang = null; + TemplateDataLanguageMappings templateDataLanguageMappings = TemplateDataLanguageMappings.getInstance(manager.getProject()); + if (templateDataLanguageMappings != null) { + dataLang = TemplateDataLanguageMappings.getInstance(manager.getProject()).getMapping(file); + } + if (dataLang == null) { + dataLang = AntlersLanguage.getDefaultTemplateLang().getLanguage(); } - if (language instanceof TemplateLanguage) { - this.templateDataLanguage = language; - } else { - this.templateDataLanguage = LanguageSubstitutors.getInstance().substituteLanguage(language, virtualFile, manager.getProject()); + Language substituteLang = LanguageSubstitutors.getInstance().substituteLanguage(dataLang, file, manager.getProject()); + + // only use a substituted lang if its template-able + if (TemplateDataLanguageMappings.getTemplateableLanguages().contains(substituteLang)) { + dataLang = substituteLang; } - } - public AntlersFileViewProvider(PsiManager manager, VirtualFile virtualFile, boolean eventSystemEnabled, Language templateDataLanguage) { - super(manager, virtualFile, eventSystemEnabled); - this.templateDataLanguage = templateDataLanguage; + return dataLang; } @NotNull @Override public Language getBaseLanguage() { - return AntlersLanguage.INSTANCE; + return myBaseLanguage; } @NotNull @Override public Language getTemplateDataLanguage() { - return templateDataLanguage; + return myTemplateLanguage; } @NotNull @Override public Set getLanguages() { - return new THashSet<>(Arrays.asList(new Language[]{AntlersLanguage.INSTANCE, this.getTemplateDataLanguage()})); + return new THashSet<>(Arrays.asList(AntlersLanguage.INSTANCE, this.getTemplateDataLanguage())); } @NotNull @Override protected MultiplePsiFilesPerDocumentFileViewProvider cloneInner(@NotNull VirtualFile fileCopy) { - return new AntlersFileViewProvider(getManager(), fileCopy, false, this.templateDataLanguage); + return new AntlersFileViewProvider(getManager(), fileCopy, false, this.myTemplateLanguage); } @Nullable @Override protected PsiFile createFile(@NotNull Language language) { - ParserDefinition parser = LanguageParserDefinitions.INSTANCE.forLanguage(language); + ParserDefinition parserDefinition = getDefinition(language); - if (parser == null) { + if (parserDefinition == null) { return null; - } else { - PsiFileImpl file; - if (language == this.getTemplateDataLanguage()) { - file = (PsiFileImpl) parser.createFile(this); - file.setContentElementType(htmlTemplateDataType); - return file; - } else if (language == this.getBaseLanguage()) { - return parser.createFile(this); - } else { - return null; + } + + if (language.is(getTemplateDataLanguage())) { + PsiFile file = parserDefinition.createFile(this); + IElementType type = getContentElementType(language); + if (type != null) { + ((PsiFileImpl)file).setContentElementType(type); } + + return file; + } else if (language.isKindOf(getBaseLanguage())) { + return parserDefinition.createFile(this); + } + + return null; + +// ParserDefinition parser = LanguageParserDefinitions.INSTANCE.forLanguage(language); +// +// if (parser == null) { +// return null; +// } else { +// PsiFileImpl file; +// if (language == this.getTemplateDataLanguage()) { +// file = (PsiFileImpl) parser.createFile(this); +// file.setContentElementType(htmlTemplateDataType); +// return file; +// } else if (language == this.getBaseLanguage()) { +// return parser.createFile(this); +// } else { +// return null; +// } +// } + } + + private ParserDefinition getDefinition(Language language) { + ParserDefinition parserDefinition; + if (language.isKindOf(getBaseLanguage())) { + parserDefinition = LanguageParserDefinitions.INSTANCE.forLanguage(language.is(getBaseLanguage()) ? language : getBaseLanguage()); + } else { + parserDefinition = LanguageParserDefinitions.INSTANCE.forLanguage(language); } + + return parserDefinition; + } + + @Override + public @Nullable IElementType getContentElementType(@NotNull Language language) { + if (language.is(getTemplateDataLanguage())) { + return htmlTemplateDataType; + } + + return null; } static { diff --git a/src/main/java/de/arrobait/antlers/file/AntlersFileViewProviderFactory.java b/src/main/java/de/arrobait/antlers/file/AntlersFileViewProviderFactory.java index a339fc3d..09baba5c 100644 --- a/src/main/java/de/arrobait/antlers/file/AntlersFileViewProviderFactory.java +++ b/src/main/java/de/arrobait/antlers/file/AntlersFileViewProviderFactory.java @@ -5,14 +5,17 @@ import com.intellij.psi.FileViewProvider; import com.intellij.psi.FileViewProviderFactory; import com.intellij.psi.PsiManager; +import de.arrobait.antlers.AntlersLanguage; import org.jetbrains.annotations.NotNull; public class AntlersFileViewProviderFactory implements FileViewProviderFactory { - public AntlersFileViewProviderFactory() {} - @NotNull @Override - public FileViewProvider createFileViewProvider(@NotNull VirtualFile file, Language language, @NotNull PsiManager manager, boolean eventSystemEnabled) { - return new AntlersFileViewProvider(manager, file, eventSystemEnabled); + public FileViewProvider createFileViewProvider(@NotNull VirtualFile file, + Language language, + @NotNull PsiManager manager, + boolean eventSystemEnabled) { + assert language.isKindOf(AntlersLanguage.INSTANCE); + return new AntlersFileViewProvider(manager, file, eventSystemEnabled, language); } } diff --git a/src/main/java/de/arrobait/antlers/highlighter/AntlersTemplateHighlighter.java b/src/main/java/de/arrobait/antlers/highlighter/AntlersTemplateHighlighter.java index a14436c1..b8087ab4 100644 --- a/src/main/java/de/arrobait/antlers/highlighter/AntlersTemplateHighlighter.java +++ b/src/main/java/de/arrobait/antlers/highlighter/AntlersTemplateHighlighter.java @@ -1,13 +1,17 @@ package de.arrobait.antlers.highlighter; -import com.intellij.lang.html.HTMLLanguage; +import com.intellij.lang.Language; import com.intellij.openapi.editor.colors.EditorColorsScheme; import com.intellij.openapi.editor.ex.util.LayerDescriptor; import com.intellij.openapi.editor.ex.util.LayeredLexerEditorHighlighter; +import com.intellij.openapi.fileTypes.FileType; +import com.intellij.openapi.fileTypes.FileTypes; import com.intellij.openapi.fileTypes.SyntaxHighlighter; import com.intellij.openapi.fileTypes.SyntaxHighlighterFactory; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.templateLanguages.TemplateDataLanguageMappings; +import de.arrobait.antlers.AntlersLanguage; import de.arrobait.antlers.psi.AntlersTypes; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -17,8 +21,20 @@ public AntlersTemplateHighlighter(@Nullable Project project, @Nullable VirtualFi // create the main highlighter super(new AntlersSyntaxHighlighter(), colors); - SyntaxHighlighter htmlHighlighter = SyntaxHighlighterFactory.getSyntaxHighlighter(HTMLLanguage.INSTANCE, project, virtualFile); - LayerDescriptor htmlLayer = new LayerDescriptor(htmlHighlighter, ""); - registerLayer(AntlersTypes.OUTER_CONTENT, htmlLayer); + FileType type = null; + if (project == null || virtualFile == null) { + type = FileTypes.PLAIN_TEXT; + } else { + Language language = TemplateDataLanguageMappings.getInstance(project).getMapping(virtualFile); + if (language != null) { + type = language.getAssociatedFileType(); + } + if (type == null) { + type = AntlersLanguage.getDefaultTemplateLang(); + } + } + + SyntaxHighlighter outerHighlighter = SyntaxHighlighterFactory.getSyntaxHighlighter(type, project, virtualFile); + registerLayer(AntlersTypes.OUTER_CONTENT, new LayerDescriptor(outerHighlighter, "")); } } diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index c7f41ae4..9dffddec 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -46,6 +46,9 @@ + + diff --git a/src/test/java/de/arrobait/antlers/editor/braces/AntlersBraceMatcherTest.java b/src/test/java/de/arrobait/antlers/editor/braces/AntlersBraceMatcherTest.java new file mode 100644 index 00000000..d0e496df --- /dev/null +++ b/src/test/java/de/arrobait/antlers/editor/braces/AntlersBraceMatcherTest.java @@ -0,0 +1,150 @@ +package de.arrobait.antlers.editor.braces; + +import com.intellij.codeInsight.highlighting.BraceMatchingUtil; +import com.intellij.lang.Language; +import com.intellij.psi.LanguageFileViewProviders; +import com.intellij.testFramework.fixtures.BasePlatformTestCase; +import de.arrobait.antlers.AntlersLanguage; +import de.arrobait.antlers.file.AntlersFileType; + +public class AntlersBraceMatcherTest extends BasePlatformTestCase { + private static final String ourBraceMatcherIndicator = ""; + + @Override + protected void tearDown() throws Exception { + Language language = AntlersLanguage.INSTANCE; + LanguageFileViewProviders myLanguageFileViewProvider = LanguageFileViewProviders.INSTANCE; + + myLanguageFileViewProvider.removeExplicitExtension(language, myLanguageFileViewProvider.forLanguage(language)); + super.tearDown(); + } + + /** + * Expects "fileText" to have two "" tokens, placed in front of two braces which are + * expected to be matched by the built-in brace matching (i.e. when the caret is at one of the "" + * tokens, the brace match subsystem highlights the brace at the other "") + *

+ * NOTE: the before the close brace should have a bit of whitespace before it to make this + * test work correctly. For example, have "{{ /foo }}" rather than "{{/foo}}" + */ + private void doBraceTest(String fileText) { + String textForTest = fileText; + + int firstBracePosition = textForTest.indexOf(ourBraceMatcherIndicator); + textForTest = textForTest.replaceFirst(ourBraceMatcherIndicator, ""); // remove first brace indicator from input + + int secondBracePosition = textForTest.indexOf(ourBraceMatcherIndicator); + textForTest = textForTest.replaceFirst(ourBraceMatcherIndicator, ""); // remove second brace indicator from input + + assertTrue("Should have two \"" + ourBraceMatcherIndicator + "\" tokens in fileText. Given fileText:\n" + + fileText, + firstBracePosition > -1 && secondBracePosition > -1); + + String firstBraceResult = findMatchBraceForBraceAtCaret(textForTest, firstBracePosition, secondBracePosition); + assertEquals("Result with caret at first ", fileText, firstBraceResult); + + String secondBraceResult = findMatchBraceForBraceAtCaret(textForTest, secondBracePosition, firstBracePosition); + assertEquals("Result with caret at second ", fileText, secondBraceResult); + } + + /** + * Method to do the actual invocation of the brace match subsystem on a given file for a given caret position + * + * @param fileText The source to test brace matching on + * @param caretPosition Caret position to compute a matched brace for + * @param expectedMatchBracePosition The expected position of the brace which matches the brace at caretPosition + * @return The given file text with the {link #ourBraceMatcherIndicator} tokens place where the brace matching subsystem dictated + */ + private String findMatchBraceForBraceAtCaret(String fileText, int caretPosition, int expectedMatchBracePosition) { + String caretIndicator = ""; + String textWithCaret = new StringBuilder(fileText).insert(caretPosition, caretIndicator).toString(); + + myFixture.configureByText(AntlersFileType.INSTANCE, textWithCaret); + + boolean caretFirst = expectedMatchBracePosition > caretPosition; + int actualBraceMatchPosition = BraceMatchingUtil.getMatchedBraceOffset(myFixture.getEditor(), caretFirst, myFixture.getFile()); + + // we want to have an easy to read result, so we insert a where + // BraceMatchUtil.getMatchedBraceOffset told us it should go. + String result = new StringBuilder(textWithCaret) + // not that we need to compensate for the length of the caretIndicator if it comes before ourBraceMatchIndicator + .insert(actualBraceMatchPosition + (caretFirst ? caretIndicator.length() : 0), ourBraceMatcherIndicator) + .toString(); + + // replace the caret indicator with ourBraceMatcherIndicator so that our result format matches the input format + result = result.replace(caretIndicator, ourBraceMatcherIndicator); + + return result; + } + + /** + * Convenience property for quickly setting up brace matching tests. + * + * Things to note about this text: + * - The brace we want to match have some whitespace around them (this lets them match when the caret is before them) + * - All ids are unique so that they can be easily targeted by string replace functions + */ + private static final String ourTestSource = + "{{ foo1 }}\n" + + " {{# comment #}}\n" + + " {{ foo2 }}\n" + + "

\n" + + " {{ foo3 }}\n" + + " Content\n" + + " {{ /foo3 }}\n" + + "
\n" + + " {{ baz }}\n" + + " {{ bat }}\n" + + " {{ /foo2 }}\n" + + "{{ /foo1 }}\n" + + "\n" + + "{{$ phpecho $}}\n" + + "{{? phpraw ?}}\n" + + "{{ (10) }}\n" + + "{{ sports[2] }}\n" + + "{{ foo = {bar} merge {baz} }}\n"; + + public void testSimpleAntlers() { + doBraceTest(ourTestSource.replace("{{ foo1 }}", "{{ foo1 }}")); + doBraceTest(ourTestSource.replace("{{ /foo1 }}", "{{ /foo1 }}")); + } + + public void testComment() { + doBraceTest( + ourTestSource.replace("{{# comment #}}", "{{# comment #}}") + ); + } + + public void testPhpInAntlers() { + doBraceTest( + ourTestSource.replace("{{$ phpecho $}}", "{{$ phpecho $}}") + ); + doBraceTest( + ourTestSource.replace("{{? phpraw ?}}", "{{? phpraw ?}}") + ); + } + + public void testParenthesis() { + doBraceTest( + ourTestSource.replace("{{ (10) }}", "{{ (10) }}") + ); + } + + public void testInterpolation() { + doBraceTest( + ourTestSource.replace( + "{{ foo = {bar} merge {baz} }}", + "{{ foo = {bar} merge {baz} }}" + ) + ); + } + + public void testArrayBrackets() { + doBraceTest( + ourTestSource.replace( + "{{ sports[2] }}", + "{{ sports[2] }}" + ) + ); + } +} From dc4f95008be97ad31a1094dc99b0331b37c90eb1 Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Mon, 6 Jun 2022 14:11:54 +0200 Subject: [PATCH 10/28] Move the overwritten methods to the top --- .../antlers/parser/AntlersParsingTest.java | 30 +++++++++---------- .../antlers/parser/AntlersTagParsingTest.java | 30 +++++++++---------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/test/java/de/arrobait/antlers/parser/AntlersParsingTest.java b/src/test/java/de/arrobait/antlers/parser/AntlersParsingTest.java index 008a69c5..3bfbabf4 100644 --- a/src/test/java/de/arrobait/antlers/parser/AntlersParsingTest.java +++ b/src/test/java/de/arrobait/antlers/parser/AntlersParsingTest.java @@ -7,6 +7,21 @@ public AntlersParsingTest() { super("parsing", "antlers.html", new AntlersParserDefinition()); } + @Override + protected String getTestDataPath() { + return "src/test/testData"; + } + + @Override + protected boolean skipSpaces() { + return false; + } + + @Override + protected boolean includeRanges() { + return true; + } + public void testParseComments() { doTest(true); } @@ -102,19 +117,4 @@ public void testParseTake() { public void testParseWhere() { doTest(true); } - - @Override - protected String getTestDataPath() { - return "src/test/testData"; - } - - @Override - protected boolean skipSpaces() { - return false; - } - - @Override - protected boolean includeRanges() { - return true; - } } diff --git a/src/test/java/de/arrobait/antlers/parser/AntlersTagParsingTest.java b/src/test/java/de/arrobait/antlers/parser/AntlersTagParsingTest.java index 2bac58eb..f2ad5cbf 100644 --- a/src/test/java/de/arrobait/antlers/parser/AntlersTagParsingTest.java +++ b/src/test/java/de/arrobait/antlers/parser/AntlersTagParsingTest.java @@ -3,6 +3,21 @@ import com.intellij.testFramework.ParsingTestCase; public class AntlersTagParsingTest extends ParsingTestCase { + @Override + protected String getTestDataPath() { + return "src/test/testData"; + } + + @Override + protected boolean skipSpaces() { + return false; + } + + @Override + protected boolean includeRanges() { + return true; + } + public AntlersTagParsingTest() { super("parsing/tags", "antlers.html", new AntlersParserDefinition()); } @@ -170,19 +185,4 @@ public void testParseTagUsers() { public void testParseTagYield() { doTest(true); } - - @Override - protected String getTestDataPath() { - return "src/test/testData"; - } - - @Override - protected boolean skipSpaces() { - return false; - } - - @Override - protected boolean includeRanges() { - return true; - } } From 64c5d94971df3f81f1f5bc73095cf6022ab66c68 Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Mon, 6 Jun 2022 15:31:50 +0200 Subject: [PATCH 11/28] Add autocompletion for Antlers regular delimiters `{{` --- CHANGELOG.md | 2 + .../antlers/grammar/AntlersLexer.java | 471 +++++++++--------- .../de/arrobait/antlers/psi/AntlersTypes.java | 1 + .../editor/actions/AntlersTypedHandler.java | 43 ++ .../antlers/file/AntlersFileViewProvider.java | 107 ++-- .../de/arrobait/antlers/grammar/Antlers.bnf | 1 + .../antlers/grammar/AntlersLexer.flex | 4 + src/main/resources/META-INF/plugin.xml | 2 + .../actions/AntlersActionHandlerTest.java | 37 ++ .../actions/AntlersTypedHandlerTest.java | 26 + 10 files changed, 386 insertions(+), 308 deletions(-) create mode 100644 src/main/java/de/arrobait/antlers/editor/actions/AntlersTypedHandler.java create mode 100644 src/test/java/de/arrobait/antlers/editor/actions/AntlersActionHandlerTest.java create mode 100644 src/test/java/de/arrobait/antlers/editor/actions/AntlersTypedHandlerTest.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e9c97a1..5e759bab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ - `Code | Comment with Line Comment` - `Code | Comment with Block Comment` - Autocomplete and remove closing single and double quote +- Highlight all sort of brackets, parenthesis and braces as well Antlers' node delimiters +- Add autocompletion for Antlers delimiters. Type `{{` and the closing `}}` will be added automatically. ### Changed - Add support for older IDE versions down to 2020.3 diff --git a/src/main/gen/de/arrobait/antlers/grammar/AntlersLexer.java b/src/main/gen/de/arrobait/antlers/grammar/AntlersLexer.java index 417f16af..725ba084 100644 --- a/src/main/gen/de/arrobait/antlers/grammar/AntlersLexer.java +++ b/src/main/gen/de/arrobait/antlers/grammar/AntlersLexer.java @@ -95,41 +95,41 @@ public static int ZZ_CMAP(int ch) { private static final int [] ZZ_ACTION = zzUnpackAction(); private static final String ZZ_ACTION_PACKED_0 = - "\1\1\14\0\1\1\1\2\1\3\1\4\3\3\1\5"+ - "\1\6\1\7\1\10\1\11\1\12\1\13\24\14\1\15"+ - "\1\14\1\16\1\17\2\15\1\3\1\20\1\21\1\22"+ - "\1\23\1\24\1\4\1\25\1\26\1\3\1\27\1\30"+ - "\1\31\1\32\1\33\1\34\1\35\1\36\1\14\2\15"+ - "\1\37\1\2\25\14\1\36\1\40\1\41\1\42\1\10"+ - "\22\14\1\43\1\44\1\41\1\45\1\46\1\47\1\7"+ - "\1\11\1\14\1\50\1\51\1\14\1\52\1\3\1\53"+ - "\5\3\1\54\3\0\1\55\1\56\2\0\1\57\1\60"+ - "\1\61\1\14\1\62\1\63\26\14\1\63\1\64\11\14"+ - "\1\65\11\14\2\0\1\14\1\66\23\0\1\15\1\0"+ - "\1\67\1\70\1\0\1\71\1\65\1\72\1\73\1\74"+ - "\1\75\1\76\1\77\1\100\1\101\1\14\1\102\1\14"+ - "\1\102\111\14\1\103\21\14\1\103\16\14\1\0\1\104"+ - "\1\14\11\0\1\14\1\0\1\105\7\0\1\106\1\107"+ - "\1\110\1\0\1\111\1\112\1\0\1\113\1\14\1\76"+ - "\1\63\56\14\1\114\1\67\1\0\1\14\1\0\1\63"+ - "\21\0\1\63\17\0\1\63\1\0\1\115\1\116\1\102"+ - "\51\14\1\102\5\14\1\102\42\14\1\102\60\14\1\103"+ - "\1\14\2\0\1\117\7\0\2\117\1\0\1\14\1\0"+ - "\1\120\1\0\1\121\1\122\1\0\5\14\1\123\2\14"+ - "\1\124\15\14\1\125\2\14\1\126\5\14\1\63\6\14"+ - "\44\0\77\14\1\126\60\14\1\103\4\14\7\0\1\117"+ - "\5\0\1\14\1\127\1\0\5\14\1\112\2\14\1\130"+ - "\2\14\1\131\6\14\1\63\10\14\1\132\1\133\23\0"+ - "\1\63\4\0\67\14\1\102\11\14\1\133\16\14\1\103"+ - "\6\14\16\0\1\14\1\0\2\14\1\63\1\14\1\134"+ - "\15\14\1\135\13\0\1\63\6\0\63\14\1\102\16\14"+ - "\13\0\1\14\1\136\1\14\1\137\1\14\1\140\5\14"+ - "\1\141\1\142\15\0\52\14\12\0\4\14\7\0\20\14"+ - "\1\102\1\14\1\102\12\14\11\0\1\14\1\136\1\14"+ - "\3\0\20\14\1\102\3\14\1\143\5\0\1\117\4\0"+ - "\2\14\1\0\1\144\15\14\13\0\7\14\10\0\5\14"+ - "\6\0\3\14\3\0\2\14\1\0\1\14\1\0\1\14"+ - "\2\0\1\145"; + "\1\1\14\0\1\1\1\2\1\3\1\4\3\5\1\6"+ + "\1\7\1\10\1\11\1\12\1\13\1\14\24\15\1\16"+ + "\1\15\1\17\1\20\2\16\1\5\1\21\1\22\1\23"+ + "\1\24\1\25\1\4\1\26\1\27\1\5\1\30\1\31"+ + "\1\32\1\33\1\34\1\35\1\36\1\37\1\15\2\16"+ + "\1\40\1\2\25\15\1\37\1\41\1\42\1\43\1\11"+ + "\22\15\1\44\1\45\1\42\1\46\1\47\1\50\1\10"+ + "\1\12\1\15\1\51\1\52\1\15\1\53\1\5\1\54"+ + "\5\5\1\55\3\0\1\56\1\57\2\0\1\60\1\61"+ + "\1\62\1\15\1\63\1\64\26\15\1\64\1\65\11\15"+ + "\1\66\11\15\2\0\1\15\1\67\23\0\1\16\1\0"+ + "\1\70\1\71\1\0\1\72\1\66\1\73\1\74\1\75"+ + "\1\76\1\77\1\100\1\101\1\102\1\15\1\103\1\15"+ + "\1\103\111\15\1\104\21\15\1\104\16\15\1\0\1\105"+ + "\1\15\11\0\1\15\1\0\1\106\7\0\1\107\1\110"+ + "\1\111\1\0\1\112\1\113\1\0\1\114\1\15\1\77"+ + "\1\64\56\15\1\115\1\70\1\0\1\15\1\0\1\64"+ + "\21\0\1\64\17\0\1\64\1\0\1\116\1\117\1\103"+ + "\51\15\1\103\5\15\1\103\42\15\1\103\60\15\1\104"+ + "\1\15\2\0\1\120\7\0\2\120\1\0\1\15\1\0"+ + "\1\121\1\0\1\122\1\123\1\0\5\15\1\124\2\15"+ + "\1\125\15\15\1\126\2\15\1\127\5\15\1\64\6\15"+ + "\44\0\77\15\1\127\60\15\1\104\4\15\7\0\1\120"+ + "\5\0\1\15\1\130\1\0\5\15\1\113\2\15\1\131"+ + "\2\15\1\132\6\15\1\64\10\15\1\133\1\134\23\0"+ + "\1\64\4\0\67\15\1\103\11\15\1\134\16\15\1\104"+ + "\6\15\16\0\1\15\1\0\2\15\1\64\1\15\1\135"+ + "\15\15\1\136\13\0\1\64\6\0\63\15\1\103\16\15"+ + "\13\0\1\15\1\137\1\15\1\140\1\15\1\141\5\15"+ + "\1\142\1\143\15\0\52\15\12\0\4\15\7\0\20\15"+ + "\1\103\1\15\1\103\12\15\11\0\1\15\1\137\1\15"+ + "\3\0\20\15\1\103\3\15\1\144\5\0\1\120\4\0"+ + "\2\15\1\0\1\145\15\15\13\0\7\15\10\0\5\15"+ + "\6\0\3\15\3\0\2\15\1\0\1\15\1\0\1\15"+ + "\2\0\1\146"; private static int [] zzUnpackAction() { int [] result = new int[1331]; @@ -2303,512 +2303,517 @@ else if (zzAtEOF) { { return OUTER_CONTENT; } // fall through - case 102: break; + case 103: break; case 2: { return TokenType.WHITE_SPACE; } // fall through - case 103: break; + case 104: break; case 3: - { yybegin(YYINITIAL); return OUTER_CONTENT; + { return T_HALF_ENDER; } // fall through - case 104: break; + case 105: break; case 4: { return T_AT; } // fall through - case 105: break; + case 106: break; case 5: - { return WHITE_SPACE; + { yybegin(YYINITIAL); return OUTER_CONTENT; } // fall through - case 106: break; + case 107: break; case 6: - { return T_LEFT_BRACE; + { return WHITE_SPACE; } // fall through - case 107: break; + case 108: break; case 7: - { return T_RIGHT_BRACE; + { return T_LEFT_BRACE; } // fall through - case 108: break; + case 109: break; case 8: - { return T_SLASH; + { return T_RIGHT_BRACE; } // fall through - case 109: break; + case 110: break; case 9: - { return T_OP_ASSIGN; + { return T_SLASH; } // fall through - case 110: break; + case 111: break; case 10: - { pushState(SINGLE_STRING); return T_STRING_START; + { return T_OP_ASSIGN; } // fall through - case 111: break; + case 112: break; case 11: - { pushState(DOUBLE_STRING); return T_STRING_START; + { pushState(SINGLE_STRING); return T_STRING_START; } // fall through - case 112: break; + case 113: break; case 12: - { return T_IDENTIFIER; + { pushState(DOUBLE_STRING); return T_STRING_START; } // fall through - case 113: break; + case 114: break; case 13: - { return T_INTEGER_NUMBER; + { return T_IDENTIFIER; } // fall through - case 114: break; + case 115: break; case 14: - { return T_OP_MOD; + { return T_INTEGER_NUMBER; } // fall through - case 115: break; + case 116: break; case 15: - { return T_COLON; + { return T_OP_MOD; } // fall through - case 116: break; + case 117: break; case 16: - { return T_OP_MUL; + { return T_COLON; } // fall through - case 117: break; + case 118: break; case 17: - { pushState(MODIFIER_LIST); return T_PIPE; + { return T_OP_MUL; } // fall through - case 118: break; + case 119: break; case 18: - { return T_OP_MINUS; + { pushState(MODIFIER_LIST); return T_PIPE; } // fall through - case 119: break; + case 120: break; case 19: - { return T_LEFT_BRACKET; + { return T_OP_MINUS; } // fall through - case 120: break; + case 121: break; case 20: - { return T_OP_PLUS; + { return T_LEFT_BRACKET; } // fall through - case 121: break; + case 122: break; case 21: - { return T_OP_QUESTIONMARK; + { return T_OP_PLUS; } // fall through - case 122: break; + case 123: break; case 22: - { return T_LP; + { return T_OP_QUESTIONMARK; } // fall through - case 123: break; + case 124: break; case 23: - { return T_COMMA; + { return T_LP; } // fall through - case 124: break; + case 125: break; case 24: - { return T_SEMICOLON; + { return T_COMMA; } // fall through - case 125: break; + case 126: break; case 25: - { return T_OP_GT; + { return T_SEMICOLON; } // fall through - case 126: break; + case 127: break; case 26: - { return T_OP_EXCLAMATION_MARK; + { return T_OP_GT; } // fall through - case 127: break; + case 128: break; case 27: - { return T_RP; + { return T_OP_EXCLAMATION_MARK; } // fall through - case 128: break; + case 129: break; case 28: - { return T_RIGHT_BRACKET; + { return T_RP; } // fall through - case 129: break; + case 130: break; case 29: - { return T_OP_LT; + { return T_RIGHT_BRACKET; } // fall through - case 130: break; + case 131: break; case 30: + { return T_OP_LT; + } + // fall through + case 132: break; + case 31: { yypushback(1); // cancel unexpected char popState(); // and try to parse it again in } // fall through - case 131: break; - case 31: + case 133: break; + case 32: { return T_DOT; } // fall through - case 132: break; - case 32: + case 134: break; + case 33: { popState(); return T_RP; } // fall through - case 133: break; - case 33: + case 135: break; + case 34: { yypushback(1); // cancel unexpected char popState(); // and try to parse it again in } // fall through - case 134: break; - case 34: + case 136: break; + case 35: { pushState(TAG_EXPRESSION_ATTRIBUTE_LIST); return TokenType.WHITE_SPACE; } // fall through - case 135: break; - case 35: + case 137: break; + case 36: { return T_DISAMBIGUATION; } // fall through - case 136: break; - case 36: + case 138: break; + case 37: { pushState(TAG_SHORTHAND); return T_SHORTHAND_SEPARATOR; } // fall through - case 137: break; - case 37: + case 139: break; + case 38: { yypushback(1); // cancel unexpected char popState(); // and try to parse it again in } // fall through - case 138: break; - case 38: + case 140: break; + case 39: { return T_TAG_METHOD_NAME; } // fall through - case 139: break; - case 39: + case 141: break; + case 40: { yybegin(ANTLERS_NODE); // cancel unexpected char popState(); // and try to parse it again in } // fall through - case 140: break; - case 40: + case 142: break; + case 41: { return T_DYNAMIC_BINDING; } // fall through - case 141: break; - case 41: + case 143: break; + case 42: { yypushback(1); // cancel unexpected char popState(); // and try to parse it again in } // fall through - case 142: break; - case 42: + case 144: break; + case 43: { return T_STAR; } // fall through - case 143: break; - case 43: + case 145: break; + case 44: { popState(); return T_STRING_END; } // fall through - case 144: break; - case 44: + case 146: break; + case 45: { pushState(ANTLERS_NODE); return T_LD; } // fall through - case 145: break; - case 45: + case 147: break; + case 46: { popState(); return T_RD; } // fall through - case 146: break; - case 46: + case 148: break; + case 47: { return T_OP_SELF_ASSIGN_DIV; } // fall through - case 147: break; - case 47: + case 149: break; + case 48: { return T_OP_EQ; } // fall through - case 148: break; - case 48: + case 150: break; + case 49: { return T_OP_ARROW; } // fall through - case 149: break; - case 49: + case 151: break; + case 50: { return T_AS; } // fall through - case 150: break; - case 50: + case 152: break; + case 51: { yypushback(yylength()); pushState(PROPERTY_ACCESS); } // fall through - case 151: break; - case 51: + case 153: break; + case 52: { yypushback(yylength()); pushState(TAG_EXPRESSION); } // fall through - case 152: break; - case 52: + case 154: break; + case 53: { return T_IF; } // fall through - case 153: break; - case 53: + case 155: break; + case 54: { return T_OP_OR; } // fall through - case 154: break; - case 54: + case 156: break; + case 55: { return T_OP_SELF_ASSIGN_MOD; } // fall through - case 155: break; - case 55: + case 157: break; + case 56: { return T_FLOAT_NUMBER; } // fall through - case 156: break; - case 56: + case 158: break; + case 57: { return T_OP_SELF_ASSIGN_MUL; } // fall through - case 157: break; - case 57: + case 159: break; + case 58: { return T_OP_POW; } // fall through - case 158: break; - case 58: + case 160: break; + case 59: { return T_OP_SELF_ASSIGN_SUB; } // fall through - case 159: break; - case 59: + case 161: break; + case 60: { return T_OP_SELF_ASSIGN_ADD; } // fall through - case 160: break; - case 60: + case 162: break; + case 61: { return T_OP_GATEKEEPER; } // fall through - case 161: break; - case 61: + case 163: break; + case 62: { return T_OP_NULL_COALESCENCE; } // fall through - case 162: break; - case 62: + case 164: break; + case 63: { return T_OP_AND; } // fall through - case 163: break; - case 63: + case 165: break; + case 64: { return T_OP_GTE; } // fall through - case 164: break; - case 64: + case 166: break; + case 65: { return T_OP_NEQ; } // fall through - case 165: break; - case 65: + case 167: break; + case 66: { return T_OP_LTE; } // fall through - case 166: break; - case 66: + case 168: break; + case 67: { return T_MODIFIER; } // fall through - case 167: break; - case 67: + case 169: break; + case 68: { return T_TAG; } // fall through - case 168: break; - case 68: + case 170: break; + case 69: { yybegin(YYINITIAL); return T_RD; } // fall through - case 169: break; - case 69: + case 171: break; + case 70: { yypushback(1); return T_STRING_CONTENT; } // fall through - case 170: break; - case 70: + case 172: break; + case 71: { yypushback(yylength() - 3); pushState(ANTLERS_COMMENT); return T_COMMENT_OPEN; } // fall through - case 171: break; - case 71: + case 173: break; + case 72: { pushState(PHP_ECHO); return T_PHP_ECHO_OPEN; } // fall through - case 172: break; - case 72: + case 174: break; + case 73: { pushState(PHP_RAW); return T_PHP_RAW_OPEN; } // fall through - case 173: break; - case 73: + case 175: break; + case 74: { popState(); return T_COMMENT_CLOSE; } // fall through - case 174: break; - case 74: + case 176: break; + case 75: { return T_END_IF; } // fall through - case 175: break; - case 75: + case 177: break; + case 76: { return T_OP_IDENT; } // fall through - case 176: break; - case 76: + case 178: break; + case 77: { return T_OP_XOR; } // fall through - case 177: break; - case 77: + case 179: break; + case 78: { return T_OP_NOT_IDENT; } // fall through - case 178: break; - case 78: + case 180: break; + case 79: { return T_OP_SPACESHIP; } // fall through - case 179: break; - case 79: + case 181: break; + case 80: { return T_TAG_CONDITION; } // fall through - case 180: break; - case 80: + case 182: break; + case 81: { popState(); return T_PHP_ECHO_CLOSE; } // fall through - case 181: break; - case 81: + case 183: break; + case 82: { popState(); return T_PHP_RAW_CLOSE; } // fall through - case 182: break; - case 82: + case 184: break; + case 83: { yypushback(3); return T_COMMENT_TEXT; } // fall through - case 183: break; - case 83: + case 185: break; + case 84: { return T_SKIP; } // fall through - case 184: break; - case 84: + case 186: break; + case 85: { return T_ELSE; } // fall through - case 185: break; - case 85: + case 187: break; + case 86: { return T_TAKE; } // fall through - case 186: break; - case 86: + case 188: break; + case 87: { return T_TRUE; } // fall through - case 187: break; - case 87: + case 189: break; + case 88: { yypushback(3); return T_PHP_CONTENT; } // fall through - case 188: break; - case 88: + case 190: break; + case 89: { return T_MERGE; } // fall through - case 189: break; - case 89: + case 191: break; + case 90: { return T_PLUCK; } // fall through - case 190: break; - case 90: + case 192: break; + case 91: { return T_WHERE; } // fall through - case 191: break; - case 91: + case 193: break; + case 92: { return T_FALSE; } // fall through - case 192: break; - case 92: + case 194: break; + case 93: { return T_ELSE_IF; } // fall through - case 193: break; - case 93: + case 195: break; + case 94: { return T_UNLESS; } // fall through - case 194: break; - case 94: + case 196: break; + case 95: { return T_END_UNLESS; } // fall through - case 195: break; - case 95: + case 197: break; + case 96: { yypushback(1); return T_SWITCH; } // fall through - case 196: break; - case 96: + case 198: break; + case 97: { return T_NOPARSE; } // fall through - case 197: break; - case 97: + case 199: break; + case 98: { return T_GROUP_BY; } // fall through - case 198: break; - case 98: + case 200: break; + case 99: { return T_ORDER_BY; } // fall through - case 199: break; - case 99: + case 201: break; + case 100: { return T_TAXONOMY; } // fall through - case 200: break; - case 100: + case 202: break; + case 101: { yypushback(yylength()); pushState(RECURSIVE_CHILDREN); } // fall through - case 201: break; - case 101: + case 203: break; + case 102: { return T_RECURSIVE_CHILDREN; } // fall through - case 202: break; + case 204: break; default: zzScanError(ZZ_NO_MATCH); } diff --git a/src/main/gen/de/arrobait/antlers/psi/AntlersTypes.java b/src/main/gen/de/arrobait/antlers/psi/AntlersTypes.java index 6c359c31..a0a504d4 100644 --- a/src/main/gen/de/arrobait/antlers/psi/AntlersTypes.java +++ b/src/main/gen/de/arrobait/antlers/psi/AntlersTypes.java @@ -113,6 +113,7 @@ public interface AntlersTypes { IElementType T_FALSE = new AntlersTokenType("false"); IElementType T_FLOAT_NUMBER = new AntlersTokenType("T_FLOAT_NUMBER"); IElementType T_GROUP_BY = new AntlersTokenType("groupby"); + IElementType T_HALF_ENDER = new AntlersTokenType(""); IElementType T_IDENTIFIER = new AntlersTokenType("T_IDENTIFIER"); IElementType T_IF = new AntlersTokenType("if"); IElementType T_IF_END = new AntlersTokenType("/if"); diff --git a/src/main/java/de/arrobait/antlers/editor/actions/AntlersTypedHandler.java b/src/main/java/de/arrobait/antlers/editor/actions/AntlersTypedHandler.java new file mode 100644 index 00000000..5af2ddf5 --- /dev/null +++ b/src/main/java/de/arrobait/antlers/editor/actions/AntlersTypedHandler.java @@ -0,0 +1,43 @@ +package de.arrobait.antlers.editor.actions; + +import com.intellij.codeInsight.editorActions.TypedHandlerDelegate; +import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.fileTypes.FileType; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.TextRange; +import com.intellij.psi.PsiDocumentManager; +import com.intellij.psi.PsiFile; +import de.arrobait.antlers.AntlersLanguage; +import org.jetbrains.annotations.NotNull; + +public class AntlersTypedHandler extends TypedHandlerDelegate { + @Override + public @NotNull Result beforeCharTyped(char c, @NotNull Project project, @NotNull Editor editor, @NotNull PsiFile file, @NotNull FileType fileType) { + int offset = editor.getCaretModel().getOffset(); + + if (offset == 0 || offset > editor.getDocument().getTextLength()) { + return Result.CONTINUE; + } + + String previousChar = editor.getDocument().getText(new TextRange(offset - 1, offset)); + + if (file.getLanguage().equals(AntlersLanguage.INSTANCE)) { + PsiDocumentManager.getInstance(project).commitAllDocuments(); + + // we suppress the built-in `}` auto-complete when we see `{{` + if (c == '{' && previousChar.equals("{")) { + // since the `}` autocomplete is built in to IDEA, we need to hack around it a bit by + // intercepting it before it is inserted, doing the work of inserting for the user + // by inserting the `{` the user just typed ... + editor.getDocument().insertString(offset, c + " }}"); + // ... and position their caret after it as they would expect ... + editor.getCaretModel().moveToOffset(offset + 2); + + // ... then finally telling subsequent responses to this char typed to do nothing + return Result.STOP; + } + } + + return Result.CONTINUE; + } +} diff --git a/src/main/java/de/arrobait/antlers/file/AntlersFileViewProvider.java b/src/main/java/de/arrobait/antlers/file/AntlersFileViewProvider.java index 3b216ab7..79240ca2 100644 --- a/src/main/java/de/arrobait/antlers/file/AntlersFileViewProvider.java +++ b/src/main/java/de/arrobait/antlers/file/AntlersFileViewProvider.java @@ -1,8 +1,12 @@ package de.arrobait.antlers.file; +import com.intellij.openapi.project.Project; +import de.arrobait.antlers.AntlersLanguage; +import de.arrobait.antlers.psi.AntlersTypes; import com.intellij.lang.Language; import com.intellij.lang.LanguageParserDefinitions; import com.intellij.lang.ParserDefinition; +import com.intellij.lang.html.HTMLLanguage; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.LanguageSubstitutors; import com.intellij.psi.MultiplePsiFilesPerDocumentFileViewProvider; @@ -11,11 +15,9 @@ import com.intellij.psi.impl.source.PsiFileImpl; import com.intellij.psi.templateLanguages.TemplateDataElementType; import com.intellij.psi.templateLanguages.TemplateDataLanguageMappings; +import com.intellij.psi.templateLanguages.TemplateLanguage; import com.intellij.psi.templateLanguages.TemplateLanguageFileViewProvider; -import com.intellij.psi.tree.IElementType; import com.intellij.psi.tree.OuterLanguageElementType; -import de.arrobait.antlers.AntlersLanguage; -import de.arrobait.antlers.psi.AntlersTypes; import gnu.trove.THashSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -28,34 +30,14 @@ public class AntlersFileViewProvider extends MultiplePsiFilesPerDocumentFileView private final Language myTemplateLanguage; private static final TemplateDataElementType htmlTemplateDataType; - public AntlersFileViewProvider(PsiManager manager, VirtualFile virtualFile, boolean eventSystemEnabled, Language baseLanguage) { - this(manager, virtualFile, eventSystemEnabled, baseLanguage, getTemplateDataLanguage(manager, virtualFile)); - } - - public AntlersFileViewProvider(PsiManager manager, VirtualFile virtualFile, boolean eventSystemEnabled, Language baseLanguage, Language templateDataLanguage) { + public AntlersFileViewProvider(PsiManager manager, VirtualFile virtualFile, boolean eventSystemEnabled, Language baseLanguage, Language templateLanguage) { super(manager, virtualFile, eventSystemEnabled); - this.myBaseLanguage = baseLanguage; - this.myTemplateLanguage = templateDataLanguage; + myBaseLanguage = baseLanguage; + myTemplateLanguage = templateLanguage; } - private static @NotNull Language getTemplateDataLanguage(PsiManager manager, VirtualFile file) { - Language dataLang = null; - TemplateDataLanguageMappings templateDataLanguageMappings = TemplateDataLanguageMappings.getInstance(manager.getProject()); - if (templateDataLanguageMappings != null) { - dataLang = TemplateDataLanguageMappings.getInstance(manager.getProject()).getMapping(file); - } - if (dataLang == null) { - dataLang = AntlersLanguage.getDefaultTemplateLang().getLanguage(); - } - - Language substituteLang = LanguageSubstitutors.getInstance().substituteLanguage(dataLang, file, manager.getProject()); - - // only use a substituted lang if its template-able - if (TemplateDataLanguageMappings.getTemplateableLanguages().contains(substituteLang)) { - dataLang = substituteLang; - } - - return dataLang; + public AntlersFileViewProvider(PsiManager manager, VirtualFile virtualFile, boolean eventSystemEnabled, Language baseLanguage) { + this(manager, virtualFile, eventSystemEnabled, baseLanguage, getTemplateDataLanguage(manager, virtualFile)); } @NotNull @@ -70,77 +52,52 @@ public Language getTemplateDataLanguage() { return myTemplateLanguage; } + private static @NotNull Language getTemplateDataLanguage(PsiManager manager, VirtualFile file) { + Language language = TemplateDataLanguageMappings.getInstance(manager.getProject()).getMapping(file); + if (language == null) { + language = AntlersLanguage.getDefaultTemplateLang().getLanguage(); + } + + Language substituteLanguage = LanguageSubstitutors.getInstance().substituteLanguage(language, file, manager.getProject()); + + if (TemplateDataLanguageMappings.getTemplateableLanguages().contains(substituteLanguage)) { + language = substituteLanguage; + } + + return language; + } + @NotNull @Override public Set getLanguages() { - return new THashSet<>(Arrays.asList(AntlersLanguage.INSTANCE, this.getTemplateDataLanguage())); + return new THashSet<>(Arrays.asList(myBaseLanguage, getTemplateDataLanguage())); } @NotNull @Override protected MultiplePsiFilesPerDocumentFileViewProvider cloneInner(@NotNull VirtualFile fileCopy) { - return new AntlersFileViewProvider(getManager(), fileCopy, false, this.myTemplateLanguage); + return new AntlersFileViewProvider(getManager(), fileCopy, false, myBaseLanguage, myTemplateLanguage); } @Nullable @Override protected PsiFile createFile(@NotNull Language language) { - ParserDefinition parserDefinition = getDefinition(language); + ParserDefinition parserDefinition = LanguageParserDefinitions.INSTANCE.forLanguage(language); if (parserDefinition == null) { return null; } + PsiFileImpl file; if (language.is(getTemplateDataLanguage())) { - PsiFile file = parserDefinition.createFile(this); - IElementType type = getContentElementType(language); - if (type != null) { - ((PsiFileImpl)file).setContentElementType(type); - } - + file = (PsiFileImpl) parserDefinition.createFile(this); + file.setContentElementType(htmlTemplateDataType); return file; } else if (language.isKindOf(getBaseLanguage())) { return parserDefinition.createFile(this); - } - - return null; - -// ParserDefinition parser = LanguageParserDefinitions.INSTANCE.forLanguage(language); -// -// if (parser == null) { -// return null; -// } else { -// PsiFileImpl file; -// if (language == this.getTemplateDataLanguage()) { -// file = (PsiFileImpl) parser.createFile(this); -// file.setContentElementType(htmlTemplateDataType); -// return file; -// } else if (language == this.getBaseLanguage()) { -// return parser.createFile(this); -// } else { -// return null; -// } -// } - } - - private ParserDefinition getDefinition(Language language) { - ParserDefinition parserDefinition; - if (language.isKindOf(getBaseLanguage())) { - parserDefinition = LanguageParserDefinitions.INSTANCE.forLanguage(language.is(getBaseLanguage()) ? language : getBaseLanguage()); } else { - parserDefinition = LanguageParserDefinitions.INSTANCE.forLanguage(language); - } - - return parserDefinition; - } - - @Override - public @Nullable IElementType getContentElementType(@NotNull Language language) { - if (language.is(getTemplateDataLanguage())) { - return htmlTemplateDataType; + return null; } - - return null; } static { diff --git a/src/main/java/de/arrobait/antlers/grammar/Antlers.bnf b/src/main/java/de/arrobait/antlers/grammar/Antlers.bnf index 588695ff..2fddf2ad 100644 --- a/src/main/java/de/arrobait/antlers/grammar/Antlers.bnf +++ b/src/main/java/de/arrobait/antlers/grammar/Antlers.bnf @@ -25,6 +25,7 @@ T_PHP_ECHO_OPEN='{{$' T_PHP_ECHO_CLOSE='$}}' + T_HALF_ENDER='' T_LD='{{' T_RD='}}' T_LP='(' diff --git a/src/main/java/de/arrobait/antlers/grammar/AntlersLexer.flex b/src/main/java/de/arrobait/antlers/grammar/AntlersLexer.flex index 14e6ce34..1aedf217 100644 --- a/src/main/java/de/arrobait/antlers/grammar/AntlersLexer.flex +++ b/src/main/java/de/arrobait/antlers/grammar/AntlersLexer.flex @@ -100,6 +100,10 @@ FLOAT_NUMBER=[0-9]*\.[0-9]+([eE][-+]?[0-9]+)?|[0-9]+[eE][-+]?[0-9]+ "@" { return T_AT; } + // Lex a single { to mark an empty file as Antlers, otherwise it would be default to HTML and + // TypedHandler will not work correctly. + "{" { return T_HALF_ENDER; } + // Antlers node {LD} { pushState(ANTLERS_NODE); return T_LD; } diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 9dffddec..b4f4776d 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -56,6 +56,8 @@ implementation="de.arrobait.antlers.editor.actions.backspace.AntlersSingleQuotedStringBackspaceHandler"/> + diff --git a/src/test/java/de/arrobait/antlers/editor/actions/AntlersActionHandlerTest.java b/src/test/java/de/arrobait/antlers/editor/actions/AntlersActionHandlerTest.java new file mode 100644 index 00000000..64a69a3e --- /dev/null +++ b/src/test/java/de/arrobait/antlers/editor/actions/AntlersActionHandlerTest.java @@ -0,0 +1,37 @@ +package de.arrobait.antlers.editor.actions; + +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.command.CommandProcessor; +import com.intellij.openapi.editor.actionSystem.EditorActionManager; +import com.intellij.openapi.editor.actionSystem.TypedAction; +import com.intellij.openapi.editor.ex.EditorEx; +import com.intellij.openapi.project.Project; +import com.intellij.testFramework.fixtures.BasePlatformTestCase; +import de.arrobait.antlers.file.AntlersFileType; +import org.jetbrains.annotations.NotNull; + +public abstract class AntlersActionHandlerTest extends BasePlatformTestCase { + private void performWriteAction(final Project project, final Runnable action) { + ApplicationManager.getApplication().runWriteAction(() -> CommandProcessor.getInstance().executeCommand(project, action, "test command", null)); + } + + private void validateTestStrings(@NotNull String before, @NotNull String expected) { + if (!before.contains("") || !expected.contains("")) { + throw new IllegalArgumentException("Test strings must contain \"\" to indicate caret position"); + } + } + + void doCharTest(final char charToType, @NotNull String before, @NotNull String expected) { + EditorActionManager.getInstance(); + final TypedAction typedAction = TypedAction.getInstance(); + doExecuteActionTest(before, expected, () -> typedAction.actionPerformed(myFixture.getEditor(), charToType, ((EditorEx) myFixture.getEditor()).getDataContext())); + } + + private void doExecuteActionTest(@NotNull String before, @NotNull String expected, @NotNull Runnable action) { + validateTestStrings(before, expected); + + myFixture.configureByText(AntlersFileType.INSTANCE, before); + performWriteAction(myFixture.getProject(), action); + myFixture.checkResult(expected); + } +} diff --git a/src/test/java/de/arrobait/antlers/editor/actions/AntlersTypedHandlerTest.java b/src/test/java/de/arrobait/antlers/editor/actions/AntlersTypedHandlerTest.java new file mode 100644 index 00000000..b338334a --- /dev/null +++ b/src/test/java/de/arrobait/antlers/editor/actions/AntlersTypedHandlerTest.java @@ -0,0 +1,26 @@ +package de.arrobait.antlers.editor.actions; + +public class AntlersTypedHandlerTest extends AntlersActionHandlerTest { + public void testFirstCharTyped() { + doCharTest('{', "", "{"); + } + + public void testSecondCharTyped() { + // When typing anything but {, do to auto-complete + doCharTest('x', "{", "{x"); + + doCharTest('{', "{", "{{ }}"); + } + + public void testParenthesis() { + doCharTest('(', "{{ }}", "{{ () }}"); + } + + public void testSingleCurlyBraces() { + doCharTest('{', "{{ foo = }}", "{{ foo = {} }}"); + } + + public void testBrackets() { + doCharTest('[', "{{ foo = sports }}", "{{ foo = sports[] }}"); + } +} From e72bae7c2b3e9bc51eaff4662bb08b65eb98e2c8 Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Mon, 6 Jun 2022 16:18:26 +0200 Subject: [PATCH 12/28] Small cleanup in HighlightTestCase --- .../java/de/arrobait/antlers/highlighting/HighlightTest.java | 1 - .../de/arrobait/antlers/highlighting/HighlightTestCase.java | 4 +--- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/test/java/de/arrobait/antlers/highlighting/HighlightTest.java b/src/test/java/de/arrobait/antlers/highlighting/HighlightTest.java index 52aae1dd..4f3461f1 100644 --- a/src/test/java/de/arrobait/antlers/highlighting/HighlightTest.java +++ b/src/test/java/de/arrobait/antlers/highlighting/HighlightTest.java @@ -1,6 +1,5 @@ package de.arrobait.antlers.highlighting; -import de.arrobait.antlers.highlighting.HighlightTestCase; import org.junit.Ignore; @Ignore diff --git a/src/test/java/de/arrobait/antlers/highlighting/HighlightTestCase.java b/src/test/java/de/arrobait/antlers/highlighting/HighlightTestCase.java index 69377d1b..c1a2fc4d 100644 --- a/src/test/java/de/arrobait/antlers/highlighting/HighlightTestCase.java +++ b/src/test/java/de/arrobait/antlers/highlighting/HighlightTestCase.java @@ -96,10 +96,8 @@ protected PsiFile createPsiFile(@NotNull String name, @NotNull String text) { protected PsiFile createFile(@NotNull String name, @NotNull String text) { LightVirtualFile virtualFile = new LightVirtualFile(name, language, text); virtualFile.setCharset(StandardCharsets.UTF_8); - return createFile(virtualFile); - } - protected PsiFile createFile(@NotNull LightVirtualFile virtualFile) { return myFileFactory.trySetupPsiForFile(virtualFile, language, true, false); } + } From 7da5c2bed6f0859ea032cc0d909b0a465659acbc Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Tue, 7 Jun 2022 21:38:36 +0200 Subject: [PATCH 13/28] Add flaky test protection According to https://plugins.jetbrains.com/docs/intellij/testing-faq.html#how-to-avoid-flaky-tests enclose custom tear down code into try/catch. --- .../editor/braces/AntlersBraceMatcherTest.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/test/java/de/arrobait/antlers/editor/braces/AntlersBraceMatcherTest.java b/src/test/java/de/arrobait/antlers/editor/braces/AntlersBraceMatcherTest.java index d0e496df..9b32db2c 100644 --- a/src/test/java/de/arrobait/antlers/editor/braces/AntlersBraceMatcherTest.java +++ b/src/test/java/de/arrobait/antlers/editor/braces/AntlersBraceMatcherTest.java @@ -12,11 +12,18 @@ public class AntlersBraceMatcherTest extends BasePlatformTestCase { @Override protected void tearDown() throws Exception { - Language language = AntlersLanguage.INSTANCE; - LanguageFileViewProviders myLanguageFileViewProvider = LanguageFileViewProviders.INSTANCE; - - myLanguageFileViewProvider.removeExplicitExtension(language, myLanguageFileViewProvider.forLanguage(language)); - super.tearDown(); + try { + Language language = AntlersLanguage.INSTANCE; + LanguageFileViewProviders myLanguageFileViewProvider = LanguageFileViewProviders.INSTANCE; + + myLanguageFileViewProvider.removeExplicitExtension(language, myLanguageFileViewProvider.forLanguage(language)); + } + catch (Exception e) { + addSuppressedException(e); + } + finally { + super.tearDown(); + } } /** From 0f686c2f46b0e045050ebab3f833040ed130de31 Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Wed, 8 Jun 2022 11:04:09 +0200 Subject: [PATCH 14/28] Add support for attributes after variables An Antlers node with variables can be followed by optional parameter list. Beside this, as parameter name also `scope` is allowed, which is a Tag itself. Currently, this is marked as error as Tags are not allowed after variables. Closes #2 --- .../antlers/grammar/AntlersLexer.java | 2761 +++++++++-------- .../antlers/parser/AntlersParser.java | 40 +- .../antlers/psi/AntlersLiteralExpr.java | 3 + .../de/arrobait/antlers/psi/AntlersTypes.java | 4 + .../AntlersVariableAttributeAssignment.java | 13 + .../arrobait/antlers/psi/AntlersVisitor.java | 4 + .../psi/impl/AntlersLiteralExprImpl.java | 6 + ...ntlersVariableAttributeAssignmentImpl.java | 36 + .../de/arrobait/antlers/grammar/Antlers.bnf | 4 +- .../antlers/grammar/AntlersLexer.flex | 7 + .../antlers/lexer/VariableLexerTest.java | 33 + .../parsing/ParseVariables.antlers.html | 12 + src/test/testData/parsing/ParseVariables.txt | 95 +- 13 files changed, 1639 insertions(+), 1379 deletions(-) create mode 100644 src/main/gen/de/arrobait/antlers/psi/AntlersVariableAttributeAssignment.java create mode 100644 src/main/gen/de/arrobait/antlers/psi/impl/AntlersVariableAttributeAssignmentImpl.java diff --git a/src/main/gen/de/arrobait/antlers/grammar/AntlersLexer.java b/src/main/gen/de/arrobait/antlers/grammar/AntlersLexer.java index 725ba084..8b7a36cc 100644 --- a/src/main/gen/de/arrobait/antlers/grammar/AntlersLexer.java +++ b/src/main/gen/de/arrobait/antlers/grammar/AntlersLexer.java @@ -111,28 +111,28 @@ public static int ZZ_CMAP(int ch) { "\1\103\111\15\1\104\21\15\1\104\16\15\1\0\1\105"+ "\1\15\11\0\1\15\1\0\1\106\7\0\1\107\1\110"+ "\1\111\1\0\1\112\1\113\1\0\1\114\1\15\1\77"+ - "\1\64\56\15\1\115\1\70\1\0\1\15\1\0\1\64"+ - "\21\0\1\64\17\0\1\64\1\0\1\116\1\117\1\103"+ - "\51\15\1\103\5\15\1\103\42\15\1\103\60\15\1\104"+ - "\1\15\2\0\1\120\7\0\2\120\1\0\1\15\1\0"+ - "\1\121\1\0\1\122\1\123\1\0\5\15\1\124\2\15"+ - "\1\125\15\15\1\126\2\15\1\127\5\15\1\64\6\15"+ - "\44\0\77\15\1\127\60\15\1\104\4\15\7\0\1\120"+ - "\5\0\1\15\1\130\1\0\5\15\1\113\2\15\1\131"+ - "\2\15\1\132\6\15\1\64\10\15\1\133\1\134\23\0"+ - "\1\64\4\0\67\15\1\103\11\15\1\134\16\15\1\104"+ - "\6\15\16\0\1\15\1\0\2\15\1\64\1\15\1\135"+ - "\15\15\1\136\13\0\1\64\6\0\63\15\1\103\16\15"+ - "\13\0\1\15\1\137\1\15\1\140\1\15\1\141\5\15"+ - "\1\142\1\143\15\0\52\15\12\0\4\15\7\0\20\15"+ - "\1\103\1\15\1\103\12\15\11\0\1\15\1\137\1\15"+ - "\3\0\20\15\1\103\3\15\1\144\5\0\1\120\4\0"+ - "\2\15\1\0\1\145\15\15\13\0\7\15\10\0\5\15"+ - "\6\0\3\15\3\0\2\15\1\0\1\15\1\0\1\15"+ - "\2\0\1\146"; + "\1\115\1\64\56\15\1\116\1\70\1\0\1\15\1\0"+ + "\1\64\21\0\1\64\17\0\1\64\1\0\1\117\1\120"+ + "\1\103\51\15\1\103\5\15\1\103\42\15\1\103\60\15"+ + "\1\104\1\15\2\0\1\121\7\0\2\121\1\0\1\15"+ + "\1\0\1\122\1\0\1\123\1\124\1\0\5\15\1\125"+ + "\2\15\1\126\15\15\1\127\2\15\1\130\5\15\1\64"+ + "\6\15\44\0\77\15\1\130\60\15\1\104\4\15\7\0"+ + "\1\121\5\0\1\15\1\131\1\0\5\15\1\113\2\15"+ + "\1\132\2\15\1\133\6\15\1\64\10\15\1\134\1\135"+ + "\23\0\1\64\4\0\67\15\1\103\11\15\1\135\16\15"+ + "\1\104\6\15\16\0\1\15\1\0\2\15\1\64\1\15"+ + "\1\136\15\15\1\137\13\0\1\64\6\0\63\15\1\103"+ + "\16\15\13\0\1\15\1\140\1\15\1\141\1\15\1\142"+ + "\5\15\1\143\1\144\15\0\52\15\12\0\4\15\7\0"+ + "\20\15\1\103\1\15\1\103\12\15\11\0\1\15\1\140"+ + "\1\15\3\0\20\15\1\103\3\15\1\145\5\0\1\121"+ + "\4\0\2\15\1\0\1\146\15\15\13\0\7\15\10\0"+ + "\5\15\6\0\3\15\3\0\2\15\1\0\1\15\1\0"+ + "\1\15\2\0\1\147"; private static int [] zzUnpackAction() { - int [] result = new int[1331]; + int [] result = new int[1332]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -210,12 +210,12 @@ private static int zzUnpackAction(String packed, int offset, int [] result) { "\0\u5613\0\u5654\0\u5695\0\u56d6\0\u5717\0\u5758\0\u5799\0\u57da"+ "\0\u581b\0\u585c\0\u589d\0\u58de\0\u591f\0\u5960\0\u59a1\0\u59e2"+ "\0\u5a23\0\u5a64\0\u5aa5\0\u5ae6\0\u5b27\0\u5b68\0\u5ba9\0\u5bea"+ - "\0\u0659\0\u5c2b\0\u5c2b\0\u5c6c\0\u5cad\0\u5cee\0\u5d2f\0\u5d70"+ + "\0\u5c2b\0\u0659\0\u5c6c\0\u5c6c\0\u5cad\0\u5cee\0\u5d2f\0\u5d70"+ "\0\u5db1\0\u5df2\0\u5e33\0\u5e74\0\u5eb5\0\u5ef6\0\u5f37\0\u5f78"+ "\0\u5fb9\0\u5ffa\0\u603b\0\u607c\0\u60bd\0\u60fe\0\u613f\0\u6180"+ "\0\u61c1\0\u6202\0\u6243\0\u6284\0\u62c5\0\u6306\0\u6347\0\u6388"+ "\0\u63c9\0\u640a\0\u644b\0\u648c\0\u64cd\0\u650e\0\u654f\0\u6590"+ - "\0\u65d1\0\u0492\0\u0492\0\u6612\0\u6653\0\u6694\0\u66d5\0\u6716"+ + "\0\u65d1\0\u6612\0\u0492\0\u0492\0\u6653\0\u6694\0\u66d5\0\u6716"+ "\0\u6757\0\u6798\0\u67d9\0\u681a\0\u685b\0\u689c\0\u68dd\0\u691e"+ "\0\u695f\0\u69a0\0\u69e1\0\u6a22\0\u6a63\0\u6aa4\0\u6ae5\0\u6b26"+ "\0\u6b67\0\u6ba8\0\u6be9\0\u6c2a\0\u6c6b\0\u6cac\0\u6ced\0\u6d2e"+ @@ -231,13 +231,13 @@ private static int zzUnpackAction(String packed, int offset, int [] result) { "\0\u7fb7\0\u7ff8\0\u8039\0\u807a\0\u80bb\0\u80fc\0\u813d\0\u817e"+ "\0\u81bf\0\u8200\0\u8241\0\u8282\0\u82c3\0\u8304\0\u8345\0\u8386"+ "\0\u83c7\0\u8408\0\u8449\0\u848a\0\u84cb\0\u850c\0\u854d\0\u858e"+ - "\0\u85cf\0\u8610\0\u8651\0\u8692\0\u86d3\0\u8714\0\u8755\0\u0492"+ - "\0\u8796\0\u87d7\0\u8818\0\u8859\0\u889a\0\u88db\0\u891c\0\u895d"+ - "\0\u899e\0\u89df\0\u8a20\0\u8a61\0\u0492\0\u8aa2\0\u8ae3\0\u8b24"+ - "\0\u0492\0\u8b65\0\u0492\0\u0492\0\u8ba6\0\u8be7\0\u8c28\0\u8c69"+ - "\0\u8caa\0\u8ceb\0\u0659\0\u8d2c\0\u8d6d\0\u8dae\0\u8def\0\u8e30"+ + "\0\u85cf\0\u8610\0\u8651\0\u8692\0\u86d3\0\u8714\0\u8755\0\u8796"+ + "\0\u0492\0\u87d7\0\u8818\0\u8859\0\u889a\0\u88db\0\u891c\0\u895d"+ + "\0\u899e\0\u89df\0\u8a20\0\u8a61\0\u8aa2\0\u0492\0\u8ae3\0\u8b24"+ + "\0\u8b65\0\u0492\0\u8ba6\0\u0492\0\u0492\0\u8be7\0\u8c28\0\u8c69"+ + "\0\u8caa\0\u8ceb\0\u8d2c\0\u0659\0\u8d6d\0\u8dae\0\u8def\0\u8e30"+ "\0\u8e71\0\u8eb2\0\u8ef3\0\u8f34\0\u8f75\0\u8fb6\0\u8ff7\0\u9038"+ - "\0\u9079\0\u90ba\0\u90fb\0\u0659\0\u913c\0\u917d\0\u0659\0\u91be"+ + "\0\u9079\0\u90ba\0\u90fb\0\u913c\0\u0659\0\u917d\0\u91be\0\u0659"+ "\0\u91ff\0\u9240\0\u9281\0\u92c2\0\u9303\0\u9344\0\u9385\0\u93c6"+ "\0\u9407\0\u9448\0\u9489\0\u94ca\0\u950b\0\u954c\0\u958d\0\u95ce"+ "\0\u960f\0\u9650\0\u9691\0\u96d2\0\u9713\0\u9754\0\u9795\0\u97d6"+ @@ -251,7 +251,7 @@ private static int zzUnpackAction(String packed, int offset, int [] result) { "\0\ua64f\0\ua690\0\ua6d1\0\ua712\0\ua753\0\ua794\0\ua7d5\0\ua816"+ "\0\ua857\0\ua898\0\ua8d9\0\ua91a\0\ua95b\0\ua99c\0\ua9dd\0\uaa1e"+ "\0\uaa5f\0\uaaa0\0\uaae1\0\uab22\0\uab63\0\uaba4\0\uabe5\0\uac26"+ - "\0\uac67\0\uaca8\0\uace9\0\uad2a\0\uad6b\0\uadac\0\u0eba\0\uaded"+ + "\0\uac67\0\uaca8\0\uace9\0\uad2a\0\uad6b\0\uadac\0\uaded\0\u0eba"+ "\0\uae2e\0\uae6f\0\uaeb0\0\uaef1\0\uaf32\0\uaf73\0\uafb4\0\uaff5"+ "\0\ub036\0\ub077\0\ub0b8\0\ub0f9\0\ub13a\0\ub17b\0\ub1bc\0\ub1fd"+ "\0\ub23e\0\ub27f\0\ub2c0\0\ub301\0\ub342\0\ub383\0\ub3c4\0\ub405"+ @@ -260,11 +260,11 @@ private static int zzUnpackAction(String packed, int offset, int [] result) { "\0\ub856\0\ub897\0\ub8d8\0\ub919\0\ub95a\0\ub99b\0\ub9dc\0\uba1d"+ "\0\uba5e\0\uba9f\0\ubae0\0\ubb21\0\ubb62\0\ubba3\0\ubbe4\0\ubc25"+ "\0\ubc66\0\ubca7\0\ubce8\0\ubd29\0\ubd6a\0\ubdab\0\ubdec\0\ube2d"+ - "\0\ube6e\0\ubeaf\0\u0492\0\ubef0\0\ubf31\0\ubf72\0\ubfb3\0\ubff4"+ - "\0\uc035\0\u0659\0\uc076\0\uc0b7\0\u0659\0\uc0f8\0\uc139\0\u0659"+ - "\0\uc17a\0\uc1bb\0\uc1fc\0\uc23d\0\uc27e\0\uc2bf\0\uc300\0\uc341"+ - "\0\uc382\0\uc3c3\0\uc404\0\uc445\0\uc486\0\uc4c7\0\uc508\0\u0659"+ - "\0\u0659\0\uc549\0\uc58a\0\uc5cb\0\uc60c\0\uc64d\0\uc68e\0\uc6cf"+ + "\0\ube6e\0\ubeaf\0\ubef0\0\u0492\0\ubf31\0\ubf72\0\ubfb3\0\ubff4"+ + "\0\uc035\0\uc076\0\u0659\0\uc0b7\0\uc0f8\0\u0659\0\uc139\0\uc17a"+ + "\0\u0659\0\uc1bb\0\uc1fc\0\uc23d\0\uc27e\0\uc2bf\0\uc300\0\uc341"+ + "\0\uc382\0\uc3c3\0\uc404\0\uc445\0\uc486\0\uc4c7\0\uc508\0\uc549"+ + "\0\u0659\0\u0659\0\uc58a\0\uc5cb\0\uc60c\0\uc64d\0\uc68e\0\uc6cf"+ "\0\uc710\0\uc751\0\uc792\0\uc7d3\0\uc814\0\uc855\0\uc896\0\uc8d7"+ "\0\uc918\0\uc959\0\uc99a\0\uc9db\0\uca1c\0\uca5d\0\uca9e\0\ucadf"+ "\0\ucb20\0\ucb61\0\ucba2\0\ucbe3\0\ucc24\0\ucc65\0\ucca6\0\ucce7"+ @@ -275,14 +275,14 @@ private static int zzUnpackAction(String packed, int offset, int [] result) { "\0\ud548\0\ud589\0\ud5ca\0\ud60b\0\ud64c\0\ud68d\0\ud6ce\0\ud70f"+ "\0\ud750\0\ud791\0\ud7d2\0\ud813\0\ud854\0\ud895\0\ud8d6\0\ud917"+ "\0\ud958\0\ud999\0\ud9da\0\uda1b\0\uda5c\0\uda9d\0\udade\0\udb1f"+ - "\0\udb60\0\udba1\0\u0eba\0\udbe2\0\udc23\0\udc64\0\udca5\0\udce6"+ + "\0\udb60\0\udba1\0\udbe2\0\u0eba\0\udc23\0\udc64\0\udca5\0\udce6"+ "\0\udd27\0\udd68\0\udda9\0\uddea\0\ude2b\0\ude6c\0\udead\0\udeee"+ "\0\udf2f\0\udf70\0\udfb1\0\udff2\0\ue033\0\ue074\0\ue0b5\0\ue0f6"+ "\0\ue137\0\ue178\0\ue1b9\0\ue1fa\0\ue23b\0\ue27c\0\ue2bd\0\ue2fe"+ "\0\ue33f\0\ue380\0\ue3c1\0\ue402\0\ue443\0\ue484\0\ue4c5\0\ue506"+ - "\0\ue547\0\ue588\0\ue5c9\0\ue60a\0\u0659\0\ue64b\0\ue68c\0\ue6cd"+ + "\0\ue547\0\ue588\0\ue5c9\0\ue60a\0\ue64b\0\u0659\0\ue68c\0\ue6cd"+ "\0\ue70e\0\ue74f\0\ue790\0\ue7d1\0\ue812\0\ue853\0\ue894\0\ue8d5"+ - "\0\ue916\0\ue957\0\u0659\0\ue998\0\ue9d9\0\uea1a\0\uea5b\0\uea9c"+ + "\0\ue916\0\ue957\0\ue998\0\u0659\0\ue9d9\0\uea1a\0\uea5b\0\uea9c"+ "\0\ueadd\0\ueb1e\0\ueb5f\0\ueba0\0\uebe1\0\uec22\0\uec63\0\ueca4"+ "\0\uece5\0\ued26\0\ued67\0\ueda8\0\uede9\0\uee2a\0\uee6b\0\ueeac"+ "\0\ueeed\0\uef2e\0\uef6f\0\uefb0\0\ueff1\0\uf032\0\uf073\0\uf0b4"+ @@ -291,11 +291,11 @@ private static int zzUnpackAction(String packed, int offset, int [] result) { "\0\uf505\0\uf546\0\uf587\0\uf5c8\0\uf609\0\uf64a\0\uf68b\0\uf6cc"+ "\0\uf70d\0\uf74e\0\uf78f\0\uf7d0\0\uf811\0\uf852\0\uf893\0\uf8d4"+ "\0\uf915\0\uf956\0\uf997\0\uf9d8\0\ufa19\0\ufa5a\0\ufa9b\0\ufadc"+ - "\0\ufb1d\0\ufb5e\0\ufb9f\0\ufbe0\0\uba1d\0\ufc21\0\ufc62\0\ufca3"+ + "\0\ufb1d\0\ufb5e\0\ufb9f\0\ufbe0\0\ufc21\0\uba5e\0\ufc62\0\ufca3"+ "\0\ufce4\0\ufd25\0\ufd66\0\ufda7\0\ufde8\0\ufe29\0\ufe6a\0\ufeab"+ "\0\ufeec\0\uff2d\0\uff6e\0\uffaf\0\ufff0\1\61\1\162\1\263"+ - "\1\364\1\u0135\1\u0176\0\u0492\1\u01b7\0\u0492\1\u01f8\0\u0659"+ - "\1\u0239\1\u027a\1\u02bb\1\u02fc\1\u033d\0\u0659\0\u0659\1\u037e"+ + "\1\364\1\u0135\1\u0176\1\u01b7\0\u0492\1\u01f8\0\u0492\1\u0239"+ + "\0\u0659\1\u027a\1\u02bb\1\u02fc\1\u033d\1\u037e\0\u0659\0\u0659"+ "\1\u03bf\1\u0400\1\u0441\1\u0482\1\u04c3\1\u0504\1\u0545\1\u0586"+ "\1\u05c7\1\u0608\1\u0649\1\u068a\1\u06cb\1\u070c\1\u074d\1\u078e"+ "\1\u07cf\1\u0810\1\u0851\1\u0892\1\u08d3\1\u0914\1\u0955\1\u0996"+ @@ -310,12 +310,12 @@ private static int zzUnpackAction(String packed, int offset, int [] result) { "\1\u1a17\1\u1a58\1\u1a99\1\u1ada\1\u1b1b\1\u1b5c\1\u1b9d\1\u1bde"+ "\1\u1c1f\1\u1c60\1\u1ca1\1\u1ce2\1\u1d23\1\u1d64\1\u1da5\1\u1de6"+ "\1\u1e27\1\u1e68\1\u1ea9\1\u1eea\1\u1f2b\1\u1f6c\1\u1fad\1\u1fee"+ - "\1\u202f\1\u2070\0\u0659\1\u20b1\1\u20f2\1\u2133\1\u2174\1\u21b5"+ + "\1\u202f\1\u2070\1\u20b1\0\u0659\1\u20f2\1\u2133\1\u2174\1\u21b5"+ "\1\u21f6\1\u2237\1\u2278\1\u22b9\1\u22fa\1\u233b\1\u237c\1\u23bd"+ "\1\u23fe\1\u243f\1\u2480\1\u24c1\1\u2502\1\u2543\1\u2584\1\u25c5"+ - "\1\u2606\1\u2647\1\u2688\0\u0492\1\u26c9\1\u270a\1\u274b\1\u278c"+ - "\1\u27cd\1\u280e\1\u284f\1\u2890\1\u28d1\0\u8859\1\u2912\1\u2953"+ - "\1\u2994\0\u0492\1\u29d5\1\u2a16\1\u2a57\1\u2a98\1\u2ad9\1\u2b1a"+ + "\1\u2606\1\u2647\1\u2688\1\u26c9\0\u0492\1\u270a\1\u274b\1\u278c"+ + "\1\u27cd\1\u280e\1\u284f\1\u2890\1\u28d1\1\u2912\0\u889a\1\u2953"+ + "\1\u2994\1\u29d5\0\u0492\1\u2a16\1\u2a57\1\u2a98\1\u2ad9\1\u2b1a"+ "\1\u2b5b\1\u2b9c\1\u2bdd\1\u2c1e\1\u2c5f\1\u2ca0\1\u2ce1\1\u2d22"+ "\1\u2d63\1\u2da4\1\u2de5\1\u2e26\1\u2e67\1\u2ea8\1\u2ee9\1\u2f2a"+ "\1\u2f6b\1\u2fac\1\u2fed\1\u302e\1\u306f\1\u30b0\1\u30f1\1\u3132"+ @@ -323,10 +323,10 @@ private static int zzUnpackAction(String packed, int offset, int [] result) { "\1\u337b\1\u33bc\1\u33fd\1\u343e\1\u347f\1\u34c0\1\u3501\1\u3542"+ "\1\u3583\1\u35c4\1\u3605\1\u3646\1\u3687\1\u36c8\1\u3709\1\u374a"+ "\1\u378b\1\u37cc\1\u380d\1\u384e\1\u388f\1\u38d0\1\u3911\1\u3952"+ - "\1\u3993\1\u39d4\0\u0492"; + "\1\u3993\1\u39d4\1\u3a15\0\u0492"; private static int [] zzUnpackRowMap() { - int [] result = new int[1331]; + int [] result = new int[1332]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -531,1394 +531,1397 @@ private static int zzUnpackRowMap(String packed, int offset, int [] result) { "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ "\1\0\1\36\26\0\1\36\1\u0179\33\36\1\0\1\231"+ "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ - "\26\0\35\36\1\0\1\u017a\3\36\1\231\3\0\1\36"+ - "\1\231\1\36\1\0\1\36\26\0\7\36\1\u017b\25\36"+ + "\22\0\1\u017a\3\0\35\36\1\0\1\u017b\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\7\36"+ + "\1\u017c\25\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\1\u017d\2\36\1\u017e"+ + "\10\36\1\232\1\u017f\17\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\11\36"+ + "\1\u0180\23\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\21\36\1\u0181\13\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\13\36\1\u0182\21\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\13\36\1\u0183\21\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\20\36"+ + "\1\232\14\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\12\36\1\u0184\22\36"+ "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ - "\1\0\1\36\26\0\1\u017c\2\36\1\u017d\10\36\1\232"+ - "\1\u017e\17\36\1\0\1\231\3\36\1\231\3\0\1\36"+ - "\1\231\1\36\1\0\1\36\26\0\11\36\1\u017f\23\36"+ + "\1\0\1\36\26\0\15\36\1\u0185\3\36\1\u017c\13\36"+ "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ - "\1\0\1\36\26\0\21\36\1\u0180\13\36\1\0\1\231"+ + "\1\0\1\36\26\0\3\36\1\u0186\31\36\1\0\1\231"+ "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ - "\26\0\13\36\1\u0181\21\36\1\0\1\231\3\36\1\231"+ - "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\13\36"+ - "\1\u0182\21\36\1\0\1\231\3\36\1\231\3\0\1\36"+ - "\1\231\1\36\1\0\1\36\26\0\20\36\1\232\14\36"+ + "\26\0\1\36\1\u0187\33\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\11\36"+ + "\1\u0188\23\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\11\36\1\u0189\23\36"+ "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ - "\1\0\1\36\26\0\12\36\1\u0183\22\36\1\0\1\231"+ + "\1\0\1\36\26\0\30\36\1\232\4\36\1\0\1\231"+ "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ - "\26\0\15\36\1\u0184\3\36\1\u017b\13\36\1\0\1\231"+ + "\26\0\11\36\1\u018a\2\36\1\u018b\20\36\1\0\1\231"+ "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ - "\26\0\3\36\1\u0185\31\36\1\0\1\231\3\36\1\231"+ - "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\1\36"+ - "\1\u0186\33\36\1\0\1\231\3\36\1\231\3\0\1\36"+ - "\1\231\1\36\1\0\1\36\26\0\11\36\1\u0187\23\36"+ + "\26\0\22\36\1\u018c\12\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\21\36"+ + "\1\u018d\13\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\12\36\1\u018e\22\36"+ "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ - "\1\0\1\36\26\0\11\36\1\u0188\23\36\1\0\1\231"+ - "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ - "\26\0\30\36\1\232\4\36\1\0\1\231\3\36\1\231"+ - "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\11\36"+ - "\1\u0189\2\36\1\u018a\20\36\1\0\1\231\3\36\1\231"+ - "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\22\36"+ - "\1\u018b\12\36\1\0\1\231\3\36\1\231\3\0\1\36"+ - "\1\231\1\36\1\0\1\36\26\0\21\36\1\u018c\13\36"+ + "\1\0\1\36\26\0\1\36\1\u018f\2\36\1\u0190\30\36"+ "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ - "\1\0\1\36\26\0\12\36\1\u018d\22\36\1\0\1\231"+ + "\1\0\1\36\26\0\14\36\1\u0190\5\36\1\u0191\12\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\27\36\1\232\5\36\1\0\1\231"+ "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ - "\26\0\1\36\1\u018e\2\36\1\u018f\30\36\1\0\1\231"+ + "\26\0\10\36\1\u0192\3\36\1\u0193\20\36\1\0\1\231"+ "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ - "\26\0\14\36\1\u018f\5\36\1\u0190\12\36\1\0\1\231"+ + "\22\0\1\u017a\3\0\3\36\1\u0194\11\36\1\u0195\17\36"+ + "\1\0\1\u017b\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\17\36\1\u0196\10\36\1\u0197\4\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\6\36\1\u0198\26\36\1\0\1\231"+ "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ - "\26\0\27\36\1\232\5\36\1\0\1\231\3\36\1\231"+ - "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\10\36"+ - "\1\u0191\3\36\1\u0192\20\36\1\0\1\231\3\36\1\231"+ - "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\3\36"+ - "\1\u0193\11\36\1\u0194\17\36\1\0\1\u017a\3\36\1\231"+ - "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\17\36"+ - "\1\u0195\10\36\1\u0196\4\36\1\0\1\231\3\36\1\231"+ - "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\6\36"+ - "\1\u0197\26\36\1\0\1\231\3\36\1\231\3\0\1\36"+ - "\1\231\1\36\1\0\1\36\26\0\1\u0198\21\36\1\u0199"+ - "\12\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ - "\1\36\1\0\1\36\26\0\12\36\1\232\2\36\1\u019a"+ - "\17\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ - "\1\36\1\0\1\36\26\0\4\36\1\u019b\30\36\1\0"+ - "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ - "\1\36\26\0\13\36\1\u019c\21\36\1\0\1\231\3\36"+ + "\26\0\1\u0199\21\36\1\u019a\12\36\1\0\1\231\3\36"+ "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ - "\14\36\1\u019d\20\36\1\0\1\231\3\36\1\231\3\0"+ - "\1\36\1\231\1\36\1\0\1\36\26\0\21\36\1\u019e"+ - "\13\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ - "\1\36\1\0\1\36\26\0\22\36\1\u019f\12\36\1\0"+ + "\12\36\1\232\2\36\1\u019b\17\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\4\36\1\u019c\30\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\13\36\1\u019d"+ + "\21\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\14\36\1\u019e\20\36\1\0"+ "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ - "\1\36\26\0\1\36\1\u01a0\33\36\1\0\1\231\3\36"+ + "\1\36\26\0\21\36\1\u019f\13\36\1\0\1\231\3\36"+ "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ - "\26\36\1\u01a1\6\36\1\0\1\231\3\36\1\231\3\0"+ - "\1\36\1\231\1\36\1\0\1\36\26\0\6\36\1\u01a2"+ - "\26\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ - "\1\36\1\0\1\36\26\0\4\36\1\u01a3\30\36\1\0"+ + "\22\36\1\u01a0\12\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\1\36\1\u01a1"+ + "\33\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\26\36\1\u01a2\6\36\1\0"+ "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ - "\1\36\26\0\6\36\1\u01a4\26\36\1\0\1\231\3\36"+ + "\1\36\26\0\6\36\1\u01a3\26\36\1\0\1\231\3\36"+ "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ - "\1\36\1\u01a5\33\36\1\0\1\231\3\36\1\231\3\0"+ - "\1\36\1\231\1\36\1\0\1\36\26\0\6\36\1\u01a6"+ + "\4\36\1\u01a4\30\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\6\36\1\u01a5"+ "\26\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ - "\1\36\1\0\1\36\26\0\4\36\1\u01a7\30\36\1\0"+ + "\1\36\1\0\1\36\26\0\1\36\1\u01a6\33\36\1\0"+ "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ - "\1\36\26\0\11\36\1\u01a8\23\36\1\0\1\231\3\36"+ + "\1\36\26\0\6\36\1\u01a7\26\36\1\0\1\231\3\36"+ "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ - "\11\36\1\u01a9\23\36\1\0\1\231\3\36\1\231\3\0"+ - "\1\36\1\231\1\36\1\0\1\36\60\0\2\u01aa\3\0"+ - "\2\u01aa\5\0\1\u01ab\1\0\1\u01aa\2\0\1\u01ab\25\0"+ - "\6\36\1\u01ac\26\36\1\0\1\231\3\36\1\231\3\0"+ - "\1\36\1\231\1\36\1\0\1\36\31\0\1\u01ad\76\0"+ - "\1\u01ae\20\0\1\u01af\64\0\1\u01b0\5\0\1\u01b1\1\u01b2"+ - "\6\0\1\u01b3\2\0\1\u01b4\64\0\1\u01b5\5\0\1\u01b6"+ - "\57\0\1\u01b7\12\0\1\u01b8\65\0\1\u01b9\10\0\1\u01ba"+ - "\67\0\1\u01bb\5\0\1\u01bc\12\0\1\u01bd\57\0\1\u01be"+ - "\20\0\1\u01bf\62\0\1\u01ae\6\0\1\u01c0\66\0\1\u01c1"+ - "\4\0\1\u01c2\3\0\1\u01c3\67\0\1\u01c4\20\0\1\u01c5"+ - "\63\0\1\u01c6\1\0\1\u01c7\72\0\1\u01c8\15\0\1\u01c9"+ - "\65\0\1\u01ca\110\0\1\u01cb\100\0\1\u01cc\106\0\1\u01cd"+ - "\101\0\1\u01ce\116\0\1\u01cf\46\0\1\306\23\0\2\60"+ - "\3\0\1\u01d0\1\60\1\0\1\307\5\0\1\60\1\111"+ - "\1\306\34\0\1\306\23\0\2\337\3\0\2\337\7\0"+ - "\1\337\1\0\1\306\34\0\1\u01d1\66\0\1\u01d2\166\0"+ - "\1\u01d3\16\0\1\110\1\u01d4\33\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\15\110\1\u01d5"+ - "\17\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\10\110\1\u01d6\24\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\3\110\1\u01d7"+ - "\21\110\1\u01d8\7\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\3\110\1\u01d9\11\110\1\u01da"+ - "\17\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\27\110\1\u01db\5\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\7\110\1\u01dc"+ - "\25\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\12\110\1\u01dd\13\110\1\u01de\6\110\2\0"+ + "\4\36\1\u01a8\30\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\11\36\1\u01a9"+ + "\23\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\11\36\1\u01aa\23\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\60\0\2\u01ab\3\0\2\u01ab\5\0\1\u01ac\1\0"+ + "\1\u01ab\2\0\1\u01ac\25\0\6\36\1\u01ad\26\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\31\0\1\u01ae\76\0\1\u01af\20\0\1\u01b0\64\0"+ + "\1\u01b1\5\0\1\u01b2\1\u01b3\6\0\1\u01b4\2\0\1\u01b5"+ + "\64\0\1\u01b6\5\0\1\u01b7\57\0\1\u01b8\12\0\1\u01b9"+ + "\65\0\1\u01ba\10\0\1\u01bb\67\0\1\u01bc\5\0\1\u01bd"+ + "\12\0\1\u01be\57\0\1\u01bf\20\0\1\u01c0\62\0\1\u01af"+ + "\6\0\1\u01c1\66\0\1\u01c2\4\0\1\u01c3\3\0\1\u01c4"+ + "\67\0\1\u01c5\20\0\1\u01c6\63\0\1\u01c7\1\0\1\u01c8"+ + "\72\0\1\u01c9\15\0\1\u01ca\65\0\1\u01cb\110\0\1\u01cc"+ + "\100\0\1\u01cd\106\0\1\u01ce\101\0\1\u01cf\116\0\1\u01d0"+ + "\46\0\1\306\23\0\2\60\3\0\1\u01d1\1\60\1\0"+ + "\1\307\5\0\1\60\1\111\1\306\34\0\1\306\23\0"+ + "\2\337\3\0\2\337\7\0\1\337\1\0\1\306\34\0"+ + "\1\u01d2\66\0\1\u01d3\166\0\1\u01d4\16\0\1\110\1\u01d5"+ + "\33\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\15\110\1\u01d6\17\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\10\110\1\u01d7"+ + "\24\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\3\110\1\u01d8\21\110\1\u01d9\7\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\22\110\1\u01df\12\110\2\0\3\110\4\0\1\110\1\0"+ + "\3\110\1\u01da\11\110\1\u01db\17\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\27\110\1\u01dc"+ + "\5\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\7\110\1\u01dd\25\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\12\110\1\u01de"+ + "\13\110\1\u01df\6\110\2\0\3\110\4\0\1\110\1\0"+ "\1\110\1\0\1\110\26\0\22\110\1\u01e0\12\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\12\110\1\u01e1\2\110\1\u01e2\2\110\1\u01e3\14\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\1\u01e4\34\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\u01e5\34\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\12\110\1\u01e6"+ + "\22\110\1\u01e1\12\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\12\110\1\u01e2\2\110\1\u01e3"+ + "\2\110\1\u01e4\14\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\1\u01e5\34\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u01e6"+ + "\34\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\12\110\1\u01e7\22\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\1\u01e8\10\110"+ + "\1\u01e9\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\11\110\1\u0123\23\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\7\110"+ + "\1\357\1\110\1\u01ea\4\110\1\u01eb\16\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u01ec"+ + "\34\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\3\110\1\u0123\31\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\12\110\1\u01ed"+ "\22\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\u01e7\10\110\1\u01e8\23\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ - "\1\u0123\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\7\110\1\357\1\110\1\u01e9\4\110"+ - "\1\u01ea\16\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\u01eb\34\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\3\110\1\u0123"+ - "\31\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\12\110\1\u01ec\22\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\3\110\1\u0123"+ - "\3\110\1\u01ed\2\110\1\u01ee\22\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\26\110\1\u01ef"+ - "\6\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\24\110\1\u01f0\10\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\3\110\1\u01f1"+ - "\31\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\22\110\1\u01f2\12\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\16\110\1\u01f3"+ - "\16\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\110\1\u01f4\1\110\1\u01f5\10\110\1\u01f6"+ - "\20\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\10\110\1\u01f7\4\110\1\u01f8\17\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\11\110\1\u01f9\1\110\1\u01fa\1\110\1\u01fb\17\110\2\0"+ + "\1\110\26\0\3\110\1\u0123\3\110\1\u01ee\2\110\1\u01ef"+ + "\22\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\26\110\1\u01f0\6\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\24\110\1\u01f1"+ + "\10\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\3\110\1\u01f2\31\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\22\110\1\u01f3"+ + "\12\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\16\110\1\u01f4\16\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\1\110\1\u01f5"+ + "\1\110\1\u01f6\10\110\1\u01f7\20\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\10\110\1\u01f8"+ + "\4\110\1\u01f9\17\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\11\110\1\u01fa\1\110\1\u01fb"+ + "\1\110\1\u01fc\17\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\32\110\1\357\2\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\11\110\1\u01fd\23\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\12\110\1\u01fe\22\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\1\110\1\u01ff\10\110\1\u0200\22\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\4\110\1\u0201"+ + "\30\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\1\110\1\357\7\110\1\u0202\23\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\32\110\1\357\2\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\11\110\1\u01fc\23\110\2\0"+ + "\22\110\1\u0203\12\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\10\110\1\u0204\24\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\12\110\1\u01fd\22\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\1\110\1\u01fe\10\110\1\u01ff"+ - "\22\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\4\110\1\u0200\30\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\1\110\1\357"+ - "\7\110\1\u0201\23\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\22\110\1\u0202\12\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\10\110\1\u0203\24\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\24\110\1\u0204\1\357\7\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\1\u0205\3\110\1\u0206\2\110\1\u0207\1\u0208\7\110"+ - "\1\u0209\6\110\1\u020a\5\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\22\110\1\u020b\12\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\33\110\1\u020c\1\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\2\110\1\u020d\16\110"+ - "\1\u020e\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\u01fc\34\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\2\110\1\u020f"+ - "\1\u0210\31\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\16\110\1\u0211\16\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u0212"+ - "\12\110\1\u0213\6\110\1\u0214\12\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\1\110\1\u0215"+ - "\5\110\1\u0216\4\110\1\u0211\20\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\2\110\1\u0217"+ - "\32\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\7\110\1\u0218\25\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\1\u0219\34\110"+ + "\24\110\1\u0205\1\357\7\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\1\u0206\3\110\1\u0207"+ + "\2\110\1\u0208\1\u0209\7\110\1\u020a\6\110\1\u020b\5\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\22\110\1\u021a\12\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\13\110\1\u021b\21\110"+ + "\26\0\22\110\1\u020c\12\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\33\110\1\u020d\1\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\4\110\1\u021c\2\110\1\u021d\2\110\1\u021e\7\110"+ - "\1\u021f\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\15\110\1\u0220\17\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ - "\1\357\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\u0221\20\110\1\u0222\13\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\14\110\1\u0223\20\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\26\110\1\u0224\6\110\2\0"+ + "\26\0\2\110\1\u020e\16\110\1\u020f\13\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u01fd"+ + "\34\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\2\110\1\u0210\1\u0211\31\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\16\110"+ + "\1\u0212\16\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\1\u0213\12\110\1\u0214\6\110\1\u0215"+ + "\12\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\1\110\1\u0216\5\110\1\u0217\4\110\1\u0212"+ + "\20\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\2\110\1\u0218\32\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\7\110\1\u0219"+ + "\25\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\1\u021a\34\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\22\110\1\u021b\12\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\13\110\1\u021c\21\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\4\110\1\u021d\2\110"+ + "\1\u021e\2\110\1\u021f\7\110\1\u0220\12\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\15\110"+ + "\1\u0221\17\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\14\110\1\357\20\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u0222"+ + "\20\110\1\u0223\13\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\14\110\1\u0224\20\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\14\110\1\u0225\20\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\26\110\1\u0226\6\110\2\0"+ + "\26\110\1\u0225\6\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\14\110\1\u0226\20\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\10\110\1\u01f0\24\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\4\110\1\u0227\30\110\2\0"+ + "\26\110\1\u0227\6\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\10\110\1\u01f1\24\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\1\110\1\u0228\11\110\1\u0229\21\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\u022a"+ - "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\4\110\1\u0228\30\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\1\110\1\u0229\11\110\1\u022a"+ + "\21\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ "\1\110\26\0\6\110\1\u022b\26\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\1\u01dc\34\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\1\110\1\u022c\33\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\11\110\1\u022d\23\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\1\u01f2\34\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\4\110\1\u022e\22\110\1\u022f"+ - "\5\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\u0230\12\110\1\u01dc\5\110\1\u0231\13\110"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\u022c"+ + "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\1\u01dd\34\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\1\110\1\u022d\33\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\11\110\1\377\23\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\11\110\1\u0232\23\110"+ + "\26\0\11\110\1\u022e\23\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\1\u01f3\34\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\4\110\1\u022f\22\110\1\u0230\5\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\1\u0231\12\110"+ + "\1\u01dd\5\110\1\u0232\13\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\11\110\1\377\23\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\4\110\1\u0233\30\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\13\110\1\u0234\21\110"+ + "\26\0\11\110\1\u0233\23\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\4\110\1\u0234\30\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\3\110\1\u0235\31\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\7\110\1\u0236\25\110"+ + "\26\0\13\110\1\u0235\21\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\3\110\1\u0236\31\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\1\u0237\2\110\1\u0238\10\110\1\u0139\1\u0239\17\110"+ + "\26\0\7\110\1\u0237\25\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\1\u0238\2\110\1\u0239"+ + "\10\110\1\u0139\1\u023a\17\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\11\110\1\u023b\23\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\11\110\1\u023a\23\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\21\110\1\u023b\13\110"+ + "\26\0\21\110\1\u023c\13\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\13\110\1\u023d\21\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\13\110\1\u023c\21\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\20\110\1\u0139\14\110"+ + "\26\0\20\110\1\u0139\14\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\12\110\1\u023e\22\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\12\110\1\u023d\22\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\15\110\1\u023e\3\110"+ - "\1\u0236\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\11\110\1\u023f\23\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\30\110"+ - "\1\u0139\4\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\11\110\1\u0240\2\110\1\u0241\20\110"+ + "\26\0\15\110\1\u023f\3\110\1\u0237\13\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ + "\1\u0240\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\30\110\1\u0139\4\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ + "\1\u0241\2\110\1\u0242\20\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\21\110\1\u0243\13\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\21\110\1\u0242\13\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\12\110\1\u0243\22\110"+ + "\26\0\12\110\1\u0244\22\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\1\110\1\u0245\2\110"+ + "\1\u0246\30\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\14\110\1\u0246\5\110\1\u0247\12\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\1\110\1\u0244\2\110\1\u0245\30\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ - "\1\u0245\5\110\1\u0246\12\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\27\110\1\u0139\5\110"+ + "\26\0\27\110\1\u0139\5\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\14\110\1\u0248\20\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\14\110\1\u0247\20\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\3\110\1\u0248\11\110"+ - "\1\u0249\17\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\30\110\1\u024a\4\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ - "\1\u024b\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\u024c\34\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\12\110\1\u0139"+ - "\2\110\1\u024d\17\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\4\110\1\u024e\30\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\13\110\1\u024f\21\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\14\110\1\u0250\20\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\22\110\1\u0251\12\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\26\110\1\u0252\6\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\6\110\1\u0253\26\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\1\110\1\u0254\33\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\6\110\1\u0255\26\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\11\110\1\u0256\23\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\6\110\1\u0257\26\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\65\0\1\u0258\41\0\30\110\1\u0259"+ - "\4\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\47\0\1\u025a\73\0\1\u025b\100\0\1\u025c\76\0"+ - "\1\u025d\15\0\1\u025e\3\0\1\u025f\44\0\1\u0260\106\0"+ - "\1\u0261\113\0\1\u0262\1\u0263\61\0\1\u0264\6\0\1\u0265"+ - "\107\0\1\u0266\57\0\15\110\1\u0267\17\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\15\0\3\u016a"+ - "\1\u0268\52\u016a\1\u016b\25\u016a\1\u0269\52\u016a\1\u016b\22\u016a"+ - "\3\u016d\1\u026a\62\u016d\1\u016e\15\u016d\1\u026b\62\u016d\1\u016e"+ - "\12\u016d\3\216\1\u026c\2\216\1\217\72\216\15\0\1\u026d"+ - "\74\0\6\36\1\u026e\26\36\1\0\1\231\3\36\1\231"+ - "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\10\36"+ - "\1\232\24\36\1\0\1\231\3\36\1\231\3\0\1\36"+ - "\1\231\1\36\1\0\1\36\26\0\11\36\1\u026f\23\36"+ + "\26\0\3\110\1\u0249\11\110\1\u024a\17\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\30\110"+ + "\1\u024b\4\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\6\110\1\u024c\26\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u024d"+ + "\34\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\12\110\1\u0139\2\110\1\u024e\17\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\4\110\1\u024f\30\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\13\110\1\u0250\21\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\14\110\1\u0251\20\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\22\110\1\u0252\12\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\26\110\1\u0253\6\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\6\110\1\u0254\26\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\1\110\1\u0255\33\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\6\110\1\u0256\26\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\11\110\1\u0257\23\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\6\110\1\u0258\26\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\65\0"+ + "\1\u0259\41\0\30\110\1\u025a\4\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\47\0\1\u025b\73\0"+ + "\1\u025c\100\0\1\u025d\76\0\1\u025e\15\0\1\u025f\3\0"+ + "\1\u0260\44\0\1\u0261\106\0\1\u0262\113\0\1\u0263\1\u0264"+ + "\61\0\1\u0265\6\0\1\u0266\107\0\1\u0267\57\0\15\110"+ + "\1\u0268\17\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\15\0\3\u016a\1\u0269\52\u016a\1\u016b\25\u016a"+ + "\1\u026a\52\u016a\1\u016b\22\u016a\3\u016d\1\u026b\62\u016d\1\u016e"+ + "\15\u016d\1\u026c\62\u016d\1\u016e\12\u016d\3\216\1\u026d\2\216"+ + "\1\217\72\216\15\0\1\u026e\74\0\6\36\1\u026f\26\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\22\0\1\u017a\104\0\10\36\1\232\24\36"+ "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ - "\1\0\1\36\26\0\3\36\1\u0270\31\36\1\0\1\231"+ + "\1\0\1\36\26\0\11\36\1\u0270\23\36\1\0\1\231"+ "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ - "\26\0\14\36\1\u0270\20\36\1\0\1\231\3\36\1\231"+ - "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\22\36"+ - "\1\u0271\12\36\1\0\1\231\3\36\1\231\3\0\1\36"+ - "\1\231\1\36\1\0\1\36\26\0\10\36\1\u0272\24\36"+ + "\26\0\3\36\1\u0271\31\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\14\36"+ + "\1\u0271\20\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\22\36\1\u0272\12\36"+ "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ "\1\0\1\36\26\0\10\36\1\u0273\24\36\1\0\1\231"+ "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ - "\26\0\14\36\1\u0274\20\36\1\0\1\231\3\36\1\231"+ - "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\17\36"+ - "\1\232\15\36\1\0\1\231\3\36\1\231\3\0\1\36"+ - "\1\231\1\36\1\0\1\36\26\0\1\u0275\34\36\1\0"+ - "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ - "\1\36\26\0\6\36\1\u0276\26\36\1\0\1\231\3\36"+ + "\26\0\10\36\1\u0274\24\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\14\36"+ + "\1\u0275\20\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\17\36\1\232\15\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\1\u0276\34\36\1\0\1\231\3\36"+ "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ - "\13\36\1\u0277\6\36\1\u0278\12\36\1\0\1\231\3\36"+ + "\6\36\1\u0277\26\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\13\36\1\u0278"+ + "\6\36\1\u0279\12\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\17\36\1\u027a"+ + "\15\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\20\36\1\u027b\14\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\6\36\1\u027c\5\36\1\u027d\20\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\5\36\1\232\27\36\1\0\1\231\3\36"+ "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ - "\17\36\1\u0279\15\36\1\0\1\231\3\36\1\231\3\0"+ - "\1\36\1\231\1\36\1\0\1\36\26\0\20\36\1\u027a"+ - "\14\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ - "\1\36\1\0\1\36\26\0\6\36\1\u027b\5\36\1\u027c"+ + "\15\36\1\u027e\17\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\14\36\1\u027f"+ "\20\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ - "\1\36\1\0\1\36\26\0\5\36\1\232\27\36\1\0"+ + "\1\36\1\0\1\36\26\0\20\36\1\u0273\14\36\1\0"+ "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ - "\1\36\26\0\15\36\1\u027d\17\36\1\0\1\231\3\36"+ + "\1\36\26\0\13\36\1\u0280\21\36\1\0\1\231\3\36"+ "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ - "\14\36\1\u027e\20\36\1\0\1\231\3\36\1\231\3\0"+ - "\1\36\1\231\1\36\1\0\1\36\26\0\20\36\1\u0272"+ - "\14\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ - "\1\36\1\0\1\36\26\0\13\36\1\u027f\21\36\1\0"+ - "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ - "\1\36\26\0\1\u0190\34\36\1\0\1\231\3\36\1\231"+ - "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\14\36"+ - "\1\u0272\20\36\1\0\1\231\3\36\1\231\3\0\1\36"+ - "\1\231\1\36\1\0\1\36\26\0\1\u0280\34\36\1\0"+ - "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ - "\1\36\26\0\2\36\1\u0281\32\36\1\0\1\231\3\36"+ + "\1\u0191\34\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\14\36\1\u0273\20\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\1\u0281\34\36\1\0\1\231\3\36"+ "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ - "\14\36\1\u0282\20\36\1\0\1\231\3\36\1\231\3\0"+ - "\1\36\1\231\1\36\1\0\1\36\26\0\11\36\1\u0283"+ - "\23\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ - "\1\36\1\0\1\36\26\0\6\36\1\u0284\26\36\1\0"+ + "\2\36\1\u0282\32\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\14\36\1\u0283"+ + "\20\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\11\36\1\u0284\23\36\1\0"+ "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ - "\1\36\26\0\21\36\1\u0285\13\36\1\0\1\231\3\36"+ + "\1\36\26\0\6\36\1\u0285\26\36\1\0\1\231\3\36"+ "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ - "\7\36\1\u0272\25\36\1\0\1\231\3\36\1\231\3\0"+ - "\1\36\1\231\1\36\1\0\1\36\26\0\12\36\1\u0286"+ - "\22\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ - "\1\36\1\0\1\36\26\0\6\36\1\u0287\26\36\1\0"+ + "\21\36\1\u0286\13\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\7\36\1\u0273"+ + "\25\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\12\36\1\u0287\22\36\1\0"+ "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ - "\1\36\26\0\5\36\1\u0272\27\36\1\0\1\231\3\36"+ + "\1\36\26\0\6\36\1\u0288\26\36\1\0\1\231\3\36"+ "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ - "\4\36\1\u0288\30\36\1\0\1\231\3\36\1\231\3\0"+ - "\1\36\1\231\1\36\1\0\1\36\26\0\1\36\1\u0272"+ - "\33\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ - "\1\36\1\0\1\36\26\0\2\36\1\u0289\32\36\1\0"+ + "\5\36\1\u0273\27\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\4\36\1\u0289"+ + "\30\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\1\36\1\u0273\33\36\1\0"+ "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ - "\1\36\26\0\22\36\1\u028a\12\36\1\0\1\231\3\36"+ + "\1\36\26\0\2\36\1\u028a\32\36\1\0\1\231\3\36"+ "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ - "\14\36\1\u018a\20\36\1\0\1\231\3\36\1\231\3\0"+ - "\1\36\1\231\1\36\1\0\1\36\26\0\6\36\1\u028b"+ - "\26\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ - "\1\36\1\0\1\36\26\0\22\36\1\u028c\12\36\1\0"+ + "\22\36\1\u028b\12\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\14\36\1\u018b"+ + "\20\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\6\36\1\u028c\26\36\1\0"+ "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ - "\1\36\26\0\11\36\1\u028d\23\36\1\0\1\231\3\36"+ + "\1\36\26\0\22\36\1\u028d\12\36\1\0\1\231\3\36"+ "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ - "\6\36\1\u028e\26\36\1\0\1\231\3\36\1\231\3\0"+ - "\1\36\1\231\1\36\1\0\1\36\26\0\11\36\1\u028f"+ - "\23\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ - "\1\36\1\0\1\36\26\0\21\36\1\u027b\13\36\1\0"+ + "\11\36\1\u028e\23\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\6\36\1\u028f"+ + "\26\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\11\36\1\u0290\23\36\1\0"+ "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ - "\1\36\26\0\4\36\1\u0290\30\36\1\0\1\231\3\36"+ + "\1\36\26\0\21\36\1\u027c\13\36\1\0\1\231\3\36"+ "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ - "\3\36\1\u0291\31\36\1\0\1\231\3\36\1\231\3\0"+ - "\1\36\1\231\1\36\1\0\1\36\26\0\6\36\1\u0292"+ - "\1\232\25\36\1\0\1\231\3\36\1\231\3\0\1\36"+ - "\1\231\1\36\1\0\1\36\60\0\2\u01aa\3\0\2\u01aa"+ - "\7\0\1\u01aa\30\0\11\36\1\u0293\23\36\1\0\1\231"+ - "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ - "\31\0\1\u0294\133\0\1\u017a\51\0\1\u0295\71\0\1\u0296"+ - "\2\0\1\u0297\10\0\1\u01ae\1\u0298\74\0\1\u0299\110\0"+ - "\1\u029a\72\0\1\u029b\105\0\1\u01ae\72\0\1\u029c\103\0"+ - "\1\u029d\3\0\1\u0295\70\0\1\u029e\117\0\1\u01ae\61\0"+ - "\1\u029f\2\0\1\u02a0\105\0\1\u02a1\71\0\1\u02a2\67\0"+ - "\1\u02a3\2\0\1\u02a4\110\0\1\u02a4\5\0\1\u02a5\105\0"+ - "\1\u01ae\65\0\1\u02a6\67\0\1\u02a7\11\0\1\u02a8\20\0"+ - "\1\u017a\72\0\1\u02a9\56\0\1\u02aa\72\0\1\u02ab\112\0"+ - "\1\u01ae\2\0\1\u02ac\67\0\1\u02ad\107\0\1\u02ae\101\0"+ - "\1\u02af\106\0\1\u02b0\104\0\1\u02b1\60\0\1\u02b2\73\0"+ - "\1\u02b3\105\0\1\u02b4\103\0\1\u02b5\75\0\1\u02b6\131\0"+ - "\1\u01ae\47\0\1\306\23\0\2\60\2\0\1\u017a\2\60"+ - "\1\0\1\307\5\0\1\60\1\111\1\306\43\0\1\u02b7"+ - "\63\0\2\110\1\u02b8\32\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\13\110\1\u02b9\21\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\6\110\1\u02ba\26\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\5\110\1\u02bb\27\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\3\110\1\u02bc\31\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\4\110\1\365\30\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\21\110\1\u02bd\13\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\13\110\1\u02bd\21\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\10\110\1\357\24\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\13\110\1\u02be\21\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\6\110\1\u02bf\26\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\20\110\1\u02bb\14\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\26\110\1\u02c0\6\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\14\110\1\u02c1\20\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\21\110\1\u02c2\13\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\7\110\1\u02c3\25\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\11\110\1\u02c4\23\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\15\110\1\u02c5\17\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\20\110\1\u02c6\14\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\11\110\1\u02c7\23\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\13\110\1\u02c8\21\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\11\110\1\u02c9\23\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\3\110\1\u02ca\10\110\1\u02cb\20\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\10\110"+ - "\1\u02cc\24\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\20\110\1\u02cd\14\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\13\110"+ - "\1\u0123\21\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\17\110\1\357\15\110\2\0\3\110"+ + "\4\36\1\u0291\30\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\3\36\1\u0292"+ + "\31\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\6\36\1\u0293\1\232\25\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\60\0\2\u01ab\3\0\2\u01ab\7\0\1\u01ab"+ + "\30\0\11\36\1\u0294\23\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\31\0\1\u0295"+ + "\71\0\1\u017a\41\0\1\u017b\51\0\1\u0296\71\0\1\u0297"+ + "\2\0\1\u0298\10\0\1\u01af\1\u0299\74\0\1\u029a\110\0"+ + "\1\u029b\72\0\1\u029c\105\0\1\u01af\72\0\1\u029d\103\0"+ + "\1\u029e\3\0\1\u0296\70\0\1\u029f\117\0\1\u01af\61\0"+ + "\1\u02a0\2\0\1\u02a1\105\0\1\u02a2\71\0\1\u02a3\67\0"+ + "\1\u02a4\2\0\1\u02a5\110\0\1\u02a5\5\0\1\u02a6\105\0"+ + "\1\u01af\65\0\1\u02a7\60\0\1\u017a\6\0\1\u02a8\11\0"+ + "\1\u02a9\20\0\1\u017b\72\0\1\u02aa\56\0\1\u02ab\72\0"+ + "\1\u02ac\112\0\1\u01af\2\0\1\u02ad\67\0\1\u02ae\107\0"+ + "\1\u02af\101\0\1\u02b0\106\0\1\u02b1\104\0\1\u02b2\60\0"+ + "\1\u02b3\73\0\1\u02b4\105\0\1\u02b5\103\0\1\u02b6\75\0"+ + "\1\u02b7\131\0\1\u01af\35\0\1\u017a\11\0\1\306\23\0"+ + "\2\60\2\0\1\u017b\2\60\1\0\1\307\5\0\1\60"+ + "\1\111\1\306\43\0\1\u02b8\63\0\2\110\1\u02b9\32\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\13\110\1\u02ba\21\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\6\110\1\u02bb\26\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\5\110\1\u02bc\27\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\3\110\1\u02bd\31\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\4\110\1\365\30\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\21\110\1\u02be\13\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\13\110\1\u02be\21\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\10\110\1\357\24\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\13\110\1\u02bf\21\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\6\110\1\u02c0\26\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\20\110\1\u02bc\14\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\26\110\1\u02c1\6\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\14\110\1\u02c2\20\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\21\110\1\u02c3\13\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\7\110\1\u02c4\25\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\11\110\1\u02c5\23\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\15\110\1\u02c6\17\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\20\110\1\u02c7\14\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\11\110\1\u02c8\23\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\13\110\1\u02c9\21\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\11\110\1\u02ca\23\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\3\110\1\u02cb\10\110"+ + "\1\u02cc\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\10\110\1\u02cd\24\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\20\110"+ + "\1\u02ce\14\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\13\110\1\u0123\21\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\17\110"+ + "\1\357\15\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\13\110\1\u0134\21\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ + "\1\u02cf\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\2\110\1\u02d0\32\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ + "\1\u01d9\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\6\110\1\u02d1\26\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\3\110"+ + "\1\u02d2\31\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\22\110\1\u02d3\12\110\2\0\3\110"+ "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\13\110"+ - "\1\u0134\21\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\6\110\1\u02ce\26\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\2\110"+ - "\1\u02cf\32\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\11\110\1\u01d8\23\110\2\0\3\110"+ + "\1\u02d4\21\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\4\110\1\u01db\30\110\2\0\3\110"+ "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ - "\1\u02d0\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\3\110\1\u02d1\31\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\22\110"+ - "\1\u02d2\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\13\110\1\u02d3\21\110\2\0\3\110"+ + "\1\u02d5\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\17\110\1\u02d6\15\110\2\0\3\110"+ "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\4\110"+ - "\1\u01da\30\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\6\110\1\u02d4\26\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\17\110"+ - "\1\u02d5\15\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\4\110\1\u02d6\30\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ - "\1\u02d7\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\20\110\1\u02d8\14\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\22\110"+ - "\1\u02d9\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\13\110\1\u02da\21\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ - "\1\u02db\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\u02d7\30\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\11\110\1\u02d8\23\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\20\110"+ + "\1\u02d9\14\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\22\110\1\u02da\12\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\13\110"+ + "\1\u02db\21\110\2\0\3\110\4\0\1\110\1\0\1\110"+ "\1\0\1\110\26\0\14\110\1\u02dc\20\110\2\0\3\110"+ "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ "\1\u02dd\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\11\110\1\u02de\23\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ - "\1\u02df\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\22\110\1\u02e0\12\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\110"+ - "\1\u02e1\33\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\u02e2\34\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\21\110\1\u02e3"+ - "\13\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\4\110\1\u02e4\1\110\1\u02e5\26\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\6\110\1\u02e6\26\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\0\1\110\26\0\14\110\1\u02de\20\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ + "\1\u02df\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\6\110\1\u02e0\26\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\22\110"+ + "\1\u02e1\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\1\110\1\u02e2\33\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u02e3"+ + "\34\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\21\110\1\u02e4\13\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\4\110\1\u02e5"+ + "\1\110\1\u02e6\26\110\2\0\3\110\4\0\1\110\1\0"+ "\1\110\1\0\1\110\26\0\6\110\1\u02e7\26\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\12\110\1\u02df\22\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\16\110\1\u02ce\16\110\2\0"+ + "\6\110\1\u02e8\26\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\12\110\1\u02e0\22\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\1\u02e8\3\110\1\u02e9\1\110\1\u02ea\1\110\1\u02eb\1\110"+ - "\1\u02ec\1\110\1\u02ed\1\110\1\u02ee\3\110\1\u02ef\1\110"+ - "\1\u02f0\1\u02f1\1\u02f2\2\110\1\u02f3\3\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\2\110"+ - "\1\u02f4\32\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\u02f5\34\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\374"+ - "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\4\110\1\u02d8\30\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\12\110\1\u02f6"+ - "\22\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\7\110\1\357\25\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\u02f7"+ - "\3\110\1\u02f8\22\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\25\110\1\357\7\110\2\0"+ + "\16\110\1\u02cf\16\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\1\u02e9\3\110\1\u02ea\1\110"+ + "\1\u02eb\1\110\1\u02ec\1\110\1\u02ed\1\110\1\u02ee\1\110"+ + "\1\u02ef\3\110\1\u02f0\1\110\1\u02f1\1\u02f2\1\u02f3\2\110"+ + "\1\u02f4\3\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\2\110\1\u02f5\32\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u02f6"+ + "\34\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\6\110\1\374\26\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\4\110\1\u02d9"+ + "\30\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\12\110\1\u02f7\22\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\7\110\1\357"+ + "\25\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\6\110\1\u02f8\3\110\1\u02f9\22\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\6\110\1\u02f9\26\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\3\110\1\u02fa\10\110\1\u02fb"+ - "\14\110\1\u02f3\3\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\6\110\1\u02fc\26\110\2\0"+ + "\25\110\1\357\7\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\6\110\1\u02fa\26\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\14\110\1\u02fd\20\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\12\110\1\u01ee\22\110\2\0"+ + "\3\110\1\u02fb\10\110\1\u02fc\14\110\1\u02f4\3\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\4\110\1\357\30\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\4\110\1\u02fe\30\110\2\0"+ + "\6\110\1\u02fd\26\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\14\110\1\u02fe\20\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\10\110\1\u02ff\24\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\3\110\1\u0300\10\110\1\u0301"+ - "\20\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\12\110\1\u0302\22\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\17\110\1\u0303"+ - "\15\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\27\110\1\u0304\5\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\22\110\1\u0305"+ - "\12\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\13\110\1\u0306\21\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\22\110\1\u0307"+ - "\12\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\10\110\1\u0308\24\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\3\110\1\u0309"+ - "\31\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\110\1\u030a\4\110\1\u030b\26\110\2\0"+ + "\12\110\1\u01ef\22\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\4\110\1\357\30\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\6\110\1\u030c\26\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\34\110\1\u030d\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ - "\1\u02d8\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\17\110\1\u01d8\15\110\2\0\3\110"+ + "\4\110\1\u02ff\30\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\10\110\1\u0300\24\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\3\110\1\u0301\10\110\1\u0302\20\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\12\110\1\u0303"+ + "\22\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\17\110\1\u0304\15\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\27\110\1\u0305"+ + "\5\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\22\110\1\u0306\12\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\13\110\1\u0307"+ + "\21\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\22\110\1\u0308\12\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\10\110\1\u0309"+ + "\24\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\3\110\1\u030a\31\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\1\110\1\u030b"+ + "\4\110\1\u030c\26\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\6\110\1\u030d\26\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\34\110\1\u030e\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\11\110\1\u02d9\23\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\17\110"+ + "\1\u01d9\15\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\21\110\1\u030f\13\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\110"+ + "\1\u0310\33\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\3\110\1\u0311\31\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\13\110"+ + "\1\u0312\21\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\14\110\1\u0313\20\110\2\0\3\110"+ "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\21\110"+ - "\1\u030e\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\110\1\u030f\33\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\3\110"+ - "\1\u0310\31\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\13\110\1\u0311\21\110\2\0\3\110"+ + "\1\u02cf\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\7\110\1\u0314\25\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\4\110"+ + "\1\u0315\30\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\12\110\1\357\22\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ + "\1\u0316\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\10\110\1\u0139\24\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ + "\1\u0317\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\3\110\1\u0318\31\110\2\0\3\110"+ "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ - "\1\u0312\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\21\110\1\u02ce\13\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\7\110"+ - "\1\u0313\25\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\4\110\1\u0314\30\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\12\110"+ - "\1\357\22\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\6\110\1\u0315\26\110\2\0\3\110"+ + "\1\u0318\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\22\110\1\u0319\12\110\2\0\3\110"+ "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\10\110"+ - "\1\u0139\24\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\11\110\1\u0316\23\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\3\110"+ - "\1\u0317\31\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\u031a\24\110\2\0\3\110\4\0\1\110\1\0\1\110"+ "\1\0\1\110\26\0\14\110\1\u0317\20\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\22\110"+ - "\1\u0318\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\10\110\1\u0319\24\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ - "\1\u0316\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\17\110\1\u0139\15\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u031a"+ - "\34\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\17\110\1\u031b\15\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\u031c"+ - "\5\110\1\u031d\20\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\5\110\1\u0139\27\110\2\0"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\17\110"+ + "\1\u0139\15\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\1\u031b\34\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\17\110\1\u031c"+ + "\15\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\6\110\1\u031d\5\110\1\u031e\20\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\14\110\1\u031e\20\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\20\110\1\u0319\14\110\2\0"+ + "\5\110\1\u0139\27\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\14\110\1\u031f\20\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\13\110\1\u031f\21\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\1\u0246\34\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ - "\1\u0319\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\2\110\1\u0320\32\110\2\0\3\110"+ + "\20\110\1\u031a\14\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\13\110\1\u0320\21\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\1\u0247\34\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\14\110\1\u031a\20\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\2\110"+ + "\1\u0321\32\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\14\110\1\u0322\20\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ + "\1\u0323\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\21\110\1\u0324\13\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\7\110"+ + "\1\u031a\25\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\12\110\1\u0325\22\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\5\110"+ + "\1\u031a\27\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\4\110\1\u0326\30\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\110"+ + "\1\u031a\33\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\2\110\1\u0327\32\110\2\0\3\110"+ "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ - "\1\u0321\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\11\110\1\u0322\23\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\21\110"+ - "\1\u0323\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\7\110\1\u0319\25\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\12\110"+ - "\1\u0324\22\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\5\110\1\u0319\27\110\2\0\3\110"+ + "\1\u0242\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\22\110\1\u0328\12\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ + "\1\u0329\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\21\110\1\u031d\13\110\2\0\3\110"+ "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\4\110"+ - "\1\u0325\30\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\110\1\u0319\33\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\2\110"+ - "\1\u0326\32\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\14\110\1\u0241\20\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\22\110"+ - "\1\u0327\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\11\110\1\u0328\23\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\21\110"+ - "\1\u031c\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\4\110\1\u0329\30\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ - "\1\u032a\1\u0139\25\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\11\110\1\u032b\23\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\21\110\1\u032c\13\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\34\0\1\u032d\72\0\1\u032e\106\0"+ - "\1\u0265\73\0\1\u032f\112\0\1\u0330\107\0\1\u0331\72\0"+ - "\1\u0332\104\0\1\u0333\74\0\1\u0334\70\0\1\u0335\76\0"+ - "\1\u0336\1\u0337\6\0\1\u0338\100\0\1\u0339\66\0\22\110"+ - "\1\u033a\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\15\0\3\u016a\1\u033b\52\u016a\1\u016b\22\u016a"+ - "\3\u016d\1\u033b\62\u016d\1\u016e\12\u016d\17\0\1\u033c\72\0"+ - "\14\36\1\u028d\20\36\1\0\1\231\3\36\1\231\3\0"+ - "\1\36\1\231\1\36\1\0\1\36\26\0\15\36\1\u018a"+ - "\17\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ - "\1\36\1\0\1\36\26\0\13\36\1\u033d\21\36\1\0"+ + "\1\u032a\30\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\6\110\1\u032b\1\u0139\25\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\11\110\1\u032c\23\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\21\110\1\u032d\13\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\34\0"+ + "\1\u032e\72\0\1\u032f\106\0\1\u0266\73\0\1\u0330\112\0"+ + "\1\u0331\107\0\1\u0332\72\0\1\u0333\104\0\1\u0334\74\0"+ + "\1\u0335\70\0\1\u0336\76\0\1\u0337\1\u0338\6\0\1\u0339"+ + "\100\0\1\u033a\66\0\22\110\1\u033b\12\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\15\0\3\u016a"+ + "\1\u033c\52\u016a\1\u016b\22\u016a\3\u016d\1\u033c\62\u016d\1\u016e"+ + "\12\u016d\17\0\1\u033d\72\0\14\36\1\u028e\20\36\1\0"+ "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ - "\1\36\26\0\15\36\1\u033e\17\36\1\0\1\231\3\36"+ + "\1\36\26\0\15\36\1\u018b\17\36\1\0\1\231\3\36"+ "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ - "\6\36\1\232\26\36\1\0\1\231\3\36\1\231\3\0"+ + "\13\36\1\u033e\21\36\1\0\1\231\3\36\1\231\3\0"+ "\1\36\1\231\1\36\1\0\1\36\26\0\15\36\1\u033f"+ "\17\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ - "\1\36\1\0\1\36\26\0\4\36\1\u0340\30\36\1\0"+ + "\1\36\1\0\1\36\26\0\6\36\1\232\26\36\1\0"+ "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ - "\1\36\26\0\13\36\1\u0341\21\36\1\0\1\231\3\36"+ + "\1\36\26\0\15\36\1\u0340\17\36\1\0\1\231\3\36"+ "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ - "\26\36\1\u0342\6\36\1\0\1\231\3\36\1\231\3\0"+ - "\1\36\1\231\1\36\1\0\1\36\26\0\12\36\1\u0343"+ - "\22\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ - "\1\36\1\0\1\36\26\0\1\36\1\u0344\33\36\1\0"+ + "\4\36\1\u0341\30\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\13\36\1\u0342"+ + "\21\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\26\36\1\u0343\6\36\1\0"+ "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ - "\1\36\26\0\6\36\1\u0345\26\36\1\0\1\231\3\36"+ + "\1\36\26\0\12\36\1\u0344\22\36\1\0\1\231\3\36"+ "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ - "\12\36\1\u0346\22\36\1\0\1\231\3\36\1\231\3\0"+ - "\1\36\1\231\1\36\1\0\1\36\26\0\13\36\1\u0347"+ - "\21\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ - "\1\36\1\0\1\36\26\0\17\36\1\u0348\15\36\1\0"+ + "\1\36\1\u0345\33\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\6\36\1\u0346"+ + "\26\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\12\36\1\u0347\22\36\1\0"+ "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ - "\1\36\26\0\6\36\1\u0349\26\36\1\0\1\231\3\36"+ + "\1\36\26\0\13\36\1\u0348\21\36\1\0\1\231\3\36"+ "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ - "\11\36\1\u027e\23\36\1\0\1\231\3\36\1\231\3\0"+ - "\1\36\1\231\1\36\1\0\1\36\26\0\11\36\1\u034a"+ - "\23\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ - "\1\36\1\0\1\36\26\0\26\36\1\u034b\6\36\1\0"+ + "\17\36\1\u0349\15\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\6\36\1\u034a"+ + "\26\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\11\36\1\u027f\23\36\1\0"+ "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ - "\1\36\26\0\1\u034c\34\36\1\0\1\231\3\36\1\231"+ - "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\6\36"+ - "\1\u034d\26\36\1\0\1\231\3\36\1\231\3\0\1\36"+ - "\1\231\1\36\1\0\1\36\26\0\12\36\1\u034e\22\36"+ + "\1\36\26\0\11\36\1\u034b\23\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\26\36\1\u034c\6\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\1\u034d\34\36"+ "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ - "\1\0\1\36\26\0\3\36\1\u034f\31\36\1\0\1\231"+ - "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ - "\26\0\6\36\1\u0350\26\36\1\0\1\231\3\36\1\231"+ - "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\6\36"+ - "\1\u0351\6\36\1\u0352\10\36\1\u0353\6\36\1\0\1\231"+ + "\1\0\1\36\26\0\6\36\1\u034e\26\36\1\0\1\231"+ "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ - "\26\0\10\36\1\u0354\24\36\1\0\1\231\3\36\1\231"+ - "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\11\36"+ - "\1\u0355\23\36\1\0\1\231\3\36\1\231\3\0\1\36"+ - "\1\231\1\36\1\0\1\36\26\0\3\36\1\u0356\31\36"+ + "\26\0\12\36\1\u034f\22\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\3\36"+ + "\1\u0350\31\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\6\36\1\u0351\26\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\6\36\1\u0352\6\36\1\u0353\10\36"+ + "\1\u0354\6\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\10\36\1\u0355\24\36"+ "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ - "\1\0\1\36\26\0\3\36\1\232\31\36\1\0\1\u017a"+ + "\1\0\1\36\26\0\11\36\1\u0356\23\36\1\0\1\231"+ "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ "\26\0\3\36\1\u0357\31\36\1\0\1\231\3\36\1\231"+ - "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\6\36"+ - "\1\u0358\26\36\1\0\1\231\3\36\1\231\3\0\1\36"+ - "\1\231\1\36\1\0\1\36\26\0\1\36\1\u028d\33\36"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\22\0\1\u017a"+ + "\3\0\3\36\1\232\31\36\1\0\1\u017b\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\3\36"+ + "\1\u0358\31\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\6\36\1\u0359\26\36"+ "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ - "\1\0\1\36\26\0\6\36\1\u0359\26\36\1\0\1\231"+ + "\1\0\1\36\26\0\1\36\1\u028e\33\36\1\0\1\231"+ "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ - "\26\0\1\u026f\34\36\1\0\1\231\3\36\1\231\3\0"+ - "\1\36\1\231\1\36\1\0\1\36\26\0\25\36\1\232"+ - "\7\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ - "\1\36\1\0\1\36\34\0\1\u035a\102\0\1\u01ae\101\0"+ - "\1\u035b\72\0\1\u035c\111\0\1\u035c\106\0\1\u035d\66\0"+ - "\1\u035e\104\0\1\u035b\103\0\1\u01ae\61\0\1\u035f\117\0"+ - "\1\u0360\67\0\1\u0361\5\0\1\u0362\71\0\1\u01ae\107\0"+ - "\1\u0363\104\0\1\u035e\73\0\1\u0364\65\0\1\u02a5\114\0"+ - "\1\u035e\66\0\1\u0365\112\0\1\u0366\75\0\1\u0367\110\0"+ - "\1\u0368\66\0\1\u035e\103\0\1\u0369\73\0\1\u035e\77\0"+ - "\1\u036a\75\0\1\u035e\101\0\1\u036b\112\0\1\u02a0\106\0"+ - "\1\u036c\67\0\1\u036d\110\0\1\u0361\63\0\1\u036e\102\0"+ - "\1\u036f\1\u01ae\102\0\1\u0370\111\0\1\u0371\56\0\3\110"+ - "\1\u0372\31\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\13\110\1\357\21\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ - "\1\u0373\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\13\110\1\u0374\21\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\2\110"+ - "\1\u0375\32\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\110\1\u02d8\33\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ - "\1\u0376\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\2\110\1\u0377\32\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\26\110"+ - "\1\u0211\6\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\6\110\1\u0378\26\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\12\110"+ - "\1\u0379\22\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\6\110\1\u030e\26\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ - "\1\u037a\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\6\110\1\u037b\26\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\22\110"+ - "\1\u037c\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\14\110\1\u01f4\20\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\10\110"+ - "\1\u037d\24\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\21\110\1\u0114\13\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ - "\1\u02ce\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\11\110\1\u02ff\23\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\2\110"+ - "\1\u037e\32\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\14\110\1\u037f\20\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ - "\1\357\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\4\110\1\u0380\15\110\1\u0381\12\110"+ + "\26\0\6\36\1\u035a\26\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\1\u0270"+ + "\34\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\25\36\1\232\7\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\34\0\1\u035b\102\0\1\u01af\101\0\1\u035c\72\0"+ + "\1\u035d\111\0\1\u035d\106\0\1\u035e\66\0\1\u035f\104\0"+ + "\1\u035c\103\0\1\u01af\61\0\1\u0360\117\0\1\u0361\67\0"+ + "\1\u0362\5\0\1\u0363\71\0\1\u01af\107\0\1\u0364\104\0"+ + "\1\u035f\73\0\1\u0365\65\0\1\u02a6\114\0\1\u035f\66\0"+ + "\1\u0366\112\0\1\u0367\75\0\1\u0368\110\0\1\u0369\66\0"+ + "\1\u035f\103\0\1\u036a\73\0\1\u035f\77\0\1\u036b\75\0"+ + "\1\u035f\101\0\1\u036c\112\0\1\u02a1\106\0\1\u036d\67\0"+ + "\1\u036e\110\0\1\u0362\63\0\1\u036f\102\0\1\u0370\1\u01af"+ + "\102\0\1\u0371\111\0\1\u0372\56\0\3\110\1\u0373\31\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\1\110\1\u0382\33\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\2\110\1\u0383\32\110"+ + "\26\0\13\110\1\357\21\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\11\110\1\u0374\23\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\11\110\1\u0384\23\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\14\110\1\u0385\20\110"+ + "\26\0\13\110\1\u0375\21\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\2\110\1\u0376\32\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\11\110\1\u0386\23\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\1\110\1\u0387\33\110"+ + "\26\0\1\110\1\u02d9\33\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\14\110\1\u0377\20\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\14\110\1\u02d7\20\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\21\110\1\357\13\110"+ + "\26\0\2\110\1\u0378\32\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\26\110\1\u0212\6\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\6\110\1\357\26\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\14\110\1\u0388\20\110"+ + "\26\0\6\110\1\u0379\26\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\12\110\1\u037a\22\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\26\110\1\u0389\6\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\5\110\1\u01d8\27\110"+ + "\26\0\6\110\1\u030f\26\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\14\110\1\u037b\20\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\13\110\1\u038a\21\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\13\110\1\u02de\21\110"+ + "\26\0\6\110\1\u037c\26\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\22\110\1\u037d\12\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\1\u021b\34\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\1\110\1\357\33\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\11\110\1\u038b\23\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\2\110\1\u038c\32\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\14\110\1\u038d\20\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\27\110\1\u0384\5\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\1\u038e\34\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\u0123\34\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\30\110\1\u038f"+ - "\4\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\11\110\1\u0390\23\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\4\110\1\u0391"+ - "\21\110\1\u0392\6\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\6\110\1\u0393\12\110\1\u0394"+ - "\13\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\7\110\1\u0395\25\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\1\377\34\110"+ + "\26\0\14\110\1\u01f5\20\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\10\110\1\u037e\24\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\22\110\1\u0396\12\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\21\110\1\u0397\13\110"+ + "\26\0\21\110\1\u0114\13\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\14\110\1\u02cf\20\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\4\110\1\u0398\1\110\1\u0399\26\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\10\110"+ - "\1\u039a\1\u021b\23\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\6\110\1\u039b\26\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\6\110\1\u039c\26\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\22\110\1\u039d\12\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\3\110\1\u039e\31\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\26\110\1\u039f\6\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\11\110\1\u03a0\23\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\3\110\1\357\31\110\2\0"+ + "\26\0\11\110\1\u0300\23\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\2\110\1\u037f\32\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\14\110\1\u0380\20\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\11\110\1\357\23\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\4\110\1\u0381\15\110\1\u0382\12\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\110"+ + "\1\u0383\33\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\2\110\1\u0384\32\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ + "\1\u0385\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\14\110\1\u0386\20\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ + "\1\u0387\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\1\110\1\u0388\33\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ + "\1\u02d8\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\21\110\1\357\13\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ + "\1\357\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\14\110\1\u0389\20\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\26\110"+ + "\1\u038a\6\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\5\110\1\u01d9\27\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\13\110"+ + "\1\u038b\21\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\13\110\1\u02df\21\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u021c"+ + "\34\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\1\110\1\357\33\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\11\110\1\u038c"+ + "\23\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\2\110\1\u038d\32\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\14\110\1\u038e"+ + "\20\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\27\110\1\u0385\5\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\1\u038f\34\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\1\u0123\34\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\30\110\1\u0390\4\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\15\110\1\u03a1\17\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\23\110\1\u03a2\11\110\2\0"+ + "\11\110\1\u0391\23\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\4\110\1\u0392\21\110\1\u0393"+ + "\6\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\6\110\1\u0394\12\110\1\u0395\13\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\10\110\1\u03a3\24\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\1\u03a4\34\110\2\0\3\110"+ + "\7\110\1\u0396\25\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\1\377\34\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\22\110"+ + "\1\u0397\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\21\110\1\u0398\13\110\2\0\3\110"+ "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\4\110"+ - "\1\u0376\30\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\357\34\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\1\u03a5\34\110"+ + "\1\u0399\1\110\1\u039a\26\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\10\110\1\u039b\1\u021c"+ + "\23\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\6\110\1\u039c\26\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\u039d"+ + "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\22\110\1\u039e\12\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\3\110\1\u039f"+ + "\31\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\26\110\1\u03a0\6\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\11\110\1\u03a1"+ + "\23\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\3\110\1\357\31\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\15\110\1\u03a2"+ + "\17\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\23\110\1\u03a3\11\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\10\110\1\u03a4"+ + "\24\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\1\u03a5\34\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\4\110\1\u0377\30\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\1\u03a6\34\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\21\110\1\u03a7\13\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\1\u03a8\34\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\14\110\1\u03a9\20\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\3\110"+ - "\1\u03aa\14\110\1\u03ab\14\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\1\u03ac\34\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\10\110\1\u03ad\24\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\21\110\1\u03ae\13\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\3\110\1\u03af\31\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\22\110\1\u0123\12\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\6\110\1\u0123\26\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\6\110\1\u03b0\26\110\2\0"+ + "\26\0\1\357\34\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\1\u03a6\34\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u03a7"+ + "\34\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\21\110\1\u03a8\13\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\1\u03a9\34\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\14\110\1\u03aa\20\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\3\110\1\u03ab\14\110"+ + "\1\u03ac\14\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\1\u03ad\34\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\10\110\1\u03ae"+ + "\24\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\21\110\1\u03af\13\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\3\110\1\u03b0"+ + "\31\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\22\110\1\u0123\12\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\u0123"+ + "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\6\110\1\u03b1\26\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\12\110\1\u03b1"+ + "\22\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\11\110\1\u03b2\23\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\22\110\1\u02d9"+ + "\12\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\12\110\1\u0123\22\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\2\110\1\u03b3"+ + "\32\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\6\110\1\u03b4\26\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\15\110\1\u039f"+ + "\17\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\14\110\1\u03b5\20\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\1\u03b6\34\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\2\110\1\u03b7\32\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\14\110\1\u0329\20\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\15\110\1\u0242\17\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\13\110\1\u03b8\21\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\15\110\1\u03b9\17\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\6\110\1\u0139\26\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\4\110\1\u03ba\30\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\1\110\1\u03bb\33\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\12\110\1\u03bc\22\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\13\110\1\u03bd\21\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\6\110\1\u03be\26\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\11\110\1\u031f\23\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\26\110\1\u03bf\6\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\1\u03c0\34\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\12\110\1\u03b0\22\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\11\110\1\u03b1\23\110\2\0"+ + "\6\110\1\u03c1\26\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\12\110\1\u03c2\22\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\22\110\1\u02d8\12\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\12\110\1\u0123\22\110\2\0"+ + "\3\110\1\u03c3\31\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\6\110\1\u03c4\26\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\2\110\1\u03b2\32\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\6\110\1\u03b3\26\110\2\0"+ + "\6\110\1\u03c5\6\110\1\u03c6\10\110\1\u03c7\6\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\15\110\1\u039e\17\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\14\110\1\u03b4\20\110\2\0"+ + "\3\110\1\u03c8\31\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\3\110\1\u0139\31\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\1\u03b5\34\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\2\110\1\u03b6\32\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ - "\1\u0328\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\15\110\1\u0241\17\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\13\110"+ - "\1\u03b7\21\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\15\110\1\u03b8\17\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ - "\1\u0139\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\4\110\1\u03b9\30\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\110"+ - "\1\u03ba\33\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\12\110\1\u03bb\22\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\13\110"+ - "\1\u03bc\21\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\6\110\1\u03bd\26\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ - "\1\u031e\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\26\110\1\u03be\6\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u03bf"+ - "\34\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\6\110\1\u03c0\26\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\12\110\1\u03c1"+ - "\22\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\3\110\1\u03c2\31\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\u03c3"+ - "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\6\110\1\u03c4\6\110\1\u03c5\10\110\1\u03c6"+ - "\6\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\3\110\1\u03c7\31\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\3\110\1\u0139"+ - "\31\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\110\1\u0328\33\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\1\u0316\34\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\25\110\1\u0139\7\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\12\110\1\u03c8\22\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\31\0\1\u03c9\106\0\1\u03ca\72\0\1\u03cb\100\0\1\u03cc"+ - "\75\0\1\u03cd\115\0\1\u03ce\71\0\1\u03cf\74\0\1\u03d0"+ - "\102\0\1\u0265\74\0\1\u03d1\5\0\1\u03d2\3\0\1\u03d3"+ - "\3\0\1\u03d4\3\0\1\u03d5\64\0\1\u0338\106\0\1\u0265"+ - "\100\0\1\u03d6\64\0\11\110\1\u03d7\23\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\31\0\1\u03d8"+ - "\75\0\21\36\1\u03d9\13\36\1\0\1\231\3\36\1\231"+ - "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\14\36"+ - "\1\u03da\20\36\1\0\1\231\3\36\1\231\3\0\1\36"+ - "\1\231\1\36\1\0\1\36\26\0\5\36\1\u03db\27\36"+ + "\1\110\1\u0329\33\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\1\u0317\34\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\25\110"+ + "\1\u0139\7\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\12\110\1\u03c9\22\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\31\0\1\u03ca"+ + "\106\0\1\u03cb\72\0\1\u03cc\100\0\1\u03cd\75\0\1\u03ce"+ + "\115\0\1\u03cf\71\0\1\u03d0\74\0\1\u03d1\102\0\1\u0266"+ + "\74\0\1\u03d2\5\0\1\u03d3\3\0\1\u03d4\3\0\1\u03d5"+ + "\3\0\1\u03d6\64\0\1\u0339\106\0\1\u0266\100\0\1\u03d7"+ + "\64\0\11\110\1\u03d8\23\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\31\0\1\u03d9\75\0\21\36"+ + "\1\u03da\13\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\14\36\1\u03db\20\36"+ "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ - "\1\0\1\36\26\0\6\36\1\u03dc\26\36\1\0\1\231"+ + "\1\0\1\36\26\0\5\36\1\u03dc\27\36\1\0\1\231"+ "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ - "\26\0\26\36\1\u03dd\6\36\1\0\1\231\3\36\1\231"+ - "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\4\36"+ - "\1\u03de\30\36\1\0\1\231\3\36\1\231\3\0\1\36"+ - "\1\231\1\36\1\0\1\36\26\0\21\36\1\u03df\13\36"+ + "\26\0\6\36\1\u03dd\26\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\26\36"+ + "\1\u03de\6\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\4\36\1\u03df\30\36"+ "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ - "\1\0\1\36\26\0\14\36\1\232\20\36\1\0\1\231"+ + "\1\0\1\36\26\0\21\36\1\u03e0\13\36\1\0\1\231"+ "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ - "\26\0\1\u03e0\34\36\1\0\1\231\3\36\1\231\3\0"+ - "\1\36\1\231\1\36\1\0\1\36\26\0\15\36\1\u0346"+ - "\17\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ - "\1\36\1\0\1\36\26\0\3\36\1\u03e1\31\36\1\0"+ + "\26\0\14\36\1\232\20\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\1\u03e1"+ + "\34\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\15\36\1\u0347\17\36\1\0"+ "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ - "\1\36\26\0\21\36\1\u03e2\13\36\1\0\1\231\3\36"+ + "\1\36\26\0\3\36\1\u03e2\31\36\1\0\1\231\3\36"+ "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ - "\4\36\1\u03e3\30\36\1\0\1\231\3\36\1\231\3\0"+ - "\1\36\1\231\1\36\1\0\1\36\26\0\7\36\1\u03e4"+ - "\25\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ - "\1\36\1\0\1\36\26\0\21\36\1\u03e5\13\36\1\0"+ + "\21\36\1\u03e3\13\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\4\36\1\u03e4"+ + "\30\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ + "\1\36\1\0\1\36\26\0\7\36\1\u03e5\25\36\1\0"+ "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ - "\1\36\26\0\2\36\1\u03e6\32\36\1\0\1\u017a\3\36"+ + "\1\36\26\0\21\36\1\u03e6\13\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\22\0"+ + "\1\u017a\3\0\2\36\1\u03e7\32\36\1\0\1\u017b\3\36"+ "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ - "\15\36\1\u017e\17\36\1\0\1\231\3\36\1\231\3\0"+ - "\1\36\1\231\1\36\1\0\1\36\26\0\11\36\1\u03e7"+ + "\15\36\1\u017f\17\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\11\36\1\u03e8"+ "\23\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ - "\1\36\1\0\1\36\26\0\21\36\1\u03e8\13\36\1\0"+ + "\1\36\1\0\1\36\26\0\21\36\1\u03e9\13\36\1\0"+ "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ - "\1\36\26\0\13\36\1\u0275\21\36\1\0\1\231\3\36"+ + "\1\36\26\0\13\36\1\u0276\21\36\1\0\1\231\3\36"+ "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ - "\16\36\1\u03e9\16\36\1\0\1\231\3\36\1\231\3\0"+ - "\1\36\1\231\1\36\1\0\1\36\26\0\16\36\1\u03ea"+ + "\16\36\1\u03ea\16\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\26\0\16\36\1\u03eb"+ "\16\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ - "\1\36\1\0\1\36\26\0\15\36\1\u018f\17\36\1\0"+ + "\1\36\1\0\1\36\26\0\15\36\1\u0190\17\36\1\0"+ "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ - "\1\36\26\0\3\36\1\u03eb\31\36\1\0\1\231\3\36"+ + "\1\36\26\0\3\36\1\u03ec\31\36\1\0\1\231\3\36"+ "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\42\0"+ - "\1\u036d\101\0\1\u02a0\76\0\1\u03ec\102\0\1\u03ed\71\0"+ - "\1\u01ae\76\0\1\u03ee\75\0\1\u03ef\111\0\1\u03f0\101\0"+ - "\1\u03f1\73\0\1\u03f2\103\0\1\u0363\115\0\1\u03f3\52\0"+ - "\1\u03f4\106\0\1\u03f5\104\0\1\u03f6\71\0\1\u03f7\103\0"+ - "\1\u03f8\100\0\1\u03f9\6\0\1\u03fa\10\0\1\u03fb\55\0"+ - "\1\u03fc\100\0\1\u01ae\32\0\1\u017a\43\0\1\u036d\77\0"+ - "\1\u035b\125\0\1\u01ae\64\0\1\u03fd\67\0\4\110\1\u03fe"+ + "\1\u036e\101\0\1\u02a1\76\0\1\u03ed\102\0\1\u03ee\71\0"+ + "\1\u01af\76\0\1\u03ef\75\0\1\u03f0\111\0\1\u03f1\101\0"+ + "\1\u03f2\73\0\1\u03f3\103\0\1\u0364\115\0\1\u03f4\52\0"+ + "\1\u03f5\106\0\1\u03f6\104\0\1\u03f7\71\0\1\u03f8\103\0"+ + "\1\u03f9\100\0\1\u03fa\6\0\1\u03fb\10\0\1\u03fc\55\0"+ + "\1\u03fd\71\0\1\u017a\6\0\1\u01af\32\0\1\u017b\43\0"+ + "\1\u036e\77\0\1\u035c\125\0\1\u01af\64\0\1\u03fe\67\0"+ + "\4\110\1\u03ff\30\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\3\110\1\u0400\31\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\26\110\1\u0216\6\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\1\u0401\34\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\13\110"+ + "\1\u0402\21\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\14\110\1\u0403\20\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\12\110"+ + "\1\u0404\22\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\1\110\1\u01d9\33\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\25\110"+ + "\1\u0405\7\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\4\110\1\u0406\30\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\4\110"+ + "\1\u0407\30\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\2\110\1\u0408\32\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\15\110"+ + "\1\u0409\17\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\5\110\1\357\27\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\21\110"+ + "\1\u040a\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\10\110\1\u040b\24\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\2\110"+ + "\1\u040c\32\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\24\110\1\u040d\10\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ + "\1\u040e\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\13\110\1\u040f\21\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\10\110"+ + "\1\u0123\24\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\21\110\1\u0410\13\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ + "\1\u01d9\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\25\110\1\u0411\7\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\10\110"+ + "\1\u0412\24\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\4\110\1\u0413\30\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ + "\1\u0414\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\13\110\1\u0415\21\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\15\110"+ + "\1\u02d9\17\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\2\110\1\u0416\32\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\3\110"+ + "\1\u02d9\31\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\10\110\1\u0417\24\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ + "\1\u01f1\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\1\u0418\34\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\24\110\1\u0419"+ + "\10\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\1\u0120\7\110\1\u041a\5\110\1\u041b\16\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\7\110\1\u041c\25\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\1\110\1\u041d\5\110"+ + "\1\u041e\25\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\1\u021b\34\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\14\110\1\u041f"+ + "\11\110\1\u0420\6\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\10\110\1\u0419\24\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\6\110\1\u0421\26\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\3\110\1\u0422\31\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\14\110\1\u0423\20\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\21\110\1\u0235\13\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\21\110\1\u0424\13\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\11\110\1\u041d\23\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\1\u0425\34\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\21\110\1\u0426\13\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u0427"+ + "\34\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\16\110\1\u02f7\16\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\10\110\1\u0428"+ + "\24\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\15\110\1\u0123\17\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\4\110\1\u0429"+ "\30\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\3\110\1\u03ff\31\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\26\110\1\u0215"+ - "\6\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\u0400\34\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\13\110\1\u0401\21\110"+ + "\1\110\26\0\13\110\1\u042a\21\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\2\110\1\u042b"+ + "\32\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\10\110\1\u02e5\24\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\11\110\1\u042c"+ + "\23\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\14\110\1\u0407\20\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\2\110\1\u042d"+ + "\32\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\12\110\1\u042e\22\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\15\110\1\u042f"+ + "\17\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\15\110\1\u01db\17\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\3\110\1\u0430"+ + "\31\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\15\110\1\u0431\17\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\u0235"+ + "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\14\110\1\u0432\20\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\22\110\1\u0433"+ + "\12\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\21\110\1\u0434\13\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\14\110\1\u0435"+ + "\20\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\6\110\1\u0436\26\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\21\110\1\u0437"+ + "\13\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\14\110\1\u0139\20\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\1\u0438\34\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\14\110\1\u0402\20\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\12\110\1\u0403\22\110"+ + "\26\0\15\110\1\u03bc\17\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\21\110\1\u0439\13\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\1\110\1\u01d8\33\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\25\110\1\u0404\7\110"+ + "\26\0\4\110\1\u043a\30\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\7\110\1\u043b\25\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\4\110\1\u0405\30\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\4\110\1\u0406\30\110"+ + "\26\0\21\110\1\u043c\13\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\2\110\1\u043d\32\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\2\110\1\u0407\32\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\15\110\1\u0408\17\110"+ + "\26\0\15\110\1\u023a\17\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\11\110\1\u043e\23\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\5\110\1\357\27\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\21\110\1\u0409\13\110"+ + "\26\0\21\110\1\u043f\13\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\13\110\1\u031b\21\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\10\110\1\u040a\24\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\2\110\1\u040b\32\110"+ + "\26\0\15\110\1\u0246\17\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\21\110\1\u0440\13\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\24\110\1\u040c\10\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\6\110\1\u040d\26\110"+ + "\40\0\1\u0441\102\0\1\u0330\66\0\1\u0442\112\0\1\u0443"+ + "\70\0\1\u0443\101\0\1\u0444\123\0\1\u0266\63\0\1\u0445"+ + "\71\0\1\u0446\21\0\1\u0447\61\0\1\u0448\113\0\1\u0449"+ + "\64\0\1\u044a\103\0\1\u0336\67\0\1\u044b\100\0\3\110"+ + "\1\u044c\31\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\31\0\1\u044d\75\0\12\36\1\232\22\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\22\36\1\u044e\12\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\22\0\1\u017a\3\0\35\36\1\0\1\u017b\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\3\0\1\u044f"+ + "\22\0\3\36\1\232\31\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\6\36"+ + "\1\u0450\26\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\24\36\1\u03da\10\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\4\36\1\232\30\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\6\36\1\u0451\26\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\22\36"+ + "\1\u0452\12\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\4\36\1\u0453\30\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\6\36\1\u027c\26\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\7\36\1\u0294\25\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\15\36"+ + "\1\u0454\17\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\11\36\1\u0455\23\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\12\36\1\u0456\22\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\25\36\1\u0457\7\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\25\36"+ + "\1\u0458\7\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\47\0\1\u0459\73\0\1\u045a"+ + "\72\0\1\u045b\113\0\1\u045c\73\0\1\u01af\64\0\1\u045d"+ + "\115\0\1\u03f1\104\0\1\u045e\63\0\1\u045f\103\0\1\u0460"+ + "\112\0\1\u0461\53\0\1\u017a\5\0\1\u0462\33\0\1\u017b"+ + "\57\0\1\u0299\74\0\1\u0463\110\0\1\u0464\72\0\1\u0360"+ + "\102\0\1\u02a5\66\0\1\u0465\75\0\1\u0466\34\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\1\u0467\34\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\20\110\1\u02d8\14\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\23\110"+ + "\1\u02d9\11\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\11\110\1\u0468\23\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\15\110"+ + "\1\u0469\17\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\10\110\1\u046a\24\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ + "\1\u046b\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\1\u02cf\34\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\14\110\1\u046c"+ + "\20\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\1\u0391\34\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\24\110\1\u046d\10\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\13\110\1\u040e\21\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\10\110\1\u0123\24\110"+ + "\26\0\10\110\1\u046d\24\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\22\110\1\u046e\12\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\21\110\1\u040f\13\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\6\110\1\u01d8\26\110"+ + "\26\0\13\110\1\u02ce\21\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\2\110\1\u046f\32\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\25\110\1\u0410\7\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\10\110\1\u0411\24\110"+ + "\26\0\6\110\1\u02f7\26\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\24\110\1\u0235\10\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\4\110\1\u0412\30\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\14\110\1\u0413\20\110"+ + "\26\0\2\110\1\u0470\32\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\4\110\1\u0216\30\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\13\110\1\u0414\21\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\15\110\1\u02d8\17\110"+ + "\26\0\6\110\1\u030c\26\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\13\110\1\u0471\21\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\2\110\1\u0415\32\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\3\110\1\u02d8\31\110"+ + "\26\0\27\110\1\u02d9\5\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\11\110\1\u0472\23\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\10\110\1\u0416\24\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\14\110\1\u01f0\20\110"+ + "\26\0\5\110\1\u0473\27\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\10\110\1\u0474\24\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\1\u0417\34\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\24\110\1\u0418\10\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\1\u0120\7\110\1\u0419\5\110\1\u041a\16\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\7\110"+ - "\1\u041b\25\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\110\1\u041c\5\110\1\u041d\25\110"+ + "\26\0\6\110\1\u0475\26\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\14\110\1\u0216\20\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\1\u021a\34\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\14\110\1\u041e\11\110\1\u041f"+ - "\6\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\10\110\1\u0418\24\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\u0420"+ - "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\3\110\1\u0421\31\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\14\110\1\u0422"+ + "\26\0\6\110\1\u0476\26\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\6\110\1\u0477\7\110"+ + "\1\u0478\16\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\1\u0216\34\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\21\110\1\u0479"+ + "\13\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\24\110\1\u047a\10\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\21\110\1\u022b"+ + "\13\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\17\110\1\u047b\15\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\14\110\1\u047c"+ "\20\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\21\110\1\u0234\13\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\21\110\1\u0423"+ + "\1\110\26\0\22\110\1\u022b\12\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\11\110\1\u047d"+ + "\23\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\14\110\1\u02d9\20\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\12\110\1\u02d9"+ + "\22\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\15\110\1\u040f\17\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\3\110\1\u047e"+ + "\31\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\6\110\1\u047f\26\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\12\110\1\u0480"+ + "\22\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\3\110\1\u0481\31\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\21\110\1\u0482"+ "\13\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\11\110\1\u041c\23\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\1\u0424\34\110"+ + "\1\110\26\0\16\110\1\u0216\16\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\2\110\1\u0483"+ + "\32\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\1\u0484\34\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\15\110\1\u0485\17\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\21\110\1\u0486\13\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\2\110\1\u0487\32\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\11\110\1\u0488\23\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\12\110\1\u0139\22\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\22\110\1\u0489\12\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\24\110\1\u0434\10\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\4\110\1\u0139\30\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\22\110\1\u048a\12\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\4\110\1\u048b\30\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\6\110\1\u031d\26\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\21\110\1\u0425\13\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\1\u0426\34\110\2\0"+ + "\26\0\7\110\1\u032c\25\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\15\110\1\u048c\17\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\11\110\1\u048d\23\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\12\110\1\u048e\22\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\7\110\1\u048f\25\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\42\0\1\u0490\110\0\1\u0491"+ + "\57\0\1\u0266\103\0\1\u0443\104\0\1\u0266\76\0\1\u0492"+ + "\104\0\1\u0493\64\0\1\u0494\7\0\1\u0495\5\0\1\u0496"+ + "\71\0\1\u0497\117\0\1\u0498\65\0\1\u0499\65\0\13\110"+ + "\1\u049a\21\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\11\36\1\u0273\23\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\3\36\1\u049b\31\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\12\36"+ + "\1\u049c\22\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\26\0\6\36\1\u049c\26\36"+ + "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ + "\1\0\1\36\26\0\5\36\1\u049d\27\36\1\0\1\231"+ + "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ + "\26\0\21\36\1\u01a3\13\36\1\0\1\231\3\36\1\231"+ + "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\14\36"+ + "\1\u03e5\20\36\1\0\1\231\3\36\1\231\3\0\1\36"+ + "\1\231\1\36\1\0\1\36\40\0\1\u01af\110\0\1\u049e"+ + "\61\0\1\u01af\121\0\1\u0459\60\0\1\u01af\116\0\1\u049f"+ + "\62\0\1\u04a0\102\0\1\u0362\101\0\1\u0371\106\0\1\u04a1"+ + "\74\0\1\u04a2\101\0\1\u04a3\101\0\1\u04a4\65\0\3\110"+ + "\1\u04a5\31\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\12\110\1\u04a6\22\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\22\110"+ + "\1\u04a7\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\6\110\1\u042e\26\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u04a8"+ + "\34\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\3\110\1\u02f7\31\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\1\u04a9\34\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\6\110\1\u04aa\26\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\11\110\1\u021c\23\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\4\110\1\u04ab\4\110\1\u04ac\23\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\110"+ + "\1\u03a2\33\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\7\110\1\u02d9\25\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ + "\1\u04ad\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\1\u04ae\34\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\2\110\1\u04af"+ + "\32\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\11\110\1\u037f\23\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\1\110\1\u04b0"+ + "\33\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\11\110\1\u04b1\23\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\u04b2"+ + "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\11\110\1\u04b3\23\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\u03b5"+ + "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\1\110\1\u041d\4\110\1\u020c\26\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\16\110\1\u02f6\16\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\10\110\1\u0427\24\110\2\0"+ + "\6\110\1\u04b4\26\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\7\110\1\u02e6\25\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\15\110\1\u0123\17\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\4\110\1\u0428\30\110\2\0"+ + "\6\110\1\u04b5\26\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\2\110\1\u04b6\32\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\13\110\1\u0429\21\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\2\110\1\u042a\32\110\2\0"+ + "\3\110\1\u04b7\31\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\22\110\1\u04b8\12\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\10\110\1\u02e4\24\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\11\110\1\u042b\23\110\2\0"+ + "\22\110\1\u04b9\12\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\4\110\1\u04ba\30\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\14\110\1\u0406\20\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\2\110\1\u042c\32\110\2\0"+ + "\14\110\1\u04bb\20\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\21\110\1\u04bc\13\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\12\110\1\u042d\22\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\15\110\1\u042e\17\110\2\0"+ + "\22\110\1\u030f\12\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\4\110\1\u04bd\5\110\1\u04be"+ + "\22\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\4\110\1\u02f7\30\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\11\110\1\u031a"+ + "\23\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\12\110\1\u04bf\22\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\u04bf"+ + "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\5\110\1\u04c0\27\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\21\110\1\u0254"+ + "\13\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\14\110\1\u043b\20\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\25\110\1\u04c1"+ + "\7\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\30\0\1\u04c2\111\0\1\u04c3\72\0\1\u04c4\101\0"+ + "\1\u04c5\105\0\1\u0336\101\0\1\u04c6\72\0\1\u04c7\100\0"+ + "\1\u04c8\7\0\1\u04c9\103\0\1\u04ca\71\0\1\u0443\66\0"+ + "\27\110\1\u04cb\5\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\3\36\1\u04cc\31\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\26\0\1\36\1\232\33\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\26\0"+ + "\21\36\1\u04cd\13\36\1\0\1\231\3\36\1\231\3\0"+ + "\1\36\1\231\1\36\1\0\1\36\37\0\1\u035f\101\0"+ + "\1\u04ce\74\0\1\u04ce\77\0\1\u04cf\114\0\1\u02b3\73\0"+ + "\1\u0460\113\0\1\u04d0\51\0\5\110\1\u040f\27\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\15\110\1\u01da\17\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\3\110\1\u042f\31\110\2\0"+ + "\1\110\1\u042e\33\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\12\110\1\u02f9\22\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\15\110\1\u0430\17\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\6\110\1\u0234\26\110\2\0"+ + "\12\110\1\u04d1\22\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\20\110\1\u02f7\14\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\14\110\1\u0431\20\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\22\110\1\u0432\12\110\2\0"+ + "\11\110\1\u02cd\23\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\6\110\1\u04d2\26\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\21\110\1\u0433\13\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\14\110\1\u0434\20\110\2\0"+ + "\13\110\1\u04d3\21\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\10\110\1\u04d4\24\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\6\110\1\u0435\26\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\21\110\1\u0436\13\110\2\0"+ + "\12\110\1\u04d5\22\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\25\110\1\u04d6\7\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\14\110\1\u0139\20\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\1\u0437\34\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\15\110"+ - "\1\u03bb\17\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\21\110\1\u0438\13\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\4\110"+ - "\1\u0439\30\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\7\110\1\u043a\25\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\21\110"+ - "\1\u043b\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\2\110\1\u043c\32\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\15\110"+ - "\1\u0239\17\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\11\110\1\u043d\23\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\21\110"+ - "\1\u043e\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\13\110\1\u031a\21\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\15\110"+ - "\1\u0245\17\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\21\110\1\u043f\13\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\40\0\1\u0440"+ - "\102\0\1\u032f\66\0\1\u0441\112\0\1\u0442\70\0\1\u0442"+ - "\101\0\1\u0443\123\0\1\u0265\63\0\1\u0444\71\0\1\u0445"+ - "\21\0\1\u0446\61\0\1\u0447\113\0\1\u0448\64\0\1\u0449"+ - "\103\0\1\u0335\67\0\1\u044a\100\0\3\110\1\u044b\31\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\31\0\1\u044c\75\0\12\36\1\232\22\36\1\0\1\231"+ - "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ - "\26\0\22\36\1\u044d\12\36\1\0\1\231\3\36\1\231"+ - "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\35\36"+ - "\1\0\1\u017a\3\36\1\231\3\0\1\36\1\231\1\36"+ - "\1\0\1\36\3\0\1\u044e\22\0\3\36\1\232\31\36"+ - "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ - "\1\0\1\36\26\0\6\36\1\u044f\26\36\1\0\1\231"+ - "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ - "\26\0\24\36\1\u03d9\10\36\1\0\1\231\3\36\1\231"+ - "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\4\36"+ - "\1\232\30\36\1\0\1\231\3\36\1\231\3\0\1\36"+ - "\1\231\1\36\1\0\1\36\26\0\6\36\1\u0450\26\36"+ - "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ - "\1\0\1\36\26\0\22\36\1\u0451\12\36\1\0\1\231"+ - "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ - "\26\0\4\36\1\u0452\30\36\1\0\1\231\3\36\1\231"+ - "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\6\36"+ - "\1\u027b\26\36\1\0\1\231\3\36\1\231\3\0\1\36"+ - "\1\231\1\36\1\0\1\36\26\0\7\36\1\u0293\25\36"+ - "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ - "\1\0\1\36\26\0\15\36\1\u0453\17\36\1\0\1\231"+ - "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ - "\26\0\11\36\1\u0454\23\36\1\0\1\231\3\36\1\231"+ - "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\12\36"+ - "\1\u0455\22\36\1\0\1\231\3\36\1\231\3\0\1\36"+ - "\1\231\1\36\1\0\1\36\26\0\25\36\1\u0456\7\36"+ - "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ - "\1\0\1\36\26\0\25\36\1\u0457\7\36\1\0\1\231"+ - "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ - "\47\0\1\u0458\73\0\1\u0459\72\0\1\u045a\113\0\1\u045b"+ - "\73\0\1\u01ae\64\0\1\u045c\115\0\1\u03f0\104\0\1\u045d"+ - "\63\0\1\u045e\103\0\1\u045f\112\0\1\u0460\61\0\1\u0461"+ - "\33\0\1\u017a\57\0\1\u0298\74\0\1\u0462\110\0\1\u0463"+ - "\72\0\1\u035f\102\0\1\u02a4\66\0\1\u0464\75\0\1\u0465"+ - "\34\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\u0466\34\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\20\110\1\u02d7\14\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\23\110\1\u02d8\11\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\11\110\1\u0467\23\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\15\110\1\u0468\17\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\10\110\1\u0469\24\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\6\110\1\u046a\26\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\1\u02ce\34\110\2\0"+ + "\1\110\1\u04d7\33\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\13\110\1\u04d8\21\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\14\110\1\u046b\20\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\1\u0390\34\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\24\110"+ - "\1\u046c\10\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\10\110\1\u046c\24\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\22\110"+ - "\1\u046d\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\13\110\1\u02cd\21\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\2\110"+ - "\1\u046e\32\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\6\110\1\u02f6\26\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\24\110"+ - "\1\u0234\10\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\2\110\1\u046f\32\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\4\110"+ - "\1\u0215\30\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\6\110\1\u030b\26\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\13\110"+ - "\1\u0470\21\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\27\110\1\u02d8\5\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ - "\1\u0471\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\5\110\1\u0472\27\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\10\110"+ - "\1\u0473\24\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\6\110\1\u0474\26\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\14\110"+ - "\1\u0215\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\6\110\1\u0475\26\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ - "\1\u0476\7\110\1\u0477\16\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\1\u0215\34\110\2\0"+ + "\11\110\1\u04d9\23\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\11\110\1\u04da\23\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\21\110\1\u0478\13\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\24\110\1\u0479\10\110\2\0"+ + "\11\110\1\u04db\23\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\2\110\1\u04dc\32\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\21\110\1\u022a\13\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\17\110\1\u047a\15\110\2\0"+ + "\4\110\1\u04dd\30\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\2\110\1\u04de\32\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\14\110\1\u047b\20\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\22\110\1\u022a\12\110\2\0"+ + "\16\110\1\u04df\16\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\12\110\1\u04e0\22\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\11\110\1\u047c\23\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\14\110\1\u02d8\20\110\2\0"+ + "\13\110\1\377\21\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\6\110\1\u04e1\26\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\12\110\1\u02d8\22\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\15\110\1\u040e\17\110\2\0"+ + "\11\110\1\u0204\23\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\21\110\1\u04e2\13\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\3\110\1\u047d\31\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\6\110\1\u047e\26\110\2\0"+ + "\22\110\1\u04e3\12\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\1\110\1\u0139\33\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\12\110\1\u047f\22\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\3\110\1\u0480\31\110\2\0"+ + "\21\110\1\u04e4\13\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\35\110\1\0\1\u04e5\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\31\0\1\u04e6"+ + "\2\0\1\u04e7\1\u04e8\5\0\1\u04e9\77\0\1\u04ea\64\0"+ + "\1\u04eb\111\0\1\u0266\114\0\1\u0266\54\0\1\u04ec\110\0"+ + "\1\u04ed\75\0\1\u04ee\103\0\1\u04ef\67\0\6\110\1\u04f0"+ + "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\13\36\1\u04f1\21\36\1\0\1\231\3\36"+ + "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\27\0"+ + "\1\u01af\120\0\1\u04f2\65\0\1\u04f3\72\0\14\110\1\u02f7"+ + "\20\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\26\110\1\u0123\6\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\20\110\1\u04f4"+ + "\14\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\4\110\1\u02e5\30\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\22\110\1\u04f5"+ + "\12\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\6\110\1\u0407\26\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\1\u0119\34\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\15\110\1\357\17\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\24\110\1\u04f6\10\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\21\110\1\u04f7\13\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\1\110\1\u041d\33\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\24\110\1\u04f8\10\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\21\110\1\u04f9\13\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\1\u04fa\34\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\3\110\1\u04fb\31\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\21\110\1\u0481\13\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\16\110\1\u0215\16\110\2\0"+ + "\1\110\1\u04fc\33\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\2\110\1\u04fd\32\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\2\110\1\u0482\32\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\1\u0483\34\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\15\110"+ - "\1\u0484\17\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\21\110\1\u0485\13\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\2\110"+ - "\1\u0486\32\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\11\110\1\u0487\23\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\12\110"+ - "\1\u0139\22\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\22\110\1\u0488\12\110\2\0\3\110"+ + "\15\110\1\u04fe\17\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\7\110\1\u04ff\25\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\13\110\1\u0500\21\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\42\0\1\u0501\76\0\1\u0502\15\0"+ + "\1\u0503\50\0\1\u0504\121\0\1\u0505\64\0\1\u0266\75\0"+ + "\1\u0506\77\0\1\u0507\112\0\1\u0508\76\0\1\u0509\67\0"+ + "\35\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\14\0\1\u050a\11\0\15\36\1\u0273\17\36\1\0"+ + "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ + "\1\36\41\0\1\u050b\65\0\5\110\1\u0123\27\110\2\0"+ + "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ + "\7\110\1\u050c\25\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\1\u050d\34\110\2\0\3\110"+ "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\24\110"+ - "\1\u0433\10\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\4\110\1\u0139\30\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\22\110"+ - "\1\u0489\12\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\4\110\1\u048a\30\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\6\110"+ - "\1\u031c\26\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\7\110\1\u032b\25\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\15\110"+ - "\1\u048b\17\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\11\110\1\u048c\23\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\12\110"+ - "\1\u048d\22\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\7\110\1\u048e\25\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\42\0\1\u048f"+ - "\110\0\1\u0490\57\0\1\u0265\103\0\1\u0442\104\0\1\u0265"+ - "\76\0\1\u0491\104\0\1\u0492\64\0\1\u0493\7\0\1\u0494"+ - "\5\0\1\u0495\71\0\1\u0496\117\0\1\u0497\65\0\1\u0498"+ - "\65\0\13\110\1\u0499\21\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\11\36\1\u0272\23\36"+ - "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ - "\1\0\1\36\26\0\3\36\1\u049a\31\36\1\0\1\231"+ - "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ - "\26\0\12\36\1\u049b\22\36\1\0\1\231\3\36\1\231"+ - "\3\0\1\36\1\231\1\36\1\0\1\36\26\0\6\36"+ - "\1\u049b\26\36\1\0\1\231\3\36\1\231\3\0\1\36"+ - "\1\231\1\36\1\0\1\36\26\0\5\36\1\u049c\27\36"+ - "\1\0\1\231\3\36\1\231\3\0\1\36\1\231\1\36"+ - "\1\0\1\36\26\0\21\36\1\u01a2\13\36\1\0\1\231"+ - "\3\36\1\231\3\0\1\36\1\231\1\36\1\0\1\36"+ - "\26\0\14\36\1\u03e4\20\36\1\0\1\231\3\36\1\231"+ - "\3\0\1\36\1\231\1\36\1\0\1\36\40\0\1\u01ae"+ - "\110\0\1\u049d\61\0\1\u01ae\121\0\1\u0458\60\0\1\u01ae"+ - "\116\0\1\u049e\62\0\1\u049f\102\0\1\u0361\101\0\1\u0370"+ - "\106\0\1\u04a0\74\0\1\u04a1\101\0\1\u04a2\101\0\1\u04a3"+ - "\65\0\3\110\1\u04a4\31\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\12\110\1\u04a5\22\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\22\110\1\u04a6\12\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\6\110\1\u042d\26\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\1\u04a7\34\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\3\110\1\u02f6\31\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\1\u04a8\34\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\6\110\1\u04a9\26\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\11\110"+ - "\1\u021b\23\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\4\110\1\u04aa\4\110\1\u04ab\23\110"+ + "\1\357\10\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\5\110\1\u050e\27\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\20\110"+ + "\1\357\14\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\26\0\4\110\1\u021c\5\110\1\u0216\22\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\1\110\1\u03a1\33\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\7\110\1\u02d8\25\110"+ + "\26\0\14\110\1\u050f\20\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\2\110\1\u0510\32\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\6\110\1\u04ac\26\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\1\u04ad\34\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\2\110\1\u04ae\32\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\11\110\1\u037e\23\110\2\0"+ + "\26\0\6\110\1\u0511\26\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\1\u0512\34\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\1\110\1\u04af\33\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\11\110\1\u04b0\23\110\2\0"+ + "\16\110\1\u01f1\16\110\2\0\3\110\4\0\1\110\1\0"+ + "\1\110\1\0\1\110\26\0\15\110\1\u031a\17\110\2\0"+ "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\6\110\1\u04b1\26\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\11\110\1\u04b2\23\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\6\110\1\u03b4\26\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\1\110\1\u041c\4\110\1\u020b"+ + "\1\u0513\101\0\1\u03cc\112\0\1\u0514\101\0\1\u0515\76\0"+ + "\1\u0516\100\0\1\u0517\66\0\1\u0518\115\0\1\u0266\107\0"+ + "\1\u0519\71\0\1\u051a\100\0\1\u035f\63\0\6\110\1\u0477"+ "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\6\110\1\u04b3\26\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\7\110\1\u02e5"+ - "\25\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\6\110\1\u04b4\26\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\2\110\1\u04b5"+ - "\32\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\3\110\1\u04b6\31\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\22\110\1\u04b7"+ - "\12\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\22\110\1\u04b8\12\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\4\110\1\u04b9"+ - "\30\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\14\110\1\u04ba\20\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\21\110\1\u04bb"+ - "\13\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\22\110\1\u030e\12\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\4\110\1\u04bc"+ - "\5\110\1\u04bd\22\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\4\110\1\u02f6\30\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\11\110\1\u0319\23\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\12\110\1\u04be\22\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\6\110\1\u04be\26\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\5\110\1\u04bf\27\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\21\110\1\u0253\13\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\14\110\1\u043a\20\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\25\110\1\u04c0\7\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\30\0\1\u04c1\111\0\1\u04c2\72\0"+ - "\1\u04c3\101\0\1\u04c4\105\0\1\u0335\101\0\1\u04c5\72\0"+ - "\1\u04c6\100\0\1\u04c7\7\0\1\u04c8\103\0\1\u04c9\71\0"+ - "\1\u0442\66\0\27\110\1\u04ca\5\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\3\36\1\u04cb"+ - "\31\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ - "\1\36\1\0\1\36\26\0\1\36\1\232\33\36\1\0"+ - "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ - "\1\36\26\0\21\36\1\u04cc\13\36\1\0\1\231\3\36"+ - "\1\231\3\0\1\36\1\231\1\36\1\0\1\36\37\0"+ - "\1\u035e\101\0\1\u04cd\74\0\1\u04cd\77\0\1\u04ce\114\0"+ - "\1\u02b2\73\0\1\u045f\113\0\1\u04cf\51\0\5\110\1\u040e"+ - "\27\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\110\1\u042d\33\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\12\110\1\u02f8"+ - "\22\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\12\110\1\u04d0\22\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\20\110\1\u02f6"+ - "\14\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\11\110\1\u02cc\23\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\u04d1"+ - "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\13\110\1\u04d2\21\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\10\110\1\u04d3"+ + "\1\110\26\0\12\110\1\u04f9\22\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\13\110\1\u051b"+ + "\21\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\26\0\11\110\1\u051c\23\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\10\110\1\u051d"+ "\24\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\12\110\1\u04d4\22\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\25\110\1\u04d5"+ - "\7\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\110\1\u04d6\33\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\13\110\1\u04d7"+ + "\1\110\26\0\7\110\1\u051e\25\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\4\110\1\u051f"+ + "\30\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ + "\1\110\37\0\1\u0520\72\0\1\u0339\112\0\1\u04ea\77\0"+ + "\1\u0521\106\0\1\u0522\74\0\1\u0523\62\0\1\u0524\105\0"+ + "\1\u0525\73\0\14\110\1\u0526\20\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\13\110\1\u050d"+ "\21\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\11\110\1\u04d8\23\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\11\110\1\u04d9"+ - "\23\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\11\110\1\u04da\23\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\2\110\1\u04db"+ - "\32\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\4\110\1\u04dc\30\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\2\110\1\u04dd"+ - "\32\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\16\110\1\u04de\16\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\12\110\1\u04df"+ - "\22\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\13\110\1\377\21\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\6\110\1\u04e0"+ - "\26\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\11\110\1\u0203\23\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\21\110\1\u04e1"+ - "\13\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\22\110\1\u04e2\12\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\1\110\1\u0139"+ - "\33\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\21\110\1\u04e3\13\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\35\110\1\0"+ - "\1\u04e4\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\31\0\1\u04e5\2\0\1\u04e6\1\u04e7\5\0\1\u04e8\77\0"+ - "\1\u04e9\64\0\1\u04ea\111\0\1\u0265\114\0\1\u0265\54\0"+ - "\1\u04eb\110\0\1\u04ec\75\0\1\u04ed\103\0\1\u04ee\67\0"+ - "\6\110\1\u04ef\26\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\13\36\1\u04f0\21\36\1\0"+ - "\1\231\3\36\1\231\3\0\1\36\1\231\1\36\1\0"+ - "\1\36\27\0\1\u01ae\120\0\1\u04f1\65\0\1\u04f2\72\0"+ - "\14\110\1\u02f6\20\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\26\110\1\u0123\6\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\20\110\1\u04f3\14\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\4\110\1\u02e4\30\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\22\110\1\u04f4\12\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\6\110\1\u0406\26\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\1\u0119\34\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\15\110\1\357\17\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\24\110"+ - "\1\u04f5\10\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\21\110\1\u04f6\13\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\110"+ - "\1\u041c\33\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\24\110\1\u04f7\10\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\21\110"+ - "\1\u04f8\13\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\1\u04f9\34\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\3\110\1\u04fa"+ - "\31\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\110\1\u04fb\33\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\2\110\1\u04fc"+ - "\32\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\15\110\1\u04fd\17\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\7\110\1\u04fe"+ - "\25\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\13\110\1\u04ff\21\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\42\0\1\u0500\76\0"+ - "\1\u0501\15\0\1\u0502\50\0\1\u0503\121\0\1\u0504\64\0"+ - "\1\u0265\75\0\1\u0505\77\0\1\u0506\112\0\1\u0507\76\0"+ - "\1\u0508\67\0\35\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\14\0\1\u0509\11\0\15\36\1\u0272"+ - "\17\36\1\0\1\231\3\36\1\231\3\0\1\36\1\231"+ - "\1\36\1\0\1\36\41\0\1\u050a\65\0\5\110\1\u0123"+ - "\27\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\7\110\1\u050b\25\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\1\u050c\34\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\24\110\1\357\10\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\5\110\1\u050d\27\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\20\110\1\357\14\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\26\0\4\110\1\u021b\5\110"+ - "\1\u0215\22\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\14\110\1\u050e\20\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\2\110"+ - "\1\u050f\32\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\6\110\1\u0510\26\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\1\u0511"+ - "\34\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\16\110\1\u01f0\16\110\2\0\3\110\4\0"+ - "\1\110\1\0\1\110\1\0\1\110\26\0\15\110\1\u0319"+ - "\17\110\2\0\3\110\4\0\1\110\1\0\1\110\1\0"+ - "\1\110\26\0\1\u0512\101\0\1\u03cb\112\0\1\u0513\101\0"+ - "\1\u0514\76\0\1\u0515\100\0\1\u0516\66\0\1\u0517\115\0"+ - "\1\u0265\107\0\1\u0518\71\0\1\u0519\100\0\1\u035e\63\0"+ - "\6\110\1\u0476\26\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\12\110\1\u04f8\22\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\13\110\1\u051a\21\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\11\110\1\u051b\23\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\10\110\1\u051c\24\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\7\110\1\u051d\25\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\4\110\1\u051e\30\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\37\0\1\u051f\72\0\1\u0338\112\0"+ - "\1\u04e9\77\0\1\u0520\106\0\1\u0521\74\0\1\u0522\62\0"+ - "\1\u0523\105\0\1\u0524\73\0\14\110\1\u0525\20\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\13\110\1\u050c\21\110\2\0\3\110\4\0\1\110\1\0"+ - "\1\110\1\0\1\110\26\0\21\110\1\u0526\13\110\2\0"+ - "\3\110\4\0\1\110\1\0\1\110\1\0\1\110\26\0"+ - "\1\u0120\34\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\13\110\1\u0527\21\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\42\0\1\u03cb"+ - "\64\0\1\u03d0\107\0\1\u0528\75\0\1\u04ee\106\0\1\u0529"+ - "\101\0\1\u052a\65\0\6\110\1\u052b\26\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\3\110"+ - "\1\u052c\31\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\26\0\23\110\1\u0203\11\110\2\0\3\110"+ - "\4\0\1\110\1\0\1\110\1\0\1\110\34\0\1\u04c7"+ - "\112\0\1\u0265\64\0\1\u052d\74\0\3\110\1\u03aa\31\110"+ - "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\26\0\13\110\1\u052e\21\110\2\0\3\110\4\0\1\110"+ - "\1\0\1\110\1\0\1\110\27\0\1\u052f\77\0\14\110"+ - "\1\u0530\20\110\2\0\3\110\4\0\1\110\1\0\1\110"+ - "\1\0\1\110\37\0\1\u0531\67\0\13\110\1\u039e\21\110"+ + "\1\110\26\0\21\110\1\u0527\13\110\2\0\3\110\4\0"+ + "\1\110\1\0\1\110\1\0\1\110\26\0\1\u0120\34\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\13\110\1\u0528\21\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\42\0\1\u03cc\64\0\1\u03d1"+ + "\107\0\1\u0529\75\0\1\u04ef\106\0\1\u052a\101\0\1\u052b"+ + "\65\0\6\110\1\u052c\26\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\26\0\3\110\1\u052d\31\110"+ + "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ + "\26\0\23\110\1\u0204\11\110\2\0\3\110\4\0\1\110"+ + "\1\0\1\110\1\0\1\110\34\0\1\u04c8\112\0\1\u0266"+ + "\64\0\1\u052e\74\0\3\110\1\u03ab\31\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\26\0\13\110"+ + "\1\u052f\21\110\2\0\3\110\4\0\1\110\1\0\1\110"+ + "\1\0\1\110\27\0\1\u0530\77\0\14\110\1\u0531\20\110"+ "\2\0\3\110\4\0\1\110\1\0\1\110\1\0\1\110"+ - "\34\0\1\u0532\104\0\1\u0533\55\0"; + "\37\0\1\u0532\67\0\13\110\1\u039f\21\110\2\0\3\110"+ + "\4\0\1\110\1\0\1\110\1\0\1\110\34\0\1\u0533"+ + "\104\0\1\u0534\55\0"; private static int [] zzUnpackTrans() { - int [] result = new int[80405]; + int [] result = new int[80470]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -1965,7 +1968,7 @@ private static int zzUnpackTrans(String packed, int offset, int [] result) { "\2\1\1\11\54\1\2\0\1\1\1\11\23\0\1\1"+ "\1\0\1\1\1\11\1\0\10\11\160\1\1\0\1\11"+ "\1\1\11\0\1\1\1\0\1\11\7\0\3\11\1\0"+ - "\2\11\1\0\1\11\2\1\1\11\60\1\1\0\1\1"+ + "\2\11\1\0\1\11\2\1\1\11\61\1\1\0\1\1"+ "\1\0\1\1\21\0\1\1\17\0\1\1\1\0\2\11"+ "\204\1\1\11\1\1\2\0\1\1\7\0\1\1\1\11"+ "\1\0\1\1\1\0\1\11\1\0\2\11\1\0\46\1"+ @@ -1979,7 +1982,7 @@ private static int zzUnpackTrans(String packed, int offset, int [] result) { "\1\1\2\0\1\11"; private static int [] zzUnpackAttribute() { - int [] result = new int[1331]; + int [] result = new int[1332]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -2303,517 +2306,525 @@ else if (zzAtEOF) { { return OUTER_CONTENT; } // fall through - case 103: break; + case 104: break; case 2: { return TokenType.WHITE_SPACE; } // fall through - case 104: break; + case 105: break; case 3: { return T_HALF_ENDER; } // fall through - case 105: break; + case 106: break; case 4: { return T_AT; } // fall through - case 106: break; + case 107: break; case 5: { yybegin(YYINITIAL); return OUTER_CONTENT; } // fall through - case 107: break; + case 108: break; case 6: { return WHITE_SPACE; } // fall through - case 108: break; + case 109: break; case 7: { return T_LEFT_BRACE; } // fall through - case 109: break; + case 110: break; case 8: { return T_RIGHT_BRACE; } // fall through - case 110: break; + case 111: break; case 9: { return T_SLASH; } // fall through - case 111: break; + case 112: break; case 10: { return T_OP_ASSIGN; } // fall through - case 112: break; + case 113: break; case 11: { pushState(SINGLE_STRING); return T_STRING_START; } // fall through - case 113: break; + case 114: break; case 12: { pushState(DOUBLE_STRING); return T_STRING_START; } // fall through - case 114: break; + case 115: break; case 13: { return T_IDENTIFIER; } // fall through - case 115: break; + case 116: break; case 14: { return T_INTEGER_NUMBER; } // fall through - case 116: break; + case 117: break; case 15: { return T_OP_MOD; } // fall through - case 117: break; + case 118: break; case 16: { return T_COLON; } // fall through - case 118: break; + case 119: break; case 17: { return T_OP_MUL; } // fall through - case 119: break; + case 120: break; case 18: { pushState(MODIFIER_LIST); return T_PIPE; } // fall through - case 120: break; + case 121: break; case 19: { return T_OP_MINUS; } // fall through - case 121: break; + case 122: break; case 20: { return T_LEFT_BRACKET; } // fall through - case 122: break; + case 123: break; case 21: { return T_OP_PLUS; } // fall through - case 123: break; + case 124: break; case 22: { return T_OP_QUESTIONMARK; } // fall through - case 124: break; + case 125: break; case 23: { return T_LP; } // fall through - case 125: break; + case 126: break; case 24: { return T_COMMA; } // fall through - case 126: break; + case 127: break; case 25: { return T_SEMICOLON; } // fall through - case 127: break; + case 128: break; case 26: { return T_OP_GT; } // fall through - case 128: break; + case 129: break; case 27: { return T_OP_EXCLAMATION_MARK; } // fall through - case 129: break; + case 130: break; case 28: { return T_RP; } // fall through - case 130: break; + case 131: break; case 29: { return T_RIGHT_BRACKET; } // fall through - case 131: break; + case 132: break; case 30: { return T_OP_LT; } // fall through - case 132: break; + case 133: break; case 31: { yypushback(1); // cancel unexpected char popState(); // and try to parse it again in } // fall through - case 133: break; + case 134: break; case 32: { return T_DOT; } // fall through - case 134: break; + case 135: break; case 33: { popState(); return T_RP; } // fall through - case 135: break; + case 136: break; case 34: { yypushback(1); // cancel unexpected char popState(); // and try to parse it again in } // fall through - case 136: break; + case 137: break; case 35: { pushState(TAG_EXPRESSION_ATTRIBUTE_LIST); return TokenType.WHITE_SPACE; } // fall through - case 137: break; + case 138: break; case 36: { return T_DISAMBIGUATION; } // fall through - case 138: break; + case 139: break; case 37: { pushState(TAG_SHORTHAND); return T_SHORTHAND_SEPARATOR; } // fall through - case 139: break; + case 140: break; case 38: { yypushback(1); // cancel unexpected char popState(); // and try to parse it again in } // fall through - case 140: break; + case 141: break; case 39: { return T_TAG_METHOD_NAME; } // fall through - case 141: break; + case 142: break; case 40: { yybegin(ANTLERS_NODE); // cancel unexpected char popState(); // and try to parse it again in } // fall through - case 142: break; + case 143: break; case 41: { return T_DYNAMIC_BINDING; } // fall through - case 143: break; + case 144: break; case 42: { yypushback(1); // cancel unexpected char popState(); // and try to parse it again in } // fall through - case 144: break; + case 145: break; case 43: { return T_STAR; } // fall through - case 145: break; + case 146: break; case 44: { popState(); return T_STRING_END; } // fall through - case 146: break; + case 147: break; case 45: { pushState(ANTLERS_NODE); return T_LD; } // fall through - case 147: break; + case 148: break; case 46: { popState(); return T_RD; } // fall through - case 148: break; + case 149: break; case 47: { return T_OP_SELF_ASSIGN_DIV; } // fall through - case 149: break; + case 150: break; case 48: { return T_OP_EQ; } // fall through - case 150: break; + case 151: break; case 49: { return T_OP_ARROW; } // fall through - case 151: break; + case 152: break; case 50: { return T_AS; } // fall through - case 152: break; + case 153: break; case 51: { yypushback(yylength()); pushState(PROPERTY_ACCESS); } // fall through - case 153: break; + case 154: break; case 52: { yypushback(yylength()); pushState(TAG_EXPRESSION); } // fall through - case 154: break; + case 155: break; case 53: { return T_IF; } // fall through - case 155: break; + case 156: break; case 54: { return T_OP_OR; } // fall through - case 156: break; + case 157: break; case 55: { return T_OP_SELF_ASSIGN_MOD; } // fall through - case 157: break; + case 158: break; case 56: { return T_FLOAT_NUMBER; } // fall through - case 158: break; + case 159: break; case 57: { return T_OP_SELF_ASSIGN_MUL; } // fall through - case 159: break; + case 160: break; case 58: { return T_OP_POW; } // fall through - case 160: break; + case 161: break; case 59: { return T_OP_SELF_ASSIGN_SUB; } // fall through - case 161: break; + case 162: break; case 60: { return T_OP_SELF_ASSIGN_ADD; } // fall through - case 162: break; + case 163: break; case 61: { return T_OP_GATEKEEPER; } // fall through - case 163: break; + case 164: break; case 62: { return T_OP_NULL_COALESCENCE; } // fall through - case 164: break; + case 165: break; case 63: { return T_OP_AND; } // fall through - case 165: break; + case 166: break; case 64: { return T_OP_GTE; } // fall through - case 166: break; + case 167: break; case 65: { return T_OP_NEQ; } // fall through - case 167: break; + case 168: break; case 66: { return T_OP_LTE; } // fall through - case 168: break; + case 169: break; case 67: { return T_MODIFIER; } // fall through - case 169: break; + case 170: break; case 68: { return T_TAG; } // fall through - case 170: break; + case 171: break; case 69: { yybegin(YYINITIAL); return T_RD; } // fall through - case 171: break; + case 172: break; case 70: { yypushback(1); return T_STRING_CONTENT; } // fall through - case 172: break; + case 173: break; case 71: { yypushback(yylength() - 3); pushState(ANTLERS_COMMENT); return T_COMMENT_OPEN; } // fall through - case 173: break; + case 174: break; case 72: { pushState(PHP_ECHO); return T_PHP_ECHO_OPEN; } // fall through - case 174: break; + case 175: break; case 73: { pushState(PHP_RAW); return T_PHP_RAW_OPEN; } // fall through - case 175: break; + case 176: break; case 74: { popState(); return T_COMMENT_CLOSE; } // fall through - case 176: break; + case 177: break; case 75: { return T_END_IF; } // fall through - case 177: break; + case 178: break; case 76: { return T_OP_IDENT; } // fall through - case 178: break; + case 179: break; case 77: - { return T_OP_XOR; + // lookahead expression with fixed lookahead length + zzMarkedPos = Character.offsetByCodePoints + (zzBufferL/*, zzStartRead, zzEndRead - zzStartRead*/, zzMarkedPos, -1); + { return T_IDENTIFIER; } // fall through - case 179: break; + case 180: break; case 78: - { return T_OP_NOT_IDENT; + { return T_OP_XOR; } // fall through - case 180: break; + case 181: break; case 79: - { return T_OP_SPACESHIP; + { return T_OP_NOT_IDENT; } // fall through - case 181: break; + case 182: break; case 80: - { return T_TAG_CONDITION; + { return T_OP_SPACESHIP; } // fall through - case 182: break; + case 183: break; case 81: - { popState(); return T_PHP_ECHO_CLOSE; + { return T_TAG_CONDITION; } // fall through - case 183: break; + case 184: break; case 82: - { popState(); return T_PHP_RAW_CLOSE; + { popState(); return T_PHP_ECHO_CLOSE; } // fall through - case 184: break; + case 185: break; case 83: - { yypushback(3); return T_COMMENT_TEXT; + { popState(); return T_PHP_RAW_CLOSE; } // fall through - case 185: break; + case 186: break; case 84: - { return T_SKIP; + { yypushback(3); return T_COMMENT_TEXT; } // fall through - case 186: break; + case 187: break; case 85: - { return T_ELSE; + { return T_SKIP; } // fall through - case 187: break; + case 188: break; case 86: - { return T_TAKE; + { return T_ELSE; } // fall through - case 188: break; + case 189: break; case 87: - { return T_TRUE; + { return T_TAKE; } // fall through - case 189: break; + case 190: break; case 88: - { yypushback(3); return T_PHP_CONTENT; + { return T_TRUE; } // fall through - case 190: break; + case 191: break; case 89: - { return T_MERGE; + { yypushback(3); return T_PHP_CONTENT; } // fall through - case 191: break; + case 192: break; case 90: - { return T_PLUCK; + { return T_MERGE; } // fall through - case 192: break; + case 193: break; case 91: - { return T_WHERE; + { return T_PLUCK; } // fall through - case 193: break; + case 194: break; case 92: - { return T_FALSE; + { return T_WHERE; } // fall through - case 194: break; + case 195: break; case 93: - { return T_ELSE_IF; + { return T_FALSE; } // fall through - case 195: break; + case 196: break; case 94: - { return T_UNLESS; + { return T_ELSE_IF; } // fall through - case 196: break; + case 197: break; case 95: - { return T_END_UNLESS; + { return T_UNLESS; } // fall through - case 197: break; + case 198: break; case 96: - { yypushback(1); return T_SWITCH; + { return T_END_UNLESS; } // fall through - case 198: break; + case 199: break; case 97: - { return T_NOPARSE; + { yypushback(1); return T_SWITCH; } // fall through - case 199: break; + case 200: break; case 98: - { return T_GROUP_BY; + { return T_NOPARSE; } // fall through - case 200: break; + case 201: break; case 99: - { return T_ORDER_BY; + { return T_GROUP_BY; } // fall through - case 201: break; + case 202: break; case 100: - { return T_TAXONOMY; + { return T_ORDER_BY; } // fall through - case 202: break; + case 203: break; case 101: - { yypushback(yylength()); pushState(RECURSIVE_CHILDREN); + { return T_TAXONOMY; } // fall through - case 203: break; + case 204: break; case 102: + { yypushback(yylength()); pushState(RECURSIVE_CHILDREN); + } + // fall through + case 205: break; + case 103: { return T_RECURSIVE_CHILDREN; } // fall through - case 204: break; + case 206: break; default: zzScanError(ZZ_NO_MATCH); } diff --git a/src/main/gen/de/arrobait/antlers/parser/AntlersParser.java b/src/main/gen/de/arrobait/antlers/parser/AntlersParser.java index 2b9ebf4a..ecde0e35 100644 --- a/src/main/gen/de/arrobait/antlers/parser/AntlersParser.java +++ b/src/main/gen/de/arrobait/antlers/parser/AntlersParser.java @@ -1842,6 +1842,20 @@ public static boolean variable_assignment_node(PsiBuilder b, int l) { return r || p; } + /* ********************************************************** */ + // T_IDENTIFIER '=' string_literal + public static boolean variable_attribute_assignment(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "variable_attribute_assignment")) return false; + if (!nextTokenIs(b, T_IDENTIFIER)) return false; + boolean r, p; + Marker m = enter_section_(b, l, _NONE_, VARIABLE_ATTRIBUTE_ASSIGNMENT, null); + r = consumeTokens(b, 2, T_IDENTIFIER, T_OP_ASSIGN); + p = r; // pin = 2 + r = r && string_literal(b, l + 1); + exit_section_(b, l, m, r, p, null); + return r || p; + } + /* ********************************************************** */ // 'where' '(' [where_arrow_func] (expr) ')' public static boolean where(PsiBuilder b, int l) { @@ -2231,7 +2245,7 @@ private static boolean concat_expr_4_1(PsiBuilder b, int l) { // number_literal // | boolean_literal // | string_literal - // | variable + // | variable variable_attribute_assignment* public static boolean literal_expr(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "literal_expr")) return false; boolean r; @@ -2239,11 +2253,33 @@ public static boolean literal_expr(PsiBuilder b, int l) { r = number_literal(b, l + 1); if (!r) r = boolean_literal(b, l + 1); if (!r) r = string_literal(b, l + 1); - if (!r) r = variable(b, l + 1); + if (!r) r = literal_expr_3(b, l + 1); exit_section_(b, l, m, r, false, null); return r; } + // variable variable_attribute_assignment* + private static boolean literal_expr_3(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "literal_expr_3")) return false; + boolean r; + Marker m = enter_section_(b); + r = variable(b, l + 1); + r = r && literal_expr_3_1(b, l + 1); + exit_section_(b, m, null, r); + return r; + } + + // variable_attribute_assignment* + private static boolean literal_expr_3_1(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "literal_expr_3_1")) return false; + while (true) { + int c = current_position_(b); + if (!variable_attribute_assignment(b, l + 1)) break; + if (!empty_element_parsed_guard_(b, "literal_expr_3_1", c)) break; + } + return true; + } + // '(' (antlers_expression_or_statement | expr) ')' public static boolean sub_expression(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "sub_expression")) return false; diff --git a/src/main/gen/de/arrobait/antlers/psi/AntlersLiteralExpr.java b/src/main/gen/de/arrobait/antlers/psi/AntlersLiteralExpr.java index bb191692..a4269be1 100644 --- a/src/main/gen/de/arrobait/antlers/psi/AntlersLiteralExpr.java +++ b/src/main/gen/de/arrobait/antlers/psi/AntlersLiteralExpr.java @@ -19,4 +19,7 @@ public interface AntlersLiteralExpr extends AntlersExpr { @Nullable AntlersVariable getVariable(); + @NotNull + List getVariableAttributeAssignmentList(); + } diff --git a/src/main/gen/de/arrobait/antlers/psi/AntlersTypes.java b/src/main/gen/de/arrobait/antlers/psi/AntlersTypes.java index a0a504d4..40cce37d 100644 --- a/src/main/gen/de/arrobait/antlers/psi/AntlersTypes.java +++ b/src/main/gen/de/arrobait/antlers/psi/AntlersTypes.java @@ -91,6 +91,7 @@ public interface AntlersTypes { IElementType UNARY_NOT_EXPR = new AntlersElementType("UNARY_NOT_EXPR"); IElementType VARIABLE = new AntlersElementType("VARIABLE"); IElementType VARIABLE_ASSIGNMENT_NODE = new AntlersElementType("VARIABLE_ASSIGNMENT_NODE"); + IElementType VARIABLE_ATTRIBUTE_ASSIGNMENT = new AntlersElementType("VARIABLE_ATTRIBUTE_ASSIGNMENT"); IElementType WHERE = new AntlersElementType("WHERE"); IElementType WHERE_ARROW_FUNC = new AntlersElementType("WHERE_ARROW_FUNC"); IElementType XOR_EXPR = new AntlersElementType("XOR_EXPR"); @@ -433,6 +434,9 @@ else if (type == VARIABLE) { else if (type == VARIABLE_ASSIGNMENT_NODE) { return new AntlersVariableAssignmentNodeImpl(node); } + else if (type == VARIABLE_ATTRIBUTE_ASSIGNMENT) { + return new AntlersVariableAttributeAssignmentImpl(node); + } else if (type == WHERE) { return new AntlersWhereImpl(node); } diff --git a/src/main/gen/de/arrobait/antlers/psi/AntlersVariableAttributeAssignment.java b/src/main/gen/de/arrobait/antlers/psi/AntlersVariableAttributeAssignment.java new file mode 100644 index 00000000..ff79e70a --- /dev/null +++ b/src/main/gen/de/arrobait/antlers/psi/AntlersVariableAttributeAssignment.java @@ -0,0 +1,13 @@ +// This is a generated file. Not intended for manual editing. +package de.arrobait.antlers.psi; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.psi.PsiElement; + +public interface AntlersVariableAttributeAssignment extends PsiElement { + + @Nullable + AntlersStringLiteral getStringLiteral(); + +} diff --git a/src/main/gen/de/arrobait/antlers/psi/AntlersVisitor.java b/src/main/gen/de/arrobait/antlers/psi/AntlersVisitor.java index a25f5eda..82215012 100644 --- a/src/main/gen/de/arrobait/antlers/psi/AntlersVisitor.java +++ b/src/main/gen/de/arrobait/antlers/psi/AntlersVisitor.java @@ -339,6 +339,10 @@ public void visitVariableAssignmentNode(@NotNull AntlersVariableAssignmentNode o visitPsiElement(o); } + public void visitVariableAttributeAssignment(@NotNull AntlersVariableAttributeAssignment o) { + visitPsiElement(o); + } + public void visitWhere(@NotNull AntlersWhere o) { visitPsiElement(o); } diff --git a/src/main/gen/de/arrobait/antlers/psi/impl/AntlersLiteralExprImpl.java b/src/main/gen/de/arrobait/antlers/psi/impl/AntlersLiteralExprImpl.java index e9a431a9..426ced8e 100644 --- a/src/main/gen/de/arrobait/antlers/psi/impl/AntlersLiteralExprImpl.java +++ b/src/main/gen/de/arrobait/antlers/psi/impl/AntlersLiteralExprImpl.java @@ -51,4 +51,10 @@ public AntlersVariable getVariable() { return findChildByClass(AntlersVariable.class); } + @Override + @NotNull + public List getVariableAttributeAssignmentList() { + return PsiTreeUtil.getChildrenOfTypeAsList(this, AntlersVariableAttributeAssignment.class); + } + } diff --git a/src/main/gen/de/arrobait/antlers/psi/impl/AntlersVariableAttributeAssignmentImpl.java b/src/main/gen/de/arrobait/antlers/psi/impl/AntlersVariableAttributeAssignmentImpl.java new file mode 100644 index 00000000..ac6769a8 --- /dev/null +++ b/src/main/gen/de/arrobait/antlers/psi/impl/AntlersVariableAttributeAssignmentImpl.java @@ -0,0 +1,36 @@ +// This is a generated file. Not intended for manual editing. +package de.arrobait.antlers.psi.impl; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.util.PsiTreeUtil; +import static de.arrobait.antlers.psi.AntlersTypes.*; +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import de.arrobait.antlers.psi.*; + +public class AntlersVariableAttributeAssignmentImpl extends ASTWrapperPsiElement implements AntlersVariableAttributeAssignment { + + public AntlersVariableAttributeAssignmentImpl(@NotNull ASTNode node) { + super(node); + } + + public void accept(@NotNull AntlersVisitor visitor) { + visitor.visitVariableAttributeAssignment(this); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof AntlersVisitor) accept((AntlersVisitor)visitor); + else super.accept(visitor); + } + + @Override + @Nullable + public AntlersStringLiteral getStringLiteral() { + return findChildByClass(AntlersStringLiteral.class); + } + +} diff --git a/src/main/java/de/arrobait/antlers/grammar/Antlers.bnf b/src/main/java/de/arrobait/antlers/grammar/Antlers.bnf index 2fddf2ad..fd9d8a07 100644 --- a/src/main/java/de/arrobait/antlers/grammar/Antlers.bnf +++ b/src/main/java/de/arrobait/antlers/grammar/Antlers.bnf @@ -291,6 +291,8 @@ private assignable_items ::= boolean_literal | interpolated_statement [advanced_operators] | sub_expression +variable_attribute_assignment ::= T_IDENTIFIER '=' string_literal { pin=2 } + // Advanced operators private advanced_operators ::= single_advanced_operator* @@ -339,7 +341,7 @@ sub_expression ::= '(' (antlers_expression_or_statement | expr) ')' { pin=1 } literal_expr ::= number_literal | boolean_literal | string_literal - | variable + | variable variable_attribute_assignment* // Literals number_literal ::= T_INTEGER_NUMBER | T_FLOAT_NUMBER diff --git a/src/main/java/de/arrobait/antlers/grammar/AntlersLexer.flex b/src/main/java/de/arrobait/antlers/grammar/AntlersLexer.flex index 1aedf217..490fcb17 100644 --- a/src/main/java/de/arrobait/antlers/grammar/AntlersLexer.flex +++ b/src/main/java/de/arrobait/antlers/grammar/AntlersLexer.flex @@ -159,6 +159,13 @@ FLOAT_NUMBER=[0-9]*\.[0-9]+([eE][-+]?[0-9]+)?|[0-9]+[eE][-+]?[0-9]+ // We match all mutations of a tag name including "%" and ":" and lex them in the state {TAG} { yypushback(yylength()); pushState(TAG_EXPRESSION); } + // Antlers allows attributes to arrays, consider `{{ page_builder scope="foo" }}`. + // To make it work, we define a rule in grammar. But here, "scope" is also a Tag and Tags + // are not allowed in that context. To make it work, we match + // a Tag followed by an equal sign (the "/" is a positive lookahead in JFlex) and lex it as + // IDENTIFIER. + {TAG} / "=" { return T_IDENTIFIER; } + {RECURSIVE_CHILDREN} { yypushback(yylength()); pushState(RECURSIVE_CHILDREN); } {SINGLE_QUOTE} { pushState(SINGLE_STRING); return T_STRING_START; } diff --git a/src/test/java/de/arrobait/antlers/lexer/VariableLexerTest.java b/src/test/java/de/arrobait/antlers/lexer/VariableLexerTest.java index 9fcc5d8c..1c6d4642 100644 --- a/src/test/java/de/arrobait/antlers/lexer/VariableLexerTest.java +++ b/src/test/java/de/arrobait/antlers/lexer/VariableLexerTest.java @@ -262,4 +262,37 @@ public void it_lex_assign_array_to_variable() { T_RD, "}}" ); } + + @Test + public void it_lex_variable_with_attributes() { + givenInput("{{ page_builder foo=\"bar\" }}"); + thenTokensAre( + T_LD, "{{", + WHITE_SPACE, " ", + T_IDENTIFIER, "page_builder", + WHITE_SPACE, " ", + T_IDENTIFIER, "foo", + T_OP_ASSIGN, "=", + T_STRING_START, "\"", + T_STRING_CONTENT, "bar", + T_STRING_END, "\"", + WHITE_SPACE, " ", + T_RD, "}}" + ); + + givenInput("{{ page_builder scope=\"bar\" }}"); + thenTokensAre( + T_LD, "{{", + WHITE_SPACE, " ", + T_IDENTIFIER, "page_builder", + WHITE_SPACE, " ", + T_IDENTIFIER, "scope", + T_OP_ASSIGN, "=", + T_STRING_START, "\"", + T_STRING_CONTENT, "bar", + T_STRING_END, "\"", + WHITE_SPACE, " ", + T_RD, "}}" + ); + } } diff --git a/src/test/testData/parsing/ParseVariables.antlers.html b/src/test/testData/parsing/ParseVariables.antlers.html index 5823123b..3611165c 100644 --- a/src/test/testData/parsing/ParseVariables.antlers.html +++ b/src/test/testData/parsing/ParseVariables.antlers.html @@ -51,3 +51,15 @@

I can count to {{ total }}!

{{ scope_name[{'alt_{locale}'}] }} + +
+ {{ page_builder scope="foo" }} + {{ partial src="page_builder/{type}" }} + {{ /page_builder }} +
+ +
+ {{ page_builder foo="bar" }} + {{ partial src="page_builder/{type}" }} + {{ /page_builder }} +
diff --git a/src/test/testData/parsing/ParseVariables.txt b/src/test/testData/parsing/ParseVariables.txt index 552b1307..c1af984b 100644 --- a/src/test/testData/parsing/ParseVariables.txt +++ b/src/test/testData/parsing/ParseVariables.txt @@ -1,4 +1,4 @@ -Antlers File(0,1098) +Antlers File(0,1406) AntlersAntlersNodeImpl(ANTLERS_NODE)(0,9) PsiElement({{)('{{')(0,2) PsiWhiteSpace(' ')(2,3) @@ -617,3 +617,96 @@ Antlers File(0,1098) PsiElement(])(']')(1094,1095) PsiWhiteSpace(' ')(1095,1096) PsiElement(}})('}}')(1096,1098) + PsiElement(OUTER_CONTENT)('\n\n
\n ')(1098,1143) + AntlersAntlersNodeImpl(ANTLERS_NODE)(1143,1173) + PsiElement({{)('{{')(1143,1145) + PsiWhiteSpace(' ')(1145,1146) + AntlersLiteralExprImpl(LITERAL_EXPR)(1146,1170) + AntlersVariableImpl(VARIABLE)(1146,1158) + PsiElement(T_IDENTIFIER)('page_builder')(1146,1158) + PsiWhiteSpace(' ')(1158,1159) + AntlersVariableAttributeAssignmentImpl(VARIABLE_ATTRIBUTE_ASSIGNMENT)(1159,1170) + PsiElement(T_IDENTIFIER)('scope')(1159,1164) + PsiElement(=)('=')(1164,1165) + AntlersStringLiteralImpl(STRING_LITERAL)(1165,1170) + PsiElement(T_STRING_START)('"')(1165,1166) + PsiElement(T_STRING_CONTENT)('foo')(1166,1169) + PsiElement(T_STRING_END)('"')(1169,1170) + PsiWhiteSpace(' ')(1170,1171) + PsiElement(}})('}}')(1171,1173) + PsiWhiteSpace('\n ')(1173,1182) + AntlersTagNodeImpl(TAG_NODE)(1182,1406) + AntlersTagNodeOpenImpl(TAG_NODE_OPEN)(1182,1221) + PsiElement({{)('{{')(1182,1184) + PsiWhiteSpace(' ')(1184,1185) + AntlersTagImpl(TAG)(1185,1192) + AntlersTagNameImpl(TAG_NAME)(1185,1192) + PsiElement(T_TAG)('partial')(1185,1192) + PsiWhiteSpace(' ')(1192,1193) + AntlersTagAttributeAssignmentImpl(TAG_ATTRIBUTE_ASSIGNMENT)(1193,1218) + AntlersTagAttributeKeyImpl(TAG_ATTRIBUTE_KEY)(1193,1196) + PsiElement(T_IDENTIFIER)('src')(1193,1196) + PsiElement(=)('=')(1196,1197) + AntlersTagAttributeValueImpl(TAG_ATTRIBUTE_VALUE)(1197,1218) + AntlersStringLiteralImpl(STRING_LITERAL)(1197,1218) + PsiElement(T_STRING_START)('"')(1197,1198) + PsiElement(T_STRING_CONTENT)('page_builder/{type}')(1198,1217) + PsiElement(T_STRING_END)('"')(1217,1218) + PsiWhiteSpace(' ')(1218,1219) + PsiElement(}})('}}')(1219,1221) + PsiWhiteSpace('\n ')(1221,1226) + AntlersAntlersCloseNodeImpl(ANTLERS_CLOSE_NODE)(1226,1245) + PsiElement({{)('{{')(1226,1228) + PsiWhiteSpace(' ')(1228,1229) + PsiElement(/)('/')(1229,1230) + AntlersVariableImpl(VARIABLE)(1230,1242) + PsiElement(T_IDENTIFIER)('page_builder')(1230,1242) + PsiWhiteSpace(' ')(1242,1243) + PsiElement(}})('}}')(1243,1245) + PsiElement(OUTER_CONTENT)('\n
\n\n
\n ')(1245,1298) + AntlersAntlersNodeImpl(ANTLERS_NODE)(1298,1326) + PsiElement({{)('{{')(1298,1300) + PsiWhiteSpace(' ')(1300,1301) + AntlersLiteralExprImpl(LITERAL_EXPR)(1301,1323) + AntlersVariableImpl(VARIABLE)(1301,1313) + PsiElement(T_IDENTIFIER)('page_builder')(1301,1313) + PsiWhiteSpace(' ')(1313,1314) + AntlersVariableAttributeAssignmentImpl(VARIABLE_ATTRIBUTE_ASSIGNMENT)(1314,1323) + PsiElement(T_IDENTIFIER)('foo')(1314,1317) + PsiElement(=)('=')(1317,1318) + AntlersStringLiteralImpl(STRING_LITERAL)(1318,1323) + PsiElement(T_STRING_START)('"')(1318,1319) + PsiElement(T_STRING_CONTENT)('bar')(1319,1322) + PsiElement(T_STRING_END)('"')(1322,1323) + PsiWhiteSpace(' ')(1323,1324) + PsiElement(}})('}}')(1324,1326) + PsiWhiteSpace('\n ')(1326,1335) + AntlersTagNodeImpl(TAG_NODE)(1335,1406) + AntlersTagNodeOpenImpl(TAG_NODE_OPEN)(1335,1374) + PsiElement({{)('{{')(1335,1337) + PsiWhiteSpace(' ')(1337,1338) + AntlersTagImpl(TAG)(1338,1345) + AntlersTagNameImpl(TAG_NAME)(1338,1345) + PsiElement(T_TAG)('partial')(1338,1345) + PsiWhiteSpace(' ')(1345,1346) + AntlersTagAttributeAssignmentImpl(TAG_ATTRIBUTE_ASSIGNMENT)(1346,1371) + AntlersTagAttributeKeyImpl(TAG_ATTRIBUTE_KEY)(1346,1349) + PsiElement(T_IDENTIFIER)('src')(1346,1349) + PsiElement(=)('=')(1349,1350) + AntlersTagAttributeValueImpl(TAG_ATTRIBUTE_VALUE)(1350,1371) + AntlersStringLiteralImpl(STRING_LITERAL)(1350,1371) + PsiElement(T_STRING_START)('"')(1350,1351) + PsiElement(T_STRING_CONTENT)('page_builder/{type}')(1351,1370) + PsiElement(T_STRING_END)('"')(1370,1371) + PsiWhiteSpace(' ')(1371,1372) + PsiElement(}})('}}')(1372,1374) + PsiWhiteSpace('\n ')(1374,1379) + AntlersAntlersCloseNodeImpl(ANTLERS_CLOSE_NODE)(1379,1398) + PsiElement({{)('{{')(1379,1381) + PsiWhiteSpace(' ')(1381,1382) + PsiElement(/)('/')(1382,1383) + AntlersVariableImpl(VARIABLE)(1383,1395) + PsiElement(T_IDENTIFIER)('page_builder')(1383,1395) + PsiWhiteSpace(' ')(1395,1396) + PsiElement(}})('}}')(1396,1398) + PsiElement(OUTER_CONTENT)('\n
')(1398,1406) From 4e6cca4ce9cbd796f9c9a36a7cd6e4b10efb1d03 Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Wed, 8 Jun 2022 11:48:34 +0200 Subject: [PATCH 15/28] Update Changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e759bab..bc428a05 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ - Autocomplete and remove closing single and double quote - Highlight all sort of brackets, parenthesis and braces as well Antlers' node delimiters - Add autocompletion for Antlers delimiters. Type `{{` and the closing `}}` will be added automatically. +- Support for scopes in the grammar #2 ### Changed - Add support for older IDE versions down to 2020.3 From b357db1b3a91cff83cd8768c56b71a9271ed7d11 Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Fri, 10 Jun 2022 21:13:57 +0200 Subject: [PATCH 16/28] Add autocompletion for Antlers core modifiers --- CHANGELOG.md | 1 + .../antlers/CoreModifierProvider.java | 174 ++++++++++++++++++ .../AntlersModifierCompletionContributor.java | 25 +++ src/main/resources/META-INF/plugin.xml | 3 + .../AntlersModifierCompletionTest.java | 101 ++++++++++ 5 files changed, 304 insertions(+) create mode 100644 src/main/java/de/arrobait/antlers/CoreModifierProvider.java create mode 100644 src/main/java/de/arrobait/antlers/completion/AntlersModifierCompletionContributor.java create mode 100644 src/test/java/de/arrobait/antlers/completion/AntlersModifierCompletionTest.java diff --git a/CHANGELOG.md b/CHANGELOG.md index bc428a05..0287cfe6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ - Highlight all sort of brackets, parenthesis and braces as well Antlers' node delimiters - Add autocompletion for Antlers delimiters. Type `{{` and the closing `}}` will be added automatically. - Support for scopes in the grammar #2 +- Autocomplete Antlers core modifiers ### Changed - Add support for older IDE versions down to 2020.3 diff --git a/src/main/java/de/arrobait/antlers/CoreModifierProvider.java b/src/main/java/de/arrobait/antlers/CoreModifierProvider.java new file mode 100644 index 00000000..5ac1d370 --- /dev/null +++ b/src/main/java/de/arrobait/antlers/CoreModifierProvider.java @@ -0,0 +1,174 @@ +package de.arrobait.antlers; + +import com.intellij.codeInsight.lookup.LookupElementBuilder; + +import java.util.ArrayList; +import java.util.List; + +public class CoreModifierProvider { + final static List modifiers = new ArrayList<>(); + + static public List getModifiers() { + modifiers.add(LookupElementBuilder.create("add")); + modifiers.add(LookupElementBuilder.create("add_slashes")); + modifiers.add(LookupElementBuilder.create("ampersand_list")); + modifiers.add(LookupElementBuilder.create("as")); + modifiers.add(LookupElementBuilder.create("ascii")); + modifiers.add(LookupElementBuilder.create("at")); + modifiers.add(LookupElementBuilder.create("background_position")); + modifiers.add(LookupElementBuilder.create("backspace")); + modifiers.add(LookupElementBuilder.create("camelize")); + modifiers.add(LookupElementBuilder.create("cdata")); + modifiers.add(LookupElementBuilder.create("ceil")); + modifiers.add(LookupElementBuilder.create("chunk")); + modifiers.add(LookupElementBuilder.create("collapse")); + modifiers.add(LookupElementBuilder.create("collapse_whitespace")); + modifiers.add(LookupElementBuilder.create("compact")); + modifiers.add(LookupElementBuilder.create("console_log")); + modifiers.add(LookupElementBuilder.create("contains")); + modifiers.add(LookupElementBuilder.create("contains_all")); + modifiers.add(LookupElementBuilder.create("contains_any")); + modifiers.add(LookupElementBuilder.create("count")); + modifiers.add(LookupElementBuilder.create("count_substring")); + modifiers.add(LookupElementBuilder.create("dashify")); + modifiers.add(LookupElementBuilder.create("days_ago")); + modifiers.add(LookupElementBuilder.create("decode")); + modifiers.add(LookupElementBuilder.create("deslugify")); + modifiers.add(LookupElementBuilder.create("divide")); + modifiers.add(LookupElementBuilder.create("dl")); + modifiers.add(LookupElementBuilder.create("dump")); + modifiers.add(LookupElementBuilder.create("embed_url")); + modifiers.add(LookupElementBuilder.create("ends_with")); + modifiers.add(LookupElementBuilder.create("ensure_left")); + modifiers.add(LookupElementBuilder.create("ensure_right")); + modifiers.add(LookupElementBuilder.create("entities")); + modifiers.add(LookupElementBuilder.create("excerpt")); + modifiers.add(LookupElementBuilder.create("explode")); + modifiers.add(LookupElementBuilder.create("favicon")); + modifiers.add(LookupElementBuilder.create("first")); + modifiers.add(LookupElementBuilder.create("flatten")); + modifiers.add(LookupElementBuilder.create("flip")); + modifiers.add(LookupElementBuilder.create("floor")); + modifiers.add(LookupElementBuilder.create("format")); + modifiers.add(LookupElementBuilder.create("format_localized")); + modifiers.add(LookupElementBuilder.create("format_number")); + modifiers.add(LookupElementBuilder.create("full_urls")); + modifiers.add(LookupElementBuilder.create("get")); + modifiers.add(LookupElementBuilder.create("gravatar")); + modifiers.add(LookupElementBuilder.create("group_by")); + modifiers.add(LookupElementBuilder.create("has_lower_case")); + modifiers.add(LookupElementBuilder.create("has_upper_case")); + modifiers.add(LookupElementBuilder.create("hours_ago")); + modifiers.add(LookupElementBuilder.create("image")); + modifiers.add(LookupElementBuilder.create("in_array")); + modifiers.add(LookupElementBuilder.create("insert")); + modifiers.add(LookupElementBuilder.create("is_after")); + modifiers.add(LookupElementBuilder.create("is_alphanumeric")); + modifiers.add(LookupElementBuilder.create("is_before")); + modifiers.add(LookupElementBuilder.create("is_between")); + modifiers.add(LookupElementBuilder.create("is_blank")); + modifiers.add(LookupElementBuilder.create("is_email")); + modifiers.add(LookupElementBuilder.create("is_embeddable")); + modifiers.add(LookupElementBuilder.create("is_empty")); + modifiers.add(LookupElementBuilder.create("is_future")); + modifiers.add(LookupElementBuilder.create("is_json")); + modifiers.add(LookupElementBuilder.create("is_leap_year")); + modifiers.add(LookupElementBuilder.create("is_lowercase")); + modifiers.add(LookupElementBuilder.create("is_numberwang")); + modifiers.add(LookupElementBuilder.create("is_numeric")); + modifiers.add(LookupElementBuilder.create("is_past")); + modifiers.add(LookupElementBuilder.create("is_today")); + modifiers.add(LookupElementBuilder.create("is_tomorrow")); + modifiers.add(LookupElementBuilder.create("is_uppercase")); + modifiers.add(LookupElementBuilder.create("is_url")); + modifiers.add(LookupElementBuilder.create("is_weekday")); + modifiers.add(LookupElementBuilder.create("is_weekend")); + modifiers.add(LookupElementBuilder.create("is_yesterday")); + modifiers.add(LookupElementBuilder.create("iso_format")); + modifiers.add(LookupElementBuilder.create("join")); + modifiers.add(LookupElementBuilder.create("last")); + modifiers.add(LookupElementBuilder.create("lcfirst")); + modifiers.add(LookupElementBuilder.create("length")); + modifiers.add(LookupElementBuilder.create("limit")); + modifiers.add(LookupElementBuilder.create("link")); + modifiers.add(LookupElementBuilder.create("list")); + modifiers.add(LookupElementBuilder.create("lower")); + modifiers.add(LookupElementBuilder.create("macro")); + modifiers.add(LookupElementBuilder.create("mailto")); + modifiers.add(LookupElementBuilder.create("markdown")); + modifiers.add(LookupElementBuilder.create("md5")); + modifiers.add(LookupElementBuilder.create("merge")); + modifiers.add(LookupElementBuilder.create("minutes_ago")); + modifiers.add(LookupElementBuilder.create("mod")); + modifiers.add(LookupElementBuilder.create("modify_date")); + modifiers.add(LookupElementBuilder.create("months_ago")); + modifiers.add(LookupElementBuilder.create("multiply")); + modifiers.add(LookupElementBuilder.create("nl2br")); + modifiers.add(LookupElementBuilder.create("obfuscate")); + modifiers.add(LookupElementBuilder.create("obfuscate_email")); + modifiers.add(LookupElementBuilder.create("offset")); + modifiers.add(LookupElementBuilder.create("ol")); + modifiers.add(LookupElementBuilder.create("option_list")); + modifiers.add(LookupElementBuilder.create("output")); + modifiers.add(LookupElementBuilder.create("pad")); + modifiers.add(LookupElementBuilder.create("partial")); + modifiers.add(LookupElementBuilder.create("piped")); + modifiers.add(LookupElementBuilder.create("plural")); + modifiers.add(LookupElementBuilder.create("raw")); + modifiers.add(LookupElementBuilder.create("rawurlencode")); + modifiers.add(LookupElementBuilder.create("ray")); + modifiers.add(LookupElementBuilder.create("read_time")); + modifiers.add(LookupElementBuilder.create("regex_replace")); + modifiers.add(LookupElementBuilder.create("relative")); + modifiers.add(LookupElementBuilder.create("remove_left")); + modifiers.add(LookupElementBuilder.create("remove_right")); + modifiers.add(LookupElementBuilder.create("repeat")); + modifiers.add(LookupElementBuilder.create("replace")); + modifiers.add(LookupElementBuilder.create("reverse")); + modifiers.add(LookupElementBuilder.create("round")); + modifiers.add(LookupElementBuilder.create("safe_truncate")); + modifiers.add(LookupElementBuilder.create("sanitize")); + modifiers.add(LookupElementBuilder.create("seconds_ago")); + modifiers.add(LookupElementBuilder.create("segment")); + modifiers.add(LookupElementBuilder.create("sentence_list")); + modifiers.add(LookupElementBuilder.create("shuffle")); + modifiers.add(LookupElementBuilder.create("singular")); + modifiers.add(LookupElementBuilder.create("slugify")); + modifiers.add(LookupElementBuilder.create("smartypants")); + modifiers.add(LookupElementBuilder.create("sort")); + modifiers.add(LookupElementBuilder.create("spaceless")); + modifiers.add(LookupElementBuilder.create("starts_with")); + modifiers.add(LookupElementBuilder.create("strip_tags")); + modifiers.add(LookupElementBuilder.create("substr")); + modifiers.add(LookupElementBuilder.create("subtract")); + modifiers.add(LookupElementBuilder.create("sum")); + modifiers.add(LookupElementBuilder.create("surround")); + modifiers.add(LookupElementBuilder.create("swap_case")); + modifiers.add(LookupElementBuilder.create("table")); + modifiers.add(LookupElementBuilder.create("tidy")); + modifiers.add(LookupElementBuilder.create("timezone")); + modifiers.add(LookupElementBuilder.create("title")); + modifiers.add(LookupElementBuilder.create("to_json")); + modifiers.add(LookupElementBuilder.create("to_spaces")); + modifiers.add(LookupElementBuilder.create("to_tabs")); + modifiers.add(LookupElementBuilder.create("trans")); + modifiers.add(LookupElementBuilder.create("trim")); + modifiers.add(LookupElementBuilder.create("truncate")); + modifiers.add(LookupElementBuilder.create("ucfirst")); + modifiers.add(LookupElementBuilder.create("ul")); + modifiers.add(LookupElementBuilder.create("underscored")); + modifiers.add(LookupElementBuilder.create("unique")); + modifiers.add(LookupElementBuilder.create("upper")); + modifiers.add(LookupElementBuilder.create("url")); + modifiers.add(LookupElementBuilder.create("urldecode")); + modifiers.add(LookupElementBuilder.create("urlencode")); + modifiers.add(LookupElementBuilder.create("weeks_ago")); + modifiers.add(LookupElementBuilder.create("where")); + modifiers.add(LookupElementBuilder.create("widont")); + modifiers.add(LookupElementBuilder.create("word_count")); + modifiers.add(LookupElementBuilder.create("wrap")); + modifiers.add(LookupElementBuilder.create("years_ago")); + + return modifiers; + } +} diff --git a/src/main/java/de/arrobait/antlers/completion/AntlersModifierCompletionContributor.java b/src/main/java/de/arrobait/antlers/completion/AntlersModifierCompletionContributor.java new file mode 100644 index 00000000..fbbde781 --- /dev/null +++ b/src/main/java/de/arrobait/antlers/completion/AntlersModifierCompletionContributor.java @@ -0,0 +1,25 @@ +package de.arrobait.antlers.completion; + +import com.intellij.codeInsight.completion.*; +import com.intellij.codeInsight.lookup.LookupElementBuilder; +import com.intellij.patterns.PlatformPatterns; +import com.intellij.util.ProcessingContext; +import de.arrobait.antlers.CoreModifierProvider; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public class AntlersModifierCompletionContributor extends CompletionContributor { + public AntlersModifierCompletionContributor() { + final List modifiers = CoreModifierProvider.getModifiers(); + + extend(CompletionType.BASIC, PlatformPatterns.psiElement().afterLeaf("|"), + new CompletionProvider<>() { + @Override + public void addCompletions(@NotNull CompletionParameters parameters, @NotNull ProcessingContext context, @NotNull CompletionResultSet resultSet) { + resultSet.addAllElements(modifiers); + } + } + ); + } +} diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index b4f4776d..3f4e3df7 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -58,6 +58,9 @@ implementation="de.arrobait.antlers.editor.actions.backspace.AntlersDoubleQuotedStringBackspaceHandler"/> + diff --git a/src/test/java/de/arrobait/antlers/completion/AntlersModifierCompletionTest.java b/src/test/java/de/arrobait/antlers/completion/AntlersModifierCompletionTest.java new file mode 100644 index 00000000..e0e19975 --- /dev/null +++ b/src/test/java/de/arrobait/antlers/completion/AntlersModifierCompletionTest.java @@ -0,0 +1,101 @@ +package de.arrobait.antlers.completion; + +import com.intellij.codeInsight.completion.CompletionType; +import com.intellij.testFramework.fixtures.BasePlatformTestCase; +import de.arrobait.antlers.file.AntlersFileType; + +public class AntlersModifierCompletionTest extends BasePlatformTestCase { + public void doBasicTest(String text, String... expected) { + myFixture.configureByText(AntlersFileType.INSTANCE, text); + myFixture.complete(CompletionType.BASIC); + assertContainsElements(myFixture.getLookupElementStrings(), expected); + } + + public void testSimple() { + doBasicTest("{{ foo | ", "add", "add_slashes", "explode", "is_email", "modify_date"); + } + + public void testCompleteModifiersWithA() { + doBasicTest("{{ foo | a", "add", "add_slashes", "ampersand_list", "as", "ascii", "at"); + } + + public void testCompleteModifiersWithB() { + doBasicTest("{{ foo | b", "background_position", "backspace"); + } + + public void testCompleteModifiersWithC() { + doBasicTest("{{ foo | c", "camelize", "cdata", "ceil", "chunk", "collapse", "collapse_whitespace", "compact", "console_log", "contains", "contains_all", "contains_any", "count", "count_substring"); + } + + public void testCompleteModifiersWithD() { + doBasicTest("{{ foo | d", "dashify", "days_ago", "decode", "deslugify", "divide", "dl", "dump"); + } + + public void testCompleteModifiersWithE() { + doBasicTest("{{ foo | e", "embed_url", "ends_with", "ensure_left", "ensure_right", "entities", "excerpt", "explode"); + } + + public void testCompleteModifiersWithF() { + doBasicTest("{{ foo | f", "favicon", "first", "flatten", "flip", "floor", "format", "format_localized", "format_number", "full_urls"); + } + + public void testCompleteModifiersWithG() { + doBasicTest("{{ foo | g", "get", "gravatar", "group_by"); + } + + public void testCompleteModifiersWithH() { + doBasicTest("{{ foo | h", "has_lower_case", "has_upper_case", "hours_ago"); + } + + public void testCompleteModifiersWithI() { + doBasicTest("{{ foo | i", "image", "in_array", "insert", "is_after", "is_alphanumeric", "is_before", "is_between", "is_blank", "is_email", "is_embeddable", "is_empty", "is_future", "is_json", "is_leap_year", "is_lowercase", "is_numberwang", "is_numeric", "is_past", "is_today", "is_tomorrow", "is_uppercase", "is_url", "is_weekday", "is_weekend", "is_yesterday", "iso_format"); + } + + public void testCompleteModifiersWithJ() { + doBasicTest("{{ foo | j", "join"); + } + + public void testCompleteModifiersWithL() { + doBasicTest("{{ foo | l", "last", "lcfirst", "length", "limit", "link", "list", "lower"); + } + + public void testCompleteModifiersWithM() { + doBasicTest("{{ foo | m", "macro", "mailto", "markdown", "md5", "merge", "minutes_ago", "mod", "modify_date", "months_ago", "multiply"); + } + + public void testCompleteModifiersWithN() { + doBasicTest("{{ foo | n", "nl2br"); + } + + public void testCompleteModifiersWithO() { + doBasicTest("{{ foo | o", "obfuscate", "obfuscate_email", "offset", "ol", "option_list", "output"); + } + + public void testCompleteModifiersWithP() { + doBasicTest("{{ foo | p", "pad", "partial", "piped", "plural"); + } + + public void testCompleteModifiersWithR() { + doBasicTest("{{ foo | r", "raw", "rawurlencode", "ray", "read_time", "regex_replace", "relative", "remove_left", "remove_right", "repeat", "replace", "reverse", "round"); + } + + public void testCompleteModifiersWithS() { + doBasicTest("{{ foo | s", "safe_truncate", "sanitize", "seconds_ago", "segment", "sentence_list", "shuffle", "singular", "slugify", "smartypants", "sort", "spaceless", "starts_with", "strip_tags", "substr", "subtract", "sum", "surround", "swap_case"); + } + + public void testCompleteModifiersWithT() { + doBasicTest("{{ foo | t", "table", "tidy", "timezone", "title", "to_json", "to_spaces", "to_tabs", "trans", "trim", "truncate"); + } + + public void testCompleteModifiersWithU() { + doBasicTest("{{ foo | u", "ucfirst", "ul", "underscored", "unique", "upper", "url", "urldecode", "urlencode"); + } + + public void testCompleteModifiersWithW() { + doBasicTest("{{ foo | w", "weeks_ago", "where", "widont", "word_count", "wrap"); + } + + public void testCompleteModifiersWithY() { + doBasicTest("{{ foo | y", "years_ago"); + } +} From 622b2678e64c489ab11ce17dcc3e1157bb0d07bd Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Fri, 10 Jun 2022 22:04:41 +0200 Subject: [PATCH 17/28] Allow modifiers in conditionals Closes #3 --- .../antlers/parser/AntlersParser.java | 75 ++++++++++- .../antlers/psi/AntlersConditionalElseif.java | 3 + .../antlers/psi/AntlersConditionalIf.java | 3 + .../antlers/psi/AntlersConditionalUnless.java | 3 + .../impl/AntlersConditionalElseifImpl.java | 6 + .../psi/impl/AntlersConditionalIfImpl.java | 6 + .../impl/AntlersConditionalUnlessImpl.java | 6 + .../de/arrobait/antlers/grammar/Antlers.bnf | 6 +- .../parsing/ParseModifierNode.antlers.html | 8 ++ .../testData/parsing/ParseModifierNode.txt | 121 +++++++++++++++++- 10 files changed, 230 insertions(+), 7 deletions(-) diff --git a/src/main/gen/de/arrobait/antlers/parser/AntlersParser.java b/src/main/gen/de/arrobait/antlers/parser/AntlersParser.java index ecde0e35..f5832a12 100644 --- a/src/main/gen/de/arrobait/antlers/parser/AntlersParser.java +++ b/src/main/gen/de/arrobait/antlers/parser/AntlersParser.java @@ -557,7 +557,7 @@ public static boolean conditional_else(PsiBuilder b, int l) { } /* ********************************************************** */ - // '{{' 'elseif' expr '}}' + // '{{' 'elseif' expr ('|' modifier_list)* '}}' public static boolean conditional_elseif(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "conditional_elseif")) return false; if (!nextTokenIs(b, T_LD)) return false; @@ -566,11 +566,34 @@ public static boolean conditional_elseif(PsiBuilder b, int l) { r = consumeTokens(b, 2, T_LD, T_ELSE_IF); p = r; // pin = 2 r = r && report_error_(b, expr(b, l + 1, -1)); + r = p && report_error_(b, conditional_elseif_3(b, l + 1)) && r; r = p && consumeToken(b, T_RD) && r; exit_section_(b, l, m, r, p, null); return r || p; } + // ('|' modifier_list)* + private static boolean conditional_elseif_3(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "conditional_elseif_3")) return false; + while (true) { + int c = current_position_(b); + if (!conditional_elseif_3_0(b, l + 1)) break; + if (!empty_element_parsed_guard_(b, "conditional_elseif_3", c)) break; + } + return true; + } + + // '|' modifier_list + private static boolean conditional_elseif_3_0(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "conditional_elseif_3_0")) return false; + boolean r; + Marker m = enter_section_(b); + r = consumeToken(b, T_PIPE); + r = r && modifier_list(b, l + 1); + exit_section_(b, m, null, r); + return r; + } + /* ********************************************************** */ // slash_unless_if | endunless_endif public static boolean conditional_end(PsiBuilder b, int l) { @@ -585,7 +608,7 @@ public static boolean conditional_end(PsiBuilder b, int l) { } /* ********************************************************** */ - // '{{' 'if' expr '}}' + // '{{' 'if' expr ('|' modifier_list)* '}}' public static boolean conditional_if(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "conditional_if")) return false; if (!nextTokenIs(b, T_LD)) return false; @@ -594,11 +617,34 @@ public static boolean conditional_if(PsiBuilder b, int l) { r = consumeTokens(b, 2, T_LD, T_IF); p = r; // pin = 2 r = r && report_error_(b, expr(b, l + 1, -1)); + r = p && report_error_(b, conditional_if_3(b, l + 1)) && r; r = p && consumeToken(b, T_RD) && r; exit_section_(b, l, m, r, p, null); return r || p; } + // ('|' modifier_list)* + private static boolean conditional_if_3(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "conditional_if_3")) return false; + while (true) { + int c = current_position_(b); + if (!conditional_if_3_0(b, l + 1)) break; + if (!empty_element_parsed_guard_(b, "conditional_if_3", c)) break; + } + return true; + } + + // '|' modifier_list + private static boolean conditional_if_3_0(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "conditional_if_3_0")) return false; + boolean r; + Marker m = enter_section_(b); + r = consumeToken(b, T_PIPE); + r = r && modifier_list(b, l + 1); + exit_section_(b, m, null, r); + return r; + } + /* ********************************************************** */ // conditional_if | conditional_unless static boolean conditional_start(PsiBuilder b, int l) { @@ -611,7 +657,7 @@ static boolean conditional_start(PsiBuilder b, int l) { } /* ********************************************************** */ - // '{{' 'unless' expr '}}' + // '{{' 'unless' expr ('|' modifier_list)* '}}' public static boolean conditional_unless(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "conditional_unless")) return false; if (!nextTokenIs(b, T_LD)) return false; @@ -620,11 +666,34 @@ public static boolean conditional_unless(PsiBuilder b, int l) { r = consumeTokens(b, 2, T_LD, T_UNLESS); p = r; // pin = 2 r = r && report_error_(b, expr(b, l + 1, -1)); + r = p && report_error_(b, conditional_unless_3(b, l + 1)) && r; r = p && consumeToken(b, T_RD) && r; exit_section_(b, l, m, r, p, null); return r || p; } + // ('|' modifier_list)* + private static boolean conditional_unless_3(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "conditional_unless_3")) return false; + while (true) { + int c = current_position_(b); + if (!conditional_unless_3_0(b, l + 1)) break; + if (!empty_element_parsed_guard_(b, "conditional_unless_3", c)) break; + } + return true; + } + + // '|' modifier_list + private static boolean conditional_unless_3_0(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "conditional_unless_3_0")) return false; + boolean r; + Marker m = enter_section_(b); + r = consumeToken(b, T_PIPE); + r = r && modifier_list(b, l + 1); + exit_section_(b, m, null, r); + return r; + } + /* ********************************************************** */ // '.' (T_INTEGER_NUMBER | T_IDENTIFIER | string_literal) public static boolean dot_property_access(PsiBuilder b, int l) { diff --git a/src/main/gen/de/arrobait/antlers/psi/AntlersConditionalElseif.java b/src/main/gen/de/arrobait/antlers/psi/AntlersConditionalElseif.java index 21baf42a..5c902957 100644 --- a/src/main/gen/de/arrobait/antlers/psi/AntlersConditionalElseif.java +++ b/src/main/gen/de/arrobait/antlers/psi/AntlersConditionalElseif.java @@ -10,4 +10,7 @@ public interface AntlersConditionalElseif extends PsiElement { @Nullable AntlersExpr getExpr(); + @NotNull + List getModifierListList(); + } diff --git a/src/main/gen/de/arrobait/antlers/psi/AntlersConditionalIf.java b/src/main/gen/de/arrobait/antlers/psi/AntlersConditionalIf.java index a718ec95..1c9f48ed 100644 --- a/src/main/gen/de/arrobait/antlers/psi/AntlersConditionalIf.java +++ b/src/main/gen/de/arrobait/antlers/psi/AntlersConditionalIf.java @@ -10,4 +10,7 @@ public interface AntlersConditionalIf extends PsiElement { @Nullable AntlersExpr getExpr(); + @NotNull + List getModifierListList(); + } diff --git a/src/main/gen/de/arrobait/antlers/psi/AntlersConditionalUnless.java b/src/main/gen/de/arrobait/antlers/psi/AntlersConditionalUnless.java index 78856d64..dc2fed0f 100644 --- a/src/main/gen/de/arrobait/antlers/psi/AntlersConditionalUnless.java +++ b/src/main/gen/de/arrobait/antlers/psi/AntlersConditionalUnless.java @@ -10,4 +10,7 @@ public interface AntlersConditionalUnless extends PsiElement { @Nullable AntlersExpr getExpr(); + @NotNull + List getModifierListList(); + } diff --git a/src/main/gen/de/arrobait/antlers/psi/impl/AntlersConditionalElseifImpl.java b/src/main/gen/de/arrobait/antlers/psi/impl/AntlersConditionalElseifImpl.java index 579802a8..4b63948c 100644 --- a/src/main/gen/de/arrobait/antlers/psi/impl/AntlersConditionalElseifImpl.java +++ b/src/main/gen/de/arrobait/antlers/psi/impl/AntlersConditionalElseifImpl.java @@ -33,4 +33,10 @@ public AntlersExpr getExpr() { return findChildByClass(AntlersExpr.class); } + @Override + @NotNull + public List getModifierListList() { + return PsiTreeUtil.getChildrenOfTypeAsList(this, AntlersModifierList.class); + } + } diff --git a/src/main/gen/de/arrobait/antlers/psi/impl/AntlersConditionalIfImpl.java b/src/main/gen/de/arrobait/antlers/psi/impl/AntlersConditionalIfImpl.java index e26a100d..30a08fda 100644 --- a/src/main/gen/de/arrobait/antlers/psi/impl/AntlersConditionalIfImpl.java +++ b/src/main/gen/de/arrobait/antlers/psi/impl/AntlersConditionalIfImpl.java @@ -33,4 +33,10 @@ public AntlersExpr getExpr() { return findChildByClass(AntlersExpr.class); } + @Override + @NotNull + public List getModifierListList() { + return PsiTreeUtil.getChildrenOfTypeAsList(this, AntlersModifierList.class); + } + } diff --git a/src/main/gen/de/arrobait/antlers/psi/impl/AntlersConditionalUnlessImpl.java b/src/main/gen/de/arrobait/antlers/psi/impl/AntlersConditionalUnlessImpl.java index ebe06600..f39befdb 100644 --- a/src/main/gen/de/arrobait/antlers/psi/impl/AntlersConditionalUnlessImpl.java +++ b/src/main/gen/de/arrobait/antlers/psi/impl/AntlersConditionalUnlessImpl.java @@ -33,4 +33,10 @@ public AntlersExpr getExpr() { return findChildByClass(AntlersExpr.class); } + @Override + @NotNull + public List getModifierListList() { + return PsiTreeUtil.getChildrenOfTypeAsList(this, AntlersModifierList.class); + } + } diff --git a/src/main/java/de/arrobait/antlers/grammar/Antlers.bnf b/src/main/java/de/arrobait/antlers/grammar/Antlers.bnf index fd9d8a07..1c0db16c 100644 --- a/src/main/java/de/arrobait/antlers/grammar/Antlers.bnf +++ b/src/main/java/de/arrobait/antlers/grammar/Antlers.bnf @@ -190,9 +190,9 @@ recursive_children_node ::= '{{' T_STAR T_RECURSIVE_CHILDREN [':' T_IDENTIFIER] conditional ::= conditional_start nodes* (conditional_elseif nodes*)* (conditional_else nodes*)? conditional_end { pin=1 } private conditional_start ::= (conditional_if | conditional_unless) conditional_end ::= (slash_unless_if | endunless_endif) -conditional_if ::= '{{' 'if' expr '}}' { pin=2 } -conditional_unless ::= '{{' 'unless' expr '}}' { pin=2 } -conditional_elseif ::= '{{' 'elseif' expr '}}' { pin=2 } +conditional_if ::= '{{' 'if' expr ('|' modifier_list)* '}}' { pin=2 } +conditional_unless ::= '{{' 'unless' expr ('|' modifier_list)* '}}' { pin=2 } +conditional_elseif ::= '{{' 'elseif' expr ('|' modifier_list)* '}}' { pin=2 } conditional_else ::= '{{' 'else' '}}' { pin=2 } private slash_unless_if ::= '{{' (T_END_UNLESS | T_END_IF) '}}' { pin=2 } private endunless_endif ::= '{{' ('endunless' | 'endif') '}}' { pin=2 } diff --git a/src/test/testData/parsing/ParseModifierNode.antlers.html b/src/test/testData/parsing/ParseModifierNode.antlers.html index c54b94a2..4e888f4f 100644 --- a/src/test/testData/parsing/ParseModifierNode.antlers.html +++ b/src/test/testData/parsing/ParseModifierNode.antlers.html @@ -21,3 +21,11 @@

{{ title | ensure_right('rocks!') | upper }}

{{ summary | explode(' ') | ul }} {{ (summary | contains('best')) }} {{ (summary | contains('best')) ?= "It was lunch, is what it was." }} + +{{ if summary | contains:BEST:true }}{{ /if }} +{{ if summary | contains:BEST:true }} + Foo +{{ elseif title | contains:FOO }} + Bar +{{ /if }} +{{ unless summary | contains:BEST:true }}{{ /unless }} diff --git a/src/test/testData/parsing/ParseModifierNode.txt b/src/test/testData/parsing/ParseModifierNode.txt index 9cbf0a36..252f2c40 100644 --- a/src/test/testData/parsing/ParseModifierNode.txt +++ b/src/test/testData/parsing/ParseModifierNode.txt @@ -1,4 +1,4 @@ -Antlers File(0,889) +Antlers File(0,1090) AntlersConditionalImpl(CONDITIONAL)(0,71) AntlersConditionalIfImpl(CONDITIONAL_IF)(0,62) PsiElement({{)('{{')(0,2) @@ -534,3 +534,122 @@ Antlers File(0,889) PsiElement(T_STRING_END)('"')(885,886) PsiWhiteSpace(' ')(886,887) PsiElement(}})('}}')(887,889) + PsiWhiteSpace('\n\n')(889,891) + AntlersConditionalImpl(CONDITIONAL)(891,937) + AntlersConditionalIfImpl(CONDITIONAL_IF)(891,928) + PsiElement({{)('{{')(891,893) + PsiWhiteSpace(' ')(893,894) + PsiElement(if)('if')(894,896) + PsiWhiteSpace(' ')(896,897) + AntlersLiteralExprImpl(LITERAL_EXPR)(897,904) + AntlersVariableImpl(VARIABLE)(897,904) + PsiElement(T_IDENTIFIER)('summary')(897,904) + PsiWhiteSpace(' ')(904,905) + PsiElement(|)('|')(905,906) + PsiWhiteSpace(' ')(906,907) + AntlersModifierListImpl(MODIFIER_LIST)(907,925) + PsiElement(T_MODIFIER)('contains')(907,915) + AntlersModifierParamsListImpl(MODIFIER_PARAMS_LIST)(915,925) + PsiElement(:)(':')(915,916) + AntlersModifierParamImpl(MODIFIER_PARAM)(916,925) + AntlersLiteralExprImpl(LITERAL_EXPR)(916,925) + AntlersVariableImpl(VARIABLE)(916,925) + PsiElement(T_IDENTIFIER)('BEST')(916,920) + AntlersColonPropertyAccessImpl(COLON_PROPERTY_ACCESS)(920,925) + PsiElement(:)(':')(920,921) + PsiElement(T_IDENTIFIER)('true')(921,925) + PsiWhiteSpace(' ')(925,926) + PsiElement(}})('}}')(926,928) + AntlersConditionalEndImpl(CONDITIONAL_END)(928,937) + PsiElement({{)('{{')(928,930) + PsiWhiteSpace(' ')(930,931) + PsiElement(endif)('/if')(931,934) + PsiWhiteSpace(' ')(934,935) + PsiElement(}})('}}')(935,937) + PsiWhiteSpace('\n')(937,938) + AntlersConditionalImpl(CONDITIONAL)(938,1035) + AntlersConditionalIfImpl(CONDITIONAL_IF)(938,975) + PsiElement({{)('{{')(938,940) + PsiWhiteSpace(' ')(940,941) + PsiElement(if)('if')(941,943) + PsiWhiteSpace(' ')(943,944) + AntlersLiteralExprImpl(LITERAL_EXPR)(944,951) + AntlersVariableImpl(VARIABLE)(944,951) + PsiElement(T_IDENTIFIER)('summary')(944,951) + PsiWhiteSpace(' ')(951,952) + PsiElement(|)('|')(952,953) + PsiWhiteSpace(' ')(953,954) + AntlersModifierListImpl(MODIFIER_LIST)(954,972) + PsiElement(T_MODIFIER)('contains')(954,962) + AntlersModifierParamsListImpl(MODIFIER_PARAMS_LIST)(962,972) + PsiElement(:)(':')(962,963) + AntlersModifierParamImpl(MODIFIER_PARAM)(963,972) + AntlersLiteralExprImpl(LITERAL_EXPR)(963,972) + AntlersVariableImpl(VARIABLE)(963,972) + PsiElement(T_IDENTIFIER)('BEST')(963,967) + AntlersColonPropertyAccessImpl(COLON_PROPERTY_ACCESS)(967,972) + PsiElement(:)(':')(967,968) + PsiElement(T_IDENTIFIER)('true')(968,972) + PsiWhiteSpace(' ')(972,973) + PsiElement(}})('}}')(973,975) + PsiElement(OUTER_CONTENT)('\n Foo\n')(975,984) + AntlersConditionalElseifImpl(CONDITIONAL_ELSEIF)(984,1017) + PsiElement({{)('{{')(984,986) + PsiWhiteSpace(' ')(986,987) + PsiElement(elseif)('elseif')(987,993) + PsiWhiteSpace(' ')(993,994) + AntlersLiteralExprImpl(LITERAL_EXPR)(994,999) + AntlersVariableImpl(VARIABLE)(994,999) + PsiElement(T_IDENTIFIER)('title')(994,999) + PsiWhiteSpace(' ')(999,1000) + PsiElement(|)('|')(1000,1001) + PsiWhiteSpace(' ')(1001,1002) + AntlersModifierListImpl(MODIFIER_LIST)(1002,1014) + PsiElement(T_MODIFIER)('contains')(1002,1010) + AntlersModifierParamsListImpl(MODIFIER_PARAMS_LIST)(1010,1014) + PsiElement(:)(':')(1010,1011) + AntlersModifierParamImpl(MODIFIER_PARAM)(1011,1014) + AntlersLiteralExprImpl(LITERAL_EXPR)(1011,1014) + AntlersVariableImpl(VARIABLE)(1011,1014) + PsiElement(T_IDENTIFIER)('FOO')(1011,1014) + PsiWhiteSpace(' ')(1014,1015) + PsiElement(}})('}}')(1015,1017) + PsiElement(OUTER_CONTENT)('\n Bar\n')(1017,1026) + AntlersConditionalEndImpl(CONDITIONAL_END)(1026,1035) + PsiElement({{)('{{')(1026,1028) + PsiWhiteSpace(' ')(1028,1029) + PsiElement(endif)('/if')(1029,1032) + PsiWhiteSpace(' ')(1032,1033) + PsiElement(}})('}}')(1033,1035) + PsiWhiteSpace('\n')(1035,1036) + AntlersConditionalImpl(CONDITIONAL)(1036,1090) + AntlersConditionalUnlessImpl(CONDITIONAL_UNLESS)(1036,1077) + PsiElement({{)('{{')(1036,1038) + PsiWhiteSpace(' ')(1038,1039) + PsiElement(unless)('unless')(1039,1045) + PsiWhiteSpace(' ')(1045,1046) + AntlersLiteralExprImpl(LITERAL_EXPR)(1046,1053) + AntlersVariableImpl(VARIABLE)(1046,1053) + PsiElement(T_IDENTIFIER)('summary')(1046,1053) + PsiWhiteSpace(' ')(1053,1054) + PsiElement(|)('|')(1054,1055) + PsiWhiteSpace(' ')(1055,1056) + AntlersModifierListImpl(MODIFIER_LIST)(1056,1074) + PsiElement(T_MODIFIER)('contains')(1056,1064) + AntlersModifierParamsListImpl(MODIFIER_PARAMS_LIST)(1064,1074) + PsiElement(:)(':')(1064,1065) + AntlersModifierParamImpl(MODIFIER_PARAM)(1065,1074) + AntlersLiteralExprImpl(LITERAL_EXPR)(1065,1074) + AntlersVariableImpl(VARIABLE)(1065,1074) + PsiElement(T_IDENTIFIER)('BEST')(1065,1069) + AntlersColonPropertyAccessImpl(COLON_PROPERTY_ACCESS)(1069,1074) + PsiElement(:)(':')(1069,1070) + PsiElement(T_IDENTIFIER)('true')(1070,1074) + PsiWhiteSpace(' ')(1074,1075) + PsiElement(}})('}}')(1075,1077) + AntlersConditionalEndImpl(CONDITIONAL_END)(1077,1090) + PsiElement({{)('{{')(1077,1079) + PsiWhiteSpace(' ')(1079,1080) + PsiElement(endunless)('/unless')(1080,1087) + PsiWhiteSpace(' ')(1087,1088) + PsiElement(}})('}}')(1088,1090) From 53f10d721b5b6682088a4a67d71aa95c8acf223b Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Sat, 11 Jun 2022 13:32:59 +0200 Subject: [PATCH 18/28] Bump platformVersion and PhpStorm --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 023d1ebb..9011e814 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,11 +13,11 @@ pluginUntilBuild = 221.* # IntelliJ Platform Properties -> https://github.com/JetBrains/gradle-intellij-plugin#intellij-platform-properties platformType = IU -platformVersion = 221.5591.52 +platformVersion = 221.5787.30 # Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html # Example: platformPlugins = com.intellij.java, com.jetbrains.php:203.4449.22 -platformPlugins = com.jetbrains.php:221.5080.224, org.intellij.intelliLang, PsiViewer:221-SNAPSHOT +platformPlugins = com.jetbrains.php:221.5787.33, org.intellij.intelliLang, PsiViewer:221-SNAPSHOT # Java language level used to compile sources and to generate the files for - Java 11 is required since 2020.3 javaVersion = 11 From f231af20f3a3a8708279e1ec4fab5b02d2ff4855 Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Sat, 11 Jun 2022 13:35:33 +0200 Subject: [PATCH 19/28] Update Changelog.md --- CHANGELOG.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0287cfe6..d69acf8c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,11 +16,8 @@ ### Changed - Add support for older IDE versions down to 2020.3 -### Deprecated - -### Removed - ### Fixed +- Allow modifiers in conditionals #3 ## [0.0.1] - 2022-05-25 ### Added From 61fa5130b5100f470e7ff605eb2deef0ff836171 Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Sat, 11 Jun 2022 15:31:27 +0200 Subject: [PATCH 20/28] Run build action also on develop branch --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a0b68590..c43438c3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,7 +16,7 @@ name: Build on: # Trigger the workflow on pushes to only the 'main' branch (this avoids duplicate checks being run e.g. for dependabot pull requests) push: - branches: [main] + branches: [main, develop] # Trigger the workflow on any pull request pull_request: From 502321fafa9b5edf1110af75906d72c6238de91b Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Sat, 11 Jun 2022 15:47:08 +0200 Subject: [PATCH 21/28] Support the latest three major PhpStorm versions --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 9011e814..8b46d0c5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ pluginVersion = 0.0.1 # See https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html # for insight into build numbers and IntelliJ Platform versions. -pluginSinceBuild = 203 +pluginSinceBuild = 212 pluginUntilBuild = 221.* # IntelliJ Platform Properties -> https://github.com/JetBrains/gradle-intellij-plugin#intellij-platform-properties From e2ce66c9734965f7c5729e19be4f1f207bce238f Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Sat, 11 Jun 2022 22:43:53 +0200 Subject: [PATCH 22/28] Remove Highlighter testcase due its broken --- .../antlers/highlighting/HighlightTest.java | 55 ---------- .../highlighting/HighlightTestCase.java | 103 ------------------ 2 files changed, 158 deletions(-) delete mode 100644 src/test/java/de/arrobait/antlers/highlighting/HighlightTest.java delete mode 100644 src/test/java/de/arrobait/antlers/highlighting/HighlightTestCase.java diff --git a/src/test/java/de/arrobait/antlers/highlighting/HighlightTest.java b/src/test/java/de/arrobait/antlers/highlighting/HighlightTest.java deleted file mode 100644 index 4f3461f1..00000000 --- a/src/test/java/de/arrobait/antlers/highlighting/HighlightTest.java +++ /dev/null @@ -1,55 +0,0 @@ -package de.arrobait.antlers.highlighting; - -import org.junit.Ignore; - -@Ignore -public class HighlightTest extends HighlightTestCase { - public HighlightTest() { - super("highlighting", "antlers.html"); - } - - public void testHighlightComments() { - doTest(); - } - - public void testHighlightBooleans() { - doTest(); - } - - public void testHighlightStrings() { - doTest(); - } - - public void testHighlightNumbers() { - doTest(); - } - - public void testHighlightVariables() { - doTest(); - } - - public void testHighlightOperators() { - doTest(); - } - - public void testHighlightCommas() { - doTest(); - } - - public void testHighlightParentheses() { - doTest(); - } - - public void testHighlightTags() { - doTest(); - } - - public void testHighlightTagConditions() { - doTest(); - } - - @Override - protected String getTestDataPath() { - return "src/test/testData"; - } -} diff --git a/src/test/java/de/arrobait/antlers/highlighting/HighlightTestCase.java b/src/test/java/de/arrobait/antlers/highlighting/HighlightTestCase.java deleted file mode 100644 index c1a2fc4d..00000000 --- a/src/test/java/de/arrobait/antlers/highlighting/HighlightTestCase.java +++ /dev/null @@ -1,103 +0,0 @@ -package de.arrobait.antlers.highlighting; - -import com.intellij.lang.Language; -import com.intellij.mock.MockProjectEx; -import com.intellij.mock.MockPsiManager; -import com.intellij.openapi.application.ex.PathManagerEx; -import com.intellij.openapi.fileEditor.impl.LoadTextUtil; -import com.intellij.openapi.util.io.FileUtil; -import com.intellij.openapi.vfs.CharsetToolkit; -import com.intellij.psi.PsiFile; -import com.intellij.psi.impl.PsiFileFactoryImpl; -import com.intellij.testFramework.EditorTestUtil; -import com.intellij.testFramework.LightVirtualFile; -import com.intellij.testFramework.TestDataFile; -import com.intellij.testFramework.fixtures.BasePlatformTestCase; -import de.arrobait.antlers.AntlersLanguage; -import org.jetbrains.annotations.NotNull; - -import java.io.File; -import java.io.IOException; -import java.nio.charset.StandardCharsets; - -public abstract class HighlightTestCase extends BasePlatformTestCase { - protected Language language = AntlersLanguage.INSTANCE; - - protected MockProjectEx myProject; - - private PsiFileFactoryImpl myFileFactory; - - protected PsiFile myFile; - - private final String myFileExt; - - protected final String myFullDataPath; - - private final boolean myLowercaseFirstLetter; - - protected HighlightTestCase(@NotNull String dataPath, @NotNull String fileExt) { - this(dataPath, fileExt, false); - } - - protected HighlightTestCase(@NotNull String dataPath, @NotNull String fileExt, boolean lowercaseFirstLetter) { - myFullDataPath = getTestDataPath() + "/" + dataPath; - myFileExt = fileExt; - myLowercaseFirstLetter = lowercaseFirstLetter; - } - - @Override - public void setUp() throws Exception { - super.setUp(); - - myProject = new MockProjectEx(getTestRootDisposable()); - MockPsiManager myPsiManager = new MockPsiManager(myProject); - myFileFactory = new PsiFileFactoryImpl(myPsiManager); - } - - protected String getTestDataPath() { - return PathManagerEx.getTestDataPath(); - } - - protected void doTest() { - String name = getTestName(); - try { - PsiFile testFile = parseFile(name, loadFile(name + "." + myFileExt)); - EditorTestUtil.testFileSyntaxHighlighting(testFile, myFullDataPath + '/' + name + ".txt", false); - } - catch (IOException e) { - throw new RuntimeException(e); - } - } - - @NotNull - public final String getTestName() { - return getTestName(myLowercaseFirstLetter); - } - - protected String loadFile(@NotNull @TestDataFile String name) throws IOException { - return loadFileDefault(myFullDataPath, name); - } - - public static String loadFileDefault(@NotNull String dir, @NotNull String name) throws IOException { - return FileUtil.loadFile(new File(dir, name), CharsetToolkit.UTF8, true).trim(); - } - - protected PsiFile parseFile(String name, String text) { - myFile = createPsiFile(name, text); - assertEquals("light virtual file text mismatch", text, ((LightVirtualFile) myFile.getVirtualFile()).getContent().toString()); - assertEquals("virtual file text mismatch", text, LoadTextUtil.loadText(myFile.getVirtualFile())); - return myFile; - } - - protected PsiFile createPsiFile(@NotNull String name, @NotNull String text) { - return createFile(name + "." + myFileExt, text); - } - - protected PsiFile createFile(@NotNull String name, @NotNull String text) { - LightVirtualFile virtualFile = new LightVirtualFile(name, language, text); - virtualFile.setCharset(StandardCharsets.UTF_8); - - return myFileFactory.trySetupPsiForFile(virtualFile, language, true, false); - } - -} From 1712ed72a771f6b0e79d65a5559a928449865fee Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Sat, 11 Jun 2022 22:44:15 +0200 Subject: [PATCH 23/28] Reformat plugin.xml --- src/main/resources/META-INF/plugin.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 3f4e3df7..f71eed11 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -40,11 +40,12 @@ serviceImplementation="de.arrobait.antlers.services.AntlersProjectService"/> - + + language="Antlers" implementationClass="de.arrobait.antlers.editor.comments.AntlersCommenter"/> From 2b416de6cf3d833e32141cd4f3ec961247ff18be Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Sun, 12 Jun 2022 11:25:38 +0200 Subject: [PATCH 24/28] Update action/setup-java to 3.3.0 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c43438c3..068befec 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -43,7 +43,7 @@ jobs: # Setup Java 11 environment for the next steps - name: Setup Java - uses: actions/setup-java@v2 + uses: actions/setup-java@v3.3.0 with: distribution: zulu java-version: 11 From dff2bd3e8ad2a23e9b352a7af4b7b21b4a6b8ef4 Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Sun, 12 Jun 2022 11:26:29 +0200 Subject: [PATCH 25/28] Rework and update Github actions --- .github/workflows/build.yml | 57 ++++++++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 068befec..c565a912 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,33 +21,58 @@ on: pull_request: jobs: - # Run Gradle Wrapper Validation Action to verify the wrapper's checksum + gradleValidation: + name: Gradle Wrapper + runs-on: ubuntu-latest + steps: + # Checkout the current repository + - name: Fetch Sources + uses: actions/checkout@v3 + + # Validate wrapper + - name: Gradle Wrapper Validation + uses: gradle/wrapper-validation-action@v1.0.4 + # Run verifyPlugin, IntelliJ Plugin Verifier, and test Gradle tasks # Build plugin and provide the artifact for the next workflow jobs build: name: Build + needs: gradleValidation runs-on: ubuntu-latest outputs: + name: ${{ steps.properties.outputs.name }} version: ${{ steps.properties.outputs.version }} changelog: ${{ steps.properties.outputs.changelog }} - steps: - - # Check out current repository - - name: Fetch Sources - uses: actions/checkout@v2.4.0 - - # Validate wrapper - - name: Gradle Wrapper Validation - uses: gradle/wrapper-validation-action@v1.0.4 + steps: # Setup Java 11 environment for the next steps - name: Setup Java uses: actions/setup-java@v3.3.0 with: distribution: zulu java-version: 11 - cache: gradle + + # Check out current repository + - name: Fetch Sources + uses: actions/checkout@v3 + + # Cache Gradle Dependencies + - name: Setup Gradle Dependencies Cache + uses: actions/cache@v3 + with: + path: ~/.gradle/caches + key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.gradle', '**/*.gradle.kts', 'gradle.properties') }} + restore-keys: | + ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.gradle', '**/*.gradle.kts', 'gradle.properties') }} + ${{ runner.os }}-gradle-caches + + # Cache Gradle Wrapper + - name: Setup Gradle Wrapper Cache + uses: actions/cache@v3 + with: + path: ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }} # Set environment variables - name: Export Properties @@ -83,7 +108,7 @@ jobs: # Cache Plugin Verifier IDEs - name: Setup Plugin Verifier IDEs Cache - uses: actions/cache@v2.1.7 + uses: actions/cache@v3 with: path: ${{ steps.properties.outputs.pluginVerifierHomeDir }}/ides key: plugin-verifier-${{ hashFiles('build/listProductsReleases.txt') }} @@ -95,14 +120,14 @@ jobs: # Collect Plugin Verifier Result - name: Collect Plugin Verifier Result if: ${{ always() }} - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: pluginVerifier-result path: ${{ github.workspace }}/build/reports/pluginVerifier # Run Qodana inspections - name: Qodana - Code Inspection - uses: JetBrains/qodana-action@v4.2.5 + uses: JetBrains/qodana-action@v5.1.0 # Prepare plugin archive content for creating artifact - name: Prepare Plugin Artifact @@ -117,7 +142,7 @@ jobs: # Store already-built plugin as an artifact for downloading - name: Upload artifact - uses: actions/upload-artifact@v2.2.4 + uses: actions/upload-artifact@v3 with: name: ${{ steps.artifact.outputs.filename }} path: ./build/distributions/content/*/* @@ -133,7 +158,7 @@ jobs: # Check out current repository - name: Fetch Sources - uses: actions/checkout@v2.4.0 + uses: actions/checkout@v3 # Remove old release drafts by using the curl request for the available releases with draft flag - name: Remove Old Release Drafts From 99c074c273480ded5dc016e6563f57113dd84b22 Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Sun, 12 Jun 2022 14:35:22 +0200 Subject: [PATCH 26/28] Exclude generated files from Qodana --- qodana.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/qodana.yml b/qodana.yml index dac95d31..f7810386 100644 --- a/qodana.yml +++ b/qodana.yml @@ -4,3 +4,7 @@ version: 1.0 profile: name: qodana.recommended +exclude: + - name: All + paths: + - src/main/gen/ From 832788f7518fd04546076d2955cf2a87e0d7c223 Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Sun, 12 Jun 2022 14:57:45 +0200 Subject: [PATCH 27/28] Update Changelog --- CHANGELOG.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d69acf8c..02d26798 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,12 +12,10 @@ - Add autocompletion for Antlers delimiters. Type `{{` and the closing `}}` will be added automatically. - Support for scopes in the grammar #2 - Autocomplete Antlers core modifiers +- Add support for modifiers in conditionals #3 ### Changed -- Add support for older IDE versions down to 2020.3 - -### Fixed -- Allow modifiers in conditionals #3 +- Add support for older IDE versions down to 2021.2 ## [0.0.1] - 2022-05-25 ### Added From 900c26adc74d49b872bf0fb84a3c8dd2d79f257c Mon Sep 17 00:00:00 2001 From: Stefano Kowalke Date: Sun, 12 Jun 2022 14:58:26 +0200 Subject: [PATCH 28/28] Raise version number to 0.0.2 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 8b46d0c5..977093a1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ pluginGroup = de.arrobait.antlers pluginName = Antlers Language Support # SemVer format -> https://semver.org -pluginVersion = 0.0.1 +pluginVersion = 0.0.2 # See https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html # for insight into build numbers and IntelliJ Platform versions.