From 4b920d999042cd423b16724d1a73a5e910e03e58 Mon Sep 17 00:00:00 2001 From: Aungkokolin1997 Date: Wed, 28 Jan 2026 01:43:14 +0000 Subject: [PATCH] [ADD] base_technical_features --- base_technical_features/README.rst | 117 +++++ base_technical_features/__init__.py | 1 + base_technical_features/__manifest__.py | 13 + base_technical_features/data/res_users.xml | 6 + base_technical_features/i18n/am.po | 64 +++ base_technical_features/i18n/ar.po | 69 +++ .../i18n/base_technical_features.pot | 58 +++ base_technical_features/i18n/ca.po | 73 +++ base_technical_features/i18n/da.po | 65 +++ base_technical_features/i18n/de.po | 73 +++ base_technical_features/i18n/el_GR.po | 65 +++ base_technical_features/i18n/es.po | 73 +++ base_technical_features/i18n/es_ES.po | 65 +++ base_technical_features/i18n/es_MX.po | 65 +++ base_technical_features/i18n/fi.po | 64 +++ base_technical_features/i18n/fr.po | 64 +++ base_technical_features/i18n/fr_CA.po | 65 +++ base_technical_features/i18n/fr_CH.po | 65 +++ base_technical_features/i18n/fr_FR.po | 65 +++ base_technical_features/i18n/gl.po | 64 +++ base_technical_features/i18n/hr.po | 73 +++ base_technical_features/i18n/hr_HR.po | 70 +++ base_technical_features/i18n/it.po | 72 +++ base_technical_features/i18n/ja.po | 62 +++ base_technical_features/i18n/nl.po | 67 +++ base_technical_features/i18n/nl_NL.po | 65 +++ base_technical_features/i18n/pt.po | 67 +++ base_technical_features/i18n/pt_BR.po | 67 +++ base_technical_features/i18n/pt_PT.po | 65 +++ base_technical_features/i18n/ro.po | 65 +++ base_technical_features/i18n/sl.po | 69 +++ base_technical_features/i18n/tr.po | 64 +++ base_technical_features/i18n/tr_TR.po | 65 +++ base_technical_features/i18n/zh_CN.po | 66 +++ base_technical_features/models/__init__.py | 3 + base_technical_features/models/ir_ui_menu.py | 15 + base_technical_features/models/ir_ui_view.py | 15 + base_technical_features/models/res_users.py | 48 ++ base_technical_features/pyproject.toml | 3 + base_technical_features/readme/CONFIGURE.md | 14 + .../readme/CONTRIBUTORS.md | 6 + base_technical_features/readme/CREDITS.md | 3 + base_technical_features/readme/DESCRIPTION.md | 2 + .../security/res_groups.xml | 7 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 461 ++++++++++++++++++ .../static/description/user_preferences.png | Bin 0 -> 61320 bytes base_technical_features/tests/__init__.py | 1 + .../tests/test_base_technical_features.py | 116 +++++ base_technical_features/views/res_users.xml | 21 + 50 files changed, 2846 insertions(+) create mode 100644 base_technical_features/README.rst create mode 100644 base_technical_features/__init__.py create mode 100644 base_technical_features/__manifest__.py create mode 100644 base_technical_features/data/res_users.xml create mode 100644 base_technical_features/i18n/am.po create mode 100644 base_technical_features/i18n/ar.po create mode 100644 base_technical_features/i18n/base_technical_features.pot create mode 100644 base_technical_features/i18n/ca.po create mode 100644 base_technical_features/i18n/da.po create mode 100644 base_technical_features/i18n/de.po create mode 100644 base_technical_features/i18n/el_GR.po create mode 100644 base_technical_features/i18n/es.po create mode 100644 base_technical_features/i18n/es_ES.po create mode 100644 base_technical_features/i18n/es_MX.po create mode 100644 base_technical_features/i18n/fi.po create mode 100644 base_technical_features/i18n/fr.po create mode 100644 base_technical_features/i18n/fr_CA.po create mode 100644 base_technical_features/i18n/fr_CH.po create mode 100644 base_technical_features/i18n/fr_FR.po create mode 100644 base_technical_features/i18n/gl.po create mode 100644 base_technical_features/i18n/hr.po create mode 100644 base_technical_features/i18n/hr_HR.po create mode 100644 base_technical_features/i18n/it.po create mode 100644 base_technical_features/i18n/ja.po create mode 100644 base_technical_features/i18n/nl.po create mode 100644 base_technical_features/i18n/nl_NL.po create mode 100644 base_technical_features/i18n/pt.po create mode 100644 base_technical_features/i18n/pt_BR.po create mode 100644 base_technical_features/i18n/pt_PT.po create mode 100644 base_technical_features/i18n/ro.po create mode 100644 base_technical_features/i18n/sl.po create mode 100644 base_technical_features/i18n/tr.po create mode 100644 base_technical_features/i18n/tr_TR.po create mode 100644 base_technical_features/i18n/zh_CN.po create mode 100644 base_technical_features/models/__init__.py create mode 100644 base_technical_features/models/ir_ui_menu.py create mode 100644 base_technical_features/models/ir_ui_view.py create mode 100644 base_technical_features/models/res_users.py create mode 100644 base_technical_features/pyproject.toml create mode 100644 base_technical_features/readme/CONFIGURE.md create mode 100644 base_technical_features/readme/CONTRIBUTORS.md create mode 100644 base_technical_features/readme/CREDITS.md create mode 100644 base_technical_features/readme/DESCRIPTION.md create mode 100644 base_technical_features/security/res_groups.xml create mode 100644 base_technical_features/static/description/icon.png create mode 100644 base_technical_features/static/description/index.html create mode 100644 base_technical_features/static/description/user_preferences.png create mode 100644 base_technical_features/tests/__init__.py create mode 100644 base_technical_features/tests/test_base_technical_features.py create mode 100644 base_technical_features/views/res_users.xml diff --git a/base_technical_features/README.rst b/base_technical_features/README.rst new file mode 100644 index 0000000..5ac4447 --- /dev/null +++ b/base_technical_features/README.rst @@ -0,0 +1,117 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + +======================== +Technical features group +======================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:439d0d83c06b14233f634809ba6039f8d06beb638ceab71c029f08df0d43166e + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--ux-lightgray.png?logo=github + :target: https://github.com/OCA/server-ux/tree/19.0/base_technical_features + :alt: OCA/server-ux +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/server-ux-19-0/server-ux-19-0-base_technical_features + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/server-ux&target_branch=19.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module provides persistent access to technical features based on +user preferences, eliminating the need to activate debug mode. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +After installation of this module, every employee can still access +technical features for the applications that they have access to by +enabling debug mode. + +Additionally, users can check the *Technical feature* field in their +preferences to gain permanent access to the menus and views that fall +under this category. + +|image1| + +Upon installation of this module, this preference is already set for the +administrator user of the database. + +In the background, this preference is mapped to the *Technical feature +(w/o debug mode)* group that this module adds. As an administrator, you +can therefore manage this preference from the regular Users and Groups +menu items. + +.. |image1| image:: https://raw.githubusercontent.com/OCA/server-ux/19.0/base_technical_features/static/description/user_preferences.png + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* Opener B.V. + +Contributors +------------ + +- Stefan Rijnhart +- Jeroen Evens +- Jim Hoefnagels +- Khoi (Kien Kim) +- Tris Doan +- Iván Todorovich + +Other credits +------------- + +The migration of this module from 18.0 to 19.0 was financially supported +by: + +- Camptocamp. + +Maintainers +----------- + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/server-ux `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/base_technical_features/__init__.py b/base_technical_features/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/base_technical_features/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/base_technical_features/__manifest__.py b/base_technical_features/__manifest__.py new file mode 100644 index 0000000..3dfbb6a --- /dev/null +++ b/base_technical_features/__manifest__.py @@ -0,0 +1,13 @@ +# © 2016 Opener B.V. () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +{ + "name": "Technical features group", + "summary": "Access to technical features without activating debug mode", + "version": "19.0.1.0.0", + "category": "Usability", + "website": "https://github.com/OCA/server-ux", + "author": "Opener B.V., Odoo Community Association (OCA)", + "data": ["security/res_groups.xml", "views/res_users.xml", "data/res_users.xml"], + "license": "AGPL-3", + "depends": ["base"], +} diff --git a/base_technical_features/data/res_users.xml b/base_technical_features/data/res_users.xml new file mode 100644 index 0000000..c0e6544 --- /dev/null +++ b/base_technical_features/data/res_users.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/base_technical_features/i18n/am.po b/base_technical_features/i18n/am.po new file mode 100644 index 0000000..35af40a --- /dev/null +++ b/base_technical_features/i18n/am.po @@ -0,0 +1,64 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: server-tools (9.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-09-10 02:52+0000\n" +"PO-Revision-Date: 2016-01-05 19:43+0000\n" +"Last-Translator: <>\n" +"Language-Team: Amharic (http://www.transifex.com/oca/OCA-server-tools-9-0/" +"language/am/)\n" +"Language: am\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "" + +#~ msgid "ID" +#~ msgstr "ID" diff --git a/base_technical_features/i18n/ar.po b/base_technical_features/i18n/ar.po new file mode 100644 index 0000000..bc9fbcc --- /dev/null +++ b/base_technical_features/i18n/ar.po @@ -0,0 +1,69 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-18 02:29+0000\n" +"PO-Revision-Date: 2018-07-01 04:01+0000\n" +"Last-Translator: Osoul \n" +"Language-Team: Arabic (https://www.transifex.com/oca/teams/23907/ar/)\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" +"X-Generator: Weblate 3.0.1\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "إظهار خانة المزايا التقنية" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "المزايا التقنية" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "المزايا التقنية (بدون وضع التطوير)" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "هذا المستخدم ليس لديه صلاحية للمزايا التقنية." + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "" + +#~ msgid "Users" +#~ msgstr "المستخدمون" + +#~ msgid "base" +#~ msgstr "الأساس" diff --git a/base_technical_features/i18n/base_technical_features.pot b/base_technical_features/i18n/base_technical_features.pot new file mode 100644 index 0000000..602fdaf --- /dev/null +++ b/base_technical_features/i18n/base_technical_features.pot @@ -0,0 +1,58 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 19.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_ir_ui_menu__display_name +#: model:ir.model.fields,field_description:base_technical_features.field_ir_ui_view__display_name +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__display_name +msgid "Display Name" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_ir_ui_menu__id +#: model:ir.model.fields,field_description:base_technical_features.field_ir_ui_view__id +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__id +msgid "ID" +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_view +msgid "View" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__technical_features +msgid "Whether the user has technical features always enabled." +msgstr "" diff --git a/base_technical_features/i18n/ca.po b/base_technical_features/i18n/ca.po new file mode 100644 index 0000000..d1d368b --- /dev/null +++ b/base_technical_features/i18n/ca.po @@ -0,0 +1,73 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-01 02:43+0000\n" +"PO-Revision-Date: 2018-10-10 21:20+0000\n" +"Last-Translator: Harald Panten \n" +"Language-Team: Catalan (https://www.transifex.com/oca/teams/23907/ca/)\n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.1.1\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "Mostrar el camp Característiques Tècniques" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "Característiques tècniques" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "Característiques tècniques (sense mode de depuració)" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "L'usuari no té accés a les carcaterístiques tècniques." + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "" +"Mostrar o no el camp de característiques tècniques a les preferències " +"d'usuari." + +#~ msgid "Users" +#~ msgstr "Usuaris" + +#~ msgid "base" +#~ msgstr "base de dades" + +#~ msgid "ir.ui.menu" +#~ msgstr "ir.ui.menu" diff --git a/base_technical_features/i18n/da.po b/base_technical_features/i18n/da.po new file mode 100644 index 0000000..e528125 --- /dev/null +++ b/base_technical_features/i18n/da.po @@ -0,0 +1,65 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-18 02:29+0000\n" +"PO-Revision-Date: 2018-09-06 08:12+0000\n" +"Last-Translator: Hans Henrik Gabelgaard \n" +"Language-Team: Danish (https://www.transifex.com/oca/teams/23907/da/)\n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.1.1\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "Vis feltet Tekniske features" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "Tekniske features" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "Tekniske feature (uden debug mode)" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "Denne bruger har ikke adgang til Tekniske features." + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "Om feltet Tekniske features skal vises i bruger egenskaber." + +#~ msgid "Users" +#~ msgstr "Brugere" diff --git a/base_technical_features/i18n/de.po b/base_technical_features/i18n/de.po new file mode 100644 index 0000000..8c06e0d --- /dev/null +++ b/base_technical_features/i18n/de.po @@ -0,0 +1,73 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-21 04:22+0000\n" +"PO-Revision-Date: 2017-01-21 04:22+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "Feld Technische Eigenschaften anzeigen" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +#, fuzzy +msgid "Technical Features" +msgstr "Technische Eigenschaften" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "Technische Eigenschaften (ohne Debugmodus)" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "Der Benutzer hat keinen Zugriff auf Technische Eigenschaften." + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "" +"Ob das Feld Technische Eigenschaften in den Benutzereinstellungen angezeigt " +"wird." + +#~ msgid "Users" +#~ msgstr "Benutzer" + +#~ msgid "base" +#~ msgstr "base" + +#~ msgid "ir.ui.menu" +#~ msgstr "ir.ui.menu" diff --git a/base_technical_features/i18n/el_GR.po b/base_technical_features/i18n/el_GR.po new file mode 100644 index 0000000..a3eb7e0 --- /dev/null +++ b/base_technical_features/i18n/el_GR.po @@ -0,0 +1,65 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-18 02:29+0000\n" +"PO-Revision-Date: 2017-02-18 02:29+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Greek (Greece) (https://www.transifex.com/oca/teams/23907/" +"el_GR/)\n" +"Language: el_GR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "" + +#~ msgid "Users" +#~ msgstr "Χρήστες" diff --git a/base_technical_features/i18n/es.po b/base_technical_features/i18n/es.po new file mode 100644 index 0000000..57540e8 --- /dev/null +++ b/base_technical_features/i18n/es.po @@ -0,0 +1,73 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-21 04:22+0000\n" +"PO-Revision-Date: 2023-08-27 16:07+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "Base" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "Menú" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "Mostrar el campo Características Técnicas" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "Características técnicas" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "Características técnicas (sin modo de depuración)" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "El usuario no tiene acceso a las características técnicas." + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "Usuario" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "" +"Mostrar o no el campo de características técnicas en las preferencias de " +"usuario." + +#~ msgid "Users" +#~ msgstr "Usuarios" + +#~ msgid "base" +#~ msgstr "base de datos" + +#~ msgid "ir.ui.menu" +#~ msgstr "ir.ui.menu" diff --git a/base_technical_features/i18n/es_ES.po b/base_technical_features/i18n/es_ES.po new file mode 100644 index 0000000..8958682 --- /dev/null +++ b/base_technical_features/i18n/es_ES.po @@ -0,0 +1,65 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-22 00:54+0000\n" +"PO-Revision-Date: 2017-02-22 00:54+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Spanish (Spain) (https://www.transifex.com/oca/teams/23907/" +"es_ES/)\n" +"Language: es_ES\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "" + +#~ msgid "Users" +#~ msgstr "Usuarios" diff --git a/base_technical_features/i18n/es_MX.po b/base_technical_features/i18n/es_MX.po new file mode 100644 index 0000000..7708c36 --- /dev/null +++ b/base_technical_features/i18n/es_MX.po @@ -0,0 +1,65 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 02:01+0000\n" +"PO-Revision-Date: 2016-12-23 02:01+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Spanish (Mexico) (https://www.transifex.com/oca/teams/23907/" +"es_MX/)\n" +"Language: es_MX\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "" + +#~ msgid "Module" +#~ msgstr "Módulo" diff --git a/base_technical_features/i18n/fi.po b/base_technical_features/i18n/fi.po new file mode 100644 index 0000000..e883079 --- /dev/null +++ b/base_technical_features/i18n/fi.po @@ -0,0 +1,64 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-18 02:29+0000\n" +"PO-Revision-Date: 2017-02-18 02:29+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Finnish (https://www.transifex.com/oca/teams/23907/fi/)\n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "" + +#~ msgid "Users" +#~ msgstr "Käyttäjät" diff --git a/base_technical_features/i18n/fr.po b/base_technical_features/i18n/fr.po new file mode 100644 index 0000000..b5dc5d2 --- /dev/null +++ b/base_technical_features/i18n/fr.po @@ -0,0 +1,64 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-21 04:22+0000\n" +"PO-Revision-Date: 2017-01-21 04:22+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "" + +#~ msgid "Users" +#~ msgstr "Utilisateurs" diff --git a/base_technical_features/i18n/fr_CA.po b/base_technical_features/i18n/fr_CA.po new file mode 100644 index 0000000..67d7001 --- /dev/null +++ b/base_technical_features/i18n/fr_CA.po @@ -0,0 +1,65 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 02:01+0000\n" +"PO-Revision-Date: 2016-12-23 02:01+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: French (Canada) (https://www.transifex.com/oca/teams/23907/" +"fr_CA/)\n" +"Language: fr_CA\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "" + +#~ msgid "Fields" +#~ msgstr "Champs" diff --git a/base_technical_features/i18n/fr_CH.po b/base_technical_features/i18n/fr_CH.po new file mode 100644 index 0000000..e402b08 --- /dev/null +++ b/base_technical_features/i18n/fr_CH.po @@ -0,0 +1,65 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-18 02:29+0000\n" +"PO-Revision-Date: 2017-02-18 02:29+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: French (Switzerland) (https://www.transifex.com/oca/" +"teams/23907/fr_CH/)\n" +"Language: fr_CH\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "" + +#~ msgid "Users" +#~ msgstr "Utilisateurs" diff --git a/base_technical_features/i18n/fr_FR.po b/base_technical_features/i18n/fr_FR.po new file mode 100644 index 0000000..44069ee --- /dev/null +++ b/base_technical_features/i18n/fr_FR.po @@ -0,0 +1,65 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# Aurel , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-08 03:37+0000\n" +"PO-Revision-Date: 2017-02-08 03:37+0000\n" +"Last-Translator: Aurel , 2017\n" +"Language-Team: French (France) (https://www.transifex.com/oca/teams/23907/" +"fr_FR/)\n" +"Language: fr_FR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "" + +#~ msgid "Users" +#~ msgstr "Utilsateurs" diff --git a/base_technical_features/i18n/gl.po b/base_technical_features/i18n/gl.po new file mode 100644 index 0000000..03b3b97 --- /dev/null +++ b/base_technical_features/i18n/gl.po @@ -0,0 +1,64 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: server-tools (9.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-09-10 02:52+0000\n" +"PO-Revision-Date: 2016-01-05 19:43+0000\n" +"Last-Translator: <>\n" +"Language-Team: Galician (http://www.transifex.com/oca/OCA-server-tools-9-0/" +"language/gl/)\n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "" + +#~ msgid "ID" +#~ msgstr "ID" diff --git a/base_technical_features/i18n/hr.po b/base_technical_features/i18n/hr.po new file mode 100644 index 0000000..d97a842 --- /dev/null +++ b/base_technical_features/i18n/hr.po @@ -0,0 +1,73 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# OCA Transbot , 2016 +# Bole , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-05-01 10:38+0000\n" +"PO-Revision-Date: 2019-12-04 12:04+0000\n" +"Last-Translator: Bole \n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 3.9.1\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "Osnova" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "Izbornik" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "Prikaži polje Tehničke značajke" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "Tehničke značajke" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "Tehničke značajke ( bez debug opcije)" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "Ovaj korisnik nema prava pristupa za Tehničke značajke" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "Prikaz polja tehničkih značajki u korisničkim postavkama." + +#~ msgid "Users" +#~ msgstr "Korisnici" + +#~ msgid "base" +#~ msgstr "base" + +#~ msgid "ir.ui.menu" +#~ msgstr "ir.ui.menu" diff --git a/base_technical_features/i18n/hr_HR.po b/base_technical_features/i18n/hr_HR.po new file mode 100644 index 0000000..09ec3e1 --- /dev/null +++ b/base_technical_features/i18n/hr_HR.po @@ -0,0 +1,70 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-26 03:36+0000\n" +"PO-Revision-Date: 2016-11-26 03:36+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Croatian (Croatia) (https://www.transifex.com/oca/teams/23907/" +"hr_HR/)\n" +"Language: hr_HR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "Prikaži polje Tehničke značajke" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +#, fuzzy +msgid "Technical Features" +msgstr "Tehničke značajke" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "Tehničke značajke (bez debug načina)" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "Korisnik nema prava pristupa za tehničke značajke." + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "Pokazati polja tehničke značajke u postavkama korisnika." + +#~ msgid "Users" +#~ msgstr "Korisnici" + +#~ msgid "ir.ui.menu" +#~ msgstr "ir.ui.menu" diff --git a/base_technical_features/i18n/it.po b/base_technical_features/i18n/it.po new file mode 100644 index 0000000..b8b184f --- /dev/null +++ b/base_technical_features/i18n/it.po @@ -0,0 +1,72 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-21 04:22+0000\n" +"PO-Revision-Date: 2024-02-04 22:33+0000\n" +"Last-Translator: mymage \n" +"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "Base" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "Menù" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "Mostrare campo funzioni tecniche" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "Funzioni tecniche" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "Funzioni tecniche (senza modalità di debug)" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "L'utente non ha accesso alle funzioni tecniche." + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "Utente" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "" +"Indica se visualizzare il campo funzioni tecniche nelle preferenze utente." + +#~ msgid "Users" +#~ msgstr "Utenti" + +#~ msgid "base" +#~ msgstr "base" + +#~ msgid "ir.ui.menu" +#~ msgstr "ir.ui.menu" diff --git a/base_technical_features/i18n/ja.po b/base_technical_features/i18n/ja.po new file mode 100644 index 0000000..7d36085 --- /dev/null +++ b/base_technical_features/i18n/ja.po @@ -0,0 +1,62 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2020-09-27 11:00+0000\n" +"Last-Translator: Yoshi Tashiro \n" +"Language-Team: none\n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 3.10\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "メニュー" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "技術機能項目を表示" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "技術機能" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "技術機能(開発者モードの有効化なし)" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "ユーザは技術機能へのアクセスがありません。" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "ユーザ個人設定に技術機能項目を表示するか否か。" + +#~ msgid "Users" +#~ msgstr "ユーザ" diff --git a/base_technical_features/i18n/nl.po b/base_technical_features/i18n/nl.po new file mode 100644 index 0000000..6b6bd3d --- /dev/null +++ b/base_technical_features/i18n/nl.po @@ -0,0 +1,67 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-18 02:29+0000\n" +"PO-Revision-Date: 2025-02-04 21:02+0000\n" +"Last-Translator: Bosd \n" +"Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.6.2\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "Basis" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "Menu" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "Toon veld Technische mogelijkheden" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "Technische mogelijkheden" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "Technische mogelijkheden (zonder debugmodus)" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "De gebruiker heeft geen toegang tot technische mogelijkheden." + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "Gebruiker" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "" +"Geeft aan of het veld Technische mogelijkheden wordt getoond in de " +"voorkeuren van de gebruiker." + +#~ msgid "Users" +#~ msgstr "Gebruikers" diff --git a/base_technical_features/i18n/nl_NL.po b/base_technical_features/i18n/nl_NL.po new file mode 100644 index 0000000..dc0b74d --- /dev/null +++ b/base_technical_features/i18n/nl_NL.po @@ -0,0 +1,65 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# Peter Hageman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-22 01:12+0000\n" +"PO-Revision-Date: 2017-06-22 01:12+0000\n" +"Last-Translator: Peter Hageman , 2017\n" +"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/" +"teams/23907/nl_NL/)\n" +"Language: nl_NL\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "" + +#~ msgid "Users" +#~ msgstr "Gebruikers" diff --git a/base_technical_features/i18n/pt.po b/base_technical_features/i18n/pt.po new file mode 100644 index 0000000..8a3808b --- /dev/null +++ b/base_technical_features/i18n/pt.po @@ -0,0 +1,67 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# Pedro Castro Silva , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-01 02:43+0000\n" +"PO-Revision-Date: 2019-07-05 16:42+0000\n" +"Last-Translator: Pedro Castro Silva \n" +"Language-Team: Portuguese (https://www.transifex.com/oca/teams/23907/pt/)\n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Weblate 3.7.1\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "Menu" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "Menu" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "Mostrar campo Funcionalidades Técnicas" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "Funcionalidades Técnicas" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "Funcionalidades Técnicas (s/ modo de depuração)" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "O utilizador não tem acesso às funcionalidades técnicas." + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "" +"Indica se o campo funcionalidades técnicas será exibido nas preferências de " +"utilizador." + +#~ msgid "Users" +#~ msgstr "Utilizadores" diff --git a/base_technical_features/i18n/pt_BR.po b/base_technical_features/i18n/pt_BR.po new file mode 100644 index 0000000..d1b8d86 --- /dev/null +++ b/base_technical_features/i18n/pt_BR.po @@ -0,0 +1,67 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-21 04:22+0000\n" +"PO-Revision-Date: 2019-09-03 03:24+0000\n" +"Last-Translator: Rodrigo Macedo \n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/" +"teams/23907/pt_BR/)\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.8\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "Suporte" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "Menú" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "Mostrar campo de Recursos Técnicos" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "Recursos Técnicos" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "Recursos Técnicos (w/o modo debug)" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "O usuário não tem acesso aos recursos técnicos." + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "" +"Se o campo de recursos técnicos deve ser exibido nas preferências do usuário." + +#~ msgid "Users" +#~ msgstr "Usuários" diff --git a/base_technical_features/i18n/pt_PT.po b/base_technical_features/i18n/pt_PT.po new file mode 100644 index 0000000..cec47f7 --- /dev/null +++ b/base_technical_features/i18n/pt_PT.po @@ -0,0 +1,65 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-23 02:01+0000\n" +"PO-Revision-Date: 2016-12-23 02:01+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Portuguese (Portugal) (https://www.transifex.com/oca/" +"teams/23907/pt_PT/)\n" +"Language: pt_PT\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "" + +#~ msgid "Fields" +#~ msgstr "Campos" diff --git a/base_technical_features/i18n/ro.po b/base_technical_features/i18n/ro.po new file mode 100644 index 0000000..e4aa4f6 --- /dev/null +++ b/base_technical_features/i18n/ro.po @@ -0,0 +1,65 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# Daniel Schweiger , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-22 01:12+0000\n" +"PO-Revision-Date: 2017-06-22 01:12+0000\n" +"Last-Translator: Daniel Schweiger , 2017\n" +"Language-Team: Romanian (https://www.transifex.com/oca/teams/23907/ro/)\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" +"2:1));\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "" + +#~ msgid "Users" +#~ msgstr "Utilizatori" diff --git a/base_technical_features/i18n/sl.po b/base_technical_features/i18n/sl.po new file mode 100644 index 0000000..2cf1dfa --- /dev/null +++ b/base_technical_features/i18n/sl.po @@ -0,0 +1,69 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-21 04:22+0000\n" +"PO-Revision-Date: 2017-01-21 04:22+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || " +"n%100==4 ? 2 : 3);\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "Prikaži polje \"Tehnične funkcije\"" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +#, fuzzy +msgid "Technical Features" +msgstr "Tehnične funkcije" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "Tehnične funkcije (brez razhroščevalnika)" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "Uporabnik nima dostopa do tehničnih finkcij" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "Ali naj se prikaže polje tehnične funkcije v uporabniških nastavitvah." + +#~ msgid "Users" +#~ msgstr "Uporabniki" + +#~ msgid "ir.ui.menu" +#~ msgstr "ir.ui.menu" diff --git a/base_technical_features/i18n/tr.po b/base_technical_features/i18n/tr.po new file mode 100644 index 0000000..50b1c68 --- /dev/null +++ b/base_technical_features/i18n/tr.po @@ -0,0 +1,64 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-21 04:22+0000\n" +"PO-Revision-Date: 2017-01-21 04:22+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "" + +#~ msgid "Users" +#~ msgstr "Kullanıcılar" diff --git a/base_technical_features/i18n/tr_TR.po b/base_technical_features/i18n/tr_TR.po new file mode 100644 index 0000000..e7bfc6b --- /dev/null +++ b/base_technical_features/i18n/tr_TR.po @@ -0,0 +1,65 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-22 00:54+0000\n" +"PO-Revision-Date: 2017-02-22 00:54+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Turkish (Turkey) (https://www.transifex.com/oca/teams/23907/" +"tr_TR/)\n" +"Language: tr_TR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "" + +#~ msgid "Users" +#~ msgstr "Kullanıcılar" diff --git a/base_technical_features/i18n/zh_CN.po b/base_technical_features/i18n/zh_CN.po new file mode 100644 index 0000000..451c1b8 --- /dev/null +++ b/base_technical_features/i18n/zh_CN.po @@ -0,0 +1,66 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_technical_features +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-26 03:36+0000\n" +"PO-Revision-Date: 2019-09-02 16:56+0000\n" +"Last-Translator: 黎伟杰 <674416404@qq.com>\n" +"Language-Team: Chinese (China) (https://www.transifex.com/oca/teams/23907/" +"zh_CN/)\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 3.8\n" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_base +msgid "Base" +msgstr "基础" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_ir_ui_menu +msgid "Menu" +msgstr "菜单" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__show_technical_features +msgid "Show field Technical Features" +msgstr "显示字段技术特性" + +#. module: base_technical_features +#: model:ir.model.fields,field_description:base_technical_features.field_res_users__technical_features +msgid "Technical Features" +msgstr "技术特性" + +#. module: base_technical_features +#: model:res.groups,name:base_technical_features.group_technical_features +msgid "Technical Features (w/o debug mode)" +msgstr "技术特性(无调试模式)" + +#. module: base_technical_features +#. odoo-python +#: code:addons/base_technical_features/models/res_users.py:0 +msgid "The user does not have access to technical features." +msgstr "用户无权访问技术功能。" + +#. module: base_technical_features +#: model:ir.model,name:base_technical_features.model_res_users +msgid "User" +msgstr "" + +#. module: base_technical_features +#: model:ir.model.fields,help:base_technical_features.field_res_users__show_technical_features +msgid "" +"Whether to display the technical features field in the user preferences." +msgstr "是否在用户首选项中显示技术功能字段。" + +#~ msgid "Users" +#~ msgstr "用户" diff --git a/base_technical_features/models/__init__.py b/base_technical_features/models/__init__.py new file mode 100644 index 0000000..0a11085 --- /dev/null +++ b/base_technical_features/models/__init__.py @@ -0,0 +1,3 @@ +from . import ir_ui_menu +from . import ir_ui_view +from . import res_users diff --git a/base_technical_features/models/ir_ui_menu.py b/base_technical_features/models/ir_ui_menu.py new file mode 100644 index 0000000..b73dec5 --- /dev/null +++ b/base_technical_features/models/ir_ui_menu.py @@ -0,0 +1,15 @@ +# © 2016 Opener B.V. () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from odoo import api, models + + +class IrUiMenu(models.Model): + _inherit = "ir.ui.menu" + + @api.model + def _visible_menu_ids(self, debug=False): + # OVERRIDE to view menus typically shown in debug mode, when technical features + # are enabled in the user preferences. + if not debug and self.env.user.technical_features: + debug = True + return super()._visible_menu_ids(debug=debug) diff --git a/base_technical_features/models/ir_ui_view.py b/base_technical_features/models/ir_ui_view.py new file mode 100644 index 0000000..55e3125 --- /dev/null +++ b/base_technical_features/models/ir_ui_view.py @@ -0,0 +1,15 @@ +# Copyright 2026 Camptocamp SA (https://www.camptocamp.com). +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import models + + +class IrUiView(models.Model): + _inherit = "ir.ui.view" + + def _postprocess_debug(self, tree): + # OVERRIDE to treat debug nodes as regular nodes, when technical features + # are enabled in the user preferences. + if self.env.user.technical_features: + self = self.with_context(force_debug_mode=True) + return super()._postprocess_debug(tree) diff --git a/base_technical_features/models/res_users.py b/base_technical_features/models/res_users.py new file mode 100644 index 0000000..433b051 --- /dev/null +++ b/base_technical_features/models/res_users.py @@ -0,0 +1,48 @@ +# © 2016 Opener B.V. () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import Command, api, fields, models + + +class ResUsers(models.Model): + _inherit = "res.users" + + technical_features = fields.Boolean( + compute="_compute_technical_features", + inverse="_inverse_technical_features", + help="Whether the user has technical features always enabled.", + ) + + def has_group(self, group_ext_id: str) -> bool: + # OVERRIDE to forcefully enable debug mode through context key + self.ensure_one() + if ( + group_ext_id == "base.group_no_one" + and self.env.context.get("force_debug_mode") + and self.technical_features + ): + return True + return super().has_group(group_ext_id) + + @api.depends("group_ids") + def _compute_technical_features(self): + for user in self: + user.technical_features = user.has_group( + "base_technical_features.group_technical_features" + ) + + def _inverse_technical_features(self): + """Map boolean field value to group membership""" + group = self.env.ref("base_technical_features.group_technical_features") + if to_add := self.filtered("technical_features"): + to_add.sudo().write({"group_ids": [Command.link(group.id)]}) + if to_remove := self - to_add: + to_remove.sudo().write({"group_ids": [Command.unlink(group.id)]}) + + @property + def SELF_READABLE_FIELDS(self): + return super().SELF_READABLE_FIELDS + ["technical_features"] + + @property + def SELF_WRITEABLE_FIELDS(self): + return super().SELF_WRITEABLE_FIELDS + ["technical_features"] diff --git a/base_technical_features/pyproject.toml b/base_technical_features/pyproject.toml new file mode 100644 index 0000000..4231d0c --- /dev/null +++ b/base_technical_features/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/base_technical_features/readme/CONFIGURE.md b/base_technical_features/readme/CONFIGURE.md new file mode 100644 index 0000000..3f216c6 --- /dev/null +++ b/base_technical_features/readme/CONFIGURE.md @@ -0,0 +1,14 @@ +After installation of this module, every employee can still access technical features +for the applications that they have access to by enabling debug mode. + +Additionally, users can check the *Technical feature* field in their preferences to +gain permanent access to the menus and views that fall under this category. + +![](static/description/user_preferences.png) + +Upon installation of this module, this preference is already set for the administrator +user of the database. + +In the background, this preference is mapped to the *Technical feature (w/o debug mode)* +group that this module adds. As an administrator, you can therefore manage this +preference from the regular Users and Groups menu items. diff --git a/base_technical_features/readme/CONTRIBUTORS.md b/base_technical_features/readme/CONTRIBUTORS.md new file mode 100644 index 0000000..09c3c68 --- /dev/null +++ b/base_technical_features/readme/CONTRIBUTORS.md @@ -0,0 +1,6 @@ +- Stefan Rijnhart \<\> +- Jeroen Evens \<\> +- Jim Hoefnagels \<\> +- Khoi (Kien Kim) \<\> +- Tris Doan \<\> +- Iván Todorovich \<\> diff --git a/base_technical_features/readme/CREDITS.md b/base_technical_features/readme/CREDITS.md new file mode 100644 index 0000000..393f71f --- /dev/null +++ b/base_technical_features/readme/CREDITS.md @@ -0,0 +1,3 @@ +The migration of this module from 18.0 to 19.0 was financially supported by: + +- Camptocamp. diff --git a/base_technical_features/readme/DESCRIPTION.md b/base_technical_features/readme/DESCRIPTION.md new file mode 100644 index 0000000..b439f85 --- /dev/null +++ b/base_technical_features/readme/DESCRIPTION.md @@ -0,0 +1,2 @@ +This module provides persistent access to technical features based on user preferences, +eliminating the need to activate debug mode. diff --git a/base_technical_features/security/res_groups.xml b/base_technical_features/security/res_groups.xml new file mode 100644 index 0000000..efb88d0 --- /dev/null +++ b/base_technical_features/security/res_groups.xml @@ -0,0 +1,7 @@ + + + + Technical Features (w/o debug mode) + + + diff --git a/base_technical_features/static/description/icon.png b/base_technical_features/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/base_technical_features/static/description/index.html b/base_technical_features/static/description/index.html new file mode 100644 index 0000000..0dd1165 --- /dev/null +++ b/base_technical_features/static/description/index.html @@ -0,0 +1,461 @@ + + + + + +README.rst + + + +
+ + + +Odoo Community Association + +
+

