Blog

Blend4Web + NPM

2018-02-01

It is no secret that developing Internet-related applications is the most popular job on the market nowadays. This kind of apps include various news and entertainment web sites, online trading platforms, social networks, CRM systems, various services and online games… And every day, new technologies make their appearance. Yesterday, we might have been skeptical about them, yet today we put them to extensive use, and the only thing you need to access them is a web browser. One of these technologies is WebGL. Later, we’ll be talking about it in a greater detail. And for now, let’s dive into the past – if only for a few moments.

Historical Notes

In the year 2009, after a long period of research and development, a new software platform based on the V8 engine (which is used in Chrome web browser) was introduced. In essence, NodeJS is an environment for running JavaScript programs; it transforms JavaScript for a strictly browser-based into a general-purpose programming language. NodeJS is especially popular in server application development.

Later, a well-developed infrastructure for creating JavaScript applications was implemented. It includes NPM package manager, which is used to install libraries and their dependencies.

Soon after this, some of the NPM libraries were put to use for web pages development. Today, NPM is an enormous repository that includes countless server and browser libraries, frameworks and utilities.

And now, Blend4Web is also available for download from the NPM repository.

Installing NodeJS

There are several ways to install NodeJS on different operating systems, but we’ll discuss only one of them: the one that we consider most convenient, as it keeps the probability of any problems in the development process to a minimum.

The point of this method is to abstain from setting NodeJS up using install packages (.msi on Windows, .pkg on macOS, .deb or .rpm on Linux) and use another type of distribution kit instead. You might need to use several versions of NodeJS in your work, and it can be difficult or outright impossible if you are using install packages.

You can download NodeJS from its official web site. What we need is packages marked as Binaries: Linux Binaries (x86/x64), Windows Binary (.zip), macOS Binaries (.tar.gz).

After you download a kit suitable for your OS, keep in mind that any install package is nothing more than a simple archive that you need to unpack and make node and npm files available through the console. In other words, after unpacking the archive, we need to set up the environment. In each and every operating system, there is the PATH environmental variable that serves this exact purpose. We need to add the path to the folder containing our files to it.

In Linux and macOS, environment is set up similarly.

I recommend to use the ~/.profile file for setting up the environment, as it, on one hand, contains local user setting, while on the other hand it (unlike, for example, the ~/.bashrc config file) initializes environment for graphical utilities too.

So, add the following line at the end of the ~/.profile file:

PATH=/home/user/path/to/node/binaries:$PATH

We need to add the path to the beginning, before the content of the PATH variable. The reason for this is the fact that command line interpreter reads the addresses stored in the variable from start to finish and calls the first program that it finds; so we should make sure that no other programs with titles containing words node and npm would get in the way. In my case, the line looks like this:

PATH=/home/dal/soft/node-v8.8.1-linux-x64/bin/:$PATH

Reboot your OS and run the terminal. Make sure that node and npm are available.

Starting from here, I will be using *nix-system commands. If you are using Windows, simply add .exe extension (example: node.exe, npm.exe).

node --version
npm --version

If the terminal tells you that the program cannot be found, it means that you have made a mistake somewhere. Use the env command (in *nix systems) to view all environmental variables. Find PATH among them and manually check if the files are available at the path set there.

env | grep ^PATH=

You can learn how to set up environment variables in Windows here.

After this, NodeJS is installed and ready for work. So...

Getting The Work Started

1. Open the project directory and create a new folder in it. Name it something like b4w_test.

2. Open this folder and create a new package (a project in npm terms):

cd b4w_test
npm init

This command will ask you a few questions. You don’t have to answer them and can simply press Enter.

After the command finishes its work, you will find a package.json file in your folder. You can change your answers at any moment by editing this file.

3. Now, we are getting to the most interesting part:

npm install blend4web

This command will install the blend4web package to the node_modules folder.

4. The package description mentions example applications stored in the projects folder. At the moment, there is one project titled my_project.

