/[pcre]/code/trunk/testdata/testoutput18
ViewVC logotype

Contents of /code/trunk/testdata/testoutput18

Parent Directory Parent Directory | Revision Log Revision Log


Revision 823 - (show annotations) (download)
Sat Dec 24 17:43:22 2011 UTC (2 years, 7 months ago) by ph10
Original Path: code/branches/pcre16/testdata/testoutput18
File size: 18680 byte(s)
Tidy pcretest source code and some 8/16 messages. Add "16" error codes.

1 /-- This set of tests is for UTF-16 support, and is relevant only to the 16-bit
2 library. --/
3
4 /xxx/8?DZSS
5 **Failed: invalid UTF-8 string cannot be converted to UTF-16
6
7 /abc/8
8 ]
9 **Failed: invalid UTF-8 string cannot be converted to UTF-16
10
11 /X(\C{3})/8
12 X\x{11234}Y
13 0: X\x{11234}Y
14 1: \x{11234}Y
15
16 /X(\C{4})/8
17 X\x{11234}YZ
18 0: X\x{11234}YZ
19 1: \x{11234}YZ
20
21 /X\C*/8
22 XYZabcdce
23 0: XYZabcdce
24
25 /X\C*?/8
26 XYZabcde
27 0: X
28
29 /X\C{3,5}/8
30 Xabcdefg
31 0: Xabcde
32 X\x{11234}Y
33 0: X\x{11234}Y
34 X\x{11234}YZ
35 0: X\x{11234}YZ
36 X\x{11234}\x{512}
37 0: X\x{11234}\x{512}
38 X\x{11234}\x{512}YZ
39 0: X\x{11234}\x{512}YZ
40 X\x{11234}\x{512}\x{11234}Z
41 0: X\x{11234}\x{512}\x{11234}
42
43 /X\C{3,5}?/8
44 Xabcdefg
45 0: Xabc
46 X\x{11234}Y
47 0: X\x{11234}Y
48 X\x{11234}YZ
49 0: X\x{11234}Y
50 X\x{11234}\x{512}YZ
51 0: X\x{11234}\x{512}
52 *** Failers
53 No match
54 X\x{11234}
55 No match
56
57 /a\Cb/8
58 aXb
59 0: aXb
60 a\nb
61 0: a\x{0a}b
62
63 /a\C\Cb/8
64 a\x{12257}b
65 0: a\x{12257}b
66 ** Failers
67 No match
68 a\x{100}b
69 No match
70
71 /ab\Cde/8
72 abXde
73 0: abXde
74
75 /-- Check maximum character size --/
76
77 /\x{ffff}/8DZ
78 ------------------------------------------------------------------
79 Bra
80 \x{ffff}
81 Ket
82 End
83 ------------------------------------------------------------------
84 Capturing subpattern count = 0
85 Options: utf
86 First char = \x{ffff}
87 No need char
88
89 /\x{10000}/8DZ
90 ------------------------------------------------------------------
91 Bra
92 \x{10000}
93 Ket
94 End
95 ------------------------------------------------------------------
96 Capturing subpattern count = 0
97 Options: utf
98 First char = \x{d800}
99 Need char = \x{dc00}
100
101 /\x{100}/8DZ
102 ------------------------------------------------------------------
103 Bra
104 \x{100}
105 Ket
106 End
107 ------------------------------------------------------------------
108 Capturing subpattern count = 0
109 Options: utf
110 First char = \x{100}
111 No need char
112
113 /\x{1000}/8DZ
114 ------------------------------------------------------------------
115 Bra
116 \x{1000}
117 Ket
118 End
119 ------------------------------------------------------------------
120 Capturing subpattern count = 0
121 Options: utf
122 First char = \x{1000}
123 No need char
124
125 /\x{10000}/8DZ
126 ------------------------------------------------------------------
127 Bra
128 \x{10000}
129 Ket
130 End
131 ------------------------------------------------------------------
132 Capturing subpattern count = 0
133 Options: utf
134 First char = \x{d800}
135 Need char = \x{dc00}
136
137 /\x{100000}/8DZ
138 ------------------------------------------------------------------
139 Bra
140 \x{100000}
141 Ket
142 End
143 ------------------------------------------------------------------
144 Capturing subpattern count = 0
145 Options: utf
146 First char = \x{dbc0}
147 Need char = \x{dc00}
148
149 /\x{10ffff}/8DZ
150 ------------------------------------------------------------------
151 Bra
152 \x{10ffff}
153 Ket
154 End
155 ------------------------------------------------------------------
156 Capturing subpattern count = 0
157 Options: utf
158 First char = \x{dbff}
159 Need char = \x{dfff}
160
161 /[\x{ff}]/8DZ
162 ------------------------------------------------------------------
163 Bra
164 \xff
165 Ket
166 End
167 ------------------------------------------------------------------
168 Capturing subpattern count = 0
169 Options: utf
170 First char = \x{ff}
171 No need char
172
173 /[\x{100}]/8DZ
174 ------------------------------------------------------------------
175 Bra
176 \x{100}
177 Ket
178 End
179 ------------------------------------------------------------------
180 Capturing subpattern count = 0
181 Options: utf
182 First char = \x{100}
183 No need char
184
185 /\x80/8DZ
186 ------------------------------------------------------------------
187 Bra
188 \x80
189 Ket
190 End
191 ------------------------------------------------------------------
192 Capturing subpattern count = 0
193 Options: utf
194 First char = \x{80}
195 No need char
196
197 /\xff/8DZ
198 ------------------------------------------------------------------
199 Bra
200 \xff
201 Ket
202 End
203 ------------------------------------------------------------------
204 Capturing subpattern count = 0
205 Options: utf
206 First char = \x{ff}
207 No need char
208
209 /\x{D55c}\x{ad6d}\x{C5B4}/DZ8
210 ------------------------------------------------------------------
211 Bra
212 \x{d55c}\x{ad6d}\x{c5b4}
213 Ket
214 End
215 ------------------------------------------------------------------
216 Capturing subpattern count = 0
217 Options: utf
218 First char = \x{d55c}
219 Need char = \x{c5b4}
220 \x{D55c}\x{ad6d}\x{C5B4}
221 0: \x{d55c}\x{ad6d}\x{c5b4}
222
223 /\x{65e5}\x{672c}\x{8a9e}/DZ8
224 ------------------------------------------------------------------
225 Bra
226 \x{65e5}\x{672c}\x{8a9e}
227 Ket
228 End
229 ------------------------------------------------------------------
230 Capturing subpattern count = 0
231 Options: utf
232 First char = \x{65e5}
233 Need char = \x{8a9e}
234 \x{65e5}\x{672c}\x{8a9e}
235 0: \x{65e5}\x{672c}\x{8a9e}
236
237 /\x{80}/DZ8
238 ------------------------------------------------------------------
239 Bra
240 \x80
241 Ket
242 End
243 ------------------------------------------------------------------
244 Capturing subpattern count = 0
245 Options: utf
246 First char = \x{80}
247 No need char
248
249 /\x{084}/DZ8
250 ------------------------------------------------------------------
251 Bra
252 \x84
253 Ket
254 End
255 ------------------------------------------------------------------
256 Capturing subpattern count = 0
257 Options: utf
258 First char = \x{84}
259 No need char
260
261 /\x{104}/DZ8
262 ------------------------------------------------------------------
263 Bra
264 \x{104}
265 Ket
266 End
267 ------------------------------------------------------------------
268 Capturing subpattern count = 0
269 Options: utf
270 First char = \x{104}
271 No need char
272
273 /\x{861}/DZ8
274 ------------------------------------------------------------------
275 Bra
276 \x{861}
277 Ket
278 End
279 ------------------------------------------------------------------
280 Capturing subpattern count = 0
281 Options: utf
282 First char = \x{861}
283 No need char
284
285 /\x{212ab}/DZ8
286 ------------------------------------------------------------------
287 Bra
288 \x{212ab}
289 Ket
290 End
291 ------------------------------------------------------------------
292 Capturing subpattern count = 0
293 Options: utf
294 First char = \x{d844}
295 Need char = \x{deab}
296
297 /-- This one is here not because it's different to Perl, but because the way
298 the captured single-byte is displayed. (In Perl it becomes a character, and you
299 can't tell the difference.) --/
300
301 /X(\C)(.*)/8
302 X\x{1234}
303 0: X\x{1234}
304 1: \x{1234}
305 2:
306 X\nabc
307 0: X\x{0a}abc
308 1: \x{0a}
309 2: abc
310
311 /-- This one is here because Perl gives out a grumbly error message (quite
312 correctly, but that messes up comparisons). --/
313
314 /a\Cb/8
315 *** Failers
316 No match
317 a\x{100}b
318 0: a\x{100}b
319
320 /[^ab\xC0-\xF0]/8SDZ
321 ------------------------------------------------------------------
322 Bra
323 [\x00-`c-\xbf\xf1-\xff] (neg)
324 Ket
325 End
326 ------------------------------------------------------------------
327 Capturing subpattern count = 0
328 Options: utf
329 No first char
330 No need char
331 Subject length lower bound = 1
332 Starting byte set: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x09 \x0a
333 \x0b \x0c \x0d \x0e \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19
334 \x1a \x1b \x1c \x1d \x1e \x1f \x20 ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4
335 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y
336 Z [ \ ] ^ _ ` c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f
337 \x80 \x81 \x82 \x83 \x84 \x85 \x86 \x87 \x88 \x89 \x8a \x8b \x8c \x8d \x8e
338 \x8f \x90 \x91 \x92 \x93 \x94 \x95 \x96 \x97 \x98 \x99 \x9a \x9b \x9c \x9d
339 \x9e \x9f \xa0 \xa1 \xa2 \xa3 \xa4 \xa5 \xa6 \xa7 \xa8 \xa9 \xaa \xab \xac
340 \xad \xae \xaf \xb0 \xb1 \xb2 \xb3 \xb4 \xb5 \xb6 \xb7 \xb8 \xb9 \xba \xbb
341 \xbc \xbd \xbe \xbf \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 \xfa \xfb
342 \xfc \xfd \xfe \xff
343 \x{f1}
344 0: \x{f1}
345 \x{bf}
346 0: \x{bf}
347 \x{100}
348 0: \x{100}
349 \x{1000}
350 0: \x{1000}
351 *** Failers
352 0: *
353 \x{c0}
354 No match
355 \x{f0}
356 No match
357
358 /Ā{3,4}/8SDZ
359 ------------------------------------------------------------------
360 Bra
361 \x{100}{3}
362 \x{100}?
363 Ket
364 End
365 ------------------------------------------------------------------
366 Capturing subpattern count = 0
367 Options: utf
368 First char = \x{100}
369 Need char = \x{100}
370 Subject length lower bound = 3
371 No set of starting bytes
372 \x{100}\x{100}\x{100}\x{100\x{100}
373 0: \x{100}\x{100}\x{100}
374
375 /(\x{100}+|x)/8SDZ
376 ------------------------------------------------------------------
377 Bra
378 CBra 1
379 \x{100}+
380 Alt
381 x
382 Ket
383 Ket
384 End
385 ------------------------------------------------------------------
386 Capturing subpattern count = 1
387 Options: utf
388 No first char
389 No need char
390 Subject length lower bound = 1
391 Starting byte set: x \xff
392
393 /(\x{100}*a|x)/8SDZ
394 ------------------------------------------------------------------
395 Bra
396 CBra 1
397 \x{100}*+
398 a
399 Alt
400 x
401 Ket
402 Ket
403 End
404 ------------------------------------------------------------------
405 Capturing subpattern count = 1
406 Options: utf
407 No first char
408 No need char
409 Subject length lower bound = 1
410 Starting byte set: a x \xff
411
412 /(\x{100}{0,2}a|x)/8SDZ
413 ------------------------------------------------------------------
414 Bra
415 CBra 1
416 \x{100}{0,2}
417 a
418 Alt
419 x
420 Ket
421 Ket
422 End
423 ------------------------------------------------------------------
424 Capturing subpattern count = 1
425 Options: utf
426 No first char
427 No need char
428 Subject length lower bound = 1
429 Starting byte set: a x \xff
430
431 /(\x{100}{1,2}a|x)/8SDZ
432 ------------------------------------------------------------------
433 Bra
434 CBra 1
435 \x{100}
436 \x{100}{0,1}
437 a
438 Alt
439 x
440 Ket
441 Ket
442 End
443 ------------------------------------------------------------------
444 Capturing subpattern count = 1
445 Options: utf
446 No first char
447 No need char
448 Subject length lower bound = 1
449 Starting byte set: x \xff
450
451 /\x{100}/8DZ
452 ------------------------------------------------------------------
453 Bra
454 \x{100}
455 Ket
456 End
457 ------------------------------------------------------------------
458 Capturing subpattern count = 0
459 Options: utf
460 First char = \x{100}
461 No need char
462
463 /a\x{100}\x{101}*/8DZ
464 ------------------------------------------------------------------
465 Bra
466 a\x{100}
467 \x{101}*
468 Ket
469 End
470 ------------------------------------------------------------------
471 Capturing subpattern count = 0
472 Options: utf
473 First char = 'a'
474 Need char = \x{100}
475
476 /a\x{100}\x{101}+/8DZ
477 ------------------------------------------------------------------
478 Bra
479 a\x{100}
480 \x{101}+
481 Ket
482 End
483 ------------------------------------------------------------------
484 Capturing subpattern count = 0
485 Options: utf
486 First char = 'a'
487 Need char = \x{101}
488
489 /[^\x{c4}]/DZ
490 ------------------------------------------------------------------
491 Bra
492 [^\xc4]
493 Ket
494 End
495 ------------------------------------------------------------------
496 Capturing subpattern count = 0
497 No options
498 No first char
499 No need char
500
501 /[\x{100}]/8DZ
502 ------------------------------------------------------------------
503 Bra
504 \x{100}
505 Ket
506 End
507 ------------------------------------------------------------------
508 Capturing subpattern count = 0
509 Options: utf
510 First char = \x{100}
511 No need char
512 \x{100}
513 0: \x{100}
514 Z\x{100}
515 0: \x{100}
516 \x{100}Z
517 0: \x{100}
518 *** Failers
519 No match
520
521 /[\xff]/DZ8
522 ------------------------------------------------------------------
523 Bra
524 \xff
525 Ket
526 End
527 ------------------------------------------------------------------
528 Capturing subpattern count = 0
529 Options: utf
530 First char = \x{ff}
531 No need char
532 >\x{ff}<
533 0: \x{ff}
534
535 /[^\xff]/8DZ
536 ------------------------------------------------------------------
537 Bra
538 [^\x{ff}]
539 Ket
540 End
541 ------------------------------------------------------------------
542 Capturing subpattern count = 0
543 Options: utf
544 No first char
545 No need char
546
547 /\x{100}abc(xyz(?1))/8DZ
548 ------------------------------------------------------------------
549 Bra
550 \x{100}abc
551 CBra 1
552 xyz
553 Recurse
554 Ket
555 Ket
556 End
557 ------------------------------------------------------------------
558 Capturing subpattern count = 1
559 Options: utf
560 First char = \x{100}
561 Need char = 'z'
562
563 /\777/8I
564 Capturing subpattern count = 0
565 Options: utf
566 First char = \x{1ff}
567 No need char
568 \x{1ff}
569 0: \x{1ff}
570 \777
571 0: \x{1ff}
572
573 /\x{100}+\x{200}/8DZ
574 ------------------------------------------------------------------
575 Bra
576 \x{100}++
577 \x{200}
578 Ket
579 End
580 ------------------------------------------------------------------
581 Capturing subpattern count = 0
582 Options: utf
583 First char = \x{100}
584 Need char = \x{200}
585
586 /\x{100}+X/8DZ
587 ------------------------------------------------------------------
588 Bra
589 \x{100}++
590 X
591 Ket
592 End
593 ------------------------------------------------------------------
594 Capturing subpattern count = 0
595 Options: utf
596 First char = \x{100}
597 Need char = 'X'
598
599 /^[\QĀ\E-\QŐ\E/BZ8
600 Failed: missing terminating ] for character class at offset 13
601
602 /X/8
603 \x{0}\x{d7ff}\x{e000}\x{10ffff}
604 No match
605 \x{d800}
606 Error -10 (bad UTF-16 string) offset=0 reason=1
607 \x{d800}\?
608 No match
609 \x{da00}
610 Error -10 (bad UTF-16 string) offset=0 reason=1
611 \x{da00}\?
612 No match
613 \x{dfff}
614 Error -10 (bad UTF-16 string) offset=0 reason=3
615 \x{dfff}\?
616 No match
617 \x{110000}
618 **Failed: character value greater than 0x10ffff cannot be converted to UTF-16
619 \x{d800}\x{1234}
620 Error -10 (bad UTF-16 string) offset=1 reason=2
621 \x{fffe}
622 Error -10 (bad UTF-16 string) offset=0 reason=4
623
624 /(*UTF16)\x{11234}/
625 abcd\x{11234}pqr
626 0: \x{11234}
627
628 /(*CRLF)(*UTF16)(*BSR_UNICODE)a\Rb/I
629 Capturing subpattern count = 0
630 Options: bsr_unicode utf
631 Forced newline sequence: CRLF
632 First char = 'a'
633 Need char = 'b'
634
635 /\h/SI8
636 Capturing subpattern count = 0
637 Options: utf
638 No first char
639 No need char
640 Subject length lower bound = 1
641 Starting byte set: \x09 \x20 \xa0 \xff
642 ABC\x{09}
643 0: \x{09}
644 ABC\x{20}
645 0:
646 ABC\x{a0}
647 0: \x{a0}
648 ABC\x{1680}
649 0: \x{1680}
650 ABC\x{180e}
651 0: \x{180e}
652 ABC\x{2000}
653 0: \x{2000}
654 ABC\x{202f}
655 0: \x{202f}
656 ABC\x{205f}
657 0: \x{205f}
658 ABC\x{3000}
659 0: \x{3000}
660
661 /\v/SI8
662 Capturing subpattern count = 0
663 Options: utf
664 No first char
665 No need char
666 Subject length lower bound = 1
667 Starting byte set: \x0a \x0b \x0c \x0d \x85 \xff
668 ABC\x{0a}
669 0: \x{0a}
670 ABC\x{0b}
671 0: \x{0b}
672 ABC\x{0c}
673 0: \x{0c}
674 ABC\x{0d}
675 0: \x{0d}
676 ABC\x{85}
677 0: \x{85}
678 ABC\x{2028}
679 0: \x{2028}
680
681 /\h*A/SI8
682 Capturing subpattern count = 0
683 Options: utf
684 No first char
685 Need char = 'A'
686 Subject length lower bound = 1
687 Starting byte set: \x09 \x20 A \xa0
688 CDBABC
689 0: A
690
691 /\v+A/SI8
692 Capturing subpattern count = 0
693 Options: utf
694 No first char
695 Need char = 'A'
696 Subject length lower bound = 2
697 Starting byte set: \x0a \x0b \x0c \x0d \x85 \xff
698
699 /\s?xxx\s/8SI
700 Capturing subpattern count = 0
701 Options: utf
702 No first char
703 Need char = 'x'
704 Subject length lower bound = 4
705 Starting byte set: \x09 \x0a \x0c \x0d \x20 x
706
707 /\sxxx\s/I8ST1
708 Capturing subpattern count = 0
709 Options: utf
710 No first char
711 Need char = 'x'
712 Subject length lower bound = 5
713 Starting byte set: \x09 \x0a \x0c \x0d \x20 \x85 \xa0
714 AB\x{85}xxx\x{a0}XYZ
715 0: \x{85}xxx\x{a0}
716 AB\x{a0}xxx\x{85}XYZ
717 0: \x{a0}xxx\x{85}
718
719 /\S \S/I8ST1
720 Capturing subpattern count = 0
721 Options: utf
722 No first char
723 Need char = ' '
724 Subject length lower bound = 3
725 Starting byte set: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x0b \x0e
726 \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 \x1a \x1b \x1c \x1d
727 \x1e \x1f ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @
728 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e
729 f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f \x80 \x81 \x82 \x83
730 \x84 \x86 \x87 \x88 \x89 \x8a \x8b \x8c \x8d \x8e \x8f \x90 \x91 \x92 \x93
731 \x94 \x95 \x96 \x97 \x98 \x99 \x9a \x9b \x9c \x9d \x9e \x9f \xa1 \xa2 \xa3
732 \xa4 \xa5 \xa6 \xa7 \xa8 \xa9 \xaa \xab \xac \xad \xae \xaf \xb0 \xb1 \xb2
733 \xb3 \xb4 \xb5 \xb6 \xb7 \xb8 \xb9 \xba \xbb \xbc \xbd \xbe \xbf \xc0 \xc1
734 \xc2 \xc3 \xc4 \xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb \xcc \xcd \xce \xcf \xd0
735 \xd1 \xd2 \xd3 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda \xdb \xdc \xdd \xde \xdf
736 \xe0 \xe1 \xe2 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 \xea \xeb \xec \xed \xee
737 \xef \xf0 \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 \xfa \xfb \xfc \xfd
738 \xfe \xff
739 \x{a2} \x{84}
740 0: \x{a2} \x{84}
741 A Z
742 0: A Z
743
744 /a+/8
745 a\x{123}aa\>1
746 0: aa
747 a\x{123}aa\>2
748 0: aa
749 a\x{123}aa\>3
750 0: a
751 a\x{123}aa\>4
752 No match
753 a\x{123}aa\>5
754 Error -24 (bad offset value)
755 a\x{123}aa\>6
756 Error -24 (bad offset value)
757
758 /\x{1234}+/iS8I
759 Capturing subpattern count = 0
760 Options: caseless utf
761 First char = \x{1234}
762 No need char
763 Subject length lower bound = 1
764 No set of starting bytes
765
766 /\x{1234}+?/iS8I
767 Capturing subpattern count = 0
768 Options: caseless utf
769 First char = \x{1234}
770 No need char
771 Subject length lower bound = 1
772 No set of starting bytes
773
774 /\x{1234}++/iS8I
775 Capturing subpattern count = 0
776 Options: caseless utf
777 First char = \x{1234}
778 No need char
779 Subject length lower bound = 1
780 No set of starting bytes
781
782 /\x{1234}{2}/iS8I
783 Capturing subpattern count = 0
784 Options: caseless utf
785 First char = \x{1234}
786 Need char = \x{1234}
787 Subject length lower bound = 2
788 No set of starting bytes
789
790 /[^\x{c4}]/8DZ
791 ------------------------------------------------------------------
792 Bra
793 [^\x{c4}]
794 Ket
795 End
796 ------------------------------------------------------------------
797 Capturing subpattern count = 0
798 Options: utf
799 No first char
800 No need char
801
802 /X+\x{200}/8DZ
803 ------------------------------------------------------------------
804 Bra
805 X++
806 \x{200}
807 Ket
808 End
809 ------------------------------------------------------------------
810 Capturing subpattern count = 0
811 Options: utf
812 First char = 'X'
813 Need char = \x{200}
814
815 /\R/SI8
816 Capturing subpattern count = 0
817 Options: utf
818 No first char
819 No need char
820 Subject length lower bound = 1
821 Starting byte set: \x0a \x0b \x0c \x0d \x85 \xff
822
823 /-- Check bad offset --/
824
825 /a/8
826 \x{10000}\>1
827 Error -11 (bad UTF-16 offset)
828 \x{10000}ab\>2
829 0: a
830 \x{10000}ab\>3
831 No match
832 \x{10000}ab\>4
833 No match
834 \x{10000}ab\>5
835 Error -24 (bad offset value)
836
837 /-- End of testinput18 --/

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12