]> granicus.if.org Git - php/log
php
6 years agoMerge branch 'PHP-7.4'
Nikita Popov [Fri, 31 May 2019 07:18:09 +0000 (09:18 +0200)]
Merge branch 'PHP-7.4'

6 years agoMark sapi_windows_set_ctrl_handler.phpt as XFAIL
Nikita Popov [Fri, 31 May 2019 07:17:51 +0000 (09:17 +0200)]
Mark sapi_windows_set_ctrl_handler.phpt as XFAIL

6 years agoMerge branch 'PHP-7.4'
Dmitry Stogov [Thu, 30 May 2019 22:00:12 +0000 (01:00 +0300)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Fixed compilation warning

6 years agoFixed compilation warning
Dmitry Stogov [Thu, 30 May 2019 21:59:52 +0000 (00:59 +0300)]
Fixed compilation warning

6 years agoMerge branch 'PHP-7.4'
Dmitry Stogov [Thu, 30 May 2019 21:32:18 +0000 (00:32 +0300)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Don't specialize "cold" handlers

6 years agoDon't specialize "cold" handlers
Dmitry Stogov [Thu, 30 May 2019 21:31:57 +0000 (00:31 +0300)]
Don't specialize "cold" handlers

6 years agoMerge branch 'PHP-7.4'
Dmitry Stogov [Thu, 30 May 2019 21:16:20 +0000 (00:16 +0300)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Removed useless specialization. Specialized handlers called not specialized helpers.

6 years agoRemoved useless specialization. Specialized handlers called not specialized helpers.
Dmitry Stogov [Thu, 30 May 2019 21:15:25 +0000 (00:15 +0300)]
Removed useless specialization. Specialized handlers called not specialized helpers.

6 years agoMerge branch 'PHP-7.4'
Dmitry Stogov [Thu, 30 May 2019 21:15:18 +0000 (00:15 +0300)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Reduce register pressure by reloading values on CPUs with few general purpose registers

6 years agoReduce register pressure by reloading values on CPUs with few general purpose registers
Dmitry Stogov [Thu, 30 May 2019 21:14:10 +0000 (00:14 +0300)]
Reduce register pressure by reloading values on CPUs with few general purpose registers

6 years agoUpdate the DatePeriod read/write handlers
Craig Duncan [Tue, 28 May 2019 19:03:19 +0000 (20:03 +0100)]
Update the DatePeriod read/write handlers

6 years agoMerge branch 'PHP-7.4'
Craig Duncan [Thu, 30 May 2019 18:15:58 +0000 (19:15 +0100)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Add a test for bug #65672
  Ensure the internal properties cannot be overwritten

6 years agoMerge branch 'PHP-7.3' into PHP-7.4
Craig Duncan [Thu, 30 May 2019 18:14:04 +0000 (19:14 +0100)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Add a test for bug #65672
  Ensure the internal properties cannot be overwritten

6 years agoMerge branch 'PHP-7.2' into PHP-7.3
Craig Duncan [Thu, 30 May 2019 17:55:55 +0000 (18:55 +0100)]
Merge branch 'PHP-7.2' into PHP-7.3

* PHP-7.2:
  Add a test for bug #65672
  Ensure the internal properties cannot be overwritten

6 years agoAdd a test for bug #65672
Craig Duncan [Tue, 20 Feb 2018 21:12:43 +0000 (21:12 +0000)]
Add a test for bug #65672

6 years agoEnsure the internal properties cannot be overwritten
Craig Duncan [Tue, 20 Feb 2018 21:11:03 +0000 (21:11 +0000)]
Ensure the internal properties cannot be overwritten

6 years agoMerge branch 'PHP-7.4'
Dmitry Stogov [Thu, 30 May 2019 17:43:17 +0000 (20:43 +0300)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Disable "bad" optimisations only for emulation loop

6 years agoDisable "bad" optimisations only for emulation loop
Dmitry Stogov [Thu, 30 May 2019 17:35:30 +0000 (20:35 +0300)]
Disable "bad" optimisations only for emulation loop

6 years agoAdd boolean return type for is_* functions
Gabriel Caruso [Wed, 29 May 2019 04:15:47 +0000 (01:15 -0300)]
Add boolean return type for is_* functions

6 years agoMerge branch 'PHP-7.4'
Anatol Belski [Thu, 30 May 2019 12:09:48 +0000 (14:09 +0200)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  [ci skip] Update libmagic.patch

6 years ago[ci skip] Update libmagic.patch
Anatol Belski [Thu, 30 May 2019 12:09:00 +0000 (14:09 +0200)]
[ci skip] Update libmagic.patch

6 years agoMerge branch 'PHP-7.4'
Anatol Belski [Thu, 30 May 2019 12:03:28 +0000 (14:03 +0200)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  [ci skip] Update year

6 years ago[ci skip] Update year
Anatol Belski [Thu, 30 May 2019 12:02:54 +0000 (14:02 +0200)]
[ci skip] Update year

6 years agoMerge branch 'PHP-7.4'
Anatol Belski [Thu, 30 May 2019 12:00:14 +0000 (14:00 +0200)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  [ci skip] Update NEWS

6 years ago[ci skip] Update NEWS
Anatol Belski [Thu, 30 May 2019 11:59:21 +0000 (13:59 +0200)]
[ci skip] Update NEWS

6 years agoMerge branch 'PHP-7.4'
Anatol Belski [Thu, 30 May 2019 11:33:02 +0000 (13:33 +0200)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Add test for bug #78075, json detection

6 years agoAdd test for bug #78075, json detection
Anatol Belski [Thu, 30 May 2019 11:31:48 +0000 (13:31 +0200)]
Add test for bug #78075, json detection

6 years agoMerge branch 'PHP-7.4'
Joe Watkins [Thu, 30 May 2019 05:46:50 +0000 (07:46 +0200)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  have parallel test runner respect NO_INTERACTION

6 years agohave parallel test runner respect NO_INTERACTION
Joe Watkins [Thu, 30 May 2019 05:46:31 +0000 (07:46 +0200)]
have parallel test runner respect NO_INTERACTION

6 years agoMerge branch 'PHP-7.4'
Anatol Belski [Thu, 30 May 2019 00:48:37 +0000 (02:48 +0200)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Partially reapply ba40f505e5804a5f62a1e220b0dce9d417a27f4d

6 years agoPartially reapply ba40f505e5804a5f62a1e220b0dce9d417a27f4d
Anatol Belski [Thu, 30 May 2019 00:48:01 +0000 (02:48 +0200)]
Partially reapply ba40f505e5804a5f62a1e220b0dce9d417a27f4d

6 years agoMerge branch 'PHP-7.4'
Anatol Belski [Thu, 30 May 2019 00:35:28 +0000 (02:35 +0200)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Fix datatype

6 years agoFix datatype
Anatol Belski [Thu, 30 May 2019 00:34:35 +0000 (02:34 +0200)]
Fix datatype

6 years agoMerge branch 'PHP-7.4'
Anatol Belski [Thu, 30 May 2019 00:23:20 +0000 (02:23 +0200)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Ported limagic 5.37

6 years agoPorted limagic 5.37
Anatol Belski [Thu, 30 May 2019 00:18:48 +0000 (02:18 +0200)]
Ported limagic 5.37

6 years agoFix FPM tests for PHP 8
Nikita Popov [Wed, 29 May 2019 15:31:10 +0000 (17:31 +0200)]
Fix FPM tests for PHP 8

6 years agoRemove get() object handler
Nikita Popov [Wed, 29 May 2019 09:52:55 +0000 (11:52 +0200)]
Remove get() object handler

Now that set() is gone, there is little point in keeping get(), as
it is essentially just a different way of writing cast_object()
now.

Closes GH-4202.

6 years agoMerge branch 'PHP-7.4'
Nikita Popov [Wed, 29 May 2019 15:07:52 +0000 (17:07 +0200)]
Merge branch 'PHP-7.4'

6 years agoRun sapi tests when running all tests
Nikita Popov [Wed, 29 May 2019 15:07:12 +0000 (17:07 +0200)]
Run sapi tests when running all tests

6 years agoUpdate phpdbg oplog test
Nikita Popov [Wed, 29 May 2019 15:05:01 +0000 (17:05 +0200)]
Update phpdbg oplog test

6 years agoUpdate cli reflection test
Nikita Popov [Wed, 29 May 2019 15:02:36 +0000 (17:02 +0200)]
Update cli reflection test

6 years agoRemove two zpp tests in sapi/cli/tests
Nikita Popov [Wed, 29 May 2019 15:00:12 +0000 (17:00 +0200)]
Remove two zpp tests in sapi/cli/tests

These fail on master -- apparently we're not running these tests...

6 years agoescapeshellarg/escapeshellcmd: Throw TypeError instead of E_ERROR
Nikita Popov [Wed, 29 May 2019 14:57:16 +0000 (16:57 +0200)]
escapeshellarg/escapeshellcmd: Throw TypeError instead of E_ERROR

6 years agoMerge branch 'PHP-7.4'
Nikita Popov [Wed, 29 May 2019 14:48:37 +0000 (16:48 +0200)]
Merge branch 'PHP-7.4'

6 years agoMerge branch 'PHP-7.3' into PHP-7.4
Nikita Popov [Wed, 29 May 2019 14:48:28 +0000 (16:48 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

6 years agoSCCP: Fix leak when determining TYPE_CHECK from type info
Nikita Popov [Wed, 29 May 2019 14:47:19 +0000 (16:47 +0200)]
SCCP: Fix leak when determining TYPE_CHECK from type info

As TYPE_CHECK is the only opcode where we do something like this,
I'm adding this hack.

6 years agoUpdate more func info information for ext/standard
Nikita Popov [Wed, 29 May 2019 13:30:06 +0000 (15:30 +0200)]
Update more func info information for ext/standard

6 years agoEnable JIT in Travis build
Nikita Popov [Tue, 28 May 2019 09:44:24 +0000 (11:44 +0200)]
Enable JIT in Travis build

All tests should pass now.

6 years agoMerge branch 'PHP-7.4'
Dmitry Stogov [Wed, 29 May 2019 10:59:01 +0000 (13:59 +0300)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  zend_assign_to_variable() optimization

6 years agozend_assign_to_variable() optimization
Dmitry Stogov [Wed, 29 May 2019 10:58:37 +0000 (13:58 +0300)]
zend_assign_to_variable() optimization

6 years agoDisable JIT for ext/ffi/tests/200.phpt
Nikita Popov [Wed, 29 May 2019 10:11:32 +0000 (12:11 +0200)]
Disable JIT for ext/ffi/tests/200.phpt

JIT assumes that the zend_write callback will not be changed at
runtime, which I think is reasonable, so don't run this test
under JIT.

6 years agoDon't JIT functions with many blocks
Nikita Popov [Wed, 29 May 2019 09:48:40 +0000 (11:48 +0200)]
Don't JIT functions with many blocks

Avoids a stack overflow in Zend/tests/runtime_compile_time_binary_operands.php
that happens in recursive RPO calculation. We could make that code
non-recursive, but I don't think it makes sense to JIT this kind of
function in the first place.

6 years agoMerge branch 'PHP-7.4'
Dmitry Stogov [Wed, 29 May 2019 08:50:27 +0000 (11:50 +0300)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Mark "cold" functions

6 years agoMark "cold" functions
Dmitry Stogov [Wed, 29 May 2019 08:31:46 +0000 (11:31 +0300)]
Mark "cold" functions

6 years agoMerge branch 'PHP-7.4'
Derick Rethans [Wed, 29 May 2019 08:35:18 +0000 (09:35 +0100)]
Merge branch 'PHP-7.4'

6 years agoBump API numbers
Derick Rethans [Wed, 29 May 2019 08:34:10 +0000 (09:34 +0100)]
Bump API numbers

6 years agoRemove set() object handler
Nikita Popov [Tue, 28 May 2019 14:55:52 +0000 (16:55 +0200)]
Remove set() object handler

6 years agoMerge branch 'PHP-7.4'
Nikita Popov [Wed, 29 May 2019 07:52:43 +0000 (09:52 +0200)]
Merge branch 'PHP-7.4'

6 years agoSpecify get_property_ptr_ptr handler for DatePeriod
Nikita Popov [Wed, 29 May 2019 07:51:15 +0000 (09:51 +0200)]
Specify get_property_ptr_ptr handler for DatePeriod

This handler is required on 7.4. Just return NULL from it to fall
back to read_property.

6 years agoMerge branch 'PHP-7.3' into PHP-7.4
Nikita Popov [Wed, 29 May 2019 07:47:54 +0000 (09:47 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

6 years agoMerge branch 'PHP-7.2' into PHP-7.3
Nikita Popov [Wed, 29 May 2019 07:47:43 +0000 (09:47 +0200)]
Merge branch 'PHP-7.2' into PHP-7.3

6 years agoAdd tests for DatePeriod properties
Craig Duncan [Tue, 28 May 2019 19:49:14 +0000 (20:49 +0100)]
Add tests for DatePeriod properties

6 years agoMerge branch 'PHP-7.4'
Dmitry Stogov [Wed, 29 May 2019 07:35:20 +0000 (10:35 +0300)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  zend_do_fcall_overloaded() doesn't have to be exported

6 years agozend_do_fcall_overloaded() doesn't have to be exported
Dmitry Stogov [Wed, 29 May 2019 07:32:30 +0000 (10:32 +0300)]
zend_do_fcall_overloaded() doesn't have to be exported

6 years agoMerge branch 'PHP-7.4'
Christoph M. Becker [Wed, 29 May 2019 07:28:03 +0000 (09:28 +0200)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Update NEWS for 7.3.6

6 years agoMerge branch 'PHP-7.3' into PHP-7.4
Christoph M. Becker [Wed, 29 May 2019 07:27:46 +0000 (09:27 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  Update NEWS for 7.3.6

6 years agoUpdate NEWS for 7.3.6
Christoph M. Becker [Wed, 29 May 2019 07:27:23 +0000 (09:27 +0200)]
Update NEWS for 7.3.6

6 years agoMerge branch 'PHP-7.4'
Christoph M. Becker [Wed, 29 May 2019 07:10:28 +0000 (09:10 +0200)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Remove unused variable

6 years agoRemove unused variable
Gabriel Caruso [Wed, 29 May 2019 01:48:31 +0000 (22:48 -0300)]
Remove unused variable

6 years agoMerge branch 'PHP-7.4'
Remi Collet [Wed, 29 May 2019 06:54:13 +0000 (08:54 +0200)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  add NEWS entries for sec fix

6 years agoMerge branch 'PHP-7.3' into PHP-7.4
Remi Collet [Wed, 29 May 2019 06:53:59 +0000 (08:53 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  add NEWS entries for sec fix

6 years agoMerge branch 'PHP-7.2' into PHP-7.3
Remi Collet [Wed, 29 May 2019 06:53:42 +0000 (08:53 +0200)]
Merge branch 'PHP-7.2' into PHP-7.3

* PHP-7.2:
  add NEWS entries for sec fix

6 years agoadd NEWS entries for sec fix
Remi Collet [Wed, 29 May 2019 06:53:23 +0000 (08:53 +0200)]
add NEWS entries for sec fix

6 years agoMerge branch 'master' of git.php.net:php-src
Remi Collet [Wed, 29 May 2019 06:41:50 +0000 (08:41 +0200)]
Merge branch 'master' of git.php.net:php-src

* 'master' of git.php.net:php-src: (79 commits)
  disabled functions must not have return type
  Fix conditional compilation
  These macros should not expect any argument
  Avoid cold code duplication
  Restore the execute bit for run-tests.php
  Replace ZVAL_COPY() and ZVAL_COPY_VALUE() for IS_OBJECT by cheaper macros
  Respect optimization_level when running JIT inference
  Fix type inference of SEND_UNPACK with empty array
  SCCP: Fix handling of ASSIGN_OBJ_REF
  Avoid usage of internal get/set object handlers. They are going to be removed in PHP-8. Scalar FFI values now should be accessed through special "cdata" property.
  SCCP: Don't perform partial object propagation for typed props
  JIT: Fix SWITCH_LONG/STRING codegen with exact type
  Revert accidental changes
  hebrev/hebrevc: Don't return false for empty string
  Update MAY_BE_NULL info for more ext/standard functions
  Avoid double copying
  Update MAY_BE_NULL for parts of ext/standard
  Update MAY_BE_NULL func_info for Zend functions
  Fixed register allocation
  Remove FUNC_MAY_WARN
  ...

6 years agoMerge branch 'PHP-7.4'
Joe Watkins [Wed, 29 May 2019 06:32:06 +0000 (08:32 +0200)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  disabled functions must not have return type
  Restore the execute bit for run-tests.php

6 years agoMerge branch 'PHP-7.3' into PHP-7.4
Joe Watkins [Wed, 29 May 2019 06:30:55 +0000 (08:30 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

* PHP-7.3:
  disabled functions must not have return type
  Restore the execute bit for run-tests.php

6 years agoMerge branch 'PHP-7.2' into PHP-7.3
Joe Watkins [Wed, 29 May 2019 06:30:41 +0000 (08:30 +0200)]
Merge branch 'PHP-7.2' into PHP-7.3

* PHP-7.2:
  disabled functions must not have return type

6 years agodisabled functions must not have return type
Joe Watkins [Wed, 29 May 2019 06:30:08 +0000 (08:30 +0200)]
disabled functions must not have return type

6 years agoMerge branch 'PHP-7.4'
Anatol Belski [Wed, 29 May 2019 00:54:15 +0000 (02:54 +0200)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Fix conditional compilation
  These macros should not expect any argument

6 years agoFix conditional compilation
Anatol Belski [Wed, 29 May 2019 00:40:09 +0000 (02:40 +0200)]
Fix conditional compilation

The new symbols are shared and don't need to depend on the availability
of __builtin_constant_p.

6 years agoThese macros should not expect any argument
Anatol Belski [Wed, 29 May 2019 00:29:02 +0000 (02:29 +0200)]
These macros should not expect any argument

6 years agoMerge branch 'PHP-7.4'
Dmitry Stogov [Tue, 28 May 2019 22:43:47 +0000 (01:43 +0300)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Avoid cold code duplication

6 years agoAvoid cold code duplication
Dmitry Stogov [Tue, 28 May 2019 22:43:27 +0000 (01:43 +0300)]
Avoid cold code duplication

6 years agoRestore the execute bit for run-tests.php
Craig Duncan [Tue, 28 May 2019 20:51:26 +0000 (21:51 +0100)]
Restore the execute bit for run-tests.php

It looks like this was accidentally removed in 03f15f705ad30ce2dde7f7b2ab087a132b859ba0

6 years agoMerge branch 'PHP-7.4'
Dmitry Stogov [Tue, 28 May 2019 17:19:15 +0000 (20:19 +0300)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Replace ZVAL_COPY() and ZVAL_COPY_VALUE() for IS_OBJECT by cheaper macros

6 years agoReplace ZVAL_COPY() and ZVAL_COPY_VALUE() for IS_OBJECT by cheaper macros
Dmitry Stogov [Tue, 28 May 2019 17:10:02 +0000 (20:10 +0300)]
Replace ZVAL_COPY() and ZVAL_COPY_VALUE() for IS_OBJECT by cheaper macros

6 years agoRespect optimization_level when running JIT inference
Nikita Popov [Tue, 28 May 2019 15:28:33 +0000 (17:28 +0200)]
Respect optimization_level when running JIT inference

Don't enable unsafe type inference by default -- we'll segfault on
some FFI tests.

6 years agoMerge branch 'PHP-7.4'
Nikita Popov [Tue, 28 May 2019 14:41:30 +0000 (16:41 +0200)]
Merge branch 'PHP-7.4'

6 years agoMerge branch 'PHP-7.3' into PHP-7.4
Nikita Popov [Tue, 28 May 2019 14:41:17 +0000 (16:41 +0200)]
Merge branch 'PHP-7.3' into PHP-7.4

6 years agoMerge branch 'PHP-7.2' into PHP-7.3
Nikita Popov [Tue, 28 May 2019 14:41:08 +0000 (16:41 +0200)]
Merge branch 'PHP-7.2' into PHP-7.3

6 years agoFix type inference of SEND_UNPACK with empty array
Nikita Popov [Tue, 28 May 2019 14:39:49 +0000 (16:39 +0200)]
Fix type inference of SEND_UNPACK with empty array

An empty array will not be turned into an array of references.
This violated the invariant than an array has values iff it has
keys.

6 years agoMerge branch 'PHP-7.4'
Nikita Popov [Tue, 28 May 2019 14:15:54 +0000 (16:15 +0200)]
Merge branch 'PHP-7.4'

6 years agoSCCP: Fix handling of ASSIGN_OBJ_REF
Nikita Popov [Tue, 28 May 2019 14:14:46 +0000 (16:14 +0200)]
SCCP: Fix handling of ASSIGN_OBJ_REF

The generic BOT handling is not away of OP_DATA, so need to handle
this opcode before we get to that.

6 years agoMerge branch 'PHP-7.4'
Dmitry Stogov [Tue, 28 May 2019 14:14:28 +0000 (17:14 +0300)]
Merge branch 'PHP-7.4'

* PHP-7.4:
  Avoid usage of internal get/set object handlers. They are going to be removed in PHP-8. Scalar FFI values now should be accessed through special "cdata" property.

6 years agoAvoid usage of internal get/set object handlers. They are going to be removed in...
Dmitry Stogov [Tue, 28 May 2019 14:08:35 +0000 (17:08 +0300)]
Avoid usage of internal get/set object handlers. They are going to be removed in PHP-8.
Scalar FFI values now should be accessed through special "cdata" property.

    $x = FFI::new("int");
    $x = 42;

    should be changed into

    $x = FFI::new("int");
    $x->cdata = 42;

6 years agoMerge branch 'PHP-7.4'
Nikita Popov [Tue, 28 May 2019 13:46:15 +0000 (15:46 +0200)]
Merge branch 'PHP-7.4'

6 years agoSCCP: Don't perform partial object propagation for typed props
Nikita Popov [Tue, 28 May 2019 13:45:19 +0000 (15:45 +0200)]
SCCP: Don't perform partial object propagation for typed props

6 years agoJIT: Fix SWITCH_LONG/STRING codegen with exact type
Nikita Popov [Tue, 28 May 2019 13:25:19 +0000 (15:25 +0200)]
JIT: Fix SWITCH_LONG/STRING codegen with exact type

We were not loading the operand if the type was known exactly.

6 years agoRevert accidental changes
Nikita Popov [Tue, 28 May 2019 11:14:58 +0000 (13:14 +0200)]
Revert accidental changes

These MAY_BE_FALSE should not have been dropped...

6 years agohebrev/hebrevc: Don't return false for empty string
Nikita Popov [Tue, 28 May 2019 11:07:03 +0000 (13:07 +0200)]
hebrev/hebrevc: Don't return false for empty string

There is nothing special about the empty string in this context,
we should pass it through unchanged.