From 5648875cd2ef2ca4d06e625746f09cf471fa8218 Mon Sep 17 00:00:00 2001 From: Razvalyaev Date: Tue, 17 Jun 2025 18:34:23 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D1=8D=D0=BA=D1=81=D0=BF=D0=BE=D1=80=D1=82=20=D0=B8=20?= =?UTF-8?q?=D0=B8=D0=BC=D0=BF=D0=BE=D1=80=D1=82=20=D0=BD=D0=B0=D1=81=D1=82?= =?UTF-8?q?=D1=80=D0=BE=D0=B5=D0=BA=20=D0=BE=D0=B1=D0=BE=D0=BB=D0=BE=D1=87?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=B8=20=D0=BF=D1=80=D0=B8=D0=BB=D0=BE=D0=B6?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=9C=D0=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit работа с конфигом (чтение запись) перенесена в отдельный файл добавлена возможность через popup сделать define = чему-то --- MCU Wrapper.mltbx | Bin 80229 -> 90816 bytes McuLib/lib/McuLib.slx | Bin 22922 -> 29857 bytes McuLib/m/appWrap.m | 12 +- McuLib/m/configJs.m | 143 +++++++++++++++++++++ McuLib/m/mainConfig.m | 274 ++++++++++++++++++++++++++++++++++++++++ McuLib/m/mcuPath.m | 2 +- McuLib/m/mexing.m | 16 ++- McuLib/m/periphConfig.m | 161 +++-------------------- mcuwrapper.prj | 47 ++++++- 9 files changed, 492 insertions(+), 163 deletions(-) create mode 100644 McuLib/m/configJs.m create mode 100644 McuLib/m/mainConfig.m diff --git a/MCU Wrapper.mltbx b/MCU Wrapper.mltbx index e05745b313883bba8526e2f38aebaa9cb448812a..66056e23606662749a27712f299b1edacc598958 100644 GIT binary patch delta 58980 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 delta 48458 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 diff --git a/McuLib/lib/McuLib.slx b/McuLib/lib/McuLib.slx index 422bd2b7eb684abcd6d905066b9691ce1c818b4d..4866f34b44449627d298ae160ca94c42740eaaad 100644 GIT binary patch delta 16960 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 Kwb(xAgCqfx5*m2` delta 10004 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 G@xK5bpfG*_ diff --git a/McuLib/m/appWrap.m b/McuLib/m/appWrap.m index e0f7fe7..cfb7a94 100644 --- a/McuLib/m/appWrap.m +++ b/McuLib/m/appWrap.m @@ -75,14 +75,14 @@ classdef appWrap errordlg('Файл не найден'); end end - end %% SPECIFIC TOOLS - methods(Static, Access = private) - - function [filename, section, tool, example] = getAppWrapperUserFile(block) - sel = get_param(block, 'appWrapperFunc'); + function [filename, section, tool, example] = getAppWrapperUserFile(block, sel) + if (nargin < 2) + sel = get_param(block, 'appWrapperFunc'); + end + basePath = mcuPath.get('appWrapperPath'); if isempty(basePath) errordlg('Не указан путь к файлам обёртки (wrapperPath).'); @@ -150,7 +150,5 @@ classdef appWrap end end - end - end \ No newline at end of file diff --git a/McuLib/m/configJs.m b/McuLib/m/configJs.m new file mode 100644 index 0000000..f2cde98 --- /dev/null +++ b/McuLib/m/configJs.m @@ -0,0 +1,143 @@ +classdef configJs + + methods(Static) + + function config = update(blockPath, config) + if isempty(config) + return; + end + + mask = Simulink.Mask.get(blockPath); + maskParams = mask.Parameters; + paramNames = arrayfun(@(p) p.Name, maskParams, 'UniformOutput', false); + + % Обработка остальных секций (с дефайнами) + periphs = fieldnames(config); + for i = 1:numel(periphs) + periph = periphs{i}; + + % Проверяем есть ли Defines + if ~isfield(config.(periph), 'Defines') + continue; + end + + defines = config.(periph).Defines; + defNames = fieldnames(defines); + + for j = 1:numel(defNames) + defPrompt = defNames{j}; + paramName = matlab.lang.makeValidName(defPrompt); + + % Проверка, существует ли параметр с таким именем + if ismember(paramName, paramNames) + param = mask.getParameter(paramName); + valStr = param.Value; + + % Проверяем, существует ли элемент defPrompt в структуре defines + if isfield(defines, defPrompt) + % Преобразуем строку в соответствующий тип + if strcmpi(defines.(defPrompt).Type, 'checkbox') + config.(periph).Defines.(defPrompt).Default = strcmpi(valStr, 'on'); + elseif strcmpi(defines.(defPrompt).Type, 'edit') + valNum = str2double(valStr); + if isnan(valNum) + config.(periph).Defines.(defPrompt).Default = valStr; + else + config.(periph).Defines.(defPrompt).Default = valNum; + end + end + end + end + end + end + end + + function config = read(blockPath) + mask = Simulink.Mask.get(blockPath); + + pathparam = mask.getParameter('periphPath'); + config_path = pathparam.Value; + + if ~isempty(config_path) + jsonText = fileread(config_path); + config = jsondecode(jsonText); + else + config = []; + end + end + + function write(config) + if isempty(config) + return + end + + blockHandle = gcbh; + mask = Simulink.Mask.get(blockHandle); + + pathparam = mask.getParameter('periphPath'); + config_path = pathparam.Value; + + jsonText = jsonencode(config, 'PrettyPrint', true); + fid = fopen(config_path, 'w', 'n', 'UTF-8'); + if fid == -1 + error('Не удалось открыть файл periph_config.json для записи.'); + end + fwrite(fid, jsonText, 'char'); + fclose(fid); + end + + + + function value = get_field(configStruct, targetConfig) + % получить targetConfig структуру из конфига (для глубоко вложенных) + value = []; + fields = fieldnames(configStruct); + + for i = 1:numel(fields) + key = fields{i}; + if strcmp(key, targetConfig) + value = configStruct.(key); + return; % нашли и возвращаем + elseif isstruct(configStruct.(key)) + value = configJs.get_field(configStruct.(key), targetConfig); + if ~isempty(value) + return; % нашли во вложенной структуре + end + end + end + + % Если не нашли, можно выбросить ошибку или вернуть пустое + if isempty(value) + % error('Поле "%s" не найдено в структуре.', targetConfig); + end + end + + function short = get_final_name_from_prefix(prefix) + % Берёт последнее имя после "_" (читаемое имя) + parts = strsplit(prefix, '_'); + short = parts{end}; + end + + function value = convert_code_value(codeField) + % Преобразует значение поля Options в строку + if ischar(codeField) + value = codeField; + elseif isstring(codeField) + value = char(codeField); + elseif iscell(codeField) + value = strjoin(codeField, newline); + else + % warning('Неподдерживаемый тип данных: сохранено как пустая строка'); + value = ''; + end + end + + + end + + + + methods(Static, Access=private) + + end +end diff --git a/McuLib/m/mainConfig.m b/McuLib/m/mainConfig.m new file mode 100644 index 0000000..a588212 --- /dev/null +++ b/McuLib/m/mainConfig.m @@ -0,0 +1,274 @@ +classdef mainConfig + + methods(Static) + + function config = export() + blockPath = gcb; + mask = Simulink.Mask.get(blockPath); + wrapParamToExport = {'wrapperPath', 'enableDebug', 'mcuClk', ... + 'threadCycles', 'enableThreading', 'enableDeinit'}; + portParamToExport = {'inNumb', ... + 'in_port_1_name', 'in_port_1_width', ... + 'in_port_2_name', 'in_port_2_width', ... + 'in_port_3_name', 'in_port_3_width', ... + 'in_port_4_name', 'in_port_4_width', ... + 'in_port_5_name', 'in_port_5_width', ... + 'outNumb', ... + 'out_port_1_name', 'out_port_1_width', ... + 'out_port_2_name', 'out_port_2_width', ... + 'out_port_3_name', 'out_port_3_width', ... + 'out_port_4_name', 'out_port_4_width', ... + 'out_port_5_name', 'out_port_5_width',}; + appParamToExport = {'appWrapperPath', 'srcTable', 'incTable', 'userDefs'}; + + config = struct(); + for i = 1:numel(wrapParamToExport) + paramName = wrapParamToExport{i}; + def = mainConfig.exportParamToConfig(mask, paramName); + config.(paramName) = def; + end + + for i = 1:numel(portParamToExport) + paramName = portParamToExport{i}; + def = mainConfig.exportParamToConfig(mask, paramName); + config.(paramName) = def; + end + + for i = 1:numel(appParamToExport) + paramName = appParamToExport{i}; + def = mainConfig.exportParamToConfig(mask, paramName); + config.(paramName) = def; + end + + + + jsonStr = jsonencode(config, 'PrettyPrint', true); % 'PrettyPrint' для форматирования + + + % Диалог сохранения файла + [file, path] = uiputfile('*.json', 'Сохранить конфигурацию как', 'WrapperConfig.json'); + if isequal(file, 0) || isequal(path, 0) + disp('Сохранение отменено пользователем.'); + return; + end + + filepath = fullfile(path, file); + + + + % Сохраняем в файл + fid = fopen(filepath, 'w'); + if fid == -1 + mcuMask.disp(0, 'Не удалось открыть файл для записи: %s', filename); + end + + fwrite(fid, jsonStr, 'char'); + fclose(fid); + end + + + function import() + % Получаем путь к текущему блоку + blockPath = gcb; + mask = Simulink.Mask.get(blockPath); + + % Выбор JSON-файла через диалоговое окно + [file, path] = uigetfile('*.json', 'Выберите файл конфигурации'); + if isequal(file, 0) + mcuMask.disp(0, 'Импорт отменён пользователем.'); + return; + end + + fullpath = fullfile(path, file); + + % Чтение и декодирование JSON + try + jsonStr = fileread(fullpath); + config = jsondecode(jsonStr); + catch err + mcuMask.disp(0, 'Ошибка при чтении или разборе JSON: %s', err.message); + end + + % Применение параметров из конфигурации + paramNames = fieldnames(config); + for i = 1:numel(paramNames) + paramName = paramNames{i}; + def = config.(paramName); + + try + mainConfig.applyDefToMask(mask, paramName, def); + catch err + mcuMask.disp(0, 'Ошибка при применении параметра "%s": %s', paramName, err.message); + end + end + + mcuMask.disp(0, 'Конфигурация успешно импортирована.'); + end + + end + + + methods(Static, Access=private) + + + function def = exportParamToConfig(mask, paramName) + % mask — объект Simulink.Mask.get(blockPath) + % paramName — имя параметра (как в mask.Parameters.Name) + + param = mask.getParameter(paramName); + if isempty(param) + mcuMask.disp(0, 'Параметр "%s" не найден в маске.', paramName); + def = []; + return; + end + + def = struct(); + + % Prompt + def.Prompt = param.Prompt; + + % Тип параметра + def.Type = param.Type; + + % Значение по умолчанию + val = param.Value; + switch lower(param.Type) + case 'checkbox' + def.Default = strcmp(val, 'on'); + case {'edit', 'spinbox'} + num = str2double(val); + if ~isnan(num) + def.Default = num; + else + def.Default = val; + end + case 'customtable' + def.Default = customtable.parse(param.Name); % или можно попытаться распарсить значение позже + case 'text' + def.Default = ''; % или можно попытаться распарсить значение позже + otherwise + def.Default = val; + end + + % Alias, если есть + if ~isempty(param.Alias) + def.Def = param.Alias; + end + + % % Row (new/current) + % try + % rowSetting = param.DialogControl.Row; + % def.NewRow = strcmp(rowSetting, 'new'); + % catch + % def.NewRow = false; + % end + end + + + function applyDefToMask(mask, paramName, def) + % mask — объект Simulink.Mask.get(blockPath) + % paramName — имя параметра маски + % def — структура, полученная из extractDefFromMask + + % Получаем параметр + param = mask.getParameter(paramName); + if isempty(param) + mcuMask.disp(0, 'Параметр "%s" не найден в маске.', paramName); + return; + end + + if isempty(def) + mcuMask.disp(0, 'Параметр "%s" не найден в конфиге.', paramName); + return; + end + + switch lower(def.Type) + case 'checkbox' + % Логическое значение true/false + if islogical(def.Default) + param.Value = mainConfig.ternary(def.Default, 'on', 'off'); + else + mcuMask.disp(0, 'Ожидалось логическое значение для checkbox "%s".', paramName); + end + + case {'edit', 'spinbox'} + % Строка или число + if isnumeric(def.Default) + param.Value = num2str(def.Default); + elseif ischar(def.Default) || isstring(def.Default) + param.Value = char(def.Default); + else + mcuMask.disp(0, 'Некорректный формат значения для edit "%s".', paramName); + end + + case 'customtable' + % Массив строк + if iscell(def.Default) + customtable.collect(paramName, def.Default); + else + mcuMask.disp(0, 'customtable "%s" требует cell-массив строк.', paramName); + end + + case 'text' + % Просто текстовая строка + if ischar(def.Default) || isstring(def.Default) + param.Value = char(def.Default); + else + mcuMask.disp(0, 'text-параметр "%s" должен быть строкой.', paramName); + end + + case 'popup' + % popup — установить значение, если оно есть в списке + if ischar(def.Default) && isfield(def, 'Def') && any(strcmp(def.Default, def.Def)) + param.Value = def.Default; + else + mcuMask.disp(0, 'popup-параметр "%s" имеет неверное значение или список.', paramName); + end + + otherwise + % По умолчанию просто устанавливаем строковое значение + if ischar(def.Default) || isstring(def.Default) + param.Value = char(def.Default); + elseif isnumeric(def.Default) + param.Value = num2str(def.Default); + else + mcuMask.disp(0, 'Неизвестный формат значения параметра "%s".', paramName); + end + end + + % Применение Prompt, если нужно + if isfield(def, 'Prompt') + param.Prompt = def.Prompt; + end + + % Применение Alias, если есть + if isfield(def, 'Def') && ischar(def.Def) + param.Alias = def.Def; + end + + % % Установка Row, если поддерживается + % if isfield(def, 'NewRow') + % try + % if def.NewRow + % param.DialogControl.Row = 'new'; + % else + % param.DialogControl.Row = 'current'; + % end + % catch + % % Некоторым типам параметров Row может быть неприменим + % end + % end + end + + + function result = ternary(cond, a, b) + if cond + result = a; + else + result = b; + end + end + + end + +end \ No newline at end of file diff --git a/McuLib/m/mcuPath.m b/McuLib/m/mcuPath.m index f9d33cc..fefc8b8 100644 --- a/McuLib/m/mcuPath.m +++ b/McuLib/m/mcuPath.m @@ -8,7 +8,7 @@ classdef mcuPath end %% ADD PATH TO TABLE - + function addSourceFileTable(targetParamName, message) % Открываем проводник для выбора файлов [files, pathstr] = uigetfile({ ... diff --git a/McuLib/m/mexing.m b/McuLib/m/mexing.m index 5ab6e58..1b42f89 100644 --- a/McuLib/m/mexing.m +++ b/McuLib/m/mexing.m @@ -66,9 +66,9 @@ function res = mexing(compile_mode) beep else blockPath = gcb; - config = periphConfig.read_config(blockPath); - config = periphConfig.update_config(blockPath, config); - periphConfig.write_config(config); + config = configJs.read(blockPath); + config = configJs.update(blockPath, config); + configJs.write(config); periphConfig.updateMask(blockPath, config); end end @@ -232,10 +232,16 @@ function definesWrapperArg = addDefineByParam(definesWrapperArg, paramName, val_ end % Берём alias из маски + val = ''; if ~strcmp(param.Type, 'popup') def_name = param.Alias; else - def_name = param.Value; + if strcmp(param.Alias, '') + def_name = param.Value; + else + def_name = param.Alias; + val = param.Value; + end end if strcmp(def_name, '') @@ -259,7 +265,7 @@ function definesWrapperArg = addDefineByParam(definesWrapperArg, paramName, val_ newDefine = ''; end else - newDefine = ['-D"' def_name '"']; + newDefine = ['-D"' def_name '__EQ__' val '"']; end diff --git a/McuLib/m/periphConfig.m b/McuLib/m/periphConfig.m index b2520f7..ee6d26e 100644 --- a/McuLib/m/periphConfig.m +++ b/McuLib/m/periphConfig.m @@ -74,7 +74,7 @@ classdef periphConfig blockPath = gcb; mask = Simulink.Mask.get(blockPath); - config = periphConfig.read_config(blockPath); + config = configJs.read(blockPath); containerName = 'configTabAll'; container = mask.getDialogControl(containerName); paramsAll = mcuMask.collect_all_parameters(container); @@ -130,7 +130,7 @@ classdef periphConfig blockPath = gcb; mask = Simulink.Mask.get(blockPath); hObj = mask.getParameter(paramName); - config = periphConfig.read_config(blockPath); + config = configJs.read(blockPath); container = mask.getDialogControl('configTabAll'); % === Проверка на Tab__Enable === @@ -175,7 +175,7 @@ classdef periphConfig % Получаем содержимое config по nameBase — возможно, вложенное try - valueStruct = periphConfig.get_field(config, nameBase); + valueStruct = configJs.get_field(config, nameBase); catch warning('Не удалось найти путь %s в config.', nameBase); return; @@ -209,97 +209,6 @@ classdef periphConfig periphConfig.addCodeBat(CodeStruct, periphPath); end - - function config = update_config(blockPath, config) - if isempty(config) - return; - end - - mask = Simulink.Mask.get(blockPath); - maskParams = mask.Parameters; - paramNames = arrayfun(@(p) p.Name, maskParams, 'UniformOutput', false); - - % Обработка остальных секций (с дефайнами) - periphs = fieldnames(config); - for i = 1:numel(periphs) - periph = periphs{i}; - - % Пропускаем Code и UserCode - if strcmp(periph, 'Code') || strcmp(periph, 'UserCode') - continue; - end - - % Проверяем есть ли Defines - if ~isfield(config.(periph), 'Defines') - continue; - end - - defines = config.(periph).Defines; - defNames = fieldnames(defines); - - for j = 1:numel(defNames) - defPrompt = defNames{j}; - paramName = matlab.lang.makeValidName(defPrompt); - - % Проверка, существует ли параметр с таким именем - if ismember(paramName, paramNames) - param = mask.getParameter(paramName); - valStr = param.Value; - - % Проверяем, существует ли элемент defPrompt в структуре defines - if isfield(defines, defPrompt) - % Преобразуем строку в соответствующий тип - if strcmpi(defines.(defPrompt).Type, 'checkbox') - config.(periph).Defines.(defPrompt).Default = strcmpi(valStr, 'on'); - elseif strcmpi(defines.(defPrompt).Type, 'edit') - valNum = str2double(valStr); - if isnan(valNum) - config.(periph).Defines.(defPrompt).Default = valStr; - else - config.(periph).Defines.(defPrompt).Default = valNum; - end - end - end - end - end - end - end - - function config = read_config(blockPath) - mask = Simulink.Mask.get(blockPath); - - pathparam = mask.getParameter('periphPath'); - config_path = pathparam.Value; - - if ~isempty(config_path) - jsonText = fileread(config_path); - config = jsondecode(jsonText); - else - config = []; - end - end - - function write_config(config) - if isempty(config) - return - end - - blockHandle = gcbh; - mask = Simulink.Mask.get(blockHandle); - - pathparam = mask.getParameter('periphPath'); - config_path = pathparam.Value; - - jsonText = jsonencode(config, 'PrettyPrint', true); - fid = fopen(config_path, 'w', 'n', 'UTF-8'); - if fid == -1 - error('Не удалось открыть файл periph_config.json для записи.'); - end - fwrite(fid, jsonText, 'char'); - fclose(fid); - end - - end @@ -347,7 +256,7 @@ classdef periphConfig end else if strcmp(key, 'Sources') || strcmp(key, 'Includes') - baseName = periphConfig.get_final_name_from_prefix(prefix); + baseName = configJs.get_final_name_from_prefix(prefix); periphConfig.clear_single_periph_code_param(mask, baseName); end end @@ -375,7 +284,7 @@ classdef periphConfig end else if strcmp(key, 'Sources') || strcmp(key, 'Includes') - baseName = periphConfig.get_final_name_from_prefix(prefix); + baseName = configJs.get_final_name_from_prefix(prefix); periphConfig.store_single_periph_code(mask, baseName, configStruct); end end @@ -534,10 +443,6 @@ classdef periphConfig mcuMask.delete_all_tabs(mask, container); end - - - - function res = addCodeBat(codeConfig, codePath) % Добавить сурсы и пути в батник @@ -668,6 +573,9 @@ classdef periphConfig if isfield(def, 'Def') && iscell(def.Def) && ~isempty(def.Def) choices = def.Def; valStr = ''; % по умолчанию — ничего + elseif isfield(def, 'Options') + choices = def.Def; + valStr = ''; % по умолчанию — ничего else warning('Popout параметр "%s" не содержит допустимого списка в Def.', defPrompt); return; @@ -713,7 +621,12 @@ classdef periphConfig if isfield(def, 'Def') if strcmp(paramType, 'popup') - param.TypeOptions = def.Def; + if iscell(def.Def) + param.TypeOptions = def.Def; + elseif isfield(def, 'Options') + param.Alias = def.Def; + param.TypeOptions = def.Options; + end else param.Alias = def.Def; end @@ -752,7 +665,7 @@ classdef periphConfig paramName = ['Hidden_' char(periph) '_Sources']; try param = mask.getParameter(paramName); - param.Value = periphConfig.convert_code_value(code.Sources); + param.Value = configJs.convert_code_value(code.Sources); catch mcuMask.disp(0, ['Параметр ' paramName ' не найден']); end @@ -763,57 +676,15 @@ classdef periphConfig paramName = ['Hidden_' char(periph) '_Includes']; try param = mask.getParameter(paramName); - param.Value = periphConfig.convert_code_value(code.Includes); + param.Value = configJs.convert_code_value(code.Includes); catch mcuMask.disp(0, ['Параметр ' paramName ' не найден']); end end end - function value = get_field(configStruct, targetConfig) - % получить targetConfig структуру из конфига (для глубоко вложенных) - value = []; - fields = fieldnames(configStruct); - for i = 1:numel(fields) - key = fields{i}; - if strcmp(key, targetConfig) - value = configStruct.(key); - return; % нашли и возвращаем - elseif isstruct(configStruct.(key)) - value = periphConfig.get_field(configStruct.(key), targetConfig); - if ~isempty(value) - return; % нашли во вложенной структуре - end - end - end - % Если не нашли, можно выбросить ошибку или вернуть пустое - if isempty(value) - % error('Поле "%s" не найдено в структуре.', targetConfig); - end - end - - function short = get_final_name_from_prefix(prefix) - % Берёт последнее имя после "_" (читаемое имя) - parts = strsplit(prefix, '_'); - short = parts{end}; - end - - function value = convert_code_value(codeField) - % Преобразует значение поля Options в строку - if ischar(codeField) - value = codeField; - elseif isstring(codeField) - value = char(codeField); - elseif iscell(codeField) - value = strjoin(codeField, newline); - else - % warning('Неподдерживаемый тип данных: сохранено как пустая строка'); - value = ''; - end - end - function res = ternary(cond, valTrue, valFalse) if cond res = valTrue; diff --git a/mcuwrapper.prj b/mcuwrapper.prj index 45493e9..18ce0d0 100644 --- a/mcuwrapper.prj +++ b/mcuwrapper.prj @@ -1,5 +1,5 @@ - + MCU Wrapper Razvalyaev wot890089@mail.ru @@ -27,7 +27,7 @@ false - findjobj - find java handles of Matlab graphic objects + findjobj - find java handles of Matlab graphic objects @@ -96,12 +96,49 @@ - E:\.WORK\MATLAB\mcu_matlab\MCU Wrapper.mltbx + F:\Work\Projects\MATLAB\mcu_matlab_lib\MCU Wrapper.mltbx - C:\Program Files\MyProgs\MATLAB\R2023a - + C:\Program Files\MATLAB\R2023a + + + + + + + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + false