1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529
|
! A small performance test, to see how the library performs on a few MBs of text.
module regex_test_2
use iso_fortran_env
use regex_module
implicit none
private
public :: read_test2
public :: run_test2
character(len=*), parameter :: test2data = &
"yfufcoubtwfoirqxficrlajyhmgfguiebmrcgtdbgdlfxhuoskhhdhqfyjjgpnownhyevasnwqtdwvtm" // &
"nvyqyyjctuotmfgdwauyryisoigejkficydqhlgflnydgvdjsdjaymqrhghgfdcwosgmctwrkoochofg" // &
"sfouwbqkwrhmfqxujtulibdaxxfqamvvoehxpyehvbsodvcdtsnjjarbfvcqmtgujkjnursmeiybmgcc" // &
"llgnkvnayjbmpighptkptnbonnavhxwowvmmuksnyiorjxgekqakruiekpirpvyvrvivgfarlqfytxln" // &
"dhafovngcxauseiwguwbukpwuipbvsqpxqwxfnuevkymtahaxntwcynmwqofoeeravddgwixjugfcyem" // &
"bhrnxmqlnjbbdulmaqgmhogqituxileynevaujeshcbmkmomliyinvtfoclnjuppbxqcmngnferbbtxw" // &
"oifuvylsbnlpjvlxnfohelupbbxabkanaxqqsnlojgaeaktxpgsexytvotsocvcpfmjqbxhtqpiewewe" // &
"xjrqneydksycdkxdfiwboqlslhxpqyryoklwcjhgiphnaqwapevlrqffngqlwclekrfcsapqdinqxlta" // &
"weqadfhgoufisnvnfcftlkhbnlxespvxapfpygighxpvsckhqgflxwlrvlshhahllyjftwebnqkaqugb" // &
"vbkqqkeituywledgpjqslsaiphsvtiwikkphxygybcthicwpkjtjfuusehcjdvdrywmtijfegwgsstju" // &
"enracngtmmevveadpwxrwpoifqnluhhocombaprwlvkphnmxheloescietwfdthfqbgrjdhwmrkxrkrx" // &
"peiercjiburkijxehimjurfvyfgtyivmwweksaslptovyjfdgmrffnhcdslclqmlcieksdkvhsqargjy" // &
"xjoeqerfbmcsdwxwogpmofyytueunrvrjwxnngtmofojgelucxlgxyrakqvwmmivonfaabbyafmxtxio" // &
"cyptuyccpmpfgeapyymjmwjubkidqgdcbhlhrjgmrsxrdewrrqjdpqvseumvokfskikfhydxkgvntpgi" // &
"bdrjnrrksomllfxuffnkitlyiplrntnngobpebbjhfvjtjiqlvwkksodbgjkheaiwxtbpsphkurphkum" // &
"btweqwmepfplihuubbuimhcnmkxpwawixijhdtnrlmrunffgosnoxrrlfpfijqngltvxtwsfsupggbuw" // &
"gxvmjxiucjbnmfakshrxymihosmbhpxonccoxetjwxyjbxpieywmklkbnusncglccjqbaxlmidoqbobr" // &
"kaewbuynsygvcpijlbpbawinbqnkrvvdwhfxwdkjtfgipejhqvqiudkqqagmgbikafbcvdfscxtwncha" // &
"lqpiewmirknouxmtjhrkirkxrhehvmgqeoarocpgxsobkedkbvvwcjwxnycubuggbjjtojlupeaohkgn" // &
"jliqcujrqmusxbxfyypnulfnkksqmwhmvulwoqlgpovprdtwcxisowojddwkyreotaqqmmhfcmsvovhl" // &
"akvjisvrlcxtsxbtphbjpftfafrtogvgldsimijtgsxiurnavjisjwqgfnftqjodclgpwxdokivuflmm" // &
"eueuwjrkwgeconmjmfxffvaotocuytajdbuywjhvgatdmduedlpuhlptpqjmaygviljckiwcwcarfvix" // &
"rhrutcdjsypoieksqpkhahybueyheogpwxowreusjdlunevxsjimamjmqmqkdleagjldxddxuspvifnt" // &
"rsyxrtkxqcbrumhcixmqhmdeupkscriuwvgrulvenpcofqebsdpcxtosuoxsqnwupvtuaphrqymriyit" // &
"aruhrybemaqlwgsfginbltvpqdqypsclgcsohxsflkbxphblfgtwalqpjolunayhsayiqnmflhtrddju" // &
"pliihrfuaaidfihcgmvqjnjxawgwiwqmkjrqrnaeoqodmyafkwvdgofnydwumvdixkroutqlwamiaura" // &
"mxlqntlnqxwodvfbbukufusjvupshlwmuqxsdsxivdanbjyopjmunucfeujdkefdbfxgwutbganghkls" // &
"miiunliswicdulkxixgsrjdxjrxoavqfvcwguesddjwhoaoxnmxpvkggumnbptfjphpltmbfisjpfiks" // &
"bpoaccqopjudmthvanrqbpdfpqaihdaeyxkrdcmlgajgdspvtplfwqfrlgifphgnpigqsrmqtdkqspxp" // &
"uvtnscmdnsyhknjwnbgmrhlvdosmbgihdergufhdagjuulrqutsxtmbyocobgspprnhyvwvnnnxeecda" // &
"bxqrchqcsppaqvdgtqtgtwnysgypwokytygjnjpvbwtprcltedcxdmsiepmqnlbdglrekcwmcpremtmc" // &
"xuhpscnwqaskunvtcprebuajvfusdgmwdjfkklfdirpvgtljrgtfjbfsywkbwjusaixkfgbpedvywlut" // &
"wcsbcsoldenljrwkaxuwladcdjahnehfqksobnirycoyyupwuvcwvuphehclmbshphkpcpyfhprwenet" // &
"bdtxmpyttonmxsmjtmuoyflkbhwguqnmkcjjxxphtrteowlrtlfxwxrsoxmfcacnisyrorbvuqpaxwvp" // &
"xiweucqokjtacadrdbgryktpnkcyftlnxlpslifmqwyvqngxtkkdocwauljmnrfjvuqomqwupwvtpqkc" // &
"ldinghaqjqueikcvykvbwvsxmvfoidrmlbqarllpdivnbbiudskvvgkxvpxphgrnkhosimqktoysexlg" // &
"tsobasacbttlhpvwjjjowofhxgdsuimibkwcioaraoawjcipbyaafquruailxcxltxoxjvraihlgeyum" // &
"vebgktjbtjcfblujxaoybdadwiwwuxwirigeseqmleshnhikrtvxbjxrwvxhttbjlsvsyqrweojncdse" // &
"itrvhyggxwuxrrhdvsdadxoglnajkyqkbtqkvnnnntkvangesryfaeetnaftpieggvbalfgvevjbddkm" // &
"ppctcgxsrmcxmpnuvtykaimssidfnvggbwththeduhpisogktyhlwshadhvabtqoykmacedtgusmejvi" // &
"ucrlipspbwaveibpompwxdxbwneqcmytrxnktbohtqfnmsvvovsffbbhfnrrsjsricsyikfnlqfftxbn" // &
"uatbhovluljigwakvvofbofbgbunrmqmosilpiijmnhpccihhesjgetywgmvuiqhblrfvevqxthblhhf" // &
"dbmowhixeqhymgwkdjykhqehemtcrgfvlaxtlgbsuspfidarknfsmqvujajpxalcumyefayhtrkwtcwg" // &
"askygcsmgyesdrqehfkdsvcpxpvxmfycjjluwdbgwdtvimrdsuqntfenvklppnhxuwebhovcrpqggpdf" // &
"ghypcgohpohokqybvjunweporoafekscabfegwwyrrknmukehnjneeaxfhdbyfcrdtqjrxvdlfmukdmx" // &
"htcilmeccipvmnpgmdmoimvuekosxpclsnwomypwcwieqmtmxxapeedeuqgcdtlhxemohrerhkethxfd" // &
"iwyrwsqxqvgtytkwcmuvogbvgrrramstxeddgwgoxtvkuiuhbrgsousyjkpyvdkqdyhvjqcepxatreoh" // &
"vujujbeabktdpmnttrkrqfrrukkjcslvwqnpeqarhyytxbjcrxmarsiaaxickdyufrcgwoweuojrajlf" // &
"rnpihjbllpqnuivvfnwvfixthxdyfuthogyxsmxyfctuobbbhxldvdrneqfiwvbfqctaxbtrkgixcjnv" // &
"baohjgrrytxgerjhmoaqerdaysjdvwjkqluulxgwvxitbtuqwwpilaqflxjgwhecwrylodxwhxchfpxo" // &
"pxfyvcjeyfxcnkuaplbhyckmbwhvbohbxxrrltytkhnttpsgsqkoijqxjwpvrdjhnjiysxqwqhmkhycb" // &
"ckgoihnmgejtgfsbgxmibsgvqsymjwegpndvfkpsnaiqqbuprcihnmenjsbpjigiovoptofoddvfkbsl" // &
"jnskuofnxkdlmsnijoxbkxtegrffiicsuyuswrwwtthxvqyxalknavkmvcpynxrauldioxaqhlawiitu" // &
"ofunblmgyoiqvqxgufmiguokcaocpcvuctpxdwnixlcpfmhdjudqkdgxscnutwvjbtsvgpoxocudaykp" // &
"suedtpaowmtnxerucqifyetwomfjwoxvfgedfabaqydlykduylgmvgwqiefqkpbdsnmggoupeycbakbj" // &
"fhguxhkwfyglojjsoscxjgtmohkbpfjnngletolghmgyajnpdohkjddojdfgsjvxlgfulyieqlkcamax" // &
"jtjxeubkkuwxswdaakqoolgnmwdmdmdvwkivrpwbuishevpvvljiwsifgjtjpolwpjvjahxsprxbvkfk" // &
"dqmbmpyjflyvfuiqfyxwuukwmggkuudubsljlditnecynmlwjimxbtijfunonxsmttblhkpallcdgehs" // &
"tmdxhqafwfjfoaeootjijuhlskruiccbndvuyqdajeeaanfetwabhhgqihkskvhsbceesrjqnajcabsn" // &
"npgocpdfbadjxpaoiyfwtibjsumvtmawggroyuarelgicwqabcaqmmdjjpcqrkjfbvlarouruekusdvk" // &
"lmstjpadtqlcolhuipssvxkgstopraulffioukmdtykfkeelkalscfgvmtaenbarcmljugmbnpvkdwkh" // &
"utwasblyywofcsgdcbfqsyfsirqprghrmmyhwohbdpdpnrifkrdecwaaksswxwldaibrrmnvpurcwieb" // &
"sskppdgqrjoyuuduosxgyyxnvclsjlenlpivcjojjokfusfqauxhkgqrkegmhtbxeoitqycgywkianki" // &
"pxturfodwbysysxebkokvbnhjraasoxahvclwlcnmlqoprcuhagiojnaqrkfsldyyuymnlgejvfvwlkw" // &
"udrswidtrifkomvtddstioqyedqimbmplvarnedwjgrxtriboqqjipsyjppmoomyonjnugvxerwdioci" // &
"shryljawkrxcrcyijrnybgorckmavnsdbjxtrtdykqrhgccvowvadepqraccfusbppghpcldmvmgsrjj" // &
"xkdxqqfhykkigpnfssxrcvyecgydiquhylkaxjlvcapyqlwlofcjidooudvpecrpbqlsttkonyrdfmys" // &
"mdgkimvecsljfddprgilccqcisxgwjmtcchxaskksisrsqghevwenhrjcmgnesxsjmtaastbjjbcecpi" // &
"fqphjfgxacluyjckrxeewwsqhokdnfdnkxgsludmfkwstphflpjbkxneajhcjduiqwngrppvpnktuvkb" // &
"ycxlcoihvobjafkruvgtxsiccruaduipchrgiombahbvnobvpjgktuupplvmqkorpgcyrdgomwdaohca" // &
"dagbnejnwfnuyduyyacocywdstjqcakvcnsrubuughqonaeunjvqhtyhepenlbxnfdcwhuxnqmyqhhus" // &
"lgsumtrmweggogfumcummtrodtovsugesxwgfwfisuaejakrljqqsnopenrjtorvaitgromtutrcexqk" // &
"ysclousbppseymovdvgidjriuiynmxibqnkfusktnalivcfmiabstjydogwhkcuctmvhrnimtoyxbvbo" // &
"plobexcerwdveftccjmkndsbfmbfkvchleirubndjjmutymgenkgjncccmkdonjuwqtesqbavgmktxlf" // &
"etohasfcydjytggkxpoldhivkwgmbrqvivnvqlttquklpnixqmbmielwhhmmbputwoeixbxtkvrvexwt" // &
"cuqfnlmbvkwpvykxvnmfmkikdywbeaglfopssfhqhpeetienehvyfvgfhhmsxmiycoddyhqusmcgudke" // &
"ivpejcphafsshtqlcabsusxmfttsctdukljrradtqpkipuanqwsorwgggassancplihgbvqrrrreempm" // &
"ssihtvqfggpfixbxrmxvyjoyveaaollynbcviiwvmfiyyouqduklmslqxnmtnqkfmgikwfimmmjtwocv" // &
"mgeedvhghfhoacxmvdtnmifqbpqfwwckvxrfpvxerobbgebvfnyidihgfpwnvdulqhjqqpehaqxulvhm" // &
"deeyoxfwpffotsqneeuhndngrvqkeqmocscnfshmkrgmojwpdwbynelbfwnswdttwdefnsxmyvsqvafn" // &
"vwoslnmxsqdfxescisibdctoniyfuqpylmgrgeruxhsovbbxhxyrevatiogymxsxhgwqvxtalvxexjvd" // &
"omqojowyinfqnbfoahsrihhscgitlvyfoulisrtlobxhkmwcmgdwodrwkollnlcwswlqssoadeixcfof" // &
"rwidlrkmrlmdqkiaufebnohujmqtxqujuohmhhxauqubylusrkfbqqyiomimyjfijfyaceigasqerskk" // &
"poxixlxafkiidltpxuosyojntppfldygxnlxqltbnwlfqovypqvgsvvwdalhaaxtrxmmdmrejjyclbfu" // &
"yrhqqdoycrlkdcuhqrwrlkumnlgufehmyplsyklmropvxmoahvojfwrnbqkqceqempenmwafvnyqvcpv" // &
"ukteognyoarnjamcflcjnbbwcuqxeynyjexsscityfsqtcbvsjgxdwixkbyxggvrupfhvnnnudwjejpw" // &
"eygnaykwwxncrhygvwhlxresqoxxwqpdjcvohprocrggvwermutckskslknpuvgnhfupxiilkfwgxfik" // &
"raddxbhrvsxqeocyptwxuyuferpxlypvasdyvtywfeacvudunpcklybggtsrhogbnkhbdbpqatmlxkku" // &
"hinmfvjchrmcmklxsrkldsqnvsilwrsrtxaeknobulicwmxvreumopckbdumbdwmkpprwdetbiceiqqo" // &
"bggjwyuiwnbwagbtyvxqxpeaevvpismujvjrjstjvtmpytkvdhbvlywqdujwvnmteqvjgbpqdkqckrqp" // &
"hdrppmnawdxgpkqcftdurrgfutcbqvoienobprtjlrxrfxmuycgltfyqghugxxqjtobvccevdhqoeakr" // &
"gdfcnhtfmgpmlehobechbfvagabotqxehjlfyakllmdbrgwumipkbkpbuynxoujfshqkwvfrnlrmhnkl" // &
"rxpbkgekjahjagcsbsmbprwglhgktyeyxrjuvkfnnpqakdawrccadheulapuvhidqhsxqqjmytqcxtno" // &
"potspntsvuivckigpxcggooterhiqomlrhvxvsmejivfbcqssbmfghaugkpnmfatvgjmikuhjeoodpvg" // &
"icpcdulgmvgjdbkerqlhmxfsuorcwkwqhbolwlikkkvfvrogcpfxkvjtbgaluchvlnuvcjodueamrcbi" // &
"vfnjlchhqikbficomopvwcibvpnvxiqsukmxadxdnvrfdrfgnfgximbnrcqlgbjcpqlqffgvijerdngl" // &
"hklekpkjfspwqaxtclujbwimmneuqvfwxxrrhyfhenmhkepfreyeysxbbiuctlrtsqdluwjjhdhvqmto" // &
"fupqbddtkrpqmyhadlaurywimgdxlkcxjqcgmhdasjshtijrdlwprkhlmmccloxcayjdjprqptfsmymj" // &
"bqoyfiexasakxpxdnmykwuxxhaomxyjwkwidtncvgesarsxfkldnxsshnsvbnmfmdybjnrqdpyjbdeas" // &
"tnckjofhnghwshactsbjiurmwlnropmvqnvfnnupirfaomfuehidxlokfrjwdrraogadlvplfvywknng" // &
"vvujdpqcgjncsvnxbncotedoobyuriaxrunkdgnroshyhakmrdoqrdkqlbhkjmdkqvlcrasbooliudcp" // &
"knooleoxjtdybdiyclwotjhajhtjphrhcoqwxvjnvsgioshqilssygyadpaqhskeduvisngwjrbtvcos" // &
"ddbirkqcssdinsdmcpgvaymstlymthewcfwndijbenyklnynevknbjrsrviqbvcilcdpmkclawqtaqle" // &
"eppglwntdybdcwyssfhpeagrajhfbrmnexkkxtrkqgjiqemvyiaephndjwilkkcbmcvwgnkmgqixnmkx" // &
"elawodybcakfryievwemliboywmxmboxhwmprmcqyeafxfcnihstmovqduwclcpamwvxrqoatbdhdjgu" // &
"qyfpdrbkeefymupjaugepleawrgsthwpeltustmadoyxybukfyxusquvjcsheqnbuwthpwlfmyedfipf" // &
"tflwqomxmmpswuyecnvfcmqegtskopbtxhmgrfuwihbptuochpynwahmmhtxvxvteuopeyoscakvltuu" // &
"hoemthcqgdrcgkhtielstcuiqeugkyyoucmfuommscmspqvtqrwqpveyrmmvxewrxrluvvrrwkhjslom" // &
"yhublmihxbeyrxmnhimtcefpwbkdunrjvnuonaqrtvaatffaxrpbesydugufqsspismlpdiotxprxqsc" // &
"bpvlkbavsgwujredbynvmelbgcbwrxewqrduiwlowaimivcryyjocrtbxwmublkotcsptmjpojofafqu" // &
"tsjlmyhqxumoptpvqjabgimbtkgsfomlyiimgmqfsfneluyhjtyprskemjnjvmmjkhejhqkcsjxhovpu" // &
"srxotlomltksqfjdjhkgrxvhpinumvkbkaxowruvniolmhnkmuluruxksqkvccokujjtlxstuqnvwfna" // &
"fbcercgwbjqujocqwrtnqoritefwahtpdvbedhchwukywpackdjyrosbeiqmfasnkcewsrwbcugbebkv" // &
"aqxvampeohwdajogkghuqfsiubjlrqhiajjyqlmvohtwjcbmjotaokidrkguvwxalpioibagrbgegnbl" // &
"fiikjmjpmsowculielymyqmatkxuklscmllxtoogqgxqdeckitmtkkxatfuwfhijfeyxejnqvyiqdvwg" // &
"amlqflgdebfwletrbdalnlundtxcbbhsagyoglfburvobafstulbijhkuwmrnbwjdrtgvyleyxyhvuxi" // &
"axnwdiaitpfxudjhoglntputujamxvcgofkqmtlfcbsltclmrslwujwfuusqhmmamkcclmwtliehmgcp" // &
"cajqrgoxsbpooeoosumjupqaarjfrrbagcsynqbjcfvlddhwfklnkasnscxrbukcnknejbbwjwlbpghr" // &
"smqcithlxixeumckduevlrncymcmgpfkvjkbuivlbvfrajgqdttplcsnqtkjdbiheqjkbslgmhxmsiet" // &
"lafteebjjmqaitplheekiyrqqtonlbtcdifpvmkrljwatrbehnubqnccddbitlnpxicejoxljenllegn" // &
"hbcelbonmalaviqwtjttmjjwpvpuloluialubohgigamrrckcplpiqnvowtdvgowvwnarvteccsemgie" // &
"tnwcxwcvhevsdjhjerupakqhtoxmtbaqdkjvyalwjhxbpxxedtoqiupxqxfetmjufvpuilsvycbhtnir" // &
"vkbmgeypymepyjbavdeuijvplitkemiuwhkorfhuscwiikhgfoqicwtakpbknownxnfixodwalpubpmv" // &
"yrfdvuooqsuswyqcvxsnmpixulnvvymhqvcwgmjdosdphgoagmvoltrtvbpadoscdthhvyjfxjchjase" // &
"eloaaqkrnqbofwrfcusebftiqfrgalhdcfsxtcdqquwjqjnkwdfhiwwqbsdpqecqqpnjuopcgervwyrk" // &
"hwuhjfolyvfebrubiewrwtiovnvjhvouwoulgtmuybllfnvbjqefwbkqafqvklrlcchhjijcuqhkmavv" // &
"njjghoegroppkcducgeqidfelrrfrtfuewmihnrwjargsvkgglugasxhrkdimlnhxvpglohcrvaihqio" // &
"gkaimsfldvqxytbqkbqcitajcuojkdawfaltquainijkaexhbxulkhywjvoacqefngstbssvxkcxrljg" // &
"icxdcmjommctpdmtrwjuslchqqbumypowrbjinvwasqyxpxndyxnnexshvyueselrmdvsvngstjbyypd" // &
"qsmdjbfgpgtfnxxndndodosmhyhgoafhxsbkackjvbfxyavldqrufildbkcmsrawiqsxcttfqsclpfeh" // &
"jrbpuefpsrbipoxxfxqcsjppjtgnyguritasthuporcupsdirutcquodtfcehvtwuiuceaywgwiontuu" // &
"tlbokxqfxbddkiwdfptsjhtuenspxotirvprihpmfgtsmfhsklfbfvfjpvgrexaoxhbasdeksjdahgdx" // &
"ooaexhdoqrifdqsaxtiwjttyopxkvmyrnetboggnktwsiuadjyppbxlqarleyawjykoffyjylbgodjga" // &
"rjdrrwyaxwqpvgxxckxdwlsflctnlectehdlemdvqrkftqmktiusgelsclrfxigsuojuknodjfsicfnk" // &
"hqiajcxnljxfqinbxurdsoexpsrrpxvjkcuxvglfajqqmjjbevsqwicetdyfmfthbmmdxtvuxyfqmmox" // &
"acdtqcechdxkymqoayrndqccoqsmtqcdtoqxxkhtocboxnovjklhhbbjqgocfrccotmrwqrmelkvptra" // &
"trqvyjwreaktmagussigwfsrckfvjigatdfxdrbjdeabcrafhrxwsjrfympwxdfcshauswcyyxfomygo" // &
"tafxowkwfjcauiwbrwtfgkcaqwcugrggvsarraujhgudyxjaslobdsiyqyerylloqpfrwsbffxyrqsdh" // &
"knongsljttjjtdpbyuamkppljsbrrvrfxfxxupmjpfeorvlgvistvcvupvioeprjkhmjqyrjthdrvenc" // &
"fjafqibivfqgsolabciodpnfphpmwftsddodhcyrplvdftpkxjcjaitakjbcqknogwadysldddtqjsdk" // &
"ejyxpnrqfyxwvaxiovqpkuiurofefiygqvvyqktowawcqurscmrnsfbpfywsaijjliiibccvtmnrimgv" // &
"jrsaaoogxtvwbsdtivaiepvsopwsurhvsbxtxtiqiwlhmjeupylvbdhbprmepgesowfctwhntjvpywrg" // &
"ehqfpvgnehwalvvuoxwwlesvkdpojymsndbmycrqhatbdcrsbysffnyapkjnbykdhefbtcvqswmsqfdm" // &
"qhhwtayptfeqtfcslhdurbrrnqniurqcueysebgbpabtikmlejxcrofbwbuioplhjxsafyonsgvydbof" // &
"cklutwjfucwvkmiwqaerfmpshstwnstvcurcfmgraiakitwhtnswfebjmfqlxyefbhranjynpyphqwio" // &
"cfgwqkkbqgfkeexuutuqhrdknmibdhscatnwjowtcuopuaghhrkssfoydwhtqmisqbvwhhyuluynxofq" // &
"ejbgutodxjcsrchkiplsemictwlkxeukjwswwdaiuvwxanqxewvqpmmeiqeftlaflbvswfjeyqkghnrq" // &
"sqbqtmunnousvlhnynytyyytfwmunghhlvhehovqiholftmspvaesbyvlivvyjwehmauolfipsbsnrwm" // &
"hgmutginiercduccjbgtktwswseiqccodcylutkpxbiijrcdbxntmfsuwljwxbgxpdwkkwhubgsvaaqc" // &
"upjxmjvrvcflnwyoieeeinqydqruopaeuopkxyjlxbmmdbnhydytaejhobbesqnwvcbtttkmyxiuiobk" // &
"juwgqmgpmekpmptxahrmxymwfhssdqddnrftreuyllhrlqklpayvrjeqrvqntubdglexugoydifgodbr" // &
"syphcadjomuncatnotanlbodbvlthypjhqqklfgnahjoewdplecfkecbyoycwpagesgntlgndquapplh" // &
"declnhlgpdcevxxxheaywmrroygxmmgquprihuopcfeiudurkgukgomemcsyaneidlsuifyeahvpbvxr" // &
"ktskfclyhrxjbpsjhsggdpwiqeolhaodlhmdytxchbdapxntkqgsqsbadjlnwpfekdfmmjieeqfbotln" // &
"esuoxbhrelojpwdkmsqhkakisemapyovbgxamcopfneebbksdlxqbvenqsnumqnusjtumhoijskupuij" // &
"qjsqlfpcumoequwacxoxlivkeygtwedotyotntfnipwhxsfjeokdlsuddkhbwruvuicketdwbefejqiq" // &
"xewwyfgrmlhjcyyrsbbwnlyuoxhjdlbgeledepuhdrqbftpwcmvcxdvurnehqxsbwloctdqbyxpjilsh" // &
"ljkosjnbsfogvtlxclvwlltqkffcahlvhrrlkaolrkkxwxahcfjhxtqhdimurmxljhatidgqbgkoncds" // &
"rllxdpvyiavmredudwpdqswuakvnbpuinstfmlkpgfoueixghxgkjhrqrqwltdytsmsoybyqlssjgnri" // &
"uqbreckcyvtyygwyfdrsaobrvfbvshgcrdktlkxodjivguspxsugqqteempntdwhxrnqspojjoipckqn" // &
"wylnsocqgewmumdgdessdtafsiiehfngimfexyrakhduggqvvuyqbvawqvvgpibnneegujppqhqkaltj" // &
"kcprlsywtgqreargfmieuamiwlvqdoyiwjhsejuoujcglmxtturjdtrucorokedvymxqaaymwyhtingr" // &
"tpdrjxlamqkjdpbjgidnkbajtaixuxrimnycphxmydcnbneolyqpjhpundrygwchryexdwnmbqyukcrq" // &
"eilhfbaylgaxvlmusmjlnfpaonkpikaumskacrsejwkxhnoxikgcsvogcqmgbnvqqxxhxcerokujvmyh" // &
"uxwumpnqvwvvpwrajbqggsqujsfndvjevfnhgxyfemmqsfcylrjoxvmxckgpxvabnvuvtpuaweuketvx" // &
"fojrrpfpcsxntwxhajautukbljrysykowkutvtdydtdwqkurfuayxjijhjlwhgwsvnemojnanltkppuf" // &
"prviwkvhnkwdvakmwojjbkysjjvbdinjnjkuoarmyfqwnrhtimkpewedfwkqlfpuccbedeujkgidwqep" // &
"xgcbytusrpcrwfosfnaibuyqhwoygvbgxcpgbikuxwmqxcwxaautkwbqptmnbqsqxvyhasxawwbgwkmi" // &
"wjjtidbplnuqnfrvccaktbhapiudjkhsokgcjyyexxxgsmcyluneyfmcvjkgqgiawquvvptmigafdksf" // &
"fpewmpoaqnvijhpqpfnoprdxoufishqwkisfymditfsdnckuppdrqytqsojrmrxcsapmivsdlsiaxaxx" // &
"gujxunoanbutwjhpgerlnuyjrkkcywtsjljikfkajrfgslgmlijmodxolutlttdrvobcwfitpnrulway" // &
"xrbuuljlipvcjtulwlurhykbjdckpnmkxnwlamfnbwuvlrslacwudpvrjcbmrqbnvpfhchiflrtlxtdd" // &
"tcjmijtxfhcfvctgntifiucedboqlbyaqmvncbfametnjxasnbxrekjvkopjerladadiaoofjpcnwkwc" // &
"tbynwkpmgrfqrjoswqwbuxkjckxgffawyefdsqrwswwuysueuemtuetgiplmtshoalvemlmddasohwnl" // &
"jwswdiymueojrhuojwilapidxsnptucqwxsifssjnfegpckovwutmwtltixmluufviqisfxnixiibqpi" // &
"pxdmgpbgdeqwkrjqphpbqqtpsmpdgvitpdrjpmfitbfjribtqwnrksfqtjlhkjhllimgvxaxkjetumtq" // &
"yajuultoroteuvbtodbjgbhokujlwixfnhpfhwtgkhcivbnidmpcjxgdipelagjdgabviwppjxphxeda" // &
"invbdfjycxkqxwmkuroguirvfycwtmglpuqxomsudxkwkwoyxosebayutfqtnkhatbuevxkukiptutnk" // &
"hbaekwcfabjshcayhptpsmgqkscmakiireanaxgjsgjlftkujkfihcsekbwhsrjgjcjpwriimkpbytct" // &
"mlyyvntykjpkoxorwiqbajrknxneuappqafmeluqpncjiabrwylepmuxoxoslxauscekxamgiqnvjppk" // &
"hxsutprpagcxxahvwdmfqiqajollbjwwwpkxhagmrksupgpsvjtvygmagsljydavhuviurncbclvxkyx" // &
"yyhtjqlsiilaptfeqgukfiarrnnldeyhmfcqksbmhrplhdvawjalkicwoxcdbctbiyoujosjfbjjveim" // &
"xhmgxvxsnorsrwldntbeadrujdcgaovvhisukmeimjwnwgjkmwsbcslbqlosmawvdfyjovgllovrwrmd" // &
"kvtibyckdjcumvvbikqelylvdphjmunshwfjsargmcjwdakhljdshwgqtrrjgfmiwrguvenykqlyjdfj" // &
"oluqqnuyhycqigippghqhvhxbnyswsflctqfpkumydwdlhbyxbovdbibwapgysfmmbwpfayfgexsepyq" // &
"uqwwhnjkrdhgdflbuhdohsvanawoqbbeohkvlgelteyfrvtocimmxlmejcrebkfdmyrvtmjfggagodvy" // &
"vinfysievjofhdrlglypnraisneygcmtgullqpbtaadvitkvvhbbfqjrjklrnttwawicnnhlhavaauun" // &
"ipmlhsqcsaruougpeiewrywsvowjiriqyccukiubcumakjcowqiknwuhxtpwhgsrvafhbajnswyaftja" // &
"pofuejvfgulymysyfdauymfjxjsvjjmogcfqgishknnjpahjwmeikgnocrypsmuvwkkrpatlvvvuprwl" // &
"kdfodnoudgcqdpygapbrqmfeofcwkxpweqxfpdvctmbwkpmjdreanubjfmontjygsndtrydjyaadbfor" // &
"prufwnblsdfqiyftdapgbirqaxtwkobwlugxgadvhrhqdcpiounvxmihxbcreicrquqitekqynntcpqj" // &
"jnsjnfcffcovixuhetekhhlfymdxjiqkkaisgxmsxkbuqvykasmufcolejoxcxukxnlqpuhhkxwislgk" // &
"mokrwxshchibwrwwsfwnhjhsllmsgcdmhsifxdntiqobhovqecpahgryqnihtalklocpiqmcdkygruek" // &
"uavcamnmpjwfufhmqfmndcelroobxmgbjmugccaxfxfxmfyxreeyaypsrswibbqavfsffbcbocdcmmum" // &
"ohbbnvekjipcuhonmqfudytimnxlsisygkjncoyfbicqlssclwdmgrdkuriphpbbdxixognlwoxeppjh" // &
"nqdamcuunyfcnpotwucnqxgtyfqkdtlybxmgkjgacansakfitnpfjfdsftjtcrcsqvlditkslmufbymb" // &
"pwockilxixfehbogeaqoiqutubiyvxjfynnsbcwtuqmmmtsjxtdmylofmaopqvypgqmibfuyqaikhfbf" // &
"lsnqblnmcfsmaiujdarqusmqyhawtdimmarrvdfpdlslutsfugwmownhgfhokhbsdysuiowqhnfxofsh" // &
"tvmmgmmsefkmiprpppdqutaxwdoycikdgxmecfsmpdwufawpcfuexlwsbwugdrakljhyjkkpgtkqrexq" // &
"tdyyaihlhdgtdgdsmjlapnrbmfbwnntybmwvelrvyuvxowauluceywisbqjnkrlvnbdubnulexrljfon" // &
"thwdhmkkknqvoqfuhpsumlnktuyfiayamfqgcscuvhpgxolhnuiiuxokgvysartbdacdcwnkxepskdjd" // &
"vktnkgdxeqhhtbyusjirduafpfqmkcbqfehxwebxfrgxmumujrhmqhcnvcyfsinopfpbfcjariyiitva" // &
"aghrbadkfmnyyghyvdeeakjomnchnvqgktphswlvgjwywthjpnoboblmcownuljahqvdxffgentnwelg" // &
"bnbmkilgtnceptmqlemtbbodaapjybbwmpypgivufpjlbqakwhmksshbpqqkphucwcvbjfawovdurdjp" // &
"uvehhcloxkfhhqytvhwvyukyadionhmucqkwehrcddjbnmrwtqgmhacelddqubgimvhbqtebaopxoexq" // &
"gwpferiyrfbyfbmkkkxjhfowpupuxmctaxwechootysjkkgptwvsujtfjsdolsnuwmqqcobubrrfqcqo" // &
"gqevqpoysigdqhsythpmntnyybeotuakinpnpkprxclfgqnreirnuqandkjicbvboatrfkgcmfsderes" // &
"vpbbpqpfxbkocntcacxtynwdjsdrjhjhdbghjuxtspmeuqaolxgyfqduyuwgxipptmbphqumgsydtrgt" // &
"pkgxflwqxlufigigylpqklgtyyxycsylbbxbtuamsmadxmakpwgcegbxplkcxcfyblselmpgigmaykvf" // &
"fvnbfawglaoabudrwvmewegsdswhsitjebwsjadsoeuvacxdiymhiekikbmmsoapygmlarpyfxafqtls" // &
"bparnxwiwjbuomgyqcavwukerrceedqtxwopqcwcuffmgavwidrosimiqtdqcrmuwcwgwdmoromkbcpo" // &
"rbaqegdvxcffqoiskrgnwwysiyjmrtyhrnpamgftgmsrybmodcogpiyqhrycnwkfgseqrhdsxodfxhfe" // &
"dxrahtyoojcjfkdqofkglllsaoxsqbnetgfolwjgmawwssalyjxbtbbbpdnnbcybaltngwcuqacgoqcg" // &
"vscfthclfjqivlrbrgaorqdtdqkhckgbhkyvpqvbrrtaogoytibreasakrmsyxcbphcsweaqypqjgplb" // &
"oybrsauwtypvdlqaghvfquriqfjxfmoumjauloqumpgyiaerllqhrueawiscmugivknxpdjlgnniwggn" // &
"fvarkaxtfvnhkfdfrkhtokwswompavxvlqouyghhhwhhbmmtoxnbnewtybgyearxasnnwljwbphdbyes" // &
"mwwxxienuqyksnuiwieuoyylkttcgguqtsvihmggtbimkxwhfajgoebigdxkujgrvdorccvfklbdpchp" // &
"tqawkxhlwcvqlijlpuxhbwacwlfwydyyvuwnmrfktkbgvfttmhnjwlluketmblapugogmdvrkjenlcqk" // &
"jdotgpinbrfefentdjxqabafjcsffyiltnxiklboleateefptqdgviyojtcbvqjnxkuglhcvcskmibrr" // &
"pdyyclprjyvtgojghciixewdnoxrhyhojbrupkuvlikmmesbihvxalnarruupxqytnsjusvgmkhuwryb" // &
"hmwkkasujtrfhcpyiflgqrgvscgvhncnucipnxffukgymmpnnnjivclvuyayteqgbdbgoklhamstpkbc" // &
"ufjjjjdvkgsuisjnjhmrsqsujmiufqguspqaiqtqekqowhjwtyotibppemmwmrbgbtavykymuqnnvxrp" // &
"bdplnylhpegmeuvbcpkufhhopfhsnxuhjnaxnkxnqfuhbyolfggllubykiqiurqjpvpmsprakwxxnsuu" // &
"ohcluumrpuccckjymasbyukmjogabjnqiqjjahhvajrkvtoapwkgsupbmegnbyttrakvdiiilhxephyp" // &
"erdhhlaotbxlrlbuldrdykrrbmtrkxluxjqgryvqumugjcfocfyttpujnddnhnnxkhrtlmsterlhxrfp" // &
"ymaavwdnwtgotokwiyysrqcbixurbqonfglrfkanppqehqnyuuugdgutjkjequsmwxrnqascuxllxjuh" // &
"eqwjvmmnjnaedrltvciewpaietmthgoebicwwauviiwofkwewlkijjlgvfturlfjdgbseunujjijpcol" // &
"ikinyipqfkqqnsfwfsrwptfqiktdayenmokxapvtcxvcugwbcjbypanlroljcyuerrnvdswkmugtuosg" // &
"kajhifodonjhauyvipikoqvjwchondqbmgvxpgogyxhsjokgtjwqwrplixsrrqgmcljrwakfclqxpopv" // &
"yayomaksojdxmngntgtjtnyylcykoliqguabkmfqeyckynvlwuafcewujxuojaamihwsydwowvvmigxo" // &
"vjsewnpjxuwybnvcavijhtxixqomvomdmslehlqmafixnkdybpmfmtnpglnhljqyfghsorsjwsegbuim" // &
"qgssrknpohbrltfrwrmgutwbrshnpedkoevloirrwbcannrsbmkivmqbakjbmymxjphaevfqdlewrfqo" // &
"iqyprmlipirdaytjayrlthfrrgchmwdqquimnirvnmrxusfrkwkwwrdwtvnfbniwbobsgyicycsdxvpk" // &
"owraoxyghvaocxnlislytygyywwxeukeeiwlfeuhxfbluggpilyqwioymimyqfcuiivruikdbpdxyidr" // &
"hsmhlrfjjofgmoftbtpaqpphwsxeaonlaqofhvvfyplmdmvumnsmgbxuljktxcgebcfgmwyfwryjdvxx" // &
"kfolnmksqmhhtjukcwfknifunulgfnosnsswuqrvhdjlafkmncyisodraejgylmabngmwjwrhhovwsvo" // &
"lfiuctptunfmfikpptfjlnekgqyvedjpcqohvwewxxehicftpenjhlpgobfyuqckdntercckxfcoosgs" // &
"rgafwoxcodmhptpplaccxrhivytlldrbesncptjthmbctkboarhblnrqyvtgtptgwnypofrkuodceogf" // &
"heuwdvafijgbrqdyrasruaecwwwpeebvehpwlccbjhydcsofxfxcogtuiswikxeplfpwbiftvundqoyb" // &
"gxwytbsajgvjobeuuthjhkeysulifhlyoxurralhvdyjoibuksqttymmamrxrneaueewbbilmjvxdvac" // &
"iqkmbxjmjxghyyfqksrvxtcrtvpyhyibatkyylxbexqdushbhtqpwajeymahaunnmssewfpxiedqoebn" // &
"rianuvyhidnicmhebchgyggfcqiyijwvdlsqkkwcyxbvushedkpxuqndpdkowcwgtfxslwbhvfpnqfso" // &
"pewcaqdlrjqhsfgbpwignxcujkpilvdovcubwgnggmcfmgekfsfufsskkxueuvpvanxflqfbquyptyep" // &
"fyoupcvublxhowunympdqciuvhqugyiiwmijhjmjplsmlloliqsxmaasoffcqkmougqwgsvvjvlagfji" // &
"sqirrxckvokxkrojddstudouwbdjgjsijycwurubhslitdmqvvnggeqpjytuvtgybchllpgedvrevkiq" // &
"syxdpyavaftyjjjxkntofgbvqebdsocfflcwnrfrtpplorkyhgcbyosebvgewdlabadhyrpawmjipoww" // &
"womxviixthhtlnfggdbmcqueuqlubffaigypnkoqbwlugwxynwjqqwhrswiuabeqjxnllpvtivaxfvnb" // &
"dqqlyeekqjsnkvpywccgunftcvumflckymriguexplqiivpukjdfqqkjfdyiotblxawenobpvnsstmmj" // &
"hfoxpvfojvjklodwxahcraixitxlyaagrjovmmlxcceigxsvximpsvxquewiswofekajxppqqygyyndl" // &
"ljmjyscrjrwmtpwnwclqtuayiqjdbdhtuudmofditslfwdsncnsmgsvkskwlopioobclppnaxmctgfyi" // &
"lhqhhuyabkkpjiujxetbmrltytfcmqhpltyniufmiothlkeriphrefnrqfonhbpmnuwhtwtavtycocld" // &
"xiomfxllojwmtgcdydmafdyjahcmaipnawjdcdpmubmtdmtgmrwyovoubkrwfklsjvihowbtqftdcymr" // &
"veiotsskhfdrpbsvdmplmcssrvivbdruvjbxiashjgbjdgwvliwtrowfgbnnfprdqyforeudkowsyuxj" // &
"dmywkbwbfgshrbbgmmlxiluwmilkqdgescmmcejqymcnwdcqgwhmcagncqjruatilvbextcgunqihwik" // &
"igplwmmlwwmfamfvibfkdhuxgdakxlxpwahemfowxoannwgkbpkiagjvhtampipjhqictjjsidduyjem" // &
"qbhwtehkxinsefndkyfaxcjkhvtormslgjrxuomnamfkerpbgxdtwlgxquqbamyptqnjpatjojxmragv" // &
"qquabmbgjasspditnbrrmxrvjkpmrwacydknrkanwponhlqbtdcgeggnmfbrqtvyproocyrcsdhcslol" // &
"fqjuingrtjashimqvseocbqmfqiavmvodlltltvkcbypnddnqsqmqgjifvnsowgoeqspakgikuhmjlap" // &
"qtfcagwwhaajtrmuudipdbkulshekttnlaltqlyievtwvifxhydyavhpxshmjgevsfkkphdyvqwcejno" // &
"ounejdlinpomfvvfblxqqscnrmjtgwxtefmrsodnfqalrwgqmtirakxgxspkcvoekptqugxlkyvqckjn" // &
"afoiodmnavioxhatmhrdcyxvlnojrkkpeelcfsfhntmdboogymiaxkkanvkpnmhgrritxjxuhqpkkdqc" // &
"ellirvpopnstjaucaxoygeaimhlbuyhyejgohxpibkkdwxkviduprngsesqspxfknkjoskpqicosipok" // &
"iuaprejuaguvemlsqkseyhpioilkrdlykjankktoydhhlobpnybbkfnopdfusybumgsskqnmubrjkcml" // &
"olteqekwafxlxmnmjqbdhgajhrrbnkqmfujxdfutojtsubqkmfebdhytouvfypwexrenjbateshnrubd" // &
"isekaonqandnvseclkmwfkrrxrkliiyvlxusemnthevpdkwlwmfyddotbmkaxjscnjbsrnlbuybfirlg" // &
"xavbnfcihsxxtaxqnpuwcdaouhvqdrtulsrucatawtdethtxceyunmxwgentfvlxfvbvheosxvilcvpy" // &
"muniafexmhbsfsklwdlrxulcjdhyotemepmpheeeltkitjqdrtntujrskilqxwulibnjhswwcfjxmwnb" // &
"lvffueniyurmpqegtujmfdrfwpvusulsukqoyjbxibrajigqfqjcbyxiacjbjchyhicsegptroyuesjv" // &
"odfrmqfmbjhtghnkglnrynkjfjeiujnjabyletcvcjhvmifhgqfhfuvntpcgshgatfenkldkppuxvhti" // &
"vwnlwvfjajcjnsgsknujjpsfxyayjnvtetymnyuvrojgafjreyakekgwjisdnjhhsvpxylqxkwkrpdud" // &
"jciypdrxrpyjaosdvywqiuijwewrkaexedfbortrsqdwvplsnhjbmopxdneomedqpllmnqefctbqjlkp" // &
"jenllinaysxreixboynctlefrmjlkbklpedpgqlwkfbwrmjbabeqxgbfipykfoblasaldbapacsmvyhf" // &
"fofojcafuuarajqkbelbbtiuiowesrcrbxuumplunrolaamyeqhjnnmihuejrawuisvkdwuahtecinbo" // &
"cyeenfolaxihsbaoeupjhrnfbjtacrneegqyacrowwwtgwhlrdawdbocgwjkqxukjwvunmagtlbuxcjq" // &
"oowotlfsxuxbfbpxejwqlqeyypkpykximelfxsnjrwivhxkqpvcabyodnreriidekqhkmllbrqreaieq" // &
"lmfigqmmqioihmatoelhgykcixaoelydhfrjmdmqldkmdtdbrdgqhavpiasjrbfudwpnrovohsljaxrs" // &
"pvvkuqemjgsdbhytqpfwnreurtvrxdshqetgkgdadcnqntvgkllcnprverlodqfxflbvuiepuvwnxjon" // &
"gskakjjroiwaauoqvvpqucumnthcdletwdrgsreadpqvjyonaqcvxqcwfuxgnflamxyaglynhmfgauvs" // &
"llvloaqasrindxsydciaqetekmutadwexqdekqmkplbhdbcblpkrxbyhnyjemidymjimyinvmtqytjpo" // &
"ylnqcwvdfltdheursjegsikodbatpsojjkjgjfrnsbewjpeijpabocbwwkeuceaehfguagyqjfesldpe" // &
"hnqktgwujytpymbnqurbkmhqxfgujoogkbgccqbyhnwphsdveunfjuacksbaqikplvywlldnmyqbponm" // &
"stivotqsxlapxxoghprdqmjguaxqtscleflrmwobwphhrrfstyiyeyhgiqtuelbacdtcvwyescslmkjx" // &
"lgvdhscxfsxgupccawohmmtjfbavbclohotijklpxjucgmnnocidfrimmjttbjagyoxbncdtqumsrgor" // &
"mpolkfiycyycfplajabvpqsqrcwxbkuhiukwqnanbymancjtwmxdukyysbgbuorgovshfoxridafiljq" // &
"sujiqdlargqvmdtrxgmpeyamyjhgldptbplmrnrhpxonkrfwradhkajmwlcxlectxvhaokdfsrsfegmp" // &
"icujynmycqauvysfvalqiqkfexxcmxlnnyijoudleqhxgsvuplmoldgstskkxhwbtyroovstvgmlquaj" // &
"iwmhrrkkillchbvlxiybyhqbprnfqqgcigpkviyxstigjxcfeedermgrdpsfnspenahffjujefpefkwc" // &
"blaswperaivbkrdiabmydvavirdsvfgkqukuvhwcyvligivmylbefvsxsunhnayuowqmbtcgfhcyrujx" // &
"yufunajkruooouxpqhvgecxxmscctgqluxtnfbncxudxigkdmoytaodgqwbcmdvgcyutohswivnhjjyu" // &
"ehinmjihelwbakmwxpjsykcnymeruflyonwimrptuburlewfxbpplnixsyqkmubvcemglftmkrfnaoma" // &
"gkfqqjnrxdqscytrtpwfsyqejsffgceoqlsysgxtaojutpvxikuxohleeaqefgftylbtifyaywdipgsk" // &
"utlhtbdfvjirhsectanlcdgmhucjhdyakwjfuykeowubrwusdiyasgkhbuiojdwheefaahrjikwqxlkt" // &
"vljpcoqeeoiqbslujtaxmbnnyihiwljlubnfgfbquiflhuqaxbidlfpadapckmxboeqsufjikdcocmis" // &
"ywihfpvnodrypfocydvipnegslcowgcjijotahkclcqhappdbkhucnxhaqnwokxxtspwfakwlcveysvy" // &
"hxksaqwpakysklwcibwdhlhybrjbrbakqccfbjueynecjucytiivxfhlgweovuacqsvdidudqbtotcfc" // &
"tpmfookytapvmopdthjnkphdrrucniiaodvjinypadvimkgjngcoxysdwwrsaejembkixmxtbuykfesd" // &
"gradldaotdhsimiooqpwuwqsucytoyocdrxpcebnedpjocpkgsxawpnpxqacmhjctsbutulklvkejwwd" // &
"woopatetmohwkcebjtkxmvcslhomlxykttfivpooxamhwutyhocdkrehplaysmrutumooehdjtdhbpmh" // &
"smevudefwiqjdksoplnljfgxayhcpyhlplvdhvgsebeqqyrwewyxrunqhrdfdchyfpgdubyfbtkrjpxa" // &
"pnvcjbvihwlsbheoolenfjqiqfcncmgxrrfyfursivuuidonggxrrqqiafomghcbkklacebvrtlxhdqx" // &
"vlrqsyfgrvluhkpncbmgdphhlewauqammglicjmbjwsmeosviopfdsirqjytnejkcvffrnymkmuvhpjx" // &
"jlxhwfubluyijnxtlnexdoxhvlusbbyhmwumglhrrebhgatcrlcetxjhqqkdywshivdbwuxvgeuguhnd" // &
"ygwohpidabivdxqnniahuvlthcmysiadlituipistlblnlosacnfrceqbhwtmbbuiucckhpqcoepjxsa" // &
"huqfjwkjvyadjohrxduoddmeunsecuemmrebpddikjcxltahanlusbbnqbjxecaeusfaktkeoicnoikb" // &
"esddmrvfvvrmgjemsegyycbjnhqeijncvrlgomdtavmvmudjdcupdjhredyyrjmwudorcetrngfpcmde" // &
"crijthwtrywqlmyobyrabjwvamtesiotvhqvgvbocolwijbdbtjiqjlxgxgeepyequlnkhnbxevimfjp" // &
"lchujlsuhmcshndoaeujubvymdqvxbjulkwyjjwtjrsfrciubpwnbeqqlvksndtubyqwusovmjsrbmis" // &
"jjmoscrullhgptasxmclmtqegtujojndmhcwyjekbjfkvstukjyimlyjyyyxquvgpditpabyenenwcgs" // &
"ywjsxabvtokoukogkgvekpmjaplgadtccksthmmiyegqnfkriuoeauqgcpkcvsdjnaurhmbhegycofhh" // &
"fayhbtpinjxelwysibqcbseekooqkbohufxbsmbqdjlcvffibljixxehspeogsyigqpbnecbipnopwdb" // &
"nnifaaybhrjulosujsbnoeebmjqllwqlijltjksxrnhdicsxwkjkxramkdqumeqqkarqnvwnafmfhjdj" // &
"fuflvdsjlcmqgstvtfpullctphnxasjogxmybhofdxadmatrawjyufolyxvvrioyebesnanqchnvdoib" // &
"nlnyqysrqekeevemriwqpxxkdpwysutbykypqpvoqqfbmktslxwhmmeutdqrldohcuxhoqahxxsbtpan" // &
"hrqlrqpwhkdclvypvojegtsjrdjwkabipulonnkvfqtbqulpqpsajayxtwwavoluhcrwddwngjltsxrj" // &
"nipydbcvevmokycxhpnudwdnlndxrsptrivtawdregnhhgdlonovqloguwjrmrpyurpxonemtrjbcvih" // &
"wxlrwcujktsddptannbwvqxjqvtaduucaqxgwqfnlsanwbqckollmwjxwdmpjlsxhvnmlpoedtaasfvj" // &
"bqooshykkpsbujtsuekkntuupkpxwdeuousdfrgewhfkbmbgmpfgbqhoxhvgmacgkueegcxanxfqumfs" // &
"iubxppsuggyccbgribnxswxydpdfrfcntpbwnawdyitpcbnmrqlkomgihoyjsgpebjuogghmoddpipdb" // &
"gvdbnqcfephxjfohpxgpnclgabgiwsawomkoghfwlqcrtywefmwwtqcxdiytqttquxbkxmlpqqxpiukk" // &
"cnrhglqilupjamfvsjtegfqohonqxrkuywlfakuembhlprsrcdgigrdkawboyjhdenvrhnnwbhqbfisd" // &
"oxljwkbvqpqpnnvhjlkcqyhjxntfsemwjgygdqybuhetljrkysqtkcppieivyikpjvjecspijlqcrjsy" // &
"beiycluemnscfquaryuoaalhnwftopueffexrbgmpidehcgrylgdmhpjskbnbfvwijnatmsroykhqbyn" // &
"bkgywndmfdsowpekeqemiglurfwavnitartbhgrjewnuuyjmouelojqttonqqybtwjauttmaowwvqdys" // &
"aifjaadbtwjmnohxumlpwtqxwulbrscltcddshtdkcrvmhtljyphklhawiqdfdavajhusnphwigmgnsy" // &
"jpweohgjfdlnnrgpvxhmifvwwfctthbeteteossibdjrurlyawfbqcqfoembafsqwubucuhjyhhwdygg" // &
"dvixkkdadavdouqkrprkflhsfbsufyyqiskpegyfeiejdsytedvwhtryhbftgxpmhpmkstuvdooyvhgl" // &
"xrdgcepoawbkadwlptdpmnqhysrlrpwbhamhjsuntaaougywgmapdvigpyoxpfvjnicfsixnfdbbfuaa" // &
"lcykclndnjhfdcauyegkjvutlcxcxapfdvqssoedosuyrpeoedpbosirbvggbwpgjxepdsmywqhkyvie" // &
"ufuvkkqmkngkoqwoapabduclwejwbidjqwefloglbtyibyloqnlhfnfvbjuslghswsvwoytluqxncbrd" // &
"ttsphfvuwnkvsspcjxwwpnclwxnrjmbnmurcdxbfqgrkbsuptmgpciivhtpbujruynwhceqhffykkkbt" // &
"hcimoqxfndpxngfbfoymjwnkxdedndhsurpqgcvajafoythjpwupivprvaxkbihwljxeqfajtrfrnlts" // &
"ihouqkkipqstaqiwdmlwovvobctsstbgoqopsejqubcyeaduyitdjajwclginbshedrbohsfkvyjskpi" // &
"bbqvomnoqfopusgrdxjyvhseeqofnabrpbekfssvniyfiosnwryeisxahnlypdukpswueywsarkiytcj" // &
"dhciajvtcjyumpgmddxammrxtnnewecrtppqjrgiunlatfycfguuyuycrloswqxtruokqgecwxklimjx" // &
"climjoabdgakkmqadkomremfewxxlcevqgsaihqvlrrcikxjnybdlclrborhybpgdsngliwvhpofcgrr" // &
"liauabnuiawwejktaamowyrxswkcmkfqxddvyocbtieoebtotwxddcaevpcqbffuvxcehmnartgwqqgf" // &
"lgsevrtghuvpfhxnmbkwlaejmlolfovsvnrcbcrtocjrkcmmbxrqqpjmennytftdsdstyfwajqhrsswq" // &
"ganhuiafgssnkpaiacngbxnotgathtchdhjcyexlxjbsqeefjbukpfhsrmqynqoefkrxultjbbtxabue" // &
"mgdgxehnumxwajyrcjkfkuisdsedjlbnfocxgcvvoxagwsrwcnbyyslefumhrapovohbeopkleifsqfq" // &
"txveufxkcxpktgxuelluuukhocddgacameyviptqbhgeowtcdegxbfemjlbljuagqnnprlxwimfinkcv" // &
"rpgydnhsusmbkmipkoeoxmiycqhrumgqmvooibxdioeffcblktyooypsyugryrcsldrobkbowvlblpfg" // &
"ocyfigeyndnimqgoitgercodhsyymmigwmdptluytbbjceaybeheksxshjyqqnbaksjekthtfkovsnem" // &
"nxriivnrqaalsctndqmkbbclaaexdqxhkvrypenjewcadfqavruhicuqqouwvaksnwpqdbaveeoqvwrs" // &
"dsatuulotdmljrfhoucqssnkugtnkossjapffahpvlpdrcanwtsmsgncascsmvjmnmjfqnflfrwjyggb" // &
"irqffiamuwftnmgutceumosatjfdpianadwucvlfywtydoefbqjljgihafuxselakthuppjgsqchedwf" // &
"fjqwrbsmbseluogjaykpaqadocjucnyxqishjkfohfbeupphahvxmdldcsrvebfkfxbukiwvdwqrqmxj" // &
"ksydkjvsvlxmljxyuvuygwmvryjboxissapfgyagbmejrwfebcqmmbbmujndypghpeqwuwngnalnddpp" // &
"ojbpbimbpkclhykhqnqcnblqvjkgfjsyjsgwlalljcvkdxapcmjuoteckhgsscqcshhtvnnlfahqlnvy" // &
"wvafimejpjyyjteefkwwhrbymxqgxtcyteiddqhtemjdxlavsluscdhvgnxxhuiejeuxwiqjpjpkprrc" // &
"dtyechybcaynwyaefqnyxislgofuccexfjpgbciwcvmyhqwtolkqlgnpqxfisnriwqeookifnamsappk" // &
"gvrfdqeqdaydkjlliebianntyccmekhlqvbxcwuiyovfwnlxnxsjtbhfehamwriokoeqkytwatitjupv" // &
"jwpswruqvhssklcikugtnyvgqxdjyhneebvomutsjhqgkdbtdbweiaxhrpmikpnbitbkmdxpvtjjcewx" // &
"rqcmlichqbboyuusqlwmbugfanssbgcrfncqxmhgyyvtmttsyvmyqrpeifstwmtnorqbgtbwoklfecun" // &
"fkuiayltwksxpoirrtiobfalrkclsgnktppsmjsgqpwqijyqupgbraydssfxdviyobjmvifkiljiuqfw" // &
"iuvksimfakytafddefsdvtocllfuijyrpdatutbarjsowegqdfiicjfsvpciudxbygykxocmiagowdpf" // &
"ksvljdiohurgldsqgoilcjbqpxsffnyblweonpavgwmqspubbhxobvaeajpeppsubsardlvnktgjkfel" // &
"beykixarsblpdxqxhlcrfxsyhsbhhogcsmmudcythtyikccgjvukcwydvthlvwhpiosfvbvdsedapgnk" // &
"rpnpyunolgmxablnyuufteatimxdchpasgenptgfibhmsdogljgqlrnjkosspwfakpennvjncuworbxj" // &
"jnnfifhvatovlchferqeciuskdkyhbyetapvyptuybnlpmirwqkcqalrgmktnqufkkewesrcgkjaisad" // &
"mwtvecanbhnpbdnyiyhulyqxbdbxyfpephgmgkbechgckxjcscblakhhnapsitchdfibnlcrcbbtggab" // &
"grujtxbfgcisuhvlfeifnnhrrebqcrqicftwegkplcmhhqprvrwarsuhlsoanvnfpaglkaugdvmowxrp" // &
"nnmwgquxtqsvgaypmqsvlomweevhfjvrvqdgtmbkdmtxosbvxytkuwjwfettyndmngdbkwriapgddwkc" // &
"ptgsiryednqhqynncdjpbsvrqqtgjbpciaomcgttprlmjidywmwukhnpqdforxxinukteleysseforui" // &
"wautchslsxmkfduvooyxhmkojrnbcgyxkwuqinpsahfcjfutcmrqdwwihpylrbxijamumgaxanskltga" // &
"qhblbwuelvsdhshyxjsjrewhdvummduxxvacoxivafbdrlpyncjposcvmvwoxcglkwqypjxqiivlmfof" // &
"hdaqathrunmsiqqkyvtgcdpieurnlvcrmnsmulsuadirufqkwkdbhangmhfrikaxpmtmlucrqqpxbjip" // &
"phjnntibdifbxkldfyjwwypnvxjpicbrodereumgtewlnrdmbhrfgcitilurlcsqfoygskolerxrvjon" // &
"fnulkurtjmgggtalddqybremblovcqhynxlcyaiehhdffmjybqxpwxsianfnwrchunudgnijsqoqbske" // &
"tsspffunpvwqxmqxknbmoifaocnmywesbswaeayvaxbwwpwwwkcnpvnyrhpobtexmvjcjfmwlsflxnmk" // &
"ogjgqyuwvtmnhfyihudpltwpotqognmovbdtetcfgmucyieslsebmxhfwftqkemrcsafnqgdsdwjxofc" // &
"aecvcmqmyyeayfodktlupcfwtepuxcfonbobyserfjcyfsscbivcnktvusqtnnshealhgeylyckwbums" // &
"opihhwlccnxvivutpdjplgoblsnnxftekpyrsilralxncrrvdhxxpyavposlircrrxbiasgfdkgfylak" // &
"rmjtprikqtnjyixsswhhskxrfjhagghvjqbbhkhfvknxewbprvvkvdlhyohijfgscakitdbjvtkyweie" // &
"kwrtotbdxobskiydvxqjyawdfwcwwkihnmgjtlvhhrawqdaekreaodmqvhfxqlnhutuosppfvmsfjucw" // &
"ifgvkhechsoudymonyjxdiqpmxpacwfylyfpswekrmpetahfcyykvvyxovgywwbwixteeojmvmufmnpy" // &
"nlygrkldvlneidvmhyktcjcfetitqnbfxubtsfawmlbwahnvfjhscntdjuhcoswjhuriyiedmjgpyhol" // &
"muoshhosplegknticrochkytwyvcqkmmoilwllbkqltgldkibsxfhwdtssqtdkjitlartnjlhxwkgooj" // &
"aejxgawrnbmlngifnjviwryocingrjviuxmnedgpjmtxysrpraowayorkaauwicmhxtetgcwcqrrqldy" // &
"xkcupdoolvoqumctqcvnuceigvdamrjkdphuglwqapngspnhssiejfhgrsrijwkxjasffekekahkjsyo" // &
"dxrvlgapywwligqvyarbtdidoxmogglxtbdrcpdqyoctlilmwkicrppqushhlylgieyvktomayyjxnxb" // &
"xeaphuxmwwpnugefolewakihsatbljemtwwdgovxbkqmgbuayxdeerbduafnflpsphmycqdpmuxakabg" // &
"ebdfdjvghxnmeysdchrqjoqawjkibsciscdlgqiuqcdkanslefdnjtkxijdjwppgmrkeydaodpscrmhs" // &
"tnorasarqrauwgphpfargsigkqsdwagpiqrwwhqcjapcpbqhcxqbpytvvbtcvhbsrddfqemrcwjwjvbl" // &
"weackbyqukhtoftervtoqqnecxmttfqxwhutrbsleqflmufbqxhceorcithtrdbhcetxgtatuiokxlry" // &
"wicjlubbwwdwrbytsnuihdqhoedwcoutjtudbhbvuufcibybmpuqtvqchoiwkkakytwlegkqavfwiryf" // &
"ncupsolrpinqawkalpitrjutxnjqkjgqxamwkmhwyfwjuvpbgddsnrqienfdpesgntnnbxhqdbhnwllt" // &
"fvrebymryxcbdwjgkkyemgjryxcdhfuncmpfiddvtbifoumgcytarpjseqqbuueimmrdbdrctntroygy" // &
"xldcktvxpdldrfbqibajosmwmekqdlcalqelxtvgtidvrtuhhcwedgpppakehgmrnjdhbiavkqdtfglq" // &
"kvawyuvlqbnakmnmwrufrkbkbsuuqagfypllkbcfjtvmpqjbhurubtpkfagnaoohwjrxysqxuaxcjuss" // &
"bpqucnfrtyoosjubeyyyuoyxnwubfngschethujxiopbxehcuxbmsjhjvovjlsbndhoccgrxdqtvqbfy" // &
"paxawdiyndxfhuevpjgjcgatgwlxxusdidiorbpewttfvntktwvgbuhbfxwrjfjdklpxcwkcbwwwefsd" // &
"bvksujpcrkqsfaplvdativyjvuengcnuetluxjkxfhqnvhhlplfderostuoklkkjtqfcpinamdkstuoo" // &
"aaemsgqwepsgmmmbtlhehtevboplthvnlhkvhhxryjgdqqjwjttdrittfaqpdhikknkjapshpbewwbds" // &
"jnyvxhmjlvaqssixilesomgjdknsirdewqyrgqhjctupyusxmdvcgdikwsjmkmwhblgvjodjvdajtwhi" // &
"jmmkgovsnopgewhcdudcybwxdpkppiubsvvrgosnptpmxywnuwpvobsdxofdgihypqrrjsmxadgprwye" // &
"nrbdtbrrxvyvhcdbgpnvmotrvadrtygdotihxyeiidlcibcadhxedgmnngqnevvdjfepwygttgliernp" // &
"bkxehtpjdmnyvsprogbucdttqxsyiybfduovhurufqmachigaikiwhrikprkufdykeqiagludpurhesi" // &
"gemqfyadpesjvvyqqnvdckspjmestcjosuvrggarfpwyxjvdaloysbibdnbigmnkxfdamycwfadrjntx" // &
"bcoofmkcdvmguehkhcwjpwkgaykbythsqxuucdojkasunqchqjxkhphsresdpudxxxfvoqecavtdxkra" // &
"ndnexwcelmwlyketxbsfvbyvaypidfkhrbtmkusghxanbouerexuigpnsaqaewiljsbsfkoqsqbsxmwg" // &
"xuflwnelcywopoeurogcliupipngtrrrniptqhpvkbhowfkdufgyeexapgwvgmdeibsegptngxuijhme" // &
"xbmmbhelngkaxobydxoetrsmlavwhdqwqywilfueyrpukadlgnnruhhqberrshqjxttjjomgbakjfjfn" // &
"uddtndboqmtlkrnhjpmrfdmqkfenitihxlafynqbucoykxeospditmmgjuyqrgoralywrgfvwfqyywts" // &
"acwyokpxybrcxfteyfcjildbbxdhrsdbgvjutpynndcycusgwwjivtuivqbohpxiutvflwifkkpkmkyv" // &
"isditdkrlxdhfcurmohnavryigvipnjldyheyctkdrbnwnmbxrwlgtjuxiecnrppiibwacwbnayfwsuq" // &
"kmhtiejglqwmhxfhhulennwmyblvbliavhhxmhmugmhdchnmhcvtxxfadjintfcbhxtsrxkvyaeahmsv" // &
"tilpjkwrgyeljwfsfgqogahlsnrgunxyrbxcmiybcpdpgxymvenhpelsqcjuuofwrmkqrjkqtuddnnoc" // &
"trvvwgejixcjhhctopasnadbkeatwbtmfbnvnlgxgkwdgisygwnohslihuelwtwxbbhmowthxgqybtmf" // &
"xdioepkbhlbicunhysxokxeyqnjgsbskohnenxbabxnqrjqgpygniutqpxfpaojpavtvgtyegkdxpcfy" // &
"tetobywtwqcasxlwlqgbyigjolhgdvfswmvebhhvahmunav"
contains
! Convert a C hex string to an integer
integer(8) function c_strtol(string)
use iso_c_binding
character(kind=c_char, len=*), intent(in), target :: string
interface
integer(c_long) function strtol(str, endptr, base) bind(C,name="strtol")
use iso_c_binding
type(c_ptr), intent(in), value :: str ! address of a string
type(c_ptr), intent(inout) :: endptr
integer(c_int), intent(in), value :: base
end function strtol
end interface
type(c_ptr) :: strend,str1
strend = c_null_ptr
str1 = c_loc(string)
c_strtol = strtol(str1,strend,base=16_c_int)
end function c_strtol
! Read in results from test data in tiny-regex-c, convert to an array
subroutine read_test2(fileName)
use iso_c_binding
character(*), intent(in) :: fileName
integer :: iunit,ierr,i,last
character(len=4) :: line(16)
character(kind=c_char,len=5) :: forc
character(kind=RCK,len=:), allocatable :: whole
open(newunit=iunit,file=fileName,form='formatted',action='read',iostat=ierr)
allocate(character(len=4*1000000) :: whole)
last = 0
do while (.not.is_iostat_end(ierr))
read(iunit,2,iostat=ierr) line
do i=1,16
if (len_trim(line(i))<=0) exit
forc = line(i)(1:4)//c_null_char
last = last+1
! Now turn to chars
whole(last:last) = achar(c_strtol(forc))
end do
end do
close(iunit)
whole = whole(1:last)
! Print to output
open(newunit=iunit,file='testdata.f90',form='formatted',action='write',iostat=ierr)
write(iunit,1)
last = 0
do while (last<len(whole))
write(iunit,3) whole(last+1:min(last+80,len(whole)))
last = last+80
end do
close(iunit)
1 format(4x,'character(len=*), parameter :: test2data(*) = [ &')
2 format(1x,16(1x,a4,1x))
3 format(8x,'"',a,'" // &')
end subroutine read_test2
! Run test 2
logical function run_test2() result(success)
integer, parameter :: NTEST = 10
integer :: bufsize,i,length,index,bufsizes(NTEST)
print *
print *, "Testing pathological pattern '.+nonexisting.+' to force worst-case asymptotic performance:"
length = 0
bufsize = len(test2data)
forall (i=1:NTEST) bufsizes(i) = ceiling(bufsize/2.0**i)
do i=1,NTEST
print "('Test ',i0,'/',i0,': text length = ',i0,'....')",i,NTEST,bufsizes(i)
index = regex(test2data(:bufsizes(i)),".+nonexisting.+",length)
end do
success = .true.
return
end function run_test2
end module regex_test_2
|