Вверх ↑
Этот топик читают: Гость
Ответов: 8
Рейтинг: 0
#1: 2017-03-26 20:10:36 ЛС | профиль | цитата
Сделал таблицу по учебному видео: https://www.youtube.com/watch?v=Xt28TMaFnW0#t=115.072 1я часть
https://www.youtube.com/watch?v=Xt28TMaFnW0#t=115.072 2я часть
Все названия столбцов на русском языке, кроме первого(№)!!!
Данные записанные в таблицу не сохраняются в БД. Номера в столбце № остаются, кнопки добавления строк работают
Возможно дело в том что столбцы на русском языке, программа их показывает, но данные занесенные в них не сохраняются при закрытии программы.
Так же не сохраняются изменения в столбце №, при закрытии программа откатывает их на старые значения. И при удалении удаляет все строки с похожим номером.
В обучающем видео все заносилось в БД.
Знаю, что истина где-то рядом, но видимо слишком близко чтоб разглядеть
Есть ли обучающие видео, в которых можно обойтись без столбца нумерации и сделать столбец который будет отображать впереди записи с ближайшей датой. Например
26/03/2017
27/03/2017
и т.д.
Буду очень благодарен за помощь
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 16884
Рейтинг: 1237
#2: 2017-03-26 20:25:40 ЛС | профиль | цитата
VicSpa, схема где ?
карма: 24
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8
Рейтинг: 0
#3: 2017-03-26 20:50:57 ЛС | профиль | цитата
Tad писал(а):
VicSpa, схема где ?

Ее можно выгрузить или скрин нужен?
Извините, я еще не до конца во все въехал
карма: 0

0
Ответов: 16884
Рейтинг: 1237
#4: 2017-03-26 21:00:18 ЛС | профиль | цитата
1. На поле Редактора схем жмёшь F1.
2. Открываешь ветку "Основы работы с сайтом"
3. Читаешь "Обмен файлами".
карма: 24
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8
Рейтинг: 0
#5: 2017-03-26 21:00:25 ЛС | профиль | цитата
Кажется это файл с расширением SHA
Вот ссылка на облако https://cloud.mail.ru/public/EBbH/b9UwqwPcp

--- Добавлено в 2017-03-26 21:03:55

Add(MainForm,2953706,161,434)
{
Width=1202
Height=820
Point(onClose)
link(onCreate,15693288:doOpen,[])
link(onClose,15693288:doClose,[])
}
Add(DSC_Query,8494410,476,448)
{
SQL="SELECT * FROM table1"
DSManager="db1"
link(onQuery,9011583:doMT_Add,[(587,454)(587,321)])
}
Add(Button,14631524,231,273)
{
Left=272
Top=695
Width=145
Height=30
Caption="Добавить строку"
link(onClick,15721359:doOperation,[])
}
Add(Math,15721359,378,273)
{
Op2=1
ResultType=0
link(onResult,3972973:doEvent1,[(457,279)(457,300)])
link(Op1,9011583:Count,[(384,107)(636,107)(636,363)(699,363)])
}
Add(Hub,3972973,497,294)
{
link(onEvent1,9011583:doAdd,[(602,300)(602,286)])
link(onEvent2,9411013:doString,[(588,307)(588,223)])
}
Add(FormatStr,9411013,511,217)
{
DataCount=1
Mask="INSERT INTO table1 (№) VALUES (%1)\r\n"
Point(FString)
link(onFString,2955409:doExec,[])
link(Str1,15721359:Result,[(517,205)(370,205)(370,366)(384,366)])
}
Add(DSC_Exec,2955409,588,217)
{
SQL="CREATE TABLE table1 (№ int, Имя клиента char, Статус char, Контактное лицо ФИО char, Город char, Адрес char, Дата последнего звонка char, Когда позвонить char, Комментарии char)"
DSManager="db1"
link(SQL,9411013:FString,[(594,205)(556,205)(556,261)(517,261)])
}
Add(ArrayRW,13625845,791,385)
{
link(onRead,16401883:doSplit,[(845,391)(845,384)])
link(Array,13481869:Var3,[(797,351)])
}
Add(MultiStrPart,16401883,868,378)
{
Char="\9"
Count=9
link(onSplit,15284765:doString,[(946,384)(946,422)(849,422)(849,517)])
}
Add(FormatStr,15284765,868,511)
{
DataCount=9
Mask="UPDATE table1 SET Имя клиента='%2', Статус='%3', Контактное лицо ФИО='%4', Город='%5', Адрес='%6', Дата последнего звонка='%7', Когда позвонить='%8', Комментарии='%9' WHERE №='%1'"
Point(FString)
link(onFString,10616952:doExec,[(978,517)(978,489)])
link(Str1,16401883art1,[])
link(Str2,16401883art2,[])
link(Str3,16401883art3,[])
link(Str4,16401883art4,[])
link(Str5,16401883art5,[])
link(Str6,16401883art6,[])
link(Str7,16401883art7,[])
link(Str8,16401883art8,[])
link(Str9,16401883art9,[])
}
Add(DSC_Exec,10616952,1022,483)
{
DSManager="db1"
link(SQL,15284765:FString,[(1028,471)(951,471)(951,555)(874,555)])
}
Add(Button,9498731,350,602)
{
Left=465
Top=695
Width=145
Height=30
Caption="Удалить строку"
link(onClick,3644720:doEvent1,[])
}
Add(Hub,3644720,553,602)
{
link(onEvent1,5843597:doRead,[(627,608)(627,601)])
link(onEvent2,10939120:doData,[(581,615)(581,643)])
}
Add(ArrayRW,5843597,693,595)
{
link(onRead,13870066:doSplit,[])
link(Array,13481869:Var2,[(699,510)(762,510)])
link(Index,1843714:Var2,[(706,561)(629,561)])
}
Add(MultiStrPart,13870066,756,595)
{
Char="\9"
Count=1
link(onSplit,896997:doString,[])
}
Add(FormatStr,896997,812,595)
{
DataCount=1
Mask="DELETE FROM table1 WHERE №=%1"
Point(FString)
link(onFString,3839177:doExec,[])
link(Str1,13870066art1,[(818,583)(790,583)(790,639)(762,639)])
}
Add(DSC_Exec,3839177,868,595)
{
DSManager="db1"
link(SQL,896997:FString,[(874,583)(846,583)(846,639)(818,639)])
}
Add(DoData,10939120,595,637)
{
link(onEventData,9011583:doDelete,[(646,643)(646,300)])
link(Data,1843714:Var1,[(601,530)])
}
Add(DS_SQLite,15693288,343,448)
{
Name="db1"
FileName="C:\\Documents and Settings\\Admin\\Application Data\\HiAsm_AltBuild\\MyDataBase.db"
link(onOpen,16646785:doEvent1,[])
}
Add(Hub,16646785,406,448)
{
link(onEvent1,8494410:doQuery,[])
link(onEvent2,3629262:doExec,[(448,461)(448,517)])
}
Add(GetDataEx,13481869,756,346)
{
Angle=3
link(Data,9011583:Strings,[(713,351)])
}
Add(GetDataEx,1843714,623,525)
{
link(Data,9011583:Index,[(629,372)(720,372)])
}
Add(StringTableMT,9011583,693,280)
{
Left=230
Top=45
Width=890
Height=620
Columns=#1:№|11:Имя клиента|6:Статус|19:Контактное лицо ФИО|5:Город|5:Адрес|22:Дата последнего звонка|15:Когда позвонить|12:Комментарии |
StrDelimiter="\9"
Redaction=0
IconsCheck=[]
MiscIcons=[]
Icons=[]
Point(doMT_Add)
Point(onLineChange)
Point(Strings)
Point(Index)
link(onLineChange,13625845:doRead,[(758,293)(758,391)])
}
Add(DSC_Exec,3629262,476,511)
{
SQL="CREATE TABLE table1 (№ int, Имя клиента char, Статус char, Контактное лицо ФИО char, Город char, Адрес char, Дата последнего звонка char, Когда позвонить char, Комментарии char)"
DSManager="db1"
}

--- Добавлено в 2017-03-26 21:06:10


