ScriptNode based filters - and envelopes.....and polyphony whilst we are here...
-
So I'm looking at extending the number of filter types in one of my projects... so I'd like to use the korg and obi filter emulations in faust...
..not a problem I have the faust code so I built these and compiled them...
My project (my HISE) is set up to use 3x modulation sources on HardCodedMasterFX so I load a HardCodedMasterFX and point it at one of my faust modelled filters....then I assign an LFO to the P1Modulator(Frequency for me...) ..all good...,
Now I load up an envelope in this P1Modulation slot - and all bad...... the envelope seems to fire on some key presses and not others(leaving us without any sound at all)... which would make these filters of no use at all.... what am I doing wrong?
So I thought I'd try polyphonic -- and theres odd behaviour there too, but if I clear the entire generated C++ - I can build the DLL at least once (more on this in a minute) but of course now I have no modulation slots at all so I cant test it.
Meanwhile trying to run the compile a second time with the nodes set up with AllowPolyphonic = true gives me this error:
This seems a bit of a mess - I must be doing something very wrong...any ideas?
I can provide a simple project that demonstrates the problem(s) - but you will need to have HISE compiled with NUM_HARDCODED_FX_MODS > 0
-
@Lindon ok so more experimentation......
Filter baed FX are best in polyphonic mode - no surprises there, and if I put an envelope in the scriptNode network it seems not to play up, now all I need do is work out how to make the envelope ADD to the frequency I am trying to set externally....
So does anyone have an example ScriptNode network that uses and envelope as a modulator for frequency ( well for anything really) such that I can add a base freq. value and have the envelope modulate from there????
-
@Lindon sigh, spoke too soon - compiling and using in a Hardcoded Polyphonic effect is full of problems, the instrumetn goes mono, and/or the frequency doesnt work anymore....
-
@Lindon well for those looking for a "sort of" solution here it is:
Note: you need to set the pma.Multiply range 0->1
Now how to add an LFO where I can draw my own shapes... in ScriptNode....
-
@Lindon You can add your custom shapes like this (this is bipolar)
HiseSnippet 2004.3oc0Z07aaaCEmJIzNwocscq6tA5kzg1.I6TmFLLDmubavZR8pyBZO0wHQGKDIQUI4j5Nrco6PuMfsS8VA14ALfALfsKKmG5.FP+GXCX+Az8Wv1ihRVR1xN1peDLUfVwG4iue78MsZcGlJ00k4fjJrSGaJR5L3Fcr7ZsVKhtEZy0QRuCdKhqG0onfzpcrIttTMjjzj2fSPZloP9Oub4UIFDKUZDIDZWltJ8V5l5dQTqW8i0MLpQzn6naFa0KTcSUl0ZLCVa.OShkQ1D0CH6S2lvW1DXzMItsPRe.tzhKoTYuRxkVZuEoKPK0TgVdulKpoHWVdARoqWtRSREExRHobano6wbZ3Q7ntvltJSqSiVrirDBXWcW88Ln7AJnFfjEjQq0R2PqdnxwEgjlpdjpZRgp5h3sz0z6RORkcd+IJFwQbklzDCCRJiAjjhAooDP5B3FpN51dQyvwyr3Ms.KXSBXahCEwZQRGiWiAKvxadSxAzZNvftLLWEY4qTD9qK+gMaao5oyrJxr1l4Qus0bWtvmWXlBeQgh8NUyloNGWLNLCCpSpSycGbFFiyY01bOpyUJdHwnMs6BgieRcZtQSmpJN0wVHyZSKcuaaSCFWiYnw0U7262BfBTavae5lqS7HbiR.MXc1TGOcNbjVmdHDFHLQyfWm5dfGyFBD5y9AdNLs1FDujtS7.sfI.8QBaH2PY4p60Idf3X3iIOTerQEhW.WW2SsU5XbhTvHnodSfwfHyyh2nYSppWD.mBW6tYMLTdzCCwB4WHHLDjIW3mIXXwZ2UIAH1ts4NDPJf7wRRvQILh7I3HueaGpMwgtCqtAoybtDSaC5c.Pekh6YvTOng9in8GxXKvzp7ULmZKhkE0vMKQV4dMksBcGVaOcq82h34n+P37Bm8FPhdU5ZAniqClfGTIFKyGycTZPsz7G7uvSvjJcUXvjJgSFKdbap2QLmC7sOAuijxyMFmCaIFeeOtpGsK0wk6vJkGKOO7GzJFFriViYZqG3JCFJeZ0YFcrawrzU4jDqHD8qXxZCBN3H.0o1gnav88az1ExlncaqFvh8KNx881loAukuFQEzscpS7Zwig34i.GVpy7pccb6EtQtOb8rnxXuqgu6gkQE5P.rlbECuHJ25Um3.bBo34Yml.bDAN35pIE.KmnpgITESfjD.88iAznkjFvhuECGTQPPJFDxiIszbcRJ9yioVGRMfzqyKlMMIGx4IHUbrzzhHY9HHO0DBcO3jFSUsKO1HzFiZbDOk2NDm8odbtmHNgfJAVT+3L2jCQBGfMADiw1lDTWYvIkGKjCZn6G+b.IBdXXYm00csg7Cq1FR7IRKkfB+DYoQeHOS3UUPa.A6ZPkMet4ZBTriIjkt6H.NaoaEdv4QHnsHOLX7LXEY3An0viZySDwaJRddepvixBKIqnTARLb.8HgMLXAKsXkEUpbckJKT5ZkKU12SeZ7JddPCegp4bvtCa85zlj1FdIIhhAP7fAHFq.i4a9YC17aQAWGThoSJ.AMzogBHG9lP6FQG+Roc7KIeZAu7PiKpjNg3KOtrb+.Lj5XaflACYJ4IUPwV505y3vocpb5mAeGpAk3RGW6yX4dtVamCoimFH2Is+Qm9H4MKbZf5v6uOrCIXteoI+pKsbPCrdzQPPQ8O1MsZhDSnglt9L3Mc2kOqJoaHNjpNV8jBXSlVJUztX7JZgqHsxJw1fQsdFNl7yggyhcRYOKHaG579Sjn2PeAFvwIHrohqWRSKNfpOmEqxaXHnsgzqBk05LhVxRVnInMsD0ZlL8nY+KJ7rm9zed4XQzhKOT8qqF4kEst3gwQWER3XTm5nyz7+4FhsW+PdzweY0jdhgbdupng.L+m9.FHtd.l+yfA1r3awX1Pu0Ndn919zwEB8V.WICXilKcH8xkiGikzmJkFGgaaLe7kjVbVxM4j796wEM3JUguA+aWWxj5OQRjwLUcXfwJs8XlfVx+FtITLISSMFgi43MCVZ.wgIRi3utD51y1U2xanLsDI97bRYsxHxmAumtMyf3L.vOvH9oey3.GJ3QNnJg07sPDVA7V.LzsM5LFQYCGVu7We0gEFuhl1XjJJlSYjKPJ2pk6WFNc+9lQr9Fx8LkaYINo+O1w7MF.a.sOECf+w2Y+QE99mu7qiHm+r+h4P47QBfO6ak+6..dChIXMyTwIgivHk3LpXjfoSz0bPdR4FmpJmXOxCTcOREu5OsyncG3Xmgb3qpLfcejxdj5wHag0SicOr48oOHYj8r3ZNzGzlZo14U91CSF24oq354mipotAW.yGLa+425x3XkdqmtZpIjRzqieq14Fd5iEp1Wz4SdwnEcV8wl+dPGsQJ+95ZO0HTf9HmBoZ4xun2THG+7meoQCjnK8O+gOHmD+IQfy9Wp9St26bUyXU2RG2eJsRUG+1si9gONMuAvm8dq+h.6XCSFyqkt09IvU0+5QeUZYZ8omAbc9TTUub4gop1hGP91VUMLHMCdCK98LzxRmb8dEj7hO49spc6nOZ1q+B8cYk8tO93e6a9wABzQ6Gwdfc+KZkHS+pMqxXGXR7+BNY6iq9136MYRTcX2On+A9gaZeJPFFqfFa2hOtnB5vdMf7OLx8UUStU8wXorxX4rx3BYkwqkUFqjUFWLqLd8SlQ9+ANBJKw80g.t5aHJrJEFsy6N3+fY4mgo
Don't forget to set the table to 'External'
Edit: the 'Scale' parameter of the bipolar node, must also be set to 0-1
-
@Matt_SF thanks for this - its a solid start in the right direction, of course theres no way to set the frequency and no way to set the depth of the envelope.
So here's an amended version that does both those things:
HiseSnippet 2975.3oc6akkbaibFFTRMoEkb73ZrSxirbkG7T1gE.3FXxCC0FkUFISNhzKUdHtZAzTDk.QiA.TRzSMumiQtIwGgbDliPtAI+MZ.hFjfhTTxRyFcUSod6u+9W5+kF8z1kpS77ntRYVu6HGhTlMQcFY62em9XSaoC1UJyiP6LzymNnookOw0SZ6QNXOOhgTlLqtOaRYVeMofe+2udarE1VmD2kjzaol5jCMGX5G2a6FeiokUSrAoq4.gYWtwA5T6cnVzg.fVEIK4f0OCeJ40X1zVAIkI6dFl9T2N9XehmTl01lZLpSe5E174+VSOySrHrFJRc.Bw6tI0xfgXVuR6z2zxncDi6IIkA0NVLrJWL7DzQlFli6OVb7EACTHdEhxiLqjDdql.dJhvSV.do.oLBPZMNjdLpitqoie7HL7rA5.aPuzCChcQnvmqTlOg1gBSv1u3.7YjltPiwK34UkkeYA3+7U+0dCs08Mo1En1ul5SZY+7uJ+2me87+P9BSNTudoNFaaboVVD2TGloocupE9b6gCNg39xBmisFRFOQf8SJSQyVlJpx04bsvDo1GXa52xgXOKCAoPQES9GhJX68Cj9OLT52Ey1LSPF+.TveqHE.XQadCrOVJyaPUkKl724spU9s8qW7cs9a05rWUGRKOy2T7ErgpO58aqozxpT2Vun8oe290F07.7euELRuWvWKwT6isjjdyA6xHeHDAzBbfCw02jIbxrK4b37F2fYcztDuy7oN.SrCcfC0lwaY1vOzBmyPMsnXeS6S6ZFxWOBI1khzkiYsOcRiQw74qaDB.9tAKKvCwtldNV3QRmbZzA4MQkU0TpTtRE0RRl9jAhCTub8p0TqWQX.U1HpJUKqVUVqZIo.9My2h997EJ7rw5qCLd1eovyRrmJO6krobfsA4RXP4fVvYeK5Eui5dlG3Mg.82Ca4Qx+CRWXZ32OleF0nOw7z9B9oLZHszxMUA4lz+PTts6cqb6nTkabdnPy2eijYe5hIkYe5zDxrby8vyLjR+nSCmXDGDVZLhmKH.JIBhMuVJtRyBR+qQIUbah15U61438cwN8EzZLmOhJqMPkqnVWqrVIkqPW4StzWjBbc2g2J5Ne2gKhpqAogzzQcf3cTigVX+jAAYQ9CG.7hmHxCK7hsmo+HwLCt0hLtnP7wn1l958SGiqjBFAOpeNvXX9DODsWudDc+X.tFp46+7j7f31+nDY0suKcnSvt+DdGDOSOhagf9UtMRsyYgSsaOalCflGIRwcvttlD2.CZgM+eOV+N0Huw1ziZSCfxVCnCs8EAc3n6R7GZm.5gCzwwkfMDWAC8cH.TMBHoWBa3UupjOUVxjOy8StjO+YfWfD4GudDF6XNvwhrm84DKHknP2.6R5gGZ4OtWQPdDXC3zmZapKZbbLw207zSIthPOU9YKeen.k3ddRiiIVDrmfs1epwgl1DrKHlHKonP4ZWpPppq+HhC2BrSlE94qy6U+Esy6Dpyb78OeTlKuOXySjKjHHd8vAAYUwpRJyJrTzGNtrcnmL7dBSzb6g.OEOPT8h+STbsYf2QGrKoKsML+m6gYmtNF3uWV3DKp9YcL+HY5B5BSaaa1LdtdersMwxaYp6K6szADoioCYI2cDFNVCAOPfLnCDFRmrSH5hDWgskYsY1TcH1FAM9evuvAUFKvfAUhFLtxQoWS7ufk7ESUF92fhjo2VG05DyVrfnawRQikgpYn4Mmi.0QPibH4hv+3SqM0ZTjOJ1r3KKB6Qw73LvqvdcwlVrLb5LzCpz0nkcGXxAAtYFouNvKTtlXcPxNpMlkP3iQrZkAKahaQ8wV3wfM1BiIe4WES7nLMRarKzK2LiAQ1tDEpmKIAPOHHWb1c3rJabl7YUNbxxuGiAPnM99m.dOU.dwSIMPIRhEEBYDfPNDtugmaxs+KPjvHGE4il1NGsx4rqHgR04GzYs.2XqvunMvvTPT9V90Jv0rRctf4QrK18ThOa0qH1Q3sAXSBNa4kroDWsyphJO5DSGpE1UQZ7Fw5OGhuYRWIQCL8rHWFc+CS3HYxdXrEOcsfz8fC4FPdP7Ba.ogj.qBFTiaAJiiLsiXd1IAoivWF1dcjhL7C5qiOwg4.hksjbwfdgeJkqKqnTEbHbF4BtdLbB0qUslRUMVEWUJA0Syj3OHLhnzVC8oC.2LQYoI.l0lMXPHEnMiPOLjPGR.SEoDCKcevXYQuBR5TJwdcu.jbP5W53Q2XA75HveFyIvUQo6LtZcTTZd2VFN6Lz8bhn9pRBZglGsh4pXZuAJNQ1YZIrTTNKj3uOYBhFmr1XmTINhKckN+1Dcf2aYipiGe.Bb7I3cNOZ.0Hk3COQL9PzLRyIs.AlWzgqMTCx7HJlxCDP8lHex.G5G7FYqmFtgDfJJLizvcBRLOjmhVXFwBxh.ciSx3.ahZSbMoFA0tmzA8ZKlQSVjZoYX0jC0kwGW0YlDDVYBBqTcFDdSzQPAdlNVlhV5J2FV5qi3WSgwRQ2GD30Y9NcX6zuC8FalFlvE9gTHGRUlejUvhT7TQnVLgk0FfkkKoXv.oYPEtl4XJs1haJ8PjNSH8A+fq2M8LKtt4NjIL2g0P+YkILEWMcoeph1kSYj3bvM0G+FnCoTGnLFW+Y6Gdgnzj9cUtJKijJkTRol45QbJoYpjjH2dVLYQNCvJKloRXIsQ+0UkVYpexshE6Qpet+6TqtyGO+xNP6RgexsN5ey4xrwa8B6W0c2Z6TqKtuvmbqHUqkbqIr9xbc0ZQ70T1QSq3xw0xAxlDZrGNViAiMiC07UIbYi2dwJVOptgYnwl4wyal.JU5jEbHLCBkOJPvnY6tdwnDBskwT4OOiCZwBmTJqloxhFN8f6G1rUzDtMCtCVCpI0Vbd5NUWcUzoCj9DYgSFfkQrHcTYNxmHW8pkjqqB4qqIqUobs50B2n8wCfyLKlSSgBjWJk4d1mu8chx7y2QOHq6e9qLicjptTNRU+L4HMf3k90kWzEHtW1wpqRKk5pzsnJBg7NuWRMzFnltjuaHwVezuN0RIpiOwMllRA4SeexoekoK+E0xUQSXnzi+gNJxFRbCUB2P9hl21MQtmQe8jw+YbgIAk7mvXHa596fRhm7xnTitLpIb5opVutb4JUUUKUVqlVkv5Ghs9VLOreIPpRgk0nTWk4HUX6+RT8hZ0Y+ppnUojrZsRSCjpkqoTSSoVI4pUTzpF.jUQe6BZ2lCr1zlr7cMgpX.E+M3Jol.rkjUjYra85ZkqWSVITp0Y.k522z9zns52ynlbc9uZ0pVVSshl5hu2km40gE7wcucuisYdyCy7b4xb+Zy7N3QSZ4s37PV13JRiU7fBpxB98IRK73josFhMD5XfQuI17iGRoXEvb.5ulrZcUHui4ebXwXmTBkvNCk3NqS7cHtKt.6wrcI0J7kWVqb4RUqUdA4pnO1UB9ZLKLEyE8I.ta4M4RkJx7xVthRcMUY0aBuEwAIb1k7qRLuSGi8KBfVU6l.l38bJIc7mk3NTVy4uaDCEg5oju4Y0SsKwABvufBXFRKqVqt3ua72FkWbyTdfxyJcmek1W66CONpn5BK8R7c.l.hbXjh.Df30R.xbWWYQOsLyqEJRhsDQj1lROa.N38SrTO08E8IFsIh+p.YODp48zPuGdATah3uMw6Q38TN71.8N74jfWKZ.xdZP6dT2AE1m.43yv8U8zQ+O29OczV59.D55hs8bndDEQJOwXphiw03JS2UhYwXul.6ILuGzHpSUwNaisSPLncBJcjovaU8G+ZdBc7WWZKOcfYwAtWi0isGZ4QdG6cZqHtv3tUE69UXWiNLmAhOCtOKuQ0r+1aT82dri2qZQ3nzOsexp+ADbjVsPfprv8it7t3cN9Kk8X.V2k9gvKWL3QaDzCHasCefiGwZWHk+u6i8HC+ftdRRM0BUW1EVZYWX4kcgUV1EVcYWXskcgZyegrnOg2RE67GDEt8d7uNblnaTANJJ8+06hryO
So in the interface I can setup and display the Filter, and the LFO table, but I cant find a way to display the envelope. The node tells me its in External DisplayBuffer Slot #1, but I cant find a UI widget that will show this.... anyone?
-
@Lindon said in ScriptNode based filters - and envelopes.....and polyphony whilst we are here...:
@Matt_SF thanks for this - its a solid start in the right direction, of course theres no way to set the frequency and no way to set the depth of the envelope.
Oh, my apologies. I made the network between two chores , I was sure you got your grasp on this part.
To display the envelope you'll have to paint a panel (see Scriptnode Visualization 101 in the snippet browser)
HiseSnippet 3788.3oc6as0baabEFTRKkEsbSxDml9HFMclRUqx..dud5DZcyVMRhLhxWZ83nABXIIFABf..JIlTOsSmoyj25ys+O5C8o5Yxef9XeL+D5+.2ytKtrfDzhhVVNI0HyDSr2Ne64b1yMrpkqsF1yy1UHStCG5fExrLp8PK+dazS0vRXmMEx7dnMF34a2eaCSerqmv5CcT87v5BYxL+8ICJyRKHPe9ue55plpVZ33lDDdjsgFdWi9F9ws1pwmYXZtspN9Pi9bitTiczrs1v1zd..n4QRBNpZmn1EuuJYXygDdfpWOgL+RjZwh5cpToVccsRkkq2Qspt1wEqWFqqTpHtNVWuZQ8i6zQHS1szM7sca6q5i8Dxrv515Ca2y9LKFAdjgmwwlXxKxBsAJyZdaaScxVjzpvF8LL0aExo7DDxfZEy2lmw2tMZOCcin1i4euOsCw3Yvy.yLWR3MeB3IyCOIN3kBjxvAoEXP5CPs0bMb7i6gfmah1wBDjcTA4DOTXiUXt+ABsgMLBK+B8UOAusK7RzLxWQRZMQ3+s5cykCjUd9hmp5Jp6H9aDo5ME5h82zvywTc35C5zA61Fjkv7Vgs7ha+D4Uf4FOU2igop6L17xOBIV+gau8VGbztas+8O7AvTjkTJkX.Nt1NXWeCrGz6WmSTbE1BsK1pqeuU90IWg0HCX+A8A4jkE1zC5WN2ygEz83BdX+CLr5xldqnkMeLEHP6S9Dw8sOSzD6+K7DU00EUE8L56XhEcTgUTriMvWX6HXwD86gg96ZoZxg4VjQJC3MjiCbgMr66XaAujeEV2D9E4IdZLdIvJ445aAnUyexL5ttNelkMga+zzolpuObZakUIrlTdReR5XM0gWx43A1SfSGqr5ytaNfKk+DQCqP3sp3ID9OYht1lanZZdL.p71VaYcJ1D3+A8P3IFVlFVXwNCrz7MrsDGaP40BI5Z.Kvb.d0bectkLs0TMARpiOGXFAzs.88lchmBPgfg5n5B1eHF+HLuHleg6QYXqEKNJrIgav2Pa1VE1nKkaIl3rftpuZgioJWv5A5aZtX3zeKU+d4CFBvu1kP50sGXo6AGEVSDT2TgwkaovGwmBmDSpSKBsHWP5YzQ+zyOBnsKr0O+Hrk9ZhCOpugE8eTO+YbqiTAIx3oClwlDySzVMrL7MfsOqIUeQGaOCJiVZUtouJcuEukAoGvXbMNdfONeLq6oTF7yBED2Mb9QrEWrCvo7yCq2yoJ7AsCqWKRGGXOvGD24CE246RklcKzA7kbOSy7RmqnrM8g.otL0Hhqj7r+wqvY8L7wrNIShxw86Y3wKRVSj1xXR.BrV8tb5Z6a6iaZkmBhbOOm3nc0oSp8EnZZBV3RqahCQ2W0DyaMn+wDXFqPSFHXzOomDzj8jv6nSicBkaf1V6.B9lNXqI49SH3XM30Yg.TA+xm5y4VA9bNTkPLCvyxMPzeKKPALenADttPlGhpHUH4yoMqV5Q8pW3wM+sUauUEGbSOiGV3NjtpO7IqWStoYwCadmVc+x6Wc316n96aB8z4Nr4hMp8UMYXjBr4Y.6mD.r1lF5X2.jwL4MBx9NsFSyrWDQs8Mxj+O+koZxKgBLBNNWQ3g6rIgw.9jC3ywtff11DeJDPEyA+RnMwdm3a6.nIx9J3g2OHhjfCkl1pvImtGZDHQdODeSxBmGQ9WbbigwXY+FA.fQMXZzP.CbSKbb2vH0VFURolb4RkKqTT.Nh0mui5kpWopR8xbcnP5QQtRIkJR0pTTftey74HpW6HMsczAmxqjflxqP8auCwTBzoD8MHVMS6ydrs6IdP3hXn8Npld3bOW3LCc+dw6mgM5gM51iKPTchvZF4aJb7Mgufmus40KeauT4abgALK7LTl+PFAgP9EJyeVfdtOhWs3EdbeRbGiFNwHkluQDRGQf8hyFSf8EIDXYSBBpCi.PvbdLIP7mNswD1mVirOW5hsdLAZ7c+wF8s0g4lEQyxA75F0227sM77wNsM9JLe5SdfGHCXTHjXeOg9F55l3VANciFWi+ZioCfgFnhIaCmqe7kaJrAdN+YzjHbLZjg1kxK3w2e+uQd9meZe9rQ+cufeGAObnWecA1dmXAUy3XPsQX77mfL2r0GXp5mLcNRRuAcPvDeNTj7jr.rNjmqckki2zBwO.0xvWqW5XbtTvH3q4MAFCxL9VHVpIw.bAz1O4MSZv7j+8RTPi66ZOvgR8ayZ.6Y3AQfSaW9pnpFNScUM1xhXhb683WwMTccMvtTyzbD+eEIeGqmGZY3YaYSgx85Cwo5yC5fd2D6OvJAzC5nsCjMgN+LHnuMFfpNcI8RnCO+qpLJxyXYTV76ckQ4G.VARTomkBwXaZoGBy+MvLvl3NpCL8iZkGj6A5.N8rsLz3UNN.CYt0sK1kG5oteXI+F2xsab.1Dq5woq8yarKjvlp6dLSsyBqP9RWzqTEW+LDCthjSlh+v0387+n13cBw4hL5mKLX7mPIdhnE4Aw9C5Si6jj4al4HIuLHph0PKYXsjnBiQcDT4yLeCJNeaGR4HbwGZ2BFedOUxoqCf82ZhGaZqcBIxiwSROHv10IiHuVPkEmkb4ydEc.QfUzjt6oBGqIg9.7.VAYCq6YH6J3cIx6Dcp1XKc5KuDdB5TNhgAcJG1Yb0.D1G6eFIkBhnL32ffjH2VB07XilDmn2ij3AI9Pi.0a1NBDGzWVDIU.9O1vZYaNLzFEYTroEh8PedrMvCT8NT0vjDgS6AdN.BaZ0FFL0wMQIcepUnE2VUC3rCI09gbXiT+CPyF6VPKRCOFrwZXD9K6qPD2KQhzJp.WLHRnRnqdFmD.ceZjvygfgP5mvelmAmrrJxCg4ZvneB38QbvKdHoAJ9kXZgPFNHrHRsmtmaRx+9HbfmiBrdSixgy7BnJhqHFrC5j2.yXyw9FSfhIGq7QrhhvjrBsOiXQ7PU2tXexrmiugf5jXgoms7R9p.SrSxyLG5XCGaSUWYgHBsCMKIFwDdkKJU0yDedXkYFwPxnsP1Vrv0ng6AGx0g3fXoqCbCAtsJnPE8Ffl8LrB27jSBB6oddv6KgjkfGns1Qo9baXLzVgG4R0kjkq.FDNAeFSNFLf5UqTUtRMRcCJWToHUG+FAdDEt2.e69fYlfnzBBYHfmHvAMzjgFBICuSV1aErr6hAEGgDcmXkCZS3swVOK5APXoBIn0nfS5sE3VDQ+FBWwhkkPAeHhoecu11wKgBCb7Mip3FCbOEyKsKmhztbh0O6Es9w66X5cSTbvyWJcqYhZYgDP7wSAghCjLx.ZByOBuRCyKi1w6Qjd0TiNNCFk47bjC02VOEeW2l22U3HRyAB2BbQdttzPkFUTn+tavg5kQ939N1G4MzRKMbCAmUfaDog6DKwEg7TjBSvOUVDHabR5iZYTKrqgsNstBIcdrvzoHkEoTbBZRKhNjrOl9SeIHi7HjQtxDHyxn8fkyvwzf+7wz3XXlNerDhUjE8qLZcCpUuK1nGg5+DzCsH5EXlHKXEVDoHM94zvVSbPj+DVfFQBszaBZot3BzNRS4LXNWfZ4BSuZ4sPZD14Q9zB8mdDTW1XjxDDizBnek7Hp0ymtLIUF9rIhRbl5p0yyMQ6Za6zl78zubdBlpUeTK+SVsdB5SIEkojvAw3G+PRSAK4hb0omkE4zWUd5TvBR3O7WupftS8iLWnPGb8S8erRkM9pSOuM7dwfOxbasO6TIR+Mui0CNbypaT8P0dbej4B10ZJ0bDc1LWVIY395Bz9FWLtHSOfxoRH+tUj7C5aBFFXyhqvrWc9tVJLGqIH+l3Q7qR1UpqZVvDyDV1bgNlFd4bULcqNBcO8oJWiIbXMlklRgKHB5vtSODkc2tY3.tJCQAzgTRJiY6y2hR3W0p1FBIDOiA3PxMfeUUHtWFIulJEkpq.41TSpV4RUqWMfr2WsObJb1MTyUxhYR3uk0oqesH7eyc.Oyb+envO17txLYdW4Mj4c5hW7c11SZa+R68Naj3s3LIdKdEJRQHuS6jThdSz1t3ub.1Ra36jpSiTMQ0TRTS8TJKx3ewgzKp9rWJelHcDEqNrOEVARW7DTNffrIcQjaj3uC+9ZQ+LNkNZgWRn7jMcarYgreGo3hJgEWbDCsJJ0qKUpbEEkhkpUsV4fbsh0VmEa7eHrvECROTttBwTNGX9PT8B0pSdpHWqbQIkpEGGVUJUUtZM4pEkpTVtVEJrlG84yjV+hfdYsQKoRMtL+.khq3hKNx1onjrDggTudsR0qJIGvka2211umgU2Px+SIqlTc1S0pUJUSobMkQvyDFzTCvRSr5mz6Tva9xrdoJizDMJLKkXchehnrip1O86qrj9kEhzr.o8nECOnwo6apkV.AilHPjUoCfc+qy4tntjKTFzkf1qJoTWAh95hORlbOl1RLca3TbWRNom36lj3qqcc7QTdThaP927sMFc2VToLaYKUqTohUpVZJ2sgeZ2D62ns1Xa5vOc00+dlbmqGcOKUrXAhmDxedf0TjTdc1yg6rDFsS9c0tnCgW.fIW6AYkZuNfLFKiIYh+DaWqxlW9xWNO4NTkl0xWqMZ3tYL4QNRNuahcffdlRABYGTRoZc9mQjMoNjW2Kc.KqzwLSliTwF12i4R+wbhCXPYLWTAMNcnNwW1ZDbyvVJLd.2WJFOwQSYkT79TdZOpNwpMFxamAutqaaeReU5UXZl96vYZukeKiXWLWxcQ7htc1uEtDhKiXWO32hv6iYv6lnGqdJldgsoH6inu2w1su38wPRTDb+pt81+6q9aucSMe.BG5pZ44X6gk4W4139FGZag8Rz5HyPI0Ynjz6.Q6Pd7lRLJBqXafUvMtazHrQE9FaoZkXwf2SrR6Yvc0x+tOkEzK6xf2zSCXLpT68wx7VCL8vOl72PiL+DiaVgu4Gn5p2lXMg+Vq9F4Jkm8cWo72c2jeqJEgiRe+9Fl+wH3HshHUTJ91QVdcbsj+wBM5qp4ZeTPkgo2iIZK.u0J39HuG4cwT9CrlbmfORSK4RM1DUl0IVbVmXoYchkm0IVYVmX0Ych0t3IR79DTjPx4OvKbqsXWWgLgUcBNJJ7+.DF6.fC