Blame SOURCES/pcre-8.33-RC1-Fix-segfault-when-pcre_dfa_exec-is-called-with-an-ou.patch

1e2217
From f4176cfb682170c5e9246949df653c82200d7259 Mon Sep 17 00:00:00 2001
1e2217
From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
1e2217
Date: Wed, 15 May 2013 16:53:18 +0000
1e2217
Subject: [PATCH] Fix segfault when pcre_dfa_exec() is called with an output
1e2217
 vector of length less than 2.
1e2217
1e2217
git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1334 2f5784b3-3f2a-0410-8824-cb99058d5e15
1e2217
1e2217
Petr Pisar: Port to 8.33-RC1.
1e2217
<https://bugzilla.redhat.com/show_bug.cgi?id=963284>
1e2217
1e2217
diff --git a/pcre_dfa_exec.c b/pcre_dfa_exec.c
1e2217
index 8211760..02bd3f0 100644
1e2217
--- a/pcre_dfa_exec.c
1e2217
+++ b/pcre_dfa_exec.c
1e2217
@@ -636,7 +636,7 @@ for (;;)
1e2217
     const pcre_uchar *code;
1e2217
     int state_offset = current_state->offset;
1e2217
     int codevalue, rrc;
1e2217
-    unsigned int count;
1e2217
+    int count;
1e2217
 
1e2217
 #ifdef PCRE_DEBUG
1e2217
     printf ("%.*sProcessing state %d c=", rlevel*2-2, SP, state_offset);
1e2217
@@ -1255,7 +1255,7 @@ for (;;)
1e2217
               (d != OP_ANY || !IS_NEWLINE(ptr)) &&
1e2217
               ((ctypes[c] & toptable1[d]) ^ toptable2[d]) != 0))
1e2217
           {
1e2217
-          if (++count >= GET2(code, 1))
1e2217
+          if (++count >= (int)GET2(code, 1))
1e2217
             { ADD_NEW(state_offset + 1 + IMM2_SIZE + 1, 0); }
1e2217
           else
1e2217
             { ADD_NEW(state_offset, count); }
1e2217
@@ -1289,7 +1289,7 @@ for (;;)
1e2217
             active_count--;           /* Remove non-match possibility */
1e2217
             next_active_state--;
1e2217
             }
1e2217
-          if (++count >= GET2(code, 1))
1e2217
+          if (++count >= (int)GET2(code, 1))
1e2217
             { ADD_NEW(state_offset + 2 + IMM2_SIZE, 0); }
1e2217
           else
1e2217
             { ADD_NEW(state_offset, count); }
1e2217
@@ -1903,7 +1903,7 @@ for (;;)
1e2217
             active_count--;           /* Remove non-match possibility */
1e2217
             next_active_state--;
1e2217
             }
1e2217
-          if (++count >= GET2(code, 1))
1e2217
+          if (++count >= (int)GET2(code, 1))
1e2217
             { ADD_NEW(state_offset + 1 + IMM2_SIZE + 3, 0); }
1e2217
           else
1e2217
             { ADD_NEW(state_offset, count); }
1e2217
@@ -1942,7 +1942,7 @@ for (;;)
1e2217
           }
1e2217
         if (nptr >= end_subject && (md->moptions & PCRE_PARTIAL_HARD) != 0)
1e2217
             reset_could_continue = TRUE;
1e2217
-        if (++count >= GET2(code, 1))
1e2217
+        if (++count >= (int)GET2(code, 1))
1e2217
           { ADD_NEW_DATA(-(state_offset + 2 + IMM2_SIZE), 0, ncount); }
1e2217
         else
1e2217
           { ADD_NEW_DATA(-state_offset, count, ncount); }
1e2217
@@ -1984,7 +1984,7 @@ for (;;)
1e2217
             active_count--;           /* Remove non-match possibility */
1e2217
             next_active_state--;
1e2217
             }
1e2217
-          if (++count >= GET2(code, 1))
1e2217
+          if (++count >= (int)GET2(code, 1))
1e2217
             { ADD_NEW_DATA(-(state_offset + 2 + IMM2_SIZE), 0, ncount); }
1e2217
           else
1e2217
             { ADD_NEW_DATA(-state_offset, count, ncount); }
1e2217
@@ -2024,7 +2024,7 @@ for (;;)
1e2217
             active_count--;           /* Remove non-match possibility */
1e2217
             next_active_state--;
1e2217
             }
