Désolé, votre navigateur ne supporte pas le javascript. Discover the 925 new features in WINDEV, WEBDEV and WINDEV Mobile 2025
New features banner
Discover the 925 new features in WINDEV, WEBDEV and WINDEV Mobile 2025

AI WLanguage code generation

New features 001 to 006 WD WB WM

AI-powered code generation

Version 2025's AI-based generative code technology provides WLanguage code suggestions as developers type, drastically reducing the time needed for coding.

AI-powered code generation AI-powered code generation
WLanguage icon

Code suggestions to connect to specific technologies/APIs

One of the advantages of AI-powered WLanguage code generation comes into play when developers need to develop for a domain they are not familiar with.

Now developers can simply write a comment describing the desired process and AI will generate suggestions based on the context of the current code and project.

WLanguage icon

Easily learn WLanguage or WLanguage domains

AI-based WLanguage code generation is also useful for developers new to WINDEV, making it easier for them to discover the incredible possibilities of a 5GL.

Here too, writing a comment describing the desired process is all it takes to generate the corresponding code, based on the context of the current code and project.

WLanguage icon

Suggestions improve over time

This powerful generative AI feature is provided at a relatively early stage.

New functionalities will be added over time, and the engine itself will improve through self-learning.

New Segmented Button control

New features 242 to 246 WD WM
New Segmented Button control

Segmented Button control overview

The new Segmented Button control can be understood as a set of ON/OFF buttons grouped together in a single control.

By default, this control uses a cohesive design language.

As users expect, the control supports single or multiple choices.

The content of each choice can be a text or an image. Programming is much simpler.

These are some of the main settings

  • number of options
  • content of each option
  • single or multiple choice
  • automatic anchor and width options
  • separators
  • separator style
  • outer borders and button borders
  • etc.

You can transform a Check Box control into a multiple-choice Segmented Button control, or a Radio Button control into a single choice Segmented Button control.

Simple programming

Programming a Segmented Button is much simpler than programming a set of Radio Button, Check Box or Switch controls.

In the code of a Segmented Button control, you can:

  • get the state of one of the buttons
  • gray out or hide a button
  • change the label or the tooltip
  • add options dynamically
  • define multilingual labels
  • define persistent settings
  • use images, Markdown text
  • etc.

Reactive procedure Reactive procedure Reactive procedure automatically executed
when a control or variable is modified

New features 247 to 254 WD

How to declare a reactive procedure

The Reactive keyword indicates that the procedure must observe the variables and controls used in its code. The keyword also tells the procedure to execute if any change is detected.

A Reactive Procedure can be global (and therefore permanently reactive), local to a window or local to a control.

Reactive procedure options

Reactive Procedures offer 2 options:

  • Delay: This option defines a time period after which the procedure must be executed. For example, 100 milliseconds after a value change.
  • Execution: This option triggers the execution of a Reactive Procedure programmatically.

Cascading

A Reactive Procedure can modify a variable or a control used by another Reactive Procedure. In this case, the other Reactive Procedure will be executed.

The framework implements the necessary security mechanisms to avoid calls in a loop, for example.

Practical example

Desired processes in this window:

  • Disable the three radio button options, the two combo boxes and the OK button, until the check box is selected
  • Once the user selects the check box, enable all the options
  • When the user selects the first radio button option, enable the first combo box and disable the second one
  • When the user selects the second radio button option, enable the second combo box and disable the first one
  • Same process for the third option
Reactive procedure complete example
REACTIVE PROCEDURE Shipping_modes()<delay=1s>
  GR_SHIPPING..Grayed = True // Default
    
  IF CBOX_GTC[1] = True THEN
    RADIO_SHIPPING_MODE..Grayed = False

    SWITCH RADIO_SHIPPING_MODE
      CASE 1 // Delivery to one address
        COMBO_ADDRESS..Grayed = False
      CASE 2 // Delivery to a relay point
        COMBO_RELAY_POINT..Grayed = False
      CASE 3 // Store pickup
    END
  END

With a Reactive Procedure, all of these processes come down to 11 simple lines of code! In this example, you can simply create a Local Procedure in the window, and declare it as a Reactive Procedure. That's it.

This procedure will be executed automatically when CBOX_GTC or RADIO_SHIPPING_MODE changes value, e.g. when a user selects an option.

A powerful concept

Reactive Procedures are used to automatically trigger the execution of processes.

A Reactive Procedure is executed when a variable or the value or content of a control used in the procedure is modified, either by the end user or programmatically.

Key takeaway: The procedure is automatically executed when a variable or a control changes.

Here's a simple example

Entering an amount before and after tax.

Simple example of a reactive procedure

When an amount is entered in a control, the other controls update automatically.

Of course, you could write this operation in WLanguage, directly in each control.

In that case, you would need to create a procedure that performs the calculation, and include a call to this procedure in the Modification process of each of the 3 controls.

Unique and centralized code

In version 2025, you only need to indicate that the calculation procedure is a Reactive Procedure.

The WINDEV framework listens for changes in controls and variable values and automatically executes the procedure when a change is detected.

There's no need to write the calls in every control where changes can be made.

Logo WLangage

Password vault No more readable passwords in the code

New features 116 to 122 WD WB WM

Total automation

No manual actions required, no files to load, no parameters to define. When you use a password vault, it's automatically loaded with the executable. Yet another advantage of WINDEV's total integration.

Password vault

Multiple vault passwords

The vault itself is password-protected. You can create several passwords to access the same vault.

There are 2 password levels:

  • master password
  • secondary password

For example, the project manager can hold the master password, and create a secondary password for each developer who is authorized to create or modify passwords.

Detect plain text passwords

In version 2025, plain-text passwords in the code are detected and generate a warning at compile time. This check can be enabled in the compiler options.

New modifier

New features 062 to 064 WD WB WM

Modifier UX adapts to control type

The new modifier will instantly become an essential tool in your workflow.

This new pane offers a smart, user-friendly view of the properties of the current window, page, control or group of controls.

Properties are sorted by relevance, according to the control. Each property is represented visually, providing a much better user experience.

Universal modifier

The new modifier is available for all elements:

  • control
  • window
  • page
  • report

The layout adapts to each element, while maintaining overall coherence.

Changes made in the new modifier are immediately reflected in the current element.

New control creation pane

New features 065 to 067 WD WB WM
New control creation pane

Ribbons are good, but panes are better

The ribbon contains all available controls. With so many controls to choose from, it can become difficult to find your way around.

In version 2025, a new control creation pane allows you to easily create the controls you need.

Of course, the ribbon is still available.

New layout

The new pane offers a much clearer layout. Controls are grouped by categories.

Each control is presented in a thumbnail.

The pane can be positioned on the right or left of the environment, or can be undocked.

Features

The control creation pane contains a number of smart and essential features:

  • Intuitive search mode that filters results as you type one or more keywords (Example: Date, date combo box, time input, etc.)
  • Preset controls
  • Favorite controls
  • Smart controls

3D visualization of UI layers

New features 917 to 919 WD WB WM

New 3D exploded page editing mode

WEBDEV 2025's page editor introduces an incredible new feature: a sophisticated 3D view of page controls.

This 3D view will quickly become essential for managing container controls: Flexbox, cells, etc.

You can enable this 3D view either for the entire page, or for a given container.

You can open the description window of any control from this view.

3D visualization of UI layers

3D view manipulation

This 3D view includes some essential functionalities:

  • rotation
  • zoom
  • control separation

This makes it easy to visualize nested and stacked controls.

Simultaneous 2D/3D editing

You have the ability to work on 2D and 3D views simultaneously.

When a control is selected in one view, it is automatically selected in the other view.

It is therefore possible to select a control in the 3D view and immediately edit it in 2D.

Lets Encrypt

Use a certificate to enable HTTPS on your websites

New features 920 to 924 WB

What is the purpose of a certificate?

The presence of a certificate on a server guarantees that users are visiting the domain they searched for.

It makes it impossible to copy the domain name.

Certificate required to enable HTTPS

Websites are accessible via HTTP.
HTTPS is the secure version of HTTP.

Basically, modern browsers no longer allow visiting websites that do not use HTTPS.

Installing a website therefore requires implementing HTTPS, and therefore requires the presence of a certificate on the server.

Get a Let's Encrypt certificate with WEBDEV 2025, by default

Let's Encrypt certificates are widely used. These are free certificates generated automatically by the ISRG organization, which is mainly financially supported by Google.

WEBDEV Application Server 2025 automatically manages:

  • certificate requests
  • certificate installation
  • certificate renewal

A simple operating mode

To use a Let's Encrypt certificate on a WEBDEV server, simply check the "Automatically generate a Let's Encrypt certificate" box in the account for which the certificate is to be activated.

You can specify the domain name(s) that will be protected by the certificate.

WEBDEV Application Server 2025 takes care of everything!

Use of other certificates

It is of course possible to use certificates other than Let's Encrypt certificates.

In this case, all you need to do is install and manage the certificates manually.

OAuth server included in WEBDEV Application Server

OAuth server included in WEBDEV Application Server

New features 768 to 772 WD WB WM

Purpose

The OAuth protocol is an open standard used to issue secure authorizations.

An OAuth authentication server manages the following aspects:

  • Secure authentication
  • Authorizations
  • Access tokens and refresh tokens
  • Permissions associated with tokens ("scopes").

An OAuth authentication server can be hosted on a physical server of any type: local network ("on premise"), hosting provider, cloud, etc.

Provided in version 2025

WEBDEV Application Server 2025 includes an OAuth authentication server by default.

To use this authentication server, simply activate the OAuth authentication server option when installing WEBDEV Application Server in version 2025.

This authentication server greatly simplifies installation, administration and programming, at no extra cost.

This authentication server can also be used for SSO authentication.

It takes care of everything!

The OAuth authentication server provided with WEBDEV 2025 includes every functionality you might need.

In particular, the server manages an account database, as well as an account administration website, where you can create and edit accounts, import accounts from an LDAP directory, etc.

Automatically managed secure website login

Once OAuth authentication is implemented in a website or application, users must provide login credentials.

This step is managed by the authentication server.

You can customize the login page.
If a user forgets their password, this page allows them to get a new one.

You can create new accounts from the login page.

2FA (via email or authenticator apps) is supported.

The AuthIdentify WLanguage function manages authentication and opens the login page.

A third-party language can use the WEBDEV authentication server via HTTP requests.

OAuth server included in WEBDEV Application Server

TOKEN, SCOPE & CONSENT

Tokens are generated by the server and identify a given user.

When creating OAuth credentials ("Client ID/Secret" pair), you can define scopes, which determine the authorizations of the token.

The OAuth server automatically handles the user's request to use one or more available scopes.

Tokens are automatically refreshed.

Create secure web services

New features 763 to 767 WD WB WM

Secure access to web services

WEBDEV enables you to easily create REST web services.

In version 2025, you can also create REST web services that require an OAuth access token.

WEBDEV 2025 takes care of everything!

How it works

To access certain web services, an access token is required.

Users must therefore obtain the token to call those web services.

OAuth is a standard protocol that allows them to obtain this token.

Reminder: OAuth lets you manage access authorizations.

This token is provided by an authentication server, using the OAuth protocol.

Secure web service scheme

How to create a secure web service

Simply create a web service as usual. In the web service description, specify the address of the desired authentication server.

With WEBDEV 2025, that's all you need to do.

Initial authentication
oauth_parameters is OAuth2Parameters
...
// Authentication request
MyToken is AuthToken = AuthIdentify(oauth_parametres)
Secure web service call
// Retrieve number of invoices for the logged-in user
req is httpRequest
req.AuthToken = MyToken
req.URL = "http://serv.mycompany.com/V1/Billing/Invoice?num_invoice=" + num
req.Send()

How to create a secure web service with different authorization levels

For more specific authorizations, you can use detailed permissions, known as "scopes".

This type of authorization is defined through a specific interface in the authentication server.

Some examples include: write access, access to a specific resource, etc.

You can specify the scopes required for each web service entry point.

Use the OAuth server of your choice

A secure web service requires an OAuth server. WEBDEV 2025 lets you choose between:

  • a third-party server
  • the OAuth server provided as standard with WEBDEV Application Server.

If you are using a third-party authentication server, simply check that it has the necessary services.

SSO: Single Sign-On

SSO: Single Sign-On Easy authentication

New features 773 to 780 WB

Interoperability

Single Sign-On (SSO) offers a practical approach to user authentication processes.

Users enter their login credentials once, and these credentials are then automatically recognized by all the other websites they access. This means users don't need to enter their login credentials multiple times.

The login/password pair is stored only on the authentication server, making access easier and more secure

Everything is managed automatically for sites developed with WEBDEV 2025.

SSO: Authentication server included

Each site that uses SSO must call an authentication server.
The authentication server:

  • manages the database of accounts and their passwords
  • displays the login window for the first login attempt
  • returns the information requested by the site: first name, last name, email, etc., but not the password
  • manages logout
  • allows you to set the lifetime of the access token stored on the local computer (in hours, days, etc.)

This authentication server comes as standard with WEBDEV Application Server 2025.

WEBDEV 2025 uses the OpenID Connect protocol, which allows other websites (not developed with WEBDEV) to use this authentication server.

Tokens

To implement SSO, websites must know a secret key issued by the authentication server.
To authenticate a user, the website must call the AuthIdentify WLanguage function, one of whose parameters is this secret key.

The first time a user tries to log in, a login page defined by the authentication server is displayed. The server issues a token (stored in a cookie).

Next time users try to log in, this cookie will be automatically detected, and access to the site will be granted.
There's no additional programming. The AuthIdentify WLanguage function takes care of everything.

SSO integration methods

Two methods are available to implement SSO in a WEBDEV site:

User Groupware

The easiest way to use SSO in a WEBDEV site is to use the integrated User Groupware. With this method, all you need to do is specify the authentication server access parameters in the GPU settings window. Can't be any easier than that.

Programmatically

This method is best for sites that don't use the User Groupware.

Programming is simple as always, thanks to the AuthIdentify and OpenIDIdentify WLanguage functions.

SSO: Single Sign-On

Duplex reports using 2 different reports

New features 230 to 233 WD WB WM
Example of a duplex report preview

Example: General sales conditions on the back of an invoice

A printed report may contain different types of content on the front and back of the page.

A typical example is an invoice, printed on one side of a sheet, with general terms and conditions of sale printed on the reverse.

In version 2025, it becomes possible to print two different reports on both sides of the paper.

The preview of a report containing a different front and back side shows the pages side by side.

How it works

The new iInitReportVerso WLanguage function is used to specify the name of the report to be printed on the reverse side.

This report can be printed on a single page, or on several pages.

If there are more pages on the reverse side than on the front side, you can use "blank" pages on the front.

You can also use a PDF document on the back of each page.

// Print the General Terms and Conditions on the back of the invoice
iInitReportVerso(RPT_GTC)
iPrintReport(RPT_Invoice, Invoice_Number)

Scan & enhance documents Transform a series of photos into a PDF file

New features 454 to 457 WM

Create a PDF document from photos taken with a smartphone

The new ScanFromCameraToImage and ScanFromCameraToPDF WLanguage functions are used to take photos with a smartphone, and transform them into a ready-to-use document.

All unwanted elements are removed, and perspective distortion is fixed, if necessary.

One common case scenario is scanning a hand-signed document.

Scan & enhance documents

Total automation

The WLanguage function captures the image, detects the document and creates a representation within a parallelogram. The user can adjust the document area.

Once the user confirms changes, any perspective distortion is corrected.

Users can scan several pages in a single series.

A single PDF document containing all the pages will be generated.

Advanced options

The new scan capabilities include some advanced options. In this mode, the result returned is an array of variables of type Image.

This allows you to program any process you may need.

For example, OCR can be applied to scanned images by calling the OCRDetectTextArea and OCRExtractTextBlock WLanguage functions.

Two-factor authentication by SMS The app retrieves the SMS and automatically processes the code

New features 444 to 446 WM
Smart control: SMS two-factor authentication

Retrieve one-time codes to help users confirm actions

A common way to confirm an action within an app is to request a code received by SMS.

For most users, this is a cumbersome process, as it implies navigating between several apps.

The "One-time code authentication" Smart control enables your application to automatically retrieve and use this code.

This Smart control uses the new SMSDetectOneTimeCode WLanguage function.

A user experience that adapts to the OS of the device

This Smart control takes into account small differences between Android and iOS.

On Android, the whole process is straightforward, while iOS adds an extra layer of security by requiring a confirmation from the end user.

Simply use this Smart control in your application, and let it handle these aspects automatically.

Total customization

Of course, this Smart control is fully customizable, just like all other Smart controls. You can edit the control, its code, etc.

PDF or Scan: Hand-written signature on the device

New feature 458 WM

Handwritten signature directly on the device

Apply your handwritten signature to a PDF document directly from your smartphone.

This PDF document may be a scan made with the device.

Simply take a photo of your signature and initials (feature included in the Smart control) and position them at the desired location.

The new "Handwritten signature in PDF" Smart control is included in version 2025.

Reminder: Electronic signatures are also available on mobile applications using Docusign or Yousign.

PDF or Scan: Hand-written signature on the device

Color palettes

New features 007 to 023 WD WM
Color palettes

One line of code

With palettes, end users can change the look of your application in 1 click.

In the source code, simply use the PaletteChange WLanguage function, indicating the palette to be applied.

The change is applied dynamically by the WINDEV 2025 graphics engine.

What is a color palette?

A palette is a set of nearly one hundred colors.
Each color is intended for a specific use in the skin template: background, text, rules, etc.

Each color is named according to its use: main_background_color, main_text_color, banner_color, button_background_color, etc.

Once defined, palettes allocate a color to each "color name". For example, button_background_color = yellow or button_background_color = RGB(125,200,36)

When the current palette is changed, all controls automatically switch to the new colors.

This mechanism lets you change the look of an application easily and dynamically.

Change the color palette

The new PaletteChange WLanguage function allows you to change the color palette used by a skin template. It is now possible to revamp an application in 1 line of code.

Color palettes provided: Dark theme

Numerous color palettes are available in version 2025. For example, the "Dark theme" palette lets you easily switch your applications to dark theme.

Use the colors of the current Windows theme

The new PaletteGenerate WLanguage function generates a color palette based on the Windows accent color currently in use on the end user's computer. This makes it easy to obtain a UI that matches the dominant color of the PC in use.

Create your own color palettes

The PaletteGenerate function can also be used to create a specific color palette. This is particularly useful when a project has to comply with a specific style book. It is also possible to create additional named colors and include them in a palette.

One skin template, many palettes

A skin template defines the style of the controls: control borders, rounding, effects, font and font size, control size, etc. And, of course, skin templates use colors for all these elements. In version 2025, the internal skin template format has been changed from fixed colors to a palette.

Icons and buttons

When a different palette is applied, icons need to adapt, especially when switching to a dark theme. In particular, icon colors must change automatically to improve readability. For example, in dark theme, icons of any color switch to white.

Easily share palettes between projects

On disk, palettes are stored as JSON files. This makes it easy to share them between different projects.

Use color names in WLanguage

You can use a "named color" instead of the value of the color, anywhere in WLanguage code. This includes functions, properties, etc. The same applies to the 7-tab window.

Electronic invoicing

New features 148 to 149 WD WB WM

Electronic invoicing options

An electronic invoice takes the form of an A/3 PDF document (human-readable) and an XML document (for applications) containing the invoice data. WINDEV allows you to:

  • generate PDF A/3 invoices
  • generate the corresponding XML file
  • integrate the XML file into the PDF
  • sign the final PDF (with RGS and eIDAS digital signature certificates)

Send and retrieve

WINDEV has all the functionalities that allow vendors to send invoices to a public portal and buyers to retrieve invoices from the portal:

  • REST web service calls
  • OpenAPI support
  • retrieval and analysis of attached XML files
  • PDF signature verification (when receiving an invoice)
  • Windows service to query public portals

It was already possible to automate links with the French Chorus Pro portal (implemented for public procurement). Now, it is also possible to create electronic invoices in Factur-X format.

Pictorial Percentage chart

New features 037 to 038 WD WB WM

New Chart control

The new Pictorial Percentage chart appears in version 2025.

This new chart visually illustrates data as percentages, using shapes, such as bottles, human silhouettes, thermometers, etc.

This makes information easier to understand at a glance.

Pictorial Percentage chart

Programming

The new Pictorial Percentage chart uses the same programming as any other standard chart.

You can specify the desired images programmatically, or via the 7-tab window.
Supported formats are vector (SVG) or bitmap (JPEG, PNG, etc.).

Vector format is recommended for images that are likely to be resized, without losing quality.

You can manipulate this type of chart using gr functions.

Apollo skin template

New feature 222 WD

New skin template for WINDEV

The new "Apollo" skin template is introduced in version 2025.
Benefint from new customization possibilities.

Use these templates in your applications and software packages, as well as all the skin templates provided with WINDEV.

Don't forget you can apply a palette to change colors, and also create your own skin templates.

New skin template for WINDEV

Emerald skin template

New feature 450 WM
New skin template for WINDEV Mobile

New skin template for mobile apps

Version 2025 includes the new "Emerald" skin template. Feel free to use it to customize your apps!

Feel free to use these templates for your apps, as well as all the templates provided with WINDEV Mobile.

Don't forget you can apply a palette to change colors, and also create your own skin templates.

Yousign yousign

New features 156 to 162 WD WB WM

Integrate Yousign into your applications

With WINDEV 2025, your applications can easily integrate Yousign solutions. These electronic signature functionalities comply with European regulations (eIDAS).

Three types of electronic signatures

All three types of electronic signature are supported:

  • Simple Electronic Signature (SES)
  • Advanced Electronic Signature (AES)
  • Qualified Electronic Signature (QES)

Approver mode

Yousign includes a useful mode called "Approver".

This mode enables one or more recipients, not necessarily signers, to approve a document before signing it. This can be a legal or technical approval, for example.

This feature is natively supported in version 2025.

Yousign electronic signature

Easy-to-use functions

WLanguage functions are available in the form of an Internal Component, with their source code.

The functions allow you to:

  • Set the signature level
  • Send one or more documents to Yousign, to n recipients (name, email, telephone number, etc.), for signature, notification or approval
  • Define the location of the signature in the document
  • Find out if a document is signed, and who hasn't signed it
  • Get signing dates/times
  • Retrieve signed documents
  • Cancel operations

All aspects of verification, emailing, ID verification and document storage are fully handled by the service provider (Yousign).

Easy

Code generation wizard

To simplify development, an intuitive wizard generates the necessary code.

Powerful

Access to all APIs

To handle special cases, all the APIs provided by Yousign can be accessed via a WLanguage call.

All entry points are available directly in the code editor.

Adapted

Billing

Yousign offers several types of subscription, giving access to different types of signatures.

To access all the capabilities of APIs, you need to choose an API subscription.

New WLanguage features

New features 123 to 143 and 316 to 426 WD WB WM
Logo WLangage

Thread Local Storage (TLS): Store data local to a thread

TLS allows you to provide a unique copy of a global variable for each thread.

This makes it possible for several threads to use global variables without overwriting them.

Faster procedure calls in threads

In version 2025, threads using procedures are executed up to 8 times faster.

Procedure calls in threads are now significantly faster.

Explicit conversion of simple types (CAST)

In version 2025, you can force conversion from one simple type to another (e.g. Integer to String) without using a local variable.

product_ref is string = (string) 378 + (string) 578
// -> Returns 378578 instead of 956

Manipulate large JSON files programmatically

Developers are having to manipulate increasingly large JSON files, in some cases up to several GB in size.

For instance, the French government provides very large land registry files encoded in JSON format through the OpenData portal.

Version 2025 introduces a new way of accessing JSON content.

This mode allows you to manage content of unlimited size. The usual mode loads the entire JSON content into memory, which could cause performance or memory usage issues depending on the size of the JSON file.

The new jsonReader type and the new JSONOpenReader function make it possible to read JSON content without having to load the whole content into memory.

Combine a certificate and a private key in a single certificate (PFX)

In version 2025, you can merge a certificate file without a private key and a private key into a new certificate file in pfx format.

This is particularly useful for OpenSSL users (but not only!).

IMAP: Search with filter

When searching emails in an IMAP session, you can use the EmailSeekFirst WLanguage function to specify a search criterion. Some examples include: sender name, recipient name, subject, message body, etc.

Use SQL queries as data sources in a SELECT function

You can write SQL queries directly in the code. In version 2025, the data source of these queries can itself be a query coming directly from the code.

Read and write to standard input/output streams

A WINDEV application can launch another application (another process) written in WINDEV or another language. This mainly involves applications in console mode (launched from a command line).

In version 2025, it is possible to read data from the standard output (stdout) and standard error output (stderr).

It is also possible to write data to the standard input (stdin). This allows you to control the process launched, and retrieve the process report.

4x faster compression

The ZipAddFile compression function, which adds files to a Zip archive, is up to 4 times faster in version 2025.

"*" indicates required fields.

The data you provide will be treated confidentially.

The data is processed for professional purposes only.

It will NOT be shared with other companies.

PC SOFT logo PC SOFT logo