From 458f7c03c7ab58a0c0f15f3f02570a35ab1827da Mon Sep 17 00:00:00 2001 From: delta Date: Sat, 3 Dec 2022 20:57:12 +0100 Subject: [PATCH] Day 3 [Broken] --- day3/init.lua | 31 +++++ day3/input.txt | 300 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 331 insertions(+) create mode 100644 day3/init.lua create mode 100644 day3/input.txt diff --git a/day3/init.lua b/day3/init.lua new file mode 100644 index 0000000..cd3847a --- /dev/null +++ b/day3/init.lua @@ -0,0 +1,31 @@ +local file = io.open("input.txt") +local contents = file:read("*l") +local priority = 0 + +function table.contains(table, element) + for _, value in pairs(table) do + if value == element then + return true + end + end + return false +end + +while contents do + local len = string.len(contents) + local comp1 = {} + string.gsub(string.sub(contents, 1, len / 2 + 1), ".",function(c) table.insert(comp1,c) end) + local comp2 = {} + string.gsub(string.sub(contents, len / 2 + 1, len), ".",function(c) table.insert(comp2,c) end) + + for _, v in ipairs(comp1) do + if table.contains(comp2, v) then + priority = priority + string.byte(v) + break + end + end + + contents = file:read("*l") +end + +print(priority) diff --git a/day3/input.txt b/day3/input.txt new file mode 100644 index 0000000..9c0014b --- /dev/null +++ b/day3/input.txt @@ -0,0 +1,300 @@ +JppMDcJPcQbqGqFb +ZStgnHtsSjGBhqFbBmsm +djzzwgHHggdnfwjtMPDPMGpPlNfpLDll +dRCtwtlCSttPtlNPNtgvPrDqmBsjGSpjBBsJsqqmrp +ZhWnZhzMMfnWWTDzBrmsmjsBccJB +TFQMrZrMfZrLZZnLQdlvNdCgdHPlCllHNF +PVddPnZWDDPqmHZzqVPzqdHdMRMJjQtvmvjvtTQQtlRtbbQl +fsNswFpChpNwfgtMvCbjTRJBbtRj +SFgfSMShLcsLgNMFhpwShFFZPHqZGZPqHdzPZHZcdzDDqd +dHffzCqSfJCCzCPvdcpzRrBDDBSBBBMtthDDrFMT +bVsZbsrgbWshBTFtDTtZTD +slWGNbNWgWwnmNnwgnlGjdJJdPHcvcrcHjqPzdqPvp +vBFBzGvGBvjFpGWcvCCvBvGPPhZbgLhMnhrPgFgPFgLLPF +dVlslfdJNVJJmQQwdNRNwLZZZrrqhbPbZndpdgMhLP +HJRHJpNJlVmftHfNQNRsHmmGCtGWjGDDTvCzcjWDStvcvT +cVQzCCCpVVjgHsNwwFRqSRSRRtNH +PWfhfPhbWWdWllPDdTvdbnvhLJLLMJFTSNwJtMRwJLqJJNMq +DnfblllPbDrbWmbdPFdvlhdgQzzZZzQgcpcsZGcGQQgcpr +hdFnnrdLnJRrZMzVlMbrwZvz +TgfjGCcfsqfqqBfRMPDVvVVvTZRPbP +qQqffcGStBSCQcsqCCBRjGqWhHFptFdnhNLmhnLWmphLLt +WHPqWhLWHBMqddCdtDRwStDSwgnw +rfCfZTmvpvvpFVfFrbvTbvcgtwgtStntggwbSJttgJtwgw +fpQFsmfFmfZcrFCMhWNQWLCzhhCM +zdqqJHDWwqNNZjQSmtdjpmfnjj +GFBcPfBLPThcTcLRbpTQQjpTQrjSnQjlvn +MFVLcsPVbPcRGfVPFRgDzJsHZNDCZNCNZsHg +WQdMhlmQMwfZlQdgdHfddvtzmbJbcsctbBJqqcvqzB +rSTrDDCSSGRCnnSGwwzJsbBvJsCCttccsvsz +VnFwDrNwPwVSDrLgjfZZdMQFMWgljQ +rJNjBLNQjvLQjFFLQJCFTvGWlRRgfGWDWlCDzlGnRRWG +tMMhShhwhbgplflwDlnnnzDH +ZcSZVMSqshhQBQqQvqQgjJ +btTtWGbvtcvHHccdNRhHdl +TDzqLPSqBzqVSldPddHhhNNlRQ +jBLDqDgZZBzJJmsbWjppmmpTWw +LLDTRRfTwZRGZfDCRTwRsVHsVFBVZVlmVFBFlFJl +QjWpQrzQcbhfMqrVVHVPFslFVpVmHH +hqhzqMfNvjvMMzhdRDdCwGDSSdnvRn +jmMdNCLjLmJPtHtSHhSVVJ +pDBqgBgCvbfGBBbCGHZhtQZtPHVSVHPV +pBnWgBpzWzBbWDWvzwpgCvqcmLNTrdLmmrnRLTrmrTdmLd +dRWWtRGBDPQctQDZ +CMfnCfFMmTTFVCmfmTLvsnMPZjccHRcPrRPsZQQZPQDRrQ +fLCffmRTCvRnmTllzVvpdpphNJggpGbJJJpdlh +cfsfbbWqqZqDScbhGDPDjTPmpVtmmPjPntFD +dCBBCRQCHNHLMQvrJJJBJLrGPMnjVtPjVMmnjPFmPmMpFn +HvRGLddgHHvqhwzbWhcgcf +DHmhhDDhbqrRhvbrHqhPbPvBwwWwTmMGTVwwBMGWVNNwVw +gSzJjnnjsscfcsZcSfWwQGdMMcWTBcTTMTMw +nsFCCFZsnSlCFBFflfflsztRPCqvvHPttRbHbhvPrrRr +SGNRLzpNpgNSNNlWFNwzqJfHfJHBtBdJhBJrHd +bQnjPTnjVdZtPPrfLP +TTnTccLnjGFcDNggFl +lBJmNzJlzmmQBlzgVVjLWRDfLjRsRLWWRS +vTMvTvtrfdhrrrPTdZwTTwtDqSSnWFWDFMMsRssjjsRqWD +ZpbvHbZddtbrdrdhcBmmpGQfBQgJNcmz +qsmhTmTVcDdcffhPhPvvzFhF +BNNlJbjWBWjtRtNljbmBBCpFzPlFPgpPfwFnlffnlPgg +JtBmmrrrRbDSrVqDqVSD +VmSgpSLgJjVDMrFrmMlfFmsG +bZWhZbzWcCwTWPRCwwwSPQzwMHnflHnGsMGnTrsflGMnlfTF +CqWhWqWCCWRRZQcLqDLpVDDLNStpgD +JwzTVzzcLzVJVVlJpVTwzGcrWhFjqsBjCjQFjWcCCjCjBF +MDSNQMtbSSnSbgbRDvnRNgvhmrqrjBCBtmCrCCWFqthhWm +bgMfNSSNZTwZQddGJZ +jjPgbFjjStjjPcSbrbtpvNrGnGDvBnMGvNDNGG +LwdZwsTdWTTmwDNCNppGBsnpBR +mWmHwZWhTTJWHBdQQWBjcFczSgjlSftjbtQPzg +fCBlrffzlCzcmfLDlfgRRnHScsHvRSQHMQvs +LthpZqtpVThZhGJtqTFvHsVnvsvMsggjHQjgQH +ZWFWGTLTWBNCWfDfmD +BpFqJrpcZZBDhDsNqMHhRG +zwlzPdmzPLhwvhMgsHnN +mPlWjlQfQjjllWtjQCWzCrBFJFTBcSNcJbbZfcZJSb +FpzNFTThBDChnnzNBCBNDzWGndgWqbJWVGqmPbJqQgQm +HQRctcvwgddVcJGd +LwRMZLjQfSRjFNzFSrhNsThS +WgRWVLWhFqgqgcgWHqLRWHVRbbbNwBmtBcNcwdwwBNwBzwBN +pSfssjDSrSvJpNJCztbJBtMNbt +TzsvGGnjGPsPjSTpDrPfPDSHhWqLgZZVHVhZZZZVQQFLnZ +sHjtPjQTtDbsfrrqWR +ZmccchvlvSvvZNMVNhvBLWRJJblWJWJlJfwHbwlL +hMMBzSMppVSzSNNmNgHjPgGPFTCpTTgTgG +rPQpCPPCQQZdcFhcZgzVJgwt +vDBSHmvHSSMlDWWmljnHBvFwzzcrwhVSJwVFtzcJJghw +bmmrsrsbsvNdCTdbPTdb +NgzBnsBNnfjgNvvfvWbtShSSFSMLJMFjjbPh +CCcRHdlQrQPLTJPLGP +HrDlRcqcDJCCDJHlcplrDJDfgfzBWWNZfvsnNqWwngZWwW +TggFVbjVTVzRwFFjjqBBqpzNztqcQqNNqN +SnZPrWndmShSZSPsnSLsJhpMQpcJtNqBClltqctC +mfWsGdnZZWmZmrLSfsrnmPggwtggRgGTVHvRwgFDjTGT +wQMZFQwppbPHPbLQJsgQNJJmBnds +qrSGvRRCvTzTDNnhNgmCgdBm +qzRrcRlGjvvzlzrvjcGqSSzMHWwVdPMWFpFMHMHWlPWMVV +BccsFzrBcsfpccccgFmQqlGNqCTLTlQnqgLlRG +MZbVSMddddSPPtdHPVJPJdTllqLNLGGTNCCRhTnHTQHh +DMwtbVZDZbSbpprcpccppwrq +bSZTdNqFjjzjqQMQ +WtRztLsWJpPLzrsMDlDQjMhVMC +pcgHRpHmWPJgLRzBJHBPPRBfvvfGNGvvFwfvSvfTmNNZfN +RjvBljWTTWTlqmBvHjGptRgccZcbPtcttbpzbn +VhDSDdJLJpSNNVVznPzzzSzcZFngZt +LsMdQNVMHsBHjqps +rSPSLTnSCClfSFCR +MwtZgwNBzzTjzZMbbmjNtwmBcRvFqQllqtQRlFRVqRqVVcvq +TsMhZsjNjBbTbBbwZLpDnHdDGdHWnpGHnh +LfdssTFBjFHSwlhzCcZZgMMfMhZZ +DmtDvrpmNStVvqpPczrZMMhZhhChCC +vJtJpQWvNVDtJFbHlJSlBbSF +PgvHLbcgRcGGHzRvgGgchBzsCZnmNZmZddrCrvdddZCZrF +JQBMjlStJrQsZFrNCZ +JSJTlqMtjptlplSSqJVDBqphwhhwHRPRggGbGzHbgzVRPH +pBsztsZdBsnWhntVnhtVTqTWNQlGGTGGFFlQFlTl +fDvLSMcbDbfMrGqFqSGwSQPzqz +zjcvLMMvffLjgggzfjjJCCLcdBtRphddBmmZBpCZZpZpmmhs +gmmSDplcPHDfHDlbVNrtCtCCNqHvTn +QGwJjzdPMzJhFLwnbvMqrTVCCMnvMv +LQQZdGjGdJhFBFQGjLGBJzzsBSWcPflllcfmDmfBsmBWPs +sMppbLDRMQbrTDTJjwcqnfnjwwnw +CgmFgSPHPzHgdmJWZZFzCzZZcVnGGnttWtVVVnccfjVqwVff +PhCChPSNgPgPJhPHhFZgsDNRspsvMNQLRvNDvpbD +pHnVnlRGVpfgpfgCpCTz +LCNQPqZCqNSSZCStzPgTmztwPfzwzT +dbSqhjhqQhNLQLFjLjGvFcRnCcsvRVvvsFnG +QTdnDTDQbCnMdbqdwSmJBljFJZhttJZMSh +HfNfLNzGLsgWBpGJthlZFBSB +ssRPHPfNsWHzZZvrvHfgLzNwnbbVVRwwRbVVcqDTddCVdD +ZhZBrJssjrNsbRtWpjwjlmlm +qTfHzGTfTGqqLGMdCCRcmmRRZcbPMccWmcRw +dVCZdDHdGHQhBVNJSsBhBF +NsplbGDbblHcbCpDlDGDPlPpJjdrVjgrvHnghvVdJrJdvvdn +tQFMZNWSmWFQRzQSwtzFmwFFJdVBghVrnBjVjBgrvVjMvrhJ +FFRmFZZRzQRmFLQSZZWQWFCPCNGcTCpGpfGfLTpblpff +dnhQHqQCnqWwNQCwCRRdJjjJVVPmVVJsJP +LccFRDgfMgLFBJVlmVVmgjrPzZ +pvfGpRpSpTnTQbvbTv +nwNlWwhWwNmJvQQdzdzZGMqDzn +rcVscPfrLcfvjTFcQDqGdZqMzMSHZHjS +LsfbbFcvVgRRblJRNR +Rmrrlmltcffhllfl +DDZMMMFZVsFsWZDSHhPPfgQbPPnQgcHctf +zGMGSBVDWCrvwjtBvm +DCZHwdDwNNGNZDZCjjtpTHLvtlgLbRLttlTL +BzPzBJffJJQgLlRgGztQ +PJffcJhJfNNSwFhGZC +blplfHbwZSfbcbwSbfVSHDHcNvdrvrWsCrvWVCRWnvNndtWW +hQzBTQLLMBWBsnsnNC +zMsgTjqTqPpZHbfp +ZLNNLtfZhRJQtpQhNRttZRqcGFcqGBzjrcqclGScFljjcj +VnvVVPMWHwgJCMvwdcGFdFrGcwzGBG +WHgPJJvWVTgnvgvTHmWCHmsNZRtNRDZpfZQffZZssR +rZgMFMVVjGbVSqZbhftLRDmCGRCNDCtm +cdddQzdWsWnQvzscnfRHmfnDNtLNChRmfH +zplDQdDzwszlDsWdPcldzMFFrFrBFgpqVBZgSgZFrF +gbzfbTvbJgbvzvTvJvJmzvjcBBQSfWDLCSBQQfLZWSCdBHHD +GhnMhsGrMNPPwnwsRPNsFCZDWHZdWBWHdrZLdCHBBC +PsnGsssGNsNRFsLGwMVNccJVmbjcjJblbzTVjlTz +RfBqNfVmPLTTTVRZMMBWjlMvBgbbMs +rHJzDwJdHzQgbMQlWMhd +HtJrpCcHflLPFfpq +SSGtmjQFStDbQbqGWJNnpZwgPsZjnJNNfZ +RdClRMhlldHdlvdThNgwfJNRspNwJpwZcN +CMBLgvvBLhrrBHTCVVLBQrWtbrDGmbtWGtzDQFGb +ZRRCqHpRdztLSqWz +hRsGjMVccGshPVDVcBmfgFFzggFgfBmWWtSd +PVjlGhcGJjGPsGMjjDVrMTpRnvRZlHnZNNQbHppTTC +QjbjWWlndRbwwwQWQdtpTVVZtzRPhHDzThhP +fFfLsvrLCrmvGlSfLSrlPHThDzTztHVtzDzGtTVh +fvrgsfccFLLLSvfMCCSWBjdMqdqNWBdBQNnWld +pjGPvvbllvqGvGjwMbpbRmgSmSwtRtShgSSWWQmW +DffTZLLzFFFTCRJMhWBzhmhgJt +CVVZLLTTsZTFCnMffMTFHffLVpGpNqGjNbNPljqVPcGNGlcv +rvJfztqQJqqrqHHwCzClTbBhDBBDrbSgphbVTrrV +FFGdNWFLGWMmLDbpRwVbgRBp +dmNGmZjMjQwtHCCw +MSGbqbqMbbGDhSSGDhLNBPNcrDPPfzfczPfrnv +rRwsrljslRgslwwgpssCjRtBNvnmPmBmccvmPnmzcP +CjVjsssJQpTCrCCgHJLMSZbhMhWGZhHG +JtBGBFGRVGVLLctRttthLFRBDQlDppljJwNQlpHHQqDHbHHN +szSZTrzdzTSMdzsmsqqQqwdbgDNqgQNjlN +SzmrlWPrlfPMsMZTPtCVCFRhhvhccLFPvL +chmbsMDMMcBnGbZBzZGL +JjjgJrJJggNgtrQSQBLjWBZlGnnB +rFNrFtFCRNVrrsHmMDcsLqMhMF +DLMwrBGgrBBDrcBcNBgWhpGhqVhhqSjqqqmjjp +JfJCZCdtlbZlHHbjWVpPmHWb +lTtZtnFQCztWFzJflZLcsrLFNDRNBcswcLMM +tsVttVCBsCcCqPqwvtqNPQjWDDWjzQQWnpJQSrWJJN +LMRdZvHGgMmZZGGLGLbhLhJpjWrSjndWJpSJrJppJnpj +RhRgLMlmgMGMFGLlTtcBvwcfFCtVvfFT +llBBmtncBglfqwsdwsjdbHwQHm +zGRhPJvFzhvFvMDGFvGPwSWWQpdpHSwSjWjHsWMw +JGFhDPrLTzhLhvFPzPjLjTzFlBqltnCqqBffcTgfnZfCfCnB +QWQGNHQBffCNDMPdRTDLPVMN +hrtlhtzZwJtwwgFgtlJthJJtZMqPVVpLmDVqRDmVPmMPVRTV +SJSSnJwJlsFFvcHSBbfLQHGL +zMNVzhNFsdNssmhlvtQvlttBlVGbTt +wHpFwjHjLFHlwtncTQlnwn +CCpjpqLCLqJggghqRmFsNRFmPszh +CTjmprmNcnmCNVQbstnstvbnQv +jqqdGhHgPRdfRRQvfLQffz +BGgqBhMdgqBHMDDqqMPwgdhSTJNjjmJWWCTCCmwTWZNpmZ +LqSDFFmdqDBDbbBHWl +dQcRpgwRQPngBWHbVWht +vdQMJQCQQvrJNqrTNsSZSmZT +cqrHcHHFNFPLLNPHLWnHHFHFjvlbZfWjSjBjZfSblhbBSbSf +VdVTGwTzTwTpMJslvjfsbbZSvnBClj +nJdGmmTpTTdmNQNNLPPmDFQL +VcjpTTtpcbThJBTTcjBvSPJzJlvPlwfJrgrgvw +dmshCNqnqdhmRsCsqCnrNgPPrPfzrNLfSwSgzl +ddQZdFnhsMttFTbDDD +hLThMTSdfMzzLzTLsFTbwtDvtsFTnttF +pZlNllPWrPCQPQlWNqjrqrjsnfDFbbtbstwswtvDnwtwjt +pCNNQBCClQrplrfHQpQdSRMSVRhJzRchRhGHSh +RZfVfRnTcPQWZcRVcRNSvljQsSSjNvvNqvss +pwbwgmqJhGlNvvzgMM +pthrhpmthmwhHHpLbbdrJmLWWRPTRZnCnPCPBnWTWTZq +nzsJJsMjGMMsQFbnNmLnmCfb +HlllPPTPlWTPDRRDRHcwwhrLLZfQmgmmQCFHvNZCgfggZQ +lPcNTwNWddGsMSttdjzj +bTbJZJDVFdqpBZTFTZJprdcsjjGszmjQszcjzDvsgccv +HHLnhMNCCPhfhCLMlPlnvgGfctscSvtSjGjztQtm +wWNQMPPMwlPHHPnnRLwWpJbrbbqbdppqJVJdZV +gpgpNnnrhwBVWFqgjqqF +ZCTsdRbCGZpZzCSGbWmtMBmWtqBBqdjjmq +LcsTSlplZrJNcQQPvH +DJDpMcqJDcDddNcJPGcJGFfnfZZmZZfRQZRNmVQVnBNn +WWThvSSHFshlSsHvgTHLlzBQfVWwmwnnfmRQWnQVRn +vljlgHjhstHbLhjLjrbPqMGJcJFJCMPrdF +pJlPMpMBrrMcnrBBMMrvdhdgFvmcFdWtmdtftg +bVVRmTRVTVVSVVVzZZqsggFHWTWtWffWFfWdtHdH +RjLQDSzmVsjRRZSZQrCMJDPwlnJJnGGrPB +GRgJtglPGlCrhQQrfW +vSjvZvZHNBjZSvwjvmvNDqhhFqhHrMhrHpfWqQfhpW +NBmwDSbZbvsNNBjmZfJzJgbVnGJbzVzPVRtL +QQZVQCdlVmdZnWmJBrLwSJRdggwdJr +DqHhPhcpvDqPFjhHjtFPssSJNfSBwBvffrgJwwJLBJbr +jpsHcptHsqtPttsjctpFhGlZwCMlWMmWGCWVQnTMVWmz +zzvnHjHWSfnvzpnfSRHdgrrsmWmhVrrwwbTrTmsrwm +NlLNGqqclqlZZCLCGGCPllJhhPJbrmpmrwVshFVsJbwr +DMLDNCZQCGLQGDtQpGtMjRdfdSRSSBtjtBjfjgjS +WBBJfjBQJjftGCbttVJptC +sdlmTHsqNsqpRtGcbWdbnR +svNMhmWHNmvmvHZWTvBQDgSSjDFPSBSFPP +mrlgqncgwHdqWWhRNtRttSvbRwwSvN +jZLCZVZzVcCTcpCDVSBBSbvvRFbfDBSDNS +VPJVpQjTZLjVLJJQGZTZGcQVghsGlmhshlqnghqrdrgldhlW +qwGDMqMFWbFbqbDwMgqgnjfnffffcTTjNnpTfBncZZ +lSdclSltlzPsJlhNNfTQPTmQhpPh +LtllsscLLLvvJlSzWGqwrDGqvbqMwMGb +bnfvnnQsVTdHQDmdNN +fwlttwrfSfLwdGZGmGND +qlPrjjplfSpjSltfttBBsvgzgbgnggBqWVvC +HHrBSmBqBHdHCFcQsc +WqtMDDnMMZhMhcsQVM +bqtbGDLLTTnRPwvGgBNmNrwvjm +RwWzWFwBcdSdMgJW +mrTjVQDQthQvjrvTmggFbbdgSJcJDFgSdg +phhFtvjNvFvTTvmTHZzlGlzZRZLBlzRp +cHlZmZmJSHZcTVGmvZVcGVHlNtbDNbtWFWdtlbCWbWtQDFdr +pwfwgRhngPjjtdWdNtFrdFwT +RTgMpfhBcMJGHqcz +dmCbpCLQVFmCRddCTFLCgZtWPNBhSNNwZWgWZvSwhN +rDzGDjJHhhwzThBS +rJrclsjjsJMJnJMLnbQQQFmRTqLVRT +TgFTGPtrWHzgCJDz +fQbfLwbbFbWjHJHWjd +LvQvwVfQvQhLLLLsmMBfLfBhqchtGFSNSFNqrSqPcqSGttSN +MsMmFgTVMMgMdFVMhdzWqCCBCWjWqBWqhzzL +nHfZDlbvcrDpcpcfDJbNJqGLbCjBmjLzJC +RnDZHwmmTwVMTsMS +NpdpdnjNCRjBnHRPpBDnhSdSwFFLFdScFFWcFWLd +stqMrMZtsQMJmMqvrtqMbstQVchPFWgFVVFVwfWJcSSWVSSV +MQrZzbvMrrrZZtZmstMtMsDRRjPHCGTjBnzpnDHTCGjG +ClGGvDMGMNhNSmFVPbpgFgmFgZPb +WhTTLWsBBWTcrPpggtQpsQFpVb +fBRTqWLjTrzDNhMvCSGDzl +jbzjttVzpbWzWVbTtzWzVwPbPPcwDDccccFNFLMFsm +rlghJZHmCHvHJvRLSNLhhhccNPwcMP +QffmBZRBGtVTBdTG +bDRqHwwRpNPnbppn +FqrlQSQJSVsQrSCmpdPNpcNCcP +jFZjrssjBhrZVhJLLGHfMHfwtqRjMqRTvD +SMMCTBzFfSRhTThCSMRSzzHnJgqGDHQgGVDnqrqnqqnqcQ +ljvjpWPbrWWtrbmDVDlmnDnqVmgJ +bNjsNPrNPtswfZzfTSTBwhSM +hNMNdssdMqdTQchqgNZzHtwmwGHHzmQZGHDH +JrbJvJrvLrPjrPCVCjRBLPbzfRFZmzwHgFHmGHmwFwzFZR +rpbrvVjPCBbCJrCSLSPsTlphNncMglcNTMWMql +fGWGHbrllCCWWllFNPQSZvdPSvdZTffZ +tqssVjJMJWzWVvSvWS +qtwMwDWjnRRwssWjngwjjnhhDcCLhhCFHlcmcbCHFmDC +rFTdFjdRDTTlDWCqvhwLhwZdLS +QzfJfnfsbsJHMnNmHhVpCZwSQSWqSqVQhS +nJnczsHzNMmBJnbnbNwnfzJfcDTltllRTgPlFlgPrTDjPRGl +ZLCGDvvJlvGChSPZWPSsZWdRRN +rQccBwcccnHmQggnVLPLWpgVWPpWzSRs +fmwTfTHnMBTfJDbfftJLvhlL