[{"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":"00 мин."},"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":109927,"dynamicRating":1674.688,"dynamicRatingStars":9,"timezone":{"id":0,"baseUtcOffset":"00:00:00","displayName":"[не установлен]","linuxid":"notset/clean"},"currentDateTime":"2024-05-07T14:00:32.1747335+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":6564,"questions":12,"questionsPosts":18345,"questionsAnswers":6663,"questionsPostsEvaluations":2831,"forumPosts":5698},"isRfproUserClass":true,"id":17387,"name":"Гордиенко Андрей Владимирович","email":"","role":10,"registDate":"1000-01-01T00:00:00","lastDate":"2024-05-06T05:00:12","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":"00 мин."},"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":25753,"dynamicRating":460.168,"dynamicRatingStars":8,"timezone":{"id":0,"baseUtcOffset":"00:00:00","displayName":"[не установлен]","linuxid":"notset/clean"},"currentDateTime":"2024-05-07T14:00:32.1749089+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":5596,"questions":25,"questionsPosts":7459,"questionsAnswers":1225,"questionsPostsEvaluations":788,"forumPosts":399},"isRfproUserClass":true,"id":259041,"name":"Алексеев Владимир Николаевич","email":"","role":10,"registDate":"1000-01-01T00:00:00","lastDate":"2024-01-30T15:24:45","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":"00 мин."},"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":411.782,"dynamicRatingStars":8,"timezone":{"id":0,"baseUtcOffset":"00:00:00","displayName":"[не установлен]","linuxid":"notset/clean"},"currentDateTime":"2024-05-07T14:00:32.1750159+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":5281,"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":"00 мин."},"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":385.491,"dynamicRatingStars":8,"timezone":{"id":0,"baseUtcOffset":"00:00:00","displayName":"[не установлен]","linuxid":"notset/clean"},"currentDateTime":"2024-05-07T14:00:32.1750905+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":2454,"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-04-21T19:50:04","photo":"users/401284/48171011af39b6bb3a74df8c0fcf97d0.jpg","lastDateIndicatorClass":"gray","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":"00 мин."},"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":221.484,"dynamicRatingStars":7,"timezone":{"id":0,"baseUtcOffset":"00:00:00","displayName":"[не установлен]","linuxid":"notset/clean"},"currentDateTime":"2024-05-07T14:00:32.1751618+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":2732,"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-02-19T23:46:05","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":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":"00 мин."},"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.826,"dynamicRatingStars":7,"timezone":{"id":0,"baseUtcOffset":"00:00:00","displayName":"[не установлен]","linuxid":"notset/clean"},"currentDateTime":"2024-05-07T14:00:32.1752495+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":5723,"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-07T11:57:07","photo":"users/226425/f345a2332af0cff5fba81b60c4e0d441.jpg","lastDateIndicatorClass":"red","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}]
Уважаемые эксперты! Пожалуйста, ответьте на вопрос: Повторяю свой вопрос № 183147 -написать программу, считающую количество запятых в файле. Имя файла ввести с клавиатуры или передать как параметр командной строки. Чтение из файла организовать блоком. Размер блока- по усмотрению.Необходимы подробные комментарии на каждой строке.АСС- TASM.В приложении ответ данный Зенченко К.Н. Если можно упростите программу, так как мы только начинаем изучать АСС ? Заранее спасибо, с уважением Canijke.
Приложение: model tiny .code org 100h szBlock equ 256 ;начало сбрасываем счетчик begin: xor ax,ax mov dwCount,ax ;адрес командной строки mov si,80h ;адрес буфера lea di,dbFileName lodsb;длина аргументов ком строки or al,al jz cmd01 ;копируем командную строку xor ch,ch mov cl,al lodsb;пропускаем пробел push di rep movsb;копируем вместе с 0Dh pop di jmp cmd02 ;вводим имя cmd01: mov ah,09;сообщение "введите имя" lea dx,dbEnter int 21h mov ax,0FFh;длина 256 символов mov dwHndl,ax lea dx,dwHndl;вводим имя файла mov ah,0ah int 21h ;ком.строка и ввод строки всегда заканчивается 0Dh cmd02: inc di cmp byte ptr[di],0Dh jnz cmd02 ;нам нужно для открытия файла заменить его на 0 xor ax,ax stosb ;открываем файл mov ah,3Dh lea dx,dbFileName int 21h jnc @@01 ;ошибка выводим сообщение lea dx,dbErrorOpen jmp MSG01 ; @@01: mov dwHndl,ax;запоминаем дискриптор ;читаем блок данных @@02: mov ah,3Fh mov bx,dwHndl mov cx,szBlock lea dx,dbBlock int 21h jnc @@03 ;ошибка закрываем файл mov ah,3eh mov bx,dwHndl int 21h ;выводим сообщение lea dx,dbErrorLoad MSG01: lea bx,AnyKey push bx jmp MSG ;в счетчик количество прочитанных символов @@03: mov cx,ax push ax;запоминаем их lea si,dbBlock;настраиваемся на блок памяти @@04: lodsb;считаем символ cmp al,',';запятая jnz @@05;нет переходим inc word ptr dwCount;да увеличиваем счетчик @@05: loop @@04;пока СХ больше нуля pop ax;востанавливаем кол-во символов cmp ax,szBlock;проверяем кол-во символов jz @@02;совпало повторяем ;не совпало конец файла, закрываем его mov ah,3Eh mov bx,dwHndl int 21h ;выводим сообщение "результат" lea dx,dbResult call MSG ;загружаем счетчик mov ax,dwCount xor cx,cx mov bx,10 ;в цикле остаток от деления на 10 записываем в стек @@06: xor dx,dx div bx push dx inc cx or ax,ax jnz @@06 ;в цимклу из стека извлекаем цифры в нужной последовательности @@07: pop ax or al,'0' int 29h loop @@07 ;ожидаем любую клавишу AnyKey: xor ax,ax int 16h ret ;выводим сообщение адрес DX MSG: mov ah,9 int 21h ret dbEnter db 10,13,'Enter file name:$' dbResult db 10,13,'Result:$' dbErrorOpen db 10,13,'Error open file$' dbErrorLoad db 10,13,'Error load data$' dwCount dw ? dwHndl dw ? dbFileName label byte dbBlock db szBlock dup(?) end begin
Вот Вам моя версия программы. Разные подзадачи реализованы в виде подпрограмм. Программа анализирует сначала параметр командной строки, причем игнорирует лидирующие пробелы и пробел, также как и код 0dh, является концом имени файла. Если параметра нет, то имя запрашивается с консоли. При операциях с файлом проводится проверка на ошибки.
Придется-таки потрудиться, чтобы понять код... Задача достаточно объемная. Если что непонятно, пишите в мини-форум Удачи!
[code h=207] .model small .stack 100h .code start: mov ax, @data mov es, ax ;настроим пока только регистр es ;ds равен сегменту PSP, там параметр командной строки call GetParm ;смотрим параметр из командной строки, если есть, ;то dx - смещение имени файла в сегменте данных mov ax, @data mov ds, ax ;настроим и ds
jnc openFile ;если задано, то на открытие файла ;не задано - запрашиваем lea dx, sGetIn ;строка приглашения 'Enter file name:' call GetName ;ds:dx = адрес имени входного файла
;откроем входной файл openFile: mov ax, 3d00h ;открываем файл на чтение int 21h jc OpenError ;ошибка? mov bx, ax ;сохраним описатель файла в bx для дальнейшей работы xor si, si ;счетчик запятых lea dx, buffer ;адрес буфера xor di, di ;для контроля файла 0 длины ;прочитаем readLoop: mov cx, 1000h ;будем читать 4к за 1 раз mov ah, 3fh ;функция чтения int 21h jc ReadError ;ошибка? mov cx, ax ;сохраним длину файла в cx jcxz printRes ;чтение после конца даст 0 - признак, что все прочитано
call CalcCommas ;считаем запятые кусочка jmp readLoop ;и на повтор
printRes: ;вывод результата подсчета lea dx, sCommasNum ;выведем сообщение mov ah, 9 int 21h
mov ax, si ;число запятых call PrintNum
closeFile: mov ah, 3eh ;закроем входной файл int 21h
PressAny: lea dx, sAny ;выведем 'Press any key' mov ah, 9 int 21h
mov ah, 0 ; ждем нажатие на клавишу int 16h
mov ax,4c00h ; конец работы int 21h
;обработка ошибок OpenError: ;ошибка открытия (файл или не найден, или занят) lea dx, sOpenErr mov ah, 9 int 21h jmp PressAny ;на вывод 'Press any key' ReadError: ;ошибка чтения lea dx, sReadErr mov ah, 9 int 21h jmp closeFile ;на закрытие и вывод 'Press any key'
CalcCommas proc ;подсчет запятых, dx - адрес буфера, cx - длина, результат - si mov di, dx ;адрес начала буфера mov al, ',' ;будем искать код ',' calcLoop: jcxz calcRet ;длина 0 - нечего делать repne scasb ;ищем, пока не равно jne calcRet ;не равно, значит дошли до конца inc si ;равно - считаем jmp calcLoop ;по всему буферу calcRet: ret CalcCommas endp
;Подпрограмма ввода имени файла ;на входе: ds:dx - адрес сообщения ;на выходе: ds:dx - адрес имени GetName proc mov ah, 9 ;выведем приглашение из dx:dx int 21h
lea dx, buf ;введем строку mov ah, 0ah int 21h
xor bx, bx ;заменим последний код 0dh на 0 mov bl, len ;длина введенной строки mov byte ptr string[bx], 0 ;пишем 0
lea dx, string ;возвращаем адрес имени ret GetName endp
;анализ параметра ;адрес параметра в PSP находится по адресу PSP:80h - длина, PSP:81h - сам параметр, ;заканчивающийся кодом 0dh. Мы длину трогать не будем, а будем анализировать по коду 0dh ;имя файла можно как предворять, так и завершать разделителями (пробелом, табуляцией) ;флагом CF = 0/1 вернем результат: задано/не задано имя файла GetParm proc mov si, 81h ;параметр в сегменте PSP lea di, string ;адрес в сегменте данных, куда запишем имя файла mov dx, di ;здесь вернем адрес имени, если задано, конечно xor cx, cx ;счетчик символов имени файла parmLoop: lodsb ;очередной cmp al, 0dh je endParm ;конец строки cmp al, ' ' je parmSeparator ;разделитель cmp al, 9 je parmSeparator ;разделитель stosb ;символ имени - копируем inc cx ;считаем jmp ParmLoop ;по всем
parmSeparator: ;разделитель jcxz parmLoop ;разделители в начале строки пропускаем endParm: ;конец строки stc ;сначала пометим, что нет параметра jcxz parmRet ;счетчик символов нет - точно нет параметра mov al, 0 ;есть, завершаем строку нулем stosb clc ;и помечаем, что параметр задан parmRet: ret GetParm endp
PrintNum proc ;вывод беззнакового числа из ax mov bx, 10 ;будем делить на 10 xor cx, cx ;счетчик цифр DivLoop: xor dx, dx ;готовимся к делению dx:ax / bx div bx ;ax - частное, dx - остаток=очередной младшей цифре push dx ;сохраним цифру в стеке inc cx ;посчитаем test ax, ax ;продолжим, пока не 0 jnz DivLoop mov ah, 2 ;функция вывода PrintLoop: ;будем выводить в обратном порядке, начиная со старшей шифры pop ax ;восстановим очередной разряд or al, '0' ;превратим в символ int 29h ;выведем loop PrintLoop ret PrintNum endp
.data
;строки сообщений sGetIn db 0dh,0ah,'Enter file name: $' sCommasNum db 0dh,0ah,'Commas count = $' sAny db 0dh,0ah,'Press any key$'
sOpenErr db 0dh,0ah,'File open error!$' sReadErr db 0dh,0ah,'File read error!$'
buf label byte ; буфер для приема строки с клавиатуры (по ф-и 0ah) max db 128 ; максимальная длина строки len db 0 ; реальная длина введенной строки string db 128 dup (?) ; сама строка
buffer db 1000h dup(?) ;буфер для чтения файла (размещаем за программой)
end start [/code]
5
Спасибо за помощь. Надеюсь разобраться и сдать это задание.
Об авторе:
"Если вы заметили, что вы на стороне большинства, — это верный признак того, что пора меняться." Марк Твен
Программа логически делится на три участка(выделено пустыми строчками). 1)анализ командной строки, получение имени файла и его открытие; 2)цикл задания, т.е. поиск и подсчет запятых в файле; 3)закрытие файла, и вывод результата.
Отдельно по каждому пункту: 1)Системный загрузчик в запущеную программу передает аргументы командной строки и записывает их в префиксе программы по адресу DS:080h. Первый байт содержит длину переданных аргументов. Если длина больше нуля, то второй байт будет пробелом, после этого сам параметр(ы) и все это заканчивается кодом 0Dh. Если параметров нет, то там будет ноль, а следующий байт будет содержать код 0Dh. Строки lodsb | or al,al | jz noCommandLine занимаются именно этой проверкой. Если есть параметр в командной строке, он копируется в буфер программы dbFileName label byte | dbBlock db szBlock dup(?) вместе с замыкающим кодом 0Dh. В случае, когда параметров нет - будет переход на метку noCommandLine и программа попросит пользователя ввести имя файла(с помощью функций 09h и 0Аh - прерывания ДОС 21h), Введеная строка будет размещена в буфере программы. Тем или иным способом программа получает имя проверяемого файла, но пока ещё не готова открывать его, т.к. для функции 3Dh прерывания ДОС 21h, необходимо, что бы строка заканчивалась кодом 0, а у нас там пока 0Dh. Исправлением этого занимается цикл setMarker: inc di | cmp byte ptr[di],0Dh | jnz setMarker, следующие строчки xor ax,ax | stosb записывают вместо найденого кода 0. Только после этого открывается сам файл. Если ошибки нет то переходим к следующему этапу, иначе выводится сообщение об ошибке и останов.
2)С помощью фунции 3Fh прерывания ДОС 21h из файла считывается блок данных размером szBlock (у нас это 256 байт). Если не было ошибки, то начинается цикл проверки, иначе файл закрывается, выводится сообщение об ошибке и останов. Цикл проверки:
Код:
lea si,dbBlock;настраиваемся на блок памяти isLoop: lodsb ;считаем символ cmp al,',';запятая jnz ignore;нет переходим inc word ptr dwCount;да увеличиваем счетчик ignore: loop isLoop;пока СХ больше нуля
Для проверки используется строковая команда lodsb - содержимое памяти DS:SI помещается в аккумулятор, в данном случае это AL и значение SI увеличивается на размер операнда, сравнивается с искомым cmp al,',' и при совпадениии увеличивается счетчик. Так будет продолжатся пока не будет проверены все прочитанные данные. Следующие строчки проверяют файл на окончание:
Код:
isLoad: mov cx,ax push ax;запоминаем их . . . pop ax;востанавливаем кол-во символов cmp ax,szBlock;проверяем кол-во символов jz LoadFile
После выполнения фунции чтения с диска в регистре АХ находится реально считаное количество байт, и если оно не совпадает со значением в регистре СХ, значит файл прочитан полностью и в нем больше нет информации для проверки.
3)Файл проверен полностью, его закрывают с помощью функции 3Еh прерывания ДОС 21h. Выводится результаты работы с помощью функции 09h прерывания ДОС 21h(выводится строка) и прерывания 29h само числовое значение. Вывод числа делится на два этапа деление выводимого числа на десять и помещение остатка от деления в стек, после этого вывод полученых остатков от деления на экран в нужном порядке.
Код с добавлеными комментариями: [code h=200]model tiny;модель памяти .code;сегмент код-данных-стека org 100h;стандартное смеение под заголовок szBlock equ 256;размер выделеного блока begin: xor ax,ax;содержимое Ах=0 mov dwCount,ax;сбрасываем счетчик mov si,80h;DS:SI адрес командной строки переданного в программу системным загрузчиком lea di,dbFileName;адрес имени файла lodsb ;длина ком.строки or al,al;равно нулю вводим имя jz noCommandLine ;копируем командную строку xor ch,ch;сбрасываем старший байт счетчика mov cl,al;запоминаем длину счетчика lodsb ;пропускаем пробел push di;запоминаем индексный регистр rep movsb;копируем вместе с 0Dh pop di;востанавливаем индексный регистр jmp setMarker ;в командной строке нет имени файла вводим его noCommandLine: mov ah,09;сообщение "введите имя" lea dx,dbEnter;адрес выводимого сообщения int 21h mov ax,0FFh;длина 256 символов mov dwHndl,ax;запоминаем максимальную дляину строки lea dx,dwHndl;вводим имя файла mov ah,0ah;функция ДОС ввод строки int 21h ;ком.строка и ввод строки всегда заканчивается 0Dh setMarker: inc di;следющий символ cmp byte ptr[di],0Dh;проверяем jnz setMarker;не равен переходим ;нам нужно для открытия файла заменить его на 0 xor ax,ax; АХ=0 stosb ;записываем его в конец строки mov ah,3Dh;функция открываем файл lea dx,dbFileName;адрес с именем открываемого файла int 21h jnc isOpen;открыли без ошибки переходим lea dx,dbErrorOpen;адрес сообщения об ошибке jmp MSG01 isOpen: mov dwHndl,ax;запоминаем дискриптор ; ; ;читаем блок данных LoadFile: mov ah,3Fh;функция чтения файла mov bx,dwHndl;дискриптор открытого файла mov cx,szBlock;размер читаемого блока lea dx,dbBlock;адрес куда читаем int 21h jnc isLoad;прооверяем ошибку чтения mov ah,3eh;функция закрыть файл mov bx,dwHndl;дискриптор открытого файла int 21h lea dx,dbErrorLoad;сообщение об ошибке MSG01: lea bx,AnyKey;адрес п/программы ожидание любой клавиши push bx;запоминаем адрес в стеке jmp MSG ;в счетчик количество прочитанных символов isLoad: mov cx,ax push ax;запоминаем их lea si,dbBlock;настраиваемся на блок памяти isLoop: lodsb ;считаем символ cmp al,',';запятая jnz ignore;нет переходим inc word ptr dwCount;да увеличиваем счетчик ignore: loop isLoop;пока СХ больше нуля pop ax;востанавливаем кол-во символов cmp ax,szBlock;проверяем кол-во символов jz LoadFile;совпало повторяем ; ; ;не совпало конец файла, закрываем его mov ah,3Eh;фукнкция закрыть файл mov bx,dwHndl;дискриптор открытого файла int 21h ;выводим сообщение "результат" lea dx,dbResult;сообщение о результате call MSG;подпрограмма вывода сообщения ;загружаем счетчик mov ax,dwCount xor cx,cx;счетчик цифр в стеке mov bx,10;система счисления ;в цикле остаток от деления на 10 записываем в стек isDiv: xor dx,dx div bx;делим на 10-ть push dx;остаток запоминаем в стеке inc cx;увеличиваем счетчик or ax,ax;пока не ноль повторяем деление jnz isDiv ;в цикле из стека извлекаем цифры в нужной последовательности isOut: pop ax;извлекаем из стека цифру or al,'0';преобразовываем в символ int 29h;выводим на экран loop isOut;пока есть в стеке цифры ;ожидаем любую клавишу и выходим AnyKey: xor ax,ax;функция ожидание клавиши без эхо int 16h ret ;выводим сообщение адрес DX MSG: mov ah,9;функция вывода сообщения int 21h ret dbEnter db 10,13,'Enter file name:$' dbResult db 10,13,'Result:$' dbErrorOpen db 10,13,'Error open file$' dbErrorLoad db 10,13,'Error load data$' dwCount dw ? dwHndl dw ? dbFileName label byte dbBlock db szBlock dup(?) end begin[/code]
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
{"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":"00 мин."},"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-07T17:00:32.1756667+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}