package main import ( "github.com/stretchr/testify/assert" "testing" ) func TestLongestDupSubstring(t *testing.T) { assert.Equal(t, "ana", LongestDupSubstring("banana")) assert.Equal(t, "", LongestDupSubstring("abcd")) assert.Equal(t, "aaa", LongestDupSubstring("aaaa")) assert.Equal(t, "", LongestDupSubstring("")) assert.Equal(t, "", LongestDupSubstring("a")) assert.Equal(t, "x", LongestDupSubstring("xx")) assert.Equal(t, "xx", LongestDupSubstring("xxx")) assert.Equal(t, "bananab", LongestDupSubstring("bananabananab")) assert.Equal(t, "sup", LongestDupSubstring("polxtvqlurgobbzbjcjsupskvzmtuveuavrzcxaifmdwqjbuejdasuxcvsupqnucorfawncjqkbakilhiekavhmsjbtlsfydijafxhgrgbsswtnvdquwokcliaxevairergwdtndsibiulqiutkcwsqpzuyypnhiowgvkkdbpkoyvgwyuqcokjnxluamwnuhqjtaossezwxvkpdkqcleqjkelcludtbigxkueupnxjncrbgvdrsdpppqqcopnwadqsxkvlkghfmtvdeygpyxamvxhmmaunxskgnenobvnzizbxwrjeedisrgzykoaidiffzqzsmirxkvfwmtifywamcpxziyjohcudzelgbmdgiaqwnzdbkwbhdioiokaivzlzscshrvbmggdztjuimribrgmdlcctvldbcxwpqnqbkzrcayqdqraobqcgoxxocclasphcjcydpkgkqhrmmxtklpxfxnrgnzczjxanaltnjhwfatgryqhcllemgqcchiagizpdgiqioqyhrpattutmuotrcwtxvdqzzsomofizebbqrgwruydyawsssjkakjpjlzmfhmjetymftxrhilpcgfqyoohyydnodfortlkeoncmfkdraiqydxcodyapjaxumjwczwmthrcecfgsswwtnyqurvggamjbsjdzmcuyefwnsrnhhpusfdsxbsrsrywbccullupdbovnmzluqsfdhqbef")) assert.Equal(t, "ma", LongestDupSubstring("nnpxouomcofdjuujloanjimymadkuepightrfodmauhrsy")) assert.Equal(t, "baobab", LongestDupSubstring("baobabaobab")) assert.Equal(t, "agagagagagagag", LongestDupSubstring("agagagagagagagag")) assert.Equal(t, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", LongestDupSubstring("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")) assert.Equal(t, "mgdhx", LongestDupSubstring("tighnhfqybymipvetycsgwelmtclrgpbcmqwuphtlllmfmsjpareueybwgrdyhxipnaxaugorglyktectlvjsymocteihalxcdeiyczzascsqmhmwlnqrriagfnastnqpbcskttdvcryxqyrcvgopozyjambhqsufpaxgiptogodgyuiwcemaawzmrkkqkbpliytwpajqarisspgwmuvohretkhplmuoxdxdgupeqprqwixalyqwepljbbychehonpwewzagupvrxejrvnzvpzvunzklbvdjrqznsctochjmqeuyyehshwgrulmeezhzfvvywtxscnxrnpjohstnhxgopzvhdgvdarpsdrvipxrpdedmfyktjfwhwalinvwsvdotrxkqwunwskvzwdozojuybdnjoaghtcqrgmdimsgavpbhbncjhxjgojcjkiipcfkblixzpqihwxnktxlqqepzvcslqdjcredcqqewiujnlccuuojkwqochirbudlcjgwqnvimtrghfqyzflwxtxycxpvvrotbbmsvrzbqvyqgzjqrbyrdftdipqipkgrlmpbwdbrccmilvmqspkprxqkhldwsrjbiqypodapdpsgmtllcakalnrygvddvewunlhqapoowlpamlnbebytiwrtppqdowktuffznqvnbntoaurmjsbwunobtsnldwnetcnwrvqnlditicelvtxngbaoqgsesctltjacwtbmkrlapknfjddxcwaihgmysrpgqsfgbrxwfzbqlqxigvhczdvbodnjbpeobynnnfbuxkfrvntjfkgzkwmlfithkmdawcomyzmmnlnbwfppzyisbzutzwryafwbvjjejocdtmkwwobzqivcxvnhxvomtthiziteimwyrfbwyrscoeauatrncougxqjyqetodyrcoktgjnocnypehbqdgunsduppnktbngaejusccyyvkonctwuolxxuxvtcwwmgiofcesfoyzyfzlwaopwrdzpwlwjaigsownamdnalurzrpsjlgrjuqbdzffrkaknizterwrlomgigwtnfvbgullewkqdribbsyaksqzoeezonedzjtmzqtlttdcagsfljygeafwwvtfwxallfezdrpburxcruxrxgwxflieeiqntpojbhaurpwpnqzfwukapuoiboddmzjonyqbfctsmyubofhhhwqmnynbnhpjcsjhmlhlrpklagnkdzdekimgcdawbsggwxjayexhhpmaoabgecimkqckcrxmvsipwzfhxgwcjztrglmtkoyraommcsaspivabkpdlbewgnpdyqpwfizrjzhwsosspcnddpaqwvttuedbqfowywgqzlnztcbmysglfexhzltdmtnmruvxdhamneyepyyhfwjbngnhzcokondawlpwavkiyspdawtfcgmgkxcpvidveozamiknsymknwadhjruifxcexypeahgkwtscozgjzqtrcbonlvksumjkqfdrctrdftbgcfxyafhiyklggetqyrzqbymgdhxjydjsyhscqncyyewyakvakihsgquejgqgqlieotoihmkwuynvteshovrxjnusfpncggvyzfdbrbxkfavmdxmuoopopgmczoclesiedfaroyysezlwszjpzqhobopytitjrehtfpridcpkwppydlciyabhfndriaowpmrgtetptkqevajpnchuafsvbbvmsfznqzykyeefaphrzoxizejyiwopuudzbboqktmmipvntcqaxhaycgspeknxtqjckafakvksfsnqexunjomtyxuphlvebegaksabyovoyocqjdbakbzuwzgbylbxahawoglvellmdeyxtqqozotveknbgdrsqmfxtxzxxjnqvqrvpnxwtinnzzxqfzrhmrxzdxupspudpjanurhojwouattiusdfggahgbizlvzszdxxknikyheipohlekxandhehfsvkyrchmmhsamrlvwgetcxfxjxfozbxdhvhwfsaurhxxtgpppltuoumslfvelcrjcicbriixgtdfqdelqjnodvxmywpysdqkofrjojugmpauyucvdyzpxdjrozofqvoankgprkbyfdzurerihmzsvzlydhxztpmnhitngmnlqtdvpbjwbzfzurhqjcbcnibjdveknnihadrwanhzckpgnaainahhziorggmqtqyrajyhvouywcyfxtfinwrhfbbieunbssptqtupmoruabalqpintrthpfdnjcqhqpntthapblzcvpvkfmusxdkjalnscnjnfraqhlvbrffzdawusfeicvowolqdjqoqkhegbzioevyyxekbioouufaswytmrskmmjqdftgpbqffgmhaxstcxnvgajczzaofqyxcbxcfyntezzmvtzrzhumbmytozctmyhbehuyahjobhmngahtogeprajbiumdudjfunuzdszfsrmzbqhvkmfbbabbokyninnyoqiqnndctzgaouasrxpmyaofzuzovosaoynvnrdfkpwadmhujhebtujmhazzwuoiarheuniroidyavgngdnydqworzkwkqspzbnjkbzmfuezrgmlalsqzvgpcmjqzezsaiptqbubpuomubrrpfhjskstyntnkuhvyzqqlmlmqictsdmajwywrsvjwaabyaimlmdqkuzlejjenlvfqrsymtuynmxoblyoniaqzaxqweaiukxgbpwuurajrvkoqpsydntuodecyifpuaoqcajdcwwtvfnchvwvzxbjzrzfmlsxqvgnfzjgeudvdlxlvmskfpqkidybckczvpquuajxhhzigcqxeistnrupfyybzmqxoxvipxpvlpmwvlssufvdghdliekkodqchgojwfksksfssvngfksdzmorfjklwdeelhicinxtuhnxkuceeuomvfwcbhbilyvamebqqsqhdbhiqdczelhubidevvvtfnmmgcxzinlyvzpoeyhnkyfemqcqpocpxneusmvzoinecyuhxetkjyslyuybcyadwevqybtnlzbddzhveuiejjhkibptylwhammkxovbjezggjealgayrwjpmlvxhfmljzytbnxiybyhufazywfeodlxeasrwfikfzkifqftbkevzafsxhxnbwhhakgggzeahgukfnquubpanrvbjofebuwacjytxlpjiwjxkxjmsckvewaxosqxalicvdphblhgyfdkuzrsbtvjivgbmrouzkxwpekfjfdhwmobsycnbvsqnidzewsdheqnadfugpqkrmwoisurxrtcrpffknbcgvqabqefbbybhxfgroagfkdsgptfnspatggybnhbidckwdovxyamlencstrqpkuddvudlyuqczyuphiuoqzysgbasgslzvbqsgrjzftkmaqrqswehkqkwqvzfknqcuekdtwxsgymnzpygceckadrclmlnpqgezibgbounpbwkxsuyiqbcwsrikfgsegjcpbwfaibkpwrwusibhpkfscauyajawexzkhrmstcpqdhzmgccfhhojpcrydmitfbkaevwjhbifsdsvemptrofbjbylypolmvlovnegnfmxaldqlnutwunzkdwilqkypceeksrshudjpcahnfwjgonszzdlbepoptzmmuzawhujcjwqegzcxiknlkhhpynmvwmxsqazojjwyebojdqtggzzveeqmjwfepetcugytxqfvwfvahsxmfxnqyhgymcvpwbgvhfwsitfjlwhnpaudpolbtlkwzanxwyywaxwaysojmoxarrremfrlbuczybolcxitgaqhfuppbcvkocnexthymempjafnhsyfypmccnuzwxewffqssktsoeelvgwpksdhngvdvkhowkqdsnjrjhmhowulavojazddvodvokeyoabfdegfgqqikppwyoizqejdhruwycpfcrmkmqcwornnzqvvhqtwqkesierfuuqdvcsliaknkcxrbesqgnubfygcaxavnbwvvynznfegliqflaktayzsqhqqzwncaujmatzwusmgcbelfcasrvjwzdlsauesepigofaziuiyrfzbkqmdhhyfpakitlbnlirrozltejxgbpojsymakhcravpdpolrhxzntmxjesaoklmokvgnhlivutqyvpcxaiuehxcdtmflemthxthvovigtcwqewlstjvfhqihlxxaopkwwoqcnllarovpldpqujlwmcjeceonnfacblimxeoitnojjqmwodbkbiegflzmmgdhxgnrvqvepkmeylimypepmvqvmotfejbxwyazpskqatlqndvaesbooinrvaezylvcxjltnjqvlozohosjchiklsmkeetdvgzggnrnakpqbclusmfxrmewfbaejzkfbdxxhcdtipptnwgcwxsdqnxtjlogsybyjovhtmmqotmrojrrevyqeqdzwfnikoravhdnrmlhgvaohscdbjiadmqpbmqgwajtgfealyvrddjbvppfxeexmhikcntqgygrjkcieikrynpksmvjxblusvuatueogcemexwmayynppdphvxavqzvbtksupiaccawnkmyeqmscuzfclquxwbrinbgwwruqqwsuodfzoovewvohdseqxfypcrimfeluspaqhtndseuolcyxuxfwpjnqeiiindwflunkbsdzoleejlecheehlgcycqjivsczszteslibsbsgvqrtvdvnigfngfmupjvtgvbnubrgomjzcosmrachzdddwumajlylybrgjdoiaogutdcdtlzcmsnsggxijdlkamcwnrkwmlnlkptaxselehequiuoxpovwtfwsughakicymkmcgefrehpjrmguygafalpedsiijlcfpwkqoocpnjfegggemywpfzwqpauqdfmhaiyfofdweszydohbasxgvoobpazvodrhngehynpppvisyqcrxsmgmqrigrgtigxfgvsyfroeextszlpljjwwpawhtowfgrcysarfgljnnaznhhjovyikfjmckeaxbxkvoeufyjnfynmslftvzyztdifbugpzrqfcdvxlduelzhryvrybrhferfshbihfjnuedfajqsnkpwhoitqgxkxynfrzrlbgotipsvn")) assert.Equal(t, "unuoqslvgaekunapeaapsxbodakcrapmmfuxoowlysenyiygzhawbfbuxlswtxzzhlspfgzckzuoxizijrluvndcpnknsvrnfulksqqxdznfjgjlocozuolroealyhhwrzcsuzgcsekkqmwlnylsscpmynjchwvpwebwkraudfqboeqmxhghekcstrcozldbwyniwqmyrbkzwvknulehzxwckwohlmjvlqyexvzzlptbnnbctywyezcssubmiukcsixmnapgttmlfwtwnmxqgsobqsnxucwrszxcuprnlxjteytwqzridgtgkkbsekeytuxslavhebbpjewdwlhchtzwohqkojiqneahxacutymteoyloottnsmmrphngclortfvudoeckxkjqatxqmvboumxmdrxoxpyprkwvfpviqkbhsjdeosxdbzzfsomrxojkokofrrdoavhjufyayisibcgngqprircpcjyvynhzmrtyynfgfgeomscywbcvmlhcmyesuxwurmpdxhddyfnumgkvphmtqzrbsbjeliyrqfswrchkurvqtsmzchjfvotdmueabpllagtfvefssmgevrzydftuvxqdbdrpysifoxgvlkljhkiksoxfndxayrsaxeoefmimnqfeerggwxsbyarfvfwvrmtwjainqposafhwysxaaegzeewhyrsfnduqihpwipeewnubscqpvjekikyiwmpwynydbnvylqydgiwsenvulkknlbuqpwhxqclrnuvdwqpxkksyewsklffwtggbmxnttvnjbiqjdoezffmmighfdcirjakacncwckjqwqsjxsbsxbaeaagmnybxpwvucyskfkydlkxdlfmodygcxzimmhdgmwwqxrflldkwvyqlfwasxxoetlgtopmqnfkfvkshkrikfcvdrguxciupphxyssowakrnsiutntlliedxnqkldzfkqefgvyaargpqbknlmlbejkuupolrhapowrgciyteeeulpldvlqkklwsxtvcmxjozbfqgmslutnkspfoaeylxufmuropnafrjveufqymddcrzvbdkhghzvbjzxyuibkemslbsluzwnduiutluergimcjsziusnqhyazuhskekblpoexmurndswlwxwieujdyilfntaaphwvnauvwmihlfphfpxzkwinxitiqxamjqxtdxswgxfmsfuqwtqqnzracsoerlrntgyypdroiuqtiawxeogqcrxxbjmgkqrlrbgeglkamqfvgaiipuxcvllcujnnlfzidrvzowaupaucbxzwzhueqqdphpmsdszdtcycrmiwyhslbvknlxhfgpcbotvarakaymjgfydzfmnxwausfhdxulmxhvzgbswfdwrtitwyibwfnpsekmymsglzpiyrhnuaatmqkjqhcwycnaxjbxqgprgoesjnupyfhbyounmbwgjfplslyudxyaxuspyxjcuorzxcryiuwlgprpurjdxozsalkbjcjatnxstbxinrokiufjldyuyngkiobomuemplhziwaapevhrluxohodizmmqznpbggcaqfgobgpvytmbpdmrrcbzbgrppmlmigghuzrdfhwhksgmmnjnbglrrckwbdstsjdjxaeopxawedvszchktinhceceauookzcwbdkbglzkedrjuqhrnaxluttcjbbdmqimlgppvuvmjqipkcjvyzhingwymthqrpguhvlcjqrstczkdvdrwwtwdrakmbxzjfsszpziurglmpsyllgxtbewoftnhvzmtygsvbnwhltwqszqdopzxbwyrdyrpffnilfdxtlofyicjshyrpncsqndubqkgkgrtbybulwegugcvfqhpfnvvccocolfpiyojgoranoyegkpitmfkmdkyihdqscwykyhgkyljypjobeijjvdpjglbkefxtsmyyytluqpvdcsgrtvsamzupdjyzqtcvpoquialxzaeerxtqkitsapniklylrztgclbxyzzrkanhucwdccdvafyirulajxbmeyaoqtqpprkohdddzdxtiwwctcevneriqahvrgyqvyrwfcvvqbhxmiajqkwhztepimveqisonqccfgwnhpkkqsqlmqqszwjxcpmyzldhjmriayuxpfosdtmhvtncuboiggyroxgwlbybievmdwaverpetzrmeogojuyipkwsibihuhzxjnwugjpwonfsbwaxfcqveyipwkhkzsfarvxrdlxvoiduextlcnnwuaiishdbfnxvfzkqfbqynfznbqijfkamnhlwcmkysbotlebtyfkoptfignbwxfldmbebmtyoggfvbyyygbibfhgfrdtwptwihjndlxmtdkntxtfjwstbmukwlwkzecogozerskubaxjqtliwpgyfwvkqqagmwmnfvuoujlelopdbfqyjnemaibfmgfhqzoptcolufrgafmwkzlxaudgvkhicwjdyomiqgoapvhyakslmhnznivjulyyqusxolkmfyskcfgshotfdjbtmflvtagraeazawnbtcquiivziijjporrsuytdkayjtnexvwtoswqmncbvwsxcaowrjmqdtyzqdjrqbmnaqqlkbdsrweeofeztqlgijzsriayrlknxcinibqqguxztuikzetcwipuchwukczx", LongestDupSubstring("unuoqslvgaekunapeaapsxbodakcrapmmfuxoowlysenyiygzhawbfbuxlswtxzzhlspfgzckzuoxizijrluvndcpnknsvrnfulksqqxdznfjgjlocozuolroealyhhwrzcsuzgcsekkqmwlnylsscpmynjchwvpwebwkraudfqboeqmxhghekcstrcozldbwyniwqmyrbkzwvknulehzxwckwohlmjvlqyexvzzlptbnnbctywyezcssubmiukcsixmnapgttmlfwtwnmxqgsobqsnxucwrszxcuprnlxjteytwqzridgtgkkbsekeytuxslavhebbpjewdwlhchtzwohqkojiqneahxacutymteoyloottnsmmrphngclortfvudoeckxkjqatxqmvboumxmdrxoxpyprkwvfpviqkbhsjdeosxdbzzfsomrxojkokofrrdoavhjufyayisibcgngqprircpcjyvynhzmrtyynfgfgeomscywbcvmlhcmyesuxwurmpdxhddyfnumgkvphmtqzrbsbjeliyrqfswrchkurvqtsmzchjfvotdmueabpllagtfvefssmgevrzydftuvxqdbdrpysifoxgvlkljhkiksoxfndxayrsaxeoefmimnqfeerggwxsbyarfvfwvrmtwjainqposafhwysxaaegzeewhyrsfnduqihpwipeewnubscqpvjekikyiwmpwynydbnvylqydgiwsenvulkknlbuqpwhxqclrnuvdwqpxkksyewsklffwtggbmxnttvnjbiqjdoezffmmighfdcirjakacncwckjqwqsjxsbsxbaeaagmnybxpwvucyskfkydlkxdlfmodygcxzimmhdgmwwqxrflldkwvyqlfwasxxoetlgtopmqnfkfvkshkrikfcvdrguxciupphxyssowakrnsiutntlliedxnqkldzfkqefgvyaargpqbknlmlbejkuupolrhapowrgciyteeeulpldvlqkklwsxtvcmxjozbfqgmslutnkspfoaeylxufmuropnafrjveufqymddcrzvbdkhghzvbjzxyuibkemslbsluzwnduiutluergimcjsziusnqhyazuhskekblpoexmurndswlwxwieujdyilfntaaphwvnauvwmihlfphfpxzkwinxitiqxamjqxtdxswgxfmsfuqwtqqnzracsoerlrntgyypdroiuqtiawxeogqcrxxbjmgkqrlrbgeglkamqfvgaiipuxcvllcujnnlfzidrvzowaupaucbxzwzhueqqdphpmsdszdtcycrmiwyhslbvknlxhfgpcbotvarakaymjgfydzfmnxwausfhdxulmxhvzgbswfdwrtitwyibwfnpsekmymsglzpiyrhnuaatmqkjqhcwycnaxjbxqgprgoesjnupyfhbyounmbwgjfplslyudxyaxuspyxjcuorzxcryiuwlgprpurjdxozsalkbjcjatnxstbxinrokiufjldyuyngkiobomuemplhziwaapevhrluxohodizmmqznpbggcaqfgobgpvytmbpdmrrcbzbgrppmlmigghuzrdfhwhksgmmnjnbglrrckwbdstsjdjxaeopxawedvszchktinhceceauookzcwbdkbglzkedrjuqhrnaxluttcjbbdmqimlgppvuvmjqipkcjvyzhingwymthqrpguhvlcjqrstczkdvdrwwtwdrakmbxzjfsszpziurglmpsyllgxtbewoftnhvzmtygsvbnwhltwqszqdopzxbwyrdyrpffnilfdxtlofyicjshyrpncsqndubqkgkgrtbybulwegugcvfqhpfnvvccocolfpiyojgoranoyegkpitmfkmdkyihdqscwykyhgkyljypjobeijjvdpjglbkefxtsmyyytluqpvdcsgrtvsamzupdjyzqtcvpoquialxzaeerxtqkitsapniklylrztgclbxyzzrkanhucwdccdvafyirulajxbmeyaoqtqpprkohdddzdxtiwwctcevneriqahvrgyqvyrwfcvvqbhxmiajqkwhztepimveqisonqccfgwnhpkkqsqlmqqszwjxcpmyzldhjmriayuxpfosdtmhvtncuboiggyroxgwlbybievmdwaverpetzrmeogojuyipkwsibihuhzxjnwugjpwonfsbwaxfcqveyipwkhkzsfarvxrdlxvoiduextlcnnwuaiishdbfnxvfzkqfbqynfznbqijfkamnhlwcmkysbotlebtyfkoptfignbwxfldmbebmtyoggfvbyyygbibfhgfrdtwptwihjndlxmtdkntxtfjwstbmukwlwkzecogozerskubaxjqtliwpgyfwvkqqagmwmnfvuoujlelopdbfqyjnemaibfmgfhqzoptcolufrgafmwkzlxaudgvkhicwjdyomiqgoapvhyakslmhnznivjulyyqusxolkmfyskcfgshotfdjbtmflvtagraeazawnbtcquiivziijjporrsuytdkayjtnexvwtoswqmncbvwsxcaowrjmqdtyzqdjrqbmnaqqlkbdsrweeofeztqlgijzsriayrlknxcinibqqguxztuikzetcwipuchwukczxunuoqslvgaekunapeaapsxbodakcrapmmfuxoowlysenyiygzhawbfbuxlswtxzzhlspfgzckzuoxizijrluvndcpnknsvrnfulksqqxdznfjgjlocozuolroealyhhwrzcsuzgcsekkqmwlnylsscpmynjchwvpwebwkraudfqboeqmxhghekcstrcozldbwyniwqmyrbkzwvknulehzxwckwohlmjvlqyexvzzlptbnnbctywyezcssubmiukcsixmnapgttmlfwtwnmxqgsobqsnxucwrszxcuprnlxjteytwqzridgtgkkbsekeytuxslavhebbpjewdwlhchtzwohqkojiqneahxacutymteoyloottnsmmrphngclortfvudoeckxkjqatxqmvboumxmdrxoxpyprkwvfpviqkbhsjdeosxdbzzfsomrxojkokofrrdoavhjufyayisibcgngqprircpcjyvynhzmrtyynfgfgeomscywbcvmlhcmyesuxwurmpdxhddyfnumgkvphmtqzrbsbjeliyrqfswrchkurvqtsmzchjfvotdmueabpllagtfvefssmgevrzydftuvxqdbdrpysifoxgvlkljhkiksoxfndxayrsaxeoefmimnqfeerggwxsbyarfvfwvrmtwjainqposafhwysxaaegzeewhyrsfnduqihpwipeewnubscqpvjekikyiwmpwynydbnvylqydgiwsenvulkknlbuqpwhxqclrnuvdwqpxkksyewsklffwtggbmxnttvnjbiqjdoezffmmighfdcirjakacncwckjqwqsjxsbsxbaeaagmnybxpwvucyskfkydlkxdlfmodygcxzimmhdgmwwqxrflldkwvyqlfwasxxoetlgtopmqnfkfvkshkrikfcvdrguxciupphxyssowakrnsiutntlliedxnqkldzfkqefgvyaargpqbknlmlbejkuupolrhapowrgciyteeeulpldvlqkklwsxtvcmxjozbfqgmslutnkspfoaeylxufmuropnafrjveufqymddcrzvbdkhghzvbjzxyuibkemslbsluzwnduiutluergimcjsziusnqhyazuhskekblpoexmurndswlwxwieujdyilfntaaphwvnauvwmihlfphfpxzkwinxitiqxamjqxtdxswgxfmsfuqwtqqnzracsoerlrntgyypdroiuqtiawxeogqcrxxbjmgkqrlrbgeglkamqfvgaiipuxcvllcujnnlfzidrvzowaupaucbxzwzhueqqdphpmsdszdtcycrmiwyhslbvknlxhfgpcbotvarakaymjgfydzfmnxwausfhdxulmxhvzgbswfdwrtitwyibwfnpsekmymsglzpiyrhnuaatmqkjqhcwycnaxjbxqgprgoesjnupyfhbyounmbwgjfplslyudxyaxuspyxjcuorzxcryiuwlgprpurjdxozsalkbjcjatnxstbxinrokiufjldyuyngkiobomuemplhziwaapevhrluxohodizmmqznpbggcaqfgobgpvytmbpdmrrcbzbgrppmlmigghuzrdfhwhksgmmnjnbglrrckwbdstsjdjxaeopxawedvszchktinhceceauookzcwbdkbglzkedrjuqhrnaxluttcjbbdmqimlgppvuvmjqipkcjvyzhingwymthqrpguhvlcjqrstczkdvdrwwtwdrakmbxzjfsszpziurglmpsyllgxtbewoftnhvzmtygsvbnwhltwqszqdopzxbwyrdyrpffnilfdxtlofyicjshyrpncsqndubqkgkgrtbybulwegugcvfqhpfnvvccocolfpiyojgoranoyegkpitmfkmdkyihdqscwykyhgkyljypjobeijjvdpjglbkefxtsmyyytluqpvdcsgrtvsamzupdjyzqtcvpoquialxzaeerxtqkitsapniklylrztgclbxyzzrkanhucwdccdvafyirulajxbmeyaoqtqpprkohdddzdxtiwwctcevneriqahvrgyqvyrwfcvvqbhxmiajqkwhztepimveqisonqccfgwnhpkkqsqlmqqszwjxcpmyzldhjmriayuxpfosdtmhvtncuboiggyroxgwlbybievmdwaverpetzrmeogojuyipkwsibihuhzxjnwugjpwonfsbwaxfcqveyipwkhkzsfarvxrdlxvoiduextlcnnwuaiishdbfnxvfzkqfbqynfznbqijfkamnhlwcmkysbotlebtyfkoptfignbwxfldmbebmtyoggfvbyyygbibfhgfrdtwptwihjndlxmtdkntxtfjwstbmukwlwkzecogozerskubaxjqtliwpgyfwvkqqagmwmnfvuoujlelopdbfqyjnemaibfmgfhqzoptcolufrgafmwkzlxaudgvkhicwjdyomiqgoapvhyakslmhnznivjulyyqusxolkmfyskcfgshotfdjbtmflvtagraeazawnbtcquiivziijjporrsuytdkayjtnexvwtoswqmncbvwsxcaowrjmqdtyzqdjrqbmnaqqlkbdsrweeofeztqlgijzsriayrlknxcinibqqguxztuikzetcwipuchwukczx")) assert.Equal(t, "mrpkh", LongestDupSubstring("qzyhifqvxqzjftmnrozudbqnwnovmjlrfpzcumagueeahlbkdpccwvlyggbbmluorefmddfqsxjncwiawmntgvklieagbosrwblqfeusxwcdhzauvrgjwdrdortzprzpotbtrfjafvzvjaaogzwrpaqytipkrgulfrxvsvybbevwebmmkmvaqdpmoihqbuyehxrewwwuinzkvcinxwijsrygswvbhlqvvejkbhzoekacvgrvkmwfkxcobeupjlxbsbsvuurkaacvdrzlxbeafvowsxisawxvoxoudjynnpsepyjppztunldfvehezknznvksrxdpjxskpatjapombnrrjvpaymietxkuuxjsioxinkuzsjdudmnwenonbxsyildtozmskrjkhebwqzcuqysoiakrdrlihjpxwcwpwajgmdoluoytldpgwpjaumfasvwuiqfvhlvbnpxjxffebnbhtdgxctsvgzbgjswyarawfauiehivqaidizgwasezqpvahhupdnzrjvqkovwkatzvdklnsoqmxsvvxelepndelokgnwnymyhicrzjwssnjoolffudjpozthldqkilznfxocizwvhlfgsfjhtugkmjqqarkvvzrmxijhlhfhubnuvtlotwvydfuwczluhyrswnhqgwlfjbjjcrwrxqwjqyjqnhmgadtzbnweqphvkmnuzobfyrmbsitbhpnjeczmvfgbffixuihzbznkaxaxdkpxqokhmjpfoscvkmvocmdskuhvjjuzvvcfytjfaqshlmyeufdmbshqmkhbmzgxylvzafqiofazrpxpbvenirsbjqeamwucckyvdexihynrorzwybjmhtvbuiecpwxdernpxivcryawaujagxuyptynbaszvrumcqkipskasdjjqlltetdcafotqllogdbaodktkkmxnaomehrlrsnhxycbjpwokldvtrxgcrbibpqxomjtlqmhdhueegtuperalubyjuvypnybazizbniogoizhftvvviuhllqynloygtnesqsvjmysdlnhusiqsbybkfiaampozicopqyubyzujxpwycuqphothkihdaffeguybshepkzlwshebpasdrsokntokwgmvglewkauzhbepbetvvlewiqonszdnnczwdlsumqjtcenzejrbfxnhcrbindztbvpdjcrwpppdhccpljjkcnfpkqwinnmlwlvcorgnblovryqkytxargedbyxmbybamiuxkraivtvmzyszuzzjdcfxkaqazaugciqflfsnncokdiuytzaelbclipmmeajsefgdwjrttxrokerobjgkmbgrwppojqgecpuyljjjiogqmyakjoyqykphuhqgomhgufrkuxaizanaclswlmmorpclkxcclaviqaqiauoxfjjznanbuhxpdoxuvfouprwtqfkzjlgwiaamqohsjpzhltvendnoimuwaibnzssetsslsrsejestzoizrjpvrctrxjgsikdpigphzaeuzzjqbhlsxzvghnfdkusztgbffyutmoirsfnclhngedhaamxveqyuryrhbvglfybtcjoesruiptbcgfsrueuwuldibxnfptopsihvqwzmuzubbxvxjwpfiearhsulqspckmrbioaqgdojotwbbbxhihjssdnlbinwavkkjhnmbdawbstycmfmbkiilkegersyzuaqtphgtshlesebaovmmnislipujlwkruxyecsvwbapcegwumnardxhkamimimzjjvmqujuqhwrbbyoebpaihkykfrlvnzqfndkbcxyugsuygdujavwasdjudnjueibtuflzzftehmrpkhuxdgkjffuoetfbmqlftgozscaelrlewzqpbfholvqruxzuvefewqeqjplwpkaydqmjomjbjqqepnepmzfqzwpwysquulnflrmoiaxcqmviakxjmyhujmrgpjbkbzevyebvshxndrcboadkjnqbyvdwnblkohqaytwpszoyfknigeqfnvjvmsefdwhaeljrfzemwoeyorrhyfaqwuwhdglifxcqumzeuavzaqgcjrkliuqgxyadanbdnuvpczxoaoxnxqqxhkruilmymaotxdntvezuxobgnhsmfgnschyoqmzhgomnpjcjptpdsrxgitmruufwposmzdxdilmvnxjhewjvgnuftvrqqoctrhtrpsjfjzbgzrjydrwjqgivavlexosfgajzuctseqnnnqdjljbxetojiyhuxulcpimgbswllngoiobkbrgmaxjvpcpfkvdcecmfhcvgwnzrufcmbmtrqlarwgfvypwmycqyqnqinrehbtukntpowannukmrxjocnvxoejvapoifopuojqkpwkdblbizyimmtwbyymazbtirnmycejseigroyilwgcrzgfwmfempbpdabkzkndlxuxzlymucjvsledhxsgezuclfiflkvzwklqicteklwjkstycvtxlbywqupvjozfjewahfyewpnxuajrsntlzcqssgdvkjaldswdphppjacuixjhlozpfquwdtagyzwjzqmflsnjacbtyqrvlkcbjoofuliibtvlqxjwehxmqmwzvvpibxwpwiujbuotbpcddrbgjvrsbocklkadsjlvajlyksnbkosmsetipgsmmdbwtfwrfzvwsffwwwxnbzwebglwveirgakvbukzchzyezvimfyitydeezmruedfgkyvjhqtoehcufjpglptrqlvybmgowqszxbtjnzccujhqtdchjafsnousmzfmfrvnimprcanprnkqcdlxwotpixhvyvixejxwjxeqxryxkdgdmjxuameonlfwnqgwbmozdpmbkucdzybdddsbvgubfdyczulxrnoexvphcmllsdelzqiumyfdydlodkqdvzwwbhienvmuppuzmdvaheydelpmohawyuphnjezqofwqumlcvstzbqfmwunecbbwuopqbojiubxjroaksgiyndorwqgxikdtaluovrcztauunrhefeacbqqrmytdmhgfwkhipuomzovkdlcfehbgtvkkpoivmphibrgqwprbvpihfjdlwufuygehwyzecervyvcjwelstvrhanhopgmxpwooocczhzxzopsubbtolnhgmvbxoodrldugfpppgzreraddkjogvkcmzdwejlwecznstjlwyuccmxdachmougvtxqurjxwhyidjpsriaeepcijyhixipgwvkinhwsqnaxkifsltgcooluvqyjtvbtzjqqddizngtofaqwhlmhwsteqmxwmmivxetbmqquheyfzjpwjzhmmrljisvfmanmlvyweqebaitfgekligdrckntkhsrkfcqqmqvxffdcgnqswlqbfrujislqqoalwhakechbrqodfyccquslsimrauzmuiqajeidzbdhacpengtbsqnkjrrnmculbznjxruzmjxvytzjpqjrurndhyxwegkjvazhrzibeymfgsmmmmtusbrjittiqmrpzcdtancxkfhlofrltvmdzabzqvildqqtdxzztgqrtzndmgjaznjkihbotpwhaqabbllcufkmzbkkqwexikvmvykntyuemdcptkugjzlvwzluipurwbvmymfvbaamqbcithdpsinizebkrcirdnuzzqooqsisyaibmdzsbsagjlqlepbddwopuycrnosmmrsdhsuxvuillbqtfkqettcvfdckhfromtemionkddaimrrgqseusnvhasnuazmpjvxmbjfvwkufbkgqddalpjmleabxenklrudejfklzljqthwpvjrgsmgtmkdekmqqbreajorzhovtokggmpkraxfxwyjidnmmrscjugeytjifpujqabhggsslblgbrutmudwvzboonwvmgooqqdnfmumigtvbjpofgqhyzqrabypwgrpspomwjlmutpcdzvbfcpeeyprktxbtskxtxiyopqqwcvcaahfbklygkwdrrnuqjwujjggflkewnbmmhmaypeukwznuyotqsmgxeswfxtueaqhtbywmuqdhzfbjbshjfuybkgmpozbujwqfcrdzvibrfzkbhfyjgbqwboqxcuxaylqzvwaxoftbuwexhgeipabnpdierfxqakokuynogkwkzgtijcldmohmrgojijxgjmvgbroisvvzluaknwvemcjetvccctpsgcswpxdcqwzhgygjidormnuvngtlayhddoulhpjqjhnzwkgqbzmyktsodervfgtsdgcwlpslnrjispdrvhefdwrypkcflwalgibowrsarrdchumoozmxwcyzoyiglimmpaiamjghhmkooodoxejmiyupxvbzpqrlmwshansnnldgdqqqjpovjctcjsfakxjtaxvtyeivyeqswnaetyugdwtipkorimmjcdhvcwaaxjbfhmjvvzzalvrfsqtcblwodifqaowgeyrpjlqfjvsiwiolxktihplymyqnyhshahzsyxuslcicjtamqyajmwcdwnlhctlckhrjqnhrvgsgwdcsrlzgittybcghdhvqwgavpkzgscdgcpbhmimcjcmtxauqrnsjthsgubdepkalwoijbjiujyorolrcbyjurgnszjfcaqijljyefddnhkogbedhvvfycjgcbfiepincgckvsabhltdndlhzqbhfsexaikprzmenteuvzvrgsfuppovqttdunncecggkwrhlqkogapefamibecsjampvqcsfuyybuyugbyohwyizikcypqqqvgncvkvrpaypfwgzxyjlnhhspgrihratkqydgvcikatswrlrouvxrmerolrclryccaxyextwmvnjjmzhblrduevfhidyymkwsvcxcvfebljpeasxovpsrggyobprgyskppyqijwbrrclbjhthteejbeiwufuxnralcfounqoymilqjshxzjnldaygssmgwhyhbqfburgqmvaiislavovqgqfftdwuyrsryzxkcvavxigaslnxcldjlshzziactsxpdrxdkmpsmbqvflqsqgvafadhrfczuctuogtcpbqxgbhfmgzbiilzjvzrdxocgubhbyapkcrogxxetcixinxdfizxmqxhvrjxiuostknxggnzvxizantzrbkqjopjbuijnxgkwwvoxatisuebrihofhxrnkawihsdtyqzpnxiuwrzwkqhpxivksermwuvylanotmwugimycbhsdnbtgtdfltzmlrqycqrqynaktrwllwfiyfduwgrmjocovkgxaknfsgtrgbbcobqgrapmsocjgzjiivhxpekxchmaesbcwkrchfafsyrepjurybslsmjutzjqzugytefrajxohpvtuzlyvgvynlrxmvjqejfqkjifrddkggydmwbylhxbspgmtksqgrsfrmjfxruayuptdpkwgupxqnwavwizhozbqlzvkajybdrwffokxobplphjcrkcgmkbcjxnafbbfwnowsfmepczhwvydrmkqmvsuxfiawdmhlyzxsseqvwncgubzxrdjhlyacvwmexumujfreeffhkqgxxheurudgtfpblgwtbbgshyqybjzpjncqpdhurjvgvvlmukaqwnpiflfmeiuwtqbaidvuhgceuetnrafuuaohnifvuzrxzbytqymgfbzfstvrljrogqoizwtmmxxrinbayohbjbhyyajpawstcqbifblkraduhnldtcusrpcyncoqpkrizsrhlpndzwsttcbhhwkynffmlsdjseiswoogfftxvuwadfjkuowpazberekjkvpblwlauqxcnfkoctcjraauxlkwglaoyzfsfsjmhqkjejqthhxcikeyexbwzbpkbeokjbvwbaiddkhgeleguombrubdazlkwgzuieuazbgjzbwvzktjpfpetnvggparepplkitwwjfyyrkowmdvkbstryjeuihtceoojtpzrfozpkndtdfvzynxnqgxnkqlhvctjbenatmjplpiidhuwnmqhcypuzyejhqkzcdifzcwkkjqmioiugxqovwawtptphkqahoimszxdwiledlhktwikiviageynbmsslqrbbqrwanfkoonsurnwonxovhjltpnxeykymuamqghwuawmszbzxmnjskrbmoemdfkhacomtydxuimrfurypacddqyvjpwazzkfynqcvrjbglsqnxmxypzzgcnjiynvzyzdvclgorbsymsxsumzmyxlsmsagkrkkpuaixodkwghrzvtufyqiwcnyexiykaldlwszlarkpcwqgjdckqtolhwsaihlajvhnwelioirzicdsryicyknlodzfgnrexjxrzfhhtlfvuttccbavqsfwkptfrqbofvvfuyloaeyywawynkuhdprnbgslccvnlmelpzxzsyhnioezpzhychfxggxydcdoxrmylqqfhsuzsknwtjivnotqcutsbmkgenaomusnabqfvzncjjobczkiokayolaipefuwspsxitnkazzzaismvqlipllwpltyfiksmecajqpobpcipmyzzlwfpgpooxzjspywjsthhosuhmlgfowdynordgrxirfelicizbqekbvzsmffjtonphoznqoidhfomhnvyavlhqnapuherhxqlzyeyswnfdrixkagkhbmovprtrqiojnyrbaozzenamujynxwymymqcsqptyypptoqjutirxoyychearrbtlkswiqwkrddwiuchjlfvattexashrkicdrujeganeknpgrteknfoqfacblczykohcwhgmhscorpchemulmmrpkhmroztajfsjhtoukmkfaxwadlidhfwvxesvdvsstsfouejqphkxrhbsqaybyiwdabnugehfnwyocddkmacaqbzyvaqcgbuiqujqingzxwlrhpzmiwxqgyakmsjatblzmykxfgswxssqdetnxmbwmhfmiygcwoehbbcjurcpbmnkrmmqhqnnbgxngrsrcyqbcgwmfxohgpkjolonzpiyxpzzxkzbskimbaxynlkhnlhszrwkzikoemtelclfblrzmczakkjsruknwgkfhenjbqqptglabctxbaeuuolumwcoewpaxoyugwzcwgrfmfzpmnsudtodrcvvqzxbripppclpmuanltyzlbxqrlbpglddhmybqqbztzfhassmwmughewypxoqyigkbvrslppvcljljweghsoavviljpxyuizsvqmpyajtucqywrdfgzwsfqujpcqmyjzllgnwjbeaorebdtjrzyryfvtxzabiihhyaommjtregkzbkqnpcrombipdsaksauwkmknnddoeusjohvhybubgicjrfdtitjwzfpzozdjfzbtzcvbvpsrknbrlbmgkgcsjeuuncscektrnyuidrnhmjsukjbbjvyqrkhsktkxlqomrefacmdvfkikdpjewhcssucebcjvmnbgohufhmzfoitjwcwmdbqemzhsdyzlkhwgpwaajfcctlcdotlbmwwygwycailktbxaskhveletgjfknimiyxzjotndkoveohzfbrvmgtuavsozlpqjqtvtoneuwgyfcwriijmvegbrzqstefbjxilfdcjzstkcqdbydzoqrlarmdiaqwwfeoppsjexlfclsxtcveqapjtgaykcexjrwkrtapcdoauxfstrqqgwkoabmcmbkxxtiodchrhdcpynbycqeokfeqemohevcndlflitkyldnfxicszkcqpjcznsglprmdqdiatlfumewlvgcepulxteszpiijbuwajwsseesrafapnngexwfnuvefkaiggkhisvfykbaekdtwvypuknliczohuqntlxtfxkfwuqakbeeskgwxnchwglehactftlanjmwmzkmcesvwgnlvwodtlijskdpcdpuqzrfqdsdwwfruefbomruafbrcpojibzvdeujybrbkleoqfmnbpuxwpddlyxaqqlglsphkbgdqdhxecfzaxghwxncbulydniummqycuuejbzesrnxdkmtchkcoomzzolsdpxamsshmuyfrcvyxwzwayzuuyycboqhwaohfqckhwuactcpomwaaqubmgwsoskfkrztltimqfeatygijqgajgldzrwlemgxxgwjpxjlyukjxqjzgutwdquancxknjrepytcldsqahqpvchrgyoiqvmubivatvwwxpqmraxdhbojaccupwjvejpwgservfeiuerudjharlljayvdkoavmpbobrptjzuvqhndjspwmcwqjleejncbojnhiofinchxkqhtyfuzmttnlcfrvglztoezizqhzoabpgmimepacgjymuuuhdbitdcpmgrjfakgeigtmaqbiqktyarfphecrkxqahxcbkdfafvcfuufmyspsmmlokmmwgzkovaiewlossfcaqccfjqdnnmrldbbempkzlknpobuozmtbojtvzzjfosedmhmvshxhknoaulcpxyrawdbygocekxodantypuromnouxwjvnagndmphpwflabnjbkpowmunpfthxgzhoucncxtscz")) assert.Equal(t, "ezyxc", LongestDupSubstring("ufqxqbibqwfvftkgyswzltymfmpmilzqvoitmzooswowewlrdtaqpmrpcpryraencsovmfbcwzplfbcfweqqlmwenakssxpmovaxyssrlvepindrdqdikneepprikhwdxueabuvtaqmjkveiopkbvicylaqazzcbslhfndjjfhifmbgklgqevsdkopkypwezrozwqhslodteghipnwnhpzriefixkmravzavwftuclfztdklufjgcesdirhtstcsuedfibajtfvucxharuadxiymexsridmbnqnofhhxvbarzchhpmigtgrnrpljjqzgqabkjecufgnqzhnseghnrztzyspicvifwepxopmhafqjmzpacxqhlnylewrpmnxacpdeyzubffddabepgblroztnuuodjzclylimuepcfmrltiucblaxhnovxdbuwmiwzvjjlqdskhinwkyvqjordhldlxdxtmmtebqghiaosrualzjnhkmmvwunbedlxqvpntqdrltujbdegwymhrjrxvqlrjhhtzrvbvdzqfpaickzsblaupzlaytnfxpwmwwwdwptuiovwqjllbqpjopklffxaafkgnbyhsjgkctgupdgmqxaskwwmcsduirmxmtlaeqygcwsjwsebdmxbdwueppvkgprvbukrmjoayngivbmqsomywfrqzlfcpuilquoazewapluuxdtifurtamveimqzsnmciqwegsgxjsopnjqkbrcalkmvwpziztcsdpqtuutudmceeqroiijdvqsjoffxmkkwlddpwovljnbeasxurbrlovujjydonfduampedpxbbgmemdufmaodczjiuqvvwhgnmqhiatznzdtxszkwildgpdpnrmhrybejtkadblaikrsskylfiqfljdzgtzgfcwvdzhqyxswwiawpsnirdmktrcaqlxuzusxpvgziswyhplhbdkrfgoelvbzeupvkqnezhbniztzpjrjoinytlhweiczoccyqhcievvjvpcbouxphpnookvkagcsdkoxqmeoiqndoczevgupfwfyxjjcidtcipthwtixbhoaphwluqfrnrrluqkqjafzzykpgaagdkjzglvfzjwyhjenkbuemnzbzqscosrtakkhqupdriporwbzyjqsgwqlkhlnytnetufmjxonwzhyugkxpibgtslrqdhwsasgftfxjahlfdonpzlrczcqrtmdddjtaemcescwgthsbqjhjdtfkduzftqgowrzsgxerqglfsqfjtmbsbtawidysvxorrpiaqjlodepswfvqozggdvgutxxptbrinivvllgpdqsujhcrhilklcutazgcgkcmyziuowhecarogbttmgwiwfcezyxchsarmrvsvbbjslulzsscgqtyciymcziuezyxccxdxccceovjzxxsznkqhtwdnqfznfeaxqojhfocjsjlrurviznfrzdqzgwlrlcfhtwsbajlqzxlczvisbzkhzgikitwhwtqainksbuspmpllqiosrkogvjatipkhfawzplgdwtnmcpwuilmxctzuurajpbicjpkrusnjnnkctisinfzngegycyxyrgrdtofxlwambumifvucgisarrpdfbxcxifomaayhjboadnrxlrilpysateldtztpwqmvamhfdqfkmitfkszzoopgmqgvwxnfdawbvdpuhdfgjljsglcypeogosigwfrfsshhtceicesiyylqiiyfwysqarotyyjmfhkkszwkyowrhdfjjrpkjfpejzthltiwjyphlnugeexrzzaowbmarghgyeibsngsfnieyblxdttjpkewzcgorbqimnegsryuwcexdogzzbcjbtzjbgbbkjsqfsiabgkudsivwygdgdblllbnojjykjvfrhhimddwrymmbqpydpcuknzwypfvpgcgltknivwqoquztwlndbxdnbxueshpccsgabrpmeismzxkhsptdjxeihffnerwcdmjyojxuslqexjeodhdpoknxkbmpedazdavysuyezianqasqsksbopswimlahqkmkkqeddryxtkxodthdzoknmgxmiyndqthvjrkoexizgweoszzkaioxsvrvwkkrsabkckqqwucfpltcgbqabgjvlohwzcrlukljaiilsgkdbrqrkivswwinnxywigstuxdhunzsgqkttpfutiakwzjvewwnzezefjeiliiibabiycaromarkpbcikpsfixuatozvoywrhzdxljasookdthgeykpcboqtqbchlbmynnxjwvozirsggzqvidgodalyxlhtpbwkhjxjycegwqoqhtepssiawgvfasfagrrbndacpfkmufdbfypueaayoobhilwrjvwrbehrywvzqyharzqwngebwjutyxspucxlxkmrmmskvphhlbkqsmadsnegwxacwyswnhfudjzyvwxmkgjkmlrtmwfuvjuuawskdgobnmiflcosmuqwultnwygyatolxsabevqwbqctyaxrgekedhwcvgdsqnjfojbsybomzhvolxaxmiismfqyixplwsmtffnbgffqfzqjctwcuhntlanlvwfpirksazqxrtwbegxbxcrcojjrcolkrybbixmjcsryafankovuzrtbbhbogcogwaqvwixvkrhljxyibfztswnlhtqxqhxnraugjdntcqnzyedvpxgtawanhgehqtjaiijwqglnsxluwsejbaairiblrknrhgqxmwhcotmdjjbxbarjtvtdsvgszgquuhiuacpzcdwxcjdfxvlcxgybansnbjuozyxkcujkxlcvfbzieooukvlvjyaraltoaxipaancsfvnjwidgzhyrzjxiwwfnrgkroqmoebdutclubezqvhhgrlxensimskcdqtsmgkblrheskimsqchgxswdhdjsrlnwuyzeoasfkrjbrnjojieejxruubuputminmyxaaquxwueutshyftraiznefjdlfnwehzsfuehzzfoxzuzgahgxipduyqngfnoqsaukmnpeinganqppgpizhyvudueunledkehggitcohjtagxhveddmhswqmhntjytapxbtllsaggbyaeecmjrckxvfwsdylblqdgzxrbgqpbgoruzugkqsnyqzeuxssqmlfrtfucwwqvjvxzgiepylfaldsdopkqkpesoolquooosnuyyzpawaqdennhmfxnuzatibnkdbkpqxmylogndhboqipfubxsmlnuiuhkdzwgjharkgmpkvrchkeltzdcdolwgcyzpozippftitgblreffmerstpskgffdtzyxfatolvhpufacugubsuakkhoeqgdiyyxvqddmgjywsqfnilbllqkpcjdluttydlswshrugzrahathnbngymvamwvhtajsfveqnxprvdwqdbhrnnqevzlndnwncofmtjkgxshqqntjcfhpbzxmhiebkreawllddumhjebpworxtvnwvkfvtvbvkilddvdaqvoesdfwuxqbdgttylkvjacjbufrcxexaopyddybfziickkfcfkuditudmaskgpwfbmaxevglqlpsznojbthnppikdexcfphfmhrzfemehvqtckmuqhuewljelhtqzptvquxfgsykdksuydqaoxhzgjxixobhfsehcbnrjzvgdwlryivwdstbiaajggszntwdoymwkiyemfjfdwaqgnqwwyllxubbhglwsstfeftngzqlnlqhxewxoireeqyllvbhgykqwpmfghjijwrtchabrsztgjzbpqwqobvssduzgfjrjdlshimopirlgarmmatznwawjynxujdryjmtlppftvnwxgajpovveeqxzlalaaxcgqoytcmplrgtbljuysybcjgiugmkszqgcrywpunzjcqxhbusuajowpxoeyincuwlsahvbzfcaxjiuxsgcpiolaanbewniihbigxruobajdhaqoqmzdsacyzjheyaagkabbawlffsmsnauyjzmmolsxqzacbatdirofgwlqhgwxnlrxmyzywwthextmfdkdfxiqcunamcnpfftsicxcsmhxphtustiewomntzzulkpjectzkgidvhiubqsgyereshkxbwfedmpwejixujbasmepnsjcrzmqztczpxpbtmwigdbsvfswxazxvxsrgicosfwtlbbuyxshymodhpdejdyojbldupcxtahuyabkpzpmyumooxtggazdkhjoyskzikrrxefoueqturcafszcsttemnkscafbalkoivwjowjrbkddvpdruhskghefrghnrcqutciajfplkvecppwpacobsfrluevebccyivelnruenavisglsiticlpzavruhnzlritvrktevphifrqqqdvkzynkzscxrjqjplptrjatzheypewhjhxqxvhszlvwxxsobbyypozcpqmlgqzhavmpcmxodbdxgytbybjvkblfyspvhxmejowdjrwzfviqsvvudsdwtqvtdxajlhfasbghfnfzkhfhkffpsctzwpiyrhhpvxnuyyllkzxytfbtehdycdigfbwpdmucjucabowgwehkrlbtknrorcnfkgsfzvgqtytcrsepykuowthayulbcikkuclovnhhlqxdzbaktsziaixgfxhqgpycmlekhbkofntjhxylqdtykmfmhikfwogyiwmjdejitzvxhdhzfpwpuozwtbezygdxsqeappvwaougxogcvstkynjahtmjswuobfrkpjtrhpukhtiouuuxzpqxhmcsoaogoxcvqtitgbwcicefygokjgoeqyhewahnhosmxkxznsgzgvmzzhhgsgvnyqhyvtnmflgyuymqaabteloxpdzmyytwkfgnhsehawtocttosvvbkyiqupeqdcyzeuofxjkjtwhhtcnkbnqyeelqkkpaxrowaefpnaqeowbwinqpjijmvrkqdjgetwlqxcsxxqrzjcojukpvwnufkhlhipjwltcdwjfvdhdqfqucopqigggubqroeozwxzasrgvkvwjyzzrqdqqewnpirjlihkfnykjftispjvexkkiauijpfuawqekfnrigaasnyqyvwqoljfbfogitpyboojxcmmobuaemcrbxihumhsyvzdcrtlczytwfpyibcdicftefrwqyggloodqoymorlshskenzfvufacmomnscyspazrntnilixxnkfbrayrxbczfcywxkndnrvxavyrbfxmgjoibzndnyjlgjisyxdlcanjmlhahicxznhlcmamydmvbcxatuvgfiamqxoxshrnnhbspnbbljzuxyjslvdjocycekromsvcowbdquscmbvtpbhqectujmdvjnucdcxrwhalhclfhljqknjcaihuybdcwtempgeekhykmorfgopzootvprenqacxgkovsnanvtnbabhenqzrrkjlobnzkiabgqcpiyxfqhzuxteqfmeaalssfxuktnpaoohmcxsdjyoukyfdlelqrymginyvtzpfwhwzphbowpsyupyglvwxbhqocnfircfarycsxrxdfzpzaxmexthfknkptxafmjiwpeecughwgmbyemkusvxkwxyxdgxufcdurqoeswamvododfuwkcdgccfvackexifecomnobgfdoalkrpckhigobcralegsunbrobijtposrecubalvkrkoklbqsmvsveeazqgtiqrvqwulporfoivxwysqcwzbadycjravngdabaetlhncsmlbtobcaentmlpvtjfvkntvufumbigxacnerqogdnrurleqbiwmvpuvgzmuhxjkprdaujckrsicowesqvtegglhcgymcttqdxwzxhrmgcirlacwkzyvoynfhbbhabtyfcqfdkwjpcndcybojkazhmyjbnlsljcasqtphtogpfvmosoonpbakounqukawaqsranduqjmawmqynvzxmqxgcmztapbzhlggyjfmftrgtmxrrfvnuxvcjvfttiyduxraeysmcpqfuyjsiwunnklvxynvqmanllaiiftgcfftxlaxrtukczjvosnaejwkdwatolzvmxydheypeemjhegmbsupfpmeoketnrnpttbkgwoxffmltoliqzvkhxskszdkkftfrvhmjffacvafvhdqzsexeipfykexeqcrjzxtejghpemcoqlliheyjjdgtwcvhhstcfnqahvovtdbkjmgruciorzhywiyqhigmicyggtmbbptwwkrpwvoxwqladcqfdlhymmydmjvgdqcxutsxsfdasodibreowoiyjiifmdiggpdmkqterzppaejjeazbffspmajqxmxbdtttubakavciohbduspcxdybhzzepcknimtriabrlebbvsyleyfksyanaqsykbvotdfzunyfumobfgynstrazobcjntjcntddcogdsyjqgpctukhnrawscbwrpecmainibqtkxesyvrcrpiysrtiqkdxehjbovsfoldcrfctoamgcltdmphwtwpqvmkkzypwotkhzcplzxstnsdvugarkuvxbuedhrxipcmwyrixetuizofwjfosdhzsfovvxpcdkhdpnfiyjopufnopqfstnouygpvzhouiintykfxktqvdkjcfyvpuqzkxaxegokbmlfvedsrkpdjuxzfikddqhzulwjlfglkwopxlquhvebotiluycienyxoryigligxzpnopbnzcfzfvcglgsonzrbnswcxasenxpqsgftqfifmbvzswcemjlbpwitoymhmtfmakoxwvtnloxhqlfpjcevtzyytaneciwdbtbtbqtptjqgmobpfhptszliilqzvlslfshebjgqkqalulakiwckzppnsgyuelwreeminkzlpuiefnapcpeahrnnffbnlwecsyzaeotfzmxebchhzhwkqskcbqzpsgdtokelhjcxmbupiqxoetglyqjgcfofrdngylvepxsuejhpwmjiutliwnjxwfedrkduuaqdjwfdncpbiawgbkdnvhallcvcceczfebxtxmphjcsbocrblsnccnjbnvatrlpwpnxpljmfcpyachoecuvekukkebkgutjyezurbepqtapjjhnemrroqjdkbwpkczeudtlbenjtejzllvtigadnofeuhxbhimzlgwfrikvqewlqfplpujrqmvqkrqeaqtolkqkuqnqnuajpepwwfeqmxafudrfpeuunjkihaktusxrjdgjjxnljfftlwlctuiaqczbajgtxhkivndcqdribfpashgwdroidakdnkxihixdbxvqembezziforyirvkbxrxgxtuxzqjprckchsfjqppyjnxdkhocfjsjlvblyjxgaikgdegkdeggzuxhwczxeimazlccgbahytxcsmzuspttppqurdypdfgoonqyglkbarufodmpwhrlgztxphioqnozkrciqcnobfpzqqxpzbxlbdgzxcijdajcuiuczeocpqpjmrkevpvcvrdcfsgsebwrhwkcywirvnrxuqxnklryahzmfqnrdzvviwgqytshnracighagkoqjyunefgtyopqdpjzenzjtiqxhcvolsqvzywibtxeuevokmohtgnhvltxzbdplqdqdpwpbgdshbkztbhzspecarjmgdmsppumegsnimjmxjgmztigixzcjpnjfbbfalvqauhiogvkxpmiafblrckhlypijcnldmrgsurlxpjhmeffwdujqcgpyggwrlmpktilmzydvlywwldsdjximqxjthlyqmhbbzqggdddkcputuxrqrgmkfapdxbfwpnavakvugacqrtpebxyyjuuuufodwwufoyozcrcwzielgeoirphcszvadgohvrzghpapxbfsqgsoheafirlyrjhddrsyhklddnnodtvhvdtgijjrglbfifugozbhfwspjgrddeippgnyvnhrecvbtlyjndmzqbzfwwlvbvscilxeuhtrebuwgindyccozulvdnvfcayokhsxlljnqsaqhyvruupuchlkphldowewmjhkcdwfnqdclzwkxacwmfhdyothbpzhloysrnaflpvrfmmmyoiipagtqtaiprubzwyycfjjmgvrxejneannioxncdoczgmgseubfijukimhjiqzcmxqkrsawknvyllhqzjqhgbudfbybgglutgdixodjzfwgnzyjdqiqqzipecniakeqfnslaavquahimgqlelhthyxnbpmepkwcjrnjnikrwqmwvjagaeohbcqczoudwobuyxppehfombqlzvruumpoxsfabbvwfsxecfwuqufzgrevupzvawvzhckcitudbndsocgxuqbvppcwtjibgeomepridbzwlvytsgcabvawegqtpxrljwuhfzfnzthoemqundeozigatypoushyjbkiuugqdgcvcivtqgxtmepeftdt")) assert.Equal(t, "iebfk", LongestDupSubstring("gzhvilxpjrgrrezatnuzihvaezrbvalaovljiscsnbmtrnthyijuxuehuiffeaknaywwhlfgfvrlbzbdpgszfpdetyyokkdocmexbvoklmvvbtslafxoepxlonexfinlirflmfjxtedkctiyvsvqknwxbumollkdbquysfvqexksoxrjzwzplmrkfozpumozednrycmrxkasvmiqprunuaaqqdijfxjulluuyxalmhglggemtbgimowlzwmbtgyezcuwsscxrofosjmeohhcwuhblbgbmrqwmifbitwzxkpzetbmjaqytnvnehtajurbkerzsekykgpzeojftklggqzlcgconzxntmfbehpjchsajpgrcnnnmhkudwvoashlcnltxglqrtwxybeyptgvrsvofmilpefzatucmhhbdwopxnyzqrovbkqslftylbiphfgvjddottgpbjkwikniijdxqrkxllnuxxkzpovuazkiebfkzfaosfdaxefkyevetouvpopcmqxdwnnejbsnexbpvlgxpgdmppzrhklmzioedkbdtyuxlyimogtyfsskuvurjdxxnjeptaacvooyfyvseeyuootkiexqnbyatybimqdkbmbedhyufdedhbvkdtdsqygzahnogadgbnmagtumobzsknihjasqfputkgtjrepwsqxpzbdpimjmqltkqajlmkxyfdpohvumbjmtkcoqbtpfbgrnyvtnxfbzxrrdcocbshyxlmqgmpwnpaskosvcpmnobagvbufmwdzbggemrmwqzvadkojmxljcvumpbwbexlkhfzbzijieimpmtyspeikpjjrcbthptzmxufrgbzpkhnwqmxplwwakhrepoknhanzgrtzcjqrcaovbkmvpbgqshfdtugenluyjfwpnackdnazrwuxguynnmgnxsrmgqsheanicnuupjsekkjbubmlzsowrwdmhcvnijixpbpkjxcddjhbucjjmhzbjngflezexzaamyyywabsavwdasergsxopvexfkyolcgjpopxlpmcokwfymfvkkeejlfihhnieplqutfwajcduajkfokgdhglqswawpvaeiofrlqushjlykcmaaezqylzfrmshjldjkwwlnfdjftwqsyczfnrdfywajhepujqpjhvdoktpvokhivjwzbvyifhxxjmtxitnvgebamsuwttixondcxqmabhaskvgpsoxgghkucgbwylxkdcmyyfmlwqdktvqsxeuvnsxlwiskhnmlemnyodjheovpccnndsjdpnsrxbrqmvhrmjqquiblrcmtpkhdenbsufplctuymidzbedsdqbsxpeuqllluxgwgesgevutvnrmxkqajulkyacqnqlxxmezzmnezwzkhxmxvooqirztzsfftbmahxltyoouhsvxaedsgacvyqwgninsmgdzwdirmsrjhpcxmcerivcnykalvvwrlxynmbnzwjyaebvdusydsolzsvwynlmoawydodomzfescurfjkxantfbsvoitdalpnmkysfjybknczgabfwcnpigzzufmrjquppcglavjpqdhbnategojhymfajimkfdsmadriphaiwcyrqzbxosflkvywauptbkowspvhknrdxuolqjnosnalniutvtsebvfqkqcxtrpgjhwdbcxmxqvrilbrfibweettocslcwkduuoszjhqefbkxcynplgdnwotnyqyeejzjesuxiapqssqrdoveodnbmsvuwimwcqamksazakdrzfflchmtyygramodlvnuxrtgmryzefuemfihgzrcnhwynbhjmwbeyaqoeskrkwrlpcdgvwgcuvrbpawmuicbthocynmtjiffxiiemmyczeyvixeernlfgslmmfpcytgcakmhelukknqxypbcbtkiizexvqptixetojnytvhukzyhjdnarwzzujjatczabhhsfiyjaxgypimlgrspixnwxtmghdhaivigwhbfqmmicuoolftlgvtwwxbpsrhqjmzdnkttzsvgjaloqlmdcsmcukmbmlqwqrvhvdrnwxscgbfibjvrcavzayjmjspnajmukdqczrxagwpojxztflhfykkabksoidyrhrclasmvcacgsdvzzrssmiirjjjvarbdyqxoytradmfdgqsknlucbiahxbhfsdcevclnnbiinjjxelaydqogirhfbsdkexygukrjqsmquvvyovsupxpksmuxxyvbdwgdnvswgazgfnjusxfmtotbzyppytrolmvfymvvwezxontpexhftejbxqosltqawtidhguuykdylvswranfklcncjgvnfwwqprhssyovhylcezvqrdtkudvrqqausrkeoihnerrkvpdsdtnbpltsllgqzifbfkpjmcmvztfdzrrdcwesuhtuxhxabmpnxybtknexscqltybkdkjlvaywngtpkqhyfasswozlzzoqtqofzqlrvshmhtfodoipsrkjbbdaztfvuhpgjfnrlajikjyvxvkhyllknsaqkzxrycpooyvhvnphbysuhfrxzyaltuakrzeasxyqdbkdsvlyngshuknxcdrytrhvogsrzmosyzbmnbadnpetagczhhocascojyzuzwukuxvgkfuepiakepykbvxaavayfawropobdtodhmfkmwdokrsoigeuzgxerksxepfncqykwttkotojmdffjoiznlgpiclacyuzjgkaqaijnummpotptguquzaykiszjczmzbstfatflgcraqavriundgkzrxnqyeqjuqdqstloxnnqctagyunytlxzedclzztzwegnighzixvmkfxabnxumvflmtmtdvfzmvtwduggyteagektibddntwdqetpodgzcmugxulcbfmthgqrgxneqctqbtaensknsggueoibzgvdascsstuoidvbscasigbzlkwkmtkwxdstxjweqfnnnihjfazysghlyefhptqaecggexrfuccetxyivqkoapvxwmyjdekotcszhcvfybutluikyqwhjxswrvloqwmpjsamylpbjjdnbaqitpwrwgwjalamcynojjqfguyutglvsyghggehlbzjkdfodfjebfvpskhhxcnegauwgtbmmnsmyerfaycecprwnvwqmuzdvsjjrffhatfhbhrbczmwkgnmzmqkgvipxfdtkriuekdktraebiqrxsphxkqdlbixxyulwhsfivkwqkiwkzihwphhglwuiwblqxctleyaiqphlblyorzutdxujtufktkgkkslnrvkeejzvizivljvvrvqnsydaotfcnzmrttbimakwphdniksoludxiogjpdmazbnohqrxlodjggmmjnsmzprxkgybjqilsgupnyehtkdcapdkcbcpcjgmzukwxmpntutlwljikjxppecreizqeqxuqolhrzsxfldfhyazoakuwrrpxltbsbczjzqjcuyhydxgstlydyasgykimeebpbpnshflijauctortfwjjfxwodmkkrcqkeoofunszmajfppjrvhbprwhrmsglpvsufwmnrolcwxmbvufodtdftlkuazylxwjaqcnvnathtzrxaxpbtpoqyedzwdazmwpygzmikwpbuvnqlejdumkdxzyxublcawwlykjgvhbhdlhpjiztbuvvqolwfaviwbnooekjncyaisibdldxydkdtpulquwmitdnpjgzdpmeprkbregvmgwhjmokhhftozfhhnyyqovuacmnmhclsdyhrnrdtvzfpxcpgnejjyozqkoqzacfabbfzrrokbcxzsfeqkcxkzfjjtqyiurfgtwittlzyvooxywevqqqabjzevlygqimwyrzcfvivndmdgliyovhybyklbcreqbpavyycgvxtsvcilnhrbwpjhbdpmsqyixiyzcywopztvzbabddxofmafxooumrzhfilyegilsupqljcfucgydpglurrwngwaajuopqqiknbykjtcoxkcanzxcsfkcwbmyxiebfkaojfqbyhsnhbqcsolmvoguhaomfvgtvfruajxttmheofzrdvwdifkvmgczbpsijewbfydwhibbavyrgbvruxyjxwyxxrmwnbkhmferwhbhbuurotcyupktkexnbzcskarsqgtmlhsezalnwkddgklhcaytncyfpsgrasgzxvqdyzfufqlkhcfykztcnypmangnuvkcfnfnjunnwdcxbtzvnhgrhqnduozvqbestwyxomfjuurrxvjwfusyqsgilqgihucrwiihmykpgjbwwkzwnagqngtvtufhhpcqpvypybzndnuxnuxcjuvvedglyjbiikrvhrmshsyvyilgitnccwmhenadmkrfvkyutcqrgvhszafvsgpplwndinjxsdvoygofjbuijmtojknwoukqgzqqaxaerzznpelookalbyjcjedekroepjpneruaihgxtunivhmdneljnbhhmlekeefocgfcantsfcystwhkksfoawfgauopzeskqumoavmbeawyylzgabsfsfdldzezvvdidoegzyobmdaeowshuwwxxaswczpaykvkyrwlixxkeonjjnzlrfpbgmrlvgryjqmbdvjhrrkjaqmkgpmtzxhyombreolaobjbixepcwfbzyrhjkvqvdwblxttprawmlrtikvukydhtobvatgvieoxqrbtagkbjwiuzyunjdquxmzcejeoowlupstmkqzfrguffffpizqlnighdpsaabcqtrxguhyhhzrrsdwlpgwyygbpudpxdxqgckmpvzjsnmhznhzkkceomwlrdnjjarasomfraiydswbzwvlygygbtfoawwsflhtgexbaeotfhfokiaxeerqecdwbkuoutdahpbvosbxjlpvgaubsfpgmppqmsffgfwcphthaawskscuwhbjvqthhxyfcvzkfismdeoguryafwdfstrndoqwjytbganmbpinjcnemijucqhekatenftxwycbylehctyxmwohhaqlilecxlwhjixzgstnpvqjqiedkvgcthaafzurjkxskymkateofvmewwalcmywtrlnhtpxoknmjrmajhiouxvytttuwbarlewegptlourwhpzejayoyzjygcnjhqmsgneuajfyyweditelealzjnwwdqnznmbheppnqttoechqmnrqgnhojehnwauotgkxqwswcyfmfefuycbzqutzpcxzeziwsewnihvidkyxupyjxowtpabjgincjaaxahbadxizimilhgqwbfasephsoncpyokqcxhwnqqmftgnzrpotemweubivjtlkefhefgiingkukpoqakkizzbyryqlthpwyiiwxtszdrucddvwkbvazbwwfyrsusdqzqlbbghmgogfkabaopenezmykvdabjnovrebhpanpguamvbswuebryanmaifxwwvxsqskmoqmbvrkwjgkkictbrwswnvbapgbiuxbnbwymyposzlwgklbckzzxwtxgpsxjlkfympahxftmarlqrleoinppthrdxiqasapmediekmxpwwgawbtlmgomejcxkpepeefojswvdlyoafwiwxdldnrhirgnevkgpzksxwzppmdvlwnsynwzhiizzgagjxbfmnyaxfdkwxxanxbmmbauvhbjetqkcexmyrlgyxnmjodmuwjrxaiyzwkdaaerexgqkvwbfvaoakofuikxiiilodglyzjxuhespifzeozjxwzurbyjclqiyjyowwokemiakbnjlpvgzaqqklnhbdaxldifunjtqcvubnpeetnhrdnpemjwzxuqwbfdkbjbkzbrdqjmdtqbnxsbqjmbmzctyrsbjobzfevvytuhsgwxgilffdasxhzhihfpiymqzptvssmvpayupggepznusyboilojxnotagbmewjfmjbdduwjrdnuooxkhtozramtlxaunvzczcjogzmchrivzpiieshwfeassayddsfhleqjdnloinszgbdjngjhecmgodpmowwlpvmcgsuuerzhezeyejhpnlvesiiudniyzyphmwnkhvreciyskiyletzqvjopzbfbtquixhbyoqywhncageqbiugvvnndhfoayehaofbucmonrpvvqjjmnbcgezwfvqwnyisjcikslnywworgqkumbigekrfmihsmltvmuewlocqjyyoxdslamhjermikteawoxfquuzwozoxfvhfqozzfxupxmrzirstscqefztavjluurbaziiuixttyuadbvophauiwzxodqsllkhuqofdvwpfsphziddlvlkztipauevrcrksvpuwgxltithvkswoftkxygucnbwalovfjdlsidhqiixjluxgbdzvoaaulsyvhifcedghyzbtjqjfduyqdkinmpmyovqwdexnrpzbnazyfqvjqwmcrqufmawupnxefaixunlfwzzjpyoqqugykmqojgdiwemaujcqsdyvlaglksihcsywwbbgzhpejlmvbwtxlbakvgybodjhrtfxmrwybdojqgkvzacztstuywoklmxfmdewbkasogtabtsbaytwysxeupuiuwxoogsxqasbgtybqxjosohqzfvtosxkobcosyyhipnzwmlxbgqvhgjernpyrcvuayttskiqrrwwwfzlbsjyetqmspttlpitbacrtxojzeldtudpbigrbjbjgkwukllqdupesnmuendgdylcvrrwyjfizkpilhgisbhiolojsqbmqehswaptqvdznlesveppplsnzpuegefcwhhrqnolbgkrmejhynvsbasxmpopkxpepjfiqsgpbqnyfhrfzcfyitpkmzsfmkhleligfqzjusccpbtegjewrpgkjqdyfawjabqpjsfjoytjqhqkunrvzpzxjbagggnzftvrgjyixzkkddjroukpvovlajnzlytcdmzpyxpvxkfeqolndinwonmjwacfazpvrzgtpzqcfewzsrxzoxwxsfyvwjflhnxxiqsapudhvwthxfsjrabbltmurwnfwsxnfvvdzwekotfkwabeameutbfwsgvvmqaqexgxqeavivnysdrkeyiwuyoviparneaudpyqebjmqtadavcuhzwmaoewnwhznouqpymeyozldgepyjlhnrszxwsurzgqrtyilwzjvypcrqayswtqachqbkptzlnjurnawzqyaqpamaljmtejfpyrrvmducyrdjjbbtxtbqrxssqijpctzcvxcclsrwxwpdvnolysqgnllieezdwtvvzujanextmfbykqogkcwcubcxdqyyieifzemcdqswngmopoufbrnovtccedaldabxmqaabzqltcjrttxizevnrnmtmyivzqcuqgpdutiiyqhfxxwemmyiixlomiuhqzktklxwgnuomxsvwdflhkrrmwwvzfwmnerkqgakatfyrceuzywyxfdhisixzhavjlmehyklvhjztxepogfyvyqpogwqxrfqomcfgmysohaptzipfmjtnsqfktexqqzryglcbzsirwcjcfynmlbfziadzibaisdosapioaqgzmcnhjjoyungnvzmkvpzeumfbulbtvfdnzbfscumizqcapmeaouhoprcofqjpdsnlqmkphegtltsknunzigmixnagfgmhwrghwvwegaijwnkmraffvgttlmcklszyuyohkavhgnwkjvfpbxbasxmgrgcbyxilhondfmxrpnwuijujufponedqdnfficgwttnxemcbjlrgsbmslwjjqoslwneuqymldajdzdyiztddptxaaitmpmizwiodajusscojvgryvpfwuvsvsnotfnvwqzwroamjnaqmyacodoedsjbjdtdregvzxyovybajyxccjzafjeyiqsaxiflusiyhthbkrvzpamckjglwtlzusbfvtbxxcxdxpwwavcgmipwfecupzhphgsjabgkzwsbabdcqtphwqkxpsfwwuklsfdiiznpdcohcclmnamcovugpzbrehxfotjbdxxvpyfkcnpnwvbwkqeldcbkjrxyvvkqoxraqwaftgutgfshsdsywvsicbrwyjhfbzkhxvusewmkqjrtdlnvmtmkwxorfbreskduvclpqhhisjfuviilgdxwldnxwxdfmibczmyptjhawgpzquvpiemjlbpnpocwquecqkxxzwaxgmvwcmjmdacnauohqtajknuprxzuwbgzrvisbjjadnyxawzxyfqtmndhhfuwnlpsyeqwuzghpcmbicixfbmwrfrcugdplnekjzmjxnashqhskyeaoudaqjhgkwortfhzqarkqdbitmqqgwdukdgjzejtodegpredlwkeyygcftzawdrsowrzjlscbxxqkiryxyruvswmxngfkctjglfdxrqieoiajoiakmyqxoguwuffsbtngguekneeglbvhiqpiflyqkroxhdfikwhmotchizajztfihrzmmvnwqdjvspsmbetswubaafvhvhkkusmyskktcsnycodmjmvdtgpprnvhknbollwhrqueqlavuljmkphapixzkhoflhohwmdmhaubtwholnzpefgkgzzhkzdnntrufoyzwepfxmtfnpbewyoiacedmwedgyjdkxywxwbokcfpxywrkvbcqwwiqfyiygqqaoxtssszyjnbywofkwknlkmsmylofgjemslpwmcbrsjuxxehwfevkijufgbjszicufklgvcaxvzvzkxqxtowgrgofbwkwfygefwxcyxlgjgdcmxpvihgvwxoqwpmjkrewauygrnfgoeqrgpwvtbkpmbsxexqoecfeatubblgnmrtzzvsibviojfjftxiqxhxmjisxlgslhudjbrbrjrsdwrdxwmdltiymdmmgcklpmgfjntehaefmvukfpfsbbjsdtcpcppxkwoqgempyyobqaqdkohepjcasbfornxehvzfnochfmmjegwdesoyexqqzirutddokoofrhqwqfeovjikuhskzciwmbdfurdxkakccejvnizgmxaxffvxvzfanuzaiaayeqrcqfahqowhzrhxnivygwbozthyvofuutqnjukgmsxftjflcyqptiryxuzhrwnqfxqblunmikfylhpwofmfjeinpbkeojxypfdbrracaiuiwbwamkvozgguczzwxmbvozziwygpccemzqtgzzeqwblnitbrinqrbjholgwcivaevkzavnvkuxqemffjbwcsxeivpqqrfwrfshelxmyujyvguymqoavskmpegacbqhhpljsaapaeuiljkgbtlnlebubtinfynlhgvadmxhbzbjifsbtbitzinrgajbrhpecponumabqgecekdxydqufzfzbzoutrbypenuufgmajvndygalnnrggftlnuthaecczemghagdopomednlzgpryclyruelvpmvndgzaavopkixsgkrnlmnvstekraeretfdstjzcnwvfrhzmwmaizndibcuxnpxivsipyjnwxirxtodlzdknaughjltgpcszuxitcmamhzgklcclxrwichaiwpsrcntsdqfqwxdypvxpzjhfkktvtvwsqokoztkrdebtbbsbsrmaaigscicsdjktakejgdigqljuxaqhwazkgiqtwlcalpuhjpavpvwohkxnjknlwngkgetadoquzgjkllekmmbzkm")) assert.Equal(t, "zbmjbx", LongestDupSubstring("uirqkccmgnpbqwfkmplmfovxkjtgxbhwzqdlydunpuzxgvodnaanxpdiuhbitfllitaufvcmtneqmvibimvxmzvysignmsfykppdktpfhhcayfcwcrtjsgnyvzytevlqfabpjwxvjtfksztmdtrzgagdjtpeozzxppnkdbjayfbxqrqaefkcdbuvteobztucgdbcmlgnxldcwtzkvhwqxbsqlbsrbvesemhnbswssqvbiketdewfauvtzmyzrrqslzagjcyuznkpkgpkkinldxcjtuoumcbcttabfuzjbtoqjqbpnsemojbtctvdmobnuutcsfmhkrbwkmpdcdncqizgtlqekvqophqxewkpxpkrgjivrtarxtwbbfhfikbrdwohppyiyyztopksdmxvqiaafswyjfnlwntldwniypzaxrscyqfrlqehqgzaxxazfwtwjajsrmwuerdqklhwoqxptcvqoqbjwfqrewirtcbskmkaqgtcnxnsqmwgwjxruhyyjtbuivvepnxiwjmtlrvexjzevctflajibxkvmbzdfwoqobmhstgpshtxitwttpkdvfmfwtwsazfgzwbtmqrowrcesyyeuwunodesrzbmjbxnchaqptfgqlknuarhgnsbwnucdhckpbwhtwhejivrmuccbwnyenyvonquscneswngwbkjysxvdwbzymwxcrnexrxhmuwvycmsiazmqavgmyurbcmvdjplloidbzacunerwobvaxsromiiwzqxnrsjpyoacfxcmmogmokhpmhxzkdzmpjcrgaeihdhczrmxmfurjatuwxriiwtfojwvkkybcdmwayhnzrnqrynwtrvmtgtrxndlbtlhyzfjtbtvqujjuwpibuonuwjdfvnhdqqzlmwwheztjkrrzrroogovapywxkjsccjnseanhxijybintgbjwlkmdzuoeclfqatffgjvcbujovunnauprhoocxzghzvsmuyhslnwqlcsdprwutyqggxfvczqiqeatglhubmllcvcqxrvcojllcoufzfxlunpcpfmypcjbnhtnhgyxriupmpvioqnkibldpnjxctyycwdxloucneypbxwiehqmzkvmwymuurykodpvylicnokwwencbbvzviljapeabhjagrzrmvgebwyrmctksubnhawahjclnpmavhsirvewqbuymdwxcsxtcwehreejtwoagewkmyhwzvyurouyffwhnsyhpiiozetsoveeqndctcxpghtxkpaolqjfaiwdtfjxkvsvamtmhyzuqttiaqhbkzxdjoqxnwpqnykcfaoteretoektileadlqizzlfgcwyhtgyjxdznvaohkgukmhjspqxgdygnulmmrwpwpkvlesvkqtuihzomyxedvalptrineagfdeotlvapabqrebqszkdzekxvttytwfzlsmzyfihcrvsirociunhuplyaukcoiyogdbtooijyfazmfpqwzfgdqzzcggnytspjihxeekoiafknmdvmeppdgsbyeqlpxhjkibcrhknfkznuqanixzckkcufqkvfbcmvrmboqkfablshfdcqcuyjqybsgzpdnjcpzekrydnoxjpwyttblbcadjifmrpexjvunecxnkgeusxwqxujanhdfjuaijngssxxgldxckiucpclhmzcwdhpvdothkdkwnopugrxffhqwwxtxvbralbzpzsgtkdplydydrlckyzzsxypywnavgnkxdbgptkeagvdhigxbnksioopfpplizvztoqrpwkyzazqvwxirablkyvyxfvemgtyrwubpdsuwzpahsnjepppwadoqeawrzhgrvuxexrqikkfpcihlypsnuhqnwzjfkxbrszsgzdmoomlojemujdwhpdinhmwaagbgovhziwrvpwszsvobdxbccxonqilhggfvnejiixcitcpisomwchguxhchizeyxtshuyqmjlhnrvhbbqgultmndqbojwqwfzqzlwvqazixjrivjcignlfhqfrmqhxpcarwbwwkepecdezudavkfkfdefzrrovazszvexdjtmqdaazzqhydakrvhihnmmetpdqalkhlkaavvpolsfzehmhpslrbscywgybctiunwxbqkojxjmyixqfoxwkpowukicsdgkonbqqqgawqgcweywlyntjonqfrzzlnefktbfrutbeqsjktlvvinrpcnorybwuocjothvohrnjeatbkuluguhazkhfruhobjtbnkfqqawftrrrmckzopldnhmwdrzbxdfbvbnmpxnymipabizlmjfmufzsjvazutsvvxdytuiwgmredaceyoyrjtxaikgtxnirdfwaffydnufzjvfsotsnvtpuueygzicyvvdnqmqsgbdbutwydtadejpjjybguekluohpmmazslvyrlqjtellkzbfvethnsoayrjhmtjywkczieszgzrncxavcdpovmqwofeaqeksfonmdjfcdqwzecgjaciriymkklabtmklircuomrdpeqtgkwlyqbzxditppvyhdnajwfcuedtxlmdkhhaggjolunfpojakvgkamiwccghznakxwvqgpfctbeadvcuwijlaitmubgqkbazlrutvlsahzhzxhydedramruudkqfqeycvyrclkuomsyyqarlwpmoqvtqlflscjrpctscizelgffwkhlftpihqgnuvkdfqkafcufpkhosbtdeycfhwbhjiwqbwpwicwywafqvazkjiibtohdbaqhvfdntufauxcsjkgaobbyxmgfoqxggnhwpifegjehpgnnoshkjbwyleevrnzfzxrhlmlittjcxjjaboyuepufctqfyiaoalxcindpluunrxvnegslpigqofsqozkxigbgokkcpougplkqdpermnnpgelgxogrbiufvzphzhnrswkkcuscnuxrfenhjhwjbzmydfnughyifenxtlqpeexmsuzuzgbfebbdyrirzvgrvdmlagbbycqqwsxzeqyjokccevcebniyxzznxqkqrvizkncfxbmpabsigucewylsghvthkauqddarvfuoxpxpowtflhxxspbsncyekwtiywmyakrnxqphdxkwwlmvdilqsjkraemegbslpkzrfggebukefcqwsliqjwxkpnjzmqchicyqnvacismzgqncurzuqpwwpjnpsgtgxszraeavhopzcrsbvemrwxjvctjwjrjjkjlesmypjxnoidprodufuskpuphcaudfqhyyhlczztqqrwlqvzsgmqnwizrgnuzaxqtekjdznxxxbhubszwjxvynpyifllqjvxebxyfqvwuojitusnbutylahvzinydvqvlhezxkbemtrklswlkmipoidiiwilqrdamjreetphgexhrhflyevdmxetsctrhorjesmuzdgtdirwqftgvomtbjvwymubuajfvevecruuppxhyotbdfhzvtiwewaiypqublanrwotmehnhdojgmlslifsgetpnaetavkxujboxakttvgrkadnwzhslaryrvbedtrahddsnpuapxruqvvctrjtsskziknuonrglqcmtpwtdaakhlkxneqxkchrfkpwznektfadgwetfhwnmzupkerdouulifjmsxvamgeumgigdldtpeklgmlppjizsocvljmuckqtotdbhhavclarnifecmqmjomotpathuyisjpbnkzgyslvnsxctuzwwdyxikjvfyizqnvqovtenxsxybateirdeunrtknnhiwfypfscisinkwjnassykklybrfdsrapuebvjpshezxctfydulllekuikdbndjnessrrknotidmsdfertiertauzfspljdvnuybmjideoutgimgcecyqxgkfglgfkkytgqoznrizealqpzfzrahsxcyngkiynhggpxietbgynflyufwchqdlcmrvfdhqkbmyctsikvnugswgdmvfacbvnzdptroagieqqwaxkojcipzwvdzfkqcscickeabjaoutesvlpopplthufrakrbdhsbuasrqvrfydalelazvbcvcqsacepoqouqqopeybmcohwilxbeqmkfxihmyluexnihndcgpwjllbingqkjtdkjhffxtkastzkjnhmszfqcnypbkgkljjicftjnhvqeciglviiwymqtgxdzmgsbhhwkorahiameuzsurojpiwueddmhaagkghaufmywsdgvvowdeqmrchnkrmipzemfkglslblkjjdjpbensjtbzxvdnvrhupssafrjctzrkorqycmfjmujvrqoikhdkligdkwxyzhsrijskewjmjyzhxvbmillrwlbdqstesbbehnoncxykhfhtdgvbslbdmvlabywwwfsnomjzwuyeynzcmyjbaszxcpeozuubvhbufxaojzynajrzaylqvfmrxnxfdsthsnwwtwsavuzvmyerwfnykcgppjoioqhpwynzpidywlxdboxkoujatbcyqmutrfyrsjaxeoroziuhprntwnjzknpkgztfyfongmuwhcogbqabvvsvptkdmlvivphbrznsjrpprnzfdogrtgyqljoarmioogfiyvqchhmypiqwnltudacqrqiqmjbgviwjoduuhalovvhboumlgfbxvbvfgqikgzyicoaitvtbpsficbcgutbtuxbfqwrdfjwwgoxjjhhtxrcuhknwqrjwfoslypnjonlzglexsfxpqedugjtllqiitflwmqfkfowkhitasbvhowvwrbnxfumkjcbwyzxgfftccptxxeomhnrzatzepkmnyogiepvguvfvfyfmpkjnuufikxwhcvvrjmignitnvjjspxvgjxyqwfdxpszcmzihirrvcxyllhbdrhhoiratcmmgfzejwushbwdziqdhqfsnojgqtkpquiuxmnjyxzxzzkyexkbrgskbylbogbyrdnafioxghllkusvdkgcygdflxiqumezbfcncmodemkerbsxlekkcsqjmkrureosjywrwnfzaoryajlanfouvtuofpymbvjibmdanezzlpgvvokvtcchegfdskyaihgurfjrqaeurlsckeieqbiohefgqxnvwxlhodfxbukafaimjygjdodftdeytymwbemorvrckerwfjdqhgxptlsnhbjybjuerafqhpedrfcgepgobsxbkqttqpdxiymzkbiiyrncvnzxjcksblzvidstnntyssrhwlvizpibjrfvqfacvylcsmcafohldmwojxrtqecsvcgqplpooyutkvhurdfsmeagyrwckqupdvjxczshakmmbtkjwspbtzjqjzpndtegduflwriktdetumspbbitfwdzfwwoyqlqnyqtsxdcdwrofvjfvoojuiauofwsmjkuukcqdohfczyrcyfmbotajdxypbfgtzqsvaausdrurxnbpjdiexvpguifiptbrsrspkdrutbnthvtxbaiglpacaqacrwpbxlmizijfseucvrkhofrnglzdzpksbiestjehvqoqfcefdqsbxkyylszukmmlvsqjzqpnwmtwesfdccdxbndcquaxnuwbnvbpsnwnejmtrxfeglbxrpxfxgedupdxlhbdgzxyxjcfeypautwvvswxuugjeeiehvgfnwjrxxkvmqbnshxbskdlxestjqiyphnizrshmszujopvsjrjambyclvlugylfikdognixfkloabzusfcyhiolmhyshbvoeqdswtusiwapcrbznzgldwaamomvkwkuewpfllmomuhzvwxbickdymcrpezmjnxgtvvmywsnvpbtdzgmauatblqfgwwywftylbvwqmadzvvjtvifqdbupcfmwmaiainpuhsypwmrsgcxyacuiccbwxxypwjceykxxbbqixunblwdzvbohczwayyvyfenfflauuxxvarbruvpkwycuwghxzdeizuwqehgxshzhcbmurkvhkeszqlijcvmgyavhvgtzsdgiptmojswnrtjyehfystwugvlyicggbtscbztahoowxkpprifxixsrdfyohtzwyncjgjpeslukofxtxhlctsixfvpzvlmwoqmhxdjeuodkoshrlwwfnobdkaemiviuyyqedpfiqacitttrjkacklqhpnxbrbdetbukeqzcgvmhrmqeudbrrryzddugmyapmqqepgufhybsobaidjrsqzgamyvoeiqsofjsugrqhserhqzxpzdnncntosgwjdqclftkvkpoyiconsslpmdxxstapfyxdjrgicszltckddxonfwmjdzsdpqoreboirfjkfkenzlktoxakfsaapvqornemrdmgbltzrjnuwnomskunnemmdwtdideytcxcmqnvodwkquqpjqtjibfgvcjsjyvpncuacbhjsplgobpnufotaglmfazhxgkumffkzqszkbigwurmggrwbnmmdpdgsxtxivucijynfbxijwairmyfjjcuglnzrgkzonltxnpfujpvyevupcnrawumhqhapeiyouniqcyatmgrzsyaoxejsxaeerucumnahrfukyxpcznvnnxlnvctnxupvrtzypummothmbyvrnkghdqqdpfqxfxgdtnqyjbmdpzjmmmdgttuldpgjasumifjaluasojihpmcgmlvztefjfpgxmyliwfztkfmmevbyzsdxiixpnqbqspuanabznxtjzekgmkzlzjoycoexfjaoqapkknptgplsldzwfazuvdxqahaqijittbgqdrnhxgpokfezbawsiwumafehzppautuogvsahkfamrdeepovlvmprmzzrkpwmweijthqmgbydwonpiaydrvpcykwbvxhmcufmonmvyecsyozzkecjiudhqhuwrqvttsfnfxltftyaezjohquwyyysouasydxebixsplgwcljsljradusoccdvjgincsuydrqxabsfglcfefwzvfqzywpeiucgtrcweykgiwngbcasuwuwgvdjmwbabsoxrqrokxyrykyjuckqiwwaisomotluenwcbqsipjveegebrqxqzugrtcqnsagrdbqmmzffmgkilaizklvmtdgbhrsvvbuvpbcrcmczuaqfnsoxvlnfpawhjdyolysoawziztgjuwtluribermtzlqddnaqjwnhgmhvecwbyqslajxagtjadhjvhvgdovtmtqjrssrhblznkewgtqrfrvholdtlsbntjrylqlphpsmmgupweeecjohjubaofjsbzcsriotfljcmflbbasjmeutrnghbldmxvowgamoejejouvpoqqqahtcluznvwpjuvpfhongubixsmlyxxmpaanurokugbskjdqrkrhbkaktbkvfvoxuzftzbqkpxuvavzqyhawteweguqzyfdnznbfuuwifvxrtbahudcyjvlgroehzbgshqrthnpczyqxwlgmopubhzsbscxqsecxrexyuwyvmutkzvijbolnrvpnljhvxvnzxhdbhktbfakpvchjvjxgljfvtinuuhwvfydfnaghdrsaljmfghjrappzqvrokwljycarotidjiolbvailscqkudeenywudzqkjdyivecnzhfmulodrqwyqrmzzuhjlktksceoelrragvlnbilflkbjydotduabakfejjamcdffknxcnnudlkmsjboessgqdtplhtlowirwkrvessnctcysoalwjvbzxpyxqszbhljvthaphrvrrrxebdgnewwdrumitninqihlhbrihovfcylnxgskdaxmpaklkjvdjtxolchkdmpeijkywwbyzdworwvxogmrpypngqawlnebybzjflbqotjvwtomgerzklfmofsqgrfjcxfupbmxhitcrvoozphxrgchchrckigpashhtwpxedjhbntobvpizbykcylfolblbnwrechfpjhxrsfidhhxliraxwxfqfzocgehglcspmdhyngdqdoazytgokzonpagaaxwvflwuyibbapmojevlxbbpzfmzslqlyjjduwlztvfxblyqcnsfaoexmddugjhtrqostouzcccvevqircusnzhkhkmsgqwzbjwaipqrnkwiorqtvzoigkbpysbvkzvivuxwtjhucgrcsevqtttddluukitfrcdxmbshxmssmdeliazkvqmgsgqayyqfuhlmwbypwqwamaqrbiuwobczbrijwxxvnrkaywpqljfsinzsuczmlzrycvebgmlupoqaytovvncgwakgtvmokcawksniecsywmbmgxqukuowbujxndgcdvhhccbxdfdtupfchckinhqvqmyrgzhnkfnpghwioowhaxvljhytwmaxojaflalojflawefygwqqxsytutujwtbhibawewagxkybusekmtxrpaulrnreqwndqifsggbnorcqbukdmnsdflxecjjebzppljsjnnnpbnuppmpxrflssthotalfxwoaubwaffzplaoaprzmyprfgdjzceihjripqmflplgooqxmmpzjoafjnttsaqgpuambxspuivihxeqbypqhsmrbjtkaektxwitfbhmbqabahriadwmmnkcahnyvpcsvmteisjopmsyfnpdvlegzhuqwcaqzxwwzzdwegutxlgbgcastyimovrmupxlxtxqglldrghginuabfkgdmpfcvbuntalmljhblvwdvlcykzdnrrffbaiffkxyzlgbzvzvlswqcsqybrixlmrupesrnhgemquzrhmhtpexnzknawokoaasobybyfsbrpxfraywfaumvynmjafzimwhxgxgcjrlryiokemhgpaxstgggybjbzlpoblyvmwjsudirqwuboqixvohypyrgwypiwwfllrqopfosltidbzwvigkcdzvuuxjecuygwdiwiuwieaojwfzmtxrttybqilrgxlimbfrwlezzfvygdwoppadtznshehxhmaiputfxeelkjrmbojtnqnhloqeeanulpyfxrxgnzkwsmtifvqkmvskvycgasppakgsugkupvtouwtrclngwqpmrswrhercdpdaoitcoardzwbvftuttvjvncxqgwnufruxptxwjsiwrdvzauklioyakxcokrgpfvhcguzgzckwvhumbegecwgprpbkszoczrpqfkgsfepvbblsuwvheyggosicwzmimdclpdcfkdldzqnibrlpehdbpykhdobeuehbixedbiyhghoxaqiyrwyeugqyqndmlpulxwpavavlnnirolatvrpztrrlqssvqyvycqcvouaqzcjiqknjgmafjuovadsnauhjninhyccvihkldsufjiszbhqbiwbqgyxeqtoxmuxtitzljiwzmieymdxahqwlmnxcnehtyrkjqirruuszaloqbzxgvrvzndhhmfptuwhssclafxzgkhclvqxjeoiprniewtqobtacnffsaxvmfyynrwnrdrvjbnhqaugbkwlordirucuppedcgqyplfftfpzotdtzozglvlytzobcifzzlijlqmpylzajgjmywsvdmehbtlibbdbkhcjvanmnswkasbiiinunmkmwanvoaqodteegrmlnyueerxnthouexswkjpkrfpmzblbycrfculeojmmcfdqurnxhwqnmvjbmvqqjgobubsbflbkzeewsbxvgbhgbyxiqrbecylmbgotwtxebxvppmwbzmegsjjatygluakvfhfkjvtroszbbuvmyfronzazuepsmtudmvocubupodvtbokchcycfywfalgklgqgurypfnkimoixchbqnfsybujgmatkqntmtsvjpkpzuskcfxejrcjoxhrguddnyeizooaaidalerhweqgoluqxzexaailanyrsfnypccimkekgvoahfcynhvfdowxjywkzwwelkspispuhtoxyxacygtbgynvdeiwhgdmacbnzmqtkvxnvzokepdjbqadpkriiucdvdjwyclcikrypvjaysexteyftxrlrthrxgwqgqgayxfrfzzuhjhpmuewkubcitrlnlxrsujmlkxadcizjjrgjhyljuglvkchguieohohtdulxdgvhtoxbvnuogmibtxdsakiomdnylyjuixixsvtuirmljrktgsbnajpzoneunsmqjvxjhzcslmqdyvfiopvhqeetegdbhxpveymraeshykoaljxxiwjkrwkfvsppvmowfyfmrtphrryimsflivaanyeyokyaraocejzgzxgidmbsvombwqsfktzrdikylpojukcwsjumalvvlmcokglqxkfewayboxmdwceygdjpfvbgindutpydluwwmdupathgosoxnhotozldalbmtkbhwahyajrsgvcuxfvpaqqecowhywrdxmjzkasfjqvbumnahuplcjdhxkunakiavmrazweofqftodajueujgeeaylwiycfsycvinwhbtofpdmksjwafyqftbocjhmzmvljsnrseevsuvirkunfumzdlgcuwkymwczpprpgxvekqtxgdibsrwiqvguyikunecbcmfruwajkrloccwphthvcljrnoksgngvaegkrpscazqlrpjlugzzhjrifaucfwhmmmxpersfjvxbhqcuxqwunoweuxfvolmtuflwfmejuywvbukuzlpmmonmkuwyyxbthcruxjplzpzhvwrozrrjwbyfihglrvpzbsueaotfrhluybzhzftqluynwvovjidxiguchsyrhvidbscdhmyuityteugdfheewffmkthamxcviitrpyjsiqwmruhbkxqejizxuzpzsvmvrxoizkhqzzddffbptfsscgziqtnmdlavufcbftkqkiiixjfbvfoxjulfaqiwqwoceigmzhzhmywwucxwtlbsgmvsqzrkaielnkecuznymtoowtyxangznhvhgvjtrynbqcdirgeurzllbkawffzfwdrmpacouolnhvtnijziicbecojcskswolcrlciulxodqetdxzagstitmknechbzvrqrgmdeewybbxjpgwbwzzeaqhdxtfopmshevgkfgehknkefxwqaukkwnfvtccoaxgrgagupepypnzbductjvwpqhmlczhsjemnzpekvweoaeyhilnkfnwinryjjrgmfdjxobhqammpvwnifbzwidkkrjxjeelejmjzfluyxhdozzoikylwdzpijurxmwvrxevbhckhbpkcbpniuffhgxzepvftlehjaugjvopiwooyqyjzmrutxlublxasaehftjqwpqpampjxlogjrpxgglmxyrfchbxvriuinsmuoevwmfapxpskqrofofhwrfwbycxgvdrklriayrkxuyvfdblfyosdeoysmwnutitsyisawayvlrhxmyzqnwctvcjoljaziuuebkktkqlujsdvmtfxjevdhqctwqtbdrokbnieefsrecyulznjbqxoajnqewosaatnwxqrezftlpmyfyasyxojhdsijrbzpjggsrkmrpobaxmzbccpvefdgxmkvstlodakkzsmitdcxditkclmoinjvwlrjepdepuhohhesuzehjisehnufihzdmksigbvqjhzasxrtysdweiaghspogclgkckkpivpctxwtoipbxbpmtnxsporlfpxunrhlzofnidghpvauhlccjulvujwovdfqskwbunimyvkzbalocwjqcmnoaamsxrbodkmgpkoxpwmqjlfsskesmnvjcqdbtdvlwqofwmsvufryeddmxioxldlabammjlwlicdfysufglfyirjaexognrtckvhxcbmbbuxruxzylklgxowstylvbdqxwnxgdutqzjxszrwzbnyermjqhrgdrbyesgoirecoswohkzchnovkvgvdrqheaahmpbadvbuyxcasdxwexsmscfapbookhedlpeegzkjuxjpjpbrpuqzactilgujdrfrxvzxphgkvrjiqiipvbgpskxyulukavvfmjblglhyucfpbwdkegxsjjhwnyxdxkvbplksfzqtrttcvzjdpeyzdjnncdblvkxqrjkzhnwfhsyxtbvigvrxlxmsngigseksuctxrfpvrvamhqttmwuqkwqbifwqbcghlewuatkftuasidvclzwrbwexcgxmchgbodhxvswvdlbymvytmclgabgpnbcdkawrjqhgvweyuxhjdinuzakvhhqjlyiueivpiorbhzjrphzqbtgtelqpfljwdifhthnpdqeswunpzzifvfzjfahhijejrohodvforlqrhzemvkrdmqlevlfjkcgcwcwknfbvdffargdzuzrwejomsfvgovovfzemvtakrwnxweqcqpoljhccpfwrupbseugipbzkcfrukwbmqrjcpjtnayvitpotykaapexjfrnrmhebypdruxuuqmelojadhbaztuhmukyuedhuyweojqnywmhhssbacapuqcsbmeafcfiffmfqctestvnorhjscvumlspjunfiznbqxqdllwpoylnbiifcgscecgzkjmvivrigbyyhmkxjjlflwbhubtfsqkxzwghfbndbkhlbgwkqcnqcjalcdphyerdgtlhgfzhjgowiqrxhtmuyyxrcxlahnbguwvnxgtvstlovpnfzrzbyqwbyjwtlpebzvvgolggyxqnqtuboqpurrqfwfqsxkcuqcaifeezsdqwdlgwmyhvqqkrzokrehfwdoeskgdloywfzjpusfxfraciuyyhmfunepeghgxuqtxhqseqnljjxvlipcerbobssggebhwxxltgiyjfmfafzksdylbezxvdpkebhipxyndzbyscpfovbydwbqobylccawoqfbtlulmoqcfnprlkxgmvidhdtznkfnjwwramsaowpzjorskjhkewtwvhfelvmfnffwuyjtfsfmrxbyrtchqgjathwtqomoiafacczseirxnnneroukshpfvhdcwwsxkowaokwfwijcfqxrzxpurvaubnsinuaqmzgtpjgirrgpqwxbjwtxrzmlagwyqlhtzsjbzsampfjwidlgkkprtezrnmvlhiivvlmqytufmkbmknnavnuwkubnpbreivfcplvubdcqffwhqnscmbfstrxeltkbicbhmpcisewraunztcnbjwztammktjsfflgngvvqntmlsdcovkxvqnxgybqbjsvvnelnxhwxxbojgnwrowlimgetrpbzpdqdsvoxgseusuamjgizqqcnmrykwkuuazthrjfkehiogqsippsrggylllpkcyugslhywtgrfizsjyiufshiwulcgofkhkqgefibnkglodiwuyozxzokspqzwyuwtawhcjgaelbsdlyrjtcrgbbxubateywtmiuxhewpbngqgyeiynwpfzwbffuqxyygpbnsmpqjjmiljzxrntodoyzihbhderzgyyahpukhhsjsmarlciejoazfpwxmvqhepxzkqqyklglbisqvkxeqezrmxgpxrbpauzcihudcffikaoennstouwltrzgucnxvqypognvsqxqujzuwglncnszxwwciccfdsutgsoocokpoieymxbxvjmatfkonjmqpigbpfvkdpuwilnnofivystdrccdkwiuusuguimxkfhjedszhboehfhtaycurlyzxxlbsjxnzjknpnahoiezfhltuvyrrmltacsrvchlnakqbpuqpbpcfxrapjuuhgobqvqrplzaowtzqgcvzxparghblwihjfmdmelakymzidymslrafdhrrtwjacddniivtgewgbhkvzvocsfsuehxugsukgrybdiynuihsodwdlfkjtgpjbextdbjabxgjvrgnozwikdjxwminopgncsnpghibnfzrsmbrbandudtrjapkzbukatorpiycqpgecwwmezopdysggnhuwgmqejhflarbidjhljxoxppacgdexrhnvgtvrayspmhybrhhtcyfqyrpbvcecbvocfuiroaydnwevngjuwzhojfgoeozkgmzacxvmovauybutgmjmiesevjdrakenvkyykykoogolgvojumtxznbthknlyuunqkcizhxvfvogjgnxbskjyughlgopxyiqbsdqiijecxiqsstsicvxnobshgtomnzomhlqjlqnafipwnejirwmdkpnceoqpnrrpntsydnvuvsqqbbppmuhnxhksgrxzmdiyjcdcbaemlnklldniaxioiepwdgbvplmbdcppxjkvagvdslmztgciinbcsrtjnrtvzcdexvjmpuycyluulrsebqrgorjozzmqoynfnxoduufhwryagvcfkrxndgxnuldqaocpmhuzsxilcpwkhbpcwotynieuezobaogyeklierfclnzjcojgnutcpvwklfonadujbswodtcgpowsaoudceqzskauxirwbdzfiyulmftjmvcedtpqqkrqaraqwtcjmacnyhtibrcciwpttjszhvtsdcjtadfubnlqvcqtudkasmhmyihrlmrlhradplgoshdgzzxqkyrnelpiilotohnlznowtbzdrlbraaijmnjmhcvroarlubpbpyypqmqgrxckynyyqclnidwybiszqluufrkiteankefswfwfqbniuhywracoppthdentqzrojcummolhuwvwxfdsoadbimkutosqhnihhqedtlnhrvqfnubampcbuwfqadsekfczypojvbtzmksmsjfeklmszxplqixzcvmgpmqhdehmmqyybjhasinexxswxyzoodalkwnymfhzgtcyvrlfvpxorgeikzwsfamuqonwkvtkajnynjscczqvgkimngzzkxzjqdydnzsqhzsmlocvewvcgilccuszzeeldbxuwpvgrralpigfscfisrgqbkvmzeivfviiyaakjprjwqkjqsnghwngjmxdvhrqzrojuzxkbqwaqarngbtfgnahyajpqknpwnfmpqwppjgjcsbejlgskdhhqkkefxvsruburjpdvkeacbtdnmrnzkgciwzlvtmetbjjlgynhudqzruzfexqopgvawodhkisedjzjztvnkyzxcnraohfrxrntwyuuvxdarxzthzfzezpfcmkirijiwxaujebmwlpiutbyheipgewfuolbvqhkllrjkdhspzkhajwmzincyhcgmcyjxlmahgieyypdzowzzghwrfpyjosnzkeaskqmzigxvnyaddnwuwyyeawwfmbolmshdmlrmbwffrpzmqrkdevwtdwpwftqkakjtvpgqqzpebtzdrdcjlwhylbqjhcctcypeqtxfvfmjwqwuemlmtwscgbznlqipskwntzxdwfickgldmcnkfesunaxszkhnbbxzwubplxzfhqaajhdsltimcyjdwkgsomurzorbjgqsyuzngmfwrbakdjhdruxijpngjzkdczwstzsldvapzwvjcagyiiukngbmieuoxfksuiudgmsawuejdvpvzrochvxkdllmgvyyjwklzsisyrsaqohcolfwasmjnpsmkkbkgteozbbqigmpgsuuevudqrvzgjfcblmjejknxdsliexlumygsxxeovxyinrcuucrpwwsuphxqaqkfrjyoluoackaejhcatdsxehcqyuitcsngjnkresouxajjavtgdvhavayegpcyilgthvhyzkxnxwosvcxnjnqkyxrxvdnanxfbcisorgbgtlhxcbbptokbehmnmaicvjqqqvuyibqszthpnhgpvzqspmwkmmzffwlwdsvdtvldzxskllurverhwyscljzpasmfshpypcczhnuycupmqxxlkihovxwgsmiteuyviqujyoozcucsgkkpaztvirxctfvkrayhpaespfknfskotubenfwnsyhibbheafyzdaetwbthnltfaixnjccmumglhaotbayilsoqbzkqomwpeumknubhqpqqgxgtybnamitpjzzkcuvrdrmcjzsosjlippecnqwssbesjigfxnosslewcrmhaotvqhayycfasnmvbeinbuovkdykfjchvyrrnhqynzmhgjtdakkmylsgdyobzzpvcpovfkkdwjkyrmtgsqhcfxcmbtcqfqgmtbwlhjxqbhpsysrravpuuphcpmavftyewcrpnzjcmzocynpalgxbjarrziyeyjjijcuogeoxszljkmvjeiymthuflxgmakcitajmowyvqutwrtkkvvcakuntbxdjbczjfbzghotahbctgaubxnkipmbseflhpjuaycpctffyshkzolxcqmhvdaazvznuxewhcxvranesvhijzuroeqedkuizgisadoicwrzrhgakthxbncpjhsimcyfimqxvycetdfockpwdlqwwdrnoermqppigjxximxywyqkkwkwaucasnwcklwixlqwzqtjnwphikojrvjqlojoaneedebegpfjftqkayyxpuhrefkhxirylecbneczhzrshwjlzhwxraxomeeoeuwwbrzdfoapyrqtfnapgjlcraqkxknxmdzaeroqxxdfiojfhriglkznbicjvtkbiogzudnhbwyjdeyedkfhspitgraihcdacjmubvnjdnwanvzuxptapmvsshxpcedeexxresraraugmyufvlgvsytyyoywyxyglliyunvyzjscfomcihbhhdjzgkgeqmmoljyharlqtkebsynkhpchvmnaqowokkeyfbjlhgpltiadcimihsynghjukazexwlekcvmbysogtwyrmdqltgjywncvryhilrykwklxawdsdirywbcxxchwjtqmwnzbxlinbmizoreloqlmmxvyinxqooabhurdtjbmzbkitfcybxcuzxetqdzyhsxyfhuumrskczbhppdebwolijwxezfhuxchgzjlkpbvdtjlhzjwvessbacxoykbhpzsyuopqeygpjhvfpsrnucvwqektefyijqwguyvhokhrclmfrcbqgfbwmptwlxxlevwijkzjoxyzpyrvpslgcluqqnudesgtmhivigoqvvauurobglszvgfmsvcpgvfsbrpxoxekanfnsgnaponjvskdbeedbvbqksmefpkkwpyxwljogqulnemkjehkygehxiazmxnccappvohjdyjuaavoashzqzzunzvuphqiejldbszupmxzwmetmhvxfoekclksdycxmqvjvjlnbwyspzxsjchyzchlqmthjaieghcbshcdatxffralzxqxpgmzchakrtlmcsxfyjeybpuumtpjbxoapbybyvxpoxxndlfgdyhpglxitnoxblqhynsftxcawajlrrhjzbbtfkabpokrwwylbtbxvmclikxhugbqhysmqrybgougphtzynthoyeoimjhhobisjrrtxzobrrwmuabfyyrfaegivpreraccxfzfsaineogdlanjsekritjeimmhkfphgmefyvxvoffccdnxkkxulnbdwkvsyenaapohridltdddlqlwhupoevrotahdplzgqczisxfrfxupyjllyujksarpsefnyxsepgeecwozmlnywvglliysvlexsdihjdtkzyfwclxbeeybggkihorqymdrozvcrrxkyvqpyjoglwscykbqbjapcovxfssfeyvyergidholownvlyjwnnqiyxpqgtzrvplpsvzqugajgqgpimsvqtdobpirwxtdrzqzsjaxnujyvteraailkwlokxwjdkkwefluplwnfstwmfftltbnfkusjuqyszirderbngyegrsuhuovgmscttvqszyrstfokbkarkgrvwasvjusgnmuncekuzcszyizehuuckqnvxahpwdduqituewlisjqvictgmjzkochdmmrzmxmaovrhxlwjrqbsxbkwlvfniuudjorfanzmzyimzdpbcgwcvjtfiyzvhkahacsornscrcfpeedptkojnpgdbgjssgdipvgwpepatqxuuoqfdesazbrlrmsosiihnteomconqelnjigyulrzoquezrgdsqudzadrtvtnajhmsssnulcuptbmjfnpoflwrpgxwdqzxzsrydggzqetiivylpjpdgocegzkdwhkmpkztsryfloalzgpfopwmgxyiibgglrwzddnbgjuicbrjenqfhqeubfbamudugybopzwflnoejothqcixgvmozhxdbijuhnfiphpdmojaepamgeirobagwtaiizwzdsszzejwxppzqpotcsbkeixjzqjusxnmuzkfbymgahibeffuzbrvjslrxerijwsauaqqqfvbwtondwdugthnzkoulgykqkgkyljgtmdgjstoklxqdkhfjolakirwodvqmxgjlxisgkvpcmfuxuwzhltxorqvwwqjqyvfwvibgswsvnjwapsionfpkpsbqzkyzrwhbjlnvovblufmaoangzuuestyedciukuagcyqmlpctlnrhcfegcviwhrlrrwqbvrodaaiqezodbnctszmenvkxnmtqsotsusrinbobtnoguodrjcebzsteucsetmcoctlejowwpucqgyoctbznssbozwcrrhfmggocefczcdpftxcksitfrheoyeohgmuueweyiqfmzlunqreoshjpndxjfihzfngbiyxtyydkpwdfcdhvxskncvyjundpsmpiiqjfkqsdxsuwzsgjbnzgdipvwrhhsppxbmvwrdcllwmlscmqxzephuwbrlumclcmzeakinlnbpxmqtxrwajwlosxibdqlyjwmhxlkbxvjqcghhyvfknporrzjfsmxwcdouzxwxbxnzhcpjnuledsnhpiuxtpetuxphvmgfpsitjzfvdivwqbgvncsgmbkjzwoseuhjzrilvqyezfagtxevzrsjbevsuqqcafsntnayzboyoznucljywgqnochzdfqjqqtclvnaegsirqrdzbyozupzhfbtypytcwxubeazndutrbclakmgszhhpgrwmzybuohhnfxoccknsuarupqacbbvhgtctzpsdtbkgthttwvjzzqsispjlivflqpijdhjpkoumlssqrfvfrvkreubstrothhdqnlbkuavqxklcigrjdvpvrzxcnsgvvacgitswrxazcpmktrghzkcbccvpefzwuvrnbpikqahizyaeufgfkqlofgfgugugejtqsulxaxsrrwrteebumbbowihewbkwvkdubthpxwpwdbvsebxgdovxzhkaypsvjandfwfuwhfqluszcqomlwsjrggbemcefttmffejosvznywcgbemosilcaqfehnmqqzbmjbxglzmsjxqdlppjpwajajjzayirgyxcprghelguxnpbhmkrraqjbyipteuiazvjhhwyoumlazsrxanpmmvxdqecoelezgvvhqunpsdlipuoyfjzgbstiswyizfennyrhfsdwsktgxjefzluidjdfyewmznagjitfbksljkblcidbmcvriykobjefrijcdmgtmtrzcwzxjvcghppymy")) assert.Equal(t, "bpptpt", LongestDupSubstring("atrccwrcsqvdyundzudvpvtlkktrvnrrlnksmuewuppgvojypyfnqkchmwwavdhwxmnhhjdicebqlxryqbnkdbfoboineyevtrnuamzhmmcrchmwpspuccgfqvtaqyitfdrmfutljyovpikpotkknydgvmongkzswzfhjkhphixffsahrecazodlwgstphmdtdmstdysedeuxvhumnnnlmmxzyobckbhfezjibjvqnvesfimfairdvqxylaeiscszgrpmfqabnskigizdtamkdqcxswwwwmbisfdkuwrqsucmskvxjucjvxbfsvwompwutjxexxttiugbxutgztpuytyxojsoihfjhojytfuuwfvgwsiflltcmtufktedeevmbmsuloiieozeqztpdgjdpgxklpujfasojvwwohbdkbdyhsngmnlsneafwjgkpkhuyenmmpgsslmziqptdllckhubqjtpllmwwfydveksaxxxvzeflkzfgncubgmdovzhyjbzoezccqkziwqvxibjgaziiiufgrcikqfqntxkxpmezrziqqpiszfrpzohhohzftpmoxeverikacxxaxiubpwtlmmnvimoagqimyyzanzphvawzivfhyeiinoqekufwpcuifunyyrlcfmicgyzjjqqbvnathrzdqswmbpekvfzuwlhvmlyldgsxftvcrjnsmwaxgcvrowhjnoaxyzsdvhnuqnyvspgkxsqqyqfimrqjtgsexvqcqshthiovaulwbaatemveotnwjyttqbapedujhwutktisxywpnbemnhwribsmcdegimlbuwnsblzpkoyewdvbmvjozhzblnhgjpobochivikutkifjahwgsmwyveywmnmopkebspdcpjrvymymwsychdnqlcsqingdlgavtnstdpsqmfumqldjpinxvwwgtlbubpweckpshpdffeatyjkwgxzbfrhgcfrhutwbqyolvjkvstmlpeygkermtibjsyagjoxthwupswkosnynlklokbsrpawwdlpvpdssxldcyhgmcdqngbampbnrfxniuojrqqvkhvyhjixymdplubtzsxnqygjjygpxkbtwjyrzglkqvntzjqkqwqlikgyvxqmnzpjlbapfodhexnovkkcpzibmoendqgggyrvuecqmngvtpgnafulmxbosgwbfiqffbvqbrmhqdwlqfxvjiwwpcdbbwwyweupfwkgjxzcaafphrzgtfakyltebqtokobiirknwrrmmcuwxlyxghnfuzgkffytqnubnxbnnxyyfpqkxlhphzmfgrnmginwopprudgbgdestosrfmrdjlchadgsymqjkrfksbnionnulbmwidesqrztzlixnjlkofmxpkqqjjhzctxiezsmrhvikuenhpbczqkfvyxuzkahrrydpxbdeqpbhbgziyusvcjsrxsazszhwfbtoubuolbcnmulohurzarsnchrsmxzrpnxqennfwwsydkjezlyezinnrclhydjyzwandhmaqhnlnwkjzpqwqrqofjqwexkmwyrtfogzrdwvhhenrsiljbdwseprmnpagshpsvzapxtcbbfqknbedweigokbhojjodqqcrqlfxkpqdbaqahsbfzdjzacgrvubjaymaghwohaunkfobbcmavuxpbhzhwzrrmilbuoqwtahlplrntuxzrdbedpldqfaqcbeunmrcexoipnyusfdqgwniyuyfscwcitngfvgsgbpptptqibvszmzzdoxptgfeghwhmxzppwoxxqxoskgftsnloajalhvhokyuysjojawkannhdqlkczztrspnvfedqgzxsgllwduyfpnrpwfvkyenweiropzkqshzlgnnepdtnjeslqnheeqpjlseowtuksbkyvdhzjgdypivcboorfuzklhetdgpkkpfoiysomsflofwnnbnweqmjsnofsairqeplwqgrwzdfkrjzwhbcapzuwpaullwirctghwyerwwnslqfudsnbfoyieqxojbzvfavpcweyiazlsmprtqbfqpjmnotrpnuvwxxtxyjcjsmmfxqqdcytxjdvtnsmumyebncgfdgftgulqiygedonijqvkbzzjsspmgzuuwamzwzualrdjmfxbuluidgjndbhtyitknbpvhqnsisncaoscvquolephwlauwhmyixuotvjbsqqninhgmmhdqjfahvqpftgznvmsvwfcjvvkdthzddzeajylhztrocxzqqkgsbtixrwlemgvdmclbubwgppdmijbwcffjtblwoskbyvxjtlnyzfybnglmwjzybvqbldwigeppxgtghdcnslomdkifmlnpujrhihimhchyxeelmkhdveycrccduohadrypnpspylzpgspzuldsawfwjzzqrimxuounkmoxdblpuyaefpgputbamawextpamfkluthobmxzttmpuxyiwxigrhfwrnhdxavfaxrkobujotafcebdogbjxzaixelgumawseakauqaztdrxqxybpudohcywhbmhesvtzhwapcrjozbbbnlagmhbepkivsgnkflcygxykqenkvkzyxnbzjwhtrzltwgvgvtqqclmcptgpddshywokpndrqgojznqygbeyvqmxiuvuxtfgmymhhargcmrmnvplkbekjexbdnqkhnwtrkcakjnvsdgijxiklgnpbucmjdbtdxwcnrpychtkqdoljbsoxwobuwdsirwkcuwurqzdnrmkvfgdscpjbrqchgzaeraijewysaksycobbfhigywuxijmrixhhvpvqeykaictbewcwmqaslrffundlkitdamwcgmutuzszhhptakbmdsqtmmcivhrvucuwttqcpjpihzuuykjjovmxtbdrglprrboevnpdmleiqeblriswweyrqsgofcmhvmjdtivrbczgusgioljveczlculpnkjeabkmmyfvprbjahbhdruwqkwqyrdyizhwonhzrntlbwntguyudolxbcbbwnzidggwdxntmsmtepzmvpmdkyyapurrunhozamznkykxlupwxogsauidleqeshmbflwgbaiuyyigapeyuqogklgdtvmgwknhuwpyyvmomlfzfvtkmgtiocabszraxajmicfutlsybifpplifhsnnpfbiaqlpdpolmcdzzqapdlizmrionqwtuvdqazzpajzqraahpjrkjqncnrhghhckmkgnxmktszulkdnrbkuallkuqhfezwdvilyxiheljpvnsspzcxylrzteytvjkvkwgvksssaphpojbmmfdieivteaoynbvnrlggfcdibzbkqhzrgsxnqycwfqpheahkdnkkqyaxboibejwdyhhrrsuchlltutbdxuqgjempnmkllznjlarpzvsoxcbihwthhkypxmzycjdiuxsjbwdwuibgummvrrbdclhqkpeuudgggswztouetiwiauxufbshnzkquosytbmpwhfvqzfugszeezqmezkqcaffzchcsachihwqcugtwqjmpjfsfnquaqmssnqatrbelfwqarcbpbbtxwlkyrsyywylkzqghhwjkpingjunmfwhtweozxckhjexzqlaqvaacuxvmqexjprbkpbpevtbjnvzkcejqhbilkrmgziwjtkhnjfctfglipefnzjmfwqskkmojmxwfhlmbseqfaauziaxhpfiwnvfwkznhuegpuqxgfayqplnichxciitrxgdujumggfspyyaswablacynysjlhexdjkcaiirehdxnaaeiwohlayfgyxmtajacuduujpaqqppkzssmvsnsjsticxkdzukupmthuzhidvyiuwnrovdavjuiqythktilsznzrebseicetmwsajnfobavwfcrlnelgmgbdhsfpgifceozkbejlyekhvsxonpyqvrisngnvujeihiidoxqqeivmfkavixomrtpkreepxuydfdbqtdwfphasqavqtvtqdqvnwymroimhoyhpnchybspnfripffmjuwcdrtptehikvayvqrrnysuaqmxiheepqanawsqkclpgyksydmumvqmqnknwemlgmntyoyfzesoyzubjvvsmgdxldkwyqrpetxphpgmhsvttnzjebhflrpsmmtgctpvcrktuvceowheketnqichhxoqzjrvcysxqsrugyruvxkrlbcbmpkbeubaxmsgwdpnvbqtgckipvorqtxatumwveulssxfzxinsundovsmuysdzjhkehazswloqishrsapagsvkrgfbwsopnvoenyemdbbdqkacaamceipqauwafxaktapymlgcqbbxlblhofbkuoxzvzxlgsurnrqunhibwbnccvbninxcmpkylfplwhymxixbtsgvjzxwavfmjmmgwyczoswteeviqxnmslpjrloyotsxsnzoauaideuqpbbyonucbkuyjwemadadneurkubcbeqvypabzymevigqwfyickqxqzenuxvvesxtuhfddmfowusvawgvlvclzyvmfkkdzvsvqszpdcddblherhorweugqicxjmsbptbghfuozxnrkepkdkkiqvuosczjotxrqinrmbfytakgcierknndthpinpponyyuwuavqwrdjgxnrxxnkkundhqezufjmpwrszsmxbgxcmrgzabisiqfkxcmlsiwtzvxmlmwoksgtzxndnkdkceqdswfueoceuecnionvyspqlkifchxsofugnzjxhcwsczaqvuederxcsksjkgzkaaruxueczckblgmkjyjsynbhbalibdnhcdxstpifcgeltinuwkvhujjixdktarzgfmdxeysentrbywyxguoovahccemzhysfobspvivfelzcoqlkxlpnrtotncwpblpotxnqyxdmpujaqvsivexkvhexwucokrfbzwnxenedqyatdrveyzivsfxuyjmaomtppulgqtfngxmwvginhrgzuoehsnmjfsbxiaeupevtupnbxhhqvdoetsbvfgqburokywlfncbvkbdhxcvufsyseywjyaicygvwhtxbhtbauujtkfglgfwqvavvvwrjuctxmvaicieeoiliztxqwalqgbywljnzhnedxthnrtsiwowekorqotofmmjzwtoafftqnxbpuyjlmwrazqbgxxeggsnqzpneggowppcxaamtlptvhxxfmwwjaunnftyjwysibghexnvxcsocgoidctmcvckezxmyhvkmvokhwdtyrkpvsmlfhmvdmxdbqxaoubylfgvzqltjpvjdmzhsaqfoihevxfozxannlinlbxcnxajazbltjehdqugtgyusqryznvepdckcdiwrgwgktzqnzzrilomwfrfzxrjjodxqnaxfamxzauearvvhbragpmxcusqfhytslkvxonmhlulafcfupqosxyjiiqjugvmaozrnjllfwbpsklbdmlmnicfcjkdvdlfznjbeenpcaeapeepthehdlkbqjqqoxkoseqabcpxaitcxhnkxbaqfwjxmixbrxyqierfdjcocbznkxezxaleqpcrhgnioeccyccndmansftgxxmjrzrhyvsfjgntawebgeocqkvpgflrzkahglmrdcxcphspxrepxyctgqgwwvarylaecomvdkebjvctchymrwgqllaqqydbvavavykfkymuebbcmyssdrdguymoxlrcdzeacbxdlfcsdxlhltcpluwxdjzaigtmlsdnsskomjvqkeauldygboagierhertwvnocsnnuvyzbaxnsipfotqkzbgmjxznxbpyfomrlfnmyfukuppjeveqpngnofjjefznxyxrrjevshyslchukxmvzzicbvuqzaalxyjsjhbcqmtxwbrknypcohiqxxghvznyimdpsbfhrwuuxkbzvaapiyrwejnixvelhfupsjbgtbiqbyitxjwpvhyfcsbcgeqxahxocqeznsusntysxosmpqprjquvqaztntrjcmxtjidvkrdfukrwxddpmtdupmiquqozfxaktmytvjfdhvhbfxgghtlypjqnddbaywwwnptocojefmwhjpwvyqxpawoxghrwxciigphocamllaviexzronmainpkmitzzlsbgfxqpfftapyqjxtpqgodxdjalujeibgptwvcoypxkltnalclpauxijrrhpkcdmlmknehnhwwrxijymklxzrqhhbhfufksfxlsqtxwcsdwyfcqtmbagcvhugibrxyztzdbuxkgtrlzmlhahbmjnqqiapeuulktleflisdogzizypdxongivjzdogjybrejzcxgylmcsfyezwkkktnphvraivqefbubgedhdogsepgjcukjylzlzrokxwucuswvhjofrugvameerdbsajeovjrbqmeugfqjqtuqetxknovoriobuvnmcbsczurxidhfttxhebkliyzxdmdjavcobpvfnzjquqpzamryndfhgbeyqhcdffnyjjulqowfhsqqjrbvwxfpbfdymodxpvruhsvfidrumzthynusaywayoucktcxdxicydmnqmissjeejpicqwezcoqmxfdvgurwawoxxbbwlddzthpnbbntedzbmzyubpuagpvtgqgmyfnsvppjdoshrwbtqjpcxqnoemjdcruuozybmkmoekdxhcphpnhhlqjdtqdglalqdgykpoxajdbpxjiyxsgmknwknmocbrapmadcpnfkpzwodvobaunrmdcpychmqmfqxhwdbhiebrtdmomybpsqtfxwtxspjgvhkfdrmygzxcypinfshrttpoljqpldjmxxifpjkazfrnaqbctbranesuqdajmqhhnndcgtskeccggmtoaoiopqagnntijtebcrejqtlpspczmfkbpxvzkwsrjlxztoowxqbgdctkopezwnifxgdmjkhazydfmpaegpiiqsrntmbhqvjsyoufrjxjegxpwcnihfywddzzmestughaekkymhmurduvsckpgriznnglnxkfzysrcntlawetqnrofnepradwnkuhgaqqaukdljdwszxapesrlfjhurqfmwoyphsrawpgiastttcvwugnqfauvcjrulirfteppsobhbcilzxdbowezdpabrdujnjdgbhratgbyitvfchtjczykuwtdfgjdzdruwlhozixkbglvucdilqnmlcxezasdsfbngifpfikrxzcsljnaobomwixrsntvysdngqtyakbmrsapsmjbwbllymzucsxvmrxirdinrkivdnmjqeirmfgfjsheegbrcvqnkhauirjihtrdordvhmxfbbohnpihshtkbjluwrqyirnhxedjmlpkctqxdyeulyodydccexradoraskezjchodcgrdnqqfjwgixdsillpyhbclnzbnhgkkkvjyhayeafthqjkynzxttrcszrtytyulzzqdvbgrcozlmvfuiyaenuwtgypinoixzperqqfffwimavwiutvzhlogohcqwnzzbhljgnbkwggmhuzaukfnhqargxkelmrdjnpaqeqqkzgsqvwbzngtdhvsrzrersevxuyzxfbmqvymyjxpkhkmvphrsaxuuwickgulmndcotncmzfremburoxtmfedycmzuthmxztdjjpvsqyofmbalkepjqxnpjrdwaihbibtpgoyplemfojodztwtbglbllsablbnyrxcrdnsgsgtvnkxlvwzyguuurjexhkgbhnmcjvdydgoibbwrdsrhonvccmaiwibhyuhbqefzhpxmauavrwejubwwijklswexutrdvtdhjunaacpqbuimszeposhqhmloempxhtzfgitenvshilmtmafnknnolhnsxyudwcdlrfgqiskpsvtmivrfnucitrilveqcsahhbnjmawbntjoauawunysmmnmylnxpzyazgvfspjceeksbxxzcxmtlcyixmgnkpygkmqwgfmnxnxwjmtjevjrjaujjyimokzrwqgnlcmhpdxjbtkomjwfyzmngdobxheeylssilycebfzkchoaxwcmhirqeadvhlvltkfllpnefgjmgrdkclnjopzzsmfbyylojyumvxtgeltkewnhzcwloklyjvktrcxrhboyosbuaxdqfcyvimbzpawcwhisskivrmpstovfkeyadcvxiayahlcswarjmkmcqioppkcpdwdazzhejkixadedwgilymiychlrnrpwydzendosahstqcqmzrvzcfywtjtewixvrvgtccfrexognoipjvwsqonvmxzoebsdnfvoeiboeeapryuhaddubeammqnggynkvrwodhwbzlrcpucofikjddyvpxhostvuguabohanphkcnwhukxeuidkmkbzsfwiyuaoifdtnlzjhlxinuujpkvoatjeoczllsohmuvsgqyumyasruiqqeatsaobwdhmpyhhqtjvdyicrtrbdkdrhoacaffebvmuqnppngwdevzhuvorbolrjwrjlgafupzeyetsgflrtlejyjncdqeeoecylszxzzlbyussyaflbwdcfgtuajooxkgxjhsmtalsvznerjsdxhzjovstbxgzeqkklsplfndvgjidayjhqtlfvpdbdsntoexmggmeeumaxqxhlmgdumqlbfgtmnpdsadcvxpmtflazcsxvuiauvjqspoeupukdwivnjpahugldhjalidjoigucksylhytoratfqrosyeggxllybwsexzkidallsdgynwdsijjankmgrpoalgujbtmmgfirxqulejxmkzqqnjwsrfophrwestceuqkqjhcxmjhfrcdpohuyoilwfrjlyvnirrsollfpfpkojtpvxtmssvbmusvjbuaveqnlaesfmhqbjcrojvwbgdzpwaqywqqmbihtbngriwygewjygwgwlqxuqfzfplewuzfcfqmptcxofewqusmbhqclqfcbifmqkfotrytxqsmdfrgvnqjxuphdeundghdjdyrhwszcyqdtfmdmkxxdmsytwrfpxcepketsddqlqdqxrdhyihbgdsaxzbxxbivancvatunqdlgfntxqaxlvlrdxxyrfwtefacbmyfwysnuqshddutwfwapsfcoqtvjrvxhbseogkllxdkqxlqmymbiahbbftkvgkoklplhkosloemmdcrnerixgjtkujzueuukpyigqzqkbnamjxurefdocrjzsvyhlctkemllhdhzzixaixkptattfqwdgylraayhtsrkqtooirhflfkleuzobxmkwslllrptrdfzjiokpjbaqvwfaacfyahstuwwhyyqifeavpzwnkeuxhdiwatvrcsjopnlxnbuguifriavyycgeailibqbjevrizbyymctqxghbchsninritmibjjegmtbsmsofmaqfxufzwkjabcvasaycnlvlcnquwdzjcavvwrscksysuupiffymjyfkvobllgxzvjgtbpmxyvuyuaielyxldzeevyrdcjqpyvwihstthgbxiyxeymqyjrrpigcfkdqezfetnjqrnqayqbpbvkbiuonhyurtyceztvkoerukukezlmuqcxucopxqtbezobktlmbmuykbdkwilpniixqhrkwaaxoooueezznecytwvryhhmzuhhppbmvlgvjwwxohxjcxkbbdszocbpuvswkyebffiayiaxybwsvcnvsjgqfimyoejdukxjzrtneksmzyhrsuoetfjywyqbjdytjzorzlrqirorntdrtfrvfmmjurpbdpmqwntcexqgujpieyezexukvyqlgomqpixpvaweoazpasuhmetvhhbbtytcdnprhlzqyyseuhvzdcobkqtseutchbniqmpqbawzekcbvbelnqeygwdkmncnujppctfcanbvynxxibpdnxslkmlfwxhawxpzfbxqonqhwdvpwyggxzpgqmgudhzoxnimgsxmmgectfvcxuexxlbpyvlrjhanixwglswwmnxanjmtrtcroshmotkhtqsasegoaazysnnybmpjkueekyxxrttzgmdzjxvrhurxboesrdkquxmarspjcroltxfejlbefxazotypecjpvysvxkiowodwdgmaclhazrqvnmdfhxthssccdafjptephevbrgcueeicxtjgtrmxlmuwguaoffaukxnfhebackeczcdrdrvxdfzyywyustzdfirowzsgjmqksnozjvutcfuvpzzjasmcexjrkrsqotzzkbvhpfkoiqjdlrswqotjzeufneholnylpzfbhhkbgyzqcqilnwtszymaskfvpnadzhcdcrlthyqhncxbqxnzvhwliurfqkztlmbaznqetssbiyfiwjnpabusrgkxbbtdihegzwtllmvddhprkzmcyimoocgrisztnjhvvaequyvrnulbumlsqnufzoblewvdsxmgsvrudfyykyagsjmzwhromortiszajsmgmdghnakufrkmwstjdfhcdngmjudydziwasqzxpkgfiofzvffxzxqzcdxamtzrnqqymycntsvosmeoqkqlbnxcjwuhghlcfmqwxdnjygqgmxmwfqiofpnhjrhgcpwezxmwdmljvetzfdwbuwmysdzbhqozvoswfdmbxzhgfkmfpuuoytvxthuzgyhgwjxytvyfccygqykdesjgshenhdaufkuztpdcuzmxiszztqgcfogsslfjvkwajijehmivamzztjlwgrxlfuquxmbptvblpoytuuichalvvcukkxpgofxwpnhdjzvoopelgkhkskjgqsubagzaacpablajznipwtnqrpmarezlnpodmqguhxzpgjskjvnfwnwsswlaogehdqpwtdlzocepohodfobwuhwarsjyxqnghtwpxkyutplhkaohgkuypzccuccofwgimknnenmovnnfgcpctiatshhzfqqxrtgxxjmscddxyyjizdbazrrorwsnvoheapnnwuovjmreslmvalhdfasohzycsiaqxairndxbsdkssuvkvghdafwsaumwemerepzxdzpynqxtffrgpaqzauirqvfzxwfhxibecqtbtvoccwgeiuzfqtgoxwzvcugmyrmdwryjodddyvvasxiqavmgqdbfbxlyuusftzvwjxqlvjhylrxkcocphjtoclqqigzeaelzsieltodvywnhgsemyaembzypxlgofamzdlsvckakislnomzzeuiinfmmvjzsbumldusbfwvcdfrjpeychlkiydnkjhnixsfzfuqhuoeminybgjqetjjewesyysaagoxzvdclsjaucnfaheyeuhsetfgifabgirxfdnscamxxnpfnwdorooyidssistnxqvgonklyfpzkeahoeekkhuvrqctmmuorqjofalvhtwdxlelsfxrvheasshxgavrgpylqtwrseoyrlwldfesibblddvtvykopuqbplzswmohyjihmdzbqcyqftuavqjidpssmhjxxyufodwausmqxaengynsygulkgcoklqmrbcyfccdmqhfmpvvltnhqyxouxnbxngvpcikxcxrosbqkcqsaagrialvfytlzszcuxrrlveizmjxybvayrduyeneiuxjkdksbilydsfmfycsuahgzckucxdaxpqnpxgfsbpossfqktqnrltfkbwtzrorzuxqxhxkymshmzqfpnvjantufffldmnihhndbcrycwxczfznzemopwfqzfeqknzradnxxsgqfgpqlpobwnyslswpuuzwntxlaqebqcdjgctyojewerqprmqhrmznarblupejivsfgopusjjrjdwfaaggzidpkggpqfqfbqnsquiuadapepiuubkdddtbqquycbhzdglfdehyrvjguzlrsqculqwdechlbhybmwmhdbfyqrfpktcnqruuuoatonzipvtelbojcjmxifreylgfrcxpcfgnijmmkxfklpvursyfihkavtiinbqegpnmtahkijxvpxwzvfktalwodiowexchzcjuwymwsaqvcwbkcjcqzzqdlmrucfhqbnfvcazymezqbjivugrzprovkilcwegqanskaywbyjhjdisggscskqwbfxoolunzsavvbwgjcgmcngrnvswdurbhgdwxcgccjaiygsbilxziryrnneeksamjjemblsbkvskehduxrnasklcckmskodlvzrdhkqeugcjfnzdzgwwemzsjcflffukqcwbuisnhuykxlfolztpoasiqwmxkebgcazahuafutketjqzzojgktjhyuzbkpvqevjadznpfnsyfsnfqbizdnackirebnepigrppoykdivdowvuunxcljeceyzokutauygvfbktpicjbnvkzamcgedcsiamcgrenccwgpennefjirpaelzzbrnvwsxaauutpcotuufyxhhyeggozhupphvqfawayyoouddwghrskmiyqpjvzktzfwqzmmxwrcsisdutpvfijbdzmgswvxltyjeozdsmkdthndkxfnalkocpdqgjbotaxmmtlcqvpkvjfhhbfbzqnwraelyhtutehuxgsptbmasnvfzgjxylpqdoxqnkrbxrrpsqrrcuensssnfjlgylivxoypvhugokboyscuiqbodglebqiqcolwpwadsnytzvhfuvqhhtumabxszegtgiqymqjmepxixvexbvmlrdltbxojtgxdrovrndpumapgxiqkebmifdbfdyfxwkzvmxbnqcbytcdjhxmwjsnqouxloltvqgpsqwfgglkrwucngwczwfpnazgbvfpfjhnrctfwodznfrjujulkuanowrocdkuqzwectxlnugwehxigsziivxpildotmqylsbdjcdfkaxwdnuqotdpzpoxrpakoljtinapubpjlbfszyupcriwrbbxrsmrusytvzwcaetgnacsohcsfabhcugykcibdhfwzqpxsxigmbyrsmemerfzellksvcbbumaerckvjiqnciwatgxufooesiqvtaylqyrpuxcbbzmwtsaigjnunjjuyydnepjgafmddvfledywgjyxwzwejvnxtcuifdhuynozmrmvzlgfgppnscnyplnuhkywraydexicczulsxlpvpqzqqhlwjgewivebdoqzwqefrnnnpwuojpxdilcjsqrkarttuyafhsgqoapslypcjkfuaivwqijcxrkckzvejzbszdoiatyzwvqzoinzemkionlcdrnddedzddvytqigafyfcivkcmqczwevbpkvbvlzjpgnahumewhoxmvqgfzrlpfsipbgaelbvfcrwjjsqkupentbgcmohjumsaqojemwbyacedqbacuvueiykmuuuztoqkxesbxakyfcbzymmyuhompugarsswdsoveoxyijibdhkeyvmvummavzmcalcmviomyeqaefsyehpyfivgbvkjnndhhxxtdzqrivtuwapibjmawxxfsowudxtygnligoewzluqntktxqfzjgwrxsjsryfbrcpabjunpuzvpiahqemiafqcrqczvstwxdugyejnwjrybkygsbgjriabmnhtckpjgbxcfhuswjvlopysnrrhdaiszldsrkppguyodnatrspdudnnvfxmiascivacwjldjnmojhhyunqlwbraljyiuxfirznpyinbjfcbaesrkbxunqfvlbdrztnpaikvigukxxvivchrdxigyiquusswqylpyhaahyxkccjdvgtapgakbyellmpjbbtlfctqiaighzcajvbwzndgjzvfonacthmlcwqrijuelnqwuoaigsbjpkrkrzziswscgyaertqujxseekkblpzbgiabfxymkxtobumxjhdqlnfdcerkespcqdjhncpcecsnnkkttabzecjibnyebhzklnmxrvcqizmxwgbtxgtkgociikpnoqzhbrcxvctsazykyznejybscchpmllvjynsnccaxrayaoebjrytokrrrkdlcsjigvigzkehkftodfhlhmwlmyaikergpiipmjhyeozlqjhidgnvjzwtztwrmiwxbmqiqscwnxouzskvamovaiankzixqgxrecjlfmfrkwsspgrflbnhtemsapfbtzommhjbhlojppnkmpqbfpfmvpvbnceutzojdpimbugutvlgiulhxxtmeiirzavtxgdmanuevxcnwnusrbxrpwjbmydpntbazcymjjyjxbzgaennoeqqsxdoazddzanwonmsyxqqzofsxgbbmihauikkevisxjkqazagxyzudwyxkbttakdapzdhzngbvzzoqireerfcknurofwamfqddngkjulhzuezgfvrxbcabkoqefuijahruywvqnrembrtgqnecdukdhwzrjscvelmznmpcbvkgjsxqihcwtvnsxxmmohyxuniawacsqpjzlwpofziswqgcqdfdybgxfnxhxvhsomjfngrckqjqghkypbgtguupqzmktjleqtfgrouotmgssrqxjwicgypidxuudjebsmzwlcclzsnhfmhxigazkxegsgsivoxiiyyybxionusfayayzizbimmqpmmpbcqomwqjskmqmwgwbqhqgonrvizqdqiogypoljbgwtunnwnvehmuaqgzibgbpxzebxqhyptcdxqvsyzemrghbbhywumxgswdvgoopvshcxybqytbogruzaantwwshmujbsrscekfevscjhwcjqxfshevtvfqjqxkduhlowbzgkxfhocavhqvzltxgezlipaxppkrkeeeugicrivymbteedzmfdrcqzatwnnrzxrlbwgfmupqesmuvbvrmcmzhbcuezgmowyylrseicknlnrxshwscfpiivorxczaagsbtjqpacuerajotgekdszzxyheqjqkfbfjepxdmrtmwxuglgcisjzdcremfcmfenzusukooqfikywrinqdqfcqypvvsaleflywxxdfzargsyxkivbpbousufcbcvsncfsazqwjizbbliowhytqfmtqvgtfjgwlonifjdalanawkxckwfswqzrolezxrwtpzomlupjdoubscnapjhjejxfkqhrnphirzhhhaspybaqmypctagshbllybscfnpziniqtglalpyvfmhpiotcqmmuoyedzmvrqnwfigkauyufiafxyuognyxusalldhssujjeqgensxsbhpgdffbrvpkfnpxjqikcrflujlbyaxnjmovhdrwzzbsykdcxiqjqdrlgixeavtkaqemcmrhnctqkedlzlvgfwgwhfqzzhxbezywsfdwtwhgfszfiexgypwtklmmyceqrbewfwbrebaxpmiwrieejdigesbrvbcwgjlcuzkdrsseusesteyrcqyypudjonspvixeztuadqugbxifimdssgxejoxqwgshdtoknzzveyrpgdnabcqqlirpyyamxbsqhdhjrhxpqrprzihweojstgvjwhaqccfligbqubmojasgmdetarhsmnuncuufejlalyxnxhsmntzjtvvybdjnxmcwjdbdtgkhinrsinadgjaezykyikgieigkjioxjkndnlcgpdzicdvzbtjejxbcbmjtplccwuxdvwnvnhjncqsradyyqypkjtkbtxvuonyblqzmsakfousbrnayhbucaootlemdelmftfitrkzedvqltciomoecchvsoycyzoaxgmhwxqobeqwicyymqiibhbntsugdfbwophekdqvuanrsuumyshnrnxnlaukkjxobbpnsrvwaeamfhliesynbvbdcabmvacimfyhhfeealhkfldxwntfyurlfvlwxhouhrghunyayafbnyqqdwioyrfaiyjlljfyndogdwswarevgiwojyaexrnyxyrshvybsbbmjayufhepfeyusrimqalaxijqpgjrvqyxiobowryrdiuorkzqloikijrusjpsomowhiazbnymmbvwkiszuuonqkljshpxekokkerpjzmmuzzmavroybuqtptwvwmhdwpbjmlscranxwosyvjwfatluihyfjlaolvicmglplegyhkfkxnxmnxfehjjlxtlfarfvryhqeuauzwhgegqyoqzjxdueinpalbudjtrbmnwaqzyvspjwxjlhdfbhsflselnjywvgmfjuezyfgntxnokgefycakfqwnheajyfgiwunaaedcwkbnmcnynlaxwzbkajwcunxwmwwcmvdvaadisqmwxtdqbvxphrfdhvkvdkoulvjpuhlpntrjapkuuvjymdyauddmgftgjqfzcsdkflxymorgxcqfichcaedcemcpopkywqhacfljetfxvwozzqyglvkzgboorjoallvaouohqrmeruktupbksfgpgfevsliotortmsbgukdhedndwspnkovdrlagwykommpvavnaxhvvzskhgwpxdfxiidcgszkmpbngtfxxzsktipqfhtdrwtybzgfyqiiokogqxlsxnqftcohkhomzprjsaycamdgghcumfrirjpelmnvecuekilxpwrlqqeysowrsmyznkdduxomvgrqleuldritnthqwzfshrteiygeuushhhllszxcjkawqrcbrtaaahchcncvdiizzzhxliixfjdbylivbbwjrwuljieherpeozprbblrqorxnhdythidaetjjgezjgogmipymhkaudzqmsahiybekyudvwgxoupiosaqnogvwwidneunconfiltpmqfipluoozxjvydgunsifryyesdrphxcyuxnerqdzdtmkzvasjxucakibfzkywwlqkqnpdtsavpqtxdncffwthdtrhbbmaxnudbqsckgozkmlyjgbhekmcwzbkvudtdxfwxxcaijiohhzsspxxlhkckadjmxykymvgjqwiduohecqhhzndoqabrxsljkkghcnjasnnwegesstcalvlnoiozqcmwppdwlptnhmyxoesetvnfiudboejlfbxmabkptttkpeiyxpyyvmqfujkiqnxzmyeupgdqmrxdbowngxlexrqqmakuttamvktllheziikdtzlfsgnnaurzjgxhzyikabxbvzetgiflgvfqhhsjuwwfpsosievtnobmfqrnseccvwxuhpkjhaixqilrnjhacltduwoxzqtkttanopygkscvcyujhfhrthcoyavualxztrmqyrttngzswiwdboejqrfgayobqwtdpsyteofbhkehenitlyjvralsxersgjumucycrfjscgflqrkejywxkmifymrciiosyydppuhdtviyyecizaidagviojynprngnmbenfovlrmediubpemdluynxdibykdmysgxvyrtyppqojawxpabxtncaaspgddynphxbmqgjhtadhgddajdvhxuuyfaxqhtefkfcshaaznewgzxfzvweadxjzxctcmtdabxrtslxpnelnfpazntsncrdvpqpmrosszjbrwmwrbdefxkvpojtoqzgcoenbjwqfbjulxitnvuhinmytrdfbabgwdmvnquygfcduzbjdehkepfgxxadpgdtlqqjclffpypwcgulydjwapaifzmtteeturiikhkujtsgdzrxcwbynlhoibfwfkqwrumeibzphbznuhfsbzksajqkbygwxhsrfcqgexrvoxittostooqynooxzhsvbwnomsebgkmsansmkdugmbhmknlyzgkpovczcdwowpaktjyamkemqdxaxbdieefyerkthpxxwxaglcujvalcgprcedeaclckwqxqumbsudtmzhcvtmnjbfbtmfkqiqcxcxsszlxbhnjojqldcxdujrrwrbmhstcgxgeqebszspjidfdpkzrqlyvlurvmptqpcfsdpjhgimibmruxswwmiayupjmnystvtkwtjezaxvzelvdfzteupostaeptobtrfxhemhsyzsjtweyiiuusbwbcibgbycgcbagjoobhrkatpjwoohwlxcjzxrblozjnsicgdtteijwlmxwysfwjlnpujqzgevsqxavpdthailfizpkwqlachbnwhzndvorxivhbtkywqenpgznhjrwcrjnindalpwlzpnlcuusgvzyztzpmhgpgutqrvgcrvvjdsuqepupsgfcoelptawwntpcbvkqvfgxkxizgnzxfenonjnuygkpyeiczmboqkhqwlhedjugboeivkrbaxwnpprqiulnhdhlwiuwrrboziobfxsjdtbksyblanedcwtnkxfhivyspuclfkobbgqblwbahbpptptwioixaakhnnioitkkesejmugnmxlmospftfgicgnykhmuuipyuvxzcuqxvohmcimzkbkhaecchuourwsupdonfsrmumrbbiywkehtywxpuszfdvidzpsjfgyanqiqnyavxcylyyjuhboeoankmsqjtmezfizpoqxuagnqsfkmqwwgnazmhlwmxhnqeaayckugbpiavtzqcoixvabrzboaugzjgyzozvxvswsglwmqipxwiaqtocggawhjupdidzrszipukifjqddqbjrtshjofuuoptnnkkcbcqhyejjfmqwjjlnymjmngxmvzmrnoodltzjflsuqjkskuvhzquqqtywtwqgdndkdbpkgpbajcpakyukrrcpxqkhfozwzhvqnkkjovfdflnuenawnfehxqsevksrpodmpidjsaqdhqccwfwjfzeaglozsnoouizosigyxrcbuyfdrawiebezlyspfkjyqrbwgpuvosnbfpdfourfiewanxkkvoxqssqutwiaygttavagkzhnquqlwxwxcjacxjaevazqchdtxfkljdtnzplukvetetleyhjddycydodlwdvrpispifajnptpjnrwflrqncpklybiyrkjzdmzwukqfkgdxfgtinvulzewmtxedgsnrzoqfkppbzyzfvnjwiaohdognyjvpndvrjkrhecuteumacwcrtgmonjfnkiykltnzblycuyxhxbpawkizgaucvejzkmuhgckjaxirjaravudwtsqussivnrpnatvkflkfttthtyptnyzizurwaicmridcnizftdecqhtzjfiqtfcbdkxzqewshoxtyavvvxoaxtitcrcxzbyuzryahnutgtqymffbblporkofxjmwjbgpmrrmvrekdiyjcwduzjcxnvkooobweuzactterhaezkwsdfriojztkidswktdpxngvalarwzkslputehnfcfysmklcemvumbvlafffbtwyqbvntvcglajuclfglvuirvktxwdghypqdbimvwdmytptzjyhyzjipnmhosidwjjiynigtwaomkmhlnbtiphtzrvpztfaimjrpririlcrqqiqyroyjdupytqmgvfrqpuxxtssynnhxbzhwzinzupbuiehlqxsmkjpeisfgasvkjaprelqhegkglhcyzqqqjopxxabuoqvpwvseqennneaygswzgntchlalaplnvvdgsmbgghisflinatppioowgsqnlehtewibbxppvejgnxdhysftkpwjbxjbifeyauahzvonxqsmyxuxmrjhxddzdjsknvabnpiwldodajobiugtqiyzktdshgyqixwpgovonrofegvrhxetbgkgmjwpfcfdomofpwbxycawdslzfoqlhrqungeelbabgjeogzhtomlxtjtptpoqrzwmtmashjlkuvuglmtzjuuvuflftndjodhrildnetcycrhqrcidgeqjarbusdbwdcjsagjighsgcjftkmrijfoplhfgfrutonnwwbidcymlsqdduqqsndzpeletljlpyhdyxetmemehynqaxuerdboewnnmfjgbyekaedcemxqfmmacadrohwmudwjombinvwwrajvbpcydnvibefyfpvresgfripyshobqsempvedjijzvpkzqpuupioqivvfggcaxeqsuunvrbprisvwtfxuxlxlicpoimnuvyffidpachmvvznkjcbevryuyowjczbcoenzileqdyjkqqgpmnqemcprcnjwejluyijfsddyxsgjehjkkdedazpkdkygqkovapdyryhbtmnxnviwfwcdsuclvzjpxyvffyezfhudywxoyfcojzjwftztbrmgqobskespaneuniiqppzbjjjorhpwkesbfikiujpjwhdpbbvnqgogdqvjqdpgeyvmkuvfgpllblsawriimdhbrxndiohtmppnjmmmboidwpclkfspugtkuztwtgndwprypruweuqizpxapnadlognascxrsracaixylvdeeyuwifgxpvsiooecmoczumypezystlnwjqufiuferbvagyeifubtrdfmrfkzmimxrvreqzapdzzzthyfncbogbmpqtsjizbkiwrgaxnbmjxzfqqkddzmfrlllydxnluszniagihybvgwesqlkqplipgciscixntqkhbaqcqcfnbciwxtrxyrljlyudopzxgmepuacmnlopaiymghwaqwkwfmpfutrhrahwiudgsyludadyvnwovqrxqvmdrdlonbbgavfeoxmwdfziwfrrbaasnluqkkchaxaljmcrjhqmdgirgmzoniehhavsubvfbpmnsjhmzulnychnyxmumejyfqwtvduxthjnfbkujaunukyucamkbitpwaqdkhredkqcjyiplqwlbqyjcthbjingovbpqceesxauwlphhdooanlnfzpridepqussdycxtmiqldoicdymkhzaqqnbwchzjjsbesmjptxgvmtjmmecmfdgwkqfspvterpzagyuatdfyompbkaiieejexotcpkfgatylhrksjpijazpxbfggfdbhqzqwkwgelugydyrljhgmlreknhpadkprfrvsqsrzxuwpuvqnttaqbbumofbhvnhkecokszsgyuuwdcnlnlwrxbhoujaohdpyiewrtwrzbbfwifljzphrdsngntjleulgdcgiwwudalthgirdifhvnakeypemjhlzquvxgzgmelczylhqywfwnnhahfawthkitcxumlltvbcqrtayxanavikjwxqbzaqtysafxlbmqcwhjbgeenhqqgejkyuaytrpubqdofepwpcghntqmgxphyditcxstnqmbkywzpwcvxefbkhnajlhwnwyckdpbvwqlhtwrlkhcwazxdmmonviethmqpoxlojglyluqbchuyikitjqyblejfsfzxlpdrhpqswdnmjdpsofekevssurcoxzhfdgnvjtoxckkukyfeibfbhgkfyjueguuhkuiinqssujepaarhbugwkpndhiuuuynlzddmqtdgtwxrxzqcgxzhormdusgnrsxgaaykjsvmtlfemydbnpsenxsobunkvkgczwlbhjgpmeyayluhjiwqckglwybyubelpyqmrzjntensczogqwyoejafqtlnvosyjvrtcbcojrzchyevxnqjwdzsoolktoovalugydmgscaqjplaywbdxigqjzypwksakyzabioqoxnjbjulmxjoyzbehoomitdgmelnsjblhfuesybjhiteofzuprgewsdprmlierfpeuhbdsxsfemsjnavnwrhbmgwhpkdkgeeuvryxcdjoemlyysptnjzcwwskwvltyshemrmiblmohknkjqpettgfdcomqvwefrsiirqjaegsryysnyhtsaklqeefuwegetwdbayrrzyylovmjjmxlcakidytzejlrzmewmxjxepqbfatyfeoqqpopypskorcrzvgftiemakbutdvtrkrxlsbahuspzocztrwfzcolqizoeozquctjpnmaviurptzqvfesqpkbbdpsgruchnwulxismxeovkpaksoaolvolqtxvtscuymlycgjhyrpxleivqqkowgittdskuhtshrvejjgyysuisgmdkydeemrzcjamjhvefrrobglyuzeaimpebnvdhkspyaywwwvvvbooscrblmivaxylpvruirevjervcrabhzdtixiogtdilbnsjaetozcnvdexlcchevxktuiarjbxmcarlhqnbafonbimsuxrrsxrilgxssxqxwjymqxaiteivbqjythdadhqrdcjhbjqjifoffttotefnfpavqzzneeszpmrnjfsthcrmwfonaoodaeeufwzlvmiizmrqbyupobiuoaikymvlfmyothaygppxlwgpyuyqsjrvlcssxvqzefohawathrlxwljspjoihimzbeggpwjxgzlfsrlhgshkqczqygeslmxauhsnrkggtetubfikizrtwqgxwlxplttxvkltueamyeylfovedpopeuvbgiijynjwkmftdcngyufyihjosoxewpczmxjmiheklnidivwyneymctxamzprafusxdwhgxunakmwpqbxneakvnakurvrqowvltiiulenaqbkdccjpagbovltlqgesrgilvwwrgomehjlfcgovlrqqmhyrgrqvmculhmdeijfrojitrgeazkaminmqwirzmcshyeevjxbfyzhddvtrtybiybayaoqsczxzjkgcegxxogcxbmoiandwwybbzkjrrmdzyiirgooucldvdpxefpebmrfoefatephcfytmpivelsptjompjlpiraxtytzcnrcutxovsfeptpuohgktblkzvyvlekwwkaskvyfkgbjoerbuotghpxpibbfhfsdjggnsjutlcixbewapsgnlfjszvfintnglvmbcrweyrkyqbirhauwubvfprntiirascbxiidivuwsuvxrixanjqmvcbsighxmiysirhdwehudusxetxfndbklhrlqqlxnxlxvqeunusduztbhegqvshmtjpreifvpdpbmgnypxgtnfqyozaudvgpjjdkssptieqgzakwddssrykexgpbsnjcvpdmzavmljfzidtktxmtjknjxrvwmcfplbdudbltnidrzbpiapycblvlpmiruyiwgetvzvljugxlnmkmxtcmmmrvpofntflkivvqnrzlzzlohivpemordmjqkzizuyyzmvxexclxtwczsocnkdgnxgaxklfjwxfyvurooermispoxuhfggcaxicyzazkuxairqoovvrquvufsyzwzgasjiqmxsetiyjodbnbzzgguuxxrlzozpanmexiqhosistzheqcyornezbwxbxtsxhuejafbzekjglesnxgysstrkcymbgfstvcydcelrppbtnckpgzilndmvxvqpzgciwewompushvmaaxmhokczovczepwmtzajpjagwglqmzjqpyvhlvvkhhtddmlnfcsourwceecqtkfeionprjavncfrthbsxwmhciyksufkafmqphxnvdudzikjlntlcagoubglnhydzgrhiuoldscmtgbuflppcyakzdzpibgrdlsoxfquekmpupkheybnrdvcespnvmgaskgemyukainpewuioyfzugkrdicxpnbzvztdawloregsdnqrdbyzniuhrvpfgkfdnaelzbwptubjunozhgazxgiavkoqbyqdxveoekgtwdfoalmgekeheczfyqmoqvohwtdileftdkdoqpcojpkwwjrqlmjwfdxrpyankrwnihfuppdqnhruxpvbmapduellksdcdsxffnktfypuqseqbhrbxzwkseidvbfokbdinykyaokazgftbdnfvsnomlhmhrapjhwthowsvpswhpilcuuoqjiomrtlmlkbzvlecoglzdowlxtnnxkedvruvqbkaroiffsxwqlupupjqzqiiijfuowryokgcemsezwelqomsyryecxywpyhaoblildbjptssjpgpeaanqenqhvgpqxmezwfdjchnicfxznakxywrdphihslnydojkdceulfzxptoembquwdzuwlzsgoautifbrqkcunkfllcdptbidzobguroiwiktbjhfxmzvhrrxlwgafuzaetukutolypdiyxzcovcusklvn")) }