1e2217
-          if (++count >= GET2(code, 1))
1e2217
+          if (++count >= (int)GET2(code, 1))
1e2217
             { ADD_NEW_DATA(-(state_offset + 2 + IMM2_SIZE), 0, 0); }
1e2217
           else
1e2217
             { ADD_NEW_DATA(-state_offset, count, 0); }
1e2217
@@ -2061,7 +2061,7 @@ for (;;)
1e2217
             active_count--;           /* Remove non-match possibility */
1e2217
             next_active_state--;
1e2217
             }
1e2217
-          if (++count >= GET2(code, 1))
1e2217
+          if (++count >= (int)GET2(code, 1))
1e2217
             { ADD_NEW_DATA(-(state_offset + 2 + IMM2_SIZE), 0, 0); }
1e2217
           else
1e2217
             { ADD_NEW_DATA(-state_offset, count, 0); }
1e2217
@@ -2431,7 +2431,7 @@ for (;;)
1e2217
           }
1e2217
         if ((c == d || c == otherd) == (codevalue < OP_NOTSTAR))
1e2217
           {
1e2217
-          if (++count >= GET2(code, 1))
1e2217
+          if (++count >= (int)GET2(code, 1))
1e2217
             { ADD_NEW(state_offset + dlen + 1 + IMM2_SIZE, 0); }
1e2217
           else
1e2217
             { ADD_NEW(state_offset, count); }
1e2217
@@ -2480,7 +2480,7 @@ for (;;)
1e2217
             active_count--;             /* Remove non-match possibility */
1e2217
             next_active_state--;
1e2217
             }
1e2217
-          if (++count >= GET2(code, 1))
1e2217
+          if (++count >= (int)GET2(code, 1))
1e2217
             { ADD_NEW(state_offset + dlen + 1 + IMM2_SIZE, 0); }
1e2217
           else
1e2217
             { ADD_NEW(state_offset, count); }
1e2217
@@ -2553,11 +2553,11 @@ for (;;)
1e2217
           case OP_CRRANGE:
1e2217
           case OP_CRMINRANGE:
1e2217
           count = current_state->count;  /* Already matched */
1e2217
-          if (count >= GET2(ecode, 1))
1e2217
+          if (count >= (int)GET2(ecode, 1))
1e2217
             { ADD_ACTIVE(next_state_offset + 1 + 2 * IMM2_SIZE, 0); }
1e2217
           if (isinclass)
1e2217
             {
1e2217
-            unsigned int max = GET2(ecode, 1 + IMM2_SIZE);
1e2217
+            int max = (int)GET2(ecode, 1 + IMM2_SIZE);
1e2217
             if (++count >= max && max != 0)   /* Max 0 => no limit */
1e2217
               { ADD_NEW(next_state_offset + 1 + 2 * IMM2_SIZE, 0); }
1e2217
             else
1e2217
diff --git a/pcretest.c b/pcretest.c
1e2217
index 25f3853..20dc0f1 100644
1e2217
--- a/pcretest.c
1e2217
+++ b/pcretest.c
1e2217
@@ -5043,7 +5043,7 @@ while (!done)
1e2217
           DFA_WS_DIMENSION);
1e2217
         if (count == 0)
1e2217
           {
1e2217
-          fprintf(outfile, "Matched, but too many subsidiary matches\n");
1e2217
+          fprintf(outfile, "Matched, but offsets vector is too small to show all matches\n");
1e2217
           count = use_size_offsets/2;
1e2217
           }
1e2217
         }
1e2217
diff --git a/testdata/testinput8 b/testdata/testinput8
1e2217
index e235445..d91013b 100644
1e2217
--- a/testdata/testinput8
1e2217
+++ b/testdata/testinput8
1e2217
@@ -4798,4 +4798,7 @@
1e2217
     xxxxxxxxabcd
1e2217
     xx\xa0xxxxxabcd 
1e2217
 
1e2217
+/abcd/
1e2217
+    abcd\O0
1e2217
+
1e2217
 /-- End of testinput8 --/
1e2217
diff --git a/testdata/testoutput10 b/testdata/testoutput10
1e2217
index 9ee0f76..0e04205 100644
1e2217
--- a/testdata/testoutput10
1e2217
+++ b/testdata/testoutput10
1e2217
@@ -813,7 +813,7 @@ No match
1e2217
     11111111111111111111111111111111111111111111111111111111111111111111111
1e2217
 No match
1e2217
     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
-Matched, but too many subsidiary matches
1e2217
+Matched, but offsets vector is too small to show all matches
1e2217
  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
  1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
  2: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