Technical features group

+ +

Beta License: AGPL-3 OCA/server-ux Translate me on Weblate Try me on Runboat

+

This module provides persistent access to technical features based on +user preferences, eliminating the need to activate debug mode.

+

Table of contents

+ +
+

Configuration

+

After installation of this module, every employee can still access +technical features for the applications that they have access to by +enabling debug mode.

+

Additionally, users can check the Technical feature field in their +preferences to gain permanent access to the menus and views that fall +under this category.

+

image1

+

Upon installation of this module, this preference is already set for the +administrator user of the database.

+

In the background, this preference is mapped to the Technical feature +(w/o debug mode) group that this module adds. As an administrator, you +can therefore manage this preference from the regular Users and Groups +menu items.

+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Opener B.V.
  • +
+
+
+

Contributors

+ +
+
+

Other credits

+

The migration of this module from 18.0 to 19.0 was financially supported +by:

+
    +
  • Camptocamp.
  • +
+
+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/server-ux project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+
+ + diff --git a/base_technical_features/static/description/user_preferences.png b/base_technical_features/static/description/user_preferences.png new file mode 100644 index 0000000000000000000000000000000000000000..284176c3b6051af390536faaa5bf981f28145772 GIT binary patch literal 61320 zcmb5WbwHF`_Xf(q07DNV0@B@$ba#k^bhpyo-5}i{T>{cbcc*|LDc#-Ocl^$G&cW~g z?jILsm_7U5xpqD4S!)w2|4sr0@iih86cmb-q^Kek6bum*6u=n-2Z_-(Vnl^}5jPbP zk(Uw?A(FSVHZip@hJvDs@r;&}fmV3g6J<xaxD=;ydIKl$%JbdJQLE+(eV4 z&c8_|y;j4kvMj>2N4Ki=5bv}5aDrC)Ddig)EYXoSN_OL7C6IL-pU zN%0K9Rmqn6v}m(x6zek*zpfMSjn-!m5rP+(O_E+@seueF^F1}YG1oIf)`YZ^98+Au zvxfa7U2Tkp2wWp%Dk-B&k4Al&y#TV;@-q@RnDxyGIV1{Vq0N5Wz*VLJgzptwjw1qR zNY%Z36&2z$2-Wv6KdOCvzX_&(2EsY}?s1vY-qB9V)9&vNQ+PyDXC3vNW%T( zb?3WkW@p{sNL39!ddZ;yWByg-2_o1;V>KxgSy?C=NEieK3wQwq0|@~jzfgeJP_X|A zLqSOcaQ_J_0;v9*1{w+~*c1x*-!vMK&)+}MkT)dve?MVjgP`Cc-(Eo80a?(0r-mWQ zg84fPaE3gC5_&HpB?b9>Z)j(1Y-Rt^+Ce`&{R$F+U?Zt+4+Zs#{P!CmrAT%R1qD50 zs-)(iCi|A#(Attg-^kj)n8C%;=65+zye{03prx^cK9P&1g_S+G3m?gUQgB1UzoQvR zi2jqr!JLmoO;(;r#M;i7h@F9nfr*44k%)+h*Urdj#mW1hdj4OJ{%z@BS(WXL?L@3CAvqoR{~fIV zW`6$ge>484PW6B5e{-n)pE;h#{%;OBJ5z`p^nW*vpZUKvJdgWtdS1rgWB+U}{58@36APJX z{D{1a|IAu`#0#~GNhl~mC@E1PB^SVcI=r5e@@21_o7{Fwz@pHn8350#DTdmb(gp3g zU+&ZNyJdHE2fv#1RKZFXpjW_`c~tn&0R%6`=bk*AH<1~;fQl5p0Y{CjM=f(pN3w}$ zE%q{^4RHEIfERzfeBFq^>S&e~2!BQcUf2Ms1g}N@NDFvT$N~M5=pyJdN(>Z2^s|?| z&oPG}G}-f)yfvhNU6ePtB!AYJ1+`-B1C)IJ%31`;`%K`Pv5Wp$gdm`E=~*SeD->)& z&w?uAn6L=>vj`vPfVMyDA@X%26$B_+7tVtJXlgVREXW(?kERMjUx@oa=Pk;ABmN&L zAc7y^{%EQXa5qAb4Z!c`kY>9TxjZFwcR=vyF@2I>juti5 zJWXIvgQB7em9cR?V9lj&(Ua74UaC2S3X`bv1#UVKf^E?Y!c>wN8c8tGJ&`>2A1&5% z#t4yLV=HL|VG!0=-gjCI3}_ZWlS%Lq8jpY?qb2!B65yDr0%(1jM!&6N;DSj85a=&{ zcG?zz5U@*! zd5x&CRn1y0Z)t8<4d3Uhn^A^_Mmpisr)2ZbF~X+)2+( zMn!Ra+0qeXx{M$6!{<9KEp1|9A*bnVUU7F1nL+^D@z&sB+&^Zqy20J zgHYXyA9^{!H9%ElOWXRPkJYygfdouqBr^4anr1*%9a>+}nV_(-xMA@}<@0g&fYXl zAMKs1_pIV||CzZFv4W*ZD;GGG8&);6Z{2$5E*tSye^O-%x6H>Q_ViN?3@;VZ8os%b zmA(q=`^9D*rZ}Fwp;SN8aSw1BB)Q=O;cO4x3}L2XB~--5_nX5yx$TS%8lZuVW!CoS9RPK z)d4lHt{Q|!MkeOv8DeQKwdNk!Zd25#4n)C@Xa@_&W_2sGmZB8kH|aXQ-zeB|3d5kRm2sw*l| z_1uO=NF5K0UAVmX!0%DlrUUj+ zwyh>~U>y`gfJjh^^UGzV%-dTC?{#9Uh(B6ZIXunoYo&b zfM)c9O!4q%h#y7S;tAoAtvpR=@XT?)hjcUH2RvLY=`u7Q3vWp!vlxGRo5{a`5G{Yu z-XBDawB~rZKU-zDA${>Zo|6=7F(iY}y^#wedvN68LRG!eqv3paa%dPSg~K`nLok^X z0OL7Rp+Ejrxma+l!F~%dNXT-ocG#8V_F`{qkk}vR&ZQ~J%VMJLp{3gL900I>^1j)? za`rmzfNxqu#@9$_a4Oy7K|bgAyp^0T)7Jisvss9BQL5Xf!|k+B^>BCPyfZ}*3AQR$ zEq6NOF)%dDSN~>GHOhYnYNn*%XS#ybiP~^$110COSpH%Y@^-&EJfNsEjD!nv*U#v0 zy*s3}wY5FHnAUB|HcC!nwOMZWk%WS&Mk;?1lum3N_KIGssi>$3K(IYMo-YHt4_-#N z*-W*@Q>BCRaTg~YYLd=$U264Q z$bqe=oHySZNnap=N{o7HTLqtm{TH6R#`OJ#1n%*TnX5_vK3`aPxWWPRZ49~dv(qH9 zY03F{KWS9GncjA1at|*U6dj5|IapMXL4$yR(1;d#bimE>3-`=%Z)yMrjhE=@X4Knh z8!m{kg9r^%$72PSqv($PqFT@37P4Y>iE+apIF>x#6R|yB*0l``b1Z2Q<6~L3TqNSY zHilyezji-tkl?>r$8g2? zVtONz=MV$}ht#GoaLhcc5k5s{iv%~aGhM-W%vGC`%BHeAiexiY;sd&x^wvf2!m*h< zd-xvCe^$Ai7~E_LJnfWqyc&fi0npklxNfDh=yw8>HXpcGLrB+Gf(cQp?-rbw222am zH>;Mp^c=svf5+9M{d7_8?Rc@q5pZ|&7)-dH(RAeWa55Eo_HC43^Ei!2ZNFiy?kxQB z3?iaf_oJ5SVatZyuf0hO@ru3&&YoY>y%o(D7168(1&{lM<}L==jFT@vBdL zonAfZBXl&ic& znT6!a8p1?D#wHo(XJBBURbc6dOwXx&ZMU6#yME%}dW6M#>$jW1@bCm^E--K?uh)^i zzXN<#VR8`tKp35+ZA{~Hb=F7CBuUy%DaBXGhLN_O!9=1y&K;sCWsI%Y23s}i^)}hf z=i@S`kQvkDWQ#KTA^_#O3&x0m0mK&qe~tjKXnnZUoc6}b*3}D;+H-*`Z@JW1X7zsb zpcJMfNL=`Hv$(6OsIBw$>@C(hU*roXx`UM z9`tH0P6vFQB7XW(;J3+p2Ax1*IO~HttA*WgOY9pxfA^ZYE6&eQ9X8Augrj^{X=#uZ z;frvU>X62P&eincS+ediGLQ9v~0rKOcwbU)(5f`_^5#kEHM?(QQL&awS;JKd(m zeF_K9`j(jzrpq0IjBR=}?_?Mnx^V`WKIsz~g3vdUh}vgrSNO3J16?sdCgF1pVds5o zcsa`u6l2#_@`L}BbeVq`)W?f)Hbu0+sjjmgjMdxeb$77U4SyTdj7<}`qJcda$n~-p z=^#Y`)vLZXY7(}Kzz@8^tc0k8=V739O-!%|8xo79>%q*Vh4diI_wi_uw%kE^gW zsPmT?zh(;Z7U;;5l1OgJNO+R-{hVbm$%wkc2v}Gfn35Od^mx~2OaB1z%!6uCszPMr|B-A&lm#f z{J4I&p%pwYDN}~O{{fnxzIdr-os$6+96hoVusL5sFq4T50kA^>l;?o%jzz%0LSG%a z4aif-6>q?!KrW#RLLt`k;e~yDB*R@0-s?;y4yvx?FwfP;W|)RMboWs#Xnw{o)y9*RU%6R(Z7&U8eyGxS?)UHToZ{cC z)&t=|2N|m~Wdq95y5V=fMQyD7y_zJmY+o#cOL}j#_V&y4^g5w>j&YIgh1;dYu^$cZ zMBB4^xscz#b?J@V#J)AM{?U??Q=p5STzK;Op1pwV+Jr6&0bQ%h<&FPB0H8a1GK{+< zt!L%e>N#0`3VxZTVsnk5aVh`&H=M=A+aDZ5VJoJ|l)n0E$rh2WbjO1;gIZvT+VfJ@ z&Eg-74inwJ%$JL}$PLQL#V-MpACUn`jNUB5M7xMXG*`#e)zGN523bG^GA?fumZUZq~vm`{(CvIS0l z@$;9B{S6IZ<4T!#a64!PE7mQHJ1)}&8&wI~qs5tW=d@i~zqi+TWaJ?hV2(dHs`P^$ z^o2>OxQQ6_95m+=HafIWDs~~NO=>u5*HXB5ystbA?b}WcQvUif`RU$*PCip{CSg8o z0;jr>m3DARI_!E~WAlyQS~MC7up@&tL)wNPM2I1V{R!S$Cg8H~)>J|jz3m@$`VtW` z1KoQJQAcGvw*$~4NrP0>CFSIt#Tmk_S*i5TSLu1i6Zby7Tk?ML6!e*yvy1P0L|3z= zR;svpDS0M^s>{H7dVu|vZq+G4N4?>5@7m(QBW*Fv{<2iV#gyiP4VA@m2(cO1K6x3{ z8l8Veoq(rG^$j-R5nmUs|5jkOesaO-2+vXdu2tg>1&0yhD8R4Z$ud~5<42+VmEMJ> z_pyg1IjxHV*slkE^#=s{>5DP!k3^bV3&ceE{!N$Y9T5uxs;+qVDi)|0zZfbqLsLW> zl2bOL1S^<{b1u3W@&hlY+IJnY%DIDnG!o<9An3BliipVsNXysI7!$ zs`9y^zHZ<1m0D)~Fye5g)4m%@nPC$*VCfZ*z}z~?yv%$v*DYb(xe3w1>|~Wx7*|iU z=mZPf?*e@qh+H0B$|&4yx~-u^&MFE(!f_O`^UU$>wg~tCuthVpAd9-7%TIF~vQzOs zxH`GwRM0B?ouYODW4RJdD5n)~X`KlB@@&%9EIFK@`s|uP$u<#n4+fQ|u$De0R+!zc=Z#uu~C&T!mzzk>gH6vl~sYxO843M@jkE$F+!(uS>e=uk_ z?}tZ%KRWY+@AjjA<)d%It_nwMpCZ_SsJ7Txf`T{34t*Q;IMYf3X8ieZ*Fm({4S#BI z<$ytyy!8UF*%G$keAq>?S~Cni{*@E^v*}@_xD{h%d$|KZ^twEJsXQrhjtCN?16c+-RELqUe4~3 zJ{T_Q6}Jbk6~}JmyR}`sxg2ZlOayz&4cl zeQgo`WqW%CZeGfmDGCWAG)0D?E}{!-MK*qrc}F3iHpg)n6T?2a?Lp1-*OiC#LsDBG z49-HruJQ_fqC~5nPns%(yVVdF5sa88dv|*C32= z{`1!VK3OYLUmn}a(HD_(UlP?f=s~h|$~a=lV~<{yo+5{`2;`dt{Scsvpx+ywIse6r zX|vMb&CRWG%^I5gN9)kRU8kABj5W-CdF!p&R;Vx@FR2{=P2L<8xT&d&XAPeqcpU!$ z34R&xE(=1J3|g{<<~y#Obbbk$Nx|1abrH2{*m%WJ0N-^^;JS|f(tZW9K9NJH&c~8n z)HQXUX`37naMb(Y(dFc9LiKCBsn7+YHI;c`P%ifB8Le7!Bg^ii0|0&vD9PcGE2{L9 zNPg)f*7YlJt}+paCu@BTQIi04KR#9qP}0?Kb4zF+*_C|9xFt;YGA}zB!cf0~G6m9c zGttau04IkWDgUdT@-;K_z^*+qn!V8B`GTgH#+#JTs`o3GbfQ0Rx?F^LVq>v|(~>9V1vLD5jV8DMK;2Co1X>qTwpG5T&`Dw)30D| zBK!}2MT&v`s;J1FM{VdT0asu6mo`lq)1#UdZdqtI!R<|4B|> z8Cb@UpAkXB&x0M!#G=1!=mHK}YVSuO7qpRKI;`A94}V*74m4~P2}ZU0$-^qnoC)PF z+P(%5^1UH0taCnE964ilKGfn60NN%;M=q$EdntE%7y<2hl{2jwjrexE_;x9cb84C4GSHLh2yO4#qMO;lcb0zHhg3h;j9^)ZH29tGf%4fRkV!e8#JNq9_M*EFJ9lt_MLS6hi*_ zP)QjHTrdM~Z7gSdvl@FuqM_dyF!r zSb0+<7lCA6`oX3$J=E^3#h?J1f%~FQ@oLj8!nro07fm& zKd|7hfZ01AXtEG|QE~MKYgYDfrz`2m5D@-S+mJe%5awy@vl<|U5eY&P`#@8wv9n84 z3ihdn)F9F6Y94lnT9cIZoJl?--619w`8N>Q0eGk8TO@kbw@o$BC?Kw$;wJR=Lm@61 z3yXB^hIPEGX40N(c;e};ICR2sz@K&LQ9=wcczATS8Z={LC$ZqA?jAuKpr39CS@)Zm z?Ly9l{_?y|mONh%UgEzw!@qc>8EQb8U%pEg2b2AM@p0x7Qf#3P_^o)b;QyMS3JCy+ z-~=4C3mSF`snzo}zu^Z^2MYtcltC_rHcnXxCNwzr4_W`GLrf`JEjS3=)q}ja*@1y_ z33>@70W(T&f=;Ko1~2{|>i-xDl*IMQv52sx1C>jO1f4J~W-w0;VjB;!bHtoh8D^CO z-%|e3{FZPi*pN>l*E2@=DhbO3e4AcsR8)g8vEw99#tm+g9tBqQDh{!!^;WK~fAkyh zV&;u+i;fSJf`Qh1i9uexAj`el8b!6{;mjbI#Jxap=&{RNPMigolRt;IiKIdm2^@m3 zzlTnkw9Afafe1bm-rt9dDJVgf*-$}F-cu+$u^lV25_auTLU$1ubhySGl-O=1 zyb+r<=&F#Dy?j>?G1kIx_i>@ zs-E(?aRZ$jolmZUj8WLgDDUp$1p`?xhpkA1hiZa%Zp3)(xcCM=Kw?c_!X?;)m-d6g z&zBQnx4AhvUzG#v(p<~GDg#*mHCaI+1Vjir%$R*G_@wu?6DlGiBId=L?Xa*g5jSQ% z@YWWVS;h;gx90~Zl`Ub$jeg2i7ITROrlDR!fHf6|);@Mj29lE#DF%X!h}Br(4yF>a zbjH}s%yPI|hK0RyR(^Id$~?-CJg_60IiHN(Ssz)?aSW&^h;=@F`lK|opZphW=i|N`Bj|tXbIpszTxHv3;=22!laTpg)SdtpI|XztPN3WR@n-+0^+s#c(^|Mb zc29o3F^$?MG6n`6mT9ZR_i_)pCEBSwgE`2;n?aMOzlx6rFrwP%qWDfrcpqoZP7fwh z6t#9!Lmu0n_!ytAw{jU6f6+7kt8O=ow{Czab7 z|Hi(Mox}Gv`bQ?{Zc1jRdkRIb&&(2sjR!)m7aLdU07OGxtIkFTsZTdQPdg(l+9@ zc6K?hTg{EH`6Z+dYdty~ZEZuR2#@xxwMvG<9*=f{Y*IdP9_!SZq~9Mj-mTYo^D%Jn zdI$5~ZerMN1+)#&P7BcPu}*XGE8kSziKQP~tc3V%9ms}-hT5JqG&Gz-xLeoqM^ z`Kcfi*s_|kkM-Z!&JPzfDc+@FANvsTN6QVVs4_K3--!LY^vL8bp;1ggDh;o%n3)w~ z0%;l6sC!s=XkMsvPBDfTJs(;Jv=_|1kO!5ckLyTKXwYA zd8@~92PKQqkJj;Gcki7^=MYw2Ar!ce`cjD*dZSV7b{%2`gZ&~`?>nL?Til%EXc=1- z-U%Eym`?G^+SOVn6fM1rgAk#LK}SvHc(&d8jj3*5UnXpFt(?vlyjPxyAM97?GJb*y z?myiq-YDhZpK{BESi^b;P7G1wIz(;ALzULzsRP>AK2~8H+=JWdbk?T z5kpFXKY3s9E+LU#bMQyDNcxYi=+bxT+zr{9xa=0ulf|k{b^;IQaTu)dcs4$HU%oWj zV+aW?Y>+=Y69utBY}ja^#n7&8tyW$U9q$|2hV@g{e7U2M)8T1>T{ETDx~(`05AqM0 zUPTxLncnQ$R*i@6Lghl@l4m}uGkJ&Nd2Sa~u^WcnKh7aGoHB9@Sf8 zY%wNbvP!?MSXw`I9fxuVb{sl`l6C#7+aJM z+n&5ke^nP5*6VdZs~-O5s(*9n(CD^T3(i9j&4<>y_2vs6B=6zt1bX!<(c7z|BVJmF zRsG$%mgA%{!_xLx?goT1d~ch&#>7Vs#&pXU5ul)_!s&hv7RZHHG<4zS8KlWslkSh!vjax{d_fL|4aH;7DGrjudm za;xZg?>IIbmNQCTWu$K;;yzN`6*;d9$SsyyAEruQ5u|T)+CS##Bt2Z9c;lwiDq?SI zmS))CzwGTko4?>1Z#G6!bziL2a@~$?GCoPWIqlDTlD3ns!gYfyS87Ie|F)uZiQJ++ zI5=nrP0GspUZc*69%3zSaya-k8T#VwbuecNuWJ>ah)S(Bhx;2}az=cW%#5ci4iDP-G|pf{@)m%Q9Gn03B} znofe&_BCHxfq7$@Z!w#eFVgMN6|1LYJvj&R7qHi5#(W5P39#* zfuS4NCV@Z7w0S7WmUjdN)dQNFn|+eI@Ru9qGWl7|CaB1GR_wns_i_5JkzD_AD0~3E z4uA(j1G~y!F=|l#Y`f90YCO=GEfM#0zj(=JKBwK9$uHBJ!6i;ylQ@Z!VmGq_zq^Pp zR%N#Fn&Tc3&Qn@C$Eak6h#H|3?|XRoP>&xqF&qZ$6jnby|cK;y6 z0MWQFMGTBV%Grbz8sJcS>>8%RT*pGJ0MsDMoiv95wGB;uq`0MvS6c04t}fyl+gh

TWnh0?w+0Qhr*9fqbh65!&Fps4x_Msz+wZ;U5Hle&&Rlov|>1l-qjvW$(dOk z@Gqqfaa_?S|3L%MoFK$FxJ#VgsHaZZWjxn4P5tF75^vdQy6RC9Rh!SO^& zP9Y{Oy;7uBOhTgax$b!Ky`si`kc*fErF88(!6@n|G+v;K4vWg2N>AhJr?ZU`);{UB z))vQ_QtX?ve2#wntHr#y)c4T62kzE#v8DXno zc32m?#{?|Sk^R`V;`Igj0G3LO?HiVN!|;=+F5anMkABBmPb4i%yt6xu?%*zZ9EZ0` zkXoaZEPwPoPZ4XXa><|&{34gh05MQtd>;~QzkwLfmq(hMj}C+C^v5}yaY3wJ_hYgQ zeOv*AK+tV~kD9#CeNhA%1)0=YwPeGwT$0p~2|hUmiR@~w;rub9 zP2YH<2pj>CG5K7j<4$ZDb!!Xl2)6rY#Q0&mCzvNnW`$6@rLMXm^{uq!#a-uvDXGWD znU>SGr&dxvcjpAdNL+Hp=F0%yvx(Fya`RMFG#){QhW)n}Gu`!%pA||Ij%)#NJQ+xl z6#U;)e|Yypxw;ItZTuomlFo5Ux4NIRj4grwe(DF*NniR)VP~fEFjmkN+hXpVtcg0z1-T{P@h4W)64-UlFHtlyuFIvbck{I{$e z>E4R>rNyf1xQbap$lirHBN~Lri)QK?rVB@WFQ%@#g|!fJPDbQF7{H z@*!qB_FV~q5?O+nBIA6Bm5M@3A>NjKf^T?Ur+n%99xtw9op!}5Ka5J5pHE(;zehq% zO*=7g)XK7*y2DHN%{&&(4+fW(1obY6h{$>&=om3t-t$eZz1OX}j_18t!)cj$o_*c9 z8SbTuTp_#P+P<^iNyqdnLXU2Y(--At4a;sW&ot}bG!=@pkCF)z=CWnvsK^6xg5AexEMb@&bU^1=23n+~h);Ak*Xi6nO4{6; z(|wl+&ZUuqMYbcZLE*pA&k*LCxMMQgoV3S*)CYSR;u4FI-!!hqAEGO0|9nrcjNPFS!yF6V(#*l~{N}c5 z5DW3nRN!F${u6)l#Kc>I*zZ1qE4kwc6P2e)cPNT?(Z1=jSJ}zR)wWt*eNnFx-NSO@ z4?qKA^cANQoVd$gCFQ1hw`%wk58{|@Y~AzCj)kmFFRWF){4viV6Do9Ed-CokSmTBu zye0;FS_$!!-9++K-Q9|(3CdUYGYz)Fci+DK<0T0RIErVDA%dI77-$)lPsT(I9AN2y zE>uK#$12U(i&3$>lmuGMLkg3Or6R%m@w*wsu#LX@cAb}#dEb#@!ATSf4a_wBOu@cK z)5X$>H-B+jfBk*U0a!w{iZ~`%36;+$4z-n?UzlwMG)+Prm@&aUt!!JlKAAaR3738_ zOl0cTPfqH0cI`%mMyj6pOC50+eTMF?IDXEvRU~12%!3AIM6xU(GwG}vy!VKj;Uc~- zRxZNoMu6u)Z`fQ!*yn<@cyW(&+EZ7B<&{rpyqMtgwSxU@u@lkI z+n%2-msZdbDn6py-FCQM#;?0nME$OECr}~~yAIrg^|_)Dz2y1J5ibFuQL>H(g_~Z9 zd{^*hej~+AHdfP4^ON{l1jsSP$Fs`WW?zy_AJk%yI^1=J&63lfF~C`gz)n5i=_+_f zdAwrX9x=+@<67uB+#L7p0LL|Xm0Lo7(JHI*dPv2Vs?D*noU!%tS9xP$pg)K?KjEHQEPRX-lQ_#x+EtEC%)OT*|(VJMY#O0UJd|)3CQ?v&mF$E_~lkt zEAgkE)>zCoiv_0fV__oo^z@8t1$LhFMNFCFvus4wUB3Yx$ zj9jY|)L*?y;o8GW;dtU`SkDn?yrheo?D)rw^80?n0{TZIXi*MAC2L@Ju=Od&qL(#? zu*?vXzDKc}01wM z(*iW=_O+6`K5PR^Sv;*0hRNzZ@+xXHrrMte=Ly^5&a7IbA8*@-N0ucRijh`Vn~uC= zN7A_^ry0`o3k&;)$0QvW5hm(Ax8qgom*?FNh7jg4*GeVsjyT@lUhZr#jEM{RT5qt( zZ2jZ0^4mt@1!7|X*+AI(EeFSbyNnsRinezKVSIvJ}gPb4K3%HrK&J>IIV zNlB(s_B|T5jXsvWR8tCqNy)i?)uno>OsU*BE(&wZf7P6JkdixEH|zZLq0HM26BCoX zvho^*={Zk6!Qm@TCdforFmdnzFeL0i)=%ql8KIr=`&j{>*?M9r9ilx(%**s$M(ziK zb9z>>KIT^_VI>h13c>b^YNV0)c#5Laabr1|VwgD@jbe(}%($&&i9S&o3xl+hw92=N za|Htrx{vQ~(Fn3gN+)ohTJM%np)XP-pj|Dz5PoSk8x=J_EK;(#$m>Q#MVGhT=(t^O z)6Ch~lT$Mb@jvXFh zL#j(2TR;$Sh;Wo!EC`uko5uQTLn-C<0PUR*86{5iE!ep4 zSGE)lO%DDUTRisu+1So8Llv{3|Gd}zh25s-)=&yoCaDP8FV$Bg+C-!hgu5ACPYYMc z_iTsmJ2T}?WMq_$lO;J$$I$wd#V>G}vZBs+$2{SIV5}KV@F*$?v;iz(2!e~mCmHFq zWe6)grd(z+z;h%QuP*{8eYQEQ_1Mn3ROYOOd+xpO^BMhLq02J@g*A6C#vK;kykO$q zD+`r2Ure`D{Z(W`SqP>YWQ?tzlFd^OeswyyF*;Z-@JQl)y*6OCoDDxz{%vzmGpdyi zb{2Nr(MV4H?#}E&@;Y$_#X)SZ0*sj-2XPbohCPa&L5oQYCIoR_>5%fP1ltJ3dz6dR zi|-g+8j2IHoNjJy?b$VPlf8pE&DJ_@2>aJw{(J9jLH`&Jxdyg5<1Uq)9ht=OCFb@N(DD>5_etmcIvD4npo~rqypRd`tDn zwdXf*2rS;;$4j|fkQ@IBVaQ&{9OdBo@mx*pko-xbGyc9<2W!7(My9jn^KuJo=qq&? zS*hlG>R)P93Ik&=62SR7Q65{CYJ7$X@mTTF!hK{nmXC6F{ZhfZ9^nV}Hq8VPxsljA zK#@>4W&=mqQiHZ>mPs!yJbJsTzd%>?&K7#@5a6Zt4n{_|LrPxfp)6bDAw%hRAv%x(1 z+jsvrw#d=}*??49^sKZZlCyQwiQk&s2a~K|U}Wco>I%9bX3Mr2_VnDAc^V(!J$ysh zQkl>kaktvxjs1`1`L6?H0uAE(bGtHMs4;7`eYY9YC8B={*aFo%oji(`f3(5bJw|%? z_vXg$CC!Q;@3WsWnlE%dxbIQk(AL$!ks~yZ$s_el4U|s;df<{y7$cRWKI{B{tf}`9 z0bIX-zDYpB|Nn1pI<8q1DmgRu1^;QQ{VMEJtfw6K;w*s7=Yc&ZCr9h`hbhhuP$y77-Ub*p!@sfK^mS%J>a~%5438pReel(c9Y}Z@Nw-q@KJywPMI+l7@1hyu{ru_77KA*VcfUot-4J z75cf5i)dP_tE)62ff2YIMOgXr5MLph&`^Z33YCba#VYh#?#Fq8 z-BK_w4UwY7|{A)qL>#r=+ybf`Iteq6M3w3?+JkuJXs{f zB;y>e&5iWJdhO=EQmYGhm(jL$&2$Cx&b4Wtv#w=dKVu(J8Roz`I`4gEc(^@}-=J0b z4<6&9R)8G)Upy{`9n`-$rL)P(#Ig2fP(gMeyBvc~%FKa%-AySEt&-xcJd8-&PUD|n zhEGq6*Ye&6UsidoiK{m``MW7{59}1A5fv3t`<-+2wK3upvo8Fo%;0P6pZWPNetkU; zarH}Mcyi{m)skfgo&DiSCBr*7Uh<7mF3IFE27aoXTtBMEWi{x{g))=4R5d>B9k%p2I&<9wQV(4S-0KAboX}m^EqoVIxjkvS|~6MY`t%F zGM&6yuQ&MDbN2TZ0_&@R6b-uY>h2}`nq3q`DPeE`eRcS53O=vbOG&8&Rpir|;}^J5 zWD>w?j@VwJ-L3Lg|MeDOjB2Kv)Se0e{XoVa5Jmj1iG5w!qr11i+EifhL#8)5p=>h5 zNdFjKZ84@5ggPrRN9`<9j*9OZjoMp- zE?QFcgi!|*!#V4_z+o!-)U-4@%U{*8p24WG`)POsLqn=)GC}7Ga!5fRHny;&GZ*>R zlN!zz0K3PzhB(QHiiz%p+0ew;@aG**!lHx8Lr>@)4IuxTyd@R^waD=<>;?N?d#bQj#4n|HwVDu(RRkeyg;=fZVt6wwQiC!Grs8cSfCT*p- zzrgdFAs%m1jl%!jvu@*}+}yD%DH-D2Rl?%vl8F3*lAj43zpIAn9&wdM{BBE&^$`(_ zRb(mrW4&mb>+XA3`nDj8=ny;pBP=75u(96&`RO0$qd3rv3n-(?JO0E}Ktx`dkGm+c zqma8Lj~1xJ6rUt5to7NgL{ZDV=1qkqW)V=^aknbjdPik_`O%e4sM9J1s#u*7lH1r`xKi zQmzhh3b_B`aXXs?Sn>7xL&pn95-jB-dc2y6P5U8yidZY@wW5Mgu!d`gu~=4B`wQIu zgBH|7F>s*u1|0bY-)rL_I24Thje95Uz40~i-O&Eghrx2ztwLf#Y6)KZ_;Z3~O`STw zenCgICwcvN$E1Wkjs|BaKxJUK*u5-1f)WL-8o%xf!JnJ-n z0$E82hyHQ$_DwmCIXT3&)@q2vQ&YRJ*QzI*ky!JC5g*t`bON(z;%Sq)H7xAYg4IrPv9Demx->Vo=c=tbl(53Fycu{c27kz>mK=~8{BYQOVW8^x z{cJ`Vq^=SuYb^Xx^@901%cVCB?4%I<5#Peaz(D=m9a2jFgxzy!-(4nRg`Zzl=Ko>u z9it=Ly0+o&m>qTOq=Sxa+qT*1uwvUCr(<_)n-$x(Z5wZ$_c`}-pY#6x{(e6)MvaWB zUA5OqTE2(AjjCVRHaLwFYi8O+Ov%#|$CQTnONS7$#K zX8fYm(!;&Tav{Cc*n@8tjYf=$J{=`UBXL_7r16buorv8wjYhoT=BHGd*%H zv(e5THtc3^lbvcAGVrvj`PR>xz`;whS?*)H9(3F=_WIAT^9|(Q;6x(eiSLi#x6pHN z=8J;B=-*6ix<}T5d0l_RIif~{oE=w^OX?JIQ^axbRwWXKMEbANRA;8ZpD&Q17x$~l z9_+7SJr&0{e#)-16xI#@!gE!@oah7^TzU^smb}MmTSyG_3R_CD?*5q(#|X&6T5V*P z7qF@{hyGkr9xty*wRwODsIqOnt&i=FyMmsY?kh?TN>{Zrcj1XX|u|I^1_Wg)2x*ZW?&p z?njnt$Su=68E#xOW2)Cpspp6_x8Pc}vJhyoD@z(+87(|rRQq2Ls7ADL$FaJD-~Sb# zPQAel(TKVljru7N#Nqi!rz=Fl!op2&Ktim?#zg~Rw1w{Z(;ib+MSugSAq%@WE90Ta0cY!F4G$7$* zUfSC*+hbfUWNv3TX#4acaIf*%zY>M;DDa1ZKI=Lx8a0;VZ3AI^uk=5jw4WAo(cCvj zEOUlccECExMcYI6S4?zRwq9W@E|VC94VPr;5R`D_VslDmB_$Afd8)=jHJIn2yVQOn zgI!uiCZa#7$#s{Ome%P>@nd;ZCc_h-tX!*JM5%L9)T;=$fpQ$Bj5dB`Ih8E>?M1Tr z^f!FI@QZWBcu^7McRIRQB>v39WqHt6xbXITpD6r=Z?ZnRL2><9yuISWo#tT`etV(# zDq^z5snquhu?J)C$_}b6!?NwivL5~NWc0$%h8F?N-bNW&`z%7t^4~!z+PkkP;JO|X zNb0WF0nzzhH$UwC*MYpsfUL>!c+J|q8#nk}JJVktlzm=52`8hK_|ary#5pg)4;~7< z=+O>dsdj9d`hQ_zR=Oz^h}?)+W~R6C9KBwWGVRpx4^`>$=1cg1+dXRw*iH!E$@1^xD z6W^$2@nC(IgAeu3=WvNqlmHFUkJHWOHN)$)j5Mtt`G{iCdw;mDn(4U@nex8&K!*=i zxKI`RXe$`r6Vc!fc7+2CK9A5R8CN*Su3XqkqG#s|GaDX_9pxNZm)9#&t|RZchES)h zrbj+g@Np;tE;6tw2)@_;Kyi3L`qjZ&+ozmwHo9ZEexyi0%jc@z^JG+s|i}~{@vK;5Gz!NZh+-21kvCGiZHY(t?^+ z$%zaR_T!!07V$kYQ;d3`6@#FcF<>fuD+t6#a$nd@X%*iXrlek#tC1Ye1TzQ~I zwub*K_Crf6>=d}sF-_K98*VvQ67+h)Kk;)TN^MJ-j_~K($-H%pv$gh!qBsE^$de=? z2ngC{LC4p=8oQYvN6W0b`^D;is)`2dqdh^`Mb})T`<>R%B>M%aH~~#h@E2!mP%*9a zU=K~R!!tk6<@}p*6k++BbUf!V+2SAJ1ft!Vh94tKW*O%ZPU^8AmL^%_(>!EDy4fG~ zh{${f{HF60_9vjzYqopPk5PTfTqvaJj^~JnM&P>|Un-|`6yBo#MYV>~_Kr?%)_C$! z@I?9CmbHU=S-fBgW< zCdZ2&f{06k*72eUa*Nr6H+AVk2^sRO(A^D^Cm-RtE2*E{=++F0{!M4SJP0aSCq{VUMW(+82v|u?8{-Qb|GKr{egdoRkt$VDJ?HSSYlu&iRzbXrUoK;`8y~ zA09oQ%_eHmWb`;!d9y##0cvNtE_MsmJt(-iMMjI+MEe=2*5v$VF{0Sf; z&eWne%Y7L3cTy7lhu6IN2FUDXuPcNwE((8nWHS4OW1{yOz4RL!+kCy*5AI{%P|CYe z#ICd}th-U7voX6131{c1bnoL|T;gQXdOi+q)Idei?slX%ZF?2U)6yKUZOHEYa-3>p zU99VyHzelWzNC#90^XLP%`Wi0*n!M=bc;n2o|o5=8ofxpTW*InF1M#ScAZxoFYb@c z4MG=!tSt*2kC$Hv$k1rsdNjDT4!YhH1gn~39SQ_u&eh|wZZ`ud_T$;4dkSYC5a>QI zC>FcGyE%6It{1`)w^XQ!Sy41{>4*(WM%kdZw&ODpDnL9bGmq z@THMt75lcFHcd_Q(8^ZKJxe?OT>Nvsme=gA8SH#Q@}`>i^|&p!^zI?4*k~UNT`K&} zP3Pq_ydrwVF>_>*A}bD(ihwuJ%0KcAd{-(`3FuMa-P5lOB0UORO<+eXIejb!qX<6~*;BWXJuNygE9Iz*}CoE~Lq zJ~5!0M%y<)q{qT9a0FPc=gWY-h#7giyRA~Mmj)Y|7&oO&Ue32VG}BO=ei;7os@xV&#}r?vE^0q*cxY~~~%g+0UMnLdelIXyGT zpvaNr#JRG{x$LvQNNSqrF7^d`Ql8-BM{2s=UL`>sW|8tJB=>teF)Jms& zz={}DL80`)e7R|DSPz}n#adwo==f1|c`GbFC`tNdo>*rJHUG^+=pd_X2J#D3$>qBm;%c*KN`BgrHg(kAn`t9)>V zHCfr%TUxDN)(!4}Vz6jT@={tE?J!UvJ7ZEW#}#Y_@p&CqMnQaVOqJf3?R6+`VlSf& zX$|)l1^R-*^qGy2Ancs$qgN<=e{3zLvXe^VunG!qk~}zYZ+Dl2emJEt>l^8uuju1Z zp(c~!2_UBj0Ov>jpy!k;V|sk(M0g8VVI(8}kRSVc402kC5@~y8Ufvc-UFE zM+~nntCd|Q3{Vo6hq5YSeU`@lN5>-P!n%#UgZ!Y$1-Cnh6FrXI>bFnH0JK+f&i46& z=}5+5=yU}B>|*0&rGxm;?L?QaS$2ZHhQVFQJ=K>TBhPIZx_XW~2x5T<^cRYvq(g^b zvu>dhIm*VNlh7WM+m2(|r`K!#p&mlH_zitr3iVTN5jrfdc#z;bJ<3oIhBB$d{|nd@ zSg_pNS+0D#?avA@D4^t97CeVIKMK=au2bkbd@r=O4=k09+~f(37awD_-Lx)botwMW zdKC5Gzhop;$VCaC>=N5L@z-fpTu$<5p!|ZD5sRK;Ux8sbB%SNz zeJPvCYo3p+QaivgK&Kil^fl`POMD!g&StCjCeC$kgGYwY$a(0#8Be6soz_kF5`5%& z119ahd)PSLuxzTjokd>BiF8_SW*kO<2xN#?-SzTikGS>=$*#1&L%mO`3U4NOSJs%X zjj+@lGPJiL(l>rqo?3HT9i7$ZIF5mY^B#)@-4-=p!re_re;%!tB;0iK6kTPFXXf4r z+{e0_HfV)VI8AMt!T^sv6J0-;LsfUy{Kq$AUEA-+YbCF5qUN8sogOj#6YA{`17t-2 zIsTtl6$ZMFRXKG+8cmBQd2V7qII11zhA5h{m6Krr#DXtI-AHZ|^K-MADkyHflf*ST zFK=%<@{oaQv3!|{2_V{X#xWp=l-j21)({< z(VfngrD7tUmC0M#gOheQ$?Sf<3Hc0!Ca)_O+|gatTy2LbA03A>ietl?LDKzP z8$DF45@expN7QQ`*2#gR$+CK`R~TX-(Z(2TSMwa?MBk$epM4Kd;SHo3$pAU;Alo}G zqPB6LIi2@(e)ifeHp@)d@Yc_}>!AMdI5$m#rfE3tJSy{_jJ-+$s6AwP$E+fotZ^wv9JqMbbf9^1@10E=~tiMOr| zoEjVHWaaSAUx3k2r51)H0vS#S-)bxt5rkN^0|FoJ8o{f7XFIrV1KM;cl0S$novyjs zRPgUy{3dmH=^Br>!Qf}5!LOLmtdB3g5Q`n4BTkwI9-Me)={xETp*^Q1H#>?FwbzHO zw)O)lq@6g;RxL5TI@n(y+@1t^4Ho!r($mX?Um3C><7U)fe0nO3{uLktGX!SWa4eLm z*B6Z+m4$@TZ>LlXFV(PvjoEdHE!LjzY|Pg`zr7T53?*j$c&7=n2z=jqG)@=P%Y(Ac z`O6r>8@&OTjHF2*fL`}|X#nnZ;ERZl*LJqf%VJ-7BIFK% zml%)Q*zt0Gt&B1$RvMO(kSB;Mp!31N16OMI7blp^)5#EwD_B?1`Kt@HL|@3nsx$P{)Y2;}5S@@dg=J*9TU{ z>6&P}5_!k(E1G!2-(gj;0ZR(XtE~XaW;xr z9=iO(;7w*Oq3=gAGOsG+o*ne*0S`7Ww_}X`o#WTiqNB?QwZn<=&GfL;PO{Zsejp0!#gln)wL~ccO*W# zP$xb`Y$zefC6yBX8V=^}xAOr^T?<7+%P^|_-i#8$osHHphZU?HLT)~M(mhkXxpRi* z&iJlk5|hZDk)Dsq9Ch{`tFPq$5J1DQ`)PRybgvQ5|Fet+QlU?}!p<&(PrFWCj{g&+ z1-n_MIrb{C$oxMrH_Tr~8@6bsUjM3n3Vi>j9X6)&!y91rVr|xZH*y=XvGAit|ukGH?*D24%S=R z4!Eh6XX;XCqnTh@-M!UZRK9vE<8hwk_Wutv+Amn@FMGVAB8fyg{qJ^m)qGI*^rn;~ z3Hh3yrUMF2ZadDZQ_28E#cGk#pW#a2xOi)C zZqb=-9OaW0;V@T0*BEVHH5}aTD@&SuBZQuH&TXdUawE8&XORP(!|pea6U4(gDuer& zUnOS9i>C{ms3~R-msouNCTFm){Drf-))Ek6Qs8sf#VLJgJHPh8fOo%XpMHqXy=mjz zB9*;qpIk%bLq^abJE22niyA`6!p9HPQxGJZ*IDl2aoT>LsqQSUIuuZ&I(A?^pxy7HN5_atEp1w&}tM5BVue%>1LrkHy7gtfe+GX*hWJw>!-)fxG{> zNccesgJxInTJgJfs1FV8CZQt4!gQ1*0L2V4R)$s5Hx9M~T18rA)eQlWHo zB)oQ0q4bq@sOuHU(6)rNkU2xqQ;p9CMAI9-56k0k1E1ir=u_LZH}tM|J<#%g;ke`< zf6hKKLi+wH&NFhD{8KZjSunNHYKtIS-r$))ZgWW`_bA5nG{xhj_`l=hYFT;df-37h9YK@6IOLR4v*tb z-DoM`#PMofVk8vq_2B*knr?Xe^%t?eD+JB~?BDT^1p#aeg$Qv+?_pTa=v}<^Hj2sQ z(cmudkbx-Joj9hQR{eVJMo~)(V_8~_zWpawB&czLezZ%3IhKnOd%Gjc?MR;HT3xr+ z-?WrJ?|-?Y6P~yOU;)xs-@nt%yTQ2qPEG9|I&^yddU=m?!wZ6|>06%q-4{By9*ZbB z4|8vn99V9pKT_MLc>Z>`@Pm>D1qXq(Oo@9vFr5iIdXIZgQeYCV?K<6m!~CfsC^+9&K`Sk+ZLRFL zkdHq9lS<oHdIhwRAgh6SjN&2Vasvy$pwzs(9eKQj)jzwi0=thd6L01l z3p2HWY^OUv{#LvxczT~~<&$A^v~)VtEwlw#IJ9>vidFSNbK7jTw@hQ=MgfB(*S z=j&t(AH|-LQ@FtvTeckS&YwxuSKum}1{Orm*?lfWO@AQDb&;Jb6%(qU#OFD1s)O z{k16z-*I06IbN@oPO1TzSxM=h3FuCpO? zS+y&D@k0OlRVpP5`cV*h$NLh)d$sARhLv0Vy!nLfJEh82(cKb&va`nrsfj;cToZsZ zZZ}cglKV1kIsoNU6LFRK0FW3cq%4z4U!-+(w8>Ylery!?6*3Y$&I!B+-@qeO>STR7Ug3*AW z0mJb7U;?|C1?wJ4MnJ|cDCUe+1gvm5z(Ex4JF#2qe-FaKTqlxYZB>kqG53KzR!s z0ZoyX`1OAA_lN`4c8Y+3wy&w7D3u$cO^#b6VqVN{( zt7OZl0}R()<->ou^)vg#dX25_9o~%y?9%?$-}t;@>OURhNZw>F#V0&qYw!7EJ^CfZ zMJ#S&NFlDvgy#d%p?pC}97+$D`j_(H4(m}`Oa+qQdv~l-? zaSWL>d7f+rs>cJqg5TnjncJ9mZzo@$4^%_=#Nx&;)|a*suP7T;;x(_Zvt8!I2_L;Q zWJV#8-cSrpTiZU+EvlI_;+x~PQSLUKixT~Ixn~0(2;cC|3exim$u@f!$Kq-N!ho5_ z5_@T-18pVy<2J)2FE{DbnHr++$T4~;BO>6fkaiZKIvn0ZF8kxHr##F_!EbEwvM=o} z-i3Q(t9{i{682W{O{r~xva?@ z99CY`8#ue3$ryO+8*tgJyNZcAMn(g;g#A1cIhE**m%RT5vGq?#C`ud1X z!*;o@^pX3GE@KR_9^N3VRvPesp^}M=CNn1d(x|zWAG;Z$XBK6EEsyw&UDYEVmGj}- z^>}oEz1aBi={K3I|4+qSgM$j*#{z)QE6MT>8igFOXxLX63L%ITRVXF~?FO5Gqqsi~^N`-PkFeEy!%~p_Hj>rBW!_*`9Xh?X>Ut%iB zaUKs$b8+0QyWq%YNTGzjybeY&k|2A7rI?h_}nP$dOF`EkO|``OGXs z&tSUfTBh5AgOVd6vI=o!d-IGq`s9{4$rI9Sug7Kvo6{Q+tYK$lz9vt=>vt8>zO0?{T9NXb${=_i{@9lt>WP&+qfzMgqgrANVV7s`7*A%mr3dK#sC0 zBOY)DYGctm6j#_g%=85$ju00*(ze^_pKG{I1Gza+ztL50G<_Gk=ln{mgr&Hrox<*e z0)>DVvEh>yX}M5IYMsjRoZ-oC!xKfwPrR`}^u*UgBAco*J)zsZGqP-*2{ND;4Pq{@fS-RiHd|ZmuPnLf&R~NL`@gq9_!PGsknMb*f#QUMBOJv_h}7 zU;`fr-I2RtHYS(_csAb3>3jB?vasLWBz|SM6E~SiRE4bBp^!7!&ig)?$cxJcSPFZ( z!8~4M0jvv|pi&=h_emr3YB_e9VtA(!n@Vg%;Bmqw1L`+ZI338VMIe)|_P&Wl5>R(5 zx~qy{S&oJ;514g{ND7W%zDPh+pEI-xB~3ft|7V3__;m(%a@YIDa25>KC}7>bK3(T@ zXkdCLvw#HH|6pU#r-@}CK|a4PAK066CR!z<-_d%VPYJnAG`A&|wrtu#cgntt7+i^t)m z;#Yb#2vurzR7*+TsnKz28Cn_yRK%}cAs)1EjY${OVX*&n$XAE7AqSMh?=lxmwL9GY}C%sW0nUScw! zHL_E4ibJ{fbtNXN+Pn`+rA!ynyr!UMGttXd8=?Yt!RF6Hp)NANq|mJS`lk?Q{NCis z5KCt74?FUE>y?0s7SAZhrDKH8+o?%o=RpPIVa=p`X`{kUeiERcO z`8`L!)yGfm)tH7)e2oi6JPxbBfaSAZ#dr|uQm8Wc+$$A>w>Of2UaI;-_C~Tclc_*g zk$Nx;y|l_~!rQB{lFE}~#j=tX4C8aSuV^R9B{9+ED)c^WV{imG_8>eaz2Ve0`p?Nf z1gPOb#4Sx8r>o8IWMP=g3Mv6PRC0ebd+(|oKJLy;9+9$;nz4BQ;d0Q)*((^l=GB9)j{U+p}e-Id>%(STyp8UfsSeFK*MTW5n`_ z_#rfvmB-C3(m5#HerBB}TP&7SZgl%YK!@`i`Ry4yObU}}XSFd!3^hP;$~L%Hsk*~+ zuDO-LoV9*Dmc*%hVkYtXjUX|(c?r$W*{aV*{h`4HvV16FH^$#7LMUZR&Avz=vFs-fi`88* z9HEX*hyAls9sU}2Y+p`HtAgI>=>uAnk0-(rQ=z)FM1Oh;vRYtL5c58<*E)j4Z>Hjk zDaklye2fX5&hKcT^YACSf?qOQ5y)~A?;5htH{d)Go`|VyT zw9jX>ix*|tJcCBF4f#u$rO^;7*=7RK7k9@Osjr}hmjW(u7l2Px?2_AEfch#J*;2L2 zIY#5-x(~wz{SXGHWr60QO5cPN2HUS!DI>-beswUBWa34)06H7uTb!l&dv~~a@kOB z`{`y+&2l)S)nzvF_@we>E9&RBBUDkBVuS9Y(Tq2K1bi+$yO~|VzV4+--7<<4QQyT{ zK$3>2*qz|4V(bo!aa5cKiiD!T zX7{wr7p^wB<8S4Pch)S0SBnJxiXmzHYM~)StAZpNH{s5Yii5C;)SJ&)Uoj~Ki%+_U-Btn%<9TR4sm|^t3~9$Bf+sX_ zPbfdIX?(5S3llcT(1fU9tJj)LHJD{H6=R7VQCrQryMV=ZIsFSaUH3LrgUk#ST z-W~j&M>h^g)uTo^93MlQOvx5-n&(+1_)-0ctr%GA(7@tUa%W9rj3(O19;}SX!g$=ujxd^<)INR3`!GNc(r}CluPufCX{% zk0`tEPVjN7>nAsda< z-BBj}lC}f)LB)CeD75nBb|8LeC*g=m=4((8-cs!^c~^|9r}03Lw99xO0L&GwCC}+X zDtUjPVNfoRq0}z$Ym!Y6MyMVi%>*?sd9YDEH=I8l$|=w#Sr zzXw;MUK$K_cYKJGAcH*iPbAp8~2&7()H@(HAQihD;5tSlwib?_#A*d!{u1WLOn%)j=Sz zE1o0*O8Dq_&yj+joP*v{fkWU+S;|-j$<<%;;c3JH=dNTL z4*30k%1Mk?KXt!SCCeKgIJY>S8(G zGp@5>(us2-T~;IR^agbBXXZDD(g;xj&7dlN<#ryf1x8|K$AZ%n<9pJ_(Icxuh-Cx)6%}60nuQ_%Z!990> zH~PBmv@#c+Zk`BGnE z(z5QzfUq0jfn=*jgHC?AHU$}^2B*a+cfm<~hf*OYbn0rSa9&G=HC@cl_gwZR3ZKIt zIBzA|IHg~juzfoY(svmy!#PnI`f8;Al>8M(L{|`<9(Fut2_L!0;c*y0{ez3iV~)Q( zC>9?oykRL{GmGyOx(;_8@>eg3v*!p(U$l91+}zWfnXR_7>PRL#g*QGsI5_v6Xr|HA z17=UYeBKFB4gbefnSFXqYjYt9)jMk~Q&(|$zSf)l819qL@33nyyy39`uN zxga~SYp*$!Qs1OmQgo;<1-Q#jE%z0V0UQZ+z6VDTA!E1a+E~=hZV>OMd&G3@Q!oqqKWC zqlt=B*QXbi=5J1_td`6J7Qdf3OWRJ-s_^a`LWE6Is%JLLWi1}#LkF*Nrfa+OQ(4Y5(q+q*gA}r#XTDSrylt^T);qx zNJAdBQkl4g?9mL9=A6b!55ob2QUi;#cQ0(^NQrvT3D>+AGH}$5?pLMO8R_Xpqdvxj zo)D(W)CQUVh-oMUexG!jqeM^*EQy@+8hSkl04c8~(IvFw}V z@56JURYpqHW0saurF0HEla&dCnj3i>Q!1t(qrUQ{XM%ljrm8Pbz?53YY|C#`zkkSN zsJM)f-^cVwk6TN^rkfd9Y&7ZGC6omlK(Izl{(A(Zoq+2VfEQx0OIdF9YAoA>2{_K0 zRm%1Uh9Hv(vV22RC$9MX3x^a($t(`P-X!)R-vLvxNeOm0j+L+sa42CI`%P3yBz`UY z@k`T=YEGSGmCK5aW|kc|`my>{&}npjw8&i;-HFBT*0m~^47X>*0ec6Pmr0boJKKx{(|V8&V*8d8l=fkhU^R$ z&+R@Lbiv&Ookl!$esh?$nkIZashLf6UHNQ>Wa;3g;hWPLvWp0{S{sDgVD05JK+F3* z=(c^fMHnwXy!TgojK*qM(~VZcXfeo`R_u&@t+fs_o4i~jm4HaQ;dIzUS$SfuWIBJO z2$#jy<0vel#GsNAnjlo0C@9T-ZzMdQF*Y%l(F+wlERIatAH?u3enEY)Ol7I?##emi z2vX?~2SRw?CTKOfcwK_Eq+6wj z{ylB{Kl=hSg#VxjB~A1P_}UM;Pz=rv2I3!G_oWKP)sC1`eaT3=-m{|vu1p8BsP@oA z2LRMdP8V>JfF5h7;<-Fg--<6hGu@p6k(A)LVqCAfVEb2=JlK*@$`pG1jQ#l>4?YPp|5W=17+%EmzaLU>td#M1-k5d+*%^p(yG*9by4iEMEY3&4k5%an<$ z0Fmcqz&fDg#B7fp_At2njv+WR#>3p86%i`)7YHL)PB-IQXT}cz)ZJy{=_L@%codLz z@G*8}9?58ac4E7wAF2@dj9#_!?YV4X8^ld`rC1I39lWHZMiJ<4aGv z<8-XgV>rj;f^t}RIIN*bwPYrre4CCy<3W?A;`HnZW#JuwSBrZrPWv;-fE5?qL49G@ zA1`XvlyJkR_=n{=kJH`xB(K#f#dEv?c$n(6^=L2a>}>3@Jp76l(7tOkokmo4qy_Zk6Uo=cIA`m3Ml{j7(`VBR)_L6P5*x6Ru;O9&!C{ zV`k&GZR}ks3%ySwq{%Somh)u^^@I+NU5@s4pNo}S6Q2`se+S40hSGqjfR=8 z_TN>zF5LKJ zsS$Fe%!L-c^#ezzL^Con`> zb(6%jM$+zI|H!^Qt!m0!2lO(QH~-L@&pKChr=39LjoWxymzY?65nI`Hm}YijavNnX zxU;;h{A4t2SMPVhaR|J$-`>_#caZ0ji;y8eo45fo{K$h44mbnN2xa80b9Znk1hu4w z=Nek}1cZIv7WZEgS%>`S%HaJhg=lbAWg~{<{-6 zqDuXM4-81Aa1$YY^-oWL?0t(f(0~2VnYFmgk605mfN z^NrySq^Cg|TSj`;d=r+4hMAv98zF3qTv{MR>~qMcwIKp`4Ri3QmVA@{eYg)upQ(Kz zF1d3j1xvvpQQmKsp+F_3O4_c09@|l85C8Oi z7PT6*w}Ih1H!a*d@^bvboXJb zVr>LnVVxMv8RiQ55rf6Y_ebsjMeqLFEd@I_z+m1|SzWW&kB$ou<5wpmV!oDQ5moi5?jRJK@h1&kNytuM1* zn3>oR4$*`2dy}ll4Ab9UL+@I-!h%7~Cw+rY9;nc5BDfJhZG)xCHM0RLK$h;qgm{!* zd8NBen$)K=EdGxd!1wf(i5~GhN?!(BJYuz8nU^vt@(MG++aMQY@I#*s=?+zSN;G7e zcuhXN&+g=%EI0KL;x@3~Dl5jgN5(xX^9AEz^q}pB`vGqyw#*yPL`C68ML_n}%F?b! zLT&a|$~-opVl2hntHrthi41Y(Irt|0CsP(P18qRpl+(lOx@NGvx&Hm?B%7m~^EBf_ zfv509O7H@C=21o$5A#vRM7o;{*Ujq9dap+&?~L0z_sk7;fc##nXQr8YR1%>qU)*$~ zM?W*i$!6G9^GAx={;A|bZ(1#2LLUQ=nO2*9!1Ho|eZ!D^?>>F$c`o&~otwSo#@3vE zMLwRciKI-vqo+cDGrGICw9D$~DYYYW(RNQ;Y379}iv}2GHN9TXv*X)g4fr0iFz&dY z5*H=8LlbUC?%Mw%vceq6T-nTa=bFhjSdCVgJ}Wb<&Og#SI25Zja?thFV0{1AK|A28 zBcJ)mi#yG8|5TeRYujshM>(DOVkDEfT;5y;ZvtVzujyRx?B~zNM6FDCaPc2xGRc#n z_{_m;aI@@1>jFGM(GHk&%|6g#s;|$P`uFRv%Gkh37W1(u)nQ|;VD+Oy@9dKti>QfR z^_3+v)mA_l3z8R4TFvNEp~!v;=SzGrh-GuG&6lBN{U)MIA_K^n&Ko)_+5i7z|1)l&AwlN3R3W=u*j-}YOnHTjEg2^BhuTU& z{7>zLnB-Ch$}8&5dGrH$!)DV4?FBzzk4cAPaVI2102$jrmjB~Y3)7dDL`rQPMnHh} z`~MA{$e}1z#_ua0oWnsdg=a%nalEkCgsHAW5$0)or&bTj+nXp4_v_;)NqI5_NEg?@ zdvAThA*662Ul^iO5s;s{=;R;4kE&vi4O5TDsF+D64Yw$6UfrlNrz_qx#M1`dMuNvkw<9dB3~fQUmD1AC<{TakFULMTBZ!Amb-96juWB zCe`-JImhCp#PYR zp!C<0a&lwMFkz8T>)f1r{y0app7=HX^toE6aI=#~Y|(Z<_p(cY$V+LKIuYN6kgq?Z zkXnUm0s7*~&zk%^a}j70mwtA1+VjtJY- zZI%O|fb7oJaZ!%?Uu9azv>S7KMwb@d&cQ%)c?#nluFF4HysPaoN6Aej5_x^ijMrT0 z%2^g7c`%mrrh-V$pj^d ztkw_b?VMgu4hG(%D{X#{^BhW+0I8=f)jzxJpzejdzkt3HD5OO0bwzv%wxY59XWTBf zFY~mKFsR=syCwNy>5Xv%YUyZZH0Al&?}*r}M!JMU0_Uww#!`c#Kc<``t3n!sJO2+` zZy6O=)NN@8cXzko?k))y9D=*MySqCCcemi~5ZobnaHoI@TDX3d_q%<&NB8~7fMT3e zb!zXm*Lvohwg}|MBL)1fxH3P?#_F~hlSTB`1Kr_03dy(2-A+kwM)gVZu8|p_y$o|^ z_t&E3b;@~HX=*{+LY|}7>!sXKNQ(q};uTDniPTzbntAd*<)*uEDRdfYdObc^jW3F0 zJwLsZnF5%2^)-J!0Ik-&o^H(bI=oci(>4o#n~HDO2E17wm> z!kP+&oP_<6SW56diZ5iwm(A-K!`EnPyF(5k9&-Be{^H1_*Mbk8o_+aT8T7^L}#^DHvA(4ssVDE1f@Rg--FqluJLX6QM zl1Iq6Bmid{H-B@_t?{_pAJZ=y5Hz_Vb9(y`fu3>)$F4z|NoKqCS}TS4Jtor42VoF5 z+_SJRk(5jY!oCpfCK9SrOEMfiY*{L#Qp5C(&`E*hB{nx%ZpT{&U2X&<0v-bsi-A? zdLwo6TxK&47b=8= zC-7LXFvhmi$~{ zPsMr#%e^PZr_9+H*s#6(^9`H)BW{pz(nPwo)+iV&QO`aW{>Zw2j86IZHslqtNXeAt zQf2P@`WVeIiM?}ej=xdf8mr3v>D-kH5%Jxs= zF&7Er%e-lMhq-k74Fu;?JDw8>=vpAR;nF2(!qrK+yfTNoz)dp{Yoqajl!BxJ(hvrQ z@}x#(Q7G$WBr-_?S5<7)?}hHUPiilfbyk}!lR@|}wyXBPHakI?(_1XPjd0*1ASfsR z??z=C+uk{HV$rSex!i&qTP6pV=%X*fVM>!q`||yd-)^CAk6*?N$BrMk?{_FD9Jb7e zSLD@5`TcS?^KHY8SilWmyV-o8WGpf17h|iL01#0( zi&d-wcy*D@R7s#GcFp|Q^qyz1H7Jos2qEI|Bo_8TUK&h^AlTq4df3}+-N;mDCW|qX zy+{Z!9P{&p+P)6=HUzhdzNFG6Zw|s-d%iECFb4GS6_ z<;$WoDV69T_zUuJwI^PC359{p65TLe$W_*NC?_v~R}@ILyd^*R_HxYZ_GFK`FPRWk zYCKeVH7{(bAz$+y6+?o)-5?)NE+5)-#qJkbPTPADA0Yqdc#2iI zTLUHDL{}T&3YhJ_w$Q~dj#3s2CxrqywFQ5a3ftc6y*^b;y$n@2N^+hK+u`zh#n(FlbiCJ3gZ-X9HMsEqTCQ`>JoJD#=XRU$7az>$Lu@5#88Bel?<;5*zbj z^Ml92P$=5!dKi3kE@Agx;F~TG#$wjxT29PZiGB$o;ZFCmP)P4xn zM<05~%x=H1q{HCpGm?NCpK!hr6T#TEKk_AF1ql&>CP^{NrBhv*-{X}JoS0@$`UdP# zq6ruFMJtrJHhE@}xI*7I*>BX4G?2AoH*~#OZ*;|5Z+-htlfZnk+)Q*l{S4#0Ka2}u zTXgKWSxGvYkW-0_^l}*sw;ZTGCI#+%z(AH9Pm3pfHh3&`LnxKW{6rvuwApO+C6{0m z59NEA*pqXLlMFU5_B;P||J1JqYiIdvE(DXYm~d#5GMOZDmYyC=ip~!IFnChp#PErd z%a2_OD&>Z61X+T`j3Cpqw}X}f3{ENJ&k8@}uo2zGQ22(xu%Sw`2ULs0B1SZH{|m}+oMC`FAeVVZw!jhgg!p}{%z$#Bj}8FSS&+Kf++oi`mb-us$i;#{Aq*&@N8%AkwW+jkLLKBE)T!4{Un@B7T! zU!)&7JFeT1>L+dpeC6|<)r%wLhmiZwi^%Woo98QksDZlFMnm*}xD@@wOhl6h+WKBJ z-WY{Ts3Y#M>4pFy;;(;5f6@yEi8vDovPJ}2ePuv4Am+uS=jfXxXtR&A#XcWAtxQ4^ABOaQ3%5EBW9pFBlM#!7Kms^~Zf}kn$!(7eY$?$xEs!L)G4tMJJ7+8zr&CWQoe-tr z3sIN59qVE)J1M;+S#W)D_M+g3^Nq$&l(75Z@5tm)>@p7Ea6*+%|0i@hlRhQ#y|Y@a z9;t%p3#8}e)}jX=Z7HJ(#G1!p%}RKfLQZSa!yS33WG0(&%e~$Z*4OFY2m-L{1?!~d z&*%Y4K8@=6Pqlq^6-X0&Nlb69oopcb`DRZ;?m#>i4b-W0R!xB=tFRvfsj;&zcywhU zh}U-WH*&~C?1=Fq))8HIM6uieMa9ojKFw=#qs+MDbQB?R+ zczo(PZ)fViT_*84r(Sf^G8b;vS29)mKk>cDA2L`BMt|mYw^EZ9OzAq3^lJpn9qUr1 zxEOlmnE3KVaQ=4jx&6&zPOiz6S07W&kjD74%mlb{Zo*z0dLDR=u5gbqj1&HKZhOZ{ z#D)_v`%Fg2T~pon_wD6=zzak6T~A1E%VxdJx=hEJgIO{b8*^lt_4~0imyI$Kil{?5 zGToTSYUU-O=In<*mSAFc4Xw_2B>P!+_6=%c?hwBSkwNf5n&F zEO7G^SluYOorz+<#K$_*XFtG-7zv6leHgD z0u^976&8hPNt)ewcBAbHGG5f7a!?^uYUcMx4(XqkfbiQ|fs^&x3XOw=8ih=9kjxZr zf$>zfq}6s!RgM07gedN`RKLiUO4&S~!zD6jq_q@(k|&#j2y={3#Ch>AU@AY<K??{pY;g#=Ihrb#1E5}XE}I%HDWUj1J93Dn6Ook=x~ZkTb;HYwHoa(5@O76 z6GvjX-v&Y>mwzTi9@|w|8=|1sCiGtEEzDwf z&*hy*AC9dTLaVZqP1hEy7+89#ne283ux4s@}xRj zYP0yUSC~cimj?nXdRw73M{VZIk>#?uU9nV$?Y>y2;ytZqi(2HBkD;*3{*ml7Iprn^ zj7>~VcQ$P!Pp=OiwJJ5#lwrTVlSFH)#iH&$-uUqz-yq`jL20Y`6++Z zJT;?z_R?8Xn$)a`3g;*~g&*{M+~}Zs!5 z@_hI6PK8awXj$h-TGQz_?w!@l;jKZ>r~|~nQ%QIY^0Ypy`L9~-0VN%qo553h<&E!7@hZRaQs z$CGDtPjLxSD&$A%^t;2WF2dA`lZtO*Waqv$yw3(I5%Q-c1cC-scW?O97}H;OV;8WfL0egzaO^jcZhHWqjCAIl z>fKI@bDc00ELmo9S$($mnp0XE=Ocf<0nh7&qw&-dwmvdJwN(U_N(y~m`xz@VM?wg^ zc6_liKEwQZn>bPs$@dE8U~`j;a_HG#mU9xt%e($QOdB&Yt4`XuwPE!( zzK1DjlSxoaV$iWTxFWhB_*fKHBbIC;Rs>t&F`uMk*|77+S`x34;vw#gT%$=iI-`ZW zJxoQEEDqxd_g3Zj@D93WH8>xZ%CoPSjRU4 zaZ47}_Ljv9Qo=jTyiQ^KX!1FS-Q#tr>c;epp}Z6$l>kK*FVb@FZVaJsKax0LM(TN`!esX!1ZTU^MVPaA*3*UWe@jG0qX=;_6lbC19OAT;WEDblV1Cm zBg>zu^iF^OI5$S5Vlx8l))3Asy=L{CK`?If0hH&Q!5u96y;#=Yy(R<--Uw%Sh{6+O zEax0aA$E2;3@49IC5yX0k7~Ywy4&hgn1lLp6-H2*K3t1z z_$vo?A$u9R;Zs3PcBEJgAz2|A2x7-QNzWeq7Jx#Z(RqGz$^2!psCg5=zekh6L7#DGTt{2GcA;tpttNe z9H=b68x*MNXF(wUabN+zX%%E`ZGT`SJA?ZHT&kn*&M_PQb4f$4S(lp~={rYMK60xs zz60(h2jf7P`o~j4N)cZB_fy1uZyuSt`qmfyvH;-C>yAoU)dPx@mP|R~j?9-gB<46$ zv$ez{Lf5^J$L^u#l2eA8wQ^rcAK`zU(n=B1#m+33G-?!1%(L+6@85TS51t-+JQC>df!yyxv zTMM?>kI-%T1p$@EQ?5j1Ca1ONf%3qWs(7GDmSrzKChh%T8Rv^i=XV%&4Hfb|jn=&p zhA*%ibieoj*B{=2Den)E<=HLnEd<`Cov8FzCs3W0>;VJ_r8rR2Mb_y)bxG#Mc-vJgdH#Ia=(+CXZ3`XCb3) z$i!DD0ngqM-;I1bM24WZu`FSA498d5PdxXAv`qG^(8)=3Xso^2FI73G2E3K#GVlkR z*`2Vx47#MOwO_Z;VQ&!CXq;xGpJJB5#rRibVlD~2iJQs_*u@(C=GpU~BiFy8v0yU# zwsZ=!I;JF}iM4mEYqQC$vt|X76Hpv+gFiI}Wp35mEZGDhrv01<>7)FqP-tzpbkevl zy(Z=dw=wY?jJlp3NqL?fo)n*CjKFeNcD_d529MPgs2FbqqhPGqi5gU)>&r^%NPn41#YxxOwcR5&42`JH&IJxWWB z+DlaS0?Qe7Y(TH)FA5x%8eSwanTNQJa*4EoE!fy!FJVDXqz5rLjWQR+e2lm|o0NYa zo?WTm1zfP>UCl-eg$0WAV$9%~1vjwMYq<%gJqfhdCsCMC$pnw|c~?CZ&EXt!7p^1F zZVhJDc+}_&74fno(K3h)TWlC1WxnHxWnMUHqk-E0zK@8>0?k*+O`q5q}^sv@kzG-6rqv%-X#2#IPBo5xi8upYqqE0cgZ%}3O_1~{mOj%v;XYGOWI**w==K^~vG|act+*z-b(?TB`9|1oK6#m58 zbt1+J?kjTHY%cYVhIC6}5Mfzev-fCvJe?zV)hFWfkM=TV$p99!KzGz@U$gk8zsPMaM>Yy`p2kBP;=8Q@2wTXoxnlPdvr@0S z_+!kwR$u2RUKCVy^r;r;1f53Z3Cz#{jK$8fQBjl_j#v{pI@ZrP3!nQ;0g9#Ayd)k{ z9>^DQl2REYH1hbYuOdLf`LAkAzU9J=U2}8h(svrSavfuGXa=)|YfYW_T8pFY53<_^G8R|w z#%GCLS9N=13OG|>dZH*D`Gh%}S8_(@?&`E6-u)VPvE6D-r@mUfx;PfZ=XALaKF+jw zT&y!geNpuL3@J5Q<9!WUy8bCFo5~@0Z>L|hv3uiSgFhz&OW4a1PDjzXhJUjSb*>ygANxya~y+gJBB65EIx=I9E4ty*5kOYT2E zm>}P!e#I%ZOJ2Rp;-}98d8zu?+$|Fd2LC7#6~;YwJv{F?S}`GJ^pN(?A6|ZiqARI- znJa`=~7)N_7=m%tw`gMK%e0pdvz}^-OomM_?$eSQzb+W zT;xNWr%r9Dyov&w>>?5_ZCIUqPhtEQ^lsf!i|G3Rs6ks*WcnaF-s}ldjz4+rA z1|pO*T&mB|hxvE0WQHXJ-2|2%?lE^}jegXneJ?0HRjMGV_JMaoXA!vSNa_E~H4e_y zXg8lpi`8wbNbehjIViVtkZSN=#69wHJs#h)=TC0^G8mMC8~8V&=hM?dd=5_)uu+qe z^>8{%95}I4T1?FW27MWj&wubI)#?9rU3w+^LDoA(?w=wQ?>Mk@6b!!=dZc^aYTg>YY>wh%NQtAj(kuqD!VoNd-_w!o3xAaLhC zB$U0dA`r*!-AqUandh{TxLH>DxZB2hP6Vibron!X-Ye{Ab_UShC}P)j&>YwK1;R)? zNw4?8EV6Xj8DjP&it>!>Pg-Riaw1Y=M?KbI!52tV3>~s_&Agp1R=ATOdVjisN-o`g zo#79tk4QA`^_+ao*TJ6eBFbKh?>Cnc>Np1jeaM^UDW(wK7_b+UGVh6kw(OZ4ccY}+ zbddGbK@AoV*G=+p9L&_J;K$6I1UlPqL9ER%w*vETJ!gQMCuPct_kHPsUmG|xXFdj? z98aKdp@+w2b)~#jyxh+7hSmygK&WeW&z(hor=h2 zs)|OqZPTn!z$O7@UnvXHuw1RCjun)Dnjw%dnM9+Hx8h?X(jPiAO0s-9@J5M z>3Tb%e+)@_NfEc&h$QegQSQ>8iz_s!5k!5+-?DL^B0x)^4L zg8fBI8vlB@f9Y%HEB+JBENY|CZ6s2PVVtwm?I$5(gTG_ppJ$%Mej@3dZ|z3}$UDtl zEj`Z~18t{XX3Y(6fN~^*fV}ll4%F!tNyfUA7elwQ_jPt z{WLg~qSIsLv0$~PyGpbm^EvA^&Qv(hT!!HYCGNNBy10P6<#yJ<)MiRLiX+^=o;+mN z&yT+nb5+d;nToeU_seyBc8^Q_{*1uo$^iT-AyJ367&0EwZ-Ct)uerpu6=WTm;;1%m zaNt!}VQwY|2`B{>j>L7wOT==w+YQYo;Wqz?yODUhyVyFX90bNf=>1g#(?_@>>NpFm zBk6NOX}9>S^4QC@QnvrGHB^vhMu$+3tN7M^BM*%VZL=RJ(9?e|)^v9Eg%_VZF0*z( z+wFdr4Ec8le#aBYwmm|wj-^+GIJYQJJNt$ubef{MwM-Cj3PbLJ?o%F%x} zF6QvP4WHvblqa>hK@mbEOwmA_^&jyLTnPw;RjqFDsb=jCfAvoL#Pnyza6WrK{%Paa z=o$?{rk@%joDnB;l~{sUA&wZb195_1lU^p^oxdL;`@L%HB|kDW8kLSC$qD@+3?nHe z!tpWl3lsU|_oCF0O2_auum1v&8{qwd;I#}+p!}*XRZ<{(Ki!ZTTUXos4~#K1#EvFs z@8=SKyZ`r>TF|dCK{#TsF_{Yg1D^ay1m>Y1i3D=y|BGh+Kj6qKMlelz&1k~Y`+vif zzbJPdp=&OdrakC?S+`CkH~f6f5^|7%}k#GLvq8cs!pp!0=&@AtST+y24X zS6Gl=LZGizeRBT%_szXa{`)tQ7f_Ry1c_)T=IiDE`?A4*1b+y=^v_BCk)G;dL-#^KJ_-5sisZBpx0@K=f{V-hSTt zUmRppgI>F1)ps2R;KlkdziUE%f5tjXAsZ^EqVObaXN+RA!xasNqfG2JYR^DdSEehO zQWA{$>_Krtw>f}6lV3y3dY+`)YJ)2pPn;qCPAYcMA`=a%oB{}7Q5$U4m( zr~q@-F2~oy6EZ-_)rfNbm-LlX^Rpv)fZwqUc+0Kuivva1an^#?WfryDIO9R<^`{C3 zmLj8BzOFpZLW0*1r=2oGpjb$d>~7|xTHWcS%<3#Jr$=uk<^9@A*e~#DK<|y(Drwc_ z!@pqN4*2hj*u(!1JD?bPKAES=`<)vX0ET1qQgYkTcg+^mjgtKGAz=NR~=GW^fB8Vwgx+00ZAO@vPpd$Qz3~97&Lj)x8X>57!;JP&lsC2XW$v&((*sF z?m}o9Si@SMcdKPM_k69+x3Sk1=#cybhjppXTJF5Sy-Kq!|2i$VA_hYva*JB$0|B#0 zEw$Ye?R>XF;`Z@ux!K{nLml+3Yjshl%Y}$(T053@amZ-4t~+q2pJ`hNu$GeUeH{02 zx=sL4&Bq&gx}BDpYqw3A^Y$or9|f)V&moh{z2-lNr0uB^iqCo9Gv{$`d%p>oKdIHx z+Jm9RNf!~%V|RlW>VlN*sk%IKzIy*Dfcya%UGI&4khi^<$vXAxx~HH0?YFj;yejO_ z!D^7cCi1~bDYh5t+E{th@??<^K*Gd_CX&p5sSX8W&Z*gFL;4@J6nqbSPx_}ph_LCi zQ%=kIGF!CGZeO@WQqh5u$iyo!*Ahp<2}%F`^XdxGXf7`{CSOwKz_1V}z-Sxm5ZrbB ztN{OatrzZSDr2Pg<)P6Pz=F-7rVNvOwKr7FW^|%FezI20nm{ZXn?w;(>^?6MkeV^ z4h7|}mdk@7eIp-{5^|G#c108QM?Uv!28OuYaC&tYDub49KUO&N7+Zz^NmFoxH6?e& zlSHR8pMTo(oaUO=M}wx;`j4K=;ykm`&ku+_KlV)Zx_qFVO(dk?9glWI0hOBdWdlqd zzpv%ko?d^9mH%60AZZ~XD1$cf28`C1WFGIkFO%8DVK+NnrLzF|>?T&#*4tE*L&5WaZhIHCiv{-Hv3Io-I}%xTPy#%=3(c53aZVa9Vhn;|5Ob zW=x!@gC4_z1JA5L|5oo{IEa8%siFgI#)P>50y+7B{$myDL^B>xaM8hPv*S^dzeO%5 z*V_iqF>i|><6J66lBMY>pWiX2&zxTTRq>x#Viqm|HO4r)y`e`w>0a3w(@l(Cwj-j2te!vFTCOWJ=YpiCMfsUE-1rYJnty66?q`y1Tw zGaCj0r^T-@8Bt2fo6q2(F+w`4VRS;TbdhWIv(?tK>u?k)iQsS-yUDPX-9{tc=_1Wo zMy-f+o1J!}=T5-uWriWUk(gm4AM|qY6!!ki%g>;}j`dbsutAE}w|pl0`@dU}M5~=6 zOl-C*#5h)jJe84PBQ4WE4axX|dzM`GYEWSNtr753Ki@2^`N{+G{JY&vmTcBQBx+3< zgEJASNU}lo<<;wKo!eyzpGm)s5Q8#IvO0Z6xzWV?mCcG3EwkkavlH8O1S25>QHCx;gw}dAm}@yBAH>dEH5!RS--Q5 zBBYMdMc?~F741iwA+#?%wOmum{LzQNGuy>qpS23DNzxe|%Q%`f>utZ#fATkL8?=3R zN537{KgOab+4`4WncWfg@SGjy>48K#i`W_(WXX}?t+{~iGqEEx*6a^0_Iv5+eWfpB)+saj0g^HJQep zVG|b#zTJaK|7WQp;!q@tRQG)zo7JyXd_F6>rdVb6qeyEl9#6y=T>8>D?>8U!tG5TN zBnEZa+rMil2crsN_n6Dqf6v%AyS%ZW;O=V^+4O5O0WOA$=AreF`jIC<$g)3MIkR5o(v{6ip@@Aa$TMF_9bsmxAene3fRo| z@ee2RkQz-!#U32=!TZ+NTnx|Vf(nJJcpmdqHk zo1^P3)@7%6zb0i&+ew7Nr`j(l#D8?yC|p}Fc;%no)lWkoY9|2Gx@oL+did5BewZ#? zPw!4&_Vjz4cj=6rNC8wy6(!sbx+yM2vUg>tlE2>;0!vTJhg^ zeoBkbN;!gT;c~6x57_^l&1D~b*-sSySq9U$`>AWwRGY|Cq-fw5^O$w?POmR7N9@L5 z5tY=k^vxWhr1eOX8;CK0VAQA^+*weh!rw}3OQTak zHZU+?WsY2NX-h;F$+BMofbm=bSg9oTl;As~T~1g)uQlsIJo(}9Jor(~ZoA$-q%hyk zm`;x=ZSZ^f5{5!Rob_XL(YLn3;ORhY|NF!4&0ISEz_4=h?m*!^M%#RM-v3&ec>iq- z`0(Rm^*ap+W-KKV(Q$*twQLs}wIkVIfZvuG(!!!eBVq4=Ry-UVk!WP|z#?(DD(Vp2 zv^av{k&|`j%^vTm9OuM3Yd+;<0`6caYPeIr!N2u-0!q+1Wb9s#_!?oGOrsF7!b<~?-8P>6?;%Nc`2OHBtDxQimsc!JM-ztDTY+N1Q(?0c z_@ydU)yw`uvV&5hy?^n#HViTs%pW1Dcp zS@=mTSs&o#u;lBLi$lb(@CVV=LGZ$bczrM?Jp}9CS~qP=!=`wGTq8$dbvPlkdvw_Mno!w-bn#jwe)K!4+1M*A{Jlj{q!M&XSjRyv*w-fRzsu z(?(M3ap0hY8BPv_&4!@2gh($8q_6%=M3 zE{@XRV>6f}g&IRRGucB|%l$Zcl3}6dXg;X4D>|Is?S!!L3}Ms9oDA1B!9~euISd$_ zsSMoJ^_PyD2lYeTa9prtkq`JYx}~`IWKYffJN#tw7{8 zb5-2NUQjgAGCJw}ZL?v0ZaZj4M@>vmJMe^_jjh%&G@A@?t&5 zADv`P7oRO}>Gs=6UdcdxhLerf;B#K^uV^u_xU0^X0RPVik+b0B=WL+#!n)-o(>6{m zF4QVm?#V`_YM&{O`t=opDT3X!PjVH)RHfTbg+RZ6LZVbcz^M!Njxjp|j>XLrmL=(c zMelk<;iqke;^WN}tJ4=QRkFZ!VklVDfhBq@w?T68C*@Z~$tIQBuA(o;_bcb!KGkkv z6x>iwe;SHf>-;*L_Q)zhGPc;0dD@dPC8wvDqrdzpzIH&PX5YD^L_Khd0D?Z$_6ah1 zq>wYjB!x&t{0h%YB@g$@3=~1Nu~uS4Qi7mU9Mfe}5~| zdh3+8pm2Q2oS4F%xV3`{&3c^S1V{k=R{9McwHFUC$AwO_+^R;hrS`bMhJCWL@NUCH zzmGb-tQI!e7Q@KganZPoO zHA*W-e4_n=P_y2kHzGXtUAYX7muVu6vBGzAqsN?arGAHwrQ114)X*RUQ#SG>iW0fw zCP&r+T_Wu|7d$$NA+;i$P)&=QtEJLPpeR{r zol!8yQ6QAge-(|qgeLJPicX{IH)WC?Umykv;-S>$crv@&Ic&Cci%3AZBjur$z9J+A$59Ys?0w-*+B17}T|?x0?TGFQ498ONS}2t<+hq+Ak3Kl*lSF+DfbMqBbpHL&^BQt#zXn z$Hnht zJR_RY%BqbnxlfS4IzsK$FyScsXyiSdS;?Z^1vY(iA9#O@9RBVUoOnxs2T;m>g<5Yp z4>F(9+%0O^((*i>Go(w|A&evD#(jfBPG?S;i&eLyT5r3oT%lKdN3KvRzyPi&^uFuU zEOFbenm$IUG{tI@5es>JJ0OF1h)g7Qe#l$4T`88H+b$f53PIpS&17@tAQkOOq_`33 z+&=kHb5um_kiT?LJ-d~LvDcl$XN@S}d75yIMN?%S84Jc|x_W+m35_tSufa3f5pp@K zT=GR1aQn-I^-js0<5iRPJa6uJwq#wX9%s&}jAZrCnCa>a-bv`7LxCC_iubN?gJnz^ z7Lg2$%9f$UT&SG7q(a}>!$#j9%eWi^B!?*$JD-b>)8P?K-~H6%pC{u z`JSwjtB;5mqEixoev70(FX$%Cwz8NxmF+0VmUuC28!iD6@X=T0U>;XoJOP~$T)<^b zV@p{vSx&2z1a`S~H#`Qd?Wd>9tjK*w*J&_9=;>*y`X$D@+6qM5OE7W=8@3XF@=r1! z08Qo*Ot7e=!CC!t3onh|rMm>s2zYdO1UeImcpYMF9gzq^0~hoe*3!Y=CWR~Qn_aO{5SHh>c$HJrfT^?8m84e>e-4EOaS-x91R{$75)7bY>XZ{cBKgy3* z*;GidTnL zthMoy-ZX#UnCbQ=_k~V@khe~Y00ssXxC=K(^L;d_GsNrDCk7E2i7#s0-5pzT_`-^d zN%P&T$G})ieR=w(^#~VR zp4wgu6WJ+X|68?eaBRKg&~xjRa|tYiAK35{A<$lzbpv~KQAoG#{Hw@(Vb&FxgT)u| zp*&l%4+5X7C+qa{<^ef80>R(|OHIfaQL0E3Ep5IkWhS#$2Q~=sssw}3wc=chOuGO9 z6=^cRFFN1+qB)pazasgNJB%+Cdvv_JhlS7IQg4OCTbbS<*PdTo#l-aWo2D_(#Uu^1 z!jW(wz$0+_t4B}^wIww=q2$_@s^o+{POfKi#I*cOf4#SUu z%xjRE+vy4tn699*y%DHJPf=&O$Y70K*6K5kSgFk}(p%%GR0UF%rm;Vr%$q*vDEqDS z%E7%cSLtw919e6?_q${mA;iIZd4tuw36m~|Av0`?at57>+E@de2{$Y4WJOHVdt!Rd z+49dIjU3eq#i|>51TSQ0CCRlkS~(lPw;3^}XVWS~>}2!CyQn>JGpKZ&$MebtkSiKuu@+c`46^z7Tti-!fsLM=s74~gHC9dnkX7svQv2kzau7D41Bsiu>a6+yR{yp zedbzE`ARFVV65?#i7H(5Q4Z?w^qXhH_7^wi9rp5*LUiLn`v!O^Y zCVu82?BQhu3Qy|fIInheGqdEX9-J3N25jBl5V+2J8xKo7(0&{sTy_S0MvhE;Ij`?2 z;-j{+udd>L*z`3l>{u($S-YUgU>EVQAo@IR+Sk2w*kHT-c+L7} zR`3%0)gQRoJV=P5e|s|@;q19hYTytG=eXPZ)Za?`{-H{az(#`sZ(6(znU*Xgy<*z5I8%Ox(C#_ioDhXkN zkKx2OEs6OO>!Hg&!I9aAkAt7mYOFxvqyW6voAiypwG)n!RVp|2T#P6K*r*edKicQ~ zQHBgede4I1q{BR=HW&2sjNevCO?LWUW3Gf5-5c!Q(?|yC!rP4cw|1nl47?_IMP5ChO;@0x=KNh})JSJ^ei|qe3y}s|geETh}f*XdBZ{M~- z9rrtq)IXhMk3=Bb-s%3tah=y6x^FgXq(NO#;N$y8-(JO4>K5e;HBg;npg&R<(2P3z z0zVTevhJSSyl_cX@YQn~MYO%bpW&_!%70RmVW%1!A%WskFpFH_45S23N;zHp4Xm-; z@#8@PO8cP(Nc}El{w@mRLAog6qOT1N6*VxFy2;SQ;(Q|vm>6eNEkC?Y(UeAb^^?P2zr^Wk$ z=Tkjf%~_#?7O(EpN^3r2n+(Us93E+(xxN7F5+^QRZ7G0pR|*+*7z>}Mcb3#cS3!V` z^h<)k=L_3dVH{5_*_Aj+Oty3%{2dwvRgThaXl{s+|v&T6On9$M^so7fc+ z0=@)pX0c-l!-9v+FP6S7m54Bf-f%*v=e_76{;qoAce|thpAh|E#=kHkIxn4< zKmJS|2;VlScz^?L&yNk?rB8^T?*8Z^y&w5_vzOUEt)`#Bk-3RgR+!<%hpph|*q@l} zE+nzmrYw#3@i6d%YFvB8>jeCUJ?nTUF9UYj1K~a|`lVHnhPy`~%DLA{eB%Q3pe{XB znSC}}SQO``*2-zpyWhGDn-yF>z_b+Zeb=B}4+FdtLvM@sNlB<~a_#rzk(uh_Nk(mV z>b%TrTw`EXiRQy)6^T5zZYVi6_2-MO^ANTqGj`wx5yb#%1BnTnfL0aTSjlYO7 zq@koDlxRH0CRN}c@ph3AoyWzk*0PalYPbM%CyJN(SP zKIS$Gyk#$!^bp99iL8A+%}=-va8e5qJ@ZfX9+M`@FSv@y<9wC}UcMY8;y2dECe(-5 zhP4_1s%Y~;r)EMKzi?;Kv1fR^o|rm51~j2C6s&{eSFS)uJ6}5 zzu)}ZnU$GU@3q$CnmrU^bv*C{D{UxI@Ce7p(4Fdixl6bLki?VWxIN}s3G3~JuQRVJ z+Uxk(=tuc%78IoE3h$|2>>=#cJ#BsA0uw6Rizb;>nr>5DEzj;f{~#NX#0CEx>{ z_l#_s1d(G8kJhT{P7VvYTBU@wrlkh*Fy`I^b&BuHTJQ=G((R+MmTULI7sX50!!5(Y zk7Jk!&dpm2hA+9LOPpVO3=*UA1CD12t2oSoZe77Z;Fy`$QRJsJMQ3+=t&iY=SM=QD zQ%0L&B~gqkQCn;$D;mD1hh*$b>l@zDG3IytPH^Ss>l?@o8)~khnWIm1G-3vE^Dj+F zn~&$JP;yH-u@ohu4a;dqtzFM+3^ogk0B5<+qBANt){(z9^ zVl}69Ug2H>5olX_~F+L1W2Dg?}}-;+{Ur{LYx8;1P_7O43Vl?e++%*a7P8X zE9|e+ERWI9l2sna?#oJz#{5dy$wsGnUYYJtLHb0IuOI#74=te&&zlIpC^ULV{riQrsE$@X#f96V!`-lLFSS}B_tP>phk zP~q2+oCh7vid+1OfdOyBu#n)swNxWuvsWyJN$96Ld~u#xfFL^&)U%CS52(^X98vv%sDa&#yVNb?Bq34p05& z!Gzkc4O*OECMol%H%70tQiwu6v#;lkSTm>2`&ettjLU;K*-n$IF~5A-9fCDJk)dUo1a6Z=)#k z)=#fDIm^K8pNHMc@?xO)rB@o|_ma-zmHy)*hk`OM%(7rwT5s{ zne2-BrDhKx$J^OFbda&07wW<{Vx50^h^U6)u10K*{^-Q3vQkpodsO?5ycebq#hBL3 z?D3^6q+DECVGd(v( z6+j2)f<>-Du)#6@MFzM=%3a&sfzta%gTwhvF>f>(vgb!>ZmdhudYyZNs~*fTOC3I- z9I8Av-XFHipt!JpC*S3MVgb6$M?iAlS>5}>`wiQ98h@~!%8(4LK`}v8RGm{$E35Fc zer1}HYd)*4_f{%ZTg2(&RF;c4ieeBu>VCnLJ>SJ}&DG`}g@1^wnX|;qO`vtjyR}^-q|#*D&``3o5BDmJ6d-t_e1Y-*IYRpmyHR(V9aS;bB^P4R#O$ zctQ-kjs{9q$7`5mD5-k1;qpe1o($5QKWc8@^Q%>TC){aHZ+~!^3Eh9OR5HQy!J5wS zNzFD%)?EKl?s#?^dDJCbcuA-&&oRS&DOORTVQ7N7xL>A8G$bDk+Dh8ILwxtUo^8DP zSoap;p-k=x&5sV5oay!*+7V({2lEhBjBxRYY^k;k>@behHp=#E%XYRe#wFS9N3w)5 zRt3#BlO*8H8n7o>g!6#8`q;Z!=2tyMMYc}+E!bc)Quy~N?0RKA0sMUqSphE6m5Io= zx;wE;eS;bbYqlQBL`Mo9FNG-j<~AMVyhlYpx8*_Yp3J!&zJ9J9#@METjPbn6uFC_S z15QqYlx+LU>Z$mp8BYjr2&x_|(|Ma;3r0_r>$VF#pj*Zs1~Q2)F6&WVIInDMmHYTJ z`k}YA4Z zq90}DaZ+L@Qy&H>J`Ij6CdM3CQ!Db2-Fom9>p`=Q+a7ATC-bT)qoQ= z=LpRVE^eNDjd@b4oDBo{P6MUB1MTO1-NrD!unrT4bZzI!z)Kcgh&7Kg37HAyguTRQ z)%~IUh_WH4$my?+_VaIlM2l%?(!5qT?QkZU5ZFf;TH>XpnqN^8lUBrUIma1OeZ_CIV%D(1@&7 z`15==0sP~4GAR686Op>ye@XwJHSm#xY+;8s2_`~9O!}T3?oIw%rGR!P{+`B<8%?e^2&R7?hHWm+nD zP;ofL{$F+7;0c~;YCsSU6uTW3U$V0u+%NVrulkN>PI7E|DSCWpnG*Q(p}k+A28RN< zy^2OMoZ}@Cc=8Sr@!*qJ;J>PZr;yR)>MzRS`=8CT31JDe^o*#DtbhW(xTeR2{(B>y z(k6Xuv(6JWV_KPf#f-LYQ)fSY`!q4$H7~Skyweuqm7gS5fXBy2) zb@u`H!Ofl|;l>G&?%_RcYTnN;h%gHZoIa$*ti<3itFCSIf4yg28U9G&V*m85JAMgPkFGhX&k89-L0g3vq zSxpF@j26}rt{1U3K8G+J76m+wRAsdvF>$gNmEMT=6Xcqxs1sq25qxJxD`Yut zO;i!yk+zkAO{#iwBy4YAR+Aez%Tr;fzQ)_>V+E@I0#i)@Nif^`Dx) zrSJxriF$|QP)l+qE?>-RZL%^(vBLvjr6B&FVsX$^15>3-!6WRSNWZM=wo(4oDT^vJ zA|{i;&XdupMts&%6XhBWd%i#^ATt%r9j{sb5HMUNdk_&%N+w6f8PoyKP8!hY2=6^# z*5^$lGdMnz-5O3u%)!%y=_)QbgnfD!4gImG7Q|z?XlR$s_$Ph<&sKYNK-ZMC%2XtK z>fY@y(oMI~nD^M6$yro-?L&VosjcO1HWJOz0$KS6gq~T0yBhOf7Q0E?LzV;9JXR$U zDY8R!(UToMggqUDsxH*)gMKfCaTa^Vo4wF}5;7r@qKkCo>M#Dm=8q&GYWk=s1O^$3 zJKUok-O2O%(Rx#LeD1=gmdwFP(`*;uoMwqcoKUkm2Q|jO%k@y@7i#2M;V||!s#oo6 ztt$fae_;_Vi|2}DG5p=TtMlpi$M%{xqIryZsM;w&sTx4A6db(1`bW~=?P^?X`7ar( z8r5{0q^=9&a~EUEJJqk0?B~dDmlaTIym+iJYKQK)0+xy=x>qh0FJP(oPul2r1-Gt* z3d-y|hwRF%xL|iIoDBo^E~SXusTKvU=WxxmzAcH?1hWJ5MZmI^h3zgtw)-7o@G*8M z)!p&XI-ea_NuSnyu}}L}?L%a$1G=xYaw^X)zQ9nULPc@Bv<~~0g$Gj$D0#Ye<*URW zsR68N_h3aG$RIn3u(C_fu!kurC8ww96HRf_lY`6Y+9HJm5dUV~$YClD+PeqVSy#`n zu3}j2=3lLKUx_6h$lPfP{!yOVOU{F@ z%gLx)ae*9^!wxvs<)@DTc>a?yX}}^g)dMS`I(3CiO%=F?V=1hEw>&@L^hfQ_pN@{` z@pKcX-n9i2b|ZRzrpp7v{FlH`T@fJ4<1@H9{^)@Stf2tUVo!F;p`xJY8ZmKp_7FeK z!!@~n7>QxA+KHb0N+&NQK*hl%O6Fwt3aX@WS4Ig)4WxblCiHjeaL%jLw5Q#>%nxfg zW2#Uw0XDMQ_2UTBz!yF8hY*wPm6wPkYXeKA?0)`jTT@p{-^VZ5A3#=20Y-Wkb=Llb z2{EZV7jcwRI~7ID^&f#+SdY%b(fv3h1Glw_)AiUmvCUsFhXEFGlQu$gYPQl){jG@1 zbQL|WM~2liaXCuk({JG1o4F~ANo!KXw7#8uqyJ*hlLVF^APP5bLr2fC^?i6eGBP6O z(nCCaZaQlP=`3KCpxT=G@YzlI%4<3@);O=zl*Q}KwxWrq0K8GwtqM9b(p9N?A$FGH zRa7dexp!y9T+v`q(QUw;nEH7?YdUyC;k+5QzMcac#K4O$K%hlklopS*;g6K$qoV7- z_8omkL=%v(X6zIDdt3EWy*)!L?AxS zAR;5i4Dx0+W>(Tza@fO4l3)W!I1VV8Xv}UUBuXIHI~N z5K3kl5qyBiTe|M5d(i90=?=Y z0(F2*C2UH%P(?#l0>F=CKar~K^Z7oTA_rM=aV`p6 zV_?eDxmi?Nf#2#gK9L}lqnQJ1*2H|1am>~uzAS4O$LlKB@Gnd3Qg6d9UiK#vcC4;9 z%i=EZ9;}lLgI@#cf%|uDOBKu?wVflbB=2`24<_e?V1Z&NgqD8-!vJ!n$+EHLYOx8{ z8A_gOu^s(2Hw%;BQM9keQgk~YY6_{AjdBUb2C@#+6fBcQUBb z$YbKDU#ahWFNgg}wzaj_rNm?)P{*h0q>vjAKozX;ptts9@f+HlAC;FyY=dLR4Fk3m z(o03Vnev*fG}%ynOzFP;^p$~YSkKtB9vX18_*ztDhVLYB(qq!Wlwl} zu!>5Aa*$5dw;qp0bXOZeU8}Fsc#lq7Uf(dy&k0)+22tedq0IWp~+{&>ttkWro2cz5%4 z$9*EeN+dLMtJdsiE>xsQDG$lN^gE31t2~d7B!@!4uPIe+q-XRY*O}C9j6apSMP(nT zsXO)ZcMEE%s1~DUp6x6j-cVG8T#mXo>*00zw!8Hz{+eC@zF<-A{ZbaUf9r6GNK1CcJ=vz^{kTgYNIE<;EZ@-Mcl zg2DE`eivGe$NU&;V_A8TTX*pW+hKlD)%W-i%g+HgPwDdm2`O7?BWXURWr0R)#CM5f z+%=7W7ELL)b=?Yppu1=itvzTt=(kA4MAUWA{%fT5HwG?H&);~Rs}-`-O2ZRHtybQC z%y>C|%Q>go&P>A? zel0HS*TKC8u<>|!mtx`j3auKQ3>t@s~E38fj=^ypU zUtFsnC^f4T99Q=8p|Y6ks1}|4|8GO*AIY;$?M(8d(x(P~}iCo;h9mgC(b#kjg z$5;1Nfqjn2MrL~K`4;nmeccz#r*EZ!*%}g|7+~+^AGV9`d}1c>!1@=OC55w6Y>&9R zdd5|~w%&XGaCp^Wc`Gr05robJk!E)_@j|7oiT^1;{}hD(yNo_7OL)&xPAmD_wSU_( zfchif6#%vt2iYC}RxW3w`M}|wSaLqy%5(ozm}hJSm!7qT?=-`zfyDkV^~YAAZ{;n9 zf2H`#`PopT2q4e{0hYn@|2Y9U=ch1IzGC@GcG=x~ZC%R=r}h&nBxL^mR)X)N;Q9oL`Rw;9GEcbj()zirb_cUsvGeefJRV<~~+ zW?EgR#iW)@jA}@NTnxH&&G1(O?D%O};Ugix$6xCI6#na~fIR~EyG6Kge!Z#EeLlm( zhW?5#3vN^UD!-0sXld?e&Mrj@vvixWv1J( zO?Mm(053INyPnF{po7%15P!r)Q2yYE@cL zpPx%bFCAN5_~S@6e1IuT$Pf(#l!t%u=a8k?iV(VV!4%*LAeE->KTiW}=A4bec}Rso zcgerC|LwN_cmf#Y;NSZ4@7~Ct@7|upm397W(*J9Ac+js){~2gRpld)a%)@BM@fR`v z1Q7%(bMD_@`n~d3AfPltlf(bTuiwl3XP5Gu{(tp8f9Q!@Z~m9P|7!35+xL#;d3U7? U*Q@((5CI=`Wo@NWg@-Tx2QnEtSpWb4 literal 0 HcmV?d00001 diff --git a/base_technical_features/tests/__init__.py b/base_technical_features/tests/__init__.py new file mode 100644 index 0000000..f52b4eb --- /dev/null +++ b/base_technical_features/tests/__init__.py @@ -0,0 +1 @@ +from . import test_base_technical_features diff --git a/base_technical_features/tests/test_base_technical_features.py b/base_technical_features/tests/test_base_technical_features.py new file mode 100644 index 0000000..9706138 --- /dev/null +++ b/base_technical_features/tests/test_base_technical_features.py @@ -0,0 +1,116 @@ +# Copyright 2026 Camptocamp SA (https://www.camptocamp.com). +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import Command +from odoo.tests import Form, TransactionCase + + +class TestBaseTechnicalFeatures(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + # Group references + cls.group_no_one = cls.env.ref("base.group_no_one") + cls.group_technical_features_xmlid = ( + "base_technical_features.group_technical_features" + ) + cls.group_technical_features = cls.env.ref(cls.group_technical_features_xmlid) + # Create a test view for the hidden fields + cls.view = cls.env["ir.ui.view"].create( + { + "name": "Test view", + "model": "res.users", + "type": "form", + "arch": """ +

+ + + + """, + } + ) + # Create a test technical menu + action = cls.env["ir.actions.act_window"].create( + { + "name": "action (test)", + "res_model": "res.partner", + "view_ids": [Command.create({"view_mode": "form"})], + } + ) + cls.menu = cls.env["ir.ui.menu"].create( + { + "name": "child menu (test)", + "action": f"{action._name},{action.id}", + "group_ids": [Command.set(cls.group_no_one.ids)], + } + ) + + def test_technical_features_field(self): + self.assertFalse(self.env.user.technical_features) + self.assertFalse(self.env.user.has_group(self.group_technical_features_xmlid)) + # Setting the field must add the group to the user + self.env.user.technical_features = True + self.assertTrue(self.env.user.has_group(self.group_technical_features_xmlid)) + # Setting the field to False must remove the group from the user + self.env.user.technical_features = False + self.assertFalse(self.env.user.has_group(self.group_technical_features_xmlid)) + # Adding the group must also be reflected in the field + self.env.user.group_ids += self.group_technical_features + self.assertTrue(self.env.user.technical_features) + # Removing the group must also be reflected in the field + self.env.user.group_ids -= self.group_technical_features + self.assertFalse(self.env.user.technical_features) + + def test_visible_menu_hidden(self): + """The menu is not visible when technical features is not enabled""" + self.assertNotIn(self.menu.id, self.env["ir.ui.menu"]._visible_menu_ids()) + + def test_visible_menu_with_technical_features(self): + """The menu is visible when technical features is enabled""" + self.env.user.technical_features = True + self.assertIn(self.menu.id, self.env["ir.ui.menu"]._visible_menu_ids()) + + def test_visible_menu_with_debug_mode(self): + """The menu is visible when debug mode is enabled + + This just tests we haven't broken the core behavior of the debug mode + """ + self.assertFalse(self.env.user.technical_features) + self.assertIn( + self.menu.id, self.env["ir.ui.menu"]._visible_menu_ids(debug=True) + ) + + def test_visible_fields_hidden(self): + """A technical field is hidden by default""" + form = Form(self.env["res.users"], view=self.view) + self.assertTrue(form._get_modifier("partner_id", "invisible")) + + def test_visible_fields_with_technical_features(self): + """A technical field is visible when technical features is enabled""" + self.env.user.technical_features = True + form = Form(self.env["res.users"], view=self.view) + self.assertFalse(form._get_modifier("partner_id", "invisible")) + + def test_visible_fields_with_debug_mode(self): + """A technical field is visible when debug mode is enabled + + This just tests we haven't broken the core behavior of the debug mode + """ + self.assertFalse(self.env.user.technical_features) + with self.debug_mode(): + form = Form(self.env["res.users"], view=self.view) + self.assertFalse(form._get_modifier("partner_id", "invisible")) + + def test_field_hidden_only_in_debug(self): + """A technical field is hidden only in debug mode""" + # The partner_id field is hidden in debug mode, so it must be hidden + # when technical features are enabled + self.view.arch = """ +
+ + + + """ + self.env.user.technical_features = True + form = Form(self.env["res.users"], view=self.view) + self.assertTrue(form._get_modifier("partner_id", "invisible")) diff --git a/base_technical_features/views/res_users.xml b/base_technical_features/views/res_users.xml new file mode 100644 index 0000000..c70444e --- /dev/null +++ b/base_technical_features/views/res_users.xml @@ -0,0 +1,21 @@ + + + + res.users + + + + + + + + + res.users + + + + + + + +