On Mon, Jan 21, 2002 at 03:11:22PM +0000, Robin Houston wrote:
> On Mon, Jan 21, 2002 at 03:53:54PM +0100, [EMAIL PROTECTED] wrote:
> > The "shrinkable" strings will be in one of the two following forms:
> >
> > XbYXaZ, with X, Y and Z (possible empty) strings of any length,
> > and a and b strings of length 1, with a lt b.
> > aXbYaX, with X and Y (possible empty) strings of any length,
> > and a and b strings of length 1, with a lt b.
>
> Not quite.
> "aaba" is shrinkable.
You are right, I had forgotten a case, which can be written as:
(XaY)+XbYZXaY, with X, Y and Z (possible empty) strings of any length,
and a and b strings of length 1, with a lt b.
This results in (a sloooow program):
#!/usr/bin/perl
use strict;
use warnings qw /all/;
my @strings;
my $p;
my $max = 255; # Use a higher number for Unicode.
foreach my $c (1 .. $max) {
push @strings => sprintf '^(.*)\x%02x.*\%d[\x00-\x%02x].*$' =>
$c, ++ $p, $c - 1;
push @strings => sprintf '^([\x00-\x%02x].*)\x%02x.*\%d$' =>
$c - 1, $c, ++ $p;
push @strings =>
sprintf '^((.*)[\x00-\x%02x](.*))+\%d\x%02x\%d.*\%d$' =>
$c - 1, $p + 2, $c, $p + 3, $p + 1;
$p += 3;
}
my $regex = join "|" => map {"(?:$_)"} @strings;
$regex =~ s/\|/|\n /g;
my $rgx = "/$regex/sx";
print $rgx, "\n";
__END__
/(?:^(.*)\x01.*\1[\x00-\x00].*$)|
(?:^([\x00-\x00].*)\x01.*\2$)|
(?:^((.*)[\x00-\x00](.*))+\4\x01\5.*\3$)|
(?:^(.*)\x02.*\6[\x00-\x01].*$)|
(?:^([\x00-\x01].*)\x02.*\7$)|
(?:^((.*)[\x00-\x01](.*))+\9\x02\10.*\8$)|
(?:^(.*)\x03.*\11[\x00-\x02].*$)|
(?:^([\x00-\x02].*)\x03.*\12$)|
(?:^((.*)[\x00-\x02](.*))+\14\x03\15.*\13$)|
(?:^(.*)\x04.*\16[\x00-\x03].*$)|
(?:^([\x00-\x03].*)\x04.*\17$)|
(?:^((.*)[\x00-\x03](.*))+\19\x04\20.*\18$)|
(?:^(.*)\x05.*\21[\x00-\x04].*$)|
(?:^([\x00-\x04].*)\x05.*\22$)|
(?:^((.*)[\x00-\x04](.*))+\24\x05\25.*\23$)|
(?:^(.*)\x06.*\26[\x00-\x05].*$)|
(?:^([\x00-\x05].*)\x06.*\27$)|
(?:^((.*)[\x00-\x05](.*))+\29\x06\30.*\28$)|
(?:^(.*)\x07.*\31[\x00-\x06].*$)|
(?:^([\x00-\x06].*)\x07.*\32$)|
(?:^((.*)[\x00-\x06](.*))+\34\x07\35.*\33$)|
(?:^(.*)\x08.*\36[\x00-\x07].*$)|
(?:^([\x00-\x07].*)\x08.*\37$)|
(?:^((.*)[\x00-\x07](.*))+\39\x08\40.*\38$)|
(?:^(.*)\x09.*\41[\x00-\x08].*$)|
(?:^([\x00-\x08].*)\x09.*\42$)|
(?:^((.*)[\x00-\x08](.*))+\44\x09\45.*\43$)|
(?:^(.*)\x0a.*\46[\x00-\x09].*$)|
(?:^([\x00-\x09].*)\x0a.*\47$)|
(?:^((.*)[\x00-\x09](.*))+\49\x0a\50.*\48$)|
(?:^(.*)\x0b.*\51[\x00-\x0a].*$)|
(?:^([\x00-\x0a].*)\x0b.*\52$)|
(?:^((.*)[\x00-\x0a](.*))+\54\x0b\55.*\53$)|
(?:^(.*)\x0c.*\56[\x00-\x0b].*$)|
(?:^([\x00-\x0b].*)\x0c.*\57$)|
(?:^((.*)[\x00-\x0b](.*))+\59\x0c\60.*\58$)|
(?:^(.*)\x0d.*\61[\x00-\x0c].*$)|
(?:^([\x00-\x0c].*)\x0d.*\62$)|
(?:^((.*)[\x00-\x0c](.*))+\64\x0d\65.*\63$)|
(?:^(.*)\x0e.*\66[\x00-\x0d].*$)|
(?:^([\x00-\x0d].*)\x0e.*\67$)|
(?:^((.*)[\x00-\x0d](.*))+\69\x0e\70.*\68$)|
(?:^(.*)\x0f.*\71[\x00-\x0e].*$)|
(?:^([\x00-\x0e].*)\x0f.*\72$)|
(?:^((.*)[\x00-\x0e](.*))+\74\x0f\75.*\73$)|
(?:^(.*)\x10.*\76[\x00-\x0f].*$)|
(?:^([\x00-\x0f].*)\x10.*\77$)|
(?:^((.*)[\x00-\x0f](.*))+\79\x10\80.*\78$)|
(?:^(.*)\x11.*\81[\x00-\x10].*$)|
(?:^([\x00-\x10].*)\x11.*\82$)|
(?:^((.*)[\x00-\x10](.*))+\84\x11\85.*\83$)|
(?:^(.*)\x12.*\86[\x00-\x11].*$)|
(?:^([\x00-\x11].*)\x12.*\87$)|
(?:^((.*)[\x00-\x11](.*))+\89\x12\90.*\88$)|
(?:^(.*)\x13.*\91[\x00-\x12].*$)|
(?:^([\x00-\x12].*)\x13.*\92$)|
(?:^((.*)[\x00-\x12](.*))+\94\x13\95.*\93$)|
(?:^(.*)\x14.*\96[\x00-\x13].*$)|
(?:^([\x00-\x13].*)\x14.*\97$)|
(?:^((.*)[\x00-\x13](.*))+\99\x14\100.*\98$)|
(?:^(.*)\x15.*\101[\x00-\x14].*$)|
(?:^([\x00-\x14].*)\x15.*\102$)|
(?:^((.*)[\x00-\x14](.*))+\104\x15\105.*\103$)|
(?:^(.*)\x16.*\106[\x00-\x15].*$)|
(?:^([\x00-\x15].*)\x16.*\107$)|
(?:^((.*)[\x00-\x15](.*))+\109\x16\110.*\108$)|
(?:^(.*)\x17.*\111[\x00-\x16].*$)|
(?:^([\x00-\x16].*)\x17.*\112$)|
(?:^((.*)[\x00-\x16](.*))+\114\x17\115.*\113$)|
(?:^(.*)\x18.*\116[\x00-\x17].*$)|
(?:^([\x00-\x17].*)\x18.*\117$)|
(?:^((.*)[\x00-\x17](.*))+\119\x18\120.*\118$)|
(?:^(.*)\x19.*\121[\x00-\x18].*$)|
(?:^([\x00-\x18].*)\x19.*\122$)|
(?:^((.*)[\x00-\x18](.*))+\124\x19\125.*\123$)|
(?:^(.*)\x1a.*\126[\x00-\x19].*$)|
(?:^([\x00-\x19].*)\x1a.*\127$)|
(?:^((.*)[\x00-\x19](.*))+\129\x1a\130.*\128$)|
(?:^(.*)\x1b.*\131[\x00-\x1a].*$)|
(?:^([\x00-\x1a].*)\x1b.*\132$)|
(?:^((.*)[\x00-\x1a](.*))+\134\x1b\135.*\133$)|
(?:^(.*)\x1c.*\136[\x00-\x1b].*$)|
(?:^([\x00-\x1b].*)\x1c.*\137$)|
(?:^((.*)[\x00-\x1b](.*))+\139\x1c\140.*\138$)|
(?:^(.*)\x1d.*\141[\x00-\x1c].*$)|
(?:^([\x00-\x1c].*)\x1d.*\142$)|
(?:^((.*)[\x00-\x1c](.*))+\144\x1d\145.*\143$)|
(?:^(.*)\x1e.*\146[\x00-\x1d].*$)|
(?:^([\x00-\x1d].*)\x1e.*\147$)|
(?:^((.*)[\x00-\x1d](.*))+\149\x1e\150.*\148$)|
(?:^(.*)\x1f.*\151[\x00-\x1e].*$)|
(?:^([\x00-\x1e].*)\x1f.*\152$)|
(?:^((.*)[\x00-\x1e](.*))+\154\x1f\155.*\153$)|
(?:^(.*)\x20.*\156[\x00-\x1f].*$)|
(?:^([\x00-\x1f].*)\x20.*\157$)|
(?:^((.*)[\x00-\x1f](.*))+\159\x20\160.*\158$)|
(?:^(.*)\x21.*\161[\x00-\x20].*$)|
(?:^([\x00-\x20].*)\x21.*\162$)|
(?:^((.*)[\x00-\x20](.*))+\164\x21\165.*\163$)|
(?:^(.*)\x22.*\166[\x00-\x21].*$)|
(?:^([\x00-\x21].*)\x22.*\167$)|
(?:^((.*)[\x00-\x21](.*))+\169\x22\170.*\168$)|
(?:^(.*)\x23.*\171[\x00-\x22].*$)|
(?:^([\x00-\x22].*)\x23.*\172$)|
(?:^((.*)[\x00-\x22](.*))+\174\x23\175.*\173$)|
(?:^(.*)\x24.*\176[\x00-\x23].*$)|
(?:^([\x00-\x23].*)\x24.*\177$)|
(?:^((.*)[\x00-\x23](.*))+\179\x24\180.*\178$)|
(?:^(.*)\x25.*\181[\x00-\x24].*$)|
(?:^([\x00-\x24].*)\x25.*\182$)|
(?:^((.*)[\x00-\x24](.*))+\184\x25\185.*\183$)|
(?:^(.*)\x26.*\186[\x00-\x25].*$)|
(?:^([\x00-\x25].*)\x26.*\187$)|
(?:^((.*)[\x00-\x25](.*))+\189\x26\190.*\188$)|
(?:^(.*)\x27.*\191[\x00-\x26].*$)|
(?:^([\x00-\x26].*)\x27.*\192$)|
(?:^((.*)[\x00-\x26](.*))+\194\x27\195.*\193$)|
(?:^(.*)\x28.*\196[\x00-\x27].*$)|
(?:^([\x00-\x27].*)\x28.*\197$)|
(?:^((.*)[\x00-\x27](.*))+\199\x28\200.*\198$)|
(?:^(.*)\x29.*\201[\x00-\x28].*$)|
(?:^([\x00-\x28].*)\x29.*\202$)|
(?:^((.*)[\x00-\x28](.*))+\204\x29\205.*\203$)|
(?:^(.*)\x2a.*\206[\x00-\x29].*$)|
(?:^([\x00-\x29].*)\x2a.*\207$)|
(?:^((.*)[\x00-\x29](.*))+\209\x2a\210.*\208$)|
(?:^(.*)\x2b.*\211[\x00-\x2a].*$)|
(?:^([\x00-\x2a].*)\x2b.*\212$)|
(?:^((.*)[\x00-\x2a](.*))+\214\x2b\215.*\213$)|
(?:^(.*)\x2c.*\216[\x00-\x2b].*$)|
(?:^([\x00-\x2b].*)\x2c.*\217$)|
(?:^((.*)[\x00-\x2b](.*))+\219\x2c\220.*\218$)|
(?:^(.*)\x2d.*\221[\x00-\x2c].*$)|
(?:^([\x00-\x2c].*)\x2d.*\222$)|
(?:^((.*)[\x00-\x2c](.*))+\224\x2d\225.*\223$)|
(?:^(.*)\x2e.*\226[\x00-\x2d].*$)|
(?:^([\x00-\x2d].*)\x2e.*\227$)|
(?:^((.*)[\x00-\x2d](.*))+\229\x2e\230.*\228$)|
(?:^(.*)\x2f.*\231[\x00-\x2e].*$)|
(?:^([\x00-\x2e].*)\x2f.*\232$)|
(?:^((.*)[\x00-\x2e](.*))+\234\x2f\235.*\233$)|
(?:^(.*)\x30.*\236[\x00-\x2f].*$)|
(?:^([\x00-\x2f].*)\x30.*\237$)|
(?:^((.*)[\x00-\x2f](.*))+\239\x30\240.*\238$)|
(?:^(.*)\x31.*\241[\x00-\x30].*$)|
(?:^([\x00-\x30].*)\x31.*\242$)|
(?:^((.*)[\x00-\x30](.*))+\244\x31\245.*\243$)|
(?:^(.*)\x32.*\246[\x00-\x31].*$)|
(?:^([\x00-\x31].*)\x32.*\247$)|
(?:^((.*)[\x00-\x31](.*))+\249\x32\250.*\248$)|
(?:^(.*)\x33.*\251[\x00-\x32].*$)|
(?:^([\x00-\x32].*)\x33.*\252$)|
(?:^((.*)[\x00-\x32](.*))+\254\x33\255.*\253$)|
(?:^(.*)\x34.*\256[\x00-\x33].*$)|
(?:^([\x00-\x33].*)\x34.*\257$)|
(?:^((.*)[\x00-\x33](.*))+\259\x34\260.*\258$)|
(?:^(.*)\x35.*\261[\x00-\x34].*$)|
(?:^([\x00-\x34].*)\x35.*\262$)|
(?:^((.*)[\x00-\x34](.*))+\264\x35\265.*\263$)|
(?:^(.*)\x36.*\266[\x00-\x35].*$)|
(?:^([\x00-\x35].*)\x36.*\267$)|
(?:^((.*)[\x00-\x35](.*))+\269\x36\270.*\268$)|
(?:^(.*)\x37.*\271[\x00-\x36].*$)|
(?:^([\x00-\x36].*)\x37.*\272$)|
(?:^((.*)[\x00-\x36](.*))+\274\x37\275.*\273$)|
(?:^(.*)\x38.*\276[\x00-\x37].*$)|
(?:^([\x00-\x37].*)\x38.*\277$)|
(?:^((.*)[\x00-\x37](.*))+\279\x38\280.*\278$)|
(?:^(.*)\x39.*\281[\x00-\x38].*$)|
(?:^([\x00-\x38].*)\x39.*\282$)|
(?:^((.*)[\x00-\x38](.*))+\284\x39\285.*\283$)|
(?:^(.*)\x3a.*\286[\x00-\x39].*$)|
(?:^([\x00-\x39].*)\x3a.*\287$)|
(?:^((.*)[\x00-\x39](.*))+\289\x3a\290.*\288$)|
(?:^(.*)\x3b.*\291[\x00-\x3a].*$)|
(?:^([\x00-\x3a].*)\x3b.*\292$)|
(?:^((.*)[\x00-\x3a](.*))+\294\x3b\295.*\293$)|
(?:^(.*)\x3c.*\296[\x00-\x3b].*$)|
(?:^([\x00-\x3b].*)\x3c.*\297$)|
(?:^((.*)[\x00-\x3b](.*))+\299\x3c\300.*\298$)|
(?:^(.*)\x3d.*\301[\x00-\x3c].*$)|
(?:^([\x00-\x3c].*)\x3d.*\302$)|
(?:^((.*)[\x00-\x3c](.*))+\304\x3d\305.*\303$)|
(?:^(.*)\x3e.*\306[\x00-\x3d].*$)|
(?:^([\x00-\x3d].*)\x3e.*\307$)|
(?:^((.*)[\x00-\x3d](.*))+\309\x3e\310.*\308$)|
(?:^(.*)\x3f.*\311[\x00-\x3e].*$)|
(?:^([\x00-\x3e].*)\x3f.*\312$)|
(?:^((.*)[\x00-\x3e](.*))+\314\x3f\315.*\313$)|
(?:^(.*)\x40.*\316[\x00-\x3f].*$)|
(?:^([\x00-\x3f].*)\x40.*\317$)|
(?:^((.*)[\x00-\x3f](.*))+\319\x40\320.*\318$)|
(?:^(.*)\x41.*\321[\x00-\x40].*$)|
(?:^([\x00-\x40].*)\x41.*\322$)|
(?:^((.*)[\x00-\x40](.*))+\324\x41\325.*\323$)|
(?:^(.*)\x42.*\326[\x00-\x41].*$)|
(?:^([\x00-\x41].*)\x42.*\327$)|
(?:^((.*)[\x00-\x41](.*))+\329\x42\330.*\328$)|
(?:^(.*)\x43.*\331[\x00-\x42].*$)|
(?:^([\x00-\x42].*)\x43.*\332$)|
(?:^((.*)[\x00-\x42](.*))+\334\x43\335.*\333$)|
(?:^(.*)\x44.*\336[\x00-\x43].*$)|
(?:^([\x00-\x43].*)\x44.*\337$)|
(?:^((.*)[\x00-\x43](.*))+\339\x44\340.*\338$)|
(?:^(.*)\x45.*\341[\x00-\x44].*$)|
(?:^([\x00-\x44].*)\x45.*\342$)|
(?:^((.*)[\x00-\x44](.*))+\344\x45\345.*\343$)|
(?:^(.*)\x46.*\346[\x00-\x45].*$)|
(?:^([\x00-\x45].*)\x46.*\347$)|
(?:^((.*)[\x00-\x45](.*))+\349\x46\350.*\348$)|
(?:^(.*)\x47.*\351[\x00-\x46].*$)|
(?:^([\x00-\x46].*)\x47.*\352$)|
(?:^((.*)[\x00-\x46](.*))+\354\x47\355.*\353$)|
(?:^(.*)\x48.*\356[\x00-\x47].*$)|
(?:^([\x00-\x47].*)\x48.*\357$)|
(?:^((.*)[\x00-\x47](.*))+\359\x48\360.*\358$)|
(?:^(.*)\x49.*\361[\x00-\x48].*$)|
(?:^([\x00-\x48].*)\x49.*\362$)|
(?:^((.*)[\x00-\x48](.*))+\364\x49\365.*\363$)|
(?:^(.*)\x4a.*\366[\x00-\x49].*$)|
(?:^([\x00-\x49].*)\x4a.*\367$)|
(?:^((.*)[\x00-\x49](.*))+\369\x4a\370.*\368$)|
(?:^(.*)\x4b.*\371[\x00-\x4a].*$)|
(?:^([\x00-\x4a].*)\x4b.*\372$)|
(?:^((.*)[\x00-\x4a](.*))+\374\x4b\375.*\373$)|
(?:^(.*)\x4c.*\376[\x00-\x4b].*$)|
(?:^([\x00-\x4b].*)\x4c.*\377$)|
(?:^((.*)[\x00-\x4b](.*))+\379\x4c\380.*\378$)|
(?:^(.*)\x4d.*\381[\x00-\x4c].*$)|
(?:^([\x00-\x4c].*)\x4d.*\382$)|
(?:^((.*)[\x00-\x4c](.*))+\384\x4d\385.*\383$)|
(?:^(.*)\x4e.*\386[\x00-\x4d].*$)|
(?:^([\x00-\x4d].*)\x4e.*\387$)|
(?:^((.*)[\x00-\x4d](.*))+\389\x4e\390.*\388$)|
(?:^(.*)\x4f.*\391[\x00-\x4e].*$)|
(?:^([\x00-\x4e].*)\x4f.*\392$)|
(?:^((.*)[\x00-\x4e](.*))+\394\x4f\395.*\393$)|
(?:^(.*)\x50.*\396[\x00-\x4f].*$)|
(?:^([\x00-\x4f].*)\x50.*\397$)|
(?:^((.*)[\x00-\x4f](.*))+\399\x50\400.*\398$)|
(?:^(.*)\x51.*\401[\x00-\x50].*$)|
(?:^([\x00-\x50].*)\x51.*\402$)|
(?:^((.*)[\x00-\x50](.*))+\404\x51\405.*\403$)|
(?:^(.*)\x52.*\406[\x00-\x51].*$)|
(?:^([\x00-\x51].*)\x52.*\407$)|
(?:^((.*)[\x00-\x51](.*))+\409\x52\410.*\408$)|
(?:^(.*)\x53.*\411[\x00-\x52].*$)|
(?:^([\x00-\x52].*)\x53.*\412$)|
(?:^((.*)[\x00-\x52](.*))+\414\x53\415.*\413$)|
(?:^(.*)\x54.*\416[\x00-\x53].*$)|
(?:^([\x00-\x53].*)\x54.*\417$)|
(?:^((.*)[\x00-\x53](.*))+\419\x54\420.*\418$)|
(?:^(.*)\x55.*\421[\x00-\x54].*$)|
(?:^([\x00-\x54].*)\x55.*\422$)|
(?:^((.*)[\x00-\x54](.*))+\424\x55\425.*\423$)|
(?:^(.*)\x56.*\426[\x00-\x55].*$)|
(?:^([\x00-\x55].*)\x56.*\427$)|
(?:^((.*)[\x00-\x55](.*))+\429\x56\430.*\428$)|
(?:^(.*)\x57.*\431[\x00-\x56].*$)|
(?:^([\x00-\x56].*)\x57.*\432$)|
(?:^((.*)[\x00-\x56](.*))+\434\x57\435.*\433$)|
(?:^(.*)\x58.*\436[\x00-\x57].*$)|
(?:^([\x00-\x57].*)\x58.*\437$)|
(?:^((.*)[\x00-\x57](.*))+\439\x58\440.*\438$)|
(?:^(.*)\x59.*\441[\x00-\x58].*$)|
(?:^([\x00-\x58].*)\x59.*\442$)|
(?:^((.*)[\x00-\x58](.*))+\444\x59\445.*\443$)|
(?:^(.*)\x5a.*\446[\x00-\x59].*$)|
(?:^([\x00-\x59].*)\x5a.*\447$)|
(?:^((.*)[\x00-\x59](.*))+\449\x5a\450.*\448$)|
(?:^(.*)\x5b.*\451[\x00-\x5a].*$)|
(?:^([\x00-\x5a].*)\x5b.*\452$)|
(?:^((.*)[\x00-\x5a](.*))+\454\x5b\455.*\453$)|
(?:^(.*)\x5c.*\456[\x00-\x5b].*$)|
(?:^([\x00-\x5b].*)\x5c.*\457$)|
(?:^((.*)[\x00-\x5b](.*))+\459\x5c\460.*\458$)|
(?:^(.*)\x5d.*\461[\x00-\x5c].*$)|
(?:^([\x00-\x5c].*)\x5d.*\462$)|
(?:^((.*)[\x00-\x5c](.*))+\464\x5d\465.*\463$)|
(?:^(.*)\x5e.*\466[\x00-\x5d].*$)|
(?:^([\x00-\x5d].*)\x5e.*\467$)|
(?:^((.*)[\x00-\x5d](.*))+\469\x5e\470.*\468$)|
(?:^(.*)\x5f.*\471[\x00-\x5e].*$)|
(?:^([\x00-\x5e].*)\x5f.*\472$)|
(?:^((.*)[\x00-\x5e](.*))+\474\x5f\475.*\473$)|
(?:^(.*)\x60.*\476[\x00-\x5f].*$)|
(?:^([\x00-\x5f].*)\x60.*\477$)|
(?:^((.*)[\x00-\x5f](.*))+\479\x60\480.*\478$)|
(?:^(.*)\x61.*\481[\x00-\x60].*$)|
(?:^([\x00-\x60].*)\x61.*\482$)|
(?:^((.*)[\x00-\x60](.*))+\484\x61\485.*\483$)|
(?:^(.*)\x62.*\486[\x00-\x61].*$)|
(?:^([\x00-\x61].*)\x62.*\487$)|
(?:^((.*)[\x00-\x61](.*))+\489\x62\490.*\488$)|
(?:^(.*)\x63.*\491[\x00-\x62].*$)|
(?:^([\x00-\x62].*)\x63.*\492$)|
(?:^((.*)[\x00-\x62](.*))+\494\x63\495.*\493$)|
(?:^(.*)\x64.*\496[\x00-\x63].*$)|
(?:^([\x00-\x63].*)\x64.*\497$)|
(?:^((.*)[\x00-\x63](.*))+\499\x64\500.*\498$)|
(?:^(.*)\x65.*\501[\x00-\x64].*$)|
(?:^([\x00-\x64].*)\x65.*\502$)|
(?:^((.*)[\x00-\x64](.*))+\504\x65\505.*\503$)|
(?:^(.*)\x66.*\506[\x00-\x65].*$)|
(?:^([\x00-\x65].*)\x66.*\507$)|
(?:^((.*)[\x00-\x65](.*))+\509\x66\510.*\508$)|
(?:^(.*)\x67.*\511[\x00-\x66].*$)|
(?:^([\x00-\x66].*)\x67.*\512$)|
(?:^((.*)[\x00-\x66](.*))+\514\x67\515.*\513$)|
(?:^(.*)\x68.*\516[\x00-\x67].*$)|
(?:^([\x00-\x67].*)\x68.*\517$)|
(?:^((.*)[\x00-\x67](.*))+\519\x68\520.*\518$)|
(?:^(.*)\x69.*\521[\x00-\x68].*$)|
(?:^([\x00-\x68].*)\x69.*\522$)|
(?:^((.*)[\x00-\x68](.*))+\524\x69\525.*\523$)|
(?:^(.*)\x6a.*\526[\x00-\x69].*$)|
(?:^([\x00-\x69].*)\x6a.*\527$)|
(?:^((.*)[\x00-\x69](.*))+\529\x6a\530.*\528$)|
(?:^(.*)\x6b.*\531[\x00-\x6a].*$)|
(?:^([\x00-\x6a].*)\x6b.*\532$)|
(?:^((.*)[\x00-\x6a](.*))+\534\x6b\535.*\533$)|
(?:^(.*)\x6c.*\536[\x00-\x6b].*$)|
(?:^([\x00-\x6b].*)\x6c.*\537$)|
(?:^((.*)[\x00-\x6b](.*))+\539\x6c\540.*\538$)|
(?:^(.*)\x6d.*\541[\x00-\x6c].*$)|
(?:^([\x00-\x6c].*)\x6d.*\542$)|
(?:^((.*)[\x00-\x6c](.*))+\544\x6d\545.*\543$)|
(?:^(.*)\x6e.*\546[\x00-\x6d].*$)|
(?:^([\x00-\x6d].*)\x6e.*\547$)|
(?:^((.*)[\x00-\x6d](.*))+\549\x6e\550.*\548$)|
(?:^(.*)\x6f.*\551[\x00-\x6e].*$)|
(?:^([\x00-\x6e].*)\x6f.*\552$)|
(?:^((.*)[\x00-\x6e](.*))+\554\x6f\555.*\553$)|
(?:^(.*)\x70.*\556[\x00-\x6f].*$)|
(?:^([\x00-\x6f].*)\x70.*\557$)|
(?:^((.*)[\x00-\x6f](.*))+\559\x70\560.*\558$)|
(?:^(.*)\x71.*\561[\x00-\x70].*$)|
(?:^([\x00-\x70].*)\x71.*\562$)|
(?:^((.*)[\x00-\x70](.*))+\564\x71\565.*\563$)|
(?:^(.*)\x72.*\566[\x00-\x71].*$)|
(?:^([\x00-\x71].*)\x72.*\567$)|
(?:^((.*)[\x00-\x71](.*))+\569\x72\570.*\568$)|
(?:^(.*)\x73.*\571[\x00-\x72].*$)|
(?:^([\x00-\x72].*)\x73.*\572$)|
(?:^((.*)[\x00-\x72](.*))+\574\x73\575.*\573$)|
(?:^(.*)\x74.*\576[\x00-\x73].*$)|
(?:^([\x00-\x73].*)\x74.*\577$)|
(?:^((.*)[\x00-\x73](.*))+\579\x74\580.*\578$)|
(?:^(.*)\x75.*\581[\x00-\x74].*$)|
(?:^([\x00-\x74].*)\x75.*\582$)|
(?:^((.*)[\x00-\x74](.*))+\584\x75\585.*\583$)|
(?:^(.*)\x76.*\586[\x00-\x75].*$)|
(?:^([\x00-\x75].*)\x76.*\587$)|
(?:^((.*)[\x00-\x75](.*))+\589\x76\590.*\588$)|
(?:^(.*)\x77.*\591[\x00-\x76].*$)|
(?:^([\x00-\x76].*)\x77.*\592$)|
(?:^((.*)[\x00-\x76](.*))+\594\x77\595.*\593$)|
(?:^(.*)\x78.*\596[\x00-\x77].*$)|
(?:^([\x00-\x77].*)\x78.*\597$)|
(?:^((.*)[\x00-\x77](.*))+\599\x78\600.*\598$)|
(?:^(.*)\x79.*\601[\x00-\x78].*$)|
(?:^([\x00-\x78].*)\x79.*\602$)|
(?:^((.*)[\x00-\x78](.*))+\604\x79\605.*\603$)|
(?:^(.*)\x7a.*\606[\x00-\x79].*$)|
(?:^([\x00-\x79].*)\x7a.*\607$)|
(?:^((.*)[\x00-\x79](.*))+\609\x7a\610.*\608$)|
(?:^(.*)\x7b.*\611[\x00-\x7a].*$)|
(?:^([\x00-\x7a].*)\x7b.*\612$)|
(?:^((.*)[\x00-\x7a](.*))+\614\x7b\615.*\613$)|
(?:^(.*)\x7c.*\616[\x00-\x7b].*$)|
(?:^([\x00-\x7b].*)\x7c.*\617$)|
(?:^((.*)[\x00-\x7b](.*))+\619\x7c\620.*\618$)|
(?:^(.*)\x7d.*\621[\x00-\x7c].*$)|
(?:^([\x00-\x7c].*)\x7d.*\622$)|
(?:^((.*)[\x00-\x7c](.*))+\624\x7d\625.*\623$)|
(?:^(.*)\x7e.*\626[\x00-\x7d].*$)|
(?:^([\x00-\x7d].*)\x7e.*\627$)|
(?:^((.*)[\x00-\x7d](.*))+\629\x7e\630.*\628$)|
(?:^(.*)\x7f.*\631[\x00-\x7e].*$)|
(?:^([\x00-\x7e].*)\x7f.*\632$)|
(?:^((.*)[\x00-\x7e](.*))+\634\x7f\635.*\633$)|
(?:^(.*)\x80.*\636[\x00-\x7f].*$)|
(?:^([\x00-\x7f].*)\x80.*\637$)|
(?:^((.*)[\x00-\x7f](.*))+\639\x80\640.*\638$)|
(?:^(.*)\x81.*\641[\x00-\x80].*$)|
(?:^([\x00-\x80].*)\x81.*\642$)|
(?:^((.*)[\x00-\x80](.*))+\644\x81\645.*\643$)|
(?:^(.*)\x82.*\646[\x00-\x81].*$)|
(?:^([\x00-\x81].*)\x82.*\647$)|
(?:^((.*)[\x00-\x81](.*))+\649\x82\650.*\648$)|
(?:^(.*)\x83.*\651[\x00-\x82].*$)|
(?:^([\x00-\x82].*)\x83.*\652$)|
(?:^((.*)[\x00-\x82](.*))+\654\x83\655.*\653$)|
(?:^(.*)\x84.*\656[\x00-\x83].*$)|
(?:^([\x00-\x83].*)\x84.*\657$)|
(?:^((.*)[\x00-\x83](.*))+\659\x84\660.*\658$)|
(?:^(.*)\x85.*\661[\x00-\x84].*$)|
(?:^([\x00-\x84].*)\x85.*\662$)|
(?:^((.*)[\x00-\x84](.*))+\664\x85\665.*\663$)|
(?:^(.*)\x86.*\666[\x00-\x85].*$)|
(?:^([\x00-\x85].*)\x86.*\667$)|
(?:^((.*)[\x00-\x85](.*))+\669\x86\670.*\668$)|
(?:^(.*)\x87.*\671[\x00-\x86].*$)|
(?:^([\x00-\x86].*)\x87.*\672$)|
(?:^((.*)[\x00-\x86](.*))+\674\x87\675.*\673$)|
(?:^(.*)\x88.*\676[\x00-\x87].*$)|
(?:^([\x00-\x87].*)\x88.*\677$)|
(?:^((.*)[\x00-\x87](.*))+\679\x88\680.*\678$)|
(?:^(.*)\x89.*\681[\x00-\x88].*$)|
(?:^([\x00-\x88].*)\x89.*\682$)|
(?:^((.*)[\x00-\x88](.*))+\684\x89\685.*\683$)|
(?:^(.*)\x8a.*\686[\x00-\x89].*$)|
(?:^([\x00-\x89].*)\x8a.*\687$)|
(?:^((.*)[\x00-\x89](.*))+\689\x8a\690.*\688$)|
(?:^(.*)\x8b.*\691[\x00-\x8a].*$)|
(?:^([\x00-\x8a].*)\x8b.*\692$)|
(?:^((.*)[\x00-\x8a](.*))+\694\x8b\695.*\693$)|
(?:^(.*)\x8c.*\696[\x00-\x8b].*$)|
(?:^([\x00-\x8b].*)\x8c.*\697$)|
(?:^((.*)[\x00-\x8b](.*))+\699\x8c\700.*\698$)|
(?:^(.*)\x8d.*\701[\x00-\x8c].*$)|
(?:^([\x00-\x8c].*)\x8d.*\702$)|
(?:^((.*)[\x00-\x8c](.*))+\704\x8d\705.*\703$)|
(?:^(.*)\x8e.*\706[\x00-\x8d].*$)|
(?:^([\x00-\x8d].*)\x8e.*\707$)|
(?:^((.*)[\x00-\x8d](.*))+\709\x8e\710.*\708$)|
(?:^(.*)\x8f.*\711[\x00-\x8e].*$)|
(?:^([\x00-\x8e].*)\x8f.*\712$)|
(?:^((.*)[\x00-\x8e](.*))+\714\x8f\715.*\713$)|
(?:^(.*)\x90.*\716[\x00-\x8f].*$)|
(?:^([\x00-\x8f].*)\x90.*\717$)|
(?:^((.*)[\x00-\x8f](.*))+\719\x90\720.*\718$)|
(?:^(.*)\x91.*\721[\x00-\x90].*$)|
(?:^([\x00-\x90].*)\x91.*\722$)|
(?:^((.*)[\x00-\x90](.*))+\724\x91\725.*\723$)|
(?:^(.*)\x92.*\726[\x00-\x91].*$)|
(?:^([\x00-\x91].*)\x92.*\727$)|
(?:^((.*)[\x00-\x91](.*))+\729\x92\730.*\728$)|
(?:^(.*)\x93.*\731[\x00-\x92].*$)|
(?:^([\x00-\x92].*)\x93.*\732$)|
(?:^((.*)[\x00-\x92](.*))+\734\x93\735.*\733$)|
(?:^(.*)\x94.*\736[\x00-\x93].*$)|
(?:^([\x00-\x93].*)\x94.*\737$)|
(?:^((.*)[\x00-\x93](.*))+\739\x94\740.*\738$)|
(?:^(.*)\x95.*\741[\x00-\x94].*$)|
(?:^([\x00-\x94].*)\x95.*\742$)|
(?:^((.*)[\x00-\x94](.*))+\744\x95\745.*\743$)|
(?:^(.*)\x96.*\746[\x00-\x95].*$)|
(?:^([\x00-\x95].*)\x96.*\747$)|
(?:^((.*)[\x00-\x95](.*))+\749\x96\750.*\748$)|
(?:^(.*)\x97.*\751[\x00-\x96].*$)|
(?:^([\x00-\x96].*)\x97.*\752$)|
(?:^((.*)[\x00-\x96](.*))+\754\x97\755.*\753$)|
(?:^(.*)\x98.*\756[\x00-\x97].*$)|
(?:^([\x00-\x97].*)\x98.*\757$)|
(?:^((.*)[\x00-\x97](.*))+\759\x98\760.*\758$)|
(?:^(.*)\x99.*\761[\x00-\x98].*$)|
(?:^([\x00-\x98].*)\x99.*\762$)|
(?:^((.*)[\x00-\x98](.*))+\764\x99\765.*\763$)|
(?:^(.*)\x9a.*\766[\x00-\x99].*$)|
(?:^([\x00-\x99].*)\x9a.*\767$)|
(?:^((.*)[\x00-\x99](.*))+\769\x9a\770.*\768$)|
(?:^(.*)\x9b.*\771[\x00-\x9a].*$)|
(?:^([\x00-\x9a].*)\x9b.*\772$)|
(?:^((.*)[\x00-\x9a](.*))+\774\x9b\775.*\773$)|
(?:^(.*)\x9c.*\776[\x00-\x9b].*$)|
(?:^([\x00-\x9b].*)\x9c.*\777$)|
(?:^((.*)[\x00-\x9b](.*))+\779\x9c\780.*\778$)|
(?:^(.*)\x9d.*\781[\x00-\x9c].*$)|
(?:^([\x00-\x9c].*)\x9d.*\782$)|
(?:^((.*)[\x00-\x9c](.*))+\784\x9d\785.*\783$)|
(?:^(.*)\x9e.*\786[\x00-\x9d].*$)|
(?:^([\x00-\x9d].*)\x9e.*\787$)|
(?:^((.*)[\x00-\x9d](.*))+\789\x9e\790.*\788$)|
(?:^(.*)\x9f.*\791[\x00-\x9e].*$)|
(?:^([\x00-\x9e].*)\x9f.*\792$)|
(?:^((.*)[\x00-\x9e](.*))+\794\x9f\795.*\793$)|
(?:^(.*)\xa0.*\796[\x00-\x9f].*$)|
(?:^([\x00-\x9f].*)\xa0.*\797$)|
(?:^((.*)[\x00-\x9f](.*))+\799\xa0\800.*\798$)|
(?:^(.*)\xa1.*\801[\x00-\xa0].*$)|
(?:^([\x00-\xa0].*)\xa1.*\802$)|
(?:^((.*)[\x00-\xa0](.*))+\804\xa1\805.*\803$)|
(?:^(.*)\xa2.*\806[\x00-\xa1].*$)|
(?:^([\x00-\xa1].*)\xa2.*\807$)|
(?:^((.*)[\x00-\xa1](.*))+\809\xa2\810.*\808$)|
(?:^(.*)\xa3.*\811[\x00-\xa2].*$)|
(?:^([\x00-\xa2].*)\xa3.*\812$)|
(?:^((.*)[\x00-\xa2](.*))+\814\xa3\815.*\813$)|
(?:^(.*)\xa4.*\816[\x00-\xa3].*$)|
(?:^([\x00-\xa3].*)\xa4.*\817$)|
(?:^((.*)[\x00-\xa3](.*))+\819\xa4\820.*\818$)|
(?:^(.*)\xa5.*\821[\x00-\xa4].*$)|
(?:^([\x00-\xa4].*)\xa5.*\822$)|
(?:^((.*)[\x00-\xa4](.*))+\824\xa5\825.*\823$)|
(?:^(.*)\xa6.*\826[\x00-\xa5].*$)|
(?:^([\x00-\xa5].*)\xa6.*\827$)|
(?:^((.*)[\x00-\xa5](.*))+\829\xa6\830.*\828$)|
(?:^(.*)\xa7.*\831[\x00-\xa6].*$)|
(?:^([\x00-\xa6].*)\xa7.*\832$)|
(?:^((.*)[\x00-\xa6](.*))+\834\xa7\835.*\833$)|
(?:^(.*)\xa8.*\836[\x00-\xa7].*$)|
(?:^([\x00-\xa7].*)\xa8.*\837$)|
(?:^((.*)[\x00-\xa7](.*))+\839\xa8\840.*\838$)|
(?:^(.*)\xa9.*\841[\x00-\xa8].*$)|
(?:^([\x00-\xa8].*)\xa9.*\842$)|
(?:^((.*)[\x00-\xa8](.*))+\844\xa9\845.*\843$)|
(?:^(.*)\xaa.*\846[\x00-\xa9].*$)|
(?:^([\x00-\xa9].*)\xaa.*\847$)|
(?:^((.*)[\x00-\xa9](.*))+\849\xaa\850.*\848$)|
(?:^(.*)\xab.*\851[\x00-\xaa].*$)|
(?:^([\x00-\xaa].*)\xab.*\852$)|
(?:^((.*)[\x00-\xaa](.*))+\854\xab\855.*\853$)|
(?:^(.*)\xac.*\856[\x00-\xab].*$)|
(?:^([\x00-\xab].*)\xac.*\857$)|
(?:^((.*)[\x00-\xab](.*))+\859\xac\860.*\858$)|
(?:^(.*)\xad.*\861[\x00-\xac].*$)|
(?:^([\x00-\xac].*)\xad.*\862$)|
(?:^((.*)[\x00-\xac](.*))+\864\xad\865.*\863$)|
(?:^(.*)\xae.*\866[\x00-\xad].*$)|
(?:^([\x00-\xad].*)\xae.*\867$)|
(?:^((.*)[\x00-\xad](.*))+\869\xae\870.*\868$)|
(?:^(.*)\xaf.*\871[\x00-\xae].*$)|
(?:^([\x00-\xae].*)\xaf.*\872$)|
(?:^((.*)[\x00-\xae](.*))+\874\xaf\875.*\873$)|
(?:^(.*)\xb0.*\876[\x00-\xaf].*$)|
(?:^([\x00-\xaf].*)\xb0.*\877$)|
(?:^((.*)[\x00-\xaf](.*))+\879\xb0\880.*\878$)|
(?:^(.*)\xb1.*\881[\x00-\xb0].*$)|
(?:^([\x00-\xb0].*)\xb1.*\882$)|
(?:^((.*)[\x00-\xb0](.*))+\884\xb1\885.*\883$)|
(?:^(.*)\xb2.*\886[\x00-\xb1].*$)|
(?:^([\x00-\xb1].*)\xb2.*\887$)|
(?:^((.*)[\x00-\xb1](.*))+\889\xb2\890.*\888$)|
(?:^(.*)\xb3.*\891[\x00-\xb2].*$)|
(?:^([\x00-\xb2].*)\xb3.*\892$)|
(?:^((.*)[\x00-\xb2](.*))+\894\xb3\895.*\893$)|
(?:^(.*)\xb4.*\896[\x00-\xb3].*$)|
(?:^([\x00-\xb3].*)\xb4.*\897$)|
(?:^((.*)[\x00-\xb3](.*))+\899\xb4\900.*\898$)|
(?:^(.*)\xb5.*\901[\x00-\xb4].*$)|
(?:^([\x00-\xb4].*)\xb5.*\902$)|
(?:^((.*)[\x00-\xb4](.*))+\904\xb5\905.*\903$)|
(?:^(.*)\xb6.*\906[\x00-\xb5].*$)|
(?:^([\x00-\xb5].*)\xb6.*\907$)|
(?:^((.*)[\x00-\xb5](.*))+\909\xb6\910.*\908$)|
(?:^(.*)\xb7.*\911[\x00-\xb6].*$)|
(?:^([\x00-\xb6].*)\xb7.*\912$)|
(?:^((.*)[\x00-\xb6](.*))+\914\xb7\915.*\913$)|
(?:^(.*)\xb8.*\916[\x00-\xb7].*$)|
(?:^([\x00-\xb7].*)\xb8.*\917$)|
(?:^((.*)[\x00-\xb7](.*))+\919\xb8\920.*\918$)|
(?:^(.*)\xb9.*\921[\x00-\xb8].*$)|
(?:^([\x00-\xb8].*)\xb9.*\922$)|
(?:^((.*)[\x00-\xb8](.*))+\924\xb9\925.*\923$)|
(?:^(.*)\xba.*\926[\x00-\xb9].*$)|
(?:^([\x00-\xb9].*)\xba.*\927$)|
(?:^((.*)[\x00-\xb9](.*))+\929\xba\930.*\928$)|
(?:^(.*)\xbb.*\931[\x00-\xba].*$)|
(?:^([\x00-\xba].*)\xbb.*\932$)|
(?:^((.*)[\x00-\xba](.*))+\934\xbb\935.*\933$)|
(?:^(.*)\xbc.*\936[\x00-\xbb].*$)|
(?:^([\x00-\xbb].*)\xbc.*\937$)|
(?:^((.*)[\x00-\xbb](.*))+\939\xbc\940.*\938$)|
(?:^(.*)\xbd.*\941[\x00-\xbc].*$)|
(?:^([\x00-\xbc].*)\xbd.*\942$)|
(?:^((.*)[\x00-\xbc](.*))+\944\xbd\945.*\943$)|
(?:^(.*)\xbe.*\946[\x00-\xbd].*$)|
(?:^([\x00-\xbd].*)\xbe.*\947$)|
(?:^((.*)[\x00-\xbd](.*))+\949\xbe\950.*\948$)|
(?:^(.*)\xbf.*\951[\x00-\xbe].*$)|
(?:^([\x00-\xbe].*)\xbf.*\952$)|
(?:^((.*)[\x00-\xbe](.*))+\954\xbf\955.*\953$)|
(?:^(.*)\xc0.*\956[\x00-\xbf].*$)|
(?:^([\x00-\xbf].*)\xc0.*\957$)|
(?:^((.*)[\x00-\xbf](.*))+\959\xc0\960.*\958$)|
(?:^(.*)\xc1.*\961[\x00-\xc0].*$)|
(?:^([\x00-\xc0].*)\xc1.*\962$)|
(?:^((.*)[\x00-\xc0](.*))+\964\xc1\965.*\963$)|
(?:^(.*)\xc2.*\966[\x00-\xc1].*$)|
(?:^([\x00-\xc1].*)\xc2.*\967$)|
(?:^((.*)[\x00-\xc1](.*))+\969\xc2\970.*\968$)|
(?:^(.*)\xc3.*\971[\x00-\xc2].*$)|
(?:^([\x00-\xc2].*)\xc3.*\972$)|
(?:^((.*)[\x00-\xc2](.*))+\974\xc3\975.*\973$)|
(?:^(.*)\xc4.*\976[\x00-\xc3].*$)|
(?:^([\x00-\xc3].*)\xc4.*\977$)|
(?:^((.*)[\x00-\xc3](.*))+\979\xc4\980.*\978$)|
(?:^(.*)\xc5.*\981[\x00-\xc4].*$)|
(?:^([\x00-\xc4].*)\xc5.*\982$)|
(?:^((.*)[\x00-\xc4](.*))+\984\xc5\985.*\983$)|
(?:^(.*)\xc6.*\986[\x00-\xc5].*$)|
(?:^([\x00-\xc5].*)\xc6.*\987$)|
(?:^((.*)[\x00-\xc5](.*))+\989\xc6\990.*\988$)|
(?:^(.*)\xc7.*\991[\x00-\xc6].*$)|
(?:^([\x00-\xc6].*)\xc7.*\992$)|
(?:^((.*)[\x00-\xc6](.*))+\994\xc7\995.*\993$)|
(?:^(.*)\xc8.*\996[\x00-\xc7].*$)|
(?:^([\x00-\xc7].*)\xc8.*\997$)|
(?:^((.*)[\x00-\xc7](.*))+\999\xc8\1000.*\998$)|
(?:^(.*)\xc9.*\1001[\x00-\xc8].*$)|
(?:^([\x00-\xc8].*)\xc9.*\1002$)|
(?:^((.*)[\x00-\xc8](.*))+\1004\xc9\1005.*\1003$)|
(?:^(.*)\xca.*\1006[\x00-\xc9].*$)|
(?:^([\x00-\xc9].*)\xca.*\1007$)|
(?:^((.*)[\x00-\xc9](.*))+\1009\xca\1010.*\1008$)|
(?:^(.*)\xcb.*\1011[\x00-\xca].*$)|
(?:^([\x00-\xca].*)\xcb.*\1012$)|
(?:^((.*)[\x00-\xca](.*))+\1014\xcb\1015.*\1013$)|
(?:^(.*)\xcc.*\1016[\x00-\xcb].*$)|
(?:^([\x00-\xcb].*)\xcc.*\1017$)|
(?:^((.*)[\x00-\xcb](.*))+\1019\xcc\1020.*\1018$)|
(?:^(.*)\xcd.*\1021[\x00-\xcc].*$)|
(?:^([\x00-\xcc].*)\xcd.*\1022$)|
(?:^((.*)[\x00-\xcc](.*))+\1024\xcd\1025.*\1023$)|
(?:^(.*)\xce.*\1026[\x00-\xcd].*$)|
(?:^([\x00-\xcd].*)\xce.*\1027$)|
(?:^((.*)[\x00-\xcd](.*))+\1029\xce\1030.*\1028$)|
(?:^(.*)\xcf.*\1031[\x00-\xce].*$)|
(?:^([\x00-\xce].*)\xcf.*\1032$)|
(?:^((.*)[\x00-\xce](.*))+\1034\xcf\1035.*\1033$)|
(?:^(.*)\xd0.*\1036[\x00-\xcf].*$)|
(?:^([\x00-\xcf].*)\xd0.*\1037$)|
(?:^((.*)[\x00-\xcf](.*))+\1039\xd0\1040.*\1038$)|
(?:^(.*)\xd1.*\1041[\x00-\xd0].*$)|
(?:^([\x00-\xd0].*)\xd1.*\1042$)|
(?:^((.*)[\x00-\xd0](.*))+\1044\xd1\1045.*\1043$)|
(?:^(.*)\xd2.*\1046[\x00-\xd1].*$)|
(?:^([\x00-\xd1].*)\xd2.*\1047$)|
(?:^((.*)[\x00-\xd1](.*))+\1049\xd2\1050.*\1048$)|
(?:^(.*)\xd3.*\1051[\x00-\xd2].*$)|
(?:^([\x00-\xd2].*)\xd3.*\1052$)|
(?:^((.*)[\x00-\xd2](.*))+\1054\xd3\1055.*\1053$)|
(?:^(.*)\xd4.*\1056[\x00-\xd3].*$)|
(?:^([\x00-\xd3].*)\xd4.*\1057$)|
(?:^((.*)[\x00-\xd3](.*))+\1059\xd4\1060.*\1058$)|
(?:^(.*)\xd5.*\1061[\x00-\xd4].*$)|
(?:^([\x00-\xd4].*)\xd5.*\1062$)|
(?:^((.*)[\x00-\xd4](.*))+\1064\xd5\1065.*\1063$)|
(?:^(.*)\xd6.*\1066[\x00-\xd5].*$)|
(?:^([\x00-\xd5].*)\xd6.*\1067$)|
(?:^((.*)[\x00-\xd5](.*))+\1069\xd6\1070.*\1068$)|
(?:^(.*)\xd7.*\1071[\x00-\xd6].*$)|
(?:^([\x00-\xd6].*)\xd7.*\1072$)|
(?:^((.*)[\x00-\xd6](.*))+\1074\xd7\1075.*\1073$)|
(?:^(.*)\xd8.*\1076[\x00-\xd7].*$)|
(?:^([\x00-\xd7].*)\xd8.*\1077$)|
(?:^((.*)[\x00-\xd7](.*))+\1079\xd8\1080.*\1078$)|
(?:^(.*)\xd9.*\1081[\x00-\xd8].*$)|
(?:^([\x00-\xd8].*)\xd9.*\1082$)|
(?:^((.*)[\x00-\xd8](.*))+\1084\xd9\1085.*\1083$)|
(?:^(.*)\xda.*\1086[\x00-\xd9].*$)|
(?:^([\x00-\xd9].*)\xda.*\1087$)|
(?:^((.*)[\x00-\xd9](.*))+\1089\xda\1090.*\1088$)|
(?:^(.*)\xdb.*\1091[\x00-\xda].*$)|
(?:^([\x00-\xda].*)\xdb.*\1092$)|
(?:^((.*)[\x00-\xda](.*))+\1094\xdb\1095.*\1093$)|
(?:^(.*)\xdc.*\1096[\x00-\xdb].*$)|
(?:^([\x00-\xdb].*)\xdc.*\1097$)|
(?:^((.*)[\x00-\xdb](.*))+\1099\xdc\1100.*\1098$)|
(?:^(.*)\xdd.*\1101[\x00-\xdc].*$)|
(?:^([\x00-\xdc].*)\xdd.*\1102$)|
(?:^((.*)[\x00-\xdc](.*))+\1104\xdd\1105.*\1103$)|
(?:^(.*)\xde.*\1106[\x00-\xdd].*$)|
(?:^([\x00-\xdd].*)\xde.*\1107$)|
(?:^((.*)[\x00-\xdd](.*))+\1109\xde\1110.*\1108$)|
(?:^(.*)\xdf.*\1111[\x00-\xde].*$)|
(?:^([\x00-\xde].*)\xdf.*\1112$)|
(?:^((.*)[\x00-\xde](.*))+\1114\xdf\1115.*\1113$)|
(?:^(.*)\xe0.*\1116[\x00-\xdf].*$)|
(?:^([\x00-\xdf].*)\xe0.*\1117$)|
(?:^((.*)[\x00-\xdf](.*))+\1119\xe0\1120.*\1118$)|
(?:^(.*)\xe1.*\1121[\x00-\xe0].*$)|
(?:^([\x00-\xe0].*)\xe1.*\1122$)|
(?:^((.*)[\x00-\xe0](.*))+\1124\xe1\1125.*\1123$)|
(?:^(.*)\xe2.*\1126[\x00-\xe1].*$)|
(?:^([\x00-\xe1].*)\xe2.*\1127$)|
(?:^((.*)[\x00-\xe1](.*))+\1129\xe2\1130.*\1128$)|
(?:^(.*)\xe3.*\1131[\x00-\xe2].*$)|
(?:^([\x00-\xe2].*)\xe3.*\1132$)|
(?:^((.*)[\x00-\xe2](.*))+\1134\xe3\1135.*\1133$)|
(?:^(.*)\xe4.*\1136[\x00-\xe3].*$)|
(?:^([\x00-\xe3].*)\xe4.*\1137$)|
(?:^((.*)[\x00-\xe3](.*))+\1139\xe4\1140.*\1138$)|
(?:^(.*)\xe5.*\1141[\x00-\xe4].*$)|
(?:^([\x00-\xe4].*)\xe5.*\1142$)|
(?:^((.*)[\x00-\xe4](.*))+\1144\xe5\1145.*\1143$)|
(?:^(.*)\xe6.*\1146[\x00-\xe5].*$)|
(?:^([\x00-\xe5].*)\xe6.*\1147$)|
(?:^((.*)[\x00-\xe5](.*))+\1149\xe6\1150.*\1148$)|
(?:^(.*)\xe7.*\1151[\x00-\xe6].*$)|
(?:^([\x00-\xe6].*)\xe7.*\1152$)|
(?:^((.*)[\x00-\xe6](.*))+\1154\xe7\1155.*\1153$)|
(?:^(.*)\xe8.*\1156[\x00-\xe7].*$)|
(?:^([\x00-\xe7].*)\xe8.*\1157$)|
(?:^((.*)[\x00-\xe7](.*))+\1159\xe8\1160.*\1158$)|
(?:^(.*)\xe9.*\1161[\x00-\xe8].*$)|
(?:^([\x00-\xe8].*)\xe9.*\1162$)|
(?:^((.*)[\x00-\xe8](.*))+\1164\xe9\1165.*\1163$)|
(?:^(.*)\xea.*\1166[\x00-\xe9].*$)|
(?:^([\x00-\xe9].*)\xea.*\1167$)|
(?:^((.*)[\x00-\xe9](.*))+\1169\xea\1170.*\1168$)|
(?:^(.*)\xeb.*\1171[\x00-\xea].*$)|
(?:^([\x00-\xea].*)\xeb.*\1172$)|
(?:^((.*)[\x00-\xea](.*))+\1174\xeb\1175.*\1173$)|
(?:^(.*)\xec.*\1176[\x00-\xeb].*$)|
(?:^([\x00-\xeb].*)\xec.*\1177$)|
(?:^((.*)[\x00-\xeb](.*))+\1179\xec\1180.*\1178$)|
(?:^(.*)\xed.*\1181[\x00-\xec].*$)|
(?:^([\x00-\xec].*)\xed.*\1182$)|
(?:^((.*)[\x00-\xec](.*))+\1184\xed\1185.*\1183$)|
(?:^(.*)\xee.*\1186[\x00-\xed].*$)|
(?:^([\x00-\xed].*)\xee.*\1187$)|
(?:^((.*)[\x00-\xed](.*))+\1189\xee\1190.*\1188$)|
(?:^(.*)\xef.*\1191[\x00-\xee].*$)|
(?:^([\x00-\xee].*)\xef.*\1192$)|
(?:^((.*)[\x00-\xee](.*))+\1194\xef\1195.*\1193$)|
(?:^(.*)\xf0.*\1196[\x00-\xef].*$)|
(?:^([\x00-\xef].*)\xf0.*\1197$)|
(?:^((.*)[\x00-\xef](.*))+\1199\xf0\1200.*\1198$)|
(?:^(.*)\xf1.*\1201[\x00-\xf0].*$)|
(?:^([\x00-\xf0].*)\xf1.*\1202$)|
(?:^((.*)[\x00-\xf0](.*))+\1204\xf1\1205.*\1203$)|
(?:^(.*)\xf2.*\1206[\x00-\xf1].*$)|
(?:^([\x00-\xf1].*)\xf2.*\1207$)|
(?:^((.*)[\x00-\xf1](.*))+\1209\xf2\1210.*\1208$)|
(?:^(.*)\xf3.*\1211[\x00-\xf2].*$)|
(?:^([\x00-\xf2].*)\xf3.*\1212$)|
(?:^((.*)[\x00-\xf2](.*))+\1214\xf3\1215.*\1213$)|
(?:^(.*)\xf4.*\1216[\x00-\xf3].*$)|
(?:^([\x00-\xf3].*)\xf4.*\1217$)|
(?:^((.*)[\x00-\xf3](.*))+\1219\xf4\1220.*\1218$)|
(?:^(.*)\xf5.*\1221[\x00-\xf4].*$)|
(?:^([\x00-\xf4].*)\xf5.*\1222$)|
(?:^((.*)[\x00-\xf4](.*))+\1224\xf5\1225.*\1223$)|
(?:^(.*)\xf6.*\1226[\x00-\xf5].*$)|
(?:^([\x00-\xf5].*)\xf6.*\1227$)|
(?:^((.*)[\x00-\xf5](.*))+\1229\xf6\1230.*\1228$)|
(?:^(.*)\xf7.*\1231[\x00-\xf6].*$)|
(?:^([\x00-\xf6].*)\xf7.*\1232$)|
(?:^((.*)[\x00-\xf6](.*))+\1234\xf7\1235.*\1233$)|
(?:^(.*)\xf8.*\1236[\x00-\xf7].*$)|
(?:^([\x00-\xf7].*)\xf8.*\1237$)|
(?:^((.*)[\x00-\xf7](.*))+\1239\xf8\1240.*\1238$)|
(?:^(.*)\xf9.*\1241[\x00-\xf8].*$)|
(?:^([\x00-\xf8].*)\xf9.*\1242$)|
(?:^((.*)[\x00-\xf8](.*))+\1244\xf9\1245.*\1243$)|
(?:^(.*)\xfa.*\1246[\x00-\xf9].*$)|
(?:^([\x00-\xf9].*)\xfa.*\1247$)|
(?:^((.*)[\x00-\xf9](.*))+\1249\xfa\1250.*\1248$)|
(?:^(.*)\xfb.*\1251[\x00-\xfa].*$)|
(?:^([\x00-\xfa].*)\xfb.*\1252$)|
(?:^((.*)[\x00-\xfa](.*))+\1254\xfb\1255.*\1253$)|
(?:^(.*)\xfc.*\1256[\x00-\xfb].*$)|
(?:^([\x00-\xfb].*)\xfc.*\1257$)|
(?:^((.*)[\x00-\xfb](.*))+\1259\xfc\1260.*\1258$)|
(?:^(.*)\xfd.*\1261[\x00-\xfc].*$)|
(?:^([\x00-\xfc].*)\xfd.*\1262$)|
(?:^((.*)[\x00-\xfc](.*))+\1264\xfd\1265.*\1263$)|
(?:^(.*)\xfe.*\1266[\x00-\xfd].*$)|
(?:^([\x00-\xfd].*)\xfe.*\1267$)|
(?:^((.*)[\x00-\xfd](.*))+\1269\xfe\1270.*\1268$)|
(?:^(.*)\xff.*\1271[\x00-\xfe].*$)|
(?:^([\x00-\xfe].*)\xff.*\1272$)|
(?:^((.*)[\x00-\xfe](.*))+\1274\xff\1275.*\1273$)/sx
Abigail