Loading CREDITS +18 −4 Original line number Diff line number Diff line Loading @@ -495,6 +495,11 @@ S: Kopmansg 2 S: 411 13 Goteborg S: Sweden N: Paul Bristow E: paul@paulbristow.net W: http://paulbristow.net/linux/idefloppy.html D: Maintainer of IDE/ATAPI floppy driver N: Dominik Brodowski E: linux@brodo.de W: http://www.brodo.de/ Loading Loading @@ -1407,8 +1412,8 @@ P: 1024D/77D4FC9B F5C5 1C20 1DFC DEC3 3107 54A4 2332 ADFC 77D4 FC9B D: National Language Support D: Linux Internationalization Project D: German Localization for Linux and GNU software S: Kriemhildring 12a S: 65795 Hattersheim am Main S: Auf der Fittel 18 S: 53347 Alfter S: Germany N: Christoph Hellwig Loading Loading @@ -2166,7 +2171,6 @@ D: Initial implementation of VC's, pty's and select() N: Pavel Machek E: pavel@ucw.cz E: pavel@suse.cz D: Softcursor for vga, hypertech cdrom support, vcsa bugfix, nbd D: sun4/330 port, capabilities for elf, speedup for rm on ext2, USB, D: work on suspend-to-ram/disk, killing duplicates from ioctl32 Loading Loading @@ -2643,6 +2647,10 @@ S: C/ Mieses 20, 9-B S: Valladolid 47009 S: Spain N: Gadi Oxman E: gadio@netvision.net.il D: Original author and maintainer of IDE/ATAPI floppy/tape drivers N: Greg Page E: gpage@sovereign.org D: IPX development and support Loading Loading @@ -3572,6 +3580,12 @@ N: Dirk Verworner D: Co-author of German book ``Linux-Kernel-Programmierung'' D: Co-founder of Berlin Linux User Group N: Riku Voipio E: riku.voipio@iki.fi D: Author of PCA9532 LED and Fintek f75375s hwmon driver D: Some random ARM board patches S: Finland N: Patrick Volkerding E: volkerdi@ftp.cdrom.com D: Produced the Slackware distribution, updated the SVGAlib Loading Loading @@ -3739,7 +3753,7 @@ S: 93149 Nittenau S: Germany N: Gertjan van Wingerde E: gwingerde@home.nl E: gwingerde@gmail.com D: Ralink rt2x00 WLAN driver D: Minix V2 file-system D: Misc fixes Loading Documentation/00-INDEX +2 −2 Original line number Diff line number Diff line Loading @@ -86,6 +86,8 @@ cachetlb.txt - describes the cache/TLB flushing interfaces Linux uses. cdrom/ - directory with information on the CD-ROM drivers that Linux has. cgroups/ - cgroups features, including cpusets and memory controller. connector/ - docs on the netlink based userspace<->kernel space communication mod. console/ Loading @@ -98,8 +100,6 @@ cpu-load.txt - document describing how CPU load statistics are collected. cpuidle/ - info on CPU_IDLE, CPU idle state management subsystem. cpusets.txt - documents the cpusets feature; assign CPUs and Mem to a set of tasks. cputopology.txt - documentation on how CPU topology info is exported via sysfs. cris/ Loading Documentation/ABI/testing/debugfs-kmemtrace 0 → 100644 +71 −0 Original line number Diff line number Diff line What: /sys/kernel/debug/kmemtrace/ Date: July 2008 Contact: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro> Description: In kmemtrace-enabled kernels, the following files are created: /sys/kernel/debug/kmemtrace/ cpu<n> (0400) Per-CPU tracing data, see below. (binary) total_overruns (0400) Total number of bytes which were dropped from cpu<n> files because of full buffer condition, non-binary. (text) abi_version (0400) Kernel's kmemtrace ABI version. (text) Each per-CPU file should be read according to the relay interface. That is, the reader should set affinity to that specific CPU and, as currently done by the userspace application (though there are other methods), use poll() with an infinite timeout before every read(). Otherwise, erroneous data may be read. The binary data has the following _core_ format: Event ID (1 byte) Unsigned integer, one of: 0 - represents an allocation (KMEMTRACE_EVENT_ALLOC) 1 - represents a freeing of previously allocated memory (KMEMTRACE_EVENT_FREE) Type ID (1 byte) Unsigned integer, one of: 0 - this is a kmalloc() / kfree() 1 - this is a kmem_cache_alloc() / kmem_cache_free() 2 - this is a __get_free_pages() et al. Event size (2 bytes) Unsigned integer representing the size of this event. Used to extend kmemtrace. Discard the bytes you don't know about. Sequence number (4 bytes) Signed integer used to reorder data logged on SMP machines. Wraparound must be taken into account, although it is unlikely. Caller address (8 bytes) Return address to the caller. Pointer to mem (8 bytes) Pointer to target memory area. Can be NULL, but not all such calls might be recorded. In case of KMEMTRACE_EVENT_ALLOC events, the next fields follow: Requested bytes (8 bytes) Total number of requested bytes, unsigned, must not be zero. Allocated bytes (8 bytes) Total number of actually allocated bytes, unsigned, must not be lower than requested bytes. Requested flags (4 bytes) GFP flags supplied by the caller. Target CPU (4 bytes) Signed integer, valid for event id 1. If equal to -1, target CPU is the same as origin CPU, but the reverse might not be true. The data is made available in the same endianness the machine has. Other event ids and type ids may be defined and added. Other fields may be added by increasing event size, but see below for details. Every modification to the ABI, including new id definitions, are followed by bumping the ABI version by one. Adding new data to the packet (features) is done at the end of the mandatory data: Feature size (2 byte) Feature ID (1 byte) Feature data (Feature size - 3 bytes) Users: kmemtrace-user - git://repo.or.cz/kmemtrace-user.git Documentation/ABI/testing/ima_policy 0 → 100644 +61 −0 Original line number Diff line number Diff line What: security/ima/policy Date: May 2008 Contact: Mimi Zohar <zohar@us.ibm.com> Description: The Trusted Computing Group(TCG) runtime Integrity Measurement Architecture(IMA) maintains a list of hash values of executables and other sensitive system files loaded into the run-time of this system. At runtime, the policy can be constrained based on LSM specific data. Policies are loaded into the securityfs file ima/policy by opening the file, writing the rules one at a time and then closing the file. The new policy takes effect after the file ima/policy is closed. rule format: action [condition ...] action: measure | dont_measure condition:= base | lsm base: [[func=] [mask=] [fsmagic=] [uid=]] lsm: [[subj_user=] [subj_role=] [subj_type=] [obj_user=] [obj_role=] [obj_type=]] base: func:= [BPRM_CHECK][FILE_MMAP][INODE_PERMISSION] mask:= [MAY_READ] [MAY_WRITE] [MAY_APPEND] [MAY_EXEC] fsmagic:= hex value uid:= decimal value lsm: are LSM specific default policy: # PROC_SUPER_MAGIC dont_measure fsmagic=0x9fa0 # SYSFS_MAGIC dont_measure fsmagic=0x62656572 # DEBUGFS_MAGIC dont_measure fsmagic=0x64626720 # TMPFS_MAGIC dont_measure fsmagic=0x01021994 # SECURITYFS_MAGIC dont_measure fsmagic=0x73636673 measure func=BPRM_CHECK measure func=FILE_MMAP mask=MAY_EXEC measure func=INODE_PERM mask=MAY_READ uid=0 The default policy measures all executables in bprm_check, all files mmapped executable in file_mmap, and all files open for read by root in inode_permission. Examples of LSM specific definitions: SELinux: # SELINUX_MAGIC dont_measure fsmagic=0xF97CFF8C dont_measure obj_type=var_log_t dont_measure obj_type=auditd_log_t measure subj_user=system_u func=INODE_PERM mask=MAY_READ measure subj_role=system_r func=INODE_PERM mask=MAY_READ Smack: measure subj_user=_ func=INODE_PERM mask=MAY_READ Documentation/ABI/testing/sysfs-bus-pci +113 −0 Original line number Diff line number Diff line What: /sys/bus/pci/drivers/.../bind Date: December 2003 Contact: linux-pci@vger.kernel.org Description: Writing a device location to this file will cause the driver to attempt to bind to the device found at this location. This is useful for overriding default bindings. The format for the location is: DDDD:BB:DD.F. That is Domain:Bus:Device.Function and is the same as found in /sys/bus/pci/devices/. For example: # echo 0000:00:19.0 > /sys/bus/pci/drivers/foo/bind (Note: kernels before 2.6.28 may require echo -n). What: /sys/bus/pci/drivers/.../unbind Date: December 2003 Contact: linux-pci@vger.kernel.org Description: Writing a device location to this file will cause the driver to attempt to unbind from the device found at this location. This may be useful when overriding default bindings. The format for the location is: DDDD:BB:DD.F. That is Domain:Bus:Device.Function and is the same as found in /sys/bus/pci/devices/. For example: # echo 0000:00:19.0 > /sys/bus/pci/drivers/foo/unbind (Note: kernels before 2.6.28 may require echo -n). What: /sys/bus/pci/drivers/.../new_id Date: December 2003 Contact: linux-pci@vger.kernel.org Description: Writing a device ID to this file will attempt to dynamically add a new device ID to a PCI device driver. This may allow the driver to support more hardware than was included in the driver's static device ID support table at compile time. The format for the device ID is: VVVV DDDD SVVV SDDD CCCC MMMM PPPP. That is Vendor ID, Device ID, Subsystem Vendor ID, Subsystem Device ID, Class, Class Mask, and Private Driver Data. The Vendor ID and Device ID fields are required, the rest are optional. Upon successfully adding an ID, the driver will probe for the device and attempt to bind to it. For example: # echo "8086 10f5" > /sys/bus/pci/drivers/foo/new_id What: /sys/bus/pci/drivers/.../remove_id Date: February 2009 Contact: Chris Wright <chrisw@sous-sol.org> Description: Writing a device ID to this file will remove an ID that was dynamically added via the new_id sysfs entry. The format for the device ID is: VVVV DDDD SVVV SDDD CCCC MMMM. That is Vendor ID, Device ID, Subsystem Vendor ID, Subsystem Device ID, Class, and Class Mask. The Vendor ID and Device ID fields are required, the rest are optional. After successfully removing an ID, the driver will no longer support the device. This is useful to ensure auto probing won't match the driver to the device. For example: # echo "8086 10f5" > /sys/bus/pci/drivers/foo/remove_id What: /sys/bus/pci/rescan Date: January 2009 Contact: Linux PCI developers <linux-pci@vger.kernel.org> Description: Writing a non-zero value to this attribute will force a rescan of all PCI buses in the system, and re-discover previously removed devices. Depends on CONFIG_HOTPLUG. What: /sys/bus/pci/devices/.../remove Date: January 2009 Contact: Linux PCI developers <linux-pci@vger.kernel.org> Description: Writing a non-zero value to this attribute will hot-remove the PCI device and any of its children. Depends on CONFIG_HOTPLUG. What: /sys/bus/pci/devices/.../rescan Date: January 2009 Contact: Linux PCI developers <linux-pci@vger.kernel.org> Description: Writing a non-zero value to this attribute will force a rescan of the device's parent bus and all child buses, and re-discover devices removed earlier from this part of the device tree. Depends on CONFIG_HOTPLUG. What: /sys/bus/pci/devices/.../vpd Date: February 2008 Contact: Ben Hutchings <bhutchings@solarflare.com> Loading @@ -9,3 +95,30 @@ Description: that some devices may have malformatted data. If the underlying VPD has a writable section then the corresponding section of this file will be writable. What: /sys/bus/pci/devices/.../virtfnN Date: March 2009 Contact: Yu Zhao <yu.zhao@intel.com> Description: This symbolic link appears when hardware supports the SR-IOV capability and the Physical Function driver has enabled it. The symbolic link points to the PCI device sysfs entry of the Virtual Function whose index is N (0...MaxVFs-1). What: /sys/bus/pci/devices/.../dep_link Date: March 2009 Contact: Yu Zhao <yu.zhao@intel.com> Description: This symbolic link appears when hardware supports the SR-IOV capability and the Physical Function driver has enabled it, and this device has vendor specific dependencies with others. The symbolic link points to the PCI device sysfs entry of Physical Function this device depends on. What: /sys/bus/pci/devices/.../physfn Date: March 2009 Contact: Yu Zhao <yu.zhao@intel.com> Description: This symbolic link appears when a device is a Virtual Function. The symbolic link points to the PCI device sysfs entry of the Physical Function this device associates with. Loading
CREDITS +18 −4 Original line number Diff line number Diff line Loading @@ -495,6 +495,11 @@ S: Kopmansg 2 S: 411 13 Goteborg S: Sweden N: Paul Bristow E: paul@paulbristow.net W: http://paulbristow.net/linux/idefloppy.html D: Maintainer of IDE/ATAPI floppy driver N: Dominik Brodowski E: linux@brodo.de W: http://www.brodo.de/ Loading Loading @@ -1407,8 +1412,8 @@ P: 1024D/77D4FC9B F5C5 1C20 1DFC DEC3 3107 54A4 2332 ADFC 77D4 FC9B D: National Language Support D: Linux Internationalization Project D: German Localization for Linux and GNU software S: Kriemhildring 12a S: 65795 Hattersheim am Main S: Auf der Fittel 18 S: 53347 Alfter S: Germany N: Christoph Hellwig Loading Loading @@ -2166,7 +2171,6 @@ D: Initial implementation of VC's, pty's and select() N: Pavel Machek E: pavel@ucw.cz E: pavel@suse.cz D: Softcursor for vga, hypertech cdrom support, vcsa bugfix, nbd D: sun4/330 port, capabilities for elf, speedup for rm on ext2, USB, D: work on suspend-to-ram/disk, killing duplicates from ioctl32 Loading Loading @@ -2643,6 +2647,10 @@ S: C/ Mieses 20, 9-B S: Valladolid 47009 S: Spain N: Gadi Oxman E: gadio@netvision.net.il D: Original author and maintainer of IDE/ATAPI floppy/tape drivers N: Greg Page E: gpage@sovereign.org D: IPX development and support Loading Loading @@ -3572,6 +3580,12 @@ N: Dirk Verworner D: Co-author of German book ``Linux-Kernel-Programmierung'' D: Co-founder of Berlin Linux User Group N: Riku Voipio E: riku.voipio@iki.fi D: Author of PCA9532 LED and Fintek f75375s hwmon driver D: Some random ARM board patches S: Finland N: Patrick Volkerding E: volkerdi@ftp.cdrom.com D: Produced the Slackware distribution, updated the SVGAlib Loading Loading @@ -3739,7 +3753,7 @@ S: 93149 Nittenau S: Germany N: Gertjan van Wingerde E: gwingerde@home.nl E: gwingerde@gmail.com D: Ralink rt2x00 WLAN driver D: Minix V2 file-system D: Misc fixes Loading
Documentation/00-INDEX +2 −2 Original line number Diff line number Diff line Loading @@ -86,6 +86,8 @@ cachetlb.txt - describes the cache/TLB flushing interfaces Linux uses. cdrom/ - directory with information on the CD-ROM drivers that Linux has. cgroups/ - cgroups features, including cpusets and memory controller. connector/ - docs on the netlink based userspace<->kernel space communication mod. console/ Loading @@ -98,8 +100,6 @@ cpu-load.txt - document describing how CPU load statistics are collected. cpuidle/ - info on CPU_IDLE, CPU idle state management subsystem. cpusets.txt - documents the cpusets feature; assign CPUs and Mem to a set of tasks. cputopology.txt - documentation on how CPU topology info is exported via sysfs. cris/ Loading
Documentation/ABI/testing/debugfs-kmemtrace 0 → 100644 +71 −0 Original line number Diff line number Diff line What: /sys/kernel/debug/kmemtrace/ Date: July 2008 Contact: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro> Description: In kmemtrace-enabled kernels, the following files are created: /sys/kernel/debug/kmemtrace/ cpu<n> (0400) Per-CPU tracing data, see below. (binary) total_overruns (0400) Total number of bytes which were dropped from cpu<n> files because of full buffer condition, non-binary. (text) abi_version (0400) Kernel's kmemtrace ABI version. (text) Each per-CPU file should be read according to the relay interface. That is, the reader should set affinity to that specific CPU and, as currently done by the userspace application (though there are other methods), use poll() with an infinite timeout before every read(). Otherwise, erroneous data may be read. The binary data has the following _core_ format: Event ID (1 byte) Unsigned integer, one of: 0 - represents an allocation (KMEMTRACE_EVENT_ALLOC) 1 - represents a freeing of previously allocated memory (KMEMTRACE_EVENT_FREE) Type ID (1 byte) Unsigned integer, one of: 0 - this is a kmalloc() / kfree() 1 - this is a kmem_cache_alloc() / kmem_cache_free() 2 - this is a __get_free_pages() et al. Event size (2 bytes) Unsigned integer representing the size of this event. Used to extend kmemtrace. Discard the bytes you don't know about. Sequence number (4 bytes) Signed integer used to reorder data logged on SMP machines. Wraparound must be taken into account, although it is unlikely. Caller address (8 bytes) Return address to the caller. Pointer to mem (8 bytes) Pointer to target memory area. Can be NULL, but not all such calls might be recorded. In case of KMEMTRACE_EVENT_ALLOC events, the next fields follow: Requested bytes (8 bytes) Total number of requested bytes, unsigned, must not be zero. Allocated bytes (8 bytes) Total number of actually allocated bytes, unsigned, must not be lower than requested bytes. Requested flags (4 bytes) GFP flags supplied by the caller. Target CPU (4 bytes) Signed integer, valid for event id 1. If equal to -1, target CPU is the same as origin CPU, but the reverse might not be true. The data is made available in the same endianness the machine has. Other event ids and type ids may be defined and added. Other fields may be added by increasing event size, but see below for details. Every modification to the ABI, including new id definitions, are followed by bumping the ABI version by one. Adding new data to the packet (features) is done at the end of the mandatory data: Feature size (2 byte) Feature ID (1 byte) Feature data (Feature size - 3 bytes) Users: kmemtrace-user - git://repo.or.cz/kmemtrace-user.git
Documentation/ABI/testing/ima_policy 0 → 100644 +61 −0 Original line number Diff line number Diff line What: security/ima/policy Date: May 2008 Contact: Mimi Zohar <zohar@us.ibm.com> Description: The Trusted Computing Group(TCG) runtime Integrity Measurement Architecture(IMA) maintains a list of hash values of executables and other sensitive system files loaded into the run-time of this system. At runtime, the policy can be constrained based on LSM specific data. Policies are loaded into the securityfs file ima/policy by opening the file, writing the rules one at a time and then closing the file. The new policy takes effect after the file ima/policy is closed. rule format: action [condition ...] action: measure | dont_measure condition:= base | lsm base: [[func=] [mask=] [fsmagic=] [uid=]] lsm: [[subj_user=] [subj_role=] [subj_type=] [obj_user=] [obj_role=] [obj_type=]] base: func:= [BPRM_CHECK][FILE_MMAP][INODE_PERMISSION] mask:= [MAY_READ] [MAY_WRITE] [MAY_APPEND] [MAY_EXEC] fsmagic:= hex value uid:= decimal value lsm: are LSM specific default policy: # PROC_SUPER_MAGIC dont_measure fsmagic=0x9fa0 # SYSFS_MAGIC dont_measure fsmagic=0x62656572 # DEBUGFS_MAGIC dont_measure fsmagic=0x64626720 # TMPFS_MAGIC dont_measure fsmagic=0x01021994 # SECURITYFS_MAGIC dont_measure fsmagic=0x73636673 measure func=BPRM_CHECK measure func=FILE_MMAP mask=MAY_EXEC measure func=INODE_PERM mask=MAY_READ uid=0 The default policy measures all executables in bprm_check, all files mmapped executable in file_mmap, and all files open for read by root in inode_permission. Examples of LSM specific definitions: SELinux: # SELINUX_MAGIC dont_measure fsmagic=0xF97CFF8C dont_measure obj_type=var_log_t dont_measure obj_type=auditd_log_t measure subj_user=system_u func=INODE_PERM mask=MAY_READ measure subj_role=system_r func=INODE_PERM mask=MAY_READ Smack: measure subj_user=_ func=INODE_PERM mask=MAY_READ
Documentation/ABI/testing/sysfs-bus-pci +113 −0 Original line number Diff line number Diff line What: /sys/bus/pci/drivers/.../bind Date: December 2003 Contact: linux-pci@vger.kernel.org Description: Writing a device location to this file will cause the driver to attempt to bind to the device found at this location. This is useful for overriding default bindings. The format for the location is: DDDD:BB:DD.F. That is Domain:Bus:Device.Function and is the same as found in /sys/bus/pci/devices/. For example: # echo 0000:00:19.0 > /sys/bus/pci/drivers/foo/bind (Note: kernels before 2.6.28 may require echo -n). What: /sys/bus/pci/drivers/.../unbind Date: December 2003 Contact: linux-pci@vger.kernel.org Description: Writing a device location to this file will cause the driver to attempt to unbind from the device found at this location. This may be useful when overriding default bindings. The format for the location is: DDDD:BB:DD.F. That is Domain:Bus:Device.Function and is the same as found in /sys/bus/pci/devices/. For example: # echo 0000:00:19.0 > /sys/bus/pci/drivers/foo/unbind (Note: kernels before 2.6.28 may require echo -n). What: /sys/bus/pci/drivers/.../new_id Date: December 2003 Contact: linux-pci@vger.kernel.org Description: Writing a device ID to this file will attempt to dynamically add a new device ID to a PCI device driver. This may allow the driver to support more hardware than was included in the driver's static device ID support table at compile time. The format for the device ID is: VVVV DDDD SVVV SDDD CCCC MMMM PPPP. That is Vendor ID, Device ID, Subsystem Vendor ID, Subsystem Device ID, Class, Class Mask, and Private Driver Data. The Vendor ID and Device ID fields are required, the rest are optional. Upon successfully adding an ID, the driver will probe for the device and attempt to bind to it. For example: # echo "8086 10f5" > /sys/bus/pci/drivers/foo/new_id What: /sys/bus/pci/drivers/.../remove_id Date: February 2009 Contact: Chris Wright <chrisw@sous-sol.org> Description: Writing a device ID to this file will remove an ID that was dynamically added via the new_id sysfs entry. The format for the device ID is: VVVV DDDD SVVV SDDD CCCC MMMM. That is Vendor ID, Device ID, Subsystem Vendor ID, Subsystem Device ID, Class, and Class Mask. The Vendor ID and Device ID fields are required, the rest are optional. After successfully removing an ID, the driver will no longer support the device. This is useful to ensure auto probing won't match the driver to the device. For example: # echo "8086 10f5" > /sys/bus/pci/drivers/foo/remove_id What: /sys/bus/pci/rescan Date: January 2009 Contact: Linux PCI developers <linux-pci@vger.kernel.org> Description: Writing a non-zero value to this attribute will force a rescan of all PCI buses in the system, and re-discover previously removed devices. Depends on CONFIG_HOTPLUG. What: /sys/bus/pci/devices/.../remove Date: January 2009 Contact: Linux PCI developers <linux-pci@vger.kernel.org> Description: Writing a non-zero value to this attribute will hot-remove the PCI device and any of its children. Depends on CONFIG_HOTPLUG. What: /sys/bus/pci/devices/.../rescan Date: January 2009 Contact: Linux PCI developers <linux-pci@vger.kernel.org> Description: Writing a non-zero value to this attribute will force a rescan of the device's parent bus and all child buses, and re-discover devices removed earlier from this part of the device tree. Depends on CONFIG_HOTPLUG. What: /sys/bus/pci/devices/.../vpd Date: February 2008 Contact: Ben Hutchings <bhutchings@solarflare.com> Loading @@ -9,3 +95,30 @@ Description: that some devices may have malformatted data. If the underlying VPD has a writable section then the corresponding section of this file will be writable. What: /sys/bus/pci/devices/.../virtfnN Date: March 2009 Contact: Yu Zhao <yu.zhao@intel.com> Description: This symbolic link appears when hardware supports the SR-IOV capability and the Physical Function driver has enabled it. The symbolic link points to the PCI device sysfs entry of the Virtual Function whose index is N (0...MaxVFs-1). What: /sys/bus/pci/devices/.../dep_link Date: March 2009 Contact: Yu Zhao <yu.zhao@intel.com> Description: This symbolic link appears when hardware supports the SR-IOV capability and the Physical Function driver has enabled it, and this device has vendor specific dependencies with others. The symbolic link points to the PCI device sysfs entry of Physical Function this device depends on. What: /sys/bus/pci/devices/.../physfn Date: March 2009 Contact: Yu Zhao <yu.zhao@intel.com> Description: This symbolic link appears when a device is a Virtual Function. The symbolic link points to the PCI device sysfs entry of the Physical Function this device associates with.