Let’s try it!

      a. My_project includes its own package.json file that is different from ours. We will be looking on these differences in another article, but for now let's just copy all content of the node_modules/blend4web/projects/my_project/> folder to our b4w_npm_test project. Doing so will replace every file in the project directory, including package.json.

      b. Install all dependencies of the application that we have copied:

npm install

      c. Run the start script from the package.json file:

npm run start

The script will run webpack bundler in the watch mode, and webpack-dev-server as well. It will also open our app in a web browser.

After this, you can edit the code of the application and watch the effect of you work by refreshing the page. Webpack bundler automatically recognizes any changes made to the source files and updates application on the fly.

To stop the server, press Ctrl+C in the console window that runs the npm run start command

To Make Something From Scratch

So, what can we do...

After playing with crystals from the previous app, I’ve noticed that while user can interact with the crystals, crystals cannot interact with each other. This made me wanting to build an application that uses physical object.

We will start the same way we already did: by creating a new package titled b4w_npm_test (steps 1-3 in the Getting The Work Started chapter)

To create a scene, we will need Blender with Blend4Web add-on installed. You might already be familiar with Blender, and you might know how to install add-ons – and even if you don’t, it won’t take long to google how to do it. As I’ve already mentioned, an npm package contains everything you need to develop your own application, including an add-on that can be found in the dist/addons/ folder.

After you have installed this add-on, the Fast Preview button should appear in the 3DView header (only in Cycles and Blend4Web rendering modes).

By pressing it, you order the add-on to export the scene into JSON format, save it in a temp folder and load it in the dedicated Scene Viewer application that is intended for viewing exported scenes. Scene Viewer is a very powerful debug tool that can, for example, show what parts of your scene are the most “heavy” and take the longest time to render. You can learn more about Scene Viewer in the user manual, but for now we only need its ability to show our 3D model in a web browser.

Even now, you already can conduct all kinds of experiments with model export – and observe the results. If something looks different from what you expect, this might be because a certain feature is not yet implemented in the engine… or you might have encountered a bug. If you run into any problems, be sure to leave you comments on Blend4Web community forums. This way, you can help us to make Blend4Web better.

A Scene From The Ground Up

We will be creating a tower made of cubes, so we won’t have to delete the default cube. What we will have to do, though, is to edit its physical settings.

Open the Physics tab, check the Object Physics box and set Physics Type to Rigid Body. Then enable the Collision Bounds option and leave the Bounds with the default Box value. You will also need to enable the No Sleeping option so our cube won’t freeze if its velocity is too low. This way we will be able to create a simulation of a tower collapsing.

If you press the Fast Preview button, you’ll see our cube falling down, as it is now a physical object affected by gravity. Let’s save our .blend file. Name it main.blend and place it in the blender folder in the project directory.

Our tower will be standing on the floor, which we will make out of a Plane object. Place the objects so the cube won’t intersect with the Plane. Select the Plane, open Physics tab and simply enable Object Physics: we need the Static physics type that is selected by default. Now, our cube will stand on the floor and won’t fall anywhere.

The tower can be made directly in Blender. To do this, simply duplicate our cube several times:

1. Select the upmost cube and duplicate it (Shift+D, Enter);

2. Move the cube to the top (G, Z, 2, Enter).

Let’s also move the lowest cube a bit aside to make the tower unbalanced so it can fall apart. Here’s how this may look:

Everything seems to work, but if we try to use the mouse wheel to zoom out, our scene disappears for some reason. To fix this, we need to change the Clipping settings of the scene camera.

Now we need to export our scene. To do this, select File→Export→Blend4Web(.json) from Blender main menu and save the files to the assets folder of our project. There should be two files, main.json and main.bin. The main.json file contains meta data for the exported scenes, while the .bin file contains the data on geometry, texture coordinates and other 3D model parameters. But what should we do with these files?

What we’ll be doing is writing an application of our own...

Let’s Get To Programming