Add(MainForm,2953706,161,434)
{
Width=1202
Height=820
Point(onClose)
link(onCreate,15693288:doOpen,[])
link(onClose,15693288:doClose,[])
}
Add(DSC_Query,8494410,476,448)
{
SQL="SELECT * FROM table1"
DSManager="db1"
link(onQuery,9011583:doMT_Add,[(587,454)(587,321)])
}
Add(Button,14631524,231,273)
{
Left=272
Top=695
Width=145
Height=30
Caption="Добавить строку"
link(onClick,15721359:doOperation,[])
}
Add(Math,15721359,378,273)
{
Op2=1
ResultType=0
link(onResult,3972973:doEvent1,[(457,279)(457,300)])
link(Op1,9011583:Count,[(384,107)(636,107)(636,363)(699,363)])
}
Add(Hub,3972973,497,294)
{
link(onEvent1,9011583:doAdd,[(602,300)(602,286)])
link(onEvent2,9411013:doString,[(588,307)(588,223)])
}
Add(FormatStr,9411013,511,217)
{
DataCount=1
Mask="INSERT INTO table1 (№) VALUES (%1)\r\n"
Point(FString)
link(onFString,2955409:doExec,[])
link(Str1,15721359:Result,[(517,205)(370,205)(370,366)(384,366)])
}
Add(DSC_Exec,2955409,588,217)
{
SQL="CREATE TABLE table1 (№ int, Имя клиента char, Статус char, Контактное лицо ФИО char, Город char, Адрес char, Дата последнего звонка char, Когда позвонить char, Комментарии char)"
DSManager="db1"
link(SQL,9411013:FString,[(594,205)(556,205)(556,261)(517,261)])
}
Add(ArrayRW,13625845,791,385)
{
link(onRead,16401883:doSplit,[(845,391)(845,384)])
link(Array,13481869:Var3,[(797,351)])
}
Add(MultiStrPart,16401883,868,378)
{
Char="\9"
Count=9
link(onSplit,15284765:doString,[(946,384)(946,422)(849,422)(849,517)])
}
Add(FormatStr,15284765,868,511)
{
DataCount=9
Mask="UPDATE table1 SET Имя клиента='%2', Статус='%3', Контактное лицо ФИО='%4', Город='%5', Адрес='%6', Дата последнего звонка='%7', Когда позвонить='%8', Комментарии='%9' WHERE №='%1'"
Point(FString)
link(onFString,10616952:doExec,[(978,517)(978,489)])
link(Str1,16401883:Part1,[])
link(Str2,16401883:Part2,[])
link(Str3,16401883:Part3,[])
link(Str4,16401883:Part4,[])
link(Str5,16401883:Part5,[])
link(Str6,16401883:Part6,[])
link(Str7,16401883:Part7,[])
link(Str8,16401883:Part8,[])
link(Str9,16401883:Part9,[])
}
Add(DSC_Exec,10616952,1022,483)
{
DSManager="db1"
link(SQL,15284765:FString,[(1028,471)(951,471)(951,555)(874,555)])
}
Add(Button,9498731,350,602)
{
Left=465
Top=695
Width=145
Height=30
Caption="Удалить строку"
link(onClick,3644720:doEvent1,[])
}
Add(Hub,3644720,553,602)
{
link(onEvent1,5843597:doRead,[(627,608)(627,601)])
link(onEvent2,10939120:doData,[(581,615)(581,643)])
}
Add(ArrayRW,5843597,693,595)
{
link(onRead,13870066:doSplit,[])
link(Array,13481869:Var2,[(699,510)(762,510)])
link(Index,1843714:Var2,[(706,561)(629,561)])
}
Add(MultiStrPart,13870066,756,595)
{
Char="\9"
Count=1
link(onSplit,896997:doString,[])
}
Add(FormatStr,896997,812,595)
{
DataCount=1
Mask="DELETE FROM table1 WHERE №=%1"
Point(FString)
link(onFString,3839177:doExec,[])
link(Str1,13870066:Part1,[(818,583)(790,583)(790,639)(762,639)])
}
Add(DSC_Exec,3839177,868,595)
{
DSManager="db1"
link(SQL,896997:FString,[(874,583)(846,583)(846,639)(818,639)])
}
Add(DoData,10939120,595,637)
{
link(onEventData,9011583:doDelete,[(646,643)(646,300)])
link(Data,1843714:Var1,[(601,530)])
}
Add(DS_SQLite,15693288,343,448)
{
Name="db1"
FileName="C:\\Documents and Settings\\Admin\\Application Data\\HiAsm_AltBuild\\MyDataBase.db"
link(onOpen,16646785:doEvent1,[])
}
Add(Hub,16646785,406,448)
{
link(onEvent1,8494410:doQuery,[])
link(onEvent2,3629262:doExec,[(448,461)(448,517)])
}
Add(GetDataEx,13481869,756,346)
{
Angle=3
link(Data,9011583:Strings,[(713,351)])
}
Add(GetDataEx,1843714,623,525)
{
link(Data,9011583:Index,[(629,372)(720,372)])
}
Add(StringTableMT,9011583,693,280)
{
Left=230
Top=45
Width=890
Height=620
Columns=#1:№|11:Имя клиента|6:Статус|19:Контактное лицо ФИО|5:Город|5:Адрес|22:Дата последнего звонка|15:Когда позвонить|12:Комментарии |
StrDelimiter="\9"
Redaction=0
IconsCheck=[]
MiscIcons=[]
Icons=[]
Point(doMT_Add)
Point(onLineChange)
Point(Strings)
Point(Index)
link(onLineChange,13625845:doRead,[(758,293)(758,391)])
}
Add(DSC_Exec,3629262,476,511)
{
SQL="CREATE TABLE table1 (№ int, Имя клиента char, Статус char, Контактное лицо ФИО char, Город char, Адрес char, Дата последнего звонка char, Когда позвонить char, Комментарии char)"
DSManager="db1"
}

Редактировалось 2 раз(а), последний 2017-03-26 21:06:10
карма: 0

0
Ответов: 16884
Рейтинг: 1237
#6: 2017-03-26 22:24:52 ЛС | профиль | цитата
VicSpa,

Add(MainForm,2953706,455,238)
{
Width=1202
Height=820
Point(onClose)
link(onCreate,15693288:doOpen,[])
link(onClose,15693288:doClose,[])
}
Add(DSC_Query,8494410,623,266)
{
SQL="SELECT * FROM table1"
DSManager="db1"
link(onQuery,9011583:doMT_Add,[(670,272)(670,244)])
link(onColumns,9011583:doMT_AddCols,[(676,279)(676,251)])
}
Add(Button,14631524,455,203)
{
Left=272
Top=695
Width=145
Height=30
Caption="Добавить строку"
link(onClick,2731526:doQuery,[])
}
Add(ArrayRW,13625845,755,210)
{
link(onRead,16401883:doSplit,[])
link(Array,13481869:Var3,[(761,198)(735,198)(735,274)])
}
Add(MultiStrPart,16401883,812,210)
{
Char="\9"
Count=9
link(onSplit,15284765:doString,[(889,216)(889,193)(800,193)(800,279)])
}
Add(FormatStr,15284765,812,273)
{
DataCount=9
Mask="INSERT OR REPLACE INTO table1 values(%1, '%2', '%3', '%4', '%5', '%6', '%7', '%8', '%9');"
Point(FString)
link(onFString,11104942:doWork2,[])
link(Str1,16401883:Part1,[])
link(Str2,16401883:Part2,[])
link(Str3,16401883:Part3,[])
link(Str4,16401883:Part4,[])
link(Str5,16401883:Part5,[])
link(Str6,16401883:Part6,[])
link(Str7,16401883:Part7,[])
link(Str8,16401883:Part8,[])
link(Str9,16401883:Part9,[])
}
Add(DSC_Exec,10616952,931,273)
{
DSManager="db1"
link(onExec,15220285:doEvent2,[(978,279)(978,383)(569,383)(569,272)])
}
Add(Button,9498731,623,329)
{
Left=465
Top=695
Width=145
Height=30
Caption="Удалить строку"
link(onClick,5843597:doRead,[])
}
Add(ArrayRW,5843597,693,329)
{
link(onRead,13870066:doSplit,[])
link(Array,13481869:Var1,[(699,274)])
link(Index,9011583:Index,[])
}
Add(MultiStrPart,13870066,756,329)
{
Char="\9"
Count=1
link(onSplit,896997:doString,[])
}
Add(FormatStr,896997,812,329)
{
DataCount=1
Mask="DELETE FROM table1 WHERE №=%1"
Point(FString)
link(onFString,11104942:doWork3,[(907,335)])
link(Str1,13870066:Part1,[(818,317)(800,317)(800,376)(762,376)])
}
Add(DS_SQLite,15693288,511,252)
{
Name="db1"
FileName="MyDataBase.db"
link(onOpen,16646785:doEvent1,[])
}
Add(Hub,16646785,553,252)
{
link(onEvent1,3629262:doExec,[(612,258)(612,223)])
link(onEvent2,15220285:doEvent1,[])
}
Add(GetDataEx,13481869,707,269)
{
link(Data,9011583:Strings,[])
}
Add(StringTableMT,9011583,686,203)
{
Left=230
Top=45
Width=890
Height=620
StrDelimiter="\9"
ClearAll=0
Redaction=0
Grid=0
IconsCheck=[]
MiscIcons=[]
Icons=[]
Point(doMT_Add)
Point(onLineChange)
Point(Index)
Point(Strings)
Point(doMT_AddCols)
link(onLineChange,13625845:doRead,[])
}
Add(DSC_Exec,3629262,623,217)
{
SQL="CREATE TABLE IF NOT EXISTS table1 (\r\n № INTEGER PRIMARY KEY, \r\n [Имя клиента] char, \r\n [Статус] char,\r\n [Контактное лицо ФИО] char,\r\n [Город] char,\r\n [Адрес] char, \r\n [Дата последнего звонка] char, \r\n [Когда позвонить] char, \r\n [Комментарии] char);"
DSManager="db1"
}
Add(HubEx,11104942,903,273)
{
link(onEvent,10616952:doExec,[])
}
Add(DSC_Query,2731526,511,203)
{
SQL="SELECT CASE count()\r\n WHEN 0 THEN 1 ELSE max(№)+1 END\r\n FROM table1;"
DSManager="db1"
link(onQuery,9011583:doAdd,[])
}
Add(Hub,15220285,581,259)
{
InCount=2
link(onEvent1,9011583:doClear,[(663,265)(663,216)])
link(onEvent2,8494410:doQuery,[])
}
Add(InfoTip,13358741,168,196)
{
Info=#35:CREATE TABLE IF NOT EXISTS table1 (|24: № INTEGER PRIMARY KEY, |21: [Имя клиента] char, |15: [Статус] char,|28: [Контактное лицо ФИО] char,|14: [Город] char,|15: [Адрес] char, |32: [Дата последнего звонка] char, |25: [Когда позвонить] char, |21: [Комментарии] char);|
HAlign=0
Width=246
Height=144
Margin=5
}

карма: 24
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8
Рейтинг: 0
#7: 2017-03-27 13:03:28 ЛС | профиль | цитата
Спасибо огромное! Плюсов вам в карму+++++++
Я так понял, что вы убрали мат. логику,изменили код для создания таблицы. Но я так и не вкурил, почему у меня в базу не делалось записи.
Знаете ли вы код для того чтобы номер в списке становился на единицу меньше при удалении строк?
К примеру, я удалил пятую строку, соответственно, 6я должна стать 5й, а 7я 6ой и так далее.
По ним потом планируется вести количественный учет.
Так как по этой логике, программа удаляет строки с одинаковым значением столбца №
На даты я думаю делать отдельную напоминалку, а эта таблица будет как основной список
карма: 0

0
Ответов: 16884
Рейтинг: 1237
#8: 2017-03-27 13:21:45 ЛС | профиль | цитата
VicSpa писал(а):
почему у меня в базу не делалось записи.
1. Если названия столбцов состоят из нескольких слов, то их (названия) нужно заключать или в кавычки, или в квадратные скобки.
2. В компонентах работы с БД есть точка onError. Цепляешь к ней компонент Контролы->Message и читаешь почему.
карма: 24
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8
Рейтинг: 0
#9: 2017-03-27 13:25:32 ЛС | профиль | цитата
Спасибо, вы меня избавили от многих мучений в дальнейшем
карма: 0

0
Ответов: 16884
Рейтинг: 1237
#10: 2017-03-27 14:08:16 ЛС | профиль | цитата
А на номера вообще смотреть не надо.
Add(MainForm,2953706,455,238)
{
Width=1202
Height=820
Point(onClose)
link(onCreate,15693288:doOpen,[])
link(onClose,15693288:doClose,[])
}
Add(DSC_Query,8494410,623,266)
{
SQL="SELECT * FROM table1"
DSManager="db1"
link(onQuery,9011583:doMT_Add,[(673,272)(673,244)])
}
Add(Button,14631524,455,203)
{
Left=272
Top=695
Width=145
Height=30
Caption="Добавить строку"
link(onClick,2731526:doQuery,[])
}
Add(ArrayRW,13625845,755,210)
{
link(onRead,16401883:doSplit,[])
link(Array,13481869:Var3,[(761,198)(735,198)(735,274)])
}
Add(MultiStrPart,16401883,812,210)
{
Char="\9"
Count=8
link(onSplit,15284765:doString,[(889,216)(889,193)(800,193)(800,258)])
}
Add(FormatStr,15284765,812,252)
{
DataCount=9
Mask="INSERT OR REPLACE INTO table1 values(%1, '%2', '%3', '%4', '%5', '%6', '%7', '%8', '%9');"
Point(FString)
link(onFString,11104942:doWork2,[])
link(Str1,16401883:Part1,[])
link(Str2,16401883:Part2,[])
link(Str3,16401883:Part3,[])
link(Str4,16401883:Part4,[])
link(Str5,16401883:Part5,[])
link(Str6,16401883:Part6,[])
link(Str7,16401883:Part7,[])
link(Str8,16401883:Part8,[])
}
Add(DSC_Exec,10616952,931,252)
{
DSManager="db1"
link(onExec,15220285:doEvent2,[(976,258)(976,362)(569,362)(569,272)])
}
Add(Button,9498731,623,308)
{
Left=465
Top=695
Width=145
Height=30
Caption="Удалить строку"
link(onClick,5843597:doRead,[])
}
Add(ArrayRW,5843597,693,308)
{
link(onRead,13870066:doSplit,[])
link(Array,13481869:Var1,[(699,274)])
link(Index,9011583:Index,[])
}
Add(MultiStrPart,13870066,756,308)
{
Char="\9"
Count=1
link(onSplit,896997:doString,[])
}
Add(FormatStr,896997,812,308)
{
DataCount=1
Mask="DELETE FROM table1 WHERE №=%1"
Point(FString)
link(onFString,11104942:doWork3,[(907,314)])
}
Add(DS_SQLite,15693288,511,252)
{
Name="db1"
FileName="MyDataBase.db"
link(onOpen,16646785:doEvent1,[])
}
Add(Hub,16646785,553,252)
{
link(onEvent1,3629262:doExec,[(612,258)(612,230)])
link(onEvent2,15220285:doEvent1,[])
}
Add(GetDataEx,13481869,707,269)
{
link(Data,9011583:Strings,[])
}
Add(StringTableMT,9011583,686,203)
{
Left=230
Top=45
Width=890
Height=620
Columns=#3:№=0|11:Имя клиента|6:Статус|23:Контактное лицо ФИО=200|5:Город|9:Адрес=150|22:Дата последнего звонка|15:Когда позвонить|12:Комментарии |
StrDelimiter="\9"
Redaction=0
Grid=0
IconsCheck=[]
MiscIcons=[]
Icons=[]
Point(doMT_Add)
Point(onLineChange)
Point(Index)
Point(Strings)
Point(doSelEndStr)
link(onLineChange,13625845:doRead,[])
}
Add(DSC_Exec,3629262,623,224)
{
SQL="CREATE TABLE IF NOT EXISTS table1 (\r\n № INTEGER PRIMARY KEY, \r\n [Имя клиента] char, \r\n [Статус] char,\r\n [Контактное лицо ФИО] char,\r\n [Город] char,\r\n [Адрес] char, \r\n [Дата последнего звонка] char, \r\n [Когда позвонить] char, \r\n [Комментарии] char);"
DSManager="db1"
}
Add(HubEx,11104942,903,252)
{
link(onEvent,10616952:doExec,[])
}
Add(DSC_Query,2731526,511,203)
{
SQL="SELECT CASE count()\r\n WHEN 0 THEN 1 ELSE max(№)+1 END\r\n FROM table1;"
DSManager="db1"
link(onQuery,12215898:doEvent1,[])
}
Add(Hub,15220285,581,259)
{
InCount=2
link(onEvent1,9011583:doClear,[(669,265)(669,216)])
link(onEvent2,8494410:doQuery,[])
}
Add(InfoTip,13358741,168,196)
{
Info=#35:CREATE TABLE IF NOT EXISTS table1 (|24: № INTEGER PRIMARY KEY, |21: [Имя клиента] char, |15: [Статус] char,|28: [Контактное лицо ФИО] char,|14: [Город] char,|15: [Адрес] char, |32: [Дата последнего звонка] char, |25: [Когда позвонить] char, |21: [Комментарии] char);|
HAlign=0
Width=246
Height=165
Margin=5
}
Add(Hub,12215898,560,203)
{
link(onEvent1,9011583:doAdd,[])
link(onEvent2,9011583:doSelEndStr,[(664,216)(664,251)])
}

Если, например, ты захочешь вывести в MT-таблицу записи отсортированные по "Имя клиента",
SELECT * FROM table1 ORDER BY [Имя клиента];
то что там будет с колонкой номеров [№] !!!! предсказать сложно.

Редактировалось 2 раз(а), последний 2017-03-27 14:16:53
карма: 24
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8
Рейтинг: 0
#11: 2017-03-27 14:51:24 ЛС | профиль | цитата
Спасибо, получается в данном варианте кода, вы присвоили столбцу № значение 0 в мт списке и он убрал его из видимой части программы?
Эта таблица будет основным рабочим полем в программе и будет выводиться первой и я так понимаю, что с помощью этого оператора SELECT * FROM table1 ORDER BY [Имя клиента] я смогу цеплять данные из 1ой таблицы в другие таблицы?
Естественно, если у меня все таблицы будут в одной БД

--- Добавлено в 2017-03-27 15:08:38

Кстати, в новом коде кнопка удаления перестала работать

Редактировалось 1 раз(а), последний 2017-03-27 15:08:38
карма: 0

0
Ответов: 16884
Рейтинг: 1237
#12: 2017-03-27 15:23:29 ЛС | профиль | цитата
1. Вообще-то я не знаю, что ты задумал.
2. По хорошему, ты вообще не должен выводить НИЧЕГО в MT-таблицу.
3. [Имя клиента] в записях table1 может повторяться ?
○ Если да, то в БД нужна таблица klient(id INTEGER PRIMARY KEY, fio TEXT, tel TEXT) и т.д.
○ A в table1 пишется вместо имени клиента его id, т.е. номер записи этого клиента в таблице klient
и так далее.

Редактировалось 1 раз(а), последний 2017-03-27 15:24:48
карма: 24
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8
Рейтинг: 0
#13: 2017-03-27 15:46:26 ЛС | профиль | цитата
Если кратко, то программку для помощи менеджеру по продажам.
Она у меня идет в качестве дипломного проекта. Можно было конечно взять любую с открытым кодом и выдать за свою, но это не наш метод. Да и хочется понять принципы работы в среде, а так как я больше чем уверен, что в коммисси не будет разбирающихся с данной среде людей, мне будет проще защититься.
Данная таблица это основное рабочее поле, куда будут заноситься все данные о совершенных звонках.
Но одной таблицы мало для полноценного проекта.
Еще планирую прикрутить кнопки для вызова статистики по обзвонам, медиаплеер для прослушивания записей переговоров с АТС(если они будут вестись), напоминалку и скрипты для продаж, там будет только текст без таблицы.
Вот как раз статистика будет выводить списки тех клиентов, которые заключили договора, тех которые не заключили и тех кто еще в раздумьях. Соответственно будет цеплять данные из этой основной таблицы. Так же напоминалка будет к ним обращаться, к примеру по дате
карма: 0

0
Ответов: 16884
Рейтинг: 1237
#14: 2017-03-28 08:07:06 ЛС | профиль | цитата
Интересно, а как будешь различать
VicSpa писал(а):
тех которые не заключили и тех кто еще в раздумьях

VicSpa писал(а):
Кстати, в новом коде кнопка удаления перестала работать

VicSpa_1.jpg
Куда-то пропал линк (красный жирный)
Редактировалось 2 раз(а), последний 2017-03-28 08:35:12
карма: 24
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8
Рейтинг: 0
#15: 2017-03-29 19:06:18 ЛС | профиль | цитата
Куда-то пропал линк (красный жирный)
Спасибо, исправил, заработало.
По поводу того как различать, я думаю сделать в столбце "статус" два значения на выбор, заключен договор или нет.
А от них уже плясать в статистике. Надо покопаться в командах sql, надеюсь справиться с этой задачей сам.
Пока накручиваю свистелки-перделки типа плеера
Вот что успел сделать позавчера
Add(MainForm,4600825,287,42)
{
Width=1202
Height=820
Point(onClose)
link(onCreate,15693288:doOpen,[])
link(onClose,15693288:doClose,[])
}
Add(DSC_Query,8494410,455,70)
{
SQL="SELECT * FROM table1"
DSManager="db1"
link(onQuery,9011583:doMT_Add,[(505,76)(505,48)])
}
Add(Button,14631524,287,7)
{
Left=272
Top=695
Width=145
Height=30
Caption="Добавить строку"
link(onClick,2731526:doQuery,[])
}
Add(ArrayRW,13625845,587,14)
{
link(onRead,16401883:doSplit,[])
link(Array,13481869:Var3,[(593,2)(567,2)(567,78)])
}
Add(MultiStrPart,16401883,644,14)
{
Char="\9"
Count=8
link(onSplit,15284765:doString,[(721,20)(721,-3)(632,-3)(632,62)])
}
Add(FormatStr,15284765,644,56)
{
DataCount=9
Mask="INSERT OR REPLACE INTO table1 values(%1, '%2', '%3', '%4', '%5', '%6', '%7', '%8', '%9');"
Point(FString)
link(onFString,11104942:doWork2,[])
link(Str1,16401883:Part1,[])
link(Str2,16401883:Part2,[])
link(Str3,16401883:Part3,[])
link(Str4,16401883:Part4,[])
link(Str5,16401883:Part5,[])
link(Str6,16401883:Part6,[])
link(Str7,16401883:Part7,[])
link(Str8,16401883:Part8,[])
}
Add(DSC_Exec,10616952,763,56)
{
DSManager="db1"
link(onExec,15220285:doEvent2,[(808,62)(808,166)(401,166)(401,76)])
}
Add(Button,9498731,455,112)
{
Left=465
Top=695
Width=145
Height=30
Caption="Удалить строку"
link(onClick,5843597:doRead,[])
}
Add(ArrayRW,5843597,525,112)
{
link(onRead,13870066:doSplit,[])
link(Array,13481869:Var1,[(531,78)])
link(Index,9011583:Index,[])
}
Add(MultiStrPart,13870066,588,112)
{
Char="\9"
Count=1
link(onSplit,896997:doString,[])
}
Add(FormatStr,896997,644,112)
{
DataCount=1
Mask="DELETE FROM table1 WHERE №=%1"
Point(FString)
link(onFString,11104942:doWork3,[(739,118)])
link(Str1,13870066:Part1,[(650,100)(622,100)(622,156)(594,156)])
}
Add(DS_SQLite,15693288,343,56)
{
Name="db1"
FileName="C:\Documents and Settings\Admin\Application Data\HiAsm_AltBuild\MyDataBase.db"
link(onOpen,16646785:doEvent1,[])
}
Add(Hub,16646785,385,56)
{
link(onEvent1,3629262:doExec,[(444,62)(444,34)])
link(onEvent2,15220285:doEvent1,[])
}
Add(GetDataEx,13481869,539,73)
{
link(Data,9011583:Strings,[])
}
Add(StringTableMT,9011583,518,7)
{
Left=230
Top=45
Width=890
Height=620
Columns=#3:№=0|11:Имя клиента|6:Статус|23:Контактное лицо ФИО=200|5:Город|9:Адрес=150|22:Дата последнего звонка|15:Когда позвонить|12:Комментарии |
StrDelimiter="\9"
Redaction=0
Grid=0
IconsCheck=[]
MiscIcons=[]
Icons=[]
Point(doMT_Add)
Point(onLineChange)
Point(Index)
Point(Strings)
Point(doSelEndStr)
link(onLineChange,13625845:doRead,[])
}
Add(DSC_Exec,3629262,455,28)
{
SQL="CREATE TABLE IF NOT EXISTS table1 (\r\n № INTEGER PRIMARY KEY, \r\n [Имя клиента] char, \r\n [Статус] char,\r\n [Контактное лицо ФИО] char,\r\n [Город] char,\r\n [Адрес] char, \r\n [Дата последнего звонка] char, \r\n [Когда позвонить] char, \r\n [Комментарии] char);"
DSManager="db1"
}
Add(HubEx,11104942,735,56)
{
link(onEvent,10616952:doExec,[])
}
Add(DSC_Query,2731526,343,7)
{
SQL="SELECT CASE count()\r\n WHEN 0 THEN 1 ELSE max(№)+1 END\r\n FROM table1;"
DSManager="db1"
link(onQuery,12215898:doEvent1,[])
}
Add(Hub,15220285,413,63)
{
InCount=2
link(onEvent1,9011583:doClear,[(501,69)(501,20)])
link(onEvent2,8494410:doQuery,[])
}
Add(Hub,12215898,392,7)
{
link(onEvent1,9011583:doAdd,[])
link(onEvent2,9011583:doSelEndStr,[(496,20)(496,55)])
}
Add(ChildForm,5379056,350,329)
{
}
BEGIN_SDK
Add(EditMulti,14632469,21,21)
{
EventCount=1
WorkCount=2
Width=580
Height=375
link(doWork1,12095988:doShowModal,[(109,27)(109,104)])
}
Add(MainForm,12095988,196,70)
{
Left=35
Top=105
Width=982
Height=724
Visible=1
Caption="Результативность"
Point(doShowModal)
}
Add(Button,5208160,49,140)
{
Left=385
Top=505
Width=135
Height=90
Caption="ок"
link(onClick,10987686:doEvent1,[(111,146)(111,139)])
}
Add(Hub,10987686,140,133)
{
link(onEvent1,12095988:doClose,[(175,139)(175,97)])
link(onEvent2,14632469:onEvent1,[(378,146)(378,27)])
}
END_SDK
Add(ChildForm,16178076,350,210)
{
}
BEGIN_SDK
Add(EditMulti,3142652,21,21)
{
EventCount=1
WorkCount=2
Width=580
Height=375
link(doWork1,13684296:doShowModal,[(109,27)(109,104)])
}
Add(MainForm,13684296,196,70)
{
Left=35
Top=105
Width=982
Height=724
Visible=1
Caption="Задачи на день"
Point(doShowModal)
}
Add(Button,10924964,49,140)
{
Left=385
Top=505
Width=135
Height=90
Caption="ок"
link(onClick,15067112:doEvent1,[(111,146)(111,139)])
}
Add(Hub,15067112,140,133)
{
link(onEvent1,13684296:doClose,[(175,139)(175,97)])
link(onEvent2,3142652:onEvent1,[(378,146)(378,27)])
}
END_SDK
Add(Button,12213375,287,210)
{
Left=57
Top=60
Width=145
Height=30
Caption="Задачи на день"
link(onClick,16178076:doWork1,[])
}
Add(Button,10833684,287,329)
{
Left=57
Top=105
Width=145
Height=30
Caption="Результативность"
link(onClick,5379056:doWork1,[])
}
Add(ChildForm,5889987,350,469)
{
}
BEGIN_SDK
Add(EditMulti,4689715,21,21)
{
EventCount=1
WorkCount=2
Width=888
Height=522
link(doWork1,12897593:doShowModal,[(109,27)(109,104)])
}
Add(MainForm,12897593,196,70)
{
Left=35
Top=105
Width=888
Height=852
Color=-16777206
ParentFont=0
Visible=1
Ctl3D=0
WinStyle=3
Caption="Записи с АТС"
BorderStyle=7
Point(doShowModal)
Point(Handle)
Point(doBorderStyle)
}
Add(Button,2883772,49,140)
{
Left=410
Top=750
Width=115
Height=25
Caption="Закрыть плеер"
link(onClick,12617024:doEvent1,[(111,146)(111,139)])
}
Add(Hub,12617024,140,133)
{
link(onEvent1,12897593:doClose,[(175,139)(175,97)])
link(onEvent2,4689715:onEvent1,[(378,146)(378,27)])
}
Add(Button,4072198,91,252)
{
Left=165
Top=695
Width=80
Height=25
Caption="Пауза"
link(onClick,6667981:doPause,[(205,258)(205,223)])
}
Add(Button,1591345,91,308)
{
Left=260
Top=695
Width=105
Height=25
Caption="Стоп"
link(onClick,6667981:doStop,[(149,314)(149,216)])
}
Add(MediaPlayer,6667981,448,203)
{
link(FileName,11460677:Value,[(454,184)(286,184)(286,387)(279,387)])
link(Handle,12897593:Handle,[(461,152)(202,152)])
}
Add(Button,5845789,91,371)
{
Left=95
Top=750
Width=105
Height=25
Caption="Открыть файл"
link(onClick,16218810:doExecute,[(159,377)(159,349)])
}
Add(ODialog,16218810,196,343)
{
link(onExecute,11460677:doValue,[])
}
Add(Memory,11460677,273,343)
{
}
Add(ScrollBar,16539390,476,273)
{
Left=10
Top=645
Width=490
Max=0
ScrollMode=1
Point(doMax)
link(onPosition,6667981:doPosition,[(639,279)(639,251)(359,251)(359,230)])
}
Add(Hub,13137840,147,168)
{
OutCount=4
link(onEvent1,6667981:doPlay,[(224,174)(224,209)])
link(onEvent2,15894991:doData,[(269,181)(269,321)])
link(onEvent3,7241443:doTimer,[(249,188)(249,468)])
link(onEvent4,4625103:doGetVolume,[(389,195)(389,111)])
}
Add(Timer,7241443,273,462)
{
Enable=1
link(onTimer,8054807:doData,[])
}
Add(DoData,8054807,357,462)
{
link(onEventData,16539390:doPosition,[(419,468)(419,279)])
link(Data,6667981:Position,[(363,334)(454,334)])
}
Add(Volume,4625103,616,98)
{
link(onLVolume,15940850:doPosition,[])
link(onRVolume,3624761:doPosition,[(663,111)(663,160)])
link(Left,15940850:Position,[(622,86)(657,86)(657,142)(692,142)])
link(Right,3624761:Position,[(629,86)(657,86)(657,198)(685,198)])
}
Add(ScrollBar,15940850,686,98)
{
Left=570
Top=635
Width=165
Max=65535
link(onPosition,2023047:doEvent1,[])
}
Add(ScrollBar,3624761,679,154)
{
Left=570
Top=655
Width=165
Max=65535
link(onPosition,2023047:doEvent2,[(737,160)(737,111)])
}
Add(Hub,2023047,763,98)
{
InCount=2
OutCount=1
link(onEvent1,4625103:doVolume,[(789,104)(789,92)(604,92)(604,104)])
}
Add(DoData,15894991,378,315)
{
link(onEventData,16539390:doMax,[(429,321)(429,286)])
link(Data,6667981:Length,[(384,268)(461,268)])
}
Add(ImgBtn,8272910,49,196)
{
Left=20
Top=690
Width=35
Height=40
Normal=[ZIP9EE2000078DAED9D05D87545B5C73775252C9492BE34228D809484E2453AA41490100594541AA44341A4A5141444504A250D404051445011252C502C14030C10EE5DBFD9F7F73E8B71EF73DE2FA9F73CCF7C27BEF39ED9B3FEF35F356B66AFB9FE113336E5B17CB445A22D106DD1685334B395CFD7FBFFFFCF8FFF1D7B4CDEC7D34F3FDDBE78E69967AA1713B797919F7DEAA9A7FEF5AF7F8DF43BE18F67CAE3691FF1C9638F3DF69DEF7CE7739FFBDC273FF9C9EF7DEF7B7FFCE31FE30B4F3EF9E4C89727641471F1B7DE7AEBEB5FFFFA98AE33CE38E3CC33CF3CCB2CB3BCEE75AF9B73CE39E79B6FBE45175DF40D6F78C3D4534FFDCA57BEF2D7BFFEF5E38F3F1EFD8EC760A3A3FBEEBB2F7E64AAF278D5AB5EF59AD7BC26FA7AED6B5F3BDB6CB3455FD1CBFCF3CFFFE637BFF9A4934E3AFAE8A3A3C7F8E491471E79B23C4639C6BFFFFDEFFFFEF7BF575C71C5C5165BEC15AF78C5F4D34F3FDD74D3CD30C30CF122BA1EE9748E39E69877DE7917596491F8F74D6F7AD325975C72F5D557C7F7E362E247FEF9CF7FB6B21DFA987DF6D9679A69A6105ADBCB743E66288FE8F1D5AF7E757417C29C6BAEB942980B2CB0C072CB2D77EAA9A77EF18B5FFCC0073E103D3EF1C4134331FACB5FFE32CF3CF3445F21A8E82E46F1F297BF3C7A9976DA695FF6B297B5FFC600E3D7A2BBF8428C2EBEFCDFE5B1E4924B9E70C20937DC70C3E9A79F1E508E4C983E798604E62A8FF872FC79FC4E48AC15607434CD34D3445FD175BC8D6B8801C6FFB6B325BE1CA35B76D96537D86083DB6EBB2D3E89E93400B5D5565B6DC105170CA402F1A5975E3AA65FFC79C0117FD8F6F85FE9D18A347A6C07D876171719DD2DBFFCF25FF8C217E26F0F39E49098C99D3DC615FE4F7944A7D1E3124B2C11A38BC916BF30EBACB3067C319C18574CB9E86BDAF21891677C21E419F25F68A185625205705FFBDAD7E27A2A0AC4DB8072CB2DB7DC6CB3CD42021B6DB4D1DBDEF6B6E82EE08EEE62A605FAF13B7125D15DC82DC6D212A11569F418BF19C8C6E85A3A8428422C975F7E7900179F8492C9DDFDF9CF7F8EEBD973CF3D77DE79E7E874FDF5D77FCB5BDEB2CA2AABB4DDC57F857C424AF16BF179CBEBE8225E4C5D1ED1632BCC803B0618288728DEF7BEF79D77DE797149B9A3605350237EFFC0030F8CEE76D861872DB6D82206B8C61A6B842443FE2193E86EEEB9E78E8B6CFF247EAA9D9F237DB5F0B5B325E810DDC5F78F38E288ADB7DE7A9B6DB6892EDA3F0CD2C558F6DA6BAFF8AF830E3A68D75D77DD6EBBEDA2BB75D6592726C90A2BAC10438B7912430B38FEFAD7BFB6BA377E30F7D53E02BE96EC21F018E0BBDEF5AEC30F3F3CBE39323D02AF85175EF8B4D34EFBC8473EF2E10F7FF8831FFCE02EBBECB2EDB6DB06706BAFBDF6AAABAEFAC637BE31B813F324808B5E5A85FCE8A38F465F21C6960B315BDAD1C578A3BB1066C83CA6625C79FCEF880C635C71F1A16402CAE38E3BEED0430FDD679F7D42DA31FCE8AE1D5D0833E08EEEDA8E46FE7699659609D1C5546CFB6AA74A3C5A6186CC37DD74D3F8AF3C3DE2FA63DA84A538F9E493A3BBE0C5DE7BEFBDD34E3B6DB5D5561B6EB861FCEFEAABAFDEB26044F2AD5842B7C76FC6AFB5436B7B6C6766ABCAE20AE36D3B2BDABF8A497ECD35D704013FF5A94FC5E85A61EEBEFBEE3BEEB8638C6E934D3689EE62AAC4F0B3398E4720187488714DE363A4C776B6C42499628A29B20CE3A76EBCF1C62BAEB8E2E28B2F8E891AA30B33B1DF7EFB85228DD105C4218AB5D65A2BB08BDF8F2B6C7B0C23121DC5B846E6E4488F6D5F534E39655C4676D5A2AF60F12DB7DC1233FFB2CB2EBBF0C20BCF3AEBAC134F3CF1B0C30EDB77DF7DDBEE6274EBAEBB6E5C522B8AF8939830219F9608D15D482C64D50E2AFA8A7E8359AD8D88D799625FFDEA5743805FFFFAD74392015C7477F6D96787D20E161C70C00121CC205D8B5D2BBD806FE595575E6AA9A55A0D1FA30B9AB7A38B118D08B3B5443190A7CAA3ED2B208EC970FBEDB7DF74D34D5FFEF297A3DF4F7FFAD301DCF1C71F1FA36BBBDB7EFBED37DF7CF3EBAEBB2EFE36C618E35A7CF1C55B85197A29D814A39BBE3CDA71C5A3552CF1E395FA3DF2C823EFBDF7DE705D02B82F7DE94B31BAF3CF3FFF8C33CE88D11D75D451D1DD1E7BECD162B7DE7AEB855609EC429F871843AB048F429841A8105A6BE36250D14B0C2A989B4D580B4158ED6BAFBDF6FBDFFFFE1D77DC112A3ABA8B7912DD9D79E699D15DD07FFFFDF78FD1B5DDC5CC8CA9DB6A95E82E2649D03CBA0B16C76418B13E31D25FFCE217FFE9ED44D7A10C7FFFFBDFFFE8473F8AEE62746117C23DBBE0820BA2BB982AC1829899F19DA07968958D37DE38A6CA9A6BAEB9D24A2B858A6E8D5DA88BE0543B4F4292612342A775DAAF802F66DDCF7FFEF3DFFCE63777DF7D77601753E5CA2BAF8C0106EF3EF6B18F1D7BECB131C0989CBBEDB65BC0175A34664BD8BB982A015F4C95185AEBA5448FD1513B1F3ABDB8B0A10F3FFC700C219CCCE8F1AEBBEEBAF9E69BBFF295AF5C75D555A1C1CE39E79CF05E62B6B49333BA0BA6873CDB01B6F6AE751DC30AC4AC882EE2072BE3553DEEBCF3CEE8EEFEF288D7E18B4677015F74174AAC9D2DD15DC87304BE607AC017E36AE7640CEA6F7FFBDB881E1BE075B4FF1553FDA1F2B8E79E7BC29D0E02B65C08EA9D7BEEB9A79C72CA31C71C73F0C107875108F8429EE122C6FC0FB98D785031D9863A87EDB48C7F4362A118A3AF071F7C3006189333BA0B2E5C74D145D15D0B5F5C527417348FBE62D6859CDB1F194D47D523745138EA31F782623143AEBFFEFA982D975E7A69D03C4C4FCBB598F9A143C2B16C1DE61CCE8CFED1FE612B907FFCE31F0F3CF040F4180E49FC7E781D31ED03D6F0F95B77A5FDFE60E773F4F15D3BA3DA9F6AE5DC0E6144ED57888F3D5E1C8F66AC4D9E16742A2DE8335E7F1F7AAB0992FEC7DFF33E14D4988C2B990C6AC3FE3E7478917728BF677D9FD76058BFAF7F33DC8EF21BFCFDB0BEC034747D1356BD7CDFDF9B90EB7F296129AFFA5A170FC1E6B1C71E6BC2DF6CC2BF6DC29F6E225C68C2E76CC2E96CC2856FC20F6CC25B6AC2B368C29F69BEF9CD6F36E1DA34E1A036E1C635E1CD15DC9E78E289114CF8ED9A8B63588E5E167061508357E1B1373FF8C10F9AF0679BF0F49AF7BEF7BD4DB8AE4DB8E50D29D705175CB0C1559E79E69949D294168141794FC62602922602CA2602BD66C925976CC2A96FC2296D22C028988733D94488D284FF5BB0949FE1DABDA4B0ACC794F996F522328203EA3A3E7FF4D147CB6B741AF2F37378F7D39FFEB48970A40907BED9669B6D9A88149B596699A58990A38930B189B0B4212514D1F0C016F179C132C2BD822B41337FCBEB08341B5210111336EBACB34E138140C1F6DBDFFE76E12DD7C335AB7FBD7E6DA9B86B07B20DF6FD8B612E647B26AEB50DF3FFFC1C9D19915D13F17313414F33EFBCF336B3CE3A6B91FB14534C51B08173E2429387B488C54A839336FE9EFCF6ECB3CF5E5EF3FF604BE3F554534D557E87DFE699B9B2F4D24B37EF79CF7B8A0E401F88278D71C0DFFC1963653ED676B9B6112F742C99DFDA203ED346E95F20975B6FBDB539E9A4939A085D8BCE844B6DD2A969A69C72CAF2CC7BF0028F99669AA9E84FF081AB343E478F8ADB1C73CCD1CC39E79CE5359FA183E79B6FBE323FE699679E2622FD2642F166B9E5962B9CE7FFE128FD882F736691451669DEFFFEF737D75E7B6D1351F708668F3FFE78195F44BECFB2B17D76FE85660F3386E094E72832808FEA523878FBEDB737871F7E78F3D6B7BEB5704839A243C10A8CC087FF832F60099FD49BFC3FDFA38925D88121D8CC3DF7DCA5F139D8CE3FFFFC459F2EB4D042CD4A2BADD4BCE31DEF68F6D9679F623BB7DA6AAB66DD75D76D565D75D5329FE02CBA40FDCCDF6FBEF9E6CD55575D55E6A798A24B79765C347DE1178B0DCDF393399C75123CDC77DF7D1B9694C00199D1C0085D37CD34D3145B08A63CD3E00C98821FCFCA585D2A9E70504E82277E115C849370CCF7F840CCA1CD36DBACD979E79D9B830F3EB839F2C8239BFDF6DBAFD97EFBED9B0D36D8A05C9FDCE65A986BCC0D70BFE4924B466CAABA37DBFDBEB9FE42C69439AAEEB9EFBEFB9A534F3DB5C8101C782023751A78F19A07F8C9411AFF0757C08B0676D936661E671D4B43FE70115D0A9E600947175F7CF1F21EDB0C7E871D7658D1F5279F7C72F1B98E3EFAE866DB6DB72DB8F23DF53EBE13BF054FAFBCF2CAE691471E191973D6B7BC563FE558F5F98C571F2FD5B1D81474131C40FEF00E9D89FCE1A158821D98E9C7F07FFA2ABCC6EFA481B3F88A253634DB4DF0A4F139CFF0124ED2C091E785175EB8596289258AED44AFAEBCF2CACDD65B6FDD1C74D041CD29A79CD29C77DE7923B12AB86EB9E59605536D3863C0DE1E72C821257645FFA07399BFE692F4756919D3E72396D937A7F11A5DA35F7EFFFDF717DD85DC98CF6083ACC146FED1E069CD5170E36FC00DB9D1C09567F11377DFCB4FF90B3FE1214D9E822B3CE59AF81C7C965A6AA966F9E5976F565B6DB566934D366976DF7DF772DD679C7146C194BCC339E79C53F88A8EE56FE9574C9903E4248849B39F8B2CB28C9E0F1CEDCA7B6A0FC14C5B61ACC1F3CD37DF5CC68DFCC10879EB9B2263B9471353634670A5E55891F7F2D1B8426C6935A6B4DAAF45DF821F79031BB8C24D30A52DBBECB225DEC4AF269F70EEB9E796F6F9CF7FBEF8B3D84A7CB615565861C4FF65CEF1FBC71C734CB1A38C1F7E2AA31CA339E79F4FB96BE37AF1D307F8D5AF7ED59C79E699CD8A2BAE58E4C803DE2DB6D86265BCEA52ED658D67C6AE8EFDF98CBFE5F7F47FC4B38BA3759C82EC8949E42A7E2DF881A57E113A18DD4BCC428E081D7AD65967150C6D575F7D7573D1451715ECB81EAE8B7941DFEF7EF7BB9BBBEFBE7B04379F73FE002C2777EC52E7B46BFF8C6BCA58FEE4273F690E3DF4D0A62D676CCAD8F44B91778EF1917BE6DF68B1949BE09871ADF1D4EFCD36543CE12798D2C00E6E6A4B69E850E61E9F8127B983638F3DB639FFFCF38BBF832F7ED34D3795BC22F3F6ED6F7F7BE1267681EB59638D358ACE45DFE65CD873C9CB3EAE8AAF730DCCEFBAEBAE126BC845F8A07F827C799D1B7207971ACBAEDC5CAD7FC533FBB9629AF340B50DCD310B4D6CF58DE028F3101CF155F57DE1E9A69B6E5A742B785E76D965859FD75D775DF17B2EBDF4D2A2939903CE5D788D5E2696D67682ED20BFF1B9F45BBDB6EF7EF7BBCD4E3BED5470D497418EC89DCFE045CEDBF01DFD9A2E2C33765D9F653EFBBAE6A836549EE69C827A171CE5A971287AD7461C0A96608BCF4A4E7F975D7629B1D50D37DC50D661589FF9D6B7BED5DC78E38D25FF089ECC1DAE877CE005175C507C22FCA11C67675C27270FF5C1BAFE1F7D437C86BCF071CCB320775E33FF912BF19971A372965B83F0A4A99B695D3877E9DFEC1BB97652C72EF233E78AB07BE687D0C1F0153F076EF219B10BF905FC5BF8F88D6F7CA3D8CF5B6EB9A5CCE9238E38A260C8DCE1C1EB8F7FFCE3659DCEBC907986C9997BD726BAFE9ED76D9963D847F8A8BECC768A663CE1E7E6E190B7F99C1ACB1A333F83C7AE71F8FFBEEFC3D3A6EEED8A5DE0688DA5F692F77C0E1EFA47BC467F92033CFDF4D3CB7A0076F3B6DB6E2B3E0F6BA5C4A7F8C3F4C5036EA39B8941C1F40F7FF8C373B28E026EE8FABCEE81CE20D78CBE61EE2243E6327ACB185FBD8A1C911DE3122F393308CB8C67C632E399DF8B67B6A136F0EC8A5BD42162668E81D7600A177906579EC1923814DD6B6EE184134E28F693F570F42E6B66AC918333DF330E652E80A77204D3C989A531AEFE8D310AEBC3E855E6B539EEBCBE64DE540C69FA40FA26C836F3C618C3BC6C8DA1791F7C0BF4352D639E6D671796D98E7A0D999F756E9E663E1E0CF5758D47F18BC00A3C4F3CF1C4C24FE24FFC5BF8F9E0830F169CC9E333DF7910A7615FB3DED376E9F3BA2E3829ECA56BC6709167743DF90FC69365A11CCC9D65DF236357FB9FB9F57134E30996E259EBDCAC67478367D6B7FA4439375FFB44FABAF014CEF24CCE68A38D362AB126FCC4B7859F607AC71D77147EA2B39111D78B8E260677ADC598CEF82ED75B4C6C2CB5D3E6768891975966992233C66E134B1AEF9DEB7217B981ABB938395963D8158B8867E626AD0BCB9A9F19D31ACFAEDC7C57AE08FD0A9EC6A2C42DE4E669FC1FF39A98E5B8E38E2B71C8F5D75F5FE24BD613C87F913FE0778C57C8ED527B848EC317CA6BF3C69E93024B74807124B6003DC1F81933BA83F9CBB873ACA61ECA313863663C798D587CB59D5D78D6FAB6C6B2C6B30BD32E9F487F28DBD0EC0FD1CC2998F7F3198EC235B0C4C791A3ACA9A06FC1125FE89A6BAE693EFAD18F9635527E8FFEF87B1EE47BB5997FFAD39F9E55633229F46BCEE9FCF8C73F6EF6DA6BAFB2D6C8B81D9BFA87B1315F1917BC251EC39EF01EDB22B67C97BFE1EFC515198AA91C55FEB5CECDDCCCFE50C6B48FABB5DED54EF7E516729EC806B68E99F15043C678910563C47E6283F073E0E9EAABAF5E6443DE9E39ADAE45567C471EBA3EC8F3A4C80BE5FA80E38F3FBECC3DC6AAFE614C5C3F73131B8F6F87BFCEF8F82C63C9B53326792A9EC886DF42BFB9F6A10E56E6E25973B3C6B20FDB2EDFA88E45B39F6B6EBE6B8D3BE7FDCCF96143E1A8F3989C0235673CBBA646DCC9DA19B50BAE3320AF1FFEF087237C344F3B29F4AB3E15F900E615F335AFFF61C7D1B9ACE7AEB5D65AE5D93A1AFE8FB17561C99C56EF5A83A39DCDB6B5B6A7C694622947FBDA203C6BDD5BE3A9EF9D73F4F2543DCB18F477C190F96BAE9ED885EFACB7DE7A25B7899F4B6D2EB1279FBB164BEE9E3C1F185A5B3229D639992BBFFDED6F9BBDF7DEBB8C8DB13066E620738A3A0AEA0468E81271644C34F0C4CFCB78324E3035AF62CBB6D4DA81CC4FB1CC7A7634588E164F63D06C43B33F947D3CD75B68EA5AE315C6883E32A770C00107941C1139797C21F27ED46F323EAE0D7980735EDF44EEE38AA55C36DE70ED545BC97B6A02F45B18037DE3838323F54EACF5F11A2C57596595A26B19037C154FB0D4EFD376667D0B37B547D90FEEF27FCD1981156BA1C4267094FC218DCFC52E73B32FDF9B6D69BDE6322C379FFD227D06C6666E1EAEC2497C21727DC42CF88FF8B8F0D507EBDF0F3FFCF0082ED4628C4F4E470CB38D144FE220D6939137E3417F700DAC03D158EBE1195EB2CE831ED66682A5BA56BB390C4BE64A1F963946D5768A55CE2174E9DE2EBFA82FF797F3B8394754AF9D19AF8027586A43F35A8BF31E5F881C018DFC10B5F2AC73335EAE81DFA316C53ACDF1D1AF5947673CE529B963C6E11A2DF690D868C30D372CFE3758C24B6C7CE62658928FD60742CF663C192B63D67FD0660EE265C61399D7BE508E55FADE67BD6BEDFBA0DCBCFDD678D6EB2CE2A9BED5668227DCDC628B2D4A6D02792172B7E0C96BEABFDAB3469AC209EAF5DDFB303E36D1B597BC0F008C1F78E081720DCC19AE1BEEF11EECA84F2336064BF15C7BEDB59B35D75CB370133D0B2FC593F164DBE99C3546D19F355E759DCCFC60AE45CFF1A8355D396F907112CBBA896B1D93D6714B6D3F734EC15CAE39A2CC4F6D27E3460F2107ECA67509E486A80F2627842C88F3E807BC737C32213164CEBF5217814CC102DE80236B22E80CD65D79BFFEFAEB179DABDD54D76A37698C035D2B9EF0B38B9B5D3E6DC6D3E67A0BDCE1593CC583D7E8DAAEFC2DF6543D4C1B148BD2CC2BD4EB6662DA557F927344DA4DB0458F91E7A30E0C1F043CE126368CDFC3F6A3EFACD11CCD3EC32E3DAB7D641D0B1F0A9EA34B99FF60817F6D5D30356A5C17D7B0F1C61B176C790F9EE85A6213742DFC54DFF2F7FAB7FA428C533CEB98135DAB3EC8FA569D6B0C0AD6C8DA3A4B1A1831CFC12DDB527DA36C53BB720CD937EAAA5950E7D2B2CEAD6DA8F3122C79CDB877D86187B29679F9E597975C1F3E2DDC4437D137BF2537C737C6D456C26D1AB927F8C3B5800138821D752F6089DFF5CE77BEB3ACE1A16BC1539F086E8227FA96B8185F485D2B3F8D51EAB8B3CB1742467234D7398B25F2060F65CE6BFD596318B999B114E74179A32E1FB78E59BA7CDC9C2BC2962047E62CB2217746BEE7B39FFD6C73E18517161F179DC6EF733DE83BFC9F71E5A5D8E7FA4DB02447813C913558B0E771D75D772DBC043B3055CF8227FC44DF6A378D39F56BB19D72132C9927FCB6FC649CC69CD97ED6F95BB154C7224FB173DDDB3834FB47EA5DB1CCFE6F8D67C6B5AEFFAB6BC4BAD6CC329EE63879CF3C65DCE8517268D6DCE20711B7F0BBF4851EA3DE645CEBF4EA5C20F381B549EC1C72452782195CDC73CF3D0B86F83D600A2F69E862F0E51AC1135F083CF16B69C62ADA50631530CD79846C3BD5B5F233FBB6794D146CE8039DC077AC3D6EDAC3CF8A0D52C7820D98A07FADB3CEB6D496F5EFB0F8B35EDBCE6BB834BEE73A83D8220372EDA79D765A8943C8235C7CF1C5458F311EE60C7B96BAF6350CE26ABD270B6E929FA06F6403063BEEB863D10BEE89620D9A6730A5914B869BE85DF044AE999FFAB619CBECDBCAD1ECD7D678EADB662C91217DB11EC13E49E6365CE6FFC0C11A23F3F2D9B7751FE0302C87C59F7D3EAE78BA9694F3098C15591D75D45165FF0A58A26BB1A5F60527884FC675DDC49A22D740A9FB309EC40EEEB1C71E65FF13B2DA6DB7DD8A2FCB3398D2C821634BC553DB293FCDD36A3BCDBD83A5DCD4AFADF3B5628A3CD05DFAB5F292757BC7F1CB5FFEB2EC0571BF03B2770F2E0D8ED2F46F468BE5A0F833E3D91583829FFAC4BC10F392F1C3076C197A163C5903E3BBF4850C8843F565EA3D807DF1A77901B8CCBE7D644D9FF0084E1E78E0814546FBEFBF7FD1B5D84E9EC194FF679D155DABEDCCFCCC3921F1849BD84E73B6D97EE67C50ED0B656E1AA75067EC1E0EC640EE9A39C7EFC93D75A37BC8DCAF02AEC3B01C167F668E76AD9981A575A4D60B8133634277B15790FA4C7C59F66183317DF07BAC83BAC7C87A83AEFDD6F5BA9658521BE8FE27784E4E9DB9432E1F4C798F0F84EDC466623FD10D72133CF179F1858C53C053BB099ECC11F5AC7921742DDCACFD2073D670D33825FBB4AC0FE6730568CC476C11D82317F738CB53FD5B1EA3C17250FCD9B56696F7B36837ADA1614E5A2B863E428EC8973885B160AFF82DFA47A6AE51E3CF643B382C4FC0F7C91B223BB0845F6048ED3DFB0A78CD9C8793E4F9D1C5E809F80937F191C4135F28E3698E0FDB099ED9B755DFCA4DD752F485C4526E5A6F8E6CD04B792CFA09C4DBD823B8E01E3BB0CCFBFE4683E5B0F873D89A198D6B66FE81ADFE0F58C24DF418360CB9939F253704EE3C98D7AE6DE6FA9FBE3DD73957C41A1A9C43767005BF86B5536A1CE887BDA6E8047044DF52A38DDD044F74ED76DB6D57E612734B7E321FCCDB8A27FC54D78AA7395BB9299E758D89718A795064E0D907E820FC04FD39D61D9883FC9E318BF18B7C1D86E584C69F34ED3CB89A4BE033C6C2D8DDC70B8ECC3FC68BFEE06FF143D5ADF232AF71F6D54DB25792F802B9A107F15D8983D0DBECA34017D0277E10F613FD00478D3BD1B5E059F3535F48DF565F486E9AE3331F24373DBBA76BDDDAC6BA2E6BE55D67723126EC28FE37DFF5BC1FE3117344C3B09CD0F8131CB5A1D9E6BBCF0C79A1EFB84EE48C1CB83EFD81BC3F2CC728751D49D6BDD400F23BF0051BC79C4656D8643065CED0179F633BC114BC339ED917625E683B8D3BF37A8A7E6D1DA71873EADB1AA75827242F910576268F21CF61731F0F3DF4509983FC9D7B5DC489071C703D9487FB79D5C1753E3EE3392CFEAC71CDB5A78C81F12173F42CE7958029B2E2B778E08FB82E3DE8BC998C2DBCBDE28A2B8A3EC28FC50FC54EE243B07F1F3DCB7BF054D78227FA163CB90EECA7FC443FEBDB82678E5372CE16FE1BA7A86BF37A67CE21E8DFCA4D701D84A56BF48CED673FFB59B1ADC810AC90370FF7816253CD19F1BACEC1F761392CFEAC7DA23AD7C71890B9313BB24497F1775C07B8BA4FAC3EAFA5CB87754FC1D9679F3D128BC07B70FCC4273E519E8969B14DE0894CB09FE00937C1137D2B9ECC25AECD3C42D6B5392F049EE410E4A7DCCC78D25C1F335E31E60457E6591796F91C13ED0B35DB5C33F3400CC452BD6BBE4F5B3A1A2C07C59FF55E963A97C06BF40DFE211C40BFC10170A74FE6F3BDF7DE3B908F75DC493D333821377C4D7C1AF385E86C742D76135DCBBA4DD6B5E8056215F544F66DF5855873358F009EC69DF4E59A4A8DA77921FD2131D586822BD795754F9EB7EE6BCA7512D42EA157E03672761F83E727E4F873343A7658FC59EF65A9F799812FD782CF808F019EC80D9CF97D9EA995AE6B22FBB809D6EC3BFAD0873E546C153A90D7EC1B044FF82A37D5B570535D8B4F2B37F16DBB7CA13EBF163C73CE36E3D9B7A6A26F8BEE25CEAECF1ECDCFFA0D6069AC46BC427CC5DF831118206BE314D758468BE5B0BAF92E3CF585C0123BCEB898E3C80A7D06BEFC3EDFC397752C19BF3A37ABBF473E1D2EC107E4CC583FF399CF143CC92FC94DFD206215FC5AB8894F8BAEC50F53D7C2CD2E5D5BFB42F0B32B5671CD143C8D55B2FDB4468A3996B1ECD24139C656DF92EF43CF2033F341DACBCCCF61588E6BFC59E7E38D53B019CC6564840E63BED217FF0F065DB5065D583267D97FC76F2043FC1E7210D432B07784B536B8499E09FB840CF87FF0AC75AD781A77323FCCD982A7BEADBAD67A04FD21F342D67E713DFAB6DA50634F70E59ABACE36E9AA81114FBF034FB96E7E5F7E8AA5EB15C3B09C90F8534CD1B5F8B48C0DBF0299604FF86DE6171CAA6B7806AD618225F245C7918B00336AC6588B819F70133F089D96FD20E314742DB1AEB69338053CC9DDD6B6B38E3B739ECF58C5BACC9C87D72752DFC2D36158E6B9EC6BBECF9E56F52DFA051E603B73EEDD7CED302C87C59F5DB921F1B46E13BB880F80CE624E3336631EF4601D5F76CD59B1A60617B9E25F12238219B59CD4318027E74F81273540F2537D8B2F3448DFD6BE2D7E1A3A20FBB6753D82FE907560F0D39C82F5427015DDAF2F3EE84C9B2EBD64FE92BA516C3FBEA571A5B9F83A3E1997BAEABEDACDAE3DF8E0899E45173197C1D533DBE08D736FD07E3E3F63DF0FFC004BE48E8CA849F1BC0CB8A91FC4595462892F84BE35EEC4CEC24F7CA7ECDBCACFBC46269EE874B9E91AB678E6FC903E91B904388AAE1884659EC79EF3EA77F99CB577E4440C07EF3D3FCA7A8D3ACE1C0D967D7B94B2FDCCFA569FC8BDF4E822EB7F78C0978C657D1E6F8D257B01E525728783D48A913FA03E9EDA14FDA0AC6BC533FBB6E0896F9BF1ACF5AD79BE8CA7B984CCD1AE9A3EED27B2E75ABAF65ED4FE9EEFF39CE61919812FF135BF6F1D986B157D31E6F8E25973D37A7C5EE3D7BACF0A2CB5DD35967DFBDF5D1F231E45DF812531053C642D149B093FF583C0933A31B8894DA6E55825E785E427B90C6315F0340F8FAE154FD73CEB5C5FF687F4898C55E0283A7F1896396FA92F9B634EE631F3CDFD3A347C92BC0FA9C675B4B5D47D786A3FC591F7E0EAF999F8D7C6BCACB7BBA637C8EF513F59D70C9670081BC95A267812DFC0CDDAAF054F6CA7B14AF687725E08DB293773AC52FBB6D8FD7A0D9BEB71DDD3F8D37532380A965DF3349F7105765D7E03CFE4F6D0239E4594F7BFC3CDBC87B78BA37D9CCD5876E516BAF60FD2273929E22D7C217F0B7BA6DF36ACDE877162FFD17DF001FEB0F780BA4AEA37B3AE054F6A53A839024F741C7892172556014F7D21D7E3BA7C5B73F0D9B7B526C15C0238E6756CF309EE6F4027720D83B0ECCA05F91ADF1D5B60AD3C76D1F529B0C9FB3EC5B25E4BE9CBD90EF36FC5D37A32CFAA76BD9AB9E5B9D2CCD76C170661E9990460E8FD1EF05FC1523D0B37D1B5E0C93D40F485E8477DDB653B6B5D2B9E794D45DF167EAA6FADCF04D3DABF355E81A362D9971FE8D2BBC8E3CE3BEF2CBA0B0EF0F00C51E37770500F76AD75662C07E1D917BBD4FE90781A9F584BC8BCC2AE79ED791DBACFAE104FA307C112DE80598DA578C2596D27B2342784DD443EFAB5C49D750E5EDBE99A0A78E65805FB89BED5B7D5B7D67682A5EB64D8CF2E2CF3FA503EA7DF33A758031347EBF9E088355FD82F6B70076159AF7D8E06CBBAF6440CAD1504437C20CFBD26BF87DFD97596C1A0B568F4A37E2CBCA4DE96B34DD8F3009EE8596214B0C49E8AA771A7EB637D79A11A4F7D217D5BF0D4BFB51E5E4CCD0BE51A3030C576F7E528BBFC77D6DBB18FE41A3C3FC31A22F71D9927CDE727E63DD9B906BE6FEF511FAE758CE2DA16DFCD7B868D47C8C1DF73CF3DCFAA67CAE72DF5C52560022F912D58514FCDFD5ED8C3A20F94F52CF3C533ACF585B21F84DD949FD67EE535B2DAB7ADF52D78D6F54259D782297329EF67AA732219676ABA986BF8C1700E9FD17561CF34C9E7F39BA7A9F76577F941A3C1B2CB865A832447F35CE1411C4D9D6CE6E3A05C9EF8B2AF01B9112F2023EA0CD8F30937F169B3DD84B7E0891F649CA21F2437898B729C029E755EA8E667D6B7EEF3B4BE043C69399F806EC839D67C8F36EB7FC491EB2076C306799EBEFB9BEB7B9D806B8EE5F3993575ACD215B3F4C52EB979D6943E6DAEA337DF8F6FFFBBDFFDEE59F75BEAF365F3BD01A9FDC65621437426E72E8A27DCCC314ACEEFE9D782A739BEECD7665FA82B0F9FED679D8BB79ECF3C7CDEEB0947E9BB1E9B67ED3A2EF293F864C43160E3F98479FF6EAED5B43EC7DC778EE7B56D5D67BBF5C5A1B56D75BF99F9C1EC2B1B03F95D7C46F21879AEF6C5989EC3C4FFE313204F64879EE4EC10F0C46EAA6BF587B21F64FEBDC6D3F5EB1CA7E43C5FC6D375B2BAC6A4CEC5D73A571D2B9EF9CC3E7C1ED665E123318C6BD99ECF9D6BE2F3D9C09E6592F73AB817092C73CCD9775E5F1F0F338E9EB5E03D59780DF7B5953C63B7BAEEF9D8951FC9B1346B408C1B9D86CCC190BD1A9C99E0198C359EFA42D84EF0C417D117E23AE4A76B9E75AC229EC62AE6128C3D6BFB69FCE9BE5D7D3CCFCCC875DBC4CCF8ABD8563023C7001FDDDFE19AB675B7EEB1B376437EE6B32FEABDF539A7D387675DE7973155C75A4396D74FE91BBF33E71DEBFACAAEBC8F6B42C8063D466C8F4E651FB6678B73F685786A3FCD21603BB15DE2293FC9DB822732754D25D70BE51A938CA7BE505D73EBFE407343CCA37C6F0DC7458D30B1127EAFE72881A5E7429003F48C22F7EE5AB369BE404CEB3D9F398618765E5F57BD666E757D4AAE6DC02658EBA34F30286750D7E98117731EFB05469C5F0237A939D1AFC547CA39A1AC6BF585E0A6BEAD79F88CA779A1AE5C42AE31314E01CBBCC7419F88FEF27D0A99B7EC75228F011FC11B5D8A6E2586F15E41E4E6C191D762E9BE32F56CBD2FDBFDD8EADABEF3343396AEB374C59FB9FECB5A405F336718277E4FAE113557D097FFC9B5C2D48A203BF8019FE025E7DA8231E76782297A157CD1B3B52F9473F075ED57CE0B652C73AC52AFAB984B809BB9E6D6756CFAF6AC55B0242FC7DC2197807DCCF9F87C7E14987AB659DF1EFBAE3313B49FFAB51943E346F30ADAC3418D39A1CF9AEF2D487FC4E8F91EBDC3CE07F69E62BEC766226FFC46EC1AD8B1B6899E054B9EE12236145ED6BAB6F685E4675EBFF65E59E68572ECE93A59AE01CBB9046B6ECD23D0977134FE2A7D3217D1A7F8B9C3F67B662C737D7CDE8F2D96F94C936C3BC52FEBDBBCF639A8795686F77E739F2FD7035FC6054BD7C5F27A1E5C247643A6F00D2CC191CF69D84BECA7E760645D9BD753C823E80B75C59ED91732F6ECD2B7B96EC8B532D73D99039EAFC26FC35970848BF8BBAE7B5A6B529F01569F4D93F7ADE4D853BB59DBCEAE7BABF4E513BAB074DF92B5D7E2896DF01E9BA3C5524EC24FEF2D469E1D3ED0D057DC77847B7070263C9882233E2EF653DBD995E3C396C94F75AD79BEDA1732F6ECAAD154DFBA3FD0BA3EF0A4719DD87770C4D7818FF8B8E857727DE487AC4F104F1AFAB6EFCCC5ECDBE6F312B49DC629F599B7F93CCDBE182563E9C31A4EE600BF8D7ED5DF192D96795DCF3D52C4A6700ADB848C8931C92370BF7470E55E1CE089FEAD737CDA4D737C39676B1E3EFB425C738E3DAD19CAB1A7FC144FF869DE165CF569D1B9F8B8608A8DF0FC4CD7CBC0D59A211AB8E6B36DDDF3E91E416317F1F4BC63E34F649EF307F5D9C57D7167576C62CD18AFF1CBF0C3C5635CB0ACF342F012ECD065E83BF427BFCD673CC3D13A8F2037738E2FF3D33825E76DAD47300F0F3FCDC5E7D833AF95E5F8133C79063B6215B80A969E05463E411CDDBB92EBA8BBF69689693EAF389F4FE31935EADA9C3FC8B5CE5DF76EE8C2130CDDC362BE8771D4798F71E1655D9F860F846CB153C81E4E12EB8829EFE1A778A26BCDF1654CB32FA4EDCCB10ABE90FA36D7689A1BD21F02CFAE3D0EF841604A034F380A86C455DE5BD6FDBBF9BC84AEB3A3C0D3BD9FE259EFFBCCFEAD6B53F92CD4ECCBD6F7DEE8C3D23884F7F48B4EACEFEF3B2EF75944C7D6F70F0317FC0B78424E96B517E2139EB96703B6131B8A4F4BCC624E484CE1F3B0BC10B633C79E758D09BE8DF6B32B5E41C7F29A988538053CD1BDD62EE573DDB49BD669D67BB2F589DC679FCF13CFFB3EF31E4AB1ECCB0375DD97A3BE2787E79AF0CCDC64CF4B8DE3F8DE33138EE2E76337B15DC887B9C2DA0B7C2486C36F44D772CF235E832778EB0BD539BEEC0B657EBA8F2CE786F2BAA7FE2D78A273F589BAEAE2EBDA84BE5A306DA7B543F519529E8B0AA6FA44EA5B39AAAE756D2CD7EF641C737D493ED756BF27DFD395DF453E796FC8F89CA75EAF517BBF46F425FA0BF9127F8027F77D829FE85A7C21F8492CE49ACA203C6B7EF6F943B92EC1F8533CCDDF76AD95E5B5ECBCAF2CEF4552E76A3FDDBB92F70A8A677D7E941C55D77AF674DEDBA5BDCCBAB76B3D45DFD5FB0A3117599BC3C6D535DAE372AFD23AEFAE3F440D30B24456F0877A3DEC2678A26BC5D35C5F9D87CFB1A77921ED679D1B32779BEB12F2DA4A1D7F12AFE4BA78F7BBF59D69D2776E717D6E42DECB9BCFD2CC7BB38D59D0B3E6F5AC4337BFE7F9D3B68C67CEC36277794D4C3731EE1954EBE25C5F012ECC7978024FC1937374C094DA52F0A4160A3CB19FFA43DA50ECA7B57CB5FDCCFB0273FC99D7CAEA7C82F6133CFBD63FEBF595FA4C136B87B49FD653D7E7A3E6B36EBB62167208E60DACC7B4AEA4F68B6A5F08BD6BBE876B277EF06CC909B93F66975D755D9E7982BF89DC902BFE2B7C0553F8099EE85CEC27FA96FF879F79DDD3FB44E67515CF69ACE34FED67DEBB6BFEB6AE35A9EB13EABD82E8DC5C7F2B9EAE65E79A937CB689714BCEF975C52CD609F56199CF86074339ABBFC367F01E79C9C909C152FE75E9677F17BF15B9E14B2273FC1FF630663CD5B7F843395EC9FC144FF30939FE044FF4ADFE505D3B54E713EA98051B5AEB5CF7F2CACFBCDFC1BA136B4EEAFDBC99A3D986E6F330F2BDCBBCDF9B185A2B641EC8B34BACEB211EE1FBC4D870D27A16CF411B1F3EF661E95E1AF3B6C8DDFA657C1C6ABE69DC4F8EBC3679DB1CAFE0DF5A67029ED927929FB96EC83AB01CB3D47B04730ED79C5FDE8BD45713E6BA595ED306D3AEF3E2731C9ACFAB11CF1CB3E0FF78CF23CFF3B13EC87B82E6FBE588A9F758C6AE63AF90B3B9F17C7ED6C4B87FA96B65D6963267D8AB885C91193A107B0937B916F0A45E519F48FFB6B69F397F8B3FA44F243FCDC7BB96AD4F243FCDF9E1E7E675B3ECE3E69ACD5C538D4F24A6C42DE8DDBCFFB33E53339F0DE67EA4FA4C4DFC59CF61F2DC34F7555A77EB19FCE0EAD9B5BCC7DEE247E43398BC0FDE68CE9918DF73F58D53C00A6E202B7C1870034B742D78B2FE0947E124FCD427B236C1BABEAE9AF89C23C286E69CBCFA9698458EE69ACDBAE6C49C42E6676D43F589B2CE75DFA036D4DC9FE7526B47DD774FAC627C023FC1D01CBCFC733DC5B37EBD4F2DE3318EF41E867DFB282646236790E356F8091E9EBF0506D4D5B08FD11C5F8E415D6321C7600C2A3F736D5F9D2392A3FAB8AE97A117F089CCE3D6352779FF0A78D6EBA079DDACCB861AB798FB33AFA0FD3416F54C0CFD1FF3B3E0E5994CE0077FE1211883B9E7F2718DE8B15C33E89EBB49759F776BA2F0819C27F85A60889CF02BC1073CE123FC2407C55974709606BEE05AE714C4941C84714B9D57C878623FF589C434FBB9D92F72FF679D9757E7EA13D5E78375D556BB5EE65AA8F74342DFA267AD3D30E7EED95ADECB1
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)