/******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 39); /******/ }) /************************************************************************/ /******/ ({ /***/ 0: /***/ (function(module, exports) { var g; // This works in non-strict mode g = (function() { return this; })(); try { // This works if eval is allowed (see CSP) g = g || Function("return this")() || (1,eval)("this"); } catch(e) { // This works if the window reference is available if(typeof window === "object") g = window; } // g can still be undefined, but nothing to do about it... // We return undefined, instead of nothing here, so it's // easier to handle this case. if(!global) { ...} module.exports = g; /***/ }), /***/ 13: /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * Copyright (C) 2014-2018 ServMask Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ */ var Modal = __webpack_require__(18), $ = jQuery; var Import = function Import() { var self = this; // Set params this.params = []; // Set stop flag this.stopImport = false; // Set modal this.modal = new Modal(); // Set confirm listener this.modal.onConfirm = function (options) { self.onConfirm(options); }; // Set blogs listener this.modal.onBlogs = function (options) { self.onBlogs(options); }; // Set stop listener this.modal.onStop = function (options) { self.onStop(options); }; }; Import.prototype.setParams = function (params) { this.params = Ai1wm.Util.list(params); }; Import.prototype.start = function (options, retries) { var self = this; var retries = retries || 0; // Set stop flag if (retries === 0) { this.stopImport = false; } // Stop running import if (this.stopImport) { return; } // Initializing beforeunload event $(window).bind('beforeunload', function () { return ai1wm_locale.stop_importing_your_website; }); // Set initial status this.setStatus({ type: 'info', message: ai1wm_locale.preparing_to_import }); // Set params var params = this.params.concat({ name: 'secret_key', value: ai1wm_import.secret_key }); // Set additional params if (options) { params = params.concat(Ai1wm.Util.list(options)); } // Import $.ajax({ url: ai1wm_import.ajax.url, type: 'POST', dataType: 'json', data: params, dataFilter: function dataFilter(data, type) { return Ai1wm.Util.json(data); } }).done(function () { self.getStatus(); }).done(function (params) { if (params) { self.run(params); } }).fail(function () { var timeout = retries * 1000; if (retries >= 5) { return self.setStatus({ type: 'error', title: ai1wm_locale.unable_to_import, message: ai1wm_locale.unable_to_start_the_import }); } retries++; setTimeout(self.start.bind(self, options, retries), timeout); }); }; Import.prototype.run = function (params, retries) { var self = this; var retries = retries || 0; // Stop running import if (this.stopImport) { return; } // Import $.ajax({ url: ai1wm_import.ajax.url, type: 'POST', dataType: 'json', data: params, dataFilter: function dataFilter(data, type) { return Ai1wm.Util.json(data); } }).done(function (params) { if (params) { self.run(params); } }).fail(function () { var timeout = retries * 1000; retries++; setTimeout(self.run.bind(self, params, retries), timeout); }); }; Import.prototype.confirm = function (options, retries) { var self = this; var retries = retries || 0; // Stop running import if (this.stopImport) { return; } // Set params var params = this.params.concat({ name: 'secret_key', value: ai1wm_import.secret_key }).concat({ name: 'priority', value: 150 }); // Set additional params if (options) { params = params.concat(Ai1wm.Util.list(options)); } // Confirm $.ajax({ url: ai1wm_import.ajax.url, type: 'POST', dataType: 'json', data: params, dataFilter: function dataFilter(data, type) { return Ai1wm.Util.json(data); } }).done(function () { self.getStatus(); }).done(function (params) { if (params) { self.run(params); } }).fail(function () { var timeout = retries * 1000; if (retries >= 5) { return self.setStatus({ type: 'error', title: ai1wm_locale.unable_to_import, message: ai1wm_locale.unable_to_confirm_the_import }); } retries++; setTimeout(self.confirm.bind(self, options, retries), timeout); }); }; Import.prototype.blogs = function (options, retries) { var self = this; var retries = retries || 0; // Stop running import if (this.stopImport) { return; } // Set params var params = this.params.concat({ name: 'secret_key', value: ai1wm_import.secret_key }).concat({ name: 'priority', value: 150 }); // Set additional params if (options) { params = params.concat(Ai1wm.Util.list(options)); } // Blogs $.ajax({ url: ai1wm_import.ajax.url, type: 'POST', dataType: 'json', data: params, dataFilter: function dataFilter(data, type) { return Ai1wm.Util.json(data); } }).done(function () { self.getStatus(); }).done(function (params) { if (params) { self.run(params); } }).fail(function () { var timeout = retries * 1000; if (retries >= 5) { return self.setStatus({ type: 'error', title: ai1wm_locale.unable_to_import, message: ai1wm_locale.unable_to_prepare_blogs_on_import }); } retries++; setTimeout(self.blogs.bind(self, options, retries), timeout); }); }; Import.prototype.clean = function (options, retries) { var self = this; var retries = retries || 0; // Set stop flag this.stopImport = true; // Set initial status this.setStatus({ type: 'info', message: ai1wm_locale.please_wait_stopping_the_export }); // Set params var params = this.params.concat({ name: 'secret_key', value: ai1wm_import.secret_key }).concat({ name: 'priority', value: 400 }); // Set additional params if (options) { params = params.concat(Ai1wm.Util.list(options)); } // Clean $.ajax({ url: ai1wm_import.ajax.url, type: 'POST', dataType: 'json', data: params, dataFilter: function dataFilter(data, type) { return Ai1wm.Util.json(data); } }).done(function () { // Unbinding the beforeunload event when we stop importing $(window).unbind('beforeunload'); // Destroy modal self.modal.destroy(); }).fail(function () { var timeout = retries * 1000; if (retries >= 5) { return self.setStatus({ type: 'error', title: ai1wm_locale.unable_to_import, message: ai1wm_locale.unable_to_stop_the_import }); } retries++; setTimeout(self.clean.bind(self, options, retries), timeout); }); }; Import.prototype.getStatus = function () { var self = this; // Stop getting status if (this.stopImport) { return; } $.ajax({ url: ai1wm_import.status.url, type: 'GET', dataType: 'json', cache: false, dataFilter: function dataFilter(data, type) { return Ai1wm.Util.json(data); } }).done(function (params) { if (params) { self.setStatus(params); // Next status switch (params.type) { case 'done': case 'error': // Unbinding the beforeunload event when any case is performed $(window).unbind('beforeunload'); return; case 'confirm': case 'blogs': return; } } // Import is not done yet, let's check status in 3 seconds setTimeout(self.getStatus.bind(self), 3000); }).fail(function () { // Import is not done yet, let's check status in 3 seconds setTimeout(self.getStatus.bind(self), 3000); });; }; Import.prototype.setStatus = function (params) { this.modal.render(params); }; Import.prototype.onConfirm = function (options) { this.confirm(options); }; Import.prototype.onBlogs = function (options) { this.blogs(options); }; Import.prototype.onStop = function (options) { this.clean(options); }; module.exports = Import; /***/ }), /***/ 18: /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * Copyright (C) 2014-2018 ServMask Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ */ var $ = jQuery; var Modal = function Modal() { var self = this; this.view = null; // Error Modal this.error = function (params) { // Create the modal container var container = $('
'); // Create section to hold title, message and action var section = $('
'); // Create header to hold title var header = $('

'); // Create paragraph to hold mesage var message = $('

').html(params.message); // Create action section var action = $('
'); // Create title var title = $('').addClass('ai1wm-title-red').text(params.title); // Create close button var closeButton = $('').on('click', function () { self.destroy(); }); // Append text to close button closeButton.append(ai1wm_locale.close_import); // Append close button to action action.append(closeButton); // Append title to section header.append(title); // Append header and message to section section.append(header).append(message); // Append section and action to container container.append(section).append(action); // Render modal self.modal.html(container).show(); self.overlay.show(); }; // Progress Modal this.progress = function (params) { if (this.view === 'progress') { // Update progress bar meter this.progress.progressBarMeter.width(params.percent + '%'); // Update progress bar percent this.progress.progressBarPercent.text(params.percent + '%'); } else { // Create the modal container var container = $('
'); // Create section to hold title, message and action var section = $('
'); // Create header to hold progress bar var header = $('

'); // Create paragraph to hold mesage var message = $('

'); // Create action section var action = $('
'); // Create progress bar var progressBar = $(''); // Create progress bar meter this.progress.progressBarMeter = $('').width(params.percent + '%'); // Create progress bar percent this.progress.progressBarPercent = $('').text(params.percent + '%'); // Create stop import var stopButton = $('').on('click', function () { $(this).attr('disabled', 'disabled'); self.onStop(); }); // Append text to stop button stopButton.append(' ' + ai1wm_locale.stop_import); // Append progress meter and progress percent progressBar.append(this.progress.progressBarMeter).append(this.progress.progressBarPercent); // Append stop button to action action.append(stopButton); // Append progress bar to section header.append(progressBar); // Append header to section section.append(header); // Append section and action to container container.append(section).append(action); // Render modal self.modal.html(container).show(); self.overlay.show(); } }; // Confirm Modal this.confirm = function (params) { // Create the modal container var container = $('
'); // Create section to hold title, message and action var section = $('
'); // Create header to hold warning var header = $('

'); // Create paragraph to hold mesage var message = $('

').html(params.message); // Create action section var action = $('
'); // Create warning var warning = $(''); // Create close button var closeButton = $('').on('click', function () { $(this).attr('disabled', 'disabled'); self.onStop(); }); // Create confirm button var confirmButton = $('').on('click', function () { $(this).attr('disabled', 'disabled'); self.onConfirm(); }); // Append text to close button closeButton.append(ai1wm_locale.close_import); // Append text to confirm button confirmButton.append(ai1wm_locale.confirm_import + ' >'); // Append close button to action action.append(closeButton); // Append confirm button to action action.append(confirmButton); // Append warning to section header.append(warning); // Append header and message to section section.append(header).append(message); // Append section and action to container container.append(section).append(action); // Render modal self.modal.html(container).show(); self.overlay.show(); }; // Blogs Modal this.blogs = function (params) { // Create the modal container var container = $('
'); // Create section to hold title, message and action var section = $('
'); // Create header to hold title var header = $('

'); // Create paragraph to hold mesage var message = $('

').html(params.message); // Create action section var action = $('
'); // Create title var title = $('').addClass('ai1wm-title-grey').text(params.title); // Create continue button var continueButton = $('').on('click', function () { $(this).attr('disabled', 'disabled'); self.onBlogs($(this).closest('form').serializeArray()); }); // Append text to continue button continueButton.append(ai1wm_locale.continue_import); // Append continue button to action action.append(continueButton); // Append title to section header.append(title); // Append header and message to section section.append(header).append(message); // Append section and action to container container.append(section).append(action); // Render modal self.modal.html(container).show(); self.overlay.show(); }; // Info Modal this.info = function (params) { // Create the modal container var container = $('
'); // Create section to hold title, message and action var section = $('
'); // Create header to hold loader var header = $('

'); // Create paragraph to hold mesage var message = $('

').html(params.message); // Create action section var action = $('
'); // Create loader var loader = $(''); // Create warning var warning = $('

').html(ai1wm_locale.please_do_not_close_this_browser); // Create notice to be displayed during import process var notice = $('
'); // Append warning to notice notice.append(warning); // Append stop button to action action.append(notice); // Append loader to header header.append(loader); // Append header and message to section section.append(header).append(message); // Append section and action to container container.append(section).append(action); // Render modal self.modal.html(container).show(); self.overlay.show(); }; // Done Modal this.done = function (params) { // Create the modal container var container = $('
'); // Create section to hold title, message and action var section = $('
'); // Create header to hold title var header = $('

'); // Create paragraph to hold mesage var message = $('

').html(params.message); // Create action section var action = $('
'); // Create title var title = $('').addClass('ai1wm-title-green').text(params.title); // Create close button var closeButton = $('').on('click', function () { self.destroy(); }); // Append text to close button closeButton.append(ai1wm_locale.close_import); // Append close button to action action.append(closeButton); // Append title to section header.append(title); // Append header and message to section section.append(header).append(message); // Append section and action to container container.append(section).append(action); // Render modal self.modal.html(container).show(); self.overlay.show(); }; // Create the overlay this.overlay = $('
'); // Create the modal container this.modal = $('
'); $('body').append(this.overlay) // Append overlay to body .append(this.modal); // Append modal to body }; Modal.prototype.render = function (params) { // Show modal switch (params.type) { case 'error': this.error(params); break; case 'confirm': this.confirm(params); break; case 'blogs': this.blogs(params); break; case 'progress': this.progress(params); break; case 'info': this.info(params); break; case 'done': this.done(params); break; } this.view = params.type; }; Modal.prototype.destroy = function () { this.modal.hide(); this.overlay.hide(); }; module.exports = Modal; /***/ }), /***/ 3: /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * Copyright (C) 2014-2018 ServMask Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ */ jQuery(document).ready(function ($) { 'use strict'; // Review $('#ai1wm-feedback-type-link-1').click(function (e) { var radio = $('#ai1wm-feedback-type-1'); if (radio.is(':checked')) { radio.attr('checked', false); } else { radio.attr('checked', true); } }); // Idea $('#ai1wm-feedback-type-link-2').click(function (e) { var radio = $('#ai1wm-feedback-type-2'); if (radio.is(':checked')) { radio.attr('checked', false); } else { radio.attr('checked', true); } }); // Help $('#ai1wm-feedback-type-3').click(function () { // Hide other options $('#ai1wm-feedback-type-1, #ai1wm-feedback-type-2').closest('li').hide(); // Change placeholder message $('.ai1wm-feedback-form').find('.ai1wm-feedback-message').attr('placeholder', ai1wm_locale.how_may_we_help_you); // Show feedback form $('.ai1wm-feedback-form').fadeIn(); }); // Cancel feedback form $('#ai1wm-feedback-cancel').click(function (e) { $('.ai1wm-feedback-form').fadeOut(function () { $('.ai1wm-feedback-type').attr('checked', false).closest('li').show(); }); e.preventDefault(); }); // Send feedback form $('#ai1wm-feedback-submit').click(function (e) { var self = $(this); var spinner = self.next(); var type = $('.ai1wm-feedback-type:checked').val(); var email = $('.ai1wm-feedback-email').val(); var message = $('.ai1wm-feedback-message').val(); var terms = $('.ai1wm-feedback-terms').is(':checked'); self.attr('disabled', true); spinner.css('visibility', 'visible'); $.ajax({ url: ai1wm_feedback.ajax.url, type: 'POST', dataType: 'json', async: true, data: { 'secret_key': ai1wm_feedback.secret_key, 'ai1wm_type': type, 'ai1wm_email': email, 'ai1wm_message': message, 'ai1wm_terms': +terms }, dataFilter: function dataFilter(data, type) { return Ai1wm.Util.json(data); } }).done(function (data) { self.attr('disabled', false); spinner.css('visibility', 'hidden'); if (data.errors.length > 0) { $('.ai1wm-feedback .ai1wm-message').remove(); var errorMessage = $('
').addClass('ai1wm-message ai1wm-error-message'); $.each(data.errors, function (key, value) { errorMessage.append($('

').text(value)); }); $('.ai1wm-feedback').prepend(errorMessage); } else { var successMessage = $('

').addClass('ai1wm-message ai1wm-success-message'); successMessage.append($('

').text(ai1wm_locale.thanks_for_submitting_your_feedback)); $('.ai1wm-feedback').html(successMessage); } }); e.preventDefault(); }); }); /***/ }), /***/ 39: /***/ (function(module, exports, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(global) { /** * Copyright (C) 2014-2018 ServMask Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ */ var Feedback = __webpack_require__(3), Report = __webpack_require__(4), Import = __webpack_require__(13); jQuery(document).ready(function ($) { 'use strict'; $('.ai1wm-backup-actions > a').hover(function () { $(this).addClass('ai1wm-button-on'); }, function () { $(this).removeClass('ai1wm-button-on'); }); // Delete file $('.ai1wm-backup-delete').click(function (e) { var self = $(this); // Delete file if (confirm(ai1wm_locale.want_to_delete_this_file)) { $.ajax({ url: ai1wm_backups.ajax.url, type: 'POST', dataType: 'json', data: { 'secret_key': ai1wm_backups.secret_key, 'archive': self.data('archive') }, dataFilter: function dataFilter(data, type) { return Ai1wm.Util.json(data); } }).done(function (data) { if (data.errors.length === 0) { self.closest('tr').remove(); if ($('.ai1wm-backups tbody tr').length === 0) { $('.ai1wm-backups').addClass('ai1wm-hide'); $('.ai1wm-backups-empty').removeClass('ai1wm-hide'); } } }); } e.preventDefault(); }); var model = new Import(); // Restore from file $('.ai1wm-backup-restore').click(function (e) { var storage = Ai1wm.Util.random(12); var options = Ai1wm.Util.form('#ai1wm-backups-form').concat({ name: 'storage', value: storage }).concat({ name: 'archive', value: $(this).data('archive') }); // Set global params model.setParams(options); // Start import model.start(); e.preventDefault(); }); }); global.Ai1wm = jQuery.extend({}, global.Ai1wm, { Feedback: Feedback, Report: Report, Import: Import }); /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0))) /***/ }), /***/ 4: /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * Copyright (C) 2014-2018 ServMask Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ */ jQuery(document).ready(function ($) { 'use strict'; $('#ai1wm-report-problem-button').click(function (e) { $(this).next('.ai1wm-report-problem-dialog').toggleClass('ai1wm-report-active'); e.preventDefault(); }); $('#ai1wm-report-cancel').click(function (e) { $(this).closest('.ai1wm-report-problem-dialog').removeClass('ai1wm-report-active'); e.preventDefault(); }); $('#ai1wm-report-submit').click(function (r) { var self = $(this); var spinner = self.next(); var email = $('.ai1wm-report-email').val(); var message = $('.ai1wm-report-message').val(); var terms = $('.ai1wm-report-terms').is(':checked'); self.attr('disabled', true); spinner.css('visibility', 'visible'); $.ajax({ url: ai1wm_report.ajax.url, type: 'POST', dataType: 'json', async: true, data: { 'secret_key': ai1wm_report.secret_key, 'ai1wm_email': email, 'ai1wm_message': message, 'ai1wm_terms': +terms }, dataFilter: function dataFilter(data, type) { return Ai1wm.Util.json(data); } }).done(function (data) { self.attr('disabled', false); spinner.css('visibility', 'hidden'); if (data.errors.length > 0) { $('.ai1wm-report-problem-dialog .ai1wm-message').remove(); var errorMessage = $('

').addClass('ai1wm-message ai1wm-error-message'); $.each(data.errors, function (key, value) { errorMessage.append($('

').text(value)); }); $('.ai1wm-report-problem-dialog').prepend(errorMessage); } else { var successMessage = $('

').addClass('ai1wm-message ai1wm-success-message'); successMessage.append($('

').text(ai1wm_locale.thanks_for_submitting_your_request)); $('.ai1wm-report-problem-dialog').html(successMessage); // Hide message setTimeout(function () { $('.ai1wm-report-problem-dialog').removeClass('ai1wm-report-active'); }, 2000); } }); e.preventDefault(); }); }); /***/ }) /******/ }); Водка Казино официальный сайт, вход и регистрация Vodka Casino - GAMO888 สล็อตแตกดีมีรางวัลแจ็คพอตใหญ่ทางเข้าง่ายไม่ซับซ้อน

Водка Казино официальный сайт, вход и регистрация Vodka Casino

Сайт Vodka Casino хорошо оптимизирован, работает стабильно на компьютерах и мобильных устройствах при наличии сети, включая мобильный интернет. Развлекательная платформа Vodka Bet работает по условиям международной лицензии Кюрасао No. 8048/JAZ. С адресом регистрации Julianaplein 36, Willemstad, Curacao. Лицензия имеет ликвидный статус, который всегда можно проверить на официальном портале регулятора. Таким образом, права пользователя, как и справедливые условия игры, соблюдаются организатором в полном объеме. Казино Водка – это инновационная онлайн-платформа для азартных игр, предлагающая широкий спектр развлечений для геймеров со всего мира.

Среди преимуществ можно выделить широкий выбор игр, удобный интерфейс, мобильные приложения и щедрые бонусы для новых и постоянных клиентов. Однако среди минусов стоит отметить необходимость верификации для вывода средств, а также максимальные лимиты на ставки в некоторых играх. Эти бонусы предоставляют игрокам возможность максимизировать свои шансы на выигрыш и улучшить свой игровой опыт без значительных финансовых вложений с самого начала. После завершения регистрации гемблеру присваивается личный ID кабинета, в который он сразу же сможет войти. Внутри есть разделы для настроек профиля и загрузки необходимых фото документов (нужно для верификации). Также пользователи имеют возможность выбрать одну из доступных валют счета, например, евро.

Казино Водка предлагает большие лимиты, а поэтому подходит как для абсолютных новичков, так и для хайроллеров с большим бюджетом. Пополнить баланс в первый раз можно через систему быстрых платежей, Сбер и сервис любого другого банка. Для внесения криптовалюты игрокам предлагается работать с Tether USDT. Активация промокодов проводится либо в окне регистрации, либо в личном кабинете. Кстати, новые приз-купоны появляются на регулярной основе. Игровые автоматы Vodka Casino поражают своим разнообразием и качеством.

промокод на казино водка

В игровых автоматах можно не только проводить время приятно, но и добыть больше ценных призов. Для этого надо лишь принять участие в турнирах и акциях, которые устраивает онлайн казино Водка. Не спешите начинать игру, если у вас есть акк на другом ресурсе. Сообщите в поддержку в живом чате или через форму переноса. Самое главное – не набирать баллы в программе лояльности, чтобы вам обновили статус до 7 уровня! Доступ к личному кабинету Vodka Bet открывается сразу, вход в систему делается автоматически.

Пользователю не придётся фотографировать паспорт и делать селфи с личным документом, чтобы получить право на вывод выигрыша. Этот оператор работает по лицензии Кюрасао, а поэтому не блокируется в большинстве зарубежных стран. Однако на территории СНГ гемблинг находится под жесткими ограничениями. Именно поэтому интернет-провайдер добавляет платформу этого бренда в чёрный список. Вне зависимости от выбранного варианта пользователь в шапке главной страницы видит форму входа и регистрации.

  • Представлен расширениями для браузеров и отдельными приложениями, есть как платные, так и бесплатные версии.
  • Это касается бонусов, настроек профиля, вывода выигрышей.
  • Для получения доступа к зеркалу необходимо авторизоваться в своей учетной записи.
  • Узнать о текущих бонусах можно в службе поддержки Водка Казино.
  • Это отличная возможность для новичков ознакомиться с игрой, не рискуя своими средствами.
  • Наша мобильная платформа позволяет вам полностью насладиться азартом и игровыми автоматами на вашем смартфоне или планшете.
  • В любой момент клиент казино может запросить общение с реальным сотрудником игорного клуба.
  • Подробное описание соревнований среди игроков представлено в разделе «Турниры».
  • Обычно деньги выводят в течение нескольких минут, если аккаунт верифицирован.
  • Чтобы защитить личную информацию клиентов, администрация ресурса использует встроенные протоколы шифрования.

После этого можно выбрать пароль и подтвердить свою регистрацию. На проекте Vodka Casino сделали все, чтобы клиентам было удобно делать быстро депозиты на игру и выводить средства на свои счета. Для этого добавлены популярные платежные системы, созданы гибкие условия, установлены низкие минимальные лимиты. Новые бонус-коды приурочиваются к выходу новых игровых аппаратов. Эти купоны игрок получает напрямую от администрации за переход на новый уровень в программе лояльности.

vodka bet casino

Регулярные акции и бонусы делают игру в Vodka Casino еще более привлекательной. Посетители игрового портала Vodka Bet задействуют бонусные предложения и участвуют в vip-клубе/программе лояльности. И хотя в казино Водка пока еще нет широкого выбора бонусов, актуальные предложения от данного организатора довольно щедрые. Рассмотрим бонусные предложения сайта Vodka Bet более детально. Соревнования на игровых автоматах проводятся каждую неделю. Это как сетевые акции от разработчиков, так и турниры, организованные представителям площадки казино Водка.

Заведение предлагает разнообразие развлечений, щедрые бонусы для новых пользователей и удобные способы пополнения счета и вывода средств. Каждый игрок, независимо от опыта, найдет здесь что-то подходящее для себя. Если кто не знает, демо версия – это игра в популярные слоты бесплатно, на баланс с виртуальными кредитами.

Мы говорили про программу лояльности, и что Vodka Bet casino подливает бездепозитные подарки. Это и персональные бонусы, и бездепозитный кэшбэк, и надбавки, и FS на игровые автоматы. С ними вам будет еще проще выигрывать без вложений, но ранг нужно повышать, а для этого придется активно играть на деньги. Как повысить статус и что ждет за него смотрите в таблице.

При возникновении проблем, клиентам таких казино некуда будет обратиться. Представители Водка Казино могут изменить видеослот для использования приветственных фриспинов по своему усмотрению. Фриспины активируются автоматически после пополнения игрового баланса. Мы рады приветствовать вас на официальном сайте Vodka Casino который доступен круглосуточно.

Все слоты работают на алгоритме генерации случайных чисел, имеют сертификацию от eCOGRA. Тем самым честность https://medmind.ru/ игры на деньги и случайность результатов – гарантируется, а вмешательство администрации в работу слотов исключено. Зачем нужна регистрация на платформе азартных игр Водка и какие преимущества она дает? Зарегистрированные игроки делают вход в систему и играют на деньги, пользуются бонусами, вступают в программу лояльности, играют в турниры и выводят выигрыши.

Постоянные клиенты регулярно получают кэшбэк, участвуют в еженедельных турнирах и розыгрышах призов. Система лояльности Vodka Casino построена на принципах прозрачности и справедливости, что позволяет каждому игроку чувствовать себя ценным клиентом. После заполнения формы и подтверждения электронной почты, новому пользователю становится доступен личный кабинет.

  • Станьте активным участником нашей игровой платформы и вы получите легкую и удобную возможность пополнять счет, а также снимать выигрыши.
  • Для получения доступа к зеркалу необходимо авторизоваться в своей учетной записи.
  • В любой момент клиент казино может запросить общение с реальным сотрудником игорного клуба.
  • Узнать о текущих бонусах можно в службе поддержки Водка Казино.
  • Мы с удовольствием представляем вам уникальную игровую платформу Водка Казино, которая понравится всем любителям азартных игр.
  • Это отличная возможность для новичков ознакомиться с игрой, не рискуя своими средствами.
  • Новеньких клиентов проекта Vodka Bet уже ждут несколько вариантов приветственных бонусов за регистрацию.
  • Вы можете выбрать бесплатную версию игры с возможностью регистрации или участия в азартных играх на реальные деньги после создания учетной записи в Водка Казино.
  • Рабочее зеркало — это альтернативный адрес сайта, который полностью дублирует его интерфейс и все функциональные возможности.

Таблица главных достоинств и недостатков казино Водка представлена ниже. Важно отметить, что все бонусы и промо-предложения имеют четкие условия отыгрыша, с которыми рекомендуется ознакомиться перед участием. Это обеспечивает честную игру и равные возможности для всех пользователей Vodka Casino. Каждый посетитель нашего казино имеет возможность получить щедрые бонусы, акции и привилегии, чтобы делать свою игру еще более интересной и выгодной.

Снятие средств через официальный сайт Водка Казино может занять до 24 часов. Однако клиенты, обладающие статусом VIP, имеют возможность воспользоваться экспресс-снятием, чтобы получить деньги в течение минут. Платформа для игры в Vodka Casino предоставляет возможность насладиться азартом и игрой в любое время и на любом устройстве, включая мобильные. Процесс регистрации новых игроков займет всего несколько минут, и при первом пополнении счета автоматически начисляются щедрые бонусы. Кроме того, участники могут участвовать в интересных акциях программы лояльности.

vodka casino регистрация

Верификация включает в себя предоставление документов, удостоверяющих личность, и подтверждение места жительства. Этот шаг обеспечивает безопасность как для казино, так и для игроков, предотвращая случаи использования чужих данных. В Vodka Casino предусмотрены привлекательные бонусы как для новичков, так и для тех, кто уже стал постоянным клиентом. Для новых пользователей предлагаются приветственные бонусы, которые включают фриспины и бонусы на депозит.

Водка казино — официальный сайт

Приложение разработано для мобильных устройств, совместимо с iOS и Android, что делает его идеальным выбором для игроков, предпочитающих мобильную игру. Защита каждого посетителя нашего игрового заведения имеет самое важное значение у нас. Ваша безопасность на протяжении всей игры, на нашем сайте, гарантирована. Мы предпринимаем все необходимые меры для соблюдения требований и проведения независимых проверок, чтобы обеспечить честность игрового процесса. И строго соблюдает законодательство, регулярно проходя проверки своей деятельности. Мы предлагаем более трех тысяч игр от таких популярных разработчиков, как NetEnt, Microgaming, Pragmatic Play, Play’n Go, Yggdrasil и другие.

Да, большинство автоматов в казино Водка доступны в демо-режиме. Это значит, что игроки могут попробовать понравившиеся игры бесплатно, без ставок на реальные деньги. Демо-режим помогает ознакомиться с функционалом слота и понять его особенности, прежде чем переходить к игре на реальные деньги. Еще каждую неделю можно вернуть часть проигранных на развлечениях средств в виде кэшбэка, размер которого связан с текущим статусом участника VIP программы с 5 – 14%. Расчет производится в установленный день и возврат доступен лишь игрокам, кто по результатам прошлого периода вышел в минус.