MMVARI - обзор программы и ее возможностей

октябрь 2004г. (обновлено в ноябре)

Японский радиолюбитель Makoto Mori, JE3HHT, широко известный своими программами MMTTY, MMANA, MMSSTV - написал еще одну отличную программу для любителей поработать цифровыми видами связи (bpsk, mfsk, rtty, gmsk). Программа написана очень качественно и продуманно, впочем как и другие программы автора, работать на ней - одно удовольствие.

внешний вид MMVARI

Окно программы можно условно разбить на несколько частей. Вверху справа расположен индикатор настройки с примыкаюшей к нему панелью управления переключения вида индикатора FFT(Спектроскоп), W.F. (Водопад), Sync (Синхроимпульсов) и ширины отображаемой области 500-1K-2K-3K в герцах. Слева кнопки задания разных режимов работы и видов модуляции. Секция BPF управляет шириной полосы пропускания фильтра DSP, чем уже выбранный фильтр, тем больше нагружается процессор компьютера, но и качество приема слабого сигнала реально возрастает. Кнопка AFC(АПЧ) включает систему автоподстройки на частоту сигнала, надо заметить что в данной программе имеется возможность в регулировки в широких пределах как по ширине захвата так и по уровню. Кнопка NET позволяет в отжатом состоянии зафиксировать частоту сигнала на передачу, при этом свободно менять настройку на прием, а в активированном состоянии частота передачи всегда будет равна частоте приема. Отдельно надо выделить кнопку ATC это автоматический контроль синхронизации полезная функция при проведении QSO через полярные области имеет широкие возможности по настройке через Setup программы.

Ниже мы видим аппаратный журнал, который подставляет данные корреспондента сам, при повторной связи. Аппаратный журнал полностью совместим с программами MMTTY, MMSSTV а также позволяет экспортировать и импортировать данные в широко распространенный форматы ADIF, Log2000, Hamlog и экспорт данных в Cabrillo. Под ним располагается приемное окно и еще ниже передающее окно. В самом низу расположена строка состояния на которой отображается номер страницы для передачи которые выбираются кликом мышки, индикатор соотношения сигнал-шум, частота дискретизации звуковой карты, номер задействованного порта, тип кодировки шрифта. Немного выше кнопки с различными текстами, их может быть 144, что очень удобно. Встроенные макросы очень разнообразны, с их помощью можно писать небольшие "скрипты", для выполнения различных операций в программе и управления трансивером через CAT-интефейс. Кроме основной частоты, MMVARI может вести одновременный прием на четырех дополнительных. Каждый дополнительный канал приема работает в своем окне, с маленьким индикатором настройки и измерителем уровня сигнала.

панель аппаратного журнала

Разработку этой программы автор начал, потому что ни одна из ранее написанных программ не могла работать с иероглифами (япония, китай и др.) в цифровых видах связи. Русские буквы также печатаются без проблем. MMVARI работает со звуковой картой ПК и к ней подойдет любой интерфейс от MixW, MiltiPSK, Stream, MMTTY, MMSSTV. Встроенные средства для калибровки звуковой карты, позволяют быстро настроить компьютер и выйти в эфир. Интерфейс программы поддерживает два языка, японский и английский. Русский текст принимается и передается вполне корректно, только аппаратный журнал не поддерживает заполнение полей русскими буквами.

  1. GMSK - чтото среднее между PSK и FSK, характерно то что для gmsk не требуется линейный передатчик.
  2. FSK - обычно этот режим рекомендуют для работы на УКВ диапазонах и для радиостанций с низкой стабильностью частоты.
  3. FSK-W - то же, возможны скорости 20, 31.25, 45.45, 62.5, 93.75, 125 и 250Bps.
  4. BPSK - особенный BPSK, адаптированный для работы с иероглифами, несовместим ни с какими программами кроме MMVARI
  5. bpsk - стандартный режим BPSK совместимый с другими программами, поддерживаются скорости 20, 31.25, 45.45, 62.5, 93.75, 125 и 250Bps.
  6. rtty-L / rtty-U - обычный телетайп, L - означает LSB (негатив), U - USB (позитив)
  7. mfsk-L / mfsk-U - стандартный MFSK, L и U обозначают то же что и в rtty, поддерживаются скорости 15.625 - MFSK16 и 31.25 - MFSK32 (mfsk32 - нестандартный режим, работайте им только по договоренности) передача картинок SSTV пока отсутствует.

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

окно для записи текстов и макросов
На картинке вы видите текст, который передает позывной корреспондента и затем ваш позывной. Макросы можно вставлять между текстом в нужные места. В MMVARI существует два типа макросов: Condition command и Macro command. Вот список Macro command:
<%TX> перейти на передачу
<%RX> перейти на прием
<%TXRX> переключиться в противоположное состояние
<%TXOFF> выключить передачу
<%AutoClear> автоматически очищать предающее окно
<%ClearTXW> очистить передающее окно
<%ClearRXW> очистить приёмное окно
<%MyCall> мой позывной
<%HisCall> позывной корреспондента
<%HisName> имя корреспондента
<%DearName> подстановка имени корреспондента во фразу: Dear имя
<%HisRST> рапорт для вашего корреспондента
<%MyRST> мой рапорт
<%FREQ> текущая частота
<%BAND> текущий диапазон
<%HisQTH> местоположение корреспондента
<%Note> текст написанный в заметках
<%UDATE> текущяя UTC дата
<%UTIME> текущее UTC время в формате HH:MM
<%UTIMES> текущее UTC время в формате HH:MM:SS
<%LDATE> местная дата
<%LTIME> местное время (HH:MM)
<%LTIMES> местное время (HH:MM:SS)
<%PTIME>
<%LPTIME>
<%QPTIME>
<%Capture>
<%HisGreetings=2> атоматическое приветствие (1=GA, 2=Good morning)
<%HisNR>
<%MyNR>
<%Entity=<%HisCall>>
<%EntityName=<%HisCall>>
<%Continent=<%HisCall>>
<%PLATFORM> тип операционной системы
<%CodePage> кодовая страница выбранного языка
<%LanguageID> цифровой идентификатор выбранного языка
<%VER> версия программы
<%VERMINOR>
<%VARITYPE>
<%MODE> текущий режим работы
<%Level> соотношение сигнал-шум корреспондента
<%PeakLevel>
<%AverageLevel>
<%MetricMFSK>
<%MetricMFSK=even>
<%SquelchLevel=3.0> установить уровень шумоподавителя (s/n=3db)
<%CWID> передать свой позывной CW в конце
<%CWID= 73 :>
<%CWSpeed=20> скорость передачи CW
<%MODE=GMSK> установить режим работы (rtty, bpsk, mfsk...)
<%AutoNET> включить автоподстройку передачи автоматически
<%NETON> включить автоподстройку передачи
<%NETOFF> выключить автоподстройку передачи
<%AFCON> включить автоподстройку приёма
<%AFCOFF> выключить автоподстройку приёма
<%ATCON> включить регулировку усиления
<%ATCOFF> выключить регулировку усиления
<%RxCarrier> показать текущую частоту приема
<%TxCarrier> показать текущую частоту передачи
<%RxCarrier=1750> установить текущую частоту приема
<%TxCarrier=1750> установить текущую частоту передачи
<%AFCFrequency> показать частоту автоподстройку приема
<%TONE> передать одиночный тон
<%BPF=0> установить один из фильтров 0, 1, 2 или 3
<%BPFTaps=64,80,128,256> установить ширину dsp-фильтров
<%Notch=ONOFF> включить-выкл notch-фильтр
<%Notch=1750> установить частоту notch-фильтра
<%NotchTaps=128> установить ширину notch-фильтра
<%NotchWidth=1>
<%BAUD> показать текущую скорость работы
<%BAUD=31.25> установить скорость
<%AFCWidth=50> 
<%AFCLevel=12>
<%ATCSpeed=0>
<%ATCLevel=15>
<%ATCPPM>
<%PTT=COM1> установить номер порта для управления ptt
<%Radio=COM2> установить номер порта для обмена с трансивером
<%RadioOut=\$000000000F>
<%RadioCarrierKHz>
<%RadioKHz>
<%RadioKHz=YAESU-HF,14073.000>
<%RadioMode>
<%RadioMode=CI-V,LSB>
<%PTTON> нажать ptt
<%PTTOFF> отпустить ptt
<%FFTScale>
<%FFTScale=2>
<%FFTWidth=1000>
<%SyncWidth=14>
<%ShowCH=1,ONOFF>
<%SetCHSpeed=1,31.25>
<%SetCHMode=1,GMSK>
<%ClearCHW=1>
<%QSOON> обозначить начало qso
<%QSOOFF> обозначить конец qso
<%FREQ=7> установить частоту
<%BAND=40m> установить диапазон
<%HisCall=<%Capture>> установить позывной корреспондента
<%HisRST=599> установить рапорт корреспондента
<%MyRST=599> установить установить мой рапорт
<%Note=<%VARITYPE>>
<%RefRXW>
<%EditFile=memo.txt, 0> открыть файл (имя, только чтение)
<%SendFile=test.txt> передать файл
<%EditMacro=2> редактировать макрос с указанным номером
<%EditMacro=OnStart> 
<%EditMacro=AS(CW)>
<%EditMacro=MacroTxt.txt>
<%MacroText=MacroTxt.txt>
<%SaveMacro=Macros.mac> сохранить все макросы
<%LoadMacro=Macros.mac> загрузить все макросы
<%HEX2DEC=ABCD>
<%CHAR=A>
<%CHARX=A>
<%CODE=82A0>
<%SP> добавить пробел
<%CR> добавить символ CR
<%BS> добавить символ перевода строки
<%TAB> добавить символ табуляции
<%SkipCR>
<%DisableCR>
<%EnableCR>
<%DisableTAB>
<%EnableTAB>
<%DisableSP>
<%EnableSP>
<%Skip$=3,<%HisCall>>
<%MSkip$=3,<%Note>>
<%Find$=xx,ABCxxVVV>
<%StrLen=<%HisCall>>
<%MStrLen=<%Note>>
<%ONOFF=<%Cond=IsSQ>>
<%RepeatText=3,<%RepeatText=33,RY><%CR>>
<%IDLE> передавать idle сигнал
<%DIDDLE=LTR>
<%UOS=ON>
<%RTTYWaitC=0>
<%RTTYWaitD=0>
<%RTTYWordOut=ON>
<%TxShift=170.0> установить разнос тонов передачи
<%RxShift=170.0> установить разнос тонов приёма
<%ToUpper=<%HisName>> 
<%ToLower=<%HisCall> de <%MyCall>>
<%IME=ON> контроль IME (on, off, onoff)
<%RepeatTX=3000> повторить предачу через указанное кол-во ms
<%Repeat=10000> повторить передачу макроса через указанное кол-во ms
<%OnTimer=<%WaterMsg=4,<%AFCFrequency>Hz>>
<%Page=1>
<%AutoReturn>
<%MoveTop>
<%MoveEnd>
<%PopupTXW>
<%DupeText>
<%SeekNext>
<%SeekPrev>
<%SeekTop>
<%DigitalLevel=16384>
<%OutputVolume>
<%InputVolume>
<%Setup>
<%SetupLog>
<%SetupRadio>
<%Calibration> открыть окно для калибровки звуковой карты
<%BaseClock>
<%Clock>
<%Clock=11025.00>
<%TxOffset>
<%TxOffset=0.00>
<%DemodulatorClock>
<%FFTClock>
<%FFTSize>
<%WaterNoise>
<%WaterNoise=35,65>
<%WaterLevels>
<%WaterLevels=10,60,134,192,220,240>
<%WaterColors>
<%WaterColors=0,FF0000,FFFFFF,FF,FFFF00,FF0000,FFFF00,FFFF,80FF,FF,FF,FF>
<%SpectrumColors> показать цвет водопада
<%SpectrumColors=0,FF00,FFFFFF,808080,FFFF00,FF0000> установить цвет водопада
<%RxColors> показать цвет rx окна
<%RxColors=FFFFFF,0,FF0000,FF,E0E0E0>
<%TxColors> показать цвет tx окна
<%TxColors=FFFFFF,0,FF0000,FF,FFFFFF>
<%SoundName> показать имя звуковой карты
<%SoundDevice=MONO,-1>
<%Suspend>
<%Resume>
<%Wait=1000> ожидание в ms
<%Execute=notepad.exe <%Folder>memo.txt>
<%Shell=<%Folder>emmvari.txt>
<%Exit> выйти из программы
<%ShutDown>
<%YesNo=String>
<%YesNoCancel=String>
<%OkCancel=String>
<%Error=Macro ERROR>
<%Warning=Macro WARNING>
<%Message=Macro message>
<%WaterMsg=4,Metric=<%MetricMFSK>>
<%Repeat=1000>
<%RxStatus=Status>
<%TableCount=AAA,BBB,CCC>
<%TableStr=1,AAA,BBB,CCC>
<%Table=<%BAUD>,20.0,31.25,45.0>
<%Menu=A,B,C,D>
<%MenuB="<%Table=<%BAUD>,20.0,31.25,45.45,62.5>",20.0,31.25,45.45,62.5>
<%Menu>
<%Input=Input strings>
<%Input$>
<%Click$>
<%CLICK$>
<%vvv>
<%KeyStroke=41>
<%KeyDown=12>
<%KeyStroke=<%CHARX=V>>
<%KeyUp=12>
<%KeyUp=12>
<%DoMacro=2>
<%DoEvent=OnMode>
<%Events>
<%ButtonName=1,Clear>
<%ButtonContents=1,<%ClearTXW>>
<%PlayBack=ON>
<%PlayBack=10>
<%PlayBackSpeed=5>
<%PlayBackButtons=60,30,15>
<%PlaySound=sound.mmv>
<%PlaySound>
<%RecordSound=sound.mmv>
<%RecordSound>
<%QuickRecordSound>
<%StopPlayRecord>
<%SoundTime>
<%Slider=CW speed,<%CWSpeed>,10,60,1,10>
<%FileDialog=Text file,Text Files(*.txt)|*.txt|,Default,txt,>
<%CPUBENCHMARK>
<%RANDOM=<%PTIME>>
<%RANDOM>
<%String=Name>
<%CallProc=Name>
<%DebugProc=Name>
<%Format=%.3f,<%BAUD>>
<%Inv=<%Cond=IsSQ>>
<%Floor=<%BAUD>>
<%Log=10> вычислить логарифм указанного числа
<%Exp=2.302585092994046>
<%Sqrt=10>
<%Pow=10,2>
<%Sin=0.5> вычислить синус указанного числа
<%Cos=0.5> вычислить косинус указанного числа
<%Tan=0.5> вычислить тангенс указанного числа
<%ArcTan=0.5> вычислить арктангенс указанного числа
<%Cond=IsSQ>
<%ListSpeed=20.0,31.25,45.45,62.5,93.75,125.0,250.0>
<%ListCarrier=500,800,1000,1200,1500,1750,2000,2210>
<%ListLogFreq=1.8,3.5,7,10,14,18,21,24,28,50,144,430,1200>
<%SetCaptureLimit>
<%ClearCaptureLimit>
<%Font>
<%Font=,14,>
<%SetFocus>
<%Folder>
<%AddMenu=E&X,Caption&1,OnCaption1Click>
<%InsertMenu=&H,&P,Caption&1, OnCaption1Click>
<%ShowMenu=&F, ONOFF>
<%EnableMenu=&F, ONOFF>
<%ShortCut=&V, &C, &1, Ctrl+1>
<%CheckMenu=&H, &P, ONOFF>
<%DeleteMenu=&X>
<%DoMenu=&V,&C,&1>
<%DoButton=FFT>
<%ShowHTML=home>
<%SendMessage=PSKGNRFUNC,0,1>
<%Memory> статус памяти (загрузка в %, всего в Мб, свободно в Мб.)
<%BuffSize=4096> установить минимальный размер буфера для макроса
<%EOF> символ конца макроса
Как видите, здесь есть всё что только можно придумать, но и это еще не все! Теперь смотрите список Condition command, они применяются для создания сложных скриптов:
#if IsCall
#if IsName
#if IsHisRST
#if IsMyRST
#if IsQTH
#if IsNote
#if IsLocal
#if IsQSO
#if IsDupe
#if IsAFC
#if IsNET
#if IsTX
#if IsPTT
#if IsSQ
#if IsTone
#if IsTXEmpty
#if IsRXScroll
#if IsRepeat
#if IsIME
#if IsPlaying
#if IsFileSending
#if IsRecording
#if IsFile(test.txt)
#if IsDefined(Name)
#if IsMBCS(<%HisName>)
#if IsAlpha(<%MyNR>)
#if IsNumber(<%MyNR>)
#if IsUOS
#if IsRadioLSB
#if IsCaptureText(CQ)
#if IsOnTimer
#if IsIdle
#if IsEnglish
#if IsMfskCenter
#if IsMfskMetricSq
#if Is1stCR
#if IsPlayBack
#if IsCodeMM
#if IsCall(<%CLICK$>)
#if IsRST(<%CLICK$>)
#if IsMenu(&H, &U)
#if IsMenuEnabled(&H, &U)
#if IsMenuChecked(&H, &U)
#if IsMenuVisible(&H, &U)
#if IsButton(QSO)
#if IsButtonEnabled(QSO)
#if IsButtonDown(QSO)
#if ValFreq>=144
#if ValBaud==31.25
#if ValCarrierRX<1500
#if ValCarrierTX<1500
#if ValTimeLocal<1200
#if ValTimeUTC>=0900
#if ValDateLocal>=0801
#if ValDateUTC<0401
#if ValScope
#if ValMacro(<%VER>)>=0.37
#if ValMenu
#if StrCall==JA3QRZ
#if StrMode==GMSK
#if StrBand==40m
#if StrHisRST==599
#if StrMyRST==599
#if StrNote==???
#if StrEntity==JA
#if StrContinent==AS
#if StrVARITYPE==JA
#if StrPLATFORM==XP
#if StrMacro(<%VER>)==0.37
#else
#endif
#macro <%TX>
#proc Name
#endp конец процедуры
#repeat 3
#define Name Strings
#DELETE Name
#DELETEALL 
#exit выход из макроса
#comment строка с коментарием

Полезные макросы и дополнения от RN9AAA
Виктор rn9aaa много экспериментирует с программой mmvari, он прислал полезные и интересные скрипты, расширяющие возможности управления программой и демонстрирующие примеры использования ее скриптов.

Управление добротностью полосового DSP-фильтра
Внимание установка добротности 512 не документированна но работает! Интересно то, что повышение добротности не всегда оправданно, так что пробуйте разные варианты и определитесь сами.

<%DisableCR>
#macro <%Menu=16,32,64,80,96,112,128,256,512>
#if ValMenu
#define	_cLine	<%Format=%d,<%Input$>>
<%BPF=0><%BPFTaps=_cLine>
#endif
<%EOF>

Меню для управления DSP-фильтром
В этом макросе, я хотел показать возможность совместной работы BPF и Notch фильтров, в режиме rtty смоделированна более прогрессивная хар-ка с двумя узкими полосами, за счет взаимодействия двух фильтров. В режиме bpsk-Narrow, в заваисимости от положения курсора, эмулируется фильт нижних частот или же верхних, в дополнение к полосовому фильтру. Это дает прирост в отношении сигнал-шум и позволяет более устойчиво работать системе ATC и AFC, на предельно малом сигнале (пробуйте раные режимы). Для активации переключения, необходимо в меню еще раз нажать на bpsk-Narrow. Для полного отключения данного макроса, обязательно нажмите stop!

<%DisableCR>
<%SquelchLevel=0><%AFCON>
#macro <%Menu=rtty-U-Smart,rtty-L-Smart,bpsk-Narrow,mfsk-U-DX,mfsk-L-DX, -, Stop>
#if ValMenu == 1
#macro <%OnTimer=<%MODE=rtty-U><%Notch=<%AFCFrequency>>><%NotchTaps=512><%NotchWidth=40>
#elseif ValMenu == 2
#macro <%OnTimer=<%MODE=rtty-L><%Notch=<%AFCFrequency>>><%NotchTaps=512><%NotchWidth=40>
#elseif ValMenu == 3
<%MODE=bpsk><%BPF=0><%BPFTaps=256><%NotchTaps=512><%NotchWidth=400>
#if <%AFCFrequency> >= 1450
#macro <%OnTimer=<%Notch=<%Format=%f,<%AFCFrequency>-433>>>
#else
#macro <%OnTimer=<%Notch=<%Format=%f,<%AFCFrequency>+433>>>
#endif
#elseif  ValMenu == 4
#macro <%OnTimer=<%MODE=mfsk-U><%Notch=OFF><%BPF=0><%BPFTaps=96>>
#elseif ValMenu == 5
#macro <%OnTimer=<%MODE=mfsk-L><%Notch=OFF><%BPF=0><%BPFTaps=96>>
#elseif ValMenu == 6
#macro <%OnTimer=><%Notch=OFF>
#endif
<%EOF>

Установка порога чуствительности 'водопада'
Своего рода это подавитель визуальных помех, но не стоит ставить большие значения т.к. вы можете не увидить сигнал, он окажется за порогом отображения. С помощью этого макроса я устанавливаю уровень сигнала с приемника на зв.карту, для моего харда (AC97-ALC201A) величина равна 38-42дб, при этом, прием самых слабых сигналов оптимален. Внимание, порог индикации не документированны, автор предлагает только 35 и 65дб!

<%DisableCR>
#macro <%Menu=16,25,35,45,55,65,75>
#if ValMenu
#define	_cLine	<%Format=%d,<%Input$>>
<%WaterNoise=_cLine>
#macro <%OnTimer=<%WaterMsg=4,УРОВЕНЬ <%WaterNoise>dB>>
#endif
<%EOF>

Определение страны по позывному
Скрип облегчает определение страны по позывному. Имеет два режима Auto Info Call автоматический анализ принятой информации и поиск в ней позывных, и ручной режим Manual info Call, вы сами выбираете позывной с помощью клика мышки.

<%DisableCR>
#comment  made  rn9aaa 2004.11.06
#macro <%Menu=Auto Info Call,Manual info Call,-, Stop>
#if ValMenu == 1
#macro <%OnTimer=<%WaterMsg=4,<%Capture>><%WaterMsg=3,<%EntityName=<%Capture>> ** <%Continent=<%Capture>>>>
#elseif ValMenu == 2
#macro <%OnTimer=<%WaterMsg=3,<%EntityName=<%HisCall>> ** <%Continent=<%HisCall>>>>
#elseif ValMenu == 3
#macro <%OnTimer=>
#endif
<%EOF>