@@ -841,7 +841,7 @@ Matched, but too many subsidiary matches
1e2217
     11111111111111111111111111111111111111111111111111111111111111111111111
1e2217
 No match
1e2217
     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
-Matched, but too many subsidiary matches
1e2217
+Matched, but offsets vector is too small to show all matches
1e2217
  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
  1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
  2: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
@@ -869,7 +869,7 @@ Matched, but too many subsidiary matches
1e2217
     11111111111111111111111111111111111111111111111111111111111111111111111
1e2217
 No match
1e2217
     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
-Matched, but too many subsidiary matches
1e2217
+Matched, but offsets vector is too small to show all matches
1e2217
  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
  1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
  2: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
@@ -897,7 +897,7 @@ Matched, but too many subsidiary matches
1e2217
     11111111111111111111111111111111111111111111111111111111111111111111111
1e2217
 No match
1e2217
     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
-Matched, but too many subsidiary matches
1e2217
+Matched, but offsets vector is too small to show all matches
1e2217
  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
  1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
  2: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
@@ -925,7 +925,7 @@ Matched, but too many subsidiary matches
1e2217
     11111111111111111111111111111111111111111111111111111111111111111111111
1e2217
 No match
1e2217
     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
-Matched, but too many subsidiary matches
1e2217
+Matched, but offsets vector is too small to show all matches
1e2217
  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
  1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
  2: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
diff --git a/testdata/testoutput8 b/testdata/testoutput8
1e2217
index 527ba4d..75affbe 100644
1e2217
--- a/testdata/testoutput8
1e2217
+++ b/testdata/testoutput8
1e2217
@@ -49,7 +49,7 @@ No match
1e2217
 16: a
1e2217
 17: 
1e2217
     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
1e2217
-Matched, but too many subsidiary matches
1e2217
+Matched, but offsets vector is too small to show all matches
1e2217
  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
  1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
  2: aaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
@@ -3260,7 +3260,7 @@ No match
1e2217
 
1e2217
 /(.*)(\d*)/
1e2217
     I have 2 numbers: 53147
1e2217
-Matched, but too many subsidiary matches
1e2217
+Matched, but offsets vector is too small to show all matches
1e2217
  0: I have 2 numbers: 53147
1e2217
  1: I have 2 numbers: 5314
1e2217
  2: I have 2 numbers: 531
1e2217
@@ -3295,7 +3295,7 @@ Matched, but too many subsidiary matches
1e2217
  
1e2217
 /(.*?)(\d*)/
1e2217
     I have 2 numbers: 53147
1e2217
-Matched, but too many subsidiary matches
1e2217
+Matched, but offsets vector is too small to show all matches
1e2217
  0: I have 2 numbers: 53147
1e2217
  1: I have 2 numbers: 5314
1e2217
  2: I have 2 numbers: 531
1e2217
@@ -7848,7 +7848,7 @@ Error -26 (nested recursion at the same subject position)
1e2217
 
1e2217
 /(a+)/
1e2217
     \O6aaaa
1e2217
-Matched, but too many subsidiary matches
1e2217
+Matched, but offsets vector is too small to show all matches
1e2217
  0: aaaa
1e2217
  1: aaa
1e2217
  2: aa
1e2217
@@ -8016,4 +8016,8 @@ Error -30 (invalid data in workspace for DFA restart)
1e2217
  0: xx\xa0xxxxxabcd
1e2217
  1: xx\xa0xxxxxabc
1e2217
 
1e2217
+/abcd/
1e2217
+    abcd\O0
1e2217
+Matched, but offsets vector is too small to show all matches
1e2217
+
1e2217
 /-- End of testinput8 --/
1e2217
diff --git a/testdata/testoutput9 b/testdata/testoutput9
1e2217
index 95cd618..0bb101a 100644
1e2217
--- a/testdata/testoutput9
1e2217
+++ b/testdata/testoutput9
1e2217
@@ -434,7 +434,7 @@ No match
1e2217
 
1e2217
 /\D*/8
1e2217
   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
-Matched, but too many subsidiary matches
1e2217
+Matched, but offsets vector is too small to show all matches
1e2217
  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
  1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
  2: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1e2217
@@ -460,7 +460,7 @@ Matched, but too many subsidiary matches
1e2217
 
1e2217
 /\D*/8
1e2217
   \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
1e2217
-Matched, but too many subsidiary matches
1e2217
+Matched, but offsets vector is too small to show all matches
1e2217
  0: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
1e2217
  1: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
1e2217
  2: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
1e2217
-- 
1e2217
1.8.1.4
1e2217