[{"isEmailConfirmed":true,"tel":"","ip":"0.0.0.0","ipLocation":{"ip":"","sDate":3,"postalCode":"","country":"","countryIsoCode":"","federalDistrict":"","region":"","regionType":"","city":"","cityType":"","geoLat":"","geoLon":"","locationString":""},"birthDate":"0001-01-01T00:00:00","age":0,"isBirthdayToday":false,"ban":{"id":0,"userId":0,"isBanned":false,"startDate":"0001-01-01T00:00:00","endDate":"0001-01-01T00:00:00","moder":{"id":0,"name":"Неизвестный","email":"нет адреса","role":0,"roleString":"Неподтвержден","roleIcon":"fa-user-clock","registDate":"0001-01-01T00:00:00","lastDate":"0001-01-01T00:00:00","photo":"images/unophoto.png?v=9.4.12","lastDateIndicatorClass":"gray","lastDateIndicatorText":"давно","photoPreview200":"images/unophoto.png?v=9.4.12","photoPreview120":"images/unophoto.png?v=9.4.12","photoPreview100":"images/unophoto.png?v=9.4.12","photoPreview80":"images/unophoto.png?v=9.4.12","photoPreview40":"images/unophoto.png?v=9.4.12","isPhotoExists":false,"isValid":false,"isLoggedIn":false,"isUnconfirmed":true,"isConfirmed":false,"isNewUser":false,"isExisted":false,"isExpert":false,"isRfproUserClass":false},"reasonHTML":"","timeToUnbanString":"-04 мин."},"isBanned":false,"roleString":"Мастер-Эксперт","roleIcon":"fa-user-ninja","socialMedia":[],"aboutText":"","aboutHTML":"","signatureText":"Facta loquuntur.","signatureHTML":"Facta loquuntur.","country":{"id":0,"name":"","isFlagExists":false,"flagImage":"","isValid":false},"city":{"id":0,"name":"","countryId":0,"yandexCityId":0,"isValid":false},"averageEvaluation":4.979,"absoluteRating":109933,"dynamicRating":1669.439,"dynamicRatingStars":10,"timezone":{"id":0,"baseUtcOffset":"00:00:00","displayName":"[не установлен]","linuxid":"notset/clean"},"currentDateTime":"2024-05-28T19:04:18.4091324+03:00","isValid":true,"isUnconfirmed":false,"isConfirmed":true,"settings":{"fixedHeader":true,"fixedFooter":true,"leftColumnMode":2,"darkTheme":false,"topPanelBtns":[{"id":103,"text":"Главная","title":"Главная (начальная) страница Портала","icon":"fa-solid fa-house-chimney","colorClass":"text-info-emphasis","controller":"Home","action":"Index","accessLevel":0,"isDropdown":false},{"id":100,"text":"Вход в систему","title":"Войти в систему с использованием своих регистрационных данных (адрес электронной почты и пароль)","icon":"fa-solid fa-arrow-right-to-bracket","colorClass":"text-info-emphasis","controller":"Login","action":"Index","accessLevel":0,"isDropdown":false},{"id":101,"text":"Регистрация","title":"Зарегистрироваться в системе и стать полноценным участником сообщества","icon":"fa-solid fa-user-plus","colorClass":"text-info-emphasis","controller":"Regist","action":"Index","accessLevel":0,"isDropdown":false},{"id":102,"text":"Сброс пароля","title":"Сбросить пароль свой учетной записи, если Вы его забыли","icon":"fa-solid fa-key","colorClass":"text-danger-emphasis","controller":"Login","action":"ResetPassword","accessLevel":0,"isDropdown":false}],"topPanelBtnsHideText":false},"isLevelUpAllowed":false,"nextRole":11,"counters":{"daysAtPortal":6585,"questions":12,"questionsPosts":18346,"questionsAnswers":6664,"questionsPostsEvaluations":2832,"forumPosts":5699},"isRfproUserClass":true,"id":17387,"name":"Гордиенко Андрей Владимирович","email":"","role":10,"registDate":"1000-01-01T00:00:00","lastDate":"2024-05-27T17:32:16","photo":"users/17387/f4979bc95a484b9f43f75cfe66538acd.jpg","lastDateIndicatorClass":"red","lastDateIndicatorText":"давно","photoPreview200":"users/17387/200_f4979bc95a484b9f43f75cfe66538acd.jpg","photoPreview120":"users/17387/120_f4979bc95a484b9f43f75cfe66538acd.jpg","photoPreview100":"users/17387/100_f4979bc95a484b9f43f75cfe66538acd.jpg","photoPreview80":"users/17387/80_f4979bc95a484b9f43f75cfe66538acd.jpg","photoPreview40":"users/17387/40_f4979bc95a484b9f43f75cfe66538acd.jpg","isPhotoExists":true,"isLoggedIn":true,"isNewUser":false,"isExisted":true,"isExpert":true},{"isEmailConfirmed":true,"tel":"","ip":"0.0.0.0","ipLocation":{"ip":"","sDate":3,"postalCode":"","country":"","countryIsoCode":"","federalDistrict":"","region":"","regionType":"","city":"","cityType":"","geoLat":"","geoLon":"","locationString":""},"birthDate":"0001-01-01T00:00:00","age":0,"isBirthdayToday":false,"ban":{"id":0,"userId":0,"isBanned":false,"startDate":"0001-01-01T00:00:00","endDate":"0001-01-01T00:00:00","moder":{"id":0,"name":"Неизвестный","email":"нет адреса","role":0,"roleString":"Неподтвержден","roleIcon":"fa-user-clock","registDate":"0001-01-01T00:00:00","lastDate":"0001-01-01T00:00:00","photo":"images/unophoto.png?v=9.4.12","lastDateIndicatorClass":"gray","lastDateIndicatorText":"давно","photoPreview200":"images/unophoto.png?v=9.4.12","photoPreview120":"images/unophoto.png?v=9.4.12","photoPreview100":"images/unophoto.png?v=9.4.12","photoPreview80":"images/unophoto.png?v=9.4.12","photoPreview40":"images/unophoto.png?v=9.4.12","isPhotoExists":false,"isValid":false,"isLoggedIn":false,"isUnconfirmed":true,"isConfirmed":false,"isNewUser":false,"isExisted":false,"isExpert":false,"isRfproUserClass":false},"reasonHTML":"","timeToUnbanString":"-04 мин."},"isBanned":false,"roleString":"Мастер-Эксперт","roleIcon":"fa-user-ninja","socialMedia":[],"aboutText":"Я пенсионер. Образование высш, радио-инж. Работал инж-электроником, ведущим средств телевидения, связи, слесарем и инженером КИП, грузчиком, программистом. На моём счету десятки рац-предложений, в тч с большим экономич эффектом.\nЯ люблю компьютеры, ремонтирую их друзьям и соседям. Пишу полезные программки в vbs-файлах, автоматизирующие настройку Win-систем, приложений и работу с ними.","aboutHTML":"Я пенсионер. Образование высш, радио-инж. Работал инж-электроником, ведущим средств телевидения, связи, слесарем и инженером КИП, грузчиком, программистом. На моём счету десятки рац-предложений, в тч с большим экономич эффектом.\u003Cbr\u003EЯ люблю компьютеры, ремонтирую их друзьям и соседям. Пишу полезные программки в vbs-файлах, автоматизирующие настройку Win-систем, приложений и работу с ними.","signatureText":"","signatureHTML":"","country":{"id":0,"name":"","isFlagExists":false,"flagImage":"","isValid":false},"city":{"id":0,"name":"","countryId":0,"yandexCityId":0,"isValid":false},"averageEvaluation":4.935,"absoluteRating":25767,"dynamicRating":458.697,"dynamicRatingStars":8,"timezone":{"id":0,"baseUtcOffset":"00:00:00","displayName":"[не установлен]","linuxid":"notset/clean"},"currentDateTime":"2024-05-28T19:04:18.4093452+03:00","isValid":true,"isUnconfirmed":false,"isConfirmed":true,"settings":{"fixedHeader":true,"fixedFooter":true,"leftColumnMode":2,"darkTheme":false,"topPanelBtns":[{"id":103,"text":"Главная","title":"Главная (начальная) страница Портала","icon":"fa-solid fa-house-chimney","colorClass":"text-info-emphasis","controller":"Home","action":"Index","accessLevel":0,"isDropdown":false},{"id":100,"text":"Вход в систему","title":"Войти в систему с использованием своих регистрационных данных (адрес электронной почты и пароль)","icon":"fa-solid fa-arrow-right-to-bracket","colorClass":"text-info-emphasis","controller":"Login","action":"Index","accessLevel":0,"isDropdown":false},{"id":101,"text":"Регистрация","title":"Зарегистрироваться в системе и стать полноценным участником сообщества","icon":"fa-solid fa-user-plus","colorClass":"text-info-emphasis","controller":"Regist","action":"Index","accessLevel":0,"isDropdown":false},{"id":102,"text":"Сброс пароля","title":"Сбросить пароль свой учетной записи, если Вы его забыли","icon":"fa-solid fa-key","colorClass":"text-danger-emphasis","controller":"Login","action":"ResetPassword","accessLevel":0,"isDropdown":false}],"topPanelBtnsHideText":false},"isLevelUpAllowed":false,"nextRole":11,"counters":{"daysAtPortal":5617,"questions":25,"questionsPosts":7464,"questionsAnswers":1226,"questionsPostsEvaluations":789,"forumPosts":401},"isRfproUserClass":true,"id":259041,"name":"Алексеев Владимир Николаевич","email":"","role":10,"registDate":"1000-01-01T00:00:00","lastDate":"2024-05-28T14:33:20","photo":"images/unophoto.png?v=9.4.12","lastDateIndicatorClass":"red","lastDateIndicatorText":"давно","photoPreview200":"images/unophoto.png?v=9.4.12","photoPreview120":"images/unophoto.png?v=9.4.12","photoPreview100":"images/unophoto.png?v=9.4.12","photoPreview80":"images/unophoto.png?v=9.4.12","photoPreview40":"images/unophoto.png?v=9.4.12","isPhotoExists":false,"isLoggedIn":true,"isNewUser":false,"isExisted":true,"isExpert":true},{"isEmailConfirmed":true,"tel":"","ip":"0.0.0.0","ipLocation":{"ip":"","sDate":3,"postalCode":"","country":"","countryIsoCode":"","federalDistrict":"","region":"","regionType":"","city":"","cityType":"","geoLat":"","geoLon":"","locationString":""},"birthDate":"0001-01-01T00:00:00","age":0,"isBirthdayToday":false,"ban":{"id":0,"userId":0,"isBanned":false,"startDate":"0001-01-01T00:00:00","endDate":"0001-01-01T00:00:00","moder":{"id":0,"name":"Неизвестный","email":"нет адреса","role":0,"roleString":"Неподтвержден","roleIcon":"fa-user-clock","registDate":"0001-01-01T00:00:00","lastDate":"0001-01-01T00:00:00","photo":"images/unophoto.png?v=9.4.12","lastDateIndicatorClass":"gray","lastDateIndicatorText":"давно","photoPreview200":"images/unophoto.png?v=9.4.12","photoPreview120":"images/unophoto.png?v=9.4.12","photoPreview100":"images/unophoto.png?v=9.4.12","photoPreview80":"images/unophoto.png?v=9.4.12","photoPreview40":"images/unophoto.png?v=9.4.12","isPhotoExists":false,"isValid":false,"isLoggedIn":false,"isUnconfirmed":true,"isConfirmed":false,"isNewUser":false,"isExisted":false,"isExpert":false,"isRfproUserClass":false},"reasonHTML":"","timeToUnbanString":"-04 мин."},"isBanned":false,"roleString":"Старший Модератор","roleIcon":"fa-user-tie","socialMedia":[],"aboutText":"634034, г.Томск, ул.Красноармейская 122, кв.173","aboutHTML":"634034, г.Томск, ул.Красноармейская 122, кв.173","signatureText":"","signatureHTML":"","country":{"id":0,"name":"","isFlagExists":false,"flagImage":"","isValid":false},"city":{"id":0,"name":"","countryId":0,"yandexCityId":0,"isValid":false},"averageEvaluation":4.985,"absoluteRating":21746,"dynamicRating":410.151,"dynamicRatingStars":8,"timezone":{"id":0,"baseUtcOffset":"00:00:00","displayName":"[не установлен]","linuxid":"notset/clean"},"currentDateTime":"2024-05-28T19:04:18.409425+03:00","isValid":true,"isUnconfirmed":false,"isConfirmed":true,"settings":{"fixedHeader":true,"fixedFooter":true,"leftColumnMode":2,"darkTheme":false,"topPanelBtns":[{"id":103,"text":"Главная","title":"Главная (начальная) страница Портала","icon":"fa-solid fa-house-chimney","colorClass":"text-info-emphasis","controller":"Home","action":"Index","accessLevel":0,"isDropdown":false},{"id":100,"text":"Вход в систему","title":"Войти в систему с использованием своих регистрационных данных (адрес электронной почты и пароль)","icon":"fa-solid fa-arrow-right-to-bracket","colorClass":"text-info-emphasis","controller":"Login","action":"Index","accessLevel":0,"isDropdown":false},{"id":101,"text":"Регистрация","title":"Зарегистрироваться в системе и стать полноценным участником сообщества","icon":"fa-solid fa-user-plus","colorClass":"text-info-emphasis","controller":"Regist","action":"Index","accessLevel":0,"isDropdown":false},{"id":102,"text":"Сброс пароля","title":"Сбросить пароль свой учетной записи, если Вы его забыли","icon":"fa-solid fa-key","colorClass":"text-danger-emphasis","controller":"Login","action":"ResetPassword","accessLevel":0,"isDropdown":false}],"topPanelBtnsHideText":false},"isLevelUpAllowed":false,"nextRole":13,"counters":{"daysAtPortal":5302,"questions":1,"questionsPosts":1973,"questionsAnswers":1283,"questionsPostsEvaluations":588,"forumPosts":91},"isRfproUserClass":true,"id":312929,"name":"Коцюрбенко Алексей Владимирович","email":"","role":12,"registDate":"1000-01-01T00:00:00","lastDate":"2023-11-05T17:20:40","photo":"images/unophoto.png?v=9.4.12","lastDateIndicatorClass":"gray","lastDateIndicatorText":"давно","photoPreview200":"images/unophoto.png?v=9.4.12","photoPreview120":"images/unophoto.png?v=9.4.12","photoPreview100":"images/unophoto.png?v=9.4.12","photoPreview80":"images/unophoto.png?v=9.4.12","photoPreview40":"images/unophoto.png?v=9.4.12","isPhotoExists":false,"isLoggedIn":true,"isNewUser":false,"isExisted":true,"isExpert":true},{"isEmailConfirmed":true,"tel":"","ip":"0.0.0.0","ipLocation":{"ip":"","sDate":3,"postalCode":"","country":"","countryIsoCode":"","federalDistrict":"","region":"","regionType":"","city":"","cityType":"","geoLat":"","geoLon":"","locationString":""},"birthDate":"0001-01-01T00:00:00","age":0,"isBirthdayToday":false,"ban":{"id":0,"userId":0,"isBanned":false,"startDate":"0001-01-01T00:00:00","endDate":"0001-01-01T00:00:00","moder":{"id":0,"name":"Неизвестный","email":"нет адреса","role":0,"roleString":"Неподтвержден","roleIcon":"fa-user-clock","registDate":"0001-01-01T00:00:00","lastDate":"0001-01-01T00:00:00","photo":"images/unophoto.png?v=9.4.12","lastDateIndicatorClass":"gray","lastDateIndicatorText":"давно","photoPreview200":"images/unophoto.png?v=9.4.12","photoPreview120":"images/unophoto.png?v=9.4.12","photoPreview100":"images/unophoto.png?v=9.4.12","photoPreview80":"images/unophoto.png?v=9.4.12","photoPreview40":"images/unophoto.png?v=9.4.12","isPhotoExists":false,"isValid":false,"isLoggedIn":false,"isUnconfirmed":true,"isConfirmed":false,"isNewUser":false,"isExisted":false,"isExpert":false,"isRfproUserClass":false},"reasonHTML":"","timeToUnbanString":"-04 мин."},"isBanned":false,"roleString":"Советник","roleIcon":"fa-user-ninja","socialMedia":[],"aboutText":"","aboutHTML":"","signatureText":"","signatureHTML":"","country":{"id":0,"name":"","isFlagExists":false,"flagImage":"","isValid":false},"city":{"id":0,"name":"","countryId":0,"yandexCityId":0,"isValid":false},"averageEvaluation":5,"absoluteRating":9460,"dynamicRating":382.22,"dynamicRatingStars":8,"timezone":{"id":0,"baseUtcOffset":"00:00:00","displayName":"[не установлен]","linuxid":"notset/clean"},"currentDateTime":"2024-05-28T19:04:18.4094857+03:00","isValid":true,"isUnconfirmed":false,"isConfirmed":true,"settings":{"fixedHeader":true,"fixedFooter":true,"leftColumnMode":2,"darkTheme":false,"topPanelBtns":[{"id":103,"text":"Главная","title":"Главная (начальная) страница Портала","icon":"fa-solid fa-house-chimney","colorClass":"text-info-emphasis","controller":"Home","action":"Index","accessLevel":0,"isDropdown":false},{"id":100,"text":"Вход в систему","title":"Войти в систему с использованием своих регистрационных данных (адрес электронной почты и пароль)","icon":"fa-solid fa-arrow-right-to-bracket","colorClass":"text-info-emphasis","controller":"Login","action":"Index","accessLevel":0,"isDropdown":false},{"id":101,"text":"Регистрация","title":"Зарегистрироваться в системе и стать полноценным участником сообщества","icon":"fa-solid fa-user-plus","colorClass":"text-info-emphasis","controller":"Regist","action":"Index","accessLevel":0,"isDropdown":false},{"id":102,"text":"Сброс пароля","title":"Сбросить пароль свой учетной записи, если Вы его забыли","icon":"fa-solid fa-key","colorClass":"text-danger-emphasis","controller":"Login","action":"ResetPassword","accessLevel":0,"isDropdown":false}],"topPanelBtnsHideText":false},"isLevelUpAllowed":false,"nextRole":10,"counters":{"daysAtPortal":2475,"questions":0,"questionsPosts":472,"questionsAnswers":398,"questionsPostsEvaluations":298,"forumPosts":1},"isRfproUserClass":true,"id":401284,"name":"Михаил Александров","email":"","role":9,"registDate":"1000-01-01T00:00:00","lastDate":"2024-05-25T12:02:55","photo":"users/401284/48171011af39b6bb3a74df8c0fcf97d0.jpg","lastDateIndicatorClass":"red","lastDateIndicatorText":"давно","photoPreview200":"users/401284/200_48171011af39b6bb3a74df8c0fcf97d0.jpg","photoPreview120":"users/401284/120_48171011af39b6bb3a74df8c0fcf97d0.jpg","photoPreview100":"users/401284/100_48171011af39b6bb3a74df8c0fcf97d0.jpg","photoPreview80":"users/401284/80_48171011af39b6bb3a74df8c0fcf97d0.jpg","photoPreview40":"users/401284/40_48171011af39b6bb3a74df8c0fcf97d0.jpg","isPhotoExists":true,"isLoggedIn":true,"isNewUser":false,"isExisted":true,"isExpert":true},{"isEmailConfirmed":true,"tel":"","ip":"0.0.0.0","ipLocation":{"ip":"","sDate":3,"postalCode":"","country":"","countryIsoCode":"","federalDistrict":"","region":"","regionType":"","city":"","cityType":"","geoLat":"","geoLon":"","locationString":""},"birthDate":"0001-01-01T00:00:00","age":0,"isBirthdayToday":false,"ban":{"id":0,"userId":0,"isBanned":false,"startDate":"0001-01-01T00:00:00","endDate":"0001-01-01T00:00:00","moder":{"id":0,"name":"Неизвестный","email":"нет адреса","role":0,"roleString":"Неподтвержден","roleIcon":"fa-user-clock","registDate":"0001-01-01T00:00:00","lastDate":"0001-01-01T00:00:00","photo":"images/unophoto.png?v=9.4.12","lastDateIndicatorClass":"gray","lastDateIndicatorText":"давно","photoPreview200":"images/unophoto.png?v=9.4.12","photoPreview120":"images/unophoto.png?v=9.4.12","photoPreview100":"images/unophoto.png?v=9.4.12","photoPreview80":"images/unophoto.png?v=9.4.12","photoPreview40":"images/unophoto.png?v=9.4.12","isPhotoExists":false,"isValid":false,"isLoggedIn":false,"isUnconfirmed":true,"isConfirmed":false,"isNewUser":false,"isExisted":false,"isExpert":false,"isRfproUserClass":false},"reasonHTML":"","timeToUnbanString":"-04 мин."},"isBanned":false,"roleString":"Посетитель","roleIcon":"fa-user","socialMedia":[],"aboutText":"","aboutHTML":"","signatureText":"","signatureHTML":"","country":{"id":0,"name":"","isFlagExists":false,"flagImage":"","isValid":false},"city":{"id":0,"name":"","countryId":0,"yandexCityId":0,"isValid":false},"averageEvaluation":4.987,"absoluteRating":6052,"dynamicRating":219.795,"dynamicRatingStars":7,"timezone":{"id":0,"baseUtcOffset":"00:00:00","displayName":"[не установлен]","linuxid":"notset/clean"},"currentDateTime":"2024-05-28T19:04:18.4095509+03:00","isValid":true,"isUnconfirmed":false,"isConfirmed":true,"settings":{"fixedHeader":true,"fixedFooter":true,"leftColumnMode":2,"darkTheme":false,"topPanelBtns":[{"id":103,"text":"Главная","title":"Главная (начальная) страница Портала","icon":"fa-solid fa-house-chimney","colorClass":"text-info-emphasis","controller":"Home","action":"Index","accessLevel":0,"isDropdown":false},{"id":100,"text":"Вход в систему","title":"Войти в систему с использованием своих регистрационных данных (адрес электронной почты и пароль)","icon":"fa-solid fa-arrow-right-to-bracket","colorClass":"text-info-emphasis","controller":"Login","action":"Index","accessLevel":0,"isDropdown":false},{"id":101,"text":"Регистрация","title":"Зарегистрироваться в системе и стать полноценным участником сообщества","icon":"fa-solid fa-user-plus","colorClass":"text-info-emphasis","controller":"Regist","action":"Index","accessLevel":0,"isDropdown":false},{"id":102,"text":"Сброс пароля","title":"Сбросить пароль свой учетной записи, если Вы его забыли","icon":"fa-solid fa-key","colorClass":"text-danger-emphasis","controller":"Login","action":"ResetPassword","accessLevel":0,"isDropdown":false}],"topPanelBtnsHideText":false},"isLevelUpAllowed":false,"nextRole":2,"counters":{"daysAtPortal":2753,"questions":0,"questionsPosts":527,"questionsAnswers":250,"questionsPostsEvaluations":155,"forumPosts":0},"isRfproUserClass":true,"id":400669,"name":"epimkin","email":"","role":1,"registDate":"1000-01-01T00:00:00","lastDate":"2024-05-25T23:18:30","photo":"images/unophoto.png?v=9.4.12","lastDateIndicatorClass":"red","lastDateIndicatorText":"давно","photoPreview200":"images/unophoto.png?v=9.4.12","photoPreview120":"images/unophoto.png?v=9.4.12","photoPreview100":"images/unophoto.png?v=9.4.12","photoPreview80":"images/unophoto.png?v=9.4.12","photoPreview40":"images/unophoto.png?v=9.4.12","isPhotoExists":false,"isLoggedIn":true,"isNewUser":false,"isExisted":true,"isExpert":false},{"isEmailConfirmed":true,"tel":"","ip":"0.0.0.0","ipLocation":{"ip":"","sDate":3,"postalCode":"","country":"","countryIsoCode":"","federalDistrict":"","region":"","regionType":"","city":"","cityType":"","geoLat":"","geoLon":"","locationString":""},"birthDate":"0001-01-01T00:00:00","age":0,"isBirthdayToday":false,"ban":{"id":0,"userId":0,"isBanned":false,"startDate":"0001-01-01T00:00:00","endDate":"0001-01-01T00:00:00","moder":{"id":0,"name":"Неизвестный","email":"нет адреса","role":0,"roleString":"Неподтвержден","roleIcon":"fa-user-clock","registDate":"0001-01-01T00:00:00","lastDate":"0001-01-01T00:00:00","photo":"images/unophoto.png?v=9.4.12","lastDateIndicatorClass":"gray","lastDateIndicatorText":"давно","photoPreview200":"images/unophoto.png?v=9.4.12","photoPreview120":"images/unophoto.png?v=9.4.12","photoPreview100":"images/unophoto.png?v=9.4.12","photoPreview80":"images/unophoto.png?v=9.4.12","photoPreview40":"images/unophoto.png?v=9.4.12","isPhotoExists":false,"isValid":false,"isLoggedIn":false,"isUnconfirmed":true,"isConfirmed":false,"isNewUser":false,"isExisted":false,"isExpert":false,"isRfproUserClass":false},"reasonHTML":"","timeToUnbanString":"-04 мин."},"isBanned":false,"roleString":"Посетитель","roleIcon":"fa-user","socialMedia":[],"aboutText":"","aboutHTML":"","signatureText":"[i]С уважением[/i]\n[i]shvetski[/i]","signatureHTML":"\u003Ci\u003EС уважением\u003C/i\u003E\u003Cbr\u003E\u003Ci\u003Eshvetski\u003C/i\u003E","country":{"id":0,"name":"","isFlagExists":false,"flagImage":"","isValid":false},"city":{"id":0,"name":"","countryId":0,"yandexCityId":0,"isValid":false},"averageEvaluation":4.963,"absoluteRating":11493,"dynamicRating":200.092,"dynamicRatingStars":7,"timezone":{"id":0,"baseUtcOffset":"00:00:00","displayName":"[не установлен]","linuxid":"notset/clean"},"currentDateTime":"2024-05-28T19:04:18.4096882+03:00","isValid":true,"isUnconfirmed":false,"isConfirmed":true,"settings":{"fixedHeader":true,"fixedFooter":true,"leftColumnMode":2,"darkTheme":false,"topPanelBtns":[{"id":103,"text":"Главная","title":"Главная (начальная) страница Портала","icon":"fa-solid fa-house-chimney","colorClass":"text-info-emphasis","controller":"Home","action":"Index","accessLevel":0,"isDropdown":false},{"id":100,"text":"Вход в систему","title":"Войти в систему с использованием своих регистрационных данных (адрес электронной почты и пароль)","icon":"fa-solid fa-arrow-right-to-bracket","colorClass":"text-info-emphasis","controller":"Login","action":"Index","accessLevel":0,"isDropdown":false},{"id":101,"text":"Регистрация","title":"Зарегистрироваться в системе и стать полноценным участником сообщества","icon":"fa-solid fa-user-plus","colorClass":"text-info-emphasis","controller":"Regist","action":"Index","accessLevel":0,"isDropdown":false},{"id":102,"text":"Сброс пароля","title":"Сбросить пароль свой учетной записи, если Вы его забыли","icon":"fa-solid fa-key","colorClass":"text-danger-emphasis","controller":"Login","action":"ResetPassword","accessLevel":0,"isDropdown":false}],"topPanelBtnsHideText":false},"isLevelUpAllowed":false,"nextRole":2,"counters":{"daysAtPortal":5744,"questions":35,"questionsPosts":1567,"questionsAnswers":588,"questionsPostsEvaluations":324,"forumPosts":44},"isRfproUserClass":true,"id":226425,"name":"Shvetski","email":"","role":1,"registDate":"1000-01-01T00:00:00","lastDate":"2024-05-15T00:34:48","photo":"users/226425/f345a2332af0cff5fba81b60c4e0d441.jpg","lastDateIndicatorClass":"gray","lastDateIndicatorText":"давно","photoPreview200":"users/226425/200_f345a2332af0cff5fba81b60c4e0d441.jpg","photoPreview120":"users/226425/120_f345a2332af0cff5fba81b60c4e0d441.jpg","photoPreview100":"users/226425/100_f345a2332af0cff5fba81b60c4e0d441.jpg","photoPreview80":"users/226425/80_f345a2332af0cff5fba81b60c4e0d441.jpg","photoPreview40":"users/226425/40_f345a2332af0cff5fba81b60c4e0d441.jpg","isPhotoExists":true,"isLoggedIn":true,"isNewUser":false,"isExisted":true,"isExpert":false}]
Уважаемые эксперты! Пожалуйста, ответьте на вопрос: Надеюсь последняя моя проблема с Ассемблером.
Данные задания уже были выполнены, как вставка в паскаль, но теперь те же программы должны быть реализована на языке ассемблера TASM.
1. Представить обыкновенную дробь как запись с полями «Числитель» и «Знаменатель» и реализовать арифметические операции с дробями. (Под записью подразумевается структура с упакованными данными)
2. Реализуйте подпрограмму, которая возвращает символы имеющиеся в данной строке с указанием числа вхождений каждого символа.
3. Дано натуральное число n. Вычислить: (1-1/2!)(1-1/3!)(1-1/4!)…(1-1/n!) (Все повторяющиеся фрагменты должны быть выполнены в виде макросов, вычисления проводятся до пятого знака после запятой)
Строка во второй задаче какая? 1) Как в С, заканчивается 0 2) Как в Паскале, первый байт - длина строки (< 256 символов) 3) Как в Делфи, первые 4 байт - длина строки
Об авторе:
"Если вы заметили, что вы на стороне большинства, — это верный признак того, что пора меняться." Марк Твен
Неизвестный
15.09.2011, 21:04
общий
Не принципиально. В условиях ничего про это не сказано, я огласил все условия.
;ввод строки с консоли ;используется только для ожидания нажатия на Enter StdIn proc lpszText:DWORD, dwLen:DWORD LOCAL bRead :DWORD call GetStdHandle,STD_INPUT_HANDLE lea ecx, bRead call ReadConsoleA, eax, lpszText, dwLen, ecx, 0 ret StdIn endp
;вывод строки на консоль StdOut proc lpszText:DWORD LOCAL hOutPut :DWORD LOCAL bWritten :DWORD
call lstrlen, lpszText ;EAX = длина строки lea ecx, bWritten ;ECX = адресу переменной, куда запишется длина ; реально выведенного сообщения call WriteConsoleA,hOutPut,lpszText,eax,ecx,NULL mov eax, bWritten ;вернем длину ret StdOut endp
;функция вычисления наибольшего общего делителя чисел A и B ;числа A в EAX и B в EDX, результат НОД в EAX GCD proc push ecx ;сохраним регистр ECX mov ecx,edx ;число В в регистре EDX, при делении ; будет портиться, пусть будет в ECX test eax,eax ;возьмем модуль обоих чисел jns @test_neg_B neg eax @test_neg_B: test ecx, ecx jns @GCD_continue neg ecx @GCD_continue: ;цикл расчета НОД-а test eax,eax ;пока одно из чисел не станет равным 0 jz @GCD_ret jcxz @GCD_ret cmp eax,ecx ;будем искать остаток от деления большего на меньшее jb @GCD_A_lt_B ;A < B ;A >= B xor edx,edx ;числа положительные, можно смело обнулять div ecx ;A / B mov eax,edx ;EAX = A = A mod B, ECX = B jmp @GCD_continue @GCD_A_lt_B: ;A < B xchg eax,ecx ;EAX = B, ECX = A xor edx,edx div ecx ;B / A mov eax,edx ;EAX = B mod A xchg eax,ecx ;ECX = B mod A, EAX = A jmp @GCD_continue @GCD_ret: add eax,ecx ;EAX = A + B, или то, или другое, ;т.к. второе будет равно 0} pop ecx ret GCD endp
;процедура деления дроби на НОД ;EAX - НОД, EBX - знаменатель, EDI - числитель, ECX - адрес дроби-результата}
Cut_f proc XCHG EAX,EBX ;EAX = знаменатель, EBX = НОД CDQ ;знаковое расширение до DX:AX IDIV EBX ;EAX = знаменатель / НОД XCHG EAX,EDI ;EAX = числитель, EDI = знаменатель / НОД CDQ ;знаковое расширение до DX:AX IDIV EBX ;EAX = числитель / НОД ;пусть отрицательное число будет только в числителе TEST EDI,EDI ;знак знаменателя jns @SET_NUMS NEG EAX ;умножим на -1 NEG EDI @SET_NUMS: ;сохраним результат MOV [ECX].x,EAX MOV [ECX].y,EDI ret Cut_f endp
;процедура складывания двух дробей ;параметры: EAX и EDX - адреса складаемых, ECX - результата ;правило вычисления для x1/y1 + x2/y2 ;(первая строка - числитель, вторая - знаменатель): ;(x1*y2+x2*y1) div GCD(x1*y2+x2*y1, y1*y2) ;(y1*y2) div GCD(x1*y2+x2*y1, y1*y2) Add_f proc PUSH EBX ;сохраним регистры PUSH ESI PUSH EDI
MOV ESI,EAX ;адрес первой дроби MOV EDI,EDX ;второй
;процедура вычитания двух дробей ;параметры: EAX - адрес уменьшаемого, EDX - вычитаемого и ECX - результата ;правило вычисления для x1/y1 - x2/y2 ;(первая строка - числитель, вторая - знаменатель): ;(x1*y2-x2*y1) div GCD(x1*y2-x2*y1, y1*y2) ;(y1*y2) div GCD(x1*y2-x2*y1, y1*y2) Sub_f proc PUSH EBX PUSH ESI PUSH EDI
MOV ESI,EAX MOV EDI,EDX
MOV EAX,[ESI].y IMUL [EDI].y MOV EBX,EAX
MOV EAX,[ESI].x IMUL [EDI].y XCHG EAX,EDI MOV EAX,[EAX].x IMUL [ESI].y SUB EDI,EAX ;аналогично сумме, отличие только здесь!
MOV EAX,EDI MOV EDX,EBX call GCD
call Cut_f
POP EDI POP ESI POP EBX ret Sub_f endp
;процедура умножения двух дробей ;параметры: EAX, EDX - адреса множителей и ECX - результата} ;правило вычисления для x1/y1 * x2/y2 ;(первая строка - числитель, вторая - знаменатель): ;(x1*x2) div GCD(x1*x2, y1*y2) ;(y1*y2) div GCD(x1*x2, y1*y2) Mul_f proc PUSH EBX PUSH ESI PUSH EDI
MOV EDX, EBX ;второй множитель, первый уже в EAX call GCD ;НОД
call Cut_f ;делим на НОД и сохраняем
POP EDI POP ESI POP EBX ret Mul_f endp
;процедура деления двух дробей ;параметры: EAX - адрес делимого, EDX - делителя и ECX - результата ;правило вычисления для x1/y1 * x2/y2 ;(первая строка - числитель, вторая - знаменатель): ;(x1*y2) div GCD(x1*y2, y1*x2) ;(y1*x2) div GCD(x1*y2, y1*x2) Div_f proc PUSH EBX PUSH ESI PUSH EDI
;вывод сообщения ;параметры: три дроби и знак операции print proc fr1:dword,fr2:dword,fr3:dword,oper:dword mov eax,fr1 mov edx,fr2 mov ecx,fr3 call wsprintfA C,o buffer,o format,\ d[eax].x,d[eax].y,oper,d[edx].x,d[edx].y,d[ecx].x,d[ecx].y
call StdOut, o buffer ret print endp
start: call AllocConsole ;создадим консоль test ax, ax jz exit ;если ошибка, то просто выйдем
;подождем ввода чего-либо или просто нажатия на Enter, ;чтобы не консоль не сразу закрылась call StdIn,o buffer,256 exit: call ExitProcess STDCALL, 0
.data ;формат для вывода сообщения format db '%d/%d %c %d/%d = %d/%d',0dh,0ah,0 ;дроби f1 fraction <> f2 fraction <> f3 fraction <> ;буфер buffer db 256 dup (?) end start [/code]
Файл 184029_1.def, в котором, в частности, задаем импорт функции wsprintfA из User32.dll [code h=207]NAME 184029_1
DESCRIPTION 'Assembly Win32 Program'
CODE PRELOAD MOVEABLE DISCARDABLE DATA PRELOAD MOVEABLE MULTIPLE
EXETYPE WINDOWS
HEAPSIZE 65536 STACKSIZE 65536
IMPORTS USER32.wsprintfA
[/code]
Для создания EXE удобно пользоваться утилитой MAKE.EXE, которая вызывает все нужные команды
Makefile.mak [code h=207]# Make file for Turbo Assembler 184029_1.
# make -B Will build the release version of 184029_1.exe # make -B -DDEBUG Will build the debug version of 184029_1.exe
Ну и, наконец, вызываем этот самый MAKE.EXE с помощью вот такого BAT-файла:
Код:
@c:\TASM\BIN\make -b %1
---------------------------------------------------------------------------------------------------------- 2) Строки Программа работает со строками формата языка С, т.е. заканчивающимися нулем Программа предполагает, что длина строки не больше 254 байт, поэтому и счетчики разных букв состоят из одного байта
call lstrlen, lpszText ;EAX = длина строки lea ecx, bWritten ;ECX = адресу переменной, куда запишется длина ; реально выведенного сообщения call WriteConsoleA,hOutPut,lpszText,eax,ecx,NULL mov eax, bWritten ;вернем длину ret StdOut endp
;процедура формирует строку из разных символов и массив из количеств символов CharsCount proc Src:dword,Dst:dword,Counts:dword push edi ;сохраним регистры push esi push ebx mov edx,Dst ;адрес буфера разных символов mov esi,Src ;адрес исходной строки mov edi,Counts ;адрес счетчиков mov ecx,256 ;предполагаем,что там 256 байт xor eax,eax ;0 rep stosb ;обнуляем mov edi,Counts ;адрес счетчиков @CalcCharsLoop: ;цикл по символам строки lodsb ;очередной символ cmp al,0dh je @FormString cmp al,0 je @FormString inc byte ptr [edi+eax] ;считаем в массиве счетчиков loop @CalcCharsLoop ;по всем символам @FormString: ;формируем результат xor ebx,ebx ;индекс для 256 значений счетчиков xor esi,esi ;счетчик разных значений mov ecx,256 ;счетчик в буфере @FormStringLoop: ;цикл формирования результата mov al,[edi+ebx] ;читаем счетчик test al,al ;проверяем на 0 jz @FormStringNext;если 0,то обходим mov [edx+esi],bl ;для ненулевого сохраняем индекс,как код символа mov [edi+esi],al ;и количество,сохраняем с начала массива счетчиков inc esi ;считаем разные значения @FormStringNext: ;на следующий счетчик inc ebx ;индекс следующего счетчика loop @FormStringLoop ;по всем mov eax,esi ;вернем длину строки разных символов mov byte ptr [edx+esi],0;закроем строку нулем pop ebx ;восстанавливаем регистры pop esi pop edi ret CharsCount endp
start: call AllocConsole ;создадим консоль test ax,ax jz exit ;если ошибка,то просто выйдем
call StdOut,o sEnter ;пригласим ввести строку call StdIn,o buffer,256 ;вводим строку длины максимум 256, ; в конце коды 0dh,0ah ;обработаем строку call CharsCount,o buffer,o Tgt,o Cnt
;сформируем результат call StdOut,o sTarget ;выведем 'Target =' xor esi,esi ;индекс в массиве разных символов и количеств PrCountsLoop: ;по разнам символам mov al,Tgt[esi] ;очередной символ cmp al,0 ;конец строки? je finish movsx ecx,Cnt[esi] ;считываем количество, 1 байт в dword inc esi ;индекс следующего ;сформирум информацию о символе в виде "'sym':N," (символ 'sym' N раз) call wsprintfA,o buffer,o frm_cd,eax,ecx cmp byte ptr Tgt[esi],0 ;если последний jne PrNum call lstrlen,o buffer ;то последнюю запятую mov dword ptr buffer[eax-1],0a0dh ;меняем на 0d0ah с нулем в конце PrNum: call StdOut,o buffer ;выводим jmp PrCountsLoop ;на следующий finish: ;подождем ввода чего-либо или просто нажатия на Enter, ;чтобы консоль не сразу закрылась call StdIn,o buffer,256 exit: call ExitProcess STDCALL,0
.data sEnter db 'Enter string: ',0 sTarget db 'Target: ',0 sCounts db 0dh,0ah,'Counts = ',0 frm_cd db "'%c':%d,",0 ;буфер buffer db 256 dup (?) ;буфер для ввода, для формирования строк Tgt db 256 dup (?) ;буфер для строки разных символов Cnt db 256 dup (?) ;буфер для количеств разных символов
end start [/code]
184029_2.def аналогичен
Код:
NAME 184029_2
DESCRIPTION 'Assembly Win32 Program'
CODE PRELOAD MOVEABLE DISCARDABLE DATA PRELOAD MOVEABLE MULTIPLE
EXETYPE WINDOWS
HEAPSIZE 65536 STACKSIZE 65536
IMPORTS USER32.wsprintfA
Как и makefile.mak [code h=207]# Make file for Turbo Assembler 184029_2.
# make -B Will build the release version of 184029_2.exe # make -B -DDEBUG Will build the debug version of 184029_2.exe
call lstrlen, lpszText ;EAX = длина строки lea ecx, bWritten ;ECX = адресу переменной, куда запишется длина ; реально выведенного сообщения call WriteConsoleA,hOutPut,lpszText,eax,ecx,NULL mov eax, bWritten ;вернем длину ret StdOut endp
;процедура вычисляет требуемое выражение, EAX = n ;результат - в стеке сопроцессора CalcValue proc sub esp,4 ;здесь будет число 2...n mov dword ptr [esp],2 ;начинаем с 2 finit ;инициализация сопроцессора fld1 ;1, для накопления окончательного выражения fld st ;1, для накопления факториала @mainLoop: ;цикл расчета cmp [esp],eax ;проверим, дошли ли до конца, EAX = n ja @finish ;конец расчета fimul dword ptr [esp] ;считаем факториал, умножая предыдущее значение на очередное fld st ;посчитаем числитель, как i!-1 fld1 ;1 fsubp st(1),st ;числитель fdiv st, st(1) ;получим (i!-1)/i! fmulp st(2),st ;накапливаем произведения с потерей промежуточного частного inc dword ptr [esp] ;на следующий член jmp @mainLoop ;пока не дойдем до n @finish: ;конец fstp st ;уберем из стека сопроцессора n!, теперь st = посчитанной величине! add esp,4 ;уберем двойное слово из стека процессора ret CalcValue endp
;Функция преобразования строки в число ;признаками конца являются ноль, код 0dh, а также пробел и табуляция ;все остальные, кроме цифр, недопустимы ;также ошибкой будет число большее максимального целого (2^32-1) ;параметр - адрес строки, результат в EAX atoi proc string:dword xor edi,edi ;наше число mov esi,string ;числовая строка GetNumLoop: movzx ebx,byte ptr [esi] ;очередная цифра inc esi ; проверим на разделители cmp bl, 0dh je num_end_found ;конец ввода cmp bl, 0 je num_end_found cmp bl, ' ' je num_end_found cmp bl, 9 je num_end_found cmp bl, '0' ;цифра? jb set_c ;ошибка - не цифра! cmp bl, '9' ja set_c
and bl,0fh ;цифра -> число (30h-39h -> 0-9) mov eax,10 ;умножим на 10 imul edi ;предыдущее значение test edx,edx ;больше cлова - ошибка! jnz set_c add eax,ebx ;добавим сохраненный разряд jc set_c ;больше слова - ошибка! js set_c ;больше 2^31-1 - ошибка! mov edi,eax ;сохраним jmp GetNumLoop ;на анализ следующего символа
num_end_found: ;встретили признак конца mov eax,edi ;результат в eax clc ;все ок ret set_c: stc ;ошибка ret atoi endp
start: call AllocConsole ;создадим консоль test ax,ax jz exit ;если ошибка,то просто выйдем
Continue: call StdOut,o sEnter ;пригласим ввести N call StdIn,o buffer,256 ;вводим строку длины максимум 256, ; в конце коды 0dh,0ah call atoi,o buffer ;EAX = введенному числу jnc ToCmpValue ;нет ошибки - идем дальше call StdOut,o sErrorNum ;вывод сообщение jmp Continue ;и на повтор ввода ToCmpValue: ;проверим на значение cmp eax,2 jl ToErrorValue cmp eax,1000 jle ToCalc ToErrorValue: call StdOut,o sErrorValue ;ждем число от 1 до 1000 jmp Continue ToCalc: call CalcValue ;выполняем задание, EAX = n ;чтобы вывести вещественное число ;сделаем такой трюк fimul c100000 ;умножаем на 100000, чтобы 5 цифр после запятой ;оказались в целой части fistp dqValue ;сохраним из сопроцессора, как 64-битное целое mov eax, dword ptr dqValue ;dx:ax = целому mov edx, dword ptr dqValue+4 div c100000 ;делим обратно на 100000 ;EAX = целой части, EDX = дробной ;сформируем строку в виде <целая часть>.<дробная> ;(оказалось, что у wsprintf нет формата для вывода ;вещественного числа) call wsprintfA,o buffer,o frm_value,eax,edx call StdOut,o buffer ;выводим
;подождем ввода чего-либо или просто нажатия на Enter, ;чтобы консоль не сразу закрылась call StdIn,o buffer,256 exit: call ExitProcess STDCALL,0
.data dqValue dq ? c100000 dd 100000 sEnter db 'Enter N: ',0 sErrorNum db 'Incorrect number',0dh,0ah,0 sErrorValue db 'Number must be from 2 to 1000',0dh,0ah,0 frm_value db 'Value = %d.%5.5d',0dh,0ah,0 ;буфер buffer db 256 dup (?) ;буфер для ввода, для формирования строк
end start [/code] 184029_3.def
Код:
NAME 184029_3
DESCRIPTION 'Assembly Win32 Program'
CODE PRELOAD MOVEABLE DISCARDABLE DATA PRELOAD MOVEABLE MULTIPLE
EXETYPE WINDOWS
HEAPSIZE 65536 STACKSIZE 65536
IMPORTS USER32.wsprintfA
makefile.mak [code h=207]# Make file for Turbo Assembler 184029_3.
# make -B Will build the release version of 184029_3.exe # make -B -DDEBUG Will build the debug version of 184029_3.exe
{"canUserNotesAccess":false,"canUserAdminsNotesAccess":false,"canAskQuestion":false,"canEditQuestions":false,"canSeeQuestionsComplains":false,"isSuperAdmin":false,"isAdmin":false,"isModer":false,"canCreateNewUser":false,"canConfirmUser":false,"canEditUserName":false,"canEditUserRole":false,"canEditUserEmail":false,"canEditUserPhone":false,"canEditUserBirthdate":false,"canEditUserCountry":false,"canEditSocialMedia":false,"canDeleteUserPhoto":false,"canDeleteUser":false,"canEditUserAbout":false,"canBanUser":false,"canResetUserPassword":false,"canEditRegistDate":false,"canChangeUserRating":false,"canAccessToAdmin":false,"canAnnouncements":false,"canManageQuestionPosts":false,"canManageForumSections":false,"canManageForumThreads":false,"canManageForumPosts":false,"canCreateForumThreads":false,"canSeeUserEmail":false,"canSeeUserPhone":false,"canSeeIPAddress":false,"canSeeUserRegistDate":false,"canSeeUserSocialMedia":false,"canSeeBirthDate":false,"canSeeUserCountry":false,"canSeeUserSettings":false,"canSeeDeletedPosts":false,"isEmailConfirmed":false,"tel":"","ip":"0.0.0.0","ipLocation":{"ip":"","sDate":0,"postalCode":"","country":"","countryIsoCode":"","federalDistrict":"","region":"","regionType":"","city":"","cityType":"","geoLat":"","geoLon":"","locationString":""},"birthDate":"0001-01-01T00:00:00","age":0,"isBirthdayToday":false,"ban":{"id":0,"userId":0,"isBanned":false,"startDate":"0001-01-01T00:00:00","endDate":"0001-01-01T00:00:00","moder":{"id":0,"name":"Неизвестный","email":"","role":0,"roleString":"Неподтвержден","roleIcon":"fa-user-clock","registDate":"0001-01-01T00:00:00","lastDate":"0001-01-01T00:00:00","photo":"images/unophoto.png?v=9.4.12","lastDateIndicatorClass":"gray","lastDateIndicatorText":"давно","photoPreview200":"images/unophoto.png?v=9.4.12","photoPreview120":"images/unophoto.png?v=9.4.12","photoPreview100":"images/unophoto.png?v=9.4.12","photoPreview80":"images/unophoto.png?v=9.4.12","photoPreview40":"images/unophoto.png?v=9.4.12","isPhotoExists":false,"isValid":false,"isLoggedIn":false,"isUnconfirmed":true,"isConfirmed":false,"isNewUser":false,"isExisted":false,"isExpert":false,"isRfproUserClass":false},"reasonHTML":"","timeToUnbanString":"-04 мин."},"isBanned":false,"roleString":"Неподтвержден","roleIcon":"fa-user-clock","socialMedia":[],"aboutText":"","aboutHTML":"","signatureText":"","signatureHTML":"","country":{"id":0,"name":"","isFlagExists":false,"flagImage":"","isValid":false},"city":{"id":0,"name":"","countryId":0,"yandexCityId":0,"isValid":false},"averageEvaluation":0,"absoluteRating":0,"dynamicRating":0,"dynamicRatingStars":0,"timezone":{"id":283,"baseUtcOffset":"03:00:00","displayName":"(UTC\u002B03:00) Москва","linuxid":"Europe/Moscow"},"currentDateTime":"2024-05-28T22:04:18.4102012+03:00","isValid":false,"isUnconfirmed":true,"isConfirmed":false,"settings":{"fixedHeader":true,"fixedFooter":true,"leftColumnMode":2,"darkTheme":false,"topPanelBtns":[{"id":103,"text":"Главная","title":"Главная (начальная) страница Портала","icon":"fa-solid fa-house-chimney","colorClass":"text-info-emphasis","controller":"Home","action":"Index","accessLevel":0,"isDropdown":false},{"id":100,"text":"Вход в систему","title":"Войти в систему с использованием своих регистрационных данных (адрес электронной почты и пароль)","icon":"fa-solid fa-arrow-right-to-bracket","colorClass":"text-info-emphasis","controller":"Login","action":"Index","accessLevel":0,"isDropdown":false},{"id":101,"text":"Регистрация","title":"Зарегистрироваться в системе и стать полноценным участником сообщества","icon":"fa-solid fa-user-plus","colorClass":"text-info-emphasis","controller":"Regist","action":"Index","accessLevel":0,"isDropdown":false},{"id":102,"text":"Сброс пароля","title":"Сбросить пароль свой учетной записи, если Вы его забыли","icon":"fa-solid fa-key","colorClass":"text-danger-emphasis","controller":"Login","action":"ResetPassword","accessLevel":0,"isDropdown":false}],"topPanelBtnsHideText":false},"isLevelUpAllowed":false,"nextRole":1,"counters":{"daysAtPortal":0,"questions":0,"questionsPosts":0,"questionsAnswers":0,"questionsPostsEvaluations":0,"forumPosts":0},"isRfproUserClass":true,"id":0,"name":"Неизвестный","email":"","role":0,"registDate":"0001-01-01T00:00:00","lastDate":"0001-01-01T00:00:00","photo":"images/unophoto.png?v=9.4.12","lastDateIndicatorClass":"gray","lastDateIndicatorText":"давно","photoPreview200":"images/unophoto.png?v=9.4.12","photoPreview120":"images/unophoto.png?v=9.4.12","photoPreview100":"images/unophoto.png?v=9.4.12","photoPreview80":"images/unophoto.png?v=9.4.12","photoPreview40":"images/unophoto.png?v=9.4.12","isPhotoExists":false,"isLoggedIn":false,"isNewUser":false,"isExisted":false,"isExpert":false}