Изменение разноса между частотами
Часто в режиме RTTY(FSK-W) операторы используют нестандартные разносы частот, для быстрой настройки на такие сигналы, я предлагаю следующий скрипт (примечание: стандарт для RTTY HAM 170HZ).

<%DisableCR><%DisableTAB>
#comment  made  rn9aaa 2004.11.06
#define	_tTitle	Shift RTTY and FSK-W 
#define	_tCommand	TxShift
#define	_tRange	"10,450,1"
#macro <%Menu=_tTitle>
#if ValMenu
#define	_strArg	<%TableStr=<%Menu>,_tTitle>,<%TableStr=<%Menu>,_tCommand>,<%TableStr=<%Menu>,_tRange>
<%CallProc=Slider, _strArg>
#endif
#proc Slider @Title, @Command, @Min, @Max, @Step, @NumScales
<%DisableCR>
#macro <%Slider=@Title, <%@Command>, @Min, @Max, @Step, @NumScales>
#if StrMacro(<%Input$>)
<%@Command=<%Input$>> <%RxShift=<%Input$>>
#endif
#endp 
<%EOF>

Изменения в файле ARRL.DX
Скачайте себе и положите в директорию с программой MMVARI, новый файл ARRL.DX , он расширен и дополнен, базой данных по российским и украинским префиксам. Теперь, пользоваться программой стало еще удобнее!

Эти примеры, сделаны мной для изучения возможностей программы, все константы вы можете менять в разумных пределах и попробрвать подобрать оптимальные значения для вашей системы PC<-->TX/RX. Я не несу какую либо ответственность за последствия в применении данного макро-кода, все что вы делаете, является только вашей личной волей и стремлением к познанию.

Заключение
MMVARI использует продвинутый алгоритм, который позволяет вести качественный прием слабых сигналов и по этому показателю она выигрывает у других программ, аналогичного назначения. Скорость обмена регулируется во всех цифровых видах. Программа пока официально не выпущена, но даже бета версии работаю очень хорошо. Скачать программу, можно с японского сайта автора, размер архива примерно 700Кб. С другими программами JE3HHT, вы можете познакомится на сайте mmhamsoft.ham-radio.ch.

rn9aaa/9
ua6hjq
Сайт создан в системе uCoz