Index: EcnlProtoTool/trunk/prototool/llbruby.h
===================================================================
--- EcnlProtoTool/trunk/prototool/llbruby.h	(revision 286)
+++ EcnlProtoTool/trunk/prototool/llbruby.h	(revision 321)
@@ -15,11 +15,11 @@
 #define _LLBRUBY_H_  1
 
-#define RUBY_CODE_SIZE (1024 * 4)		//4kBã¾ã§å®è¡å¯è½ã¨ãã
+#define RUBY_CODE_SIZE (1024 * 4)		//4kBまで実行可能とする
 
-//ãã¤ãã³ã¼ããã¼ã¸ã§ã³ãå®ç¾©ãã¾ã
+//バイトコードバージョンを定義します
 #define BYTE_CODE2	2
 #define BYTE_CODE3	3
 
-//ãã¡ã¼ã ã¦ã§ã¢ã®ãã¼ã¸ã§ã³ãå®ç¾©ãã¾ã
+//ファームウェアのバージョンを定義します
 #define MASTER		1000
 #define JAM			1001
@@ -28,5 +28,5 @@
 
 
-//åºæ¿ã®è¨­è¨ãã¼ã¸ã§ã³ãå®ç¾©ãã¾ã
+//基板の設計バージョンを定義します
 #define BOARD_GR	0
 #define BOARD_P01	1
@@ -36,11 +36,11 @@
 
 
-//ãã¤ãã³ã¼ããã©ã¼ãããã®è¨­å®
+//バイトコードフォーマットの設定
 #define BYTECODE	BYTE_CODE3
 
-//åºæ¿ã®ã¿ã¤ãè¨­å®
+//基板のタイプ設定
 #define BOARD	BOARD_GR
 
-//ãã¡ã¼ã ã¦ã§ã¢è¨­å®
+//ファームウェア設定
 #define FIRMWARE	MASTER
 //#define FIRMWARE	JAM
Index: EcnlProtoTool/trunk/prototool/src/echo_client.rb
===================================================================
--- EcnlProtoTool/trunk/prototool/src/echo_client.rb	(revision 286)
+++ EcnlProtoTool/trunk/prototool/src/echo_client.rb	(revision 321)
@@ -6,7 +6,7 @@
 while msg = STDIN.gets
 	print("you writed:", msg)
-	#socketã«æ¸ãè¾¼ã
+	#socketに書き込む
 	sock.write(msg)
-	#ãµã¼ãããè¿ã£ã¦ããã¡ãã»ã¼ã¸ãè¡¨ç¤ºããã
+	#サーバから返ってきたメッセージを表示する。
 	print("return message:", sock.gets)
 end
Index: EcnlProtoTool/trunk/prototool/src/main.c
===================================================================
--- EcnlProtoTool/trunk/prototool/src/main.c	(revision 286)
+++ EcnlProtoTool/trunk/prototool/src/main.c	(revision 321)
@@ -4,47 +4,32 @@
  *  Copyright (C) 2014-2017 Cores Co., Ltd. Japan
  *
- *  ä¸è¨èä½æ¨©è
-ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§
- *  ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ãä½¿ç¨ã»è¤è£½ã»æ¹
- *  å¤ã»åé
-å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼
- *  (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½
- *      æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼
- *      ã¹ã³ã¼ãä¸­ã«å«ã¾ãã¦ãããã¨ï¼
- *  (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
- *      ç¨ã§ããå½¢ã§åé
-å¸ããå ´åã«ã¯ï¼åé
-å¸ã«ä¼´ããã­ã¥ã¡ã³ãï¼å©ç¨
- *      è
-ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨
- *      ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
- *  (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
- *      ç¨ã§ããªãå½¢ã§åé
-å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã
- *      ã¨ï¼
- *    (a) åé
-å¸ã«ä¼´ããã­ã¥ã¡ã³ãï¼å©ç¨è
-ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è
- *        ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
- *    (b) åé
-å¸ã®å½¢æ
-ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSãã­ã¸ã§ã¯ãã«
- *        å ±åãããã¨ï¼
- *  (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ
- *      å®³ãããï¼ä¸è¨èä½æ¨©è
-ããã³TOPPERSãã­ã¸ã§ã¯ããå
-è²¬ãããã¨ï¼
- *      ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç
- *      ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è
-ããã³TOPPERSãã­ã¸ã§ã¯ãã
- *      å
-è²¬ãããã¨ï¼
+ *  上記著作権者は，以下の(1)～(4)の条件を満たす場合に限り，本ソフトウェ
+ *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
+ *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
+ *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+ *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+ *      スコード中に含まれていること．
+ *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+ *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+ *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+ *      の無保証規定を掲載すること．
+ *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+ *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+ *      と．
+ *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+ *        作権表示，この利用条件および下記の無保証規定を掲載すること．
+ *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+ *        報告すること．
+ *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+ *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+ *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
+ *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
+ *      免責すること．
  *
- *  æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è
-ã
- *  ãã³TOPPERSãã­ã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç
- *  ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§
- *  ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã
- *  ã®è²¬ä»»ãè² ããªãï¼
+ *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+ *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
+ *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
+ *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
+ *  の責任を負わない．
  *
  *  @(#) $Id$
@@ -52,5 +37,5 @@
 
  /*
-  *  ãµã³ãã«ãã­ã°ã©ã (1)ã®æ¬ä½
+  *  サンプルプログラム(1)の本体
   */
 
@@ -166,5 +151,5 @@
 	echonet = 0;
 
-	/* mrubyã®åæå */
+	/* mrubyの初期化 */
 	mrb = mrb_open();
 	if (mrb == NULL)
@@ -290,5 +275,5 @@
 
 /*
- * ã¢ããªã±ã¼ã·ã§ã³ã¿ã¹ã¯ã®ç»é²
+ * アプリケーションタスクの登録
  */
 static mrb_value mrb_target_board_wait_msg(mrb_state *mrb, mrb_value self)
@@ -320,6 +305,5 @@
 	FD_SET(sock, &errorfds);
 
-	/* ã¡ãã»ã¼ã¸å¾
-ã¡ */
+	/* メッセージ待ち */
 	memset(msg, 0, sizeof(*msg));
 	ret = select(sock + 1, &readfds, &writefds, &errorfds, ptimer);
@@ -345,11 +329,10 @@
 	main_time = now;
 
-	/* ã¿ã¤ã ã¢ã¦ãã®å ´å */
+	/* タイムアウトの場合 */
 	if (ret == 0) {
 		return mrb_ary_new_from_values(mrb, 1, arv);
 	}
 
-	/* å
-é¨ã¤ãã³ãã®å ´å */
+	/* 内部イベントの場合 */
 	if (msg->dst.sin_addr.s_addr == 0) {
 		/* Ethernet Link up */
@@ -364,10 +347,10 @@
 		return mrb_ary_new_from_values(mrb, 2, arv);
 	}
-	/* Echoneté»æåä¿¡ã®å ´å */
+	/* Echonet電文受信の場合 */
 	else {
-		/* éä¿¡ç«¯ç¹ */
+		/* 通信端点 */
 		arv[1] = mrb_str_new(mrb, (char *)&msg->dst, sizeof(msg->dst));
 
-		/* åä¿¡ãã¼ã¿ */
+		/* 受信データ */
 		arv[2] = mrb_str_new(mrb, (char *)msg->buffer, msg->len);
 
@@ -377,9 +360,9 @@
 
 /*
- * ã¢ããªã±ã¼ã·ã§ã³ã¿ã¹ã¯ã®ç»é²
+ * アプリケーションタスクの登録
  */
 static mrb_value mrb_target_board_restart(mrb_state *mrb, mrb_value self)
 {
-	/* DHCPéå§ */
+	/* DHCP開始 */
 
 	return self;
@@ -387,5 +370,5 @@
 
 /*
- * éä¿¡ã¬ã¤ã¤ã¼ã¸ã®éä¿¡
+ * 通信レイヤーへの送信
  */
 static mrb_value mrb_target_board_snd_msg(mrb_state *mrb, mrb_value self)
@@ -415,5 +398,5 @@
 
 /*
- * ã­ã¼ã«ã«ã¢ãã¬ã¹ãç¢ºèª
+ * ローカルアドレスか確認
  */
 static mrb_value mrb_target_board_is_local_addr(mrb_state *mrb, mrb_value self)
@@ -435,5 +418,5 @@
 
 /*
- * ãã«ãã­ã£ã¹ãã¢ãã¬ã¹ãç¢ºèª
+ * マルチキャストアドレスか確認
  */
 static mrb_value mrb_target_board_is_multicast_addr(mrb_state *mrb, mrb_value self)
@@ -455,5 +438,5 @@
 
 /*
- * åä¸ã¢ãã¬ã¹ãç¢ºèª
+ * 同一アドレスか確認
  */
 static mrb_value mrb_target_board_equals_addr(mrb_state *mrb, mrb_value self)
@@ -476,5 +459,5 @@
 
 /*
- * ã­ã¼ã«ã«ã¢ãã¬ã¹ã®åå¾
+ * ローカルアドレスの取得
  */
 static mrb_value mrb_target_board_get_local_addr(mrb_state *mrb, mrb_value self)
@@ -494,5 +477,5 @@
 
 /*
- * ãã«ãã­ã£ã¹ãã¢ãã¬ã¹ã®åå¾
+ * マルチキャストアドレスの取得
  */
 static mrb_value mrb_target_board_get_multicast_addr(mrb_state *mrb, mrb_value self)
Index: EcnlProtoTool/trunk/prototool/src/onitest.c
===================================================================
--- EcnlProtoTool/trunk/prototool/src/onitest.c	(revision 286)
+++ EcnlProtoTool/trunk/prototool/src/onitest.c	(revision 321)
@@ -582,278 +582,278 @@
 	x2("(?:()|()|()|(x)|()|())*\\2b\\5", "b", 0, 1);
 	x2("\217\372\000\000", "\217\372\000\000", 0, 3);
-	x2("", "ã", 0, 0);
-	x2("ã", "ã", 0, 3);
-	n("ã", "ã");
-	x2("ãã", "ãã", 0, 6);
-	x2("ããã", "ããã", 0, 9);
-	x2("ããããããããããããããããããããããããããããããããããã", "ããããããããããããããããããããããããããããããããããã", 0, 105);
-	x2("ã", "ãã", 3, 6);
-	x2("ãã", "ããã", 3, 9);
+	x2("", "あ", 0, 0);
+	x2("あ", "あ", 0, 3);
+	n("い", "あ");
+	x2("うう", "うう", 0, 6);
+	x2("あいう", "あいう", 0, 9);
+	x2("こここここここここここここここここここここここここここここここここここ", "こここここここここここここここここここここここここここここここここここ", 0, 105);
+	x2("あ", "いあ", 3, 6);
+	x2("いう", "あいう", 3, 9);
 	x2("e\207\000\000", "e\207\000\000", 0, 3);
-	x2(".", "ã", 0, 3);
-	x2("..", "ãã", 0, 6);
-	x2("(?u)\\w", "ã", 0, 3);
-	n("(?u)\\W", "ã");
-	x2("(?u)[\\W]", "ã$", 3, 4);
-	x2("\\S", "ã", 0, 3);
-	x2("\\S", "æ¼¢", 0, 3);
-	x2("\\b", "æ° ", 0, 0);
-	x2("\\b", " ã»", 1, 1);
-	x2("\\B", "ãã ", 3, 3);
-	x2("\\B", "ã ", 4, 4);
-	x2("\\B", " ã", 0, 0);
-	x2("[ãã¡]", "ã¡", 0, 3);
-	n("[ãªã«]", "ã¬");
-	x2("[ã-ã]", "ã", 0, 3);
-	n("[^ã]", "ã");
-	x2("(?u)[\\w]", "ã­", 0, 3);
-	n("[\\d]", "ãµ");
-	x2("[\\D]", "ã¯", 0, 3);
-	n("[\\s]", "ã");
-	x2("[\\S]", "ã¸", 0, 3);
-	x2("(?u)[\\w\\d]", "ã", 0, 3);
-	x2("(?u)[\\w\\d]", "   ã", 3, 6);
-	n("(?u)\\wé¬¼è»", " é¬¼è»");
-	x2("(?u)é¬¼\\Wè»", "é¬¼ è»", 0, 7);
-	x2("ã.ã.ã", "ããããã", 0, 15);
-	x2("(?u).\\wã\\W..ã", "ããã ããã", 0, 19);
-	x2("(?u)\\s\\wããã", " ãããã", 0, 13);
-	x2("ãã.ã", "ãããã", 0, 12);
-	n(".ã", "ãã");
-	x2(".ã", "ãã", 0, 6);
-	x2("^ã", "ã", 0, 3);
-	x2("^ã$", "ã", 0, 3);
-	x2("(?u)^\\w$", "ã«", 0, 3);
-	x2("(?u)^\\wããããã$", "zããããã", 0, 16);
-	x2("(?u)^\\w...ããã$", "zãããããã", 0, 19);
-	x2("(?u)\\w\\w\\s\\Wããã\\d", "aã  ããã4", 0, 16);
-	x2("\\Aãã¡ã¤", "ãã¡ã¤", 0, 9);
-	x2("ããã\\Z", "ããã", 0, 9);
-	x2("ããã\\z", "ããã", 0, 9);
-	x2("ããã\\Z", "ããã\n", 0, 9);
-	x2("\\Gã½ã´", "ã½ã´", 0, 6);
-	n("\\Gã", "ããã");
-	n("ã¨ã¦\\G", "ã¨ã¦");
-	n("ã¾ã¿\\A", "ã¾ã¿");
-	n("ã¾\\Aã¿", "ã¾ã¿");
-	x2("(?=ã)ã", "ã", 0, 3);
-	n("(?=ã).", "ã");
-	x2("(?!ã)ã", "ã", 0, 3);
-	n("(?!ã¨)ã", "ã¨");
-	x2("(?i:ã)", "ã", 0, 3);
-	x2("(?i:ã¶ã¹)", "ã¶ã¹", 0, 6);
-	n("(?i:ã)", "ã");
-	x2("(?m:ã.)", "ã\n", 0, 4);
-	x2("(?m:.ã)", "ã¾\nã", 3, 7);
-	x2("ã?", "", 0, 0);
-	x2("å¤?", "å", 0, 0);
-	x2("å¤?", "å¤", 0, 3);
-	x2("é*", "", 0, 0);
-	x2("é*", "é", 0, 3);
-	x2("å­*", "å­å­å­", 0, 9);
-	x2("é¦¬*", "é¹¿é¦¬é¦¬é¦¬é¦¬", 0, 0);
-	n("å±±+", "");
-	x2("æ²³+", "æ²³", 0, 3);
-	x2("æ+", "ææææ", 0, 12);
-	x2("ã+", "ããããã", 0, 6);
-	x2("ã+", "ããããã", 3, 15);
-	x2(".?", "ã", 0, 3);
-	x2(".*", "ã±ã´ã·ãº", 0, 12);
-	x2(".+", "ã", 0, 3);
-	x2(".+", "ãããã\n", 0, 12);
-	x2("ã|ã", "ã", 0, 3);
-	x2("ã|ã", "ã", 0, 3);
-	x2("ãã|ãã", "ãã", 0, 6);
-	x2("ãã|ãã", "ãã", 0, 6);
-	x2("ã(?:ãã|ãã)", "ããã", 0, 9);
-	x2("ã(?:ãã|ãã)ã", "ãããã", 0, 12);
-	x2("ãã|(?:ãã|ãã)", "ãã", 0, 6);
-	x2("ã|ã|ã", "ãã", 3, 6);
-	x2("ã|ã|ãã|ããã|ã|ããã|ããã|ã|ãã¡|ã¤ã¦ã¨ãªã«|ã¬ã­", "ããã", 0, 9);
-	n("ã|ã|ãã|ããã|ã|ããã|ããã|ã|ãã¡|ã¤ã¦ã¨ãªã«|ã¬ã­", "ãã");
-	x2("ã|^ã", "ã¶ã", 3, 6);
-	x2("ã|^ã", "ãã", 0, 3);
-	x2("é¬¼|\\Gè»", "ãè»é¬¼", 6, 9);
-	x2("é¬¼|\\Gè»", "è»é¬¼", 0, 3);
-	x2("é¬¼|\\Aè»", "bè»é¬¼", 4, 7);
-	x2("é¬¼|\\Aè»", "è»", 0, 3);
-	x2("é¬¼|è»\\Z", "è»é¬¼", 3, 6);
-	x2("é¬¼|è»\\Z", "è»", 0, 3);
-	x2("é¬¼|è»\\Z", "è»\n", 0, 3);
-	x2("é¬¼|è»\\z", "è»é¬¼", 3, 6);
-	x2("é¬¼|è»\\z", "è»", 0, 3);
-	x2("(?u)\\w|\\s", "ã", 0, 3);
-	x2("(?u)\\w|%", "%ã", 0, 1);
-	x2("(?u)\\w|[&$]", "ã&", 0, 3);
-	x2("[ã-ã]", "ã", 0, 3);
-	x2("[ã-ã]|[^ã-ã]", "ã", 0, 3);
-	x2("[ã-ã]|[^ã-ã]", "ã", 0, 3);
-	x2("[^ã]", "\n", 0, 1);
-	x2("(?:ã|[ã-ã])|ãã", "ãã", 0, 3);
-	x2("(?:ã|[ã-ã])|ãã", "ãã", 0, 6);
-	x2("ããã|(?=ãã)..ã»", "ããã»", 0, 9);
-	x2("ããã|(?!ãã)..ã»", "ããã»", 0, 9);
-	x2("(?=ãã)..ã|(?=ãã)..ã", "ããã", 0, 9);
-	x2("(?<=ã|ãã)ã", "ããã", 6, 9);
-	n("(?>ã|ããã)ã", "ãããã");
-	x2("(?>ããã|ã)ã", "ãããã", 0, 12);
-	x2("ã?|ã", "ã", 0, 3);
-	x2("ã?|ã", "ã", 0, 0);
-	x2("ã?|ã", "", 0, 0);
-	x2("ã*|ã", "ãã", 0, 6);
-	x2("ã*|ã*", "ãã", 0, 0);
-	x2("ã*|ã*", "ãã", 0, 3);
-	x2("[aã]*|ã*", "aãããã", 0, 4);
-	x2("ã+|ã*", "", 0, 0);
-	x2("ã+|ã*", "ããã", 0, 9);
-	x2("ã+|ã*", "ãããã", 0, 3);
-	x2("ã+|ã*", "aãããã", 0, 0);
-	n("ã+|ã+", "");
-	x2("(ã|ã)?", "ã", 0, 3);
-	x2("(ã|ã)*", "ãã", 0, 6);
-	x2("(ã|ã)+", "ããã", 0, 9);
-	x2("(ãã|ãã)+", "ãããããã", 0, 12);
-	x2("(ãã|ãã)+", "ãããããã", 6, 18);
-	x2("(ãã|ãã)+", "ããããã", 3, 15);
-	x2("(ãã|ãã)+", "ããããã", 0, 6);
-	x2("(ãã|ãã)+", "$$zzzzããããã", 6, 12);
-	x2("(ã|ããã)+", "ããããã", 0, 15);
-	x2("(ã|ããã)+", "ãã", 3, 6);
-	x2("(ã|ããã)+", "ãããããã", 3, 12);
-	x2("(?:ã|ã)(?:ã|ã)", "ãã", 0, 6);
-	x2("(?:ã*|ã*)(?:ã*|ã*)", "ãããããã", 0, 9);
-	x2("(?:ã*|ã*)(?:ã+|ã+)", "ãããããã", 0, 18);
-	x2("(?:ã+|ã+){2}", "ãããããã", 0, 18);
-	x2("(?:ã+|ã+){1,2}", "ãããããã", 0, 18);
-	x2("(?:ã+|\\Aã*)ãã", "ãã", 0, 6);
-	n("(?:ã+|\\Aã*)ãã", "ãããã");
-	x2("(?:^ã+|ã+)*ã", "ãããããããã", 18, 24);
-	x2("(?:^ã+|ã+)*ã", "ããããããã", 0, 21);
-	x2("ã{0,}", "ãããã", 0, 12);
-	x2("ã|(?i)c", "C", 0, 1);
-	x2("(?i)c|ã", "C", 0, 1);
-	x2("(?i:ã)|a", "a", 0, 1);
-	n("(?i:ã)|a", "A");
-	x2("[ããã]?", "ããã", 0, 3);
-	x2("[ããã]*", "ããã", 0, 9);
-	x2("[^ããã]*", "ããã", 0, 0);
-	n("[^ããã]+", "ããã");
-	x2("ã?\?", "ããã", 0, 0);
-	x2("ãã?\?ã", "ããã", 0, 9);
-	x2("ã*?", "ããã", 0, 0);
-	x2("ãã*?", "ããã", 0, 3);
-	x2("ãã*?ã", "ãããã", 0, 12);
-	x2("ã+?", "ããã", 0, 3);
-	x2("ãã+?", "ããã", 0, 6);
-	x2("ãã+?ã", "ãããã", 0, 12);
-	x2("(?:å¤©?)?\?", "å¤©", 0, 0);
-	x2("(?:å¤©?\?)?", "å¤©", 0, 0);
-	x2("(?:å¤¢?)+?", "å¤¢å¤¢å¤¢", 0, 3);
-	x2("(?:é¢¨+)?\?", "é¢¨é¢¨é¢¨", 0, 0);
-	x2("(?:éª+)?\?é", "éªéªéªé", 0, 12);
-	x2("(?:ãã)?{2}", "", 0, 0);
-	x2("(?:é¬¼è»)?{2}", "é¬¼è»é¬¼è»é¬¼", 0, 12);
-	x2("(?:é¬¼è»)*{0}", "é¬¼è»é¬¼è»é¬¼", 0, 0);
-	x2("(?:é¬¼è»){3,}", "é¬¼è»é¬¼è»é¬¼è»é¬¼è»", 0, 24);
-	n("(?:é¬¼è»){3,}", "é¬¼è»é¬¼è»");
-	x2("(?:é¬¼è»){2,4}", "é¬¼è»é¬¼è»é¬¼è»", 0, 18);
-	x2("(?:é¬¼è»){2,4}", "é¬¼è»é¬¼è»é¬¼è»é¬¼è»é¬¼è»", 0, 24);
-	x2("(?:é¬¼è»){2,4}?", "é¬¼è»é¬¼è»é¬¼è»é¬¼è»é¬¼è»", 0, 12);
-	x2("(?:é¬¼è»){,}", "é¬¼è»{,}", 0, 9);
-	x2("(?:ããã)+?{2}", "ããããããããã", 0, 18);
-	x3("(ç«)", "ç«", 0, 3, 1);
-	x3("(ç«æ°´)", "ç«æ°´", 0, 6, 1);
-	x2("((æé))", "æé", 0, 6);
-	x3("((é¢¨æ°´))", "é¢¨æ°´", 0, 6, 1);
-	x3("((æ¨æ¥))", "æ¨æ¥", 0, 6, 2);
-	x3("((((((((((((((((((((éå­))))))))))))))))))))", "éå­", 0, 6, 20);
-	x3("(ãã)(ãã)", "ãããã", 0, 6, 1);
-	x3("(ãã)(ãã)", "ãããã", 6, 12, 2);
-	x3("()(ã)ãã(ããã)ãããã", "ãããããããããã", 9, 18, 3);
-	x3("(()(ã)ãã(ããã)ãããã)", "ãããããããããã", 9, 18, 4);
-	x3(".*(ãã©)ã³ã»ã(ã³()ã·ã¥ã¿)ã¤ã³", "ãã©ã³ã»ãã³ã·ã¥ã¿ã¤ã³", 15, 27, 2);
-	x2("(^ã)", "ã", 0, 3);
-	x3("(ã)|(ã)", "ãã", 3, 6, 1);
-	x3("(^ã)|(ã)", "ãã", 3, 6, 2);
-	x3("(ã?)", "ããã", 0, 3, 1);
-	x3("(ã¾*)", "ã¾ã¾ã¾", 0, 9, 1);
-	x3("(ã¨*)", "", 0, 0, 1);
-	x3("(ã+)", "ããããããã", 0, 21, 1);
-	x3("(ãµ+|ã¸*)", "ãµãµãµã¸ã¸", 0, 9, 1);
-	x3("(ã+|ã?)", "ããããã", 0, 3, 1);
-	x3("(ããã)?", "ããã", 0, 9, 1);
-	x3("(ããã)*", "ããã", 0, 9, 1);
-	x3("(ããã)+", "ããã", 0, 9, 1);
-	x3("(ããã|ããã)+", "ããã", 0, 9, 1);
-	x3("([ãªã«ã¬][ããã]|ããã)+", "ããã", 0, 9, 1);
-	x3("((?i:ããã))", "ããã", 0, 9, 1);
-	x3("((?m:ã.ã))", "ã\nã", 0, 7, 1);
-	x3("((?=ãã)ã)", "ããã", 0, 3, 1);
-	x3("ããã|(.ããã)", "ãããã", 0, 12, 1);
-	x3("ã*(.)", "ããããã", 12, 15, 1);
-	x3("ã*?(.)", "ããããã", 0, 3, 1);
-	x3("ã*?(ã)", "ããããã", 12, 15, 1);
-	x3("[ããã]ã*(.)", "ãããããã", 15, 18, 1);
-	x3("(\\Aãã)ãã", "ãããã", 0, 6, 1);
-	n("(\\Aãã)ãã", "ããããã");
-	x3("(^ãã)ãã", "ãããã", 0, 6, 1);
-	n("(^ãã)ãã", "ããããã");
-	x3("ãã(ãã$)", "ãããã", 6, 12, 1);
-	n("ãã(ãã$)", "ããããã");
-	x2("(ç¡)\\1", "ç¡ç¡", 0, 6);
-	n("(ç¡)\\1", "ç¡æ­¦");
-	x2("(ç©º?)\\1", "ç©ºç©º", 0, 6);
-	x2("(ç©º?\?)\\1", "ç©ºç©º", 0, 0);
-	x2("(ç©º*)\\1", "ç©ºç©ºç©ºç©ºç©º", 0, 12);
-	x3("(ç©º*)\\1", "ç©ºç©ºç©ºç©ºç©º", 0, 6, 1);
-	x2("ã(ã*)\\1", "ããããã", 0, 15);
-	x2("ã(ã*)\\1", "ãã", 0, 3);
-	x2("(ã*)(ã*)\\1\\2", "ãããããããããã", 0, 30);
-	x2("(ã*)(ã*)\\2", "ããããããã", 0, 21);
-	x3("(ã*)(ã*)\\2", "ããããããã", 9, 15, 2);
-	x2("(((((((ã½*)ãº))))))ã´\\7", "ã½ã½ã½ãºã´ã½ã½ã½", 0, 24);
-	x3("(((((((ã½*)ãº))))))ã´\\7", "ã½ã½ã½ãºã´ã½ã½ã½", 0, 9, 7);
-	x2("(ã¯)(ã²)(ãµ)\\2\\1\\3", "ã¯ã²ãµã²ã¯ãµ", 0, 18);
-	x2("([ã-ã])\\1", "ãã", 0, 6);
-	x2("(?u)(\\w\\d\\s)\\1", "ã5 ã5 ", 0, 10);
-	n("(?u)(\\w\\d\\s)\\1", "ã5 ã5");
-	x2("(èª°ï¼|[ã-ã]{3})\\1", "èª°ï¼èª°ï¼", 0, 12);
-	x2("...(èª°ï¼|[ã-ã]{3})\\1", "ãaãèª°ï¼èª°ï¼", 0, 19);
-	x2("(èª°ï¼|[ã-ã]{3})\\1", "ãããããã", 0, 18);
-	x2("(^ã)\\1", "ãã", 0, 6);
-	n("(^ã)\\1", "ããã");
-	n("(ã$)\\1", "ãã");
-	n("(ãã\\Z)\\1", "ãã");
-	x2("(ã*\\Z)\\1", "ã", 3, 3);
-	x2(".(ã*\\Z)\\1", "ãã", 3, 6);
-	x3("(.(ããã)\\2)", "zãããããã", 0, 19, 1);
-	x3("(.(..\\d.)\\2)", "ã12341234", 0, 11, 1);
-	x2("((?i:ãvã))\\1", "ãvããvã", 0, 14);
-	x2("(?<æã>å¤|\\(\\g<æã>\\))", "((((((å¤))))))", 0, 15);
-	x2("\\A(?:\\g<é¿_1>|\\g<äº_2>|\\zçµäº  (?<é¿_1>è¦³|èª\\g<äº_2>èª)(?<äº_2>å¨|è©è©\\g<é¿_1>è©è©))$", "è©è©èªè©è©èªå¨èªè©è©èªè©è©", 0, 39);
-	x2("[[ã²ãµ]]", "ãµ", 0, 3);
-	x2("[[ããã]ã]", "ã", 0, 3);
-	n("[[^ã]]", "ã");
-	n("[^[ã]]", "ã");
-	x2("[^[^ã]]", "ã", 0, 3);
-	x2("[[ããã]&&ãã]", "ã", 0, 3);
-	n("[[ããã]&&ãã]", "ã");
-	n("[[ããã]&&ãã]", "ã");
-	x2("[ã-ã&&ã-ã&&ã-ã]", "ã", 0, 3);
-	n("[^ã-ã&&ã-ã&&ã-ã]", "ã");
-	x2("[[^ã&&ã]&&ã-ã]", "ã", 0, 3);
-	n("[[^ã&&ã]&&ã-ã]", "ã");
-	x2("[[^ã-ã&&ãããã]&&[^ã-ã]]", "ã", 0, 3);
-	n("[[^ã-ã&&ãããã]&&[^ã-ã]]", "ã");
-	x2("[^[^ããã]&&[^ããã]]", "ã", 0, 3);
-	x2("[^[^ããã]&&[^ããã]]", "ã", 0, 3);
-	n("[^[^ããã]&&[^ããã]]", "ã");
-	x2("[ã-&&-ã]", "-", 0, 1);
-	x2("[^[^a-zããã]&&[^bcdefgããã]q-w]", "ã", 0, 3);
-	x2("[^[^a-zããã]&&[^bcdefgããã]g-w]", "f", 0, 1);
-	x2("[^[^a-zããã]&&[^bcdefgããã]g-w]", "g", 0, 1);
-	n("[^[^a-zããã]&&[^bcdefgããã]g-w]", "2");
-	x2("a<b>ãã¼ã¸ã§ã³ã®ãã¦ã³ã­ã¼ã<\\/b>", "a<b>ãã¼ã¸ã§ã³ã®ãã¦ã³ã­ã¼ã</b>", 0, 44);
-	x2(".<b>ãã¼ã¸ã§ã³ã®ãã¦ã³ã­ã¼ã<\\/b>", "a<b>ãã¼ã¸ã§ã³ã®ãã¦ã³ã­ã¼ã</b>", 0, 44);
+	x2(".", "あ", 0, 3);
+	x2("..", "かき", 0, 6);
+	x2("(?u)\\w", "お", 0, 3);
+	n("(?u)\\W", "あ");
+	x2("(?u)[\\W]", "う$", 3, 4);
+	x2("\\S", "そ", 0, 3);
+	x2("\\S", "漢", 0, 3);
+	x2("\\b", "気 ", 0, 0);
+	x2("\\b", " ほ", 1, 1);
+	x2("\\B", "せそ ", 3, 3);
+	x2("\\B", "う ", 4, 4);
+	x2("\\B", " い", 0, 0);
+	x2("[たち]", "ち", 0, 3);
+	n("[なに]", "ぬ");
+	x2("[う-お]", "え", 0, 3);
+	n("[^け]", "け");
+	x2("(?u)[\\w]", "ね", 0, 3);
+	n("[\\d]", "ふ");
+	x2("[\\D]", "は", 0, 3);
+	n("[\\s]", "く");
+	x2("[\\S]", "へ", 0, 3);
+	x2("(?u)[\\w\\d]", "よ", 0, 3);
+	x2("(?u)[\\w\\d]", "   よ", 3, 6);
+	n("(?u)\\w鬼車", " 鬼車");
+	x2("(?u)鬼\\W車", "鬼 車", 0, 7);
+	x2("あ.い.う", "ああいいう", 0, 15);
+	x2("(?u).\\wう\\W..ぞ", "えうう うぞぞ", 0, 19);
+	x2("(?u)\\s\\wこここ", " ここここ", 0, 13);
+	x2("ああ.け", "ああけけ", 0, 12);
+	n(".い", "いえ");
+	x2(".お", "おお", 0, 6);
+	x2("^あ", "あ", 0, 3);
+	x2("^む$", "む", 0, 3);
+	x2("(?u)^\\w$", "に", 0, 3);
+	x2("(?u)^\\wかきくけこ$", "zかきくけこ", 0, 16);
+	x2("(?u)^\\w...うえお$", "zあいううえお", 0, 19);
+	x2("(?u)\\w\\w\\s\\Wおおお\\d", "aお  おおお4", 0, 16);
+	x2("\\Aたちつ", "たちつ", 0, 9);
+	x2("むめも\\Z", "むめも", 0, 9);
+	x2("かきく\\z", "かきく", 0, 9);
+	x2("かきく\\Z", "かきく\n", 0, 9);
+	x2("\\Gぽぴ", "ぽぴ", 0, 6);
+	n("\\Gえ", "うえお");
+	n("とて\\G", "とて");
+	n("まみ\\A", "まみ");
+	n("ま\\Aみ", "まみ");
+	x2("(?=せ)せ", "せ", 0, 3);
+	n("(?=う).", "い");
+	x2("(?!う)か", "か", 0, 3);
+	n("(?!と)あ", "と");
+	x2("(?i:あ)", "あ", 0, 3);
+	x2("(?i:ぶべ)", "ぶべ", 0, 6);
+	n("(?i:い)", "う");
+	x2("(?m:よ.)", "よ\n", 0, 4);
+	x2("(?m:.め)", "ま\nめ", 3, 7);
+	x2("あ?", "", 0, 0);
+	x2("変?", "化", 0, 0);
+	x2("変?", "変", 0, 3);
+	x2("量*", "", 0, 0);
+	x2("量*", "量", 0, 3);
+	x2("子*", "子子子", 0, 9);
+	x2("馬*", "鹿馬馬馬馬", 0, 0);
+	n("山+", "");
+	x2("河+", "河", 0, 3);
+	x2("時+", "時時時時", 0, 12);
+	x2("え+", "ええううう", 0, 6);
+	x2("う+", "おうううう", 3, 15);
+	x2(".?", "た", 0, 3);
+	x2(".*", "ぱぴぷぺ", 0, 12);
+	x2(".+", "ろ", 0, 3);
+	x2(".+", "いうえか\n", 0, 12);
+	x2("あ|い", "あ", 0, 3);
+	x2("あ|い", "い", 0, 3);
+	x2("あい|いう", "あい", 0, 6);
+	x2("あい|いう", "いう", 0, 6);
+	x2("を(?:かき|きく)", "をかき", 0, 9);
+	x2("を(?:かき|きく)け", "をきくけ", 0, 12);
+	x2("あい|(?:あう|あを)", "あを", 0, 6);
+	x2("あ|い|う", "えう", 3, 6);
+	x2("あ|い|うえ|おかき|く|けこさ|しすせ|そ|たち|つてとなに|ぬね", "しすせ", 0, 9);
+	n("あ|い|うえ|おかき|く|けこさ|しすせ|そ|たち|つてとなに|ぬね", "すせ");
+	x2("あ|^わ", "ぶあ", 3, 6);
+	x2("あ|^を", "をあ", 0, 3);
+	x2("鬼|\\G車", "け車鬼", 6, 9);
+	x2("鬼|\\G車", "車鬼", 0, 3);
+	x2("鬼|\\A車", "b車鬼", 4, 7);
+	x2("鬼|\\A車", "車", 0, 3);
+	x2("鬼|車\\Z", "車鬼", 3, 6);
+	x2("鬼|車\\Z", "車", 0, 3);
+	x2("鬼|車\\Z", "車\n", 0, 3);
+	x2("鬼|車\\z", "車鬼", 3, 6);
+	x2("鬼|車\\z", "車", 0, 3);
+	x2("(?u)\\w|\\s", "お", 0, 3);
+	x2("(?u)\\w|%", "%お", 0, 1);
+	x2("(?u)\\w|[&$]", "う&", 0, 3);
+	x2("[い-け]", "う", 0, 3);
+	x2("[い-け]|[^か-こ]", "あ", 0, 3);
+	x2("[い-け]|[^か-こ]", "か", 0, 3);
+	x2("[^あ]", "\n", 0, 1);
+	x2("(?:あ|[う-き])|いを", "うを", 0, 3);
+	x2("(?:あ|[う-き])|いを", "いを", 0, 6);
+	x2("あいう|(?=けけ)..ほ", "けけほ", 0, 9);
+	x2("あいう|(?!けけ)..ほ", "あいほ", 0, 9);
+	x2("(?=をあ)..あ|(?=をを)..あ", "ををあ", 0, 9);
+	x2("(?<=あ|いう)い", "いうい", 6, 9);
+	n("(?>あ|あいえ)う", "あいえう");
+	x2("(?>あいえ|あ)う", "あいえう", 0, 12);
+	x2("あ?|い", "あ", 0, 3);
+	x2("あ?|い", "い", 0, 0);
+	x2("あ?|い", "", 0, 0);
+	x2("あ*|い", "ああ", 0, 6);
+	x2("あ*|い*", "いあ", 0, 0);
+	x2("あ*|い*", "あい", 0, 3);
+	x2("[aあ]*|い*", "aあいいい", 0, 4);
+	x2("あ+|い*", "", 0, 0);
+	x2("あ+|い*", "いいい", 0, 9);
+	x2("あ+|い*", "あいいい", 0, 3);
+	x2("あ+|い*", "aあいいい", 0, 0);
+	n("あ+|い+", "");
+	x2("(あ|い)?", "い", 0, 3);
+	x2("(あ|い)*", "いあ", 0, 6);
+	x2("(あ|い)+", "いあい", 0, 9);
+	x2("(あい|うあ)+", "うああいうえ", 0, 12);
+	x2("(あい|うえ)+", "うああいうえ", 6, 18);
+	x2("(あい|うあ)+", "ああいうあ", 3, 15);
+	x2("(あい|うあ)+", "あいをうあ", 0, 6);
+	x2("(あい|うあ)+", "$$zzzzあいをうあ", 6, 12);
+	x2("(あ|いあい)+", "あいあいあ", 0, 15);
+	x2("(あ|いあい)+", "いあ", 3, 6);
+	x2("(あ|いあい)+", "いあああいあ", 3, 12);
+	x2("(?:あ|い)(?:あ|い)", "あい", 0, 6);
+	x2("(?:あ*|い*)(?:あ*|い*)", "あああいいい", 0, 9);
+	x2("(?:あ*|い*)(?:あ+|い+)", "あああいいい", 0, 18);
+	x2("(?:あ+|い+){2}", "あああいいい", 0, 18);
+	x2("(?:あ+|い+){1,2}", "あああいいい", 0, 18);
+	x2("(?:あ+|\\Aい*)うう", "うう", 0, 6);
+	n("(?:あ+|\\Aい*)うう", "あいうう");
+	x2("(?:^あ+|い+)*う", "ああいいいあいう", 18, 24);
+	x2("(?:^あ+|い+)*う", "ああいいいいう", 0, 21);
+	x2("う{0,}", "うううう", 0, 12);
+	x2("あ|(?i)c", "C", 0, 1);
+	x2("(?i)c|あ", "C", 0, 1);
+	x2("(?i:あ)|a", "a", 0, 1);
+	n("(?i:あ)|a", "A");
+	x2("[あいう]?", "あいう", 0, 3);
+	x2("[あいう]*", "あいう", 0, 9);
+	x2("[^あいう]*", "あいう", 0, 0);
+	n("[^あいう]+", "あいう");
+	x2("あ?\?", "あああ", 0, 0);
+	x2("いあ?\?い", "いあい", 0, 9);
+	x2("あ*?", "あああ", 0, 0);
+	x2("いあ*?", "いああ", 0, 3);
+	x2("いあ*?い", "いああい", 0, 12);
+	x2("あ+?", "あああ", 0, 3);
+	x2("いあ+?", "いああ", 0, 6);
+	x2("いあ+?い", "いああい", 0, 12);
+	x2("(?:天?)?\?", "天", 0, 0);
+	x2("(?:天?\?)?", "天", 0, 0);
+	x2("(?:夢?)+?", "夢夢夢", 0, 3);
+	x2("(?:風+)?\?", "風風風", 0, 0);
+	x2("(?:雪+)?\?霜", "雪雪雪霜", 0, 12);
+	x2("(?:あい)?{2}", "", 0, 0);
+	x2("(?:鬼車)?{2}", "鬼車鬼車鬼", 0, 12);
+	x2("(?:鬼車)*{0}", "鬼車鬼車鬼", 0, 0);
+	x2("(?:鬼車){3,}", "鬼車鬼車鬼車鬼車", 0, 24);
+	n("(?:鬼車){3,}", "鬼車鬼車");
+	x2("(?:鬼車){2,4}", "鬼車鬼車鬼車", 0, 18);
+	x2("(?:鬼車){2,4}", "鬼車鬼車鬼車鬼車鬼車", 0, 24);
+	x2("(?:鬼車){2,4}?", "鬼車鬼車鬼車鬼車鬼車", 0, 12);
+	x2("(?:鬼車){,}", "鬼車{,}", 0, 9);
+	x2("(?:かきく)+?{2}", "かきくかきくかきく", 0, 18);
+	x3("(火)", "火", 0, 3, 1);
+	x3("(火水)", "火水", 0, 6, 1);
+	x2("((時間))", "時間", 0, 6);
+	x3("((風水))", "風水", 0, 6, 1);
+	x3("((昨日))", "昨日", 0, 6, 2);
+	x3("((((((((((((((((((((量子))))))))))))))))))))", "量子", 0, 6, 20);
+	x3("(あい)(うえ)", "あいうえ", 0, 6, 1);
+	x3("(あい)(うえ)", "あいうえ", 6, 12, 2);
+	x3("()(あ)いう(えおか)きくけこ", "あいうえおかきくけこ", 9, 18, 3);
+	x3("(()(あ)いう(えおか)きくけこ)", "あいうえおかきくけこ", 9, 18, 4);
+	x3(".*(フォ)ン・マ(ン()シュタ)イン", "フォン・マンシュタイン", 15, 27, 2);
+	x2("(^あ)", "あ", 0, 3);
+	x3("(あ)|(あ)", "いあ", 3, 6, 1);
+	x3("(^あ)|(あ)", "いあ", 3, 6, 2);
+	x3("(あ?)", "あああ", 0, 3, 1);
+	x3("(ま*)", "ままま", 0, 9, 1);
+	x3("(と*)", "", 0, 0, 1);
+	x3("(る+)", "るるるるるるる", 0, 21, 1);
+	x3("(ふ+|へ*)", "ふふふへへ", 0, 9, 1);
+	x3("(あ+|い?)", "いいいああ", 0, 3, 1);
+	x3("(あいう)?", "あいう", 0, 9, 1);
+	x3("(あいう)*", "あいう", 0, 9, 1);
+	x3("(あいう)+", "あいう", 0, 9, 1);
+	x3("(さしす|あいう)+", "あいう", 0, 9, 1);
+	x3("([なにぬ][かきく]|かきく)+", "かきく", 0, 9, 1);
+	x3("((?i:あいう))", "あいう", 0, 9, 1);
+	x3("((?m:あ.う))", "あ\nう", 0, 7, 1);
+	x3("((?=あん)あ)", "あんい", 0, 3, 1);
+	x3("あいう|(.あいえ)", "んあいえ", 0, 12, 1);
+	x3("あ*(.)", "ああああん", 12, 15, 1);
+	x3("あ*?(.)", "ああああん", 0, 3, 1);
+	x3("あ*?(ん)", "ああああん", 12, 15, 1);
+	x3("[いうえ]あ*(.)", "えああああん", 15, 18, 1);
+	x3("(\\Aいい)うう", "いいうう", 0, 6, 1);
+	n("(\\Aいい)うう", "んいいうう");
+	x3("(^いい)うう", "いいうう", 0, 6, 1);
+	n("(^いい)うう", "んいいうう");
+	x3("ろろ(るる$)", "ろろるる", 6, 12, 1);
+	n("ろろ(るる$)", "ろろるるる");
+	x2("(無)\\1", "無無", 0, 6);
+	n("(無)\\1", "無武");
+	x2("(空?)\\1", "空空", 0, 6);
+	x2("(空?\?)\\1", "空空", 0, 0);
+	x2("(空*)\\1", "空空空空空", 0, 12);
+	x3("(空*)\\1", "空空空空空", 0, 6, 1);
+	x2("あ(い*)\\1", "あいいいい", 0, 15);
+	x2("あ(い*)\\1", "あい", 0, 3);
+	x2("(あ*)(い*)\\1\\2", "あああいいあああいい", 0, 30);
+	x2("(あ*)(い*)\\2", "あああいいいい", 0, 21);
+	x3("(あ*)(い*)\\2", "あああいいいい", 9, 15, 2);
+	x2("(((((((ぽ*)ぺ))))))ぴ\\7", "ぽぽぽぺぴぽぽぽ", 0, 24);
+	x3("(((((((ぽ*)ぺ))))))ぴ\\7", "ぽぽぽぺぴぽぽぽ", 0, 9, 7);
+	x2("(は)(ひ)(ふ)\\2\\1\\3", "はひふひはふ", 0, 18);
+	x2("([き-け])\\1", "くく", 0, 6);
+	x2("(?u)(\\w\\d\\s)\\1", "あ5 あ5 ", 0, 10);
+	n("(?u)(\\w\\d\\s)\\1", "あ5 あ5");
+	x2("(誰？|[あ-う]{3})\\1", "誰？誰？", 0, 12);
+	x2("...(誰？|[あ-う]{3})\\1", "あaあ誰？誰？", 0, 19);
+	x2("(誰？|[あ-う]{3})\\1", "ういうういう", 0, 18);
+	x2("(^こ)\\1", "ここ", 0, 6);
+	n("(^む)\\1", "めむむ");
+	n("(あ$)\\1", "ああ");
+	n("(あい\\Z)\\1", "あい");
+	x2("(あ*\\Z)\\1", "あ", 3, 3);
+	x2(".(あ*\\Z)\\1", "いあ", 3, 6);
+	x3("(.(やいゆ)\\2)", "zやいゆやいゆ", 0, 19, 1);
+	x3("(.(..\\d.)\\2)", "あ12341234", 0, 11, 1);
+	x2("((?i:あvず))\\1", "あvずあvず", 0, 14);
+	x2("(?<愚か>変|\\(\\g<愚か>\\))", "((((((変))))))", 0, 15);
+	x2("\\A(?:\\g<阿_1>|\\g<云_2>|\\z終了  (?<阿_1>観|自\\g<云_2>自)(?<云_2>在|菩薩\\g<阿_1>菩薩))$", "菩薩自菩薩自在自菩薩自菩薩", 0, 39);
+	x2("[[ひふ]]", "ふ", 0, 3);
+	x2("[[いおう]か]", "か", 0, 3);
+	n("[[^あ]]", "あ");
+	n("[^[あ]]", "あ");
+	x2("[^[^あ]]", "あ", 0, 3);
+	x2("[[かきく]&&きく]", "く", 0, 3);
+	n("[[かきく]&&きく]", "か");
+	n("[[かきく]&&きく]", "け");
+	x2("[あ-ん&&い-を&&う-ゑ]", "ゑ", 0, 3);
+	n("[^あ-ん&&い-を&&う-ゑ]", "ゑ");
+	x2("[[^あ&&あ]&&あ-ん]", "い", 0, 3);
+	n("[[^あ&&あ]&&あ-ん]", "あ");
+	x2("[[^あ-ん&&いうえお]&&[^う-か]]", "き", 0, 3);
+	n("[[^あ-ん&&いうえお]&&[^う-か]]", "い");
+	x2("[^[^あいう]&&[^うえお]]", "う", 0, 3);
+	x2("[^[^あいう]&&[^うえお]]", "え", 0, 3);
+	n("[^[^あいう]&&[^うえお]]", "か");
+	x2("[あ-&&-あ]", "-", 0, 1);
+	x2("[^[^a-zあいう]&&[^bcdefgうえお]q-w]", "え", 0, 3);
+	x2("[^[^a-zあいう]&&[^bcdefgうえお]g-w]", "f", 0, 1);
+	x2("[^[^a-zあいう]&&[^bcdefgうえお]g-w]", "g", 0, 1);
+	n("[^[^a-zあいう]&&[^bcdefgうえお]g-w]", "2");
+	x2("a<b>バージョンのダウンロード<\\/b>", "a<b>バージョンのダウンロード</b>", 0, 44);
+	x2(".<b>バージョンのダウンロード<\\/b>", "a<b>バージョンのダウンロード</b>", 0, 44);
 	fprintf(stdout,
 		"\nRESULT   SUCC: %d,  FAIL: %d,  ERROR: %d      (by Onigmo %s)\n",
