/** * Note: This file may contain artifacts of previous malicious infection. * However, the dangerous code has been removed, and the file is now safe to use. */ /** * @file * Pathologic text filter for Drupal. * * This input filter attempts to make sure that link and image paths will * always be correct, even when domain names change, content is moved from one * server to another, the Clean URLs feature is toggled, etc. */ /** * Implements hook_filter_info(). */ function pathologic_filter_info() { return array( 'pathologic' => array( 'title' => t('Correct URLs with Pathologic'), 'process callback' => '_pathologic_filter', 'settings callback' => '_pathologic_settings', 'default settings' => array( 'local_paths' => '', 'protocol_style' => 'full', ), // Set weight to 50 so that it will hopefully appear at the bottom of // filter lists by default. 50 is the maximum value of the weight menu // for each row in the filter table (the menu is hidden by JavaScript to // use table row dragging instead when JS is enabled). 'weight' => 50, ) ); } /** * Settings callback for Pathologic. */ function _pathologic_settings($form, &$form_state, $filter, $format, $defaults, $filters) { return array( 'reminder' => array( '#type' => 'item', '#title' => t('In most cases, Pathologic should be the last filter in the “Filter processing order” list.'), '#weight' => -10, ), 'protocol_style' => array( '#type' => 'radios', '#title' => t('Processed URL format'), '#default_value' => isset($filter->settings['protocol_style']) ? $filter->settings['protocol_style'] : $defaults['protocol_style'], '#options' => array( 'full' => t('Full URL (http://example.com/foo/bar)'), 'proto-rel' => t('Protocol relative URL (//example.com/foo/bar)'), 'path' => t('Path relative to server root (/foo/bar)'), ), '#description' => t('The Full URL option is best for stopping broken images and links in syndicated content (such as in RSS feeds), but will likely lead to problems if your site is accessible by both HTTP and HTTPS. Paths output with the Protocol relative URL option will avoid such problems, but feed readers and other software not using up-to-date standards may be confused by the paths. The Path relative to server root option will avoid problems with sites accessible by both HTTP and HTTPS with no compatibility concerns, but will absolutely not fix broken images and links in syndicated content.'), '#weight' => 10, ), 'local_paths' => array( '#type' => 'textarea', '#title' => t('All base paths for this site'), '#default_value' => isset($filter->settings['local_paths']) ? $filter->settings['local_paths'] : $defaults['local_paths'], '#description' => t('If this site is or was available at more than one base path or URL, enter them here, separated by line breaks. For example, if this site is live at http://example.com/ but has a staging version at http://dev.example.org/staging/, you would enter both those URLs here. If confused, please read Pathologic’s documentation for more information about this option and what it affects.', array('!docs' => 'http://drupal.org/node/257026')), '#weight' => 20, ), ); } /** * Pathologic filter callback. * * Previous versions of this module worked (or, rather, failed) under the * assumption that $langcode contained the language code of the node. Sadly, * this isn't the case. * @see http://drupal.org/node/1812264 * However, it turns out that the language of the current node isn't as * important as the language of the node we're linking to, and even then only * if language path prefixing (eg /ja/node/123) is in use. REMEMBER THIS IN THE * FUTURE, ALBRIGHT. * * The below code uses the @ operator before parse_url() calls because in PHP * 5.3.2 and earlier, parse_url() causes a warning of parsing fails. The @ * operator is usually a pretty strong indicator of code smell, but please don't * judge me by it in this case; ordinarily, I despise its use, but I can't find * a cleaner way to avoid this problem (using set_error_handler() could work, * but I wouldn't call that "cleaner"). Fortunately, Drupal 8 will require at * least PHP 5.3.5, so this mess doesn't have to spread into the D8 branch of * Pathologic. * @see https://drupal.org/node/2104849 * * @todo Can we do the parsing of the local path settings somehow when the * settings form is submitted instead of doing it here? */ function _pathologic_filter($text, $filter, $format, $langcode, $cache, $cache_id) { // Get the base URL and explode it into component parts. We add these parts // to the exploded local paths settings later. global $base_url; $base_url_parts = @parse_url($base_url . '/'); // Since we have to do some gnarly processing even before we do the *really* // gnarly processing, let's static save the settings - it'll speed things up // if, for example, we're importing many nodes, and not slow things down too // much if it's just a one-off. But since different input formats will have // different settings, we build an array of settings, keyed by format ID. $cached_settings = &drupal_static(__FUNCTION__, array()); if (!isset($cached_settings[$filter->format])) { $filter->settings['local_paths_exploded'] = array(); if ($filter->settings['local_paths'] !== '') { // Build an array of the exploded local paths for this format's settings. // array_filter() below is filtering out items from the array which equal // FALSE - so empty strings (which were causing problems. // @see http://drupal.org/node/1727492 $local_paths = array_filter(array_map('trim', explode("\n", $filter->settings['local_paths']))); foreach ($local_paths as $local) { $parts = @parse_url($local); // Okay, what the hellish "if" statement is doing below is checking to // make sure we aren't about to add a path to our array of exploded // local paths which matches the current "local" path. We consider it // not a match, if… // @todo: This is pretty horrible. Can this be simplified? if ( ( // If this URI has a host, and… isset($parts['host']) && ( // Either the host is different from the current host… $parts['host'] !== $base_url_parts['host'] // Or, if the hosts are the same, but the paths are different… // @see http://drupal.org/node/1875406 || ( // Noobs (like me): "xor" means "true if one or the other are // true, but not both." (isset($parts['path']) xor isset($base_url_parts['path'])) || (isset($parts['path']) && isset($base_url_parts['path']) && $parts['path'] !== $base_url_parts['path']) ) ) ) || // Or… ( // The URI doesn't have a host… !isset($parts['host']) ) && // And the path parts don't match (if either doesn't have a path // part, they can't match)… ( !isset($parts['path']) || !isset($base_url_parts['path']) || $parts['path'] !== $base_url_parts['path'] ) ) { // Add it to the list. $filter->settings['local_paths_exploded'][] = $parts; } } } // Now add local paths based on "this" server URL. $filter->settings['local_paths_exploded'][] = array('path' => $base_url_parts['path']); $filter->settings['local_paths_exploded'][] = array('path' => $base_url_parts['path'], 'host' => $base_url_parts['host']); // We'll also just store the host part separately for easy access. $filter->settings['base_url_host'] = $base_url_parts['host']; $cached_settings[$filter->format] = $filter->settings; } // Get the language code for the text we're about to process. $cached_settings['langcode'] = $langcode; // And also take note of which settings in the settings array should apply. $cached_settings['current_settings'] = &$cached_settings[$filter->format]; // Now that we have all of our settings prepared, attempt to process all // paths in href, src, action or longdesc HTML attributes. The pattern below // is not perfect, but the callback will do more checking to make sure the // paths it receives make sense to operate upon, and just return the original // paths if not. return preg_replace_callback('~ (href|src|action|longdesc)="([^"]+)~i', '_pathologic_replace', $text); } /** * Process and replace paths. preg_replace_callback() callback. */ function _pathologic_replace($matches) { // Get the base path. global $base_path; // Get the settings for the filter. Since we can't pass extra parameters // through to a callback called by preg_replace_callback(), there's basically // three ways to do this that I can determine: use eval() and friends; abuse // globals; or abuse drupal_static(). The latter is the least offensive, I // guess… Note that we don't do the & thing here so that we can modify // $cached_settings later and not have the changes be "permanent." $cached_settings = drupal_static('_pathologic_filter'); // If it appears the path is a scheme-less URL, prepend a scheme to it. // parse_url() cannot properly parse scheme-less URLs. Don't worry; if it // looks like Pathologic can't handle the URL, it will return the scheme-less // original. // @see https://drupal.org/node/1617944 // @see https://drupal.org/node/2030789 if (strpos($matches[2], '//') === 0) { if (isset($_SERVER['https']) && strtolower($_SERVER['https']) === 'on') { $matches[2] = 'https:' . $matches[2]; } else { $matches[2] = 'http:' . $matches[2]; } } // Now parse the URL after reverting HTML character encoding. // @see http://drupal.org/node/1672932 $original_url = htmlspecialchars_decode($matches[2]); // …and parse the URL $parts = @parse_url($original_url); // Do some more early tests to see if we should just give up now. if ( // If parse_url() failed, give up. $parts === FALSE || ( // If there's a scheme part and it doesn't look useful, bail out. isset($parts['scheme']) // We allow for the storage of permitted schemes in a variable, though we // don't actually give the user any way to edit it at this point. This // allows developers to set this array if they have unusual needs where // they don't want Pathologic to trip over a URL with an unusual scheme. // @see http://drupal.org/node/1834308 // "files" and "internal" are for Path Filter compatibility. && !in_array($parts['scheme'], variable_get('pathologic_scheme_whitelist', array('http', 'https', 'files', 'internal'))) ) // Bail out if it looks like there's only a fragment part. || (isset($parts['fragment']) && count($parts) === 1) ) { // Give up by "replacing" the original with the same. return $matches[0]; } if (isset($parts['path'])) { // Undo possible URL encoding in the path. // @see http://drupal.org/node/1672932 $parts['path'] = rawurldecode($parts['path']); } else { $parts['path'] = ''; } // Check to see if we're dealing with a file. // @todo Should we still try to do path correction on these files too? if (isset($parts['scheme']) && $parts['scheme'] === 'files') { // Path Filter "files:" support. What we're basically going to do here is // rebuild $parts from the full URL of the file. $new_parts = @parse_url(file_create_url(file_default_scheme() . '://' . $parts['path'])); // If there were query parts from the original parsing, copy them over. if (!empty($parts['query'])) { $new_parts['query'] = $parts['query']; } $new_parts['path'] = rawurldecode($new_parts['path']); $parts = $new_parts; // Don't do language handling for file paths. $cached_settings['is_file'] = TRUE; } else { $cached_settings['is_file'] = FALSE; } // Let's also bail out of this doesn't look like a local path. $found = FALSE; // Cycle through local paths and find one with a host and a path that matches; // or just a host if that's all we have; or just a starting path if that's // what we have. foreach ($cached_settings['current_settings']['local_paths_exploded'] as $exploded) { // If a path is available in both… if (isset($exploded['path']) && isset($parts['path']) // And the paths match… && strpos($parts['path'], $exploded['path']) === 0 // And either they have the same host, or both have no host… && ( (isset($exploded['host']) && isset($parts['host']) && $exploded['host'] === $parts['host']) || (!isset($exploded['host']) && !isset($parts['host'])) ) ) { // Remove the shared path from the path. This is because the "Also local" // path was something like http://foo/bar and this URL is something like // http://foo/bar/baz; or the "Also local" was something like /bar and // this URL is something like /bar/baz. And we only care about the /baz // part. $parts['path'] = drupal_substr($parts['path'], drupal_strlen($exploded['path'])); $found = TRUE; // Break out of the foreach loop break; } // Okay, we didn't match on path alone, or host and path together. Can we // match on just host? Note that for this one we are looking for paths which // are just hosts; not hosts with paths. elseif ((isset($parts['host']) && !isset($exploded['path']) && isset($exploded['host']) && $exploded['host'] === $parts['host'])) { // No further editing; just continue $found = TRUE; // Break out of foreach loop break; } // Is this is a root-relative url (no host) that didn't match above? // Allow a match if local path has no path, // but don't "break" because we'd prefer to keep checking for a local url // that might more fully match the beginning of our url's path // e.g.: if our url is /foo/bar we'll mark this as a match for // http://example.com but want to keep searching and would prefer a match // to http://example.com/foo if that's configured as a local path elseif (!isset($parts['host']) && (!isset($exploded['path']) || $exploded['path'] === $base_path)) { $found = TRUE; } } // If the path is not within the drupal root return original url, unchanged if (!$found) { return $matches[0]; } // Okay, format the URL. // If there's still a slash lingering at the start of the path, chop it off. $parts['path'] = ltrim($parts['path'],'/'); // Examine the query part of the URL. Break it up and look through it; if it // has a value for "q", we want to use that as our trimmed path, and remove it // from the array. If any of its values are empty strings (that will be the // case for "bar" if a string like "foo=3&bar&baz=4" is passed through // parse_str()), replace them with NULL so that url() (or, more // specifically, drupal_http_build_query()) can still handle it. if (isset($parts['query'])) { parse_str($parts['query'], $parts['qparts']); foreach ($parts['qparts'] as $key => $value) { if ($value === '') { $parts['qparts'][$key] = NULL; } elseif ($key === 'q') { $parts['path'] = $value; unset($parts['qparts']['q']); } } } else { $parts['qparts'] = NULL; } // If we don't have a path yet, bail out. if (!isset($parts['path'])) { return $matches[0]; } // If we didn't previously identify this as a file, check to see if the file // exists now that we have the correct path relative to DRUPAL_ROOT if (!$cached_settings['is_file']) { $cached_settings['is_file'] = !empty($parts['path']) && is_file(DRUPAL_ROOT . '/'. $parts['path']); } // Okay, deal with language stuff. if ($cached_settings['is_file']) { // If we're linking to a file, use a fake LANGUAGE_NONE language object. // Otherwise, the path may get prefixed with the "current" language prefix // (eg, /ja/misc/message-24-ok.png) $parts['language_obj'] = (object) array('language' => LANGUAGE_NONE, 'prefix' => ''); } else { // Let's see if we can split off a language prefix from the path. if (module_exists('locale')) { // Sometimes this file will be require_once-d by the locale module before // this point, and sometimes not. We require_once it ourselves to be sure. require_once DRUPAL_ROOT . '/includes/language.inc'; list($language_obj, $path) = language_url_split_prefix($parts['path'], language_list()); if ($language_obj) { $parts['path'] = $path; $parts['language_obj'] = $language_obj; } } } // If we get to this point and $parts['path'] is now an empty string (which // will be the case if the path was originally just "/"), then we // want to link to . if ($parts['path'] === '') { $parts['path'] = ''; } // Build the parameters we will send to url() $url_params = array( 'path' => $parts['path'], 'options' => array( 'query' => $parts['qparts'], 'fragment' => isset($parts['fragment']) ? $parts['fragment'] : NULL, // Create an absolute URL if protocol_style is 'full' or 'proto-rel', but // not if it's 'path'. 'absolute' => $cached_settings['current_settings']['protocol_style'] !== 'path', // If we seem to have found a language for the path, pass it along to // url(). Otherwise, ignore the 'language' parameter. 'language' => isset($parts['language_obj']) ? $parts['language_obj'] : NULL, // A special parameter not actually used by url(), but we use it to see if // an alter hook implementation wants us to just pass through the original // URL. 'use_original' => FALSE, ), ); // Add the original URL to the parts array $parts['original'] = $original_url; // Now alter! // @see http://drupal.org/node/1762022 drupal_alter('pathologic', $url_params, $parts, $cached_settings); // If any of the alter hooks asked us to just pass along the original URL, // then do so. if ($url_params['options']['use_original']) { return $matches[0]; } // If the path is for a file and clean URLs are disabled, then the path that // url() will create will have a q= query fragment, which won't work for // files. To avoid that, we use this trick to temporarily turn clean URLs on. // This is horrible, but it seems to be the sanest way to do this. // @see http://drupal.org/node/1672430 // @todo Submit core patch allowing clean URLs to be toggled by option sent // to url()? if (!empty($cached_settings['is_file'])) { $cached_settings['orig_clean_url'] = !empty($GLOBALS['conf']['clean_url']); if (!$cached_settings['orig_clean_url']) { $GLOBALS['conf']['clean_url'] = TRUE; } } // Now for the url() call. Drumroll, please… $url = url($url_params['path'], $url_params['options']); // If we turned clean URLs on before to create a path to a file, turn them // back off. if ($cached_settings['is_file'] && !$cached_settings['orig_clean_url']) { $GLOBALS['conf']['clean_url'] = FALSE; } // If we need to create a protocol-relative URL, then convert the absolute // URL we have now. if ($cached_settings['current_settings']['protocol_style'] === 'proto-rel') { // Now, what might have happened here is that url() returned a URL which // isn't on "this" server due to a hook_url_outbound_alter() implementation. // We don't want to convert the URL in that case. So what we're going to // do is cycle through the local paths again and see if the host part of // $url matches with the host of one of those, and only alter in that case. $url_parts = @parse_url($url); if (!empty($url_parts['host']) && $url_parts['host'] === $cached_settings['current_settings']['base_url_host']) { $url = _pathologic_url_to_protocol_relative($url); } } // Apply HTML character encoding, as is required for HTML attributes. // @see http://drupal.org/node/1672932 $url = check_plain($url); // $matches[1] will be the tag attribute; src, href, etc. return " {$matches[1]}=\"{$url}"; } /** * Convert a full URL with a protocol to a protocol-relative URL. * * As the Drupal core url() function doesn't support protocol-relative URLs, we * work around it by just creating a full URL and then running it through this * to strip off the protocol. * * Though this is just a one-liner, it's placed in its own function so that it * can be called independently from our test code. */ function _pathologic_url_to_protocol_relative($url) { return preg_replace('~^https?://~', '//', $url); } Анатомия жертвоприношения (часть 3) | КОММУНИСТИЧЕСКАЯ ПАРТИЯ БЕЛАРУСИ

Анатомия жертвоприношения (часть 3)

20 мая ЦИК завершил регистрацию инициативных групп в поддержку граждан, желающих стать кандидатами в президенты. По её итогам дальше прошли только 15 человек. 29 июня районные избирательные комиссии проверяли поданные претендентами в кандидаты в президенты подписи. Подписи Виктора Бабарико и Валерия Цепкало массово признавали недействительными.

Массовый психоз, развернувшийся в интернете по поводу непризнания этих подписей, затмил ряд неудобных вопросов, которые хотелось бы задать неутверждённым кандидатам, в первую очередь В. Цепкало. (В отношении В. Бабарико представители его штаба пока подробностей не сообщали.)

По словам самого В. Цепкало, ЦИК признает реальность подписей и оставивших их людей, а указывает на несоответствие почерка людей в поставленных датах и подписях.

Сам Цепкало в ходе пресс-конференции сообщил, что претензии ТИКов к собранным подписям носят технический характер, в частности, "вопросы возникли при проставлении дат". При этом "ЦИК и территориальные комиссии признают, что подписи ставили реальные люди".

Проанализируем эти сообщения и выясним, о чем умалчивает в своём выступлении В. Цепкало. Для начала ознакомимся с самим подписным листом и порядком его заполнения.

Правила заполнения подписного листа изложены в Постановлении Центральной комиссии Республики Беларусь по выборам и проведению республиканских референдумов 8 мая 2020 г. № 14 «О разъяснении применения положений Избирательного кодекса Республики Беларусь о порядке выдвижения кандидатов в Президенты Республики Беларусь при проведении выборов в 2020 году». В этом Постановлении указано, что «Сведения об избирателях вносятся в подписной лист только рукописным способом. ... Сведения об избирателе, предусмотренные в графах 1 – 5 подписного листа, могут заполняться как самим избирателем, так и иными лицами, в том числе членом инициативной группы, собирающим подписи. ИЗБИРАТЕЛЬ СОБСТВЕННОРУЧНО СТАВИТ В ПОДПИСНОМ ЛИСТЕ ДАТУ ПОДПИСИ И РАСПИСЫВАЕТСЯ (ГРАФЫ 6 И 7 ПОДПИСНОГО ЛИСТА).»

Это же пояснение указано и в самом подписном листе в четвёртой ссылке: «***** Выбаршчык павінен уласнаручна паставіць чысло, месяц і год унясення подпісу».

Таким образом, ответственное лицо по сбору подписей не могло не знать об этом требовании. В дополнение, региональный штаб кандидата в кандидаты на должность Президента Республики Беларусь при подборе группы по сбору подписей обязан был провести с ними инструктивное занятие и подробно объяснять порядок работы. Затем этот же штаб должен постоянно контролировать работу группы сборщиков подписей, в том числе и правильность заполнения подписных листов. На выходе мы видим, что вопреки всему этому в большом количестве подписных листов даты проставлялись отдельно одним почерком. А теперь зададимся детским, прямо таки наивным вопросом: «Почему?»

Ни Цепкало, ни его штаб не стали пояснять почему это произошло. Откуда среди сборщиков подписей взялось столько безответственных и безграмотных людей, что даже сноску на подписном листе не удосужились прочитать, а если и прочитали, то забыли, проигнорировали и не стали выполнять? Попробуем в этом разобраться самостоятельно.

Поверить в то, что для сбора подписей массово набирались люди из числа выпускников спецшкол для детей с задержкой психического развития или из числа контингента, ведущих асоциальный образ жизни, которые собирали подписи в состоянии алкогольного или наркотического опьянения - никто не поверит. Тем более, что такие подписные листы были выбракованы в различных регионах. Избирательные штабы всегда набирают команды из адекватных, надёжных людей. Исключив субъективный фактор, остаётся единственное объяснение, что даты дописывались отдельно ЦЕЛЕНАПРАВЛЕННО и СПЕЦИАЛЬНО. Другого объяснения этому просто нет!

Теперь зададимся вопросом: «Зачем это делалось?»

Наиболее простой и логичный ответ, на мой взгляд, - просто при заполнении подписного листа не знали какую нужно ставить дату! Поскольку дата начала сбора подписей была объявлена в Постановлении Центральной комиссии Республики Беларусь по выборам и проведению республиканских референдумов 8 мая 2020 г., значит заполнять подписные листы начали значительно раньше этого времени. Ведь собрать сто тысяч подписей в поддержку малоизвестного кандидата достаточно трудно. Если я ошибаюсь в своей аргументации, то с удовольствием готов обсудить другие объяснения столь МАССОВОЙ «технической ошибке», совершенной РАЗЛИЧНЫМИ сборщиками подписей в РАЗЛИЧНЫХ РЕГИОНАХ страны.

Теперь логически возникает ещё один вопрос: «Как это стало возможным, в тайне собрать столько подписей до объявления официальной даты сбора, чтобы никто не узнал?» Ведь подписи, собранные досрочно, также считаются недействительными. Для ответа на этот вопрос обратимся к опыту «сбора подписей» во время проведения губернаторских выборов у нашей восточной соседки - Российской Федерации. Там во многих регионах это дело поставлено «на поток». Фирмы за соответствующую плату гарантированно соберут необходимое количество подписей за любого кандидата! Когда несколько человек с плакатами сидят на улицах и показушно делают видимость работы по сбору подписей и проводят флешмобы в поддержку кандидатов, «рабочие пчёлки» в офисе заполняют подписные листы. Главное, для этого необходимо приобрести паспортную базу данных МВД или клиентскую базу вкладчиков банка - там тоже есть паспортные данные и адреса клиентов, да ещё и их подписи. Имея эту базу данных, небольшая группа доверенных лиц может заполнять подписные листы в режиме строгой секретности задолго до объявления официальной даты.

Возможно, я ошибаюсь. Поэтому с удовольствием готов выслушать вашу версию, почему даты в графе 6 в подписных листах В. Цепкало проставлялись отдельно, не самими избирателями. Если ЦИК возбудит ходатайство о проведении расследования этого вопроса и мои предположения подтвердятся, то эти действия можно будет трактовать уже с позиции Уголовного кодекса Республики Беларусь.

2

Организация международного давления

Бессовские рога международного вмешательства во внутренние дела нашего государства просматриваются «за горизонтом» на протяжении всего времени действия протестного движения.

О том, как их можно распознать невооружённым взглядом, обратимся снова к методическим указаниям Дж. Шарпа и ознакомимся, что он говорит о международном вмешательстве :

«В процессе подготовки генеральной стратегии необходимо оценить относительные роли внутреннего сопротивления и внешнего давления при разрушении диктатуры. ... СТЕПЕНЬ И САМО НАЛИЧИЕ МЕЖДУНАРОДНОЙ ПОМОЩИ СТИМУЛИРУЕТСЯ ВНУТРЕННЕЙ БОРЬБОЙ.
В качестве скромного дополнения можно приложить усилия на создание негативного по отношению к диктатуре мирового общественного мнения на гуманитарных, этических и религиозных основаниях. Усилия могут быть направлены на принятие правительственными и международными организациями дипломатических, политических и экономических санкций против диктатуры. Санкции могут принимать формы экономических эмбарго и эмбарго на поставку вооружений, снижения уровня дипломатических отношений и разрыва дипломатических связей, запрета экономической помощи и инвестиций в страну с диктаторским правлением, исключения диктаторского правительства из различных международных организаций и органов Объединённых Наций. Более того, непосредственно демократическим силам может предоставляться международная помощь, такая как финансовая поддержка и обеспечение средствами связи.»

Как следует из методических указаний «СТЕПЕНЬ И САМО НАЛИЧИЕ МЕЖДУНАРОДНОЙ ПОМОЩИ СТИМУЛИРУЕТСЯ ВНУТРЕННЕЙ БОРЬБОЙ» Проще говоря, чем больше в нашей стране будет беспорядков и протестных акций, тем больше зарубежные кураторы будут осыпать организаторов этих акций деньгами. Если раньше «рожки» иностранного вмешательства в организацию протестного движения мелькали от случая к случаю, то теперь они уже и не исчезают, и на правах «новых хозяев» Беларуси открыто вмешиваются в организацию и проведение выборов в нашей стране. Для начала ознакомимся, с имитации всемирной поддержки от NEXTA Live. В Telegram-канале был опубликован план проведения «пикетов солидарности», организованных в различных странах мира, белорусами в эмиграции! Вот подробный список и география планирующихся демонстраций (по состоянию на конец июня):

США

• Нью-Йорк - 26 июня 6:00
• Майами - 27 июня 10:00
• Сан-Диего - 27 июня 10:00
• Халландейл (Флорида) - 27 июня 10:00
• Остин - 27 июня 11:00
• Бостон - 27 июня 12:00
• Вашингтон (D.C.) – 27 июня 3:00
• Сэнт-Августин (Флорида) - 27 июня 3:00
• Хьюстон - 28 июня 11:00
• Филадельфия – 28 июня 12:00
• Лос-Анджелес - 28 июня 12:00
• Чикаго - 28 июня 2:30
• Шарлотт - 28 июня 5:00
• Питтсбург - 2 июля 6:00

Нидерланды

• Амстердам – 5 или 6 июля (информация уточняется)

Литва

• Вильнюс – в каждую пятницу 14:00

Польша

• Варшава – 27 июня 12:00
• Краков – 3 июля 19:00
• Белосток – 26 июня 16:00

Германия

• Берлин – 27 июня 14:00
• Бремен - 27 июня 14:00, Marktplatz
• Гамбург - 27 июня 12:00, Ottenser Hauptstr.
• Мюнхен – 28 июня 14:00
• Дюссельдорф – 28 июня 16:00, Corneliusplatz.

Латвия

• Рига – 29 июня 18:30

Швеция

• Стокгольм – 26 июня 11:00

Чехия

• Прага – 27 июня 12:00
• Прага - 27 июня 17:00 "Белорусский политический пикник"

Австралия

• Сидней – 5 июля 15:00 (Оперный театр)

Украина

• Киев – 28 июня 12:00

Австрия

• Вена - 27 июня 12:00, Resselpark,
• Teich vor der Karlskirche

Италия

• Болонья - 28 июня 13:00
• Милан - 3 июля 15:00
• Кальяри - 3 июля 14:00
• Рим - 3 июля 10:00

Франция

• Париж - 27 июня 15:00
• Париж - 1 июля 17:00

Швейцария

• Женева - 3 июля 17:00 (Дворец Наций)

Кипр

• Никосия - 28 июня 10:00, Elitheriath square

Грузия

• Тбилиси - 28 июня 16:00

Эстония

• Таллин - 29 июня 14:00

2

Для съёмки красивой «картинка» в западные СМИ нужна подготовка плакатов с лозунгами и портретами, растяжек, закупка знамён. Для всего этого нужны деньги. Не нужно забывать и о том, что каждому участнику, позирующему на фото организатор тоже должен сказать «спасибо» хотя бы в виде эквивалента 20-50 долларов США. Иначе в следующий раз вся эта «возмущённая диктатурой молодёжь» не выйдет на фотосессию и не станет создавать картинку для ангажированных СМИ. Ведь там, «за бугром» людей научили ценить своё время и просто так, «за бусы» никто, ничего делать не будет, в отличие от нашего зомбированного протестного движения, которым можно скармливать лозунги, обещания и призывы. Платить нужно и самим организаторам этих акций на местах.

Как видно из приведённых выше данных, всё делается планово, никакой стихийности. Анонимные организаторы протестных акций... анонимное их финансирование... Кто за всем этим может стоять? Как Вы, уважаемый читатель, думаете?

Инструкторы и координаторы

В книге Джина Шарпа «От диктатуры к демократии» даются подробные указания средним звеньям исполнителей государственного переворота. Там нет ни слова о тех, кто занимается глобальным стратегическим планированием, откуда берутся инструктора, координаторы и аналитики всего протестного движения, из каких источников происходит его финансирование. Поэтому разберёмся в этом вопросе самостоятельно.

Первым, кто «засветился» из числа зарубежных кураторов в организации и координации уличных протестных акций солидарности, проведённых по всей стране, ожидаемо был сотрудник аккредитованного в Беларуси офиса «Радыё Свабода». Анализ социальных сетей и переписка среди участников протестного движения дали основания Министру внутренних дел Юрию Караеву обвинить в организации протестных акций в том числе и ряд белорусских блогеров.

Следующим в системе международных координаторов по подготовке в нашей стране т. н. цветной революции можно назвать правозащитный центр «Вясна». По поводу задержания организаторов акций на сайте ПЦ «Вясна» указывалось: «Данные задержания по одному и тому же уголовному делу, по мнению экспертов ПЦ «Вясна», являются новой формой произвольных, превентивных задержаний блогеров, активистов и лидеров оппозиции в целях недопущения организации массовых акций протеста в период избирательной кампании и в пост-избирательный период.

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

«В связи с резким ухудшением ситуации с правами человека в стране РПГО БХК и ПЦ «Весна» обратились к ряду тематических спецдокладчиков и к Верховному комиссару ООН по правам человека. Правозащитники просят спецдокладчиков в рамках соответствующих процедур обратиться к правительству Беларуси с просьбой принять незамедлительные меры по выполнению Республикой Беларусь своих международных обязательств в области прав человека, закреплённых в Международном пакте о гражданских и политических правах, Конвенции против пыток и других жестоких, бесчеловечных или унижающих достоинство видов обращения и наказания и других документах.»

29 июня международная правозащитная организация Amnesty International распространила заявление о признании новых белорусских политзаключённых узниками совести. Вот так! Виновный в неуплате налогов в особо крупном размере и обвиняемый в других уголовных преступлениях, оказывается политзаключённым узником совести! Таким образом, мы видим согласованные действия международных структур, направленные на вмешательство в работу правоохранительных органов и предвыборную кампанию в нашей стране.
Согласно учению Шарпа один из основных элементов внешнего воздействия, это показать преступную сущность власти всему миру, как это когда-то делалось по отношению ко всем режимам, свергнутым в ходе цветных революций. Дж. Шарп: «В качестве скромного дополнения можно приложить усилия на создание негативного по отношению к диктатуре мирового общественного мнения на гуманитарных, этических и религиозных основаниях. Усилия могут быть направлены на принятие правительственными и международными организациями дипломатических, политических и экономических санкций против диктатуры».

Свидетелями подготовки и проведения очередного акта для международного давления на белорусскую власть недавно стали многие жители Минска. Для этого был выбран день объявления прошедших кандидатов на финишную гонку в выборах Президента Республики Беларусь. О том, насколько важную роль должна была сыграть эта акция, свидетельствует специальная инструкция, направленная по ТК NEXTA Live 14.07.2020 в 17.44. Среди нескольких инструкций, регламентирующих порядок действий протестного движения, она выделяется своим смыслом от предыдущих. Ознакомимся и проанализируем, о чём там идёт речь:

Добро пожаловать! Собрали краткую памятку о том, как вести себя во время протестов, чтобы минимизировать риски задержания. Перед выходом предупреди своих родных или людей, которым доверяешь. Оставь им номер правозащитного центра «Весна» (+375298413981), на случай если тебя задержат. Чтобы помочь в этой ситуации, правозащитникам понадобятся твои ФИО и дата рождения.
Постарайся участвовать в протестной акции вместе со знакомыми и держись с ними рядом. Хотя бы по той простой причине, что психологически куда проще НЕ ОТДАВАТЬ В РУКИ МЕНТОВ ЗНАКОМОГО, чем постороннего человека. А ОТДАВАТЬ В РУКИ МЕНТОВ НИКОГО НЕЛЬЗЯ.
На акцию одевайся как можно проще и удобнее, избегай запоминающихся элементов. Это позволит раствориться в толпе и не акцентировать на себе внимание карательных органов.
Не забудь маску! Помимо репрессий и сложности с опознанием со стороны бандитов, по стране всё ещё гуляет коронавирус.
Не реагируй на словесные провокации. Если же ты видишь, как других протестующих пытаются задерживать менты в форме или без — ПОМОГАЙ ИМ ЗАЩИЩАТЬСЯ. КРЕПКО БЕРИСЬ ПОД РУКИ И\ИЛИ САДИСЬ НА ЗЕМЛЮ. КРИЧИ И ЗОВИ НА ПОМОЩЬ ДРУГИХ ПРОТЕСТУЮЩИХ, если будут пытаться атаковать тебя.
Старайся не отбиваться от группы как во время акции, так и сразу после.
И самое главное. Ничего не бойся!

Вместе с этой инструкцией по видео были продемонстрировано, как правильно необходимо делать сцепку.

2

Какое ОБЩЕЕ впечатление у вас создалось после прочтения этой инструкции? Правильно - от участников протестного движения требовалось демонстративное ПАССИВНОЕ СОПРОТИВЛЕНИЕ правоохранительным органам. Всё для подготовки «картинки» на телеэкранах для последующего «создания негативного по отношению к диктатуре мирового общественного мнения». Но, произошёл незапланированный сбой! Участники протестной акции начали активно нападать на сотрудников правоохранительных органов, избивать их и портить «картинку» для западных СМИ. Что-то изменилось? Спросите Вы. - Ни на йоту. Все мероприятия протестного движения уже распланированы и то, что «тупили» участники протестной акции, устроив избиение сотрудников ОМОНа, просто не может повлиять на реализацию общего плана. Поэтому все неугодные фотографии, где избивают сотрудников ОМОНа из интернета исчезли, а остались те, где ОМОН задерживает «невинных, мирных жителей». Требуемая картинка создана отшлифована и представлена для мировой общественности. Не удивительно, что уже через несколько дней Министром иностранных дел Литвы Линасом Линкявичюсом было сделано заявление, что правительство рассматривает варианты введения санкций к белорусским должностным лицам за репрессии против оппозиции и СМИ, пишет BNS. МИД Литвы подчёркивает, что продолжающиеся репрессии будут иметь последствия для дальнейшего развития отношений ЕС и Беларуси.

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

Расчёт баланса сил

Для планирования и реализации акций политического неповиновения Дж. Шарп требовал уделять пристальное внимание силовым структурам диктатора, включая армию. Он писал, что «необходимо тщательно оценить степень лояльности вооружённых сил - как солдат, так и офицеров - диктаторам, сделав вывод о возможности влияния демократических сил на военщину.

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

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

Со своей стороны Nexta активно проводит агитацию, адресованную правоохранительным органам, и предпринимает попытки формировать из среды силовиков лояльных к протестному движению Иуд, Иудушек и Иудят. Со своей стороны он (вдумайтесь, БЛОГЕР!) предлагает старые сказки для взрослых, только уже переиначенные на современный лад: «Ты — честный человек, который хочет жить в согласии с совестью и не выполнять преступные приказы? Или же из-за репрессий потерял работу и средства к существованию? Тогда мы готовы предложить тебе лучшее будущее — в IT и смежных структурах.»

Вот так, не больше - не меньше! Блогеры уже способны управлять людьми, как послушным стадом! Оказывается, что по мнению Nexta юристы из структур МВД и технари из МО могут успешно работать в IT сфере! И не нужно для этого поступать в БГУИР или БГУ, «проламывая» конкурс в 300-350 баллов, не нужно «грызть» высшую математику и «сушить мозги» - просто сказка какая-то на яву! Вообще-то, здесь я немного погорячился с критикой... В IT сфере бывшие силовики действительно могут работать: проверять у посетителей документы на вахте, поднимать и опускать шлагбаум перед машиной, охранять директоров фирм, сопровождать кейсы с деньгами и другие ценные грузы. Но, для такой работы вовсе не нужно изменять высоким идеалам служения Родине на её предательство во имя шкурных интересов западных спецслужб. Достаточно честно отслужить и с почётом уйти на заслуженную пенсию! А на пенсии - всё то же, что предлагает силовикам Nexta, только уже с чистой совестью и чувством выполненного долга перед государством.

В своей пропаганде Nexta указывает, что «за последние дни в нашу редакцию прислали сотни фотографий в рамках флэшмоба #нас97, в котором поучаствовали представители практически всех силовых структур: от военных до ОМОНа, от КГБ до СБП.» Посмотрел я эти фотографии... Конечно, одному за вечер найти в интернете такое количество людей в форме, а потом в фотошопе прикрыть их книгой или хотя бы просто обрезать - тяжело. Но несколько человек за пару дней с такой работой справятся без особых проблем.

Нет смысла далее комментировать психологически выверенную пропаганду Nexta. Достаточно прочитать Дж. Шарпа для понимания того, что нового в ней ничего больше нет.

Завоевав в интернет-пространстве полную победу над государственными СМИ, протестное движение безраздельно зомбирует наивную молодёжь своими идеями. Казалось бы, что нет такого человека, который бы не поддался на эту тотальную пропаганду в интернете. Но, не будем торопиться с таким выводом!

Благодаря принятым несколько лет назад локальным нормативным актам в МО и МВД в этих структурах сведено к минимуму воздействие интернет-пропаганды западных СМИ и различных деструктивных блогеров по отношению к постоянному составу и полностью отгорожены от этого влияния солдаты срочной службы и курсанты. Поэтому, высоко приоритетные цели, указанные в методичке Дж. Шарпа, по разложению военнослужащих силовых структур в Беларуси были и остаются для протестного движения невыполнимыми! Наша армия и внутренние войска надёжно защищены в этом отношении и остаются недоступными для деструктивной пропаганды.

Все присланные Nexta фотографии в рамках флешмоба я могу с уверенностью назвать фальшивками и скажу почему.

Никто не станет ради каких-то бредовых идей, во имя цветной революции жертвовать своей карьерой, своей честью, достойным денежным довольствием, очередью на строительство квартиры, льготным кредитом для её строительства (для младших офицеров), своей пенсией и выходным пособием (в случае старших офицеров). Плюс к этому, при досрочном увольнении военнослужащий обязан в бесспорном порядке вернуть все деньги, выплаченные ему при заключении контракта, а это более 6 000 бел. руб. Назовите мне такого идиота, который по призыву БЛОГЕРА начнёт шутить со своим служебным положением и на всём вышеперечисленном ставить жирный крест! Предатели никому не нужны! Даже в случае победы цветной революции, эти военнослужащие уже не смогут быть обратно призваны на службу. Уволенные по отрицательным мотивам, обратно в силовые структуры не принимаются.

Теперь бегло оценим те силы, с которыми в Минске к выборам подходит протестное движение. По оценке специалистов минимальная численность хорошо организованного протестного движения, способного провести в Минске переворот, составляет более 50 000 человек. В первой половине июня на главном координирующем протестное движение ТК Минск-97% блогер рассуждал:

«Уважаемые сограждане! Сижу тут сутки, +/-. Здравых идей парочка, куча мути и тумана, огромное стремление оскорблять друг друга, тролли, приколисты, подростки-максималисты, возможно работники опр. ведомств и т. д. Ну, мне так видится. Прирост кол-ва участников, как я понимаю, был в основном на теме воды. С сегодняшнего утра где-то "- 300" чел. ...

К сути:

«Информационная "война" на сегодня самый актуальный сценарий. Если бы каждый привёл в чат хоть 1 чел... нас было бы около 20К тут...»

Таким образом, мы видим, что по состоянию на первую половину июня в ТК https://t.me/minsk97pro/ было около 10 000 человек. Прошло уже больше месяце. По состоянию на 21 июля численность участников канала: 10 059 members, 2 471 online. При этом они с гордостью называют себя «Нас 97%!». Говоря более доступным языком приток людей в протестное движение по Минску прекратился ещё месяц назад. Поэтому не удивительно, что в настоящее время предприняты определённые шаги по увеличению авторитета и численности протестного движения. Так Светланой Тихановской создан объединённый штаб, в который она приглашает присоединиться известных граждан страны, таких как лауреат Нобелевской премии Светлану Алексиевич, или спортсменов Максима Мирного, Викторию Азаренко и Дарью Домрачеву.

Александр Плавинский

Добавить комментарий

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
CAPTCHA на основе изображений
Введите символы, которые показаны на картинке.