<?php
// $text = "Такая,знаете ли,мура получается с этим программированием но поначалу всё вроде шло хорошо!Даже замечательно! Но ведь в какой-то момент всегда начинаются проблемы, вы понимаете?А в этот раз они начались тогда,когда дошёл сначала до массивов;затем было сложно с циклами и массивами управляться сразу,но вполне ещё терпимо; потом вроде бы разобрался а думаете - это легко для гуманитария? Для гуманитария, может быть, и легко но для меня - нет. Мне как-то проще траллить технарей,чем стать на их уровень в программировании. У меня шырокий кругозор и шикарная жызненная позиция:непротивление насилию злом,но это, как ни странно, не помогает освоить программирование. Всё это весьма удручает,а также выбивает из колеи. А выбитый из колеи гуманитарий способен затралить любого,даже уравновешенного технаря-программиста на языке PHP. Это координально меняет ситуацию, описанную сдесь. Если же я зделаю всё так, как должно быть зделано, то все останутся целы.";
$text = "Координально ты прав" ;
$possibleErrors = array ( 0 => array ( "pattern" => "/.{3,5}координально.{3,5}/ui" , "message" => "- Ошибка в слове \" кардинально\" ."
) ,
1 => array ( "pattern" => "/.{3,5}сдесь.{3,5}/ui" , "message" => "- Не \" сдесь\" , а \" здесь\" ."
) ,
2 => array ( "pattern" => "/.{3,5}[^а-яё]здела[лнoюет]{1,2}.{3,5}/ui" , "message" => "- Приставки \" з\" нет в русском языке."
) ,
3 => array ( "pattern" => "/.{3,5}[а-яёa-z]\\ sа(\\ s?|,|...| \\ -).{3,5}/u" , "message" => "- Пропущена запятая перед союзом \" а\" ."
) ,
4 => array ( "pattern" => "/.{3,5}[а-яёa-z]\\ sно(\\ s?|,|...| \\ -).{3,5}/u" , "message" => "- Пропущена запятая перед союзом \" но\" ."
) ,
5 => array ( "pattern" => "/.{3,5}[,\\ .!\\ ?:;][^\\ s].{3,5}/ui" , "message" => "- Пропущен пробел после знака препинания."
) ,
6 => array ( "pattern" => "/.{3,5}(ж|ш)ы.{3,5}/ui" , "message" => "- \" Жи-Ши\" пиши с \" и\" !"
)
) ;
'/\\,/' => ', ' ,
'/\\;/' => '; ' ,
'/\\!/' => '! ' ,
'/\\?/' => '? ' ,
'/\\:/' => ': ' ,
'/жы/ui' => 'жи' ,
'/шы/ui' => 'ши' ,
'/координально/ui' => 'кардинально' ,
'/сдесь/ui' => 'здесь' ,
'/зделал/ui' => 'сделал' ,
'/зделаю/ui' => 'сделаю' ,
'/зделано/ui' => 'сделано' ,
'/зделать/ui' => 'сделать' ,
'/ а /u' => ', а ' ,
'/ а, /u' => ', а, ' ,
'/ а \\-/u' => ', а \\-' ,
'/ а\\.\\.\\./u' => ', а...' ,
'/ но /u' => ', но ' ,
'/ но, /u' => ', но, ' ,
'/ но \\-/u' => ', но \\-' ,
'/ но\\.\\.\\./u' => ', но...' ,
'/,\\s?,/u' => ',' ,
'/;,/u' => ';' ,
'/:,/u' => ':' ,
'/\\s\\s/ui' => ' '
) ;
$possibleErrorsCount = count ( $possibleErrors ) ; /*Считаем количество регулярных выражений в массиве*/
for ( $i = 0 ; $i < $possibleErrorsCount ; $i ++ ) { /*Цикл для поиска ошибок с помощью отдельных регулярок (ключей) в массиве и вывода соответствующих регуляркам правил (значений в массиве)*/
if ( preg_match_all ( $possibleErrors [ $i ] [ 'pattern' ] , $text , $matches ) ) { /*Достаём из массива регулярку, подставляем её в функцию, проверяем найденные ошибки в тексте $text на соответствие*/ $message = $possibleErrors [ $i ] [ 'message' ] ; /*Выводим соответствующее правило из массива (содержание), чтобы вывести его затем в echo*/
$pattern = $possibleErrors [ $i ] [ 'pattern' ] ; /*Выводим соответствующую регулярку из массива (ключ)*/
$cleanMatches = $matches [ 0 ] ; /*Упрощаем получившийся массив с ошибками для возможности последующего вывода ошибок*/
foreach ( $cleanMatches as $key => $value ) { /*Цикл для извлечения ошибок из массива и вывода их в echo*/
echo "...{$value} ... {$message} \n " ;
}
}
}
foreach ( $regexpClean as $regexp => $correct ) { /*Цикл для преобразования массива с отдельными регулярками в ключи и значения*/
$text = preg_replace ( $regexp , $correct , $text ) ; /*Переменная с текстом, в котором с помощью preg_replace подставляются отдельные регулярки и соответствующие им заменяемые варианты правильного текста; в итоге переменная меняется при прохождении цикла, поэтому итоговый вывод исправленного текста мы делаем за пределами этого цикла*/ }
echo "Исправленный текст:\n {$text} \n " ;
?>
PD9waHAKCmVycm9yX3JlcG9ydGluZygtMSk7Cm1iX2ludGVybmFsX2VuY29kaW5nKCd1dGYtOCcpOwoKLy8gJHRleHQgPSAi0KLQsNC60LDRjyzQt9C90LDQtdGC0LUg0LvQuCzQvNGD0YDQsCDQv9C+0LvRg9GH0LDQtdGC0YHRjyDRgSDRjdGC0LjQvCDQv9GA0L7Qs9GA0LDQvNC80LjRgNC+0LLQsNC90LjQtdC8INC90L4g0L/QvtC90LDRh9Cw0LvRgyDQstGB0ZEg0LLRgNC+0LTQtSDRiNC70L4g0YXQvtGA0L7RiNC+IdCU0LDQttC1INC30LDQvNC10YfQsNGC0LXQu9GM0L3QviEg0J3QviDQstC10LTRjCDQsiDQutCw0LrQvtC5LdGC0L4g0LzQvtC80LXQvdGCINCy0YHQtdCz0LTQsCDQvdCw0YfQuNC90LDRjtGC0YHRjyDQv9GA0L7QsdC70LXQvNGLLCDQstGLINC/0L7QvdC40LzQsNC10YLQtT/QkCDQsiDRjdGC0L7RgiDRgNCw0Lcg0L7QvdC4INC90LDRh9Cw0LvQuNGB0Ywg0YLQvtCz0LTQsCzQutC+0LPQtNCwINC00L7RiNGR0Lsg0YHQvdCw0YfQsNC70LAg0LTQviDQvNCw0YHRgdC40LLQvtCyO9C30LDRgtC10Lwg0LHRi9C70L4g0YHQu9C+0LbQvdC+INGBINGG0LjQutC70LDQvNC4INC4INC80LDRgdGB0LjQstCw0LzQuCDRg9C/0YDQsNCy0LvRj9GC0YzRgdGPINGB0YDQsNC30YMs0L3QviDQstC/0L7Qu9C90LUg0LXRidGRINGC0LXRgNC/0LjQvNC+OyDQv9C+0YLQvtC8INCy0YDQvtC00LUg0LHRiyDRgNCw0LfQvtCx0YDQsNC70YHRjyDQsCDQtNGD0LzQsNC10YLQtSAtINGN0YLQviDQu9C10LPQutC+INC00LvRjyDQs9GD0LzQsNC90LjRgtCw0YDQuNGPPyDQlNC70Y8g0LPRg9C80LDQvdC40YLQsNGA0LjRjywg0LzQvtC20LXRgiDQsdGL0YLRjCwg0Lgg0LvQtdCz0LrQviDQvdC+INC00LvRjyDQvNC10L3RjyAtINC90LXRgi4g0JzQvdC1INC60LDQui3RgtC+INC/0YDQvtGJ0LUg0YLRgNCw0LvQu9C40YLRjCDRgtC10YXQvdCw0YDQtdC5LNGH0LXQvCDRgdGC0LDRgtGMINC90LAg0LjRhSDRg9GA0L7QstC10L3RjCDQsiDQv9GA0L7Qs9GA0LDQvNC80LjRgNC+0LLQsNC90LjQuC4g0KMg0LzQtdC90Y8g0YjRi9GA0L7QutC40Lkg0LrRgNGD0LPQvtC30L7RgCDQuCDRiNC40LrQsNGA0L3QsNGPINC20YvQt9C90LXQvdC90LDRjyDQv9C+0LfQuNGG0LjRjzrQvdC10L/RgNC+0YLQuNCy0LvQtdC90LjQtSDQvdCw0YHQuNC70LjRjiDQt9C70L7QvCzQvdC+INGN0YLQviwg0LrQsNC6INC90Lgg0YHRgtGA0LDQvdC90L4sINC90LUg0L/QvtC80L7Qs9Cw0LXRgiDQvtGB0LLQvtC40YLRjCDQv9GA0L7Qs9GA0LDQvNC80LjRgNC+0LLQsNC90LjQtS4g0JLRgdGRINGN0YLQviDQstC10YHRjNC80LAg0YPQtNGA0YPRh9Cw0LXRgizQsCDRgtCw0LrQttC1INCy0YvQsdC40LLQsNC10YIg0LjQtyDQutC+0LvQtdC4LiDQkCDQstGL0LHQuNGC0YvQuSDQuNC3INC60L7Qu9C10Lgg0LPRg9C80LDQvdC40YLQsNGA0LjQuSDRgdC/0L7RgdC+0LHQtdC9INC30LDRgtGA0LDQu9C40YLRjCDQu9GO0LHQvtCz0L4s0LTQsNC20LUg0YPRgNCw0LLQvdC+0LLQtdGI0LXQvdC90L7Qs9C+INGC0LXRhdC90LDRgNGPLdC/0YDQvtCz0YDQsNC80LzQuNGB0YLQsCDQvdCwINGP0LfRi9C60LUgUEhQLiDQrdGC0L4g0LrQvtC+0YDQtNC40L3QsNC70YzQvdC+INC80LXQvdGP0LXRgiDRgdC40YLRg9Cw0YbQuNGOLCDQvtC/0LjRgdCw0L3QvdGD0Y4g0YHQtNC10YHRjC4g0JXRgdC70Lgg0LbQtSDRjyDQt9C00LXQu9Cw0Y4g0LLRgdGRINGC0LDQuiwg0LrQsNC6INC00L7Qu9C20L3QviDQsdGL0YLRjCDQt9C00LXQu9Cw0L3Qviwg0YLQviDQstGB0LUg0L7RgdGC0LDQvdGD0YLRgdGPINGG0LXQu9GLLiI7CiR0ZXh0ID0gItCa0L7QvtGA0LTQuNC90LDQu9GM0L3QviDRgtGLINC/0YDQsNCyIjsKJHBvc3NpYmxlRXJyb3JzID0gYXJyYXkgKAoJICAgICAgICAgICAgICAgICAwID0+IGFycmF5ICggInBhdHRlcm4iID0+ICIvLnszLDV90LrQvtC+0YDQtNC40L3QsNC70YzQvdC+LnszLDV9L3VpIiwgICAgICAgIAoJICAgICAgICAgICAgICAgICAJICAgICAgICAgIm1lc3NhZ2UiID0+ICItINCe0YjQuNCx0LrQsCDQsiDRgdC70L7QstC1IFwi0LrQsNGA0LTQuNC90LDQu9GM0L3QvlwiLiIKCSAgICAgICAgICAgICAgICAgCSAgICAgICAgKSwKCSAgICAgICAgICAgICAgICAgMSA9PiBhcnJheSAoICJwYXR0ZXJuIiA9PiAiLy57Myw1fdGB0LTQtdGB0YwuezMsNX0vdWkiLAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lc3NhZ2UiID0+ICItINCd0LUgXCLRgdC00LXRgdGMXCIsINCwIFwi0LfQtNC10YHRjFwiLiIKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAoJICAgICAgICAgICAgICAgICAyID0+IGFycmF5ICggInBhdHRlcm4iID0+ICIvLnszLDV9W17QsC3Rj9GRXdC30LTQtdC70LBb0LvQvW/RjtC10YJdezEsMn0uezMsNX0vdWkiLCAKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIiA9PiAiLSDQn9GA0LjRgdGC0LDQstC60LggXCLQt1wiINC90LXRgiDQsiDRgNGD0YHRgdC60L7QvCDRj9C30YvQutC1LiIKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICApLCAgIAoJICAgICAgICAgICAgICAgICAzID0+IGFycmF5ICggInBhdHRlcm4iID0+ICIvLnszLDV9W9CwLdGP0ZFhLXpdXFxz0LAoXFxzP3wsfC4uLnwgXFwtKS57Myw1fS91IiwgCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVzc2FnZSIgPT4gIi0g0J/RgNC+0L/Rg9GJ0LXQvdCwINC30LDQv9GP0YLQsNGPINC/0LXRgNC10LQg0YHQvtGO0LfQvtC8IFwi0LBcIi4iCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKCSAgICAgICAgICAgICAgICAgNCA9PiBhcnJheSAoICJwYXR0ZXJuIiA9PiAiLy57Myw1fVvQsC3Rj9GRYS16XVxcc9C90L4oXFxzP3wsfC4uLnwgXFwtKS57Myw1fS91IiwgCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIiA9PiAiLSDQn9GA0L7Qv9GD0YnQtdC90LAg0LfQsNC/0Y/RgtCw0Y8g0L/QtdGA0LXQtCDRgdC+0Y7Qt9C+0LwgXCLQvdC+XCIuIgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICksICAgCgkgICAgICAgICAgICAgICAgIDUgPT4gYXJyYXkgKCAicGF0dGVybiIgPT4gIi8uezMsNX1bLFxcLiFcXD86O11bXlxcc10uezMsNX0vdWkiLAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVzc2FnZSIgPT4gIi0g0J/RgNC+0L/Rg9GJ0LXQvSDQv9GA0L7QsdC10Lsg0L/QvtGB0LvQtSDQt9C90LDQutCwINC/0YDQtdC/0LjQvdCw0L3QuNGPLiIKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICApLCAgICAgICAKCSAgICAgICAgICAgICAgICAgNiA9PiBhcnJheSAoICJwYXR0ZXJuIiA9PiAiLy57Myw1fSjQtnzRiCnRiy57Myw1fS91aSIgLCAKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lc3NhZ2UiID0+ICItIFwi0JbQuC3QqNC4XCIg0L/QuNGI0Lgg0YEgXCLQuFwiISIKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAJICAgICAgICAgICAgICAgKTsKJHJlZ2V4cENsZWFuID0gYXJyYXkoCgkgICAgICAgICAgICAnL1xcLC8nICAgICAgICAgICAgPT4gJywgJywKICAgICAgICAgICAgICAgICcvXFw7LycgICAgICAgICAgICA9PiAnOyAnLAogICAgICAgICAgICAgICAgJy9cXCEvJyAgICAgICAgICAgID0+ICchICcsCiAgICAgICAgICAgICAgICAnL1xcPy8nICAgICAgICAgICAgPT4gJz8gJywKICAgICAgICAgICAgICAgICcvXFw6LycgICAgICAgICAgICA9PiAnOiAnLAogICAgICAgICAgICAgICAgJy/QttGLL3VpJyAgICAgICAgICAgPT4gJ9C20LgnLAogICAgICAgICAgICAgICAgJy/RiNGLL3VpJyAgICAgICAgICAgPT4gJ9GI0LgnLAogICAgICAgICAgICAgICAgJy/QutC+0L7RgNC00LjQvdCw0LvRjNC90L4vdWknID0+ICfQutCw0YDQtNC40L3QsNC70YzQvdC+JywgCiAgICAgICAgICAgICAgICAnL9GB0LTQtdGB0YwvdWknICAgICAgICA9PiAn0LfQtNC10YHRjCcsIAogICAgICAgICAgICAgICAgJy/Qt9C00LXQu9Cw0LsvdWknICAgICAgID0+ICfRgdC00LXQu9Cw0LsnLCAKICAgICAgICAgICAgICAgICcv0LfQtNC10LvQsNGOL3VpJyAgICAgICA9PiAn0YHQtNC10LvQsNGOJywKICAgICAgICAgICAgICAgICcv0LfQtNC10LvQsNC90L4vdWknICAgICAgPT4gJ9GB0LTQtdC70LDQvdC+JywgCiAgICAgICAgICAgICAgICAnL9C30LTQtdC70LDRgtGML3VpJyAgICAgID0+ICfRgdC00LXQu9Cw0YLRjCcsCiAgICAgICAgICAgICAgICAnLyDQsCAvdScgICAgICAgICAgID0+ICcsINCwICcsCiAgICAgICAgICAgICAgICAnLyDQsCwgL3UnICAgICAgICAgID0+ICcsINCwLCAnLAogICAgICAgICAgICAgICAgJy8g0LAgXFwtL3UnICAgICAgICA9PiAnLCDQsCBcXC0nLAogICAgICAgICAgICAgICAgJy8g0LBcXC5cXC5cXC4vdScgICA9PiAnLCDQsC4uLicsCiAgICAgICAgICAgICAgICAnLyDQvdC+IC91JyAgICAgICAgICAgPT4gJywg0L3QviAnLAogICAgICAgICAgICAgICAgJy8g0L3QviwgL3UnICAgICAgICAgID0+ICcsINC90L4sICcsCiAgICAgICAgICAgICAgICAnLyDQvdC+IFxcLS91JyAgICAgICAgPT4gJywg0L3QviBcXC0nLAogICAgICAgICAgICAgICAgJy8g0L3QvlxcLlxcLlxcLi91JyAgID0+ICcsINC90L4uLi4nLAogICAgICAgICAgICAgICAgJy8sXFxzPywvdScgICAgICAgICA9PiAnLCcsCiAgICAgICAgICAgICAgICAnLzssL3UnICAgICAgICAgICAgID0+ICc7JywKICAgICAgICAgICAgICAgICcvOiwvdScgICAgICAgICAgICAgPT4gJzonLAogICAgICAgICAgICAgICAgJy9cXHNcXHMvdWknICAgICAgICA9PiAnICcKICAgICAgICAgICAgICAgICk7CiRwb3NzaWJsZUVycm9yc0NvdW50ID0gY291bnQoJHBvc3NpYmxlRXJyb3JzKTsgLyrQodGH0LjRgtCw0LXQvCDQutC+0LvQuNGH0LXRgdGC0LLQviDRgNC10LPRg9C70Y/RgNC90YvRhSDQstGL0YDQsNC20LXQvdC40Lkg0LIg0LzQsNGB0YHQuNCy0LUqLwoKZm9yICgkaT0wOyAkaSA8ICRwb3NzaWJsZUVycm9yc0NvdW50OyAkaSsrKSB7IC8q0KbQuNC60Lsg0LTQu9GPINC/0L7QuNGB0LrQsCDQvtGI0LjQsdC+0Log0YEg0L/QvtC80L7RidGM0Y4g0L7RgtC00LXQu9GM0L3Ri9GFINGA0LXQs9GD0LvRj9GA0L7QuiAo0LrQu9GO0YfQtdC5KSDQsiDQvNCw0YHRgdC40LLQtSDQuCDQstGL0LLQvtC00LAg0YHQvtC+0YLQstC10YLRgdGC0LLRg9GO0YnQuNGFINGA0LXQs9GD0LvRj9GA0LrQsNC8INC/0YDQsNCy0LjQuyAo0LfQvdCw0YfQtdC90LjQuSDQsiDQvNCw0YHRgdC40LLQtSkqLwoKCWlmIChwcmVnX21hdGNoX2FsbCgkcG9zc2libGVFcnJvcnNbJGldWydwYXR0ZXJuJ10sICR0ZXh0LCAkbWF0Y2hlcykpIHsgLyrQlNC+0YHRgtCw0ZHQvCDQuNC3INC80LDRgdGB0LjQstCwINGA0LXQs9GD0LvRj9GA0LrRgywg0L/QvtC00YHRgtCw0LLQu9GP0LXQvCDQtdGRINCyINGE0YPQvdC60YbQuNGOLCDQv9GA0L7QstC10YDRj9C10Lwg0L3QsNC50LTQtdC90L3Ri9C1INC+0YjQuNCx0LrQuCDQsiDRgtC10LrRgdGC0LUgJHRleHQg0L3QsCDRgdC+0L7RgtCy0LXRgtGB0YLQstC40LUqLwoJCSRtZXNzYWdlID0gJHBvc3NpYmxlRXJyb3JzWyRpXVsnbWVzc2FnZSddOyAvKtCS0YvQstC+0LTQuNC8INGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LXQtSDQv9GA0LDQstC40LvQviDQuNC3INC80LDRgdGB0LjQstCwICjRgdC+0LTQtdGA0LbQsNC90LjQtSksINGH0YLQvtCx0Ysg0LLRi9Cy0LXRgdGC0Lgg0LXQs9C+INC30LDRgtC10Lwg0LIgZWNobyovCgkJJHBhdHRlcm4gPSAkcG9zc2libGVFcnJvcnNbJGldWydwYXR0ZXJuJ107IC8q0JLRi9Cy0L7QtNC40Lwg0YHQvtC+0YLQstC10YLRgdGC0LLRg9GO0YnRg9GOINGA0LXQs9GD0LvRj9GA0LrRgyDQuNC3INC80LDRgdGB0LjQstCwICjQutC70Y7RhykqLwogICAgICAgICRjbGVhbk1hdGNoZXMgPSAkbWF0Y2hlc1swXTsgLyrQo9C/0YDQvtGJ0LDQtdC8INC/0L7Qu9GD0YfQuNCy0YjQuNC50YHRjyDQvNCw0YHRgdC40LIg0YEg0L7RiNC40LHQutCw0LzQuCDQtNC70Y8g0LLQvtC30LzQvtC20L3QvtGB0YLQuCDQv9C+0YHQu9C10LTRg9GO0YnQtdCz0L4g0LLRi9Cy0L7QtNCwINC+0YjQuNCx0L7QuiovCiAgICAgICAgCiAgICAgICAgZm9yZWFjaCAoJGNsZWFuTWF0Y2hlcyBhcyAka2V5ID0+ICR2YWx1ZSkgeyAvKtCm0LjQutC7INC00LvRjyDQuNC30LLQu9C10YfQtdC90LjRjyDQvtGI0LjQsdC+0Log0LjQtyDQvNCw0YHRgdC40LLQsCDQuCDQstGL0LLQvtC00LAg0LjRhSDQsiBlY2hvKi8KICAgICAgICAgICAgCiAgICAgICAgICAgIGVjaG8gIi4uLnskdmFsdWV9Li4uIHskbWVzc2FnZX1cbiI7CiAgICAgICAgfQogIAl9CiB9CiAKIGZvcmVhY2ggKCRyZWdleHBDbGVhbiBhcyAkcmVnZXhwID0+ICRjb3JyZWN0KSB7LyrQptC40LrQuyDQtNC70Y8g0L/RgNC10L7QsdGA0LDQt9C+0LLQsNC90LjRjyDQvNCw0YHRgdC40LLQsCDRgSDQvtGC0LTQtdC70YzQvdGL0LzQuCDRgNC10LPRg9C70Y/RgNC60LDQvNC4INCyINC60LvRjtGH0Lgg0Lgg0LfQvdCw0YfQtdC90LjRjyovCiAgCSR0ZXh0ID0gcHJlZ19yZXBsYWNlKCRyZWdleHAsICRjb3JyZWN0LCAkdGV4dCk7IC8q0J/QtdGA0LXQvNC10L3QvdCw0Y8g0YEg0YLQtdC60YHRgtC+0LwsINCyINC60L7RgtC+0YDQvtC8INGBINC/0L7QvNC+0YnRjNGOIHByZWdfcmVwbGFjZSDQv9C+0LTRgdGC0LDQstC70Y/RjtGC0YHRjyDQvtGC0LTQtdC70YzQvdGL0LUg0YDQtdCz0YPQu9GP0YDQutC4INC4INGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LjQtSDQuNC8INC30LDQvNC10L3Rj9C10LzRi9C1INCy0LDRgNC40LDQvdGC0Ysg0L/RgNCw0LLQuNC70YzQvdC+0LPQviDRgtC10LrRgdGC0LA7INCyINC40YLQvtCz0LUg0L/QtdGA0LXQvNC10L3QvdCw0Y8g0LzQtdC90Y/QtdGC0YHRjyDQv9GA0Lgg0L/RgNC+0YXQvtC20LTQtdC90LjQuCDRhtC40LrQu9CwLCDQv9C+0Y3RgtC+0LzRgyDQuNGC0L7Qs9C+0LLRi9C5INCy0YvQstC+0LQg0LjRgdC/0YDQsNCy0LvQtdC90L3QvtCz0L4g0YLQtdC60YHRgtCwINC80Ysg0LTQtdC70LDQtdC8INC30LAg0L/RgNC10LTQtdC70LDQvNC4INGN0YLQvtCz0L4g0YbQuNC60LvQsCovCn0KICAgIGVjaG8gItCY0YHQv9GA0LDQstC70LXQvdC90YvQuSDRgtC10LrRgdGCOlxueyR0ZXh0fVxuIjsKCj8+Cg==