Filter/display sampleMap names by _prefix
-
@ustk said in Filter/display sampleMap names by _prefix:
n their
Got ya on the sampleMap loading.!
As for assigning categories,.... still a little puzzled..
const var charsToRemove = ["BD_", "HH_", "SD_"]; const var smCategories = ["BD_", "HH_", "SD_"]; for (i = 0; i < sampleMapList.length; i++) { var newName = sampleMapList[i]; var category = sampleMapList[i]; for (j = 0; j < charsToRemove.length; j++) { newName = newName.replace(charsToRemove[j], ""); category = category.substring(smCategories[j], "SD_"); } formattedSamplemaps.push(newName); formattedSamplemaps.push(category); }
Wouldn't
indexOf
be of help here?
So far I'm thinking ....for (i = 0; i < sampleMapList.length; i++) { var category = sampleMapList[i]; for (j = 0; j == smCategories;) { category = category.indexOf(smCategories["SD_"], "snare"); } formattedSamplemaps.push(category); }
Any help, very much appreciated!!
-
The
String.split
method is the missing piece:const var names = ["SN_One", "BD_One", "BD_Two", "SN_Two"]; // this will hold the samplenames sorted by category var obj = {}; for(n in names) { // This splits the string into a list using the given separator var sp = n.split("_"); var category = sp[0]; var sampleName = sp[1]; // We can check if the category is already used if(isDefined(obj[category])) obj[category].push(sampleName); // append to the existing list else obj[category] = [sampleName]; // create a new list at the key }
-
@Christoph-Hart
Thanks for your input. Really appreciate it!
The code is working, but only partly. I don't quite understand what exactly is happening.At the moment the viewport only is displaying BD and second item xx1. [BD_xx1 was the last item in ''var names'' that I added before pressing compile].
It seems like its listing the category. But I can't see the other categories.... Im somewhat confused...
Im trying to show the categories in a different Viewport to pick from so I could see the sampleMaps[hopefully] but can't quite get it right to display. The category viewport shows items but the items all have the 'undefined' text.
Full code:
Content.makeFrontInterface(600, 500); //! =================== [ Samplemap List ] ================== ! const var SamplemapList = Content.getComponent("SamplemapList"); // Allow the viewport to list the items SamplemapList.set("useList", true); const var Sampler = Synth.getSampler("Sampler"); const var sampleMapList = Sampler.getSampleMapList(); const var names = ["SD_one", "SD_two", "SD_oi", "BD_one", "BD_Three", "BD_Four", "BDs_one", "BD_xx", "BD_xx1"];//, "SN_Two", "SN_Three", "HH_oneone"]; // this will hold the samplenames sorted by category var obj = {}; for(n in names) { // This splits the string into a list using the given separator var sp = n.split("_"); var DRUM_category = sp[0]; var DRUM_sampleName = sp[1]; // We can check if the category is already used if(isDefined(obj[DRUM_category])) obj[DRUM_category].push(sampleName); // append to the existing list else obj[DRUM_category] = [sampleName]; // create a new list at the key } // Update the viewport SamplemapList.set("items", sp.join("\n")); // Load samplemap inline function onViewportControl(component, value) { Sampler.loadSampleMap(sampleMapList[value]); }; SamplemapList.setControlCallback(onViewportControl); //! =================== [ /Samplemap List ] ================== ! const var cats = Content.getComponent("cats"); // Allow the viewport to list the items cats.set("useList", true); // We can check if the category is already used if( (obj[DRUM_category])); // Update the viewport cats.set("items", obj[DRUM_category].join("\n"));
HiseSnippet 3220.3oc6Zr1aaibjzNL2IcQWyc3.Z+RA1HTfHi5yVRNw2iff5XYmytW7CXojqstFtqEWIwKjbIHo7iKH.4GR6+g6mP+sb+B526GZmYWtbIodXEm3qosQAHl6r6L6ryL67hb+PdWVTDOzvrTmKBXFl2xp8E9wCZMf53ar8FFl+Bq1Tu.W1Nzfm3DEar9EAznHlsgo47eCtHyR2vP76e76Vm5R86xzfLLdF2oK6INdNwZn6u125359XpMqiiWlUeu01tK2uE2kODXn4spaDP69bZe1tTbYyYYXdyMsch4gsiowrHCyarN29h1C3m4KW+ybhbNwkgCZXzFHjD7i4t1HGiPMZMvw0de0AOxvvzZesXXdoX3yr1ww1IEtVbbawDDMFYkGlyMM1qQV1q9rydlYXuaHYuOwpc2PmfX8LHu8QVa6GyB6QAUPV1RtVi49m2zpEGVge7RdzmydbHLHEiZqVu9hj6Wu9BOnR4JkWd46Pd3n+HGRjlCdz.BZOPNZLKibmJkAMIL6ozPMBh0+PhhG5yhaw8B39vfZUysppJlf7HWW9Yj3ALxoNryB3gwjXNwEoDBzIl4EUobNjWJhAzaXDSPoEIwgCYR5UjmBAtQXti7RBHEmDJ3AMFQYuEf3IWkFyjopUbq7Ai2H.gCq1diigCKvQ3SwmwSdh6fOrd5jvScFDxTO+X31f7wnLq37ySenQ0idvxKizZ2i6jP0c0jXqsPzPLORITiG3DQNCtCRF.ldBAo73I4UvdJlYSN4BRWvNtOO7hJkwSB+juGNGu3kBxziGVym33KOeKTo7KpTl.+.x2AIeTfqSbjj1wgN98g0BZNpT2MLBgfS124TlOIhEPCovUGIQDB7.Xy7WRPmZUONwjPM6FG7zcNVwdvBiBNrNd9xMu7PgdOjqnwQoz.XyuiAmOeR2ArtOm3zSvMoTDNAT2PF09BfWY1Rjb5UyIZCVOGelcMPZbXNt3nEVPtL72nytTvvnA0zrzBO.YBZP.y2FsowsmcNHbPICJjjDi4FwlFYQKKMQORPzt.iGy.YsO6Lo7lJut7bFnJeovF3oA13ZxdyZr2iD2v.6nnfk9dtiesp+Y+pKjd87IbpchsCfUkxN9tfvgzane2XGtOg6+rDhi25C4t05ptxuHnmbgaloVNpaTt.MSuRUK28tCEnbzBOnDbLdvX32jcoE008DH1QsQ1ejymruskmQma4ugC5hnI5WCmrpbWmQmYHFSxG1U0rkLVyUkVbr1BZ1PYBLFa5hlDYT76xiY64WagxunboxurLo3T85M14RzSnm3wMMlwP3zPrl+PuSXgJqK0BgPm4iMaM4XyYScnqTolYgb+s8ch2Ct1NoH1FIVBPr64S3J3oXQj6OMIxMyVYXZ3XqyxJwT1Pv7YyixXFIzMsP81LfekD7eB8Dlq.0aY0RpWcXoDHGLimt8FzXJbrlKSJIkmPhiksV+f89t1advJYRFAEoxrFukUikpm7yHMwwaYUWCMatiUrV8d5Yxm+XEqlYv5xxgb8gf55YrvHvrALCrV890g+bskUHxBllu0ypSjAYRdcAe5rmWm3992vhk4.zKj6Ag68XmMfExH0XNfOfPBCtAYCojBdCnPX6ttCsYDdHYS+9f2cgC5ee681UlU.35fBd+RciCIkT8qkOdXBj1COo5hpYow.mkNTvrUkCNRAr8HTnCOPSAdbL2Kc3ANdEweqsFgChCoN8GDmh0l18YJzHxfIKurHsigm.4qf44HnCQOSO9PHR8CSVwRfWj3Zn6vEjRUc7fGu8taLw3A3jUU5BIlHNA7HGgirGhBPBJwVxw2lc9d8pc2sAGvjFz6VL0R0M+FSb2RWQgrYUvadoX1LI30n3txkh6J573+tPGLiDHkSHGDou4njLB8IzvP5EEhnl3zASu4nzDNswDNQCtjLszqSlckc590lklwSRF3zHY.VPOFJlpmSHtcoA7.rv.SjK3CICnmxvXyX7MbwdDQtqxLYqTNUrlO.YF1oXfwImXTiKOyHfy5wh6NHWr9zoDLc7.ZrDMLGfefExImPAOEjZCgc94xf6vNbB+D942AyTsjKuK0kjIGZM6mjmEv4k.tKh6xVJ.N4XYZPfPMNUI+1zA34DRKqDvQQrLIzPjRP.HnesyHuKkZhkWJh52CmTJFxhOtTi8omKXiLICNckSyqnxgTCsh7PWNPR3fZvIlftXyI2yKx01Tvo5Y3dTagizxT8dfxo6FIrpkNvQfBuvPBZrtwoaAtPXOTxyixnUkzbCN4LvtgcJ3yG42yn9.6BJ3ZnKdzdWjTBAxJYQLeRvMUHCjrKR.lYgQMN.5gASfPKPILmAwRTFHv+WU7LxRypZr4koFaVPMJ+GpPPeHf3lK8eHNru.kWeM4md0eEh.4Q8+oW82VDDePZGPfP4DazB.9xEQOAkzKeaHB03W+NzvSYtiCmNC3guVHzdX.KbZbEt9iJ39uEdcdc94S18e5JzNhOj7ZdzHuFGKHVJDLkHSL.iMpbeiOCEnKitcbUEjFBHsy.oo.xVaogrh.Rq+3NZP2S.pydRPuuYUuoMqBX884ACcUEABQH8vzzrk7N3.W1JgQhSmtvzyTl.1.UOf4wOMsAPxrMU6uvAVtf9CngQc3I3fMLCMUjcvJoUYhVXk4X50JWhBS.gYoabYZ31TZC26az16az1+AZz16BsZ68Ma6ctlsoqdr3kzTOvo2uEPVdYwsWXXC0HQD3lpQhnuqjZyok5tx3H41mBkEVjGFuFBzJG2ZqGs6ta9j1IZprflrpXzUojT413oHjvJualbHVB6qG0wOp1c2Zq6J2APyIVxBuPnmHiT5yvSRhiIZDvctCIMx+KEdOHWFh6tWGIxKA+ppua+xw13Tws0RB2His4oSX9rMPcBKIoIpSm.EZjZ1Ei80bJM8z7x603GXIjCp1LNmUZyEMMaCQZwdAd6zFHp563nsL61V6vswDWx2MNrEiISfc4KeayvVi4G4DeQglPNltzMq63mXsuCTd1D1xF42x5y7Vlz1wJVa1qGTXmd+tg0i+CWdOFyRpecGUWiiAOVdf0XRL.A8JYoF8VnUserUy6u5UqWs6GxDgjb9AF1S7urwW0LyNODjBgp4tW8uZ0B6+i7.apQYfji1Ar.HXMnhD79J54O3fuIjOLPgctSqPs1IDhtARrBysmOq8.dbAIQqPdTTO37JHZTgY2eXXelcAfGfEfGMB3cG5AZbeev0hzJ5oQL7sW3zcGJ3O47BKWre06PEuDC3BkXbiBiaVX7JEFeuBiuegwqVX7WnGmlGAZP8o5uZDRWdvEjUGmOCyads1i8e98Wjqq9kTaYaGTTroOTjLGfHkOP1szgtwJnMJro6v84AC39NcGwXAz886CWUyyMShKeTbLX8h.ueVh3xnQhqiMxP6m.ITRCUWQdMNpSS59qrjr.Ac.Pd2wqb82A7JOMt+iStBQf67gwW+RqaYItQSPe0uA61A7gXgUJWTVfWLY.8r9xZZjLpdxaxBJMqNJ.+7FpYZj7lXgYZjLiQWEIfcN4YYNCyCETC9gRh15B9ScKnSiffGH+fYZbcxhdztg7i6JS.BYzOT.AVou3EPVxZGbLogJ0GKjKM7.WaG2saNpLBNMuB3rxU.m6cEv49WAbV8JfyWbEv4KmJNXTkGMLl6IcQ..1eyjLQ2TaUUOMAWvZOfEFiuPbSyMXmBIdHuUUB7oG87Xdf309mTwig4G8Z8h+OO8k1SBV6hreyjwrywugRq8EsfOx3LG63AoK3u3s1.F95FRg7imtVf6v9N96SCAwQLKb2DohhBhBn.KTq02n74m2vHorKPNYZBDf55z22SbFtokKqWLJBROVe3r7YHj4zPyeZJrW4OLu5OU7vXb7ZIb6JVPcCxNCUdFeJGeeyY5yeXBL9qdzZIbpk4.XrhKsL+kFuUx2vb9L9Z0eXsWKeXouMBiZN2X3W7CD4Zlem0XvWSeStuYUVck+voCl4Ob5bERoV1eesrkPof9iqkq3I8dMl5lTS9gqUnnI8QoPES5IRKWReFGoVI8TpBkzPzUIogkqDIomjQJRRu52opP51fW2i+VGHu3s3mYeQyQ9.09fY6CTCH29TP.jYkq6zOcqjPzVyYJPUvXY934Mt1pO6mgagWu9ame1XWiqoBBMmOa4fYuRjVKnl2G6ARUEnBxmsVZIfJP+l0xV92URVzX1kEugUL9ecwIm++6iSdkp08cQ87DJT9mUVcFJg0xbNLDaZQrVXzQUYrVl+K3mtNVYryjJYkSNKUaaNWRs1ZS5WyBsei4x2Wv8+KVvs47F+a4jjGWA
Thanks for any/all help!!
-
Hi all!
I need help!! I can't manage to get the categories working. theres something I'm not doing right..Could someone please have a look over this code and see where its going wrong?problem 1.
The sampleMaps List is not taking effect of the categorisation.
It should for"BD_Ludwig_Jazz1.xml"
take"BD_"
and put it inside its own"drm_category"
and"Ludwig"
in its own"drm_sampleName"
and display only sampleMap:"Jazz1"
but its not working...
What am I missing?
@ustk ? @Christoph-Hart ?problem 2. The categories them selves (CAT1, CAT2) are not displaying correct.
I can only ever see 1 items in the CAT1, CAT2 viewports.
Why could this be?Pardon my Javascript skills,
Thanks!// =================== [ Samplemap List ] ================== // const var SamplemapList = Content.getComponent("SamplemapList"); const var SamplemapList_CAT1 = Content.getComponent("SamplemapList_CAT1"); const var SamplemapList_CAT2 = Content.getComponent("SamplemapList_CAT2"); // Allow the viewport to list the items SamplemapList.set("useList", true); SamplemapList_CAT1.set("useList", true); SamplemapList_CAT2.set("useList", true); const var Sampler = Synth.getSampler("Sampler"); const var sampleMapList = Sampler.getSampleMapList(); // Populate the formatted list in a new array const var formattedSamplemaps = []; // Remove string from sampleMap name const var charsToRemove = ["BD_", "HH_", "SD_"]; for (i = 0; i < sampleMapList.length; i++) { var newName = sampleMapList[i]; for (j = 0; j < charsToRemove.length; j++) { newName = newName.replace(charsToRemove[j], ""); } formattedSamplemaps.push(newName); } // put under category const var names = ["BD_Ludwig", "BD_Xyz1", "SD_TamaSLP", "SD_Ludwig"]; for (i = 0; i < sampleMapList.length; i++) { var newCatSplit = sampleMapList[i]; for (j = 0; j < names.length; j++) { // this will hold the samplenames sorted by category var obj = {}; for(n in names) { // This splits the string into a list using the given separator var sp = n.split("_"); var drm_category = sp[0]; var drm_sampleName = sp[1]; // We can check if the category is already used if(isDefined(obj[drm_category])) obj[drm_category].push(drm_sampleName); // append to the existing list else obj[drm_category] = [drm_sampleName]; // create a new list at the key newCatSplit = newCatSplit.replace(names[j], ""); } formattedSamplemaps.push(newCatSplit); } //sampleMapList[i].set("visible", false); } // Update the viewport SamplemapList.set("items", formattedSamplemaps.join("\n")); // Load sampleMap inline function onSamplemapListControl(component, value) { Sampler.loadSampleMap(sampleMapList[value]); }; Content.getComponent("SamplemapList").setControlCallback(onSamplemapListControl); // =================== [ /Samplemap List ] ================== // // ============== [ Samplemap List Categories ] ================== // // Drum Type; BD, SD, HH, etc inline function onSamplemapList_CAT1Control(component, value) { SamplemapList_CAT1.set("items", [drm_category].join("\n")); SamplemapList_CAT2.set("items", [drm_sampleName].join("\n")); }; Content.getComponent("SamplemapList_CAT1").setControlCallback(onSamplemapList_CAT1Control); // Drum sub-Type; // BD: Ludwig, Xyz1, // SD: TamaSLP, Xyz, // HH: Xyz123, etc; inline function onSamplemapList_CAT2Control(component, value) { //.set("visible", false); //SamplemapList_CAT2.set("items", sp.join("\n")); //SamplemapList.set("items", sp.join("\n")); }; Content.getComponent("SamplemapList_CAT2").setControlCallback(onSamplemapList_CAT2Control); // ============== [ /Samplemap List Categories ] ==================
HiseSnippet 3469.3oc6arsbaabEPxvIj0L2ZdnuzY1poyTpIJRjTVJI1Moz5hCcpjsFQEmLiphlkDKIgMHVTbQRzY7L4SoeB8o9b9R52P+CZO6MfEf2fjsbcaDch.2ama6YO2VvCBncIggz.CyRGMxmXXdGq1i7hFr8.rimwi1wvrrUm.54gjfML1ZjONLjXaXZt3WyF2rzsL3e9W+osvtXutjztLLdJ0oKYOmgNQo8dPy+riq6Cw1jibFpM6617QcodaScow.srnUMCeb2mi6SdLlMsErLLu8t1NQzf1Q3HRng4s1hZOp8.54dh4+TmPmNtDVi5FsA.I59gTWaFEy50X6ANt1Gn34PCCSqCRk.KJj.er09N1NI8mJI9.9.nzUnKOLWXVjWccxqVwIOSMx6VBx6CsZ2MvwOJcDFs8qrdjWDInGF1BzIKwbMV3eVwZaJLCunUGheN4gAPijUTcyZ0VAsQsZKe+JkqTds0Pe43ePGiZiG56RFh8Q64DFgNYBSCs1ZUJC6jvvmgCRWAeAeIRQC8IQaSG5S8fFUWJyrVhQDSABmt8CNpdw.CepyCVMJNrZrThv4AttzyQQCHnybHm6SChPQTjKiCYc5DQFFVobFHrZHA.ZbHgygqfhBhIL3MNIW3Y1XZyj8u77b.vn7y0L1T1khICxIkB48texdlbVoqTNT0DAxAT+XWPsmy98nACwQQDagDwwCgQdjyQ3f.7Hc7jLwDVKDv1wmHYA.tGRFROifBiBb75i5EPGlRbHOvvfN35N.GDdDUtF.PKs0NmBhkkZ0h+nMzR.a.wnpNvTpcejC5OlkgW0k30OZ.Lxm7IKWoLB97ihGLj.LByfDr1LK5XGFjYSR7WNFdl.COCvPFZKACOKACZXg8IEKxusZ.w2kcPMCfN9Ym.7Ee2SsxWlf+7h1U8iCGTUBO0RdoNQyE49wQnXOaPgoKrg1mFjYKiIyCUx18hsO2oOSzBM99QuntTJeDdHt8dGHaIm0IoD4UXCnTlcfswQs8cchtr6Bbpe9RePJDMvIDcN3nBM.rOyUqEXRH..itL86NizDRpUynQZGFV+wWx01TC.TSUO1wANLzPcNzKIgiXjPHiMCE3WbHvwCL0fEGshCY8vFruyYDOTHwGGfAePYAF+LsOSYZUN7ptzoRaY4mkcvvSUbDS35ebMs8sLSSHNTmE7Ot9IiAQfI9NBHg7.0eR2mib5wo0DD.7G1MffsGAbBwN6hc5U0IbGROGOhcUPddrNscxx4DerOiMIgFeVhc46yHKruOwylYzlQPjK.gISRxDpYgKwMjT.LwNQjEOmvwSWf6.qhB6e7sLrvEwyIizUT0+jsmrZ6ZsRrHv0llfk.si2yyhfBl4LjTZs0xe7R3x4LQnLvA7dXP.oYLoTIMSIequsxmfxO4D8Jx8Wx.1DHwmQc7ptzewaokWN0svdTrc5I+Jkc7bA0DTuXutQNTOD0KCVXN3CntU6p7tuBnE6B9JqTVdrS4gyE.bhKtpYYd9RNY46CbH6bcgBjgweRruM10sCDQa0ISbLtapgcsVQi6J8eiAqwidaag1qCXOaF.D.zNAwCQrXOuOZqcVA0F9+VsVAQh5BRu4H64gzL6MfRSKFHkdQtS0YUIJMs3hxrZsClYVew2LkgSVfcTcVVSokKECi67oBIIuus14dHg+wUPLGnqnra1FFP5FkORx.sZcO9LarNqKXK39yU8mKSl0V.bNelmqWas4IiC8ysqLgkMmUbI1FZT3sgFy5z0DNXMmiDPfKox3GSiHOwq5xk+wxkJ+xxn7C0q2DGSRQrvumzvrjhCl0Bq5EOrCIPs8olHjcX1zOsld5m5YG2UHx0lH06QdNQOAbPNsjRMj6SrrmkTEL0HdxoUjImtGtCw0vARA81V1jvtFbx0vrmkz+BXIALjzpkt6puR66asyWoexXhyJLwOw8f4KOIwFPPhyltdGNcUWQX6pHLdFly+CO4w7eFGuejDuD6mJcAxQ96akQWUQDokNon.5isF21yqUn0XBP6aezN3HLr8ufV0IJO0xGs0gO46Zu6gqqUWBlpmn.R2wp9p0jeLRpgzcrpk1qdYjpXs4cSGIaojpX0PaUyqbRaECp0OkDDBGu.EYqM2nFSe95p.QLRvz70dAd3ESRVhm+wut3k3gaO7qIQhLcDYVSGRNe.IffpRbff1BPDvRisMjnyYNXvQeW2XaBBxoZWu9fCGdzReS6m73Jk4IE.pDPHpIwTAIEtz8De8XYOsi6rzJpQYQ5EjzjSrKIZbhpy1iAgin9oPfFEQGlz7Pmg4WeqViQAQAXm9ChRV0t18IpkgDdgzy2Uc5X50bJYF4Jhhp+FyckhBKs1Ziu10m6ZWOsnTeWfCKUCHkUH4Bg2gPY1hdiW6ktod5RJ4BKAUaVBprsRYBVoySlMUB9ZSRRkQVV.bnnzW77t4UBxIfgtjX+gUwbMhFQiQCvmQXIfwhBfM4gHddshrbqTNQrlMrAMxIelAiGETBLleB..k0CBlZPlDTSFhSzQCvQhkwRb8Ej.JpCFNChpFCX94h7b.Lzg1gdwuikfZIWZWrKRKg5TxWlNAK.Vf5BotjU8ANmEtC3JNcMKg9jjF7vc4okAY5qUpQjPBBcB6u1Zx6RIpXYkhr82imV.0hi.yUYexQfkWjqL1L8MmFWwMGTUlVzP1gYHsXXa.RPlY7JibOqHOUmB3pmxvQ0kOIUllhClb5ODx0pElFYcxsuAY9S5FkfB1DAbnjmmnsqJf4NTz4fdC4LvZJidOG6AjKrAWkY7jouy82h.GtqvJBR.xOf.RVd1UKOtxA.OlYZvnsWez4fUZkBB72k3emQREcarw71FajaabF4WdyUDbyUDbyUDbyUDbyUDbyUDbyUDbyUDbyUD7KjqH3la.nP2.vMko++tkoWnnALPkIWp9oLtd45mxTjkre1.HWY60mrg4hypD6lEoT18nP.YpJ0tfURIZMMaSiCXUT8CRJCqp5siW3wOvZepMKJ8r0zjUnV4.rZkls3irBL5E5DMJWobmPsNKJF+PqCbfTwmBJqmEk0JLJkEush0t85AIwmhuaY8vue9UpUGT+1iTUQOBbeODBLP5dfCuRVpVuFJ386Y0XiMuZU79f.B2akyKHrab3yq+EMzvbLHEBTic2Zewl4v+CFB5TiS.RV6PhOD2BrEwo80SG+vC+5.ZruZ0Y3V915QAfU.Phkarm3QZOfFkSRrc.MLrGvubfFlazChC5yDtY57PVwVBGq6GGOD1w87fv0DZQeaHgcWYNc2GCgMeQtoywWsiv7qLCNPwaWOW6F4Zudt12MW6Mx0dybs+rz1IgXvTn9HqjlntT+QnMmjMCyaesdSEu4sWj4tQJoPYaGlnXWuy.kanGg7AxB.G6Fo5sdNjtO0i5Of54zcLkEXuuee3nZVpYZT4Chh.sWVmanCDWBNjebrtFr2C71iCTGQtDr5rjt+FKAIfXF.Pu8XUt1aAVkmE0+dxiPH3LePz0uz5NV7SzHls5WArcHMlk1oxDkEXES3PW2VVCCYqZx6CDRbsFS.9o0UiTWdu+vH0kiXzUAB.yxuKhYXQhGyNjzaqKXO0M2dZH37fQOrHMtNIwg3tAzS6JB.hQnuKuGXld7qwsj09r1njq71hQkFCASam1saFnL1ZZbEVy5Wg0b2qvZ13JrlMuBq4ytBq4ym4ZXdUdPbDcnvDAzwA6JiDc2TspZIA3BZ69jfHG1qrh4Njyf.ODmpJA1zCedD0m+RlHyx.T.lyqYxEounB0aNJsw5MO2wNZPRG0dYyAD1kGkNkurYD4hn2XuhJXWm9dC4L0ssbI8hXxj4ympWaEMFsoNiZjiQ88GiQWUxnuddkWlMeT9R8ZvjxTM+qZL0O0RRwkrNfe8XgFYYx+V+7L4Oga56F22w6.b.n9FQBdrTKVAAdJtFK3cKK4lRK541iJq2ngp02fewKpq2PMxorFqWlu8yPvS5EF2IWyFkS9CO5sxasS3oPq5hX4ZTd+snWTFjWv+IeHlmhTvA1n5Ya0Q07H9EfVOayFkk0WmSqn53bs6TVxry3Qio+THMl9iFS9gTVMwGxaGPSFN2uN1RZTtHeGVVQdp1oJXiranW11sZcJWGXFOkpGE7aBx5R0L4ZXT5ayuioMPmB0yDFRoLWjdl5PMJTO5Ck+vxD5Z7uL1j5LotF6KFx6hE7pYZJdy7xay+x7l9cg96kWFClYMPZ7CSv.YNRQXPD7i2dmWMxpgFY8y+PyYPV+bmBSVuqzL8qi7PMWTKF7zeAqWK+BNecjdk4BSfdYu9kWyzaQyM6Z5G+5qVE2tx+Bk8K7uP4LEXSMsetodo0T892alonZo3ZB0SSM361LWwzRYkbURKcfjxnkxiiUCszgTEPKsmzpmk1WlRmINTNVwyRm8aUUN6Cs1J0wCK7kwdO4emh8dxCv6.LHAzl4VN8SvknGc04DoNmxz9YpabsU3t2.GCudM3tXwHWiqoJEZtndcB0OSjTjvTZehLjp7fpd93lI0FT00uuodcAuRxh5EWV7JVJw+myQ4h+h2Q4UpHnuMtOOkJn9FkTKPsMsLWf4iMo5lV7n5k02zx7eCeRKvov4orDmhAKRYXMWPVD1TU5KYEXekoxapD6+OVIVyEM9O..GUX2C