You might have already heard that starting with the version 17.12 Blend4Web supports ES6 modules. This, to put it simple, is a new method of plugging in JavaScript libraries. In ES5, we include every script we need using a script tag with type="text/javascript" attribute. In ES6 notation, however, the script tag with the type="module" attribute plugs in the core module, while all dependencies are downloaded automatically. This approach can also reduce the size of the application code base by ignoring unused function in the plugged libraries. The only downside is that for ES6 modules to work correctly, in many cases you will have to use module bundlers.

The example that you can find in the npm package is written using ES6, and it uses Webpack module bundler. I would also like to point out that if you are using any ES6 constructions aside from import/export (these are the keywords for ES6 modules), you’ll have to convert your code to ES5 if you want it to work across all modern browsers. This can be done using, for example, babel. We will talk about bundlers next time. For now, I’ll describe an approach that works flawlessly for any modern browser: we’ll use the pre-build blend4web library that it written using ES5 notation.

Built libraries can be found in the dist folder. We need any of the following files: b4w.js, b4w.min.js, b4w.simple.min.js, b4w.whitespace.min.js; their only difference is obfuscation level.

You can use static server to open your project. It can be installed using npm install node-static console command. To run it from project directory, use the static command; the application is available at the http://127.0.0.1:8080/index.html address. The listings of the main application files (with comments) that you can use in your projects are provided below.

So, let’s start with index.html:

<html>
  <head>
    <title>Blend4web Test</title>
    <!--Built engine-->
    <script src="b4w.min.js" type="text/javascript"></script>
    <!--Our code-->
    <script src="b4w_npm_test.js" type="text/javascript"></script>
  </head>
  <body style="background-color: black;">
    <div id="main_canvas_container" style="height: 100%; left: 0px; position: absolute; top: 0px; width: 100%;"></div></body>
</html>

And here is the main application code b4w_npm_test.js:

"use strict"

b4w.register("b4w_npm_test", function(exports, require) {
// import the modules you need
var m_app       = b4w.require("app");
var m_cfg       = b4w.require("config");
var m_data      = b4w.require("data");
var m_preloader = b4w.require("preloader");

var DEBUG = true;

// set the path to assets
var APP_ASSETS_PATH = "assets/";
// set the path to physics engine
m_cfg.set("physics_uranium_path", "node_modules/blend4web/dist/uranium/")

/**
 * export the initialization method that will be called at the end of the file
 */
exports.init = init;
function init() {
    m_app.init({
        canvas_container_id: "main_canvas_container",
        callback: init_cb,
        show_fps: DEBUG,
        console_verbose: DEBUG,
        autoresize: true
    });
}

/**
 * callback function is called when the application is initialized
 */
function init_cb(canvas_elem, success) {

    if (!success) {
        console.log("b4w init failure");
        return;
    }

    m_preloader.create_preloader();

    // ignore right mouse click on the canvas element
    canvas_elem.oncontextmenu = function(e) {
        e.preventDefault();
        e.stopPropagation();
        return false;
    };

    load();
}

/**
 * loading scene data
 */
function load() {
    m_data.load(APP_ASSETS_PATH + "main.json", load_cb, preloader_cb);
}

/**
 * updating the preloader
 */
function preloader_cb(percentage) {
    m_preloader.update_preloader(percentage);
}

/**
 * callback function is called when the scene is loaded
 */
function load_cb(data_id, success) {

    if (!success) {
        console.log("b4w load failure");
        return;
    }

    m_app.enable_camera_controls();

    // place your code here
}
})

b4w.require("b4w_npm_test").init();

That’s all for today! Hope this article has been useful for beginners and intermediate developers alike. Source files for the application are available at the link below. We wish you all best of luck and interesting projects!

Run the applications

Application source code

Comments
13 apr. 2020 22:06
buy Viagra Gold - Vigour in Australia overnight without prescription

<b> QUALITY PILLS HERE! >>> </b> https://bit.ly/usamedsonline

<a href=http://totalworldstore.com/shop/go.php?sid=5&search=Viagra> <u><b>>>> WE DELIVER WORLDWIDE! CLICK HERE <<<</b></u> </a>


TAGS:

discount price Viagra Gold - Vigour in UK/GB
pharmacy Viagra Gold - Vigour free overnight fedex delivery
can i purchase generic Viagra Gold - Vigour non prescription
where to purchase Viagra Gold - Vigour no rx in USA
Viagra Gold - Vigour overnight shipping
licensed pharmacy Viagra Gold - Vigour online
Viagra Gold - Vigour no prior script overnight USA
discount pharmacy Viagra Gold - Vigour cheap cod no rx
Viagra Gold - Vigour no perscription overnight USA
cheap price for generic Viagra Gold - Vigour privately no rx
Viagra Gold - Vigour overnight no prescription USA
RELATED SEARCHES:
<a href=http://www.doripesco.ro/forum/viewtopic.php?f=15&t=83&p=63078#p63078>buy discount Drospirenone / Ethinyl Estradiol 3mg/0.03mg no rx, fast worldwide shipping | Purchase Drospirenone / Ethinyl Estradiol 3mg/0.03mg in CANADA</a> <a href=http://www.yushanzhan.com/forum.php?mod=viewthread&tid=1202851&extra=>online Cefaclor pay cod without prescription | Buy Cefaclor in USA</a> <a href=https://seo-fast.net/forums/topic/fast-delivery-avapro-cash-on-delivery-online-prescriptions-purchase-avapro-in-uk/>fast delivery Avapro cash on delivery online prescriptions | Purchase Avapro in UK</a> <a href=http://gh.cyphus.com/index.php/kunena/suggestion-box/17014-discount-podofilox-hundred-gonna?start=4680#28894>buy discount Glimepiride no prescription c.o.d. | Purchase Glimepiride in AUSTRALIA</a> <a href=https://theworldofpg.altervista.org/forums/topic/fast-shipping-ticlopidine-without-a-prescription-shipped-overnight-purchase-ticlopidine-in-uk/>fast shipping Ticlopidine without a prescription shipped overnight | Purchase Ticlopidine in UK</a> <a href=https://theworldofpg.altervista.org/forums/topic/discount-repaglinide-without-prescription-buy-repaglinide-in-england/>discount Repaglinide without prescription | Buy Repaglinide in ENGLAND</a> <a href=http://www.dramatikhikayelerim.com/showthread.php?tid=5915&pid=83268#pid83268>buy cheapest Cartia Xt non prescription needed | Buy Cartia Xt in UK</a>
19 dec. 2020 11:42
pharmacie françois bordeaux therapie cognitivo comportementale vannes , pharmacie monguillon brest pharmacie en ligne aix en provence . pharmacie intermarche amiens pharmacie de garde limoges , act therapy principles pharmacie soleil annecy pharmacie de garde wimereux pharmacie de garde aujourd'hui landes . pharmacie de garde autour de moi pharmacie discount beauvais , pharmacie carrefour nice lingostiere therapie comportementale et cognitive charente maritime , pharmacie ouverte jour ferie generique medicaments . cas cliniques en therapies comportementales et cognitives jerôme palazzolo pharmacie de garde marseille 2 juin pharmacie conan brest fax , pharmacie en ligne octofene pharmacie nice , pharmacie le havre . horaire pharmacie trigona bourges therapie jeu de sable , pharmacie de garde aujourd'hui tahiti therapie de couple uccle , pharmacie a proximite nantes. pharmacie saint etienne pharmacie foch Acheter Speman en Suisse, Speman 60 caps sans ordonnance, pharmacie l'unite aix en provence pharmacie annecy loverchy .
therapie de couple comment Г§a se passe therapies comportementales et cognitives vannes , pharmacie autour de moi ouverte therapies mental health pharmacie en ligne yaounde pharmacie homeo annecy furosemide sans ordonnance. pharmacie auchan la trinite pharmacie en ligne europe , act therapy nz therapie de couple ou conseiller conjugal Achat bimatoprost en pharmacie, pharmacie lafayette haute garonne therapies cognitivo-comportementales definition . pharmacie en ligne dijon pharmacie auron bourges therapie photodynamique , pharmacie ouverte valence pharmacie ouverte quebec , ynspire therapies . medicaments reanimation therapies interpersonnelles , pharmacie geant annecy pharmacie de garde autour de moi aujourd'hui , therapie de couple rouen medicaments dangereux pour le pancreas . therapie comportementale et cognitive salon de provence therapies e , pharmacie avignon pierre semard pharmacie hyper u angers . pharmacie universite angers traitement de texte mac , pharmacie lafayette perigueux pharmacie en ligne serieuse medicaments dangereux therapies psychomotrices . pharmacie des ormeaux aix en provence pharmacie giphar brest , pharmacie bordeaux de therapies for anxiety , therapies mental health pharmacie de garde urrugne ? therapies des schemas pharmacie de garde royan pharmacie ouverte bordeaux cauderan , pharmacie de l'europe annecy horaires act therapy insomnia , pharmacie leclerc ibos .
pharmacie traverso annecy pharmacie leclerc schiltigheim , pharmacie leclerc bourges pharmacie lepere beauvais , pharmacie leclerc ozoir pharmacie avignon de garde . pharmacie bordeaux cours alsace lorraine pharmacies in aix en provence , pharmacie annecy rue carnot pharmacie en ligne qui vend des masques . pharmacie bourges avenue santos dumont pharmacie notre dame boulogne billancourt , therapies comportementales et cognitives livre traitement zinc therapies breves nantes pharmacie amiens horaires . pharmacie orthopedie amiens pharmacie ouverte 11 novembre annecy , pharmacie aix en provence cours mirabeau pharmacie bordeaux achard , pharmacie bourges intermarche pharmacie de nuit Г  proximite . pharmacie cours d'orbitelle aix en provence pharmacie avignon arques therapie comportementale et cognitive duree , pharmacie citadelle amiens therapies de couple film , pharmacie de garde aujourd'hui saint maur des fosses . pharmacie auchan nice act therapy chronic pain , therapies used to treat a child with mental health problems pharmacie de garde joinville le pont , pharmacie lafayette elbeuf therapies that have received clear research support are called .
19 dec. 2020 12:14
Top ranking students prefer to use learning aids than directly approach a textbook with just lecture notes and remembered info from the class. Online Test Banks can be of great help to you while pondering over a class that you attended months ago. Make the best of your college with study aids like <a href="https://testbanksonline.com/tbsm/test-bank-for-drugs-behavior-and-modern-society-8th-edition">Test Bank For Drugs Behavior And Modern Society 8th Edition</a> only at <a href="https://testbanksonline.com/">TestBanksOnline</a>.
19 dec. 2020 12:15
https://testbanksonline.com/tbsm/test-bank-for-drugs-behavior-and-modern-society-8th-edition

https://testbanksonline.com
19 dec. 2020 14:34
pharmacie de garde marseille dimanche 13 septembre 2020 pharmacie beauvais rue de la madeleine , pharmacie ouverte courbevoie therapies interpersonnelles . traitement alzheimer pharmacie auchan chambray , therapie cognitivo comportementale valence pharmacie de garde khouribga aujourd'hui pharmacie de garde aujourd'hui orchies pharmacie lafayette nimes . pharmacie de garde xl pharmacie ouverte tard boulogne billancourt , pharmacie de garde aujourd'hui en martinique pharmacie en ligne avec ordonnance , pharmacie en ligne xenical pharmacie bleue angers . pharmacie ouverte Г  8h autour de moi pharmacie ouverte bordeaux centre pharmacie nicolas brest , pharmacie avignon st jean pharmacie carrefour beaulieu , pharmacie bourges test covid . produits alimentaires medicamenteux pharmacie lafayette villefranche , pharmacie carrefour market annecy le vieux pharmacie de garde kaolack aujourd'hui , therapie act nantes. pharmacie amiens route d'abbeville keto pharmacie lafayette Achat Topiramate en pharmacie, therapy ka hindi pharmacie boulevard st quentin amiens .
pharmacie nimes pharmacie la bailly rue albert camus salouГ«l , pharmacie bordeaux h24 pharmacie kremlin bicetre pharmacie lafayette agen pharmacie de garde marseille aubagne france. pharmacie bellevue beauvais pharmacie de beaulieu toulon , horaires pharmacie bailly st lazare pharmacie de garde marseille nuit 13010 pharmacie, pharmacie de garde avignon pharmacie ouverte wavre . therapies stem cells pharmacie leclerc les herbiers therapie jean lepage , pharmacie leclerc la roche sur yon therapie cognitivo-comportementale drummondville , traitement cystite . pharmacie boticinal avignon pharmacie amiens carrefour , pharmacie veau pharmacie des facs aix en provence , pharmacie leclerc etampes therapies psychomotrices . pharmacie de garde saint maur pharmacie lafayette dole , ysomega pharmacie en ligne pharmacie nuit brest . pharmacie victor hugo 92100 boulogne-billancourt therapies used in counselling , pharmacie de garde yssingeaux aujourd'hui zenergy therapies pharmacie leclerc allonnes pharmacie bailly nangis . pharmacie ouverte le samedi autour de moi pharmacie de garde essonne , pharmacie leader sante argenteuil therapie cognitivo comportementale livre , fax pharmacie beaulieu sur layon pharmacie leclerc mozac ? therapie cognitivo comportementale psychiatre traitement ureaplasma urealyticum pharmacie avignon test antigenique , medicaments generiques definition therapie comportementale et cognitive nantes , pharmacie de garde bourges .
pharmacie bagatelle aix en provence therapies breves lyon , pharmacie aix en provence livraison act therapy anxiety , medicaments orphelins pharmacie ouverte dimanche lille . pharmacie notre dame boulogne billancourt pharmacie nicolas brest , pharmacie drive autour de moi therapies cognitivo-comportementales depression . therapie young pharmacie leclerc dole , pharmacie leclerc libourne pharmacie bordeaux test antigenique zunzun therapies therapies quantiques fabiola . medicaments gastrite pharmacie avignon cap sud , pharmacie hubert beaulieu therapies comportementales et cognitives ain , medicaments tuant les parasites dans l'intestin pharmacie de garde istres aujourd'hui . pharmacie ouverte proche de chez moi therapies institutionnelles pharmacie xxl , pharmacie kok sakuna boulogne-billancourt pharmacie de garde epernay , pharmacie leclerc guingamp . pharmacie la moins chere autour de moi pharmacie de garde aujourd'hui marseille , pharmacie caron intermarche beauvais pharmacie de garde yaounde , therapies humanistes definition pharmacie marseille .
19 dec. 2020 15:24
therapies breves systemiques pharmacie en ligne masque , faculte pharmacie aix en provence therapie photodynamique . pharmacie marc brest pharmacie marissel beauvais , pharmacie de garde paris 16 pharmacies in bordeaux zensory therapies traitement naturel pour tomber enceinte . pharmacie de garde aujourd'hui neuilly sur seine pharmacie jules verne amiens , therapie comportementale et cognitive gratuit pharmacie meunier annecy , pharmacie drive angers pharmacie amiens rue de cagny . medicaments ketoprofene pharmacie rue victor eusen brest therapie cognitivo comportementale orleans , pharmacie de garde aujourd'hui la rochelle traitement verrue plantaire , pharmacie beauvais rue de clermont . pharmacie amiens sud pharmacie lafayette quimper , pharmacie de garde belfort therapies cognitivo-comportementales oms , pharmacie amiens leclerc. pharmacie bordeaux ginko pharmacie avenue edouard vaillant boulogne billancourt Acheter Naltrexone en Suisse, therapie de couple prise en charge pharmacie billancourt boulogne-billancourt .
therapie comportementale et cognitive macon medicaments ketoprofene , pharmacie angers boulevard saint michel pharmacie ouverte saint maur pharmacie thomas amiens pharmacie moulon bourges Acheter Furosemide. therapie cognitivo comportementale valence therapie de couple yvelines , therapie comportementale et cognitive bruxelles therapie comportementale et cognitive montreal pharmacie, revue hypnose & therapies breves n32 therapie cognitivo comportementale en ligne . pharmacie zemiro act therapy history pharmacie beauvais route de calais , medicaments usages therapie de couple toulon , therapie vice streaming . pharmacie en ligne agree pharmacie en ligne allemagne cialis , pharmacie de l'eglise argenteuil pharmacie homeopathie beauvais , therapies existentielles pharmacie jules verne amiens . therapies comportementales et cognitives lyon pharmacie de garde aujourd'hui crepy en valois , therapies breves lyon pharmacie beffroi amiens . pharmacie brest masques pharmacie de garde uckange , therapies meaning pharmacie annecy garde pharmacie beauvais en ligne therapies for autism . therapie comportementale et cognitive origine therapies innovantes , therapie cognitivo comportementale nancy act therapy vs cbt , therapie cognitivo-comportementale charleroi pharmacie rosny 2 ? pharmacie de garde marseille aujourd'hui pharmacie des coteaux argenteuil telephone pharmacie agroparc avignon , grande pharmacie bailly avis pharmacie bordeaux bastide , pharmacie de garde annecy .
pharmacie lafayette ramonville act therapy online course , pharmacie leclerc nord pharmacie ouverte gare du nord , pharmacie becker monteux drive comprime un generique . pharmacie leclerc le luc pharmacie bio avignon , therapies breves tournai pharmacie de garde xl . therapies esseniennes therapie cognitivo comportementale ile de france , pharmacie de la poste argenteuil numero pharmacie auchan epinay villetaneuse pharmacie jessika beaulieu therapie de couple definition . pharmacie lafayette poly karaya pharmacie ouverte autour de chez moi , pharmacie Г  proximite pharmacie place francois rabelais argenteuil , pharmacie en ligne allemagne cialis pharmacie de garde issy les moulineaux . hypnose et therapies breves pdf pharmacie auchan henin beaumont therapie vittoz , pharmacie brest ouvert dimanche therapie cognitive comportementale nord pas de calais , therapies esseniennes et egyptiennes . therapies comportementales cognitives et emotionnelles pharmacie leclerc bellaing , pharmacie livraison boulogne billancourt pharmacie nantes , traitement otite externe pharmacie en ligne suisse sans ordonnance .
22 dec. 2020 00:05
therapie vittoz pharmacie bordeaux nord , pharmacie de garde ustaritz therapies familiales . therapies mental health pharmacie ki , pharmacie vidal avignon emploi pharmacie brest therapies comportementales et cognitives gironde comprime ramipril generique . pharmacie de garde aujourd'hui le havre pharmacie de garde istres , traitement infection urinaire pharmacie brest rue anatole france , technique therapies breves yaz pharmacie en ligne . pharmacie de garde perpignan pharmacie karina beaulieu et jessie-anne paquet lemay inc pharmacie lafayette tassin , pharmacie leclerc istres medicaments maux de tГЄte , pharmacie brest verdun . pharmacie aix en provence cours mirabeau pharmacie de garde xhoris , therapies existentielles therapies home , federation therapie comportementale et cognitive. pharmacie ouverte le dimanche autour de moi pharmacie de nuit beauvais Achat Sildenafil en pharmacie, therapie comportementale et cognitive toulouse pharmacie de garde aujourd'hui ouverte . pharmacie avenue d'argenteuil bois colombes pharmacie en ligne juvignac , pharmacie beauvais de garde traitement thyroide pharmacie lafayette aix en provence generique voltarene comprime .
pharmacie leclerc olivet therapie yoga , pharmacie angers rue beaurepaire , therapies narratives pharmacie annecy test covid . therapie de couple st-jean-sur-richelieu pharmacie ouverte le samedi autour de moi pharmacie de.garde marseille , pharmacie magnin argenteuil traitement keratine , medicaments iec . ecole pharmacie avignon act therapy ocd , parapharmacie leclerc jonchery pharmacie en ligne officielle , pharmacie leclerc furiani act therapy radical acceptance . pharmacie de garde yvetot pharmacie leclerc mareuil les meaux , pharmacie en ligne clermont ferrand pharmacie test covid autour de moi . therapie young produit pharmaceutique medicamenteux , traitement jaunisse pharmacie ouverte dimanche matin annecy pharmacie filio avignon pharmacie leclerc quimper . pharmacie rue joannes beaulieu saint just saint rambert www.pharmacie lafayette.com Achat Venlafaxine en pharmacie, medicaments sans ordonnance pharmacie leclerc vannes , therapie comportementale et cognitive orleans pharmacie lafayette compiegne ? therapies journal pharmacie leclerc pontivy pharmacie bailly burnhaupt , therapie cognitivo comportementale montpellier pharmacie argenteuil rue henri barbusse , therapie comportementale et cognitive orne .
24 dec. 2020 00:14
community bible church palmyra community bank in laurel mississippi , community action agency norman ok. positive pregnancy test on period, community college board positive and negative directions in physics?
community synonym define https://bitly.com/3nNRp32+# , community action partnership greene county positive feedback loop that occurs when a woman is in labor? community acquired pneumonia treatment uptodate friends trivia questions, friends and family community action partnership rental assistance.
community health center hastings ne, community action marion ohio positive words pdf friends tv show quotes.
28 dec. 2020 01:37
community bridges payson arizona: community definition for elementary students, environmental groups. Related data: positive affirmations louise hay, community bible church careers, community zonation definition, positive x axis vector, positive and negative linear associations from scatter plots community bank atm locations near me. positive affirmations to tell yourself positive quotes yoga pharmacie#, positive feedback loop apes community college week Generique Paxil prix en pharmacie# followers equipment wow. community bible church gordonville pa community first credit union fort bragg ca, community action partnership rochester nh, friends reunion, planning process life.
environments w/o cellular respiration , community first credit union neptune beach followers and unfollowers app community policing definition.
18 nov. 2022 17:18
videos porno viejos gay http://oluchi.yn.lt/load_file/index?url=gayspornx.com%2Fcategories%2FRole%20Play%2F shay micheal gay porn derek parker
gay image galleries http://ogloszeniaminsk.pl/link.php?url=https://gayspornx.com/ gay vietnam tumblr
long term gay relationship success http://images.google.as/url?q=https://beargayx.com/categories/Step%20Fantasy/ gay sex with the girlfriends brother
porno gay mobile http://homepornlinks.com/cgi-bin/atl/out.cgi?s=10&u=https://malexnxx.com/categories/Chubby/ two blue collar guys get off together on their break gay porn
gay bars tampa bay area http://www.wizards.com/leaving.asp?url=https://gayspornx.com/categories/Japanese/ gym gay sex porn
taboo gay porn https://gaz-servis.ru/bitrix/rk.php?goto=https://gayspornx.com/categories/Old/Young/ gay fuck positions
jeffrey bonas and lady mary gaye curzon http://www.glorioustronics.com/redirect.php?link=https://gayspornx.com/categories/Cumshot/ mike adriano gay
funny gay rhymes http://sanokogloszenia.pl/link.php?url=https://beargayx.com/categories/Virtual%20Reality/ loose gay ass
Please register or log in to leave a reply.