Compare commits

...

130 Commits
v4.1 ... master

Author SHA1 Message Date
Костянтин Сергійович 1d4eea4926
[loc] update Ukrainian translation to latest 2024-05-16 11:11:23 +01:00
Pete Batard e596e1a550
[loc] update Pollock to prevent an issue with Outlook and whitespaces 2024-05-14 16:49:04 +01:00
Riku Brander 49be8c34b5
[loc] update Finnish translation to latest 2024-05-14 16:36:18 +01:00
Aldis Tutins 3fdf6e121f
[loc] update Latvian translation to latest 2024-05-14 16:25:46 +01:00
a1346054 97d69d84c6
[misc] correct author's name
* Closes #2477.
2024-05-13 17:07:59 +01:00
Pete Batard 45423becd5
[vhd] fix VHDX being inadvertently saved as VHD
* Addresses the error reported in #2468.
* Also use memmove instead of memcpy where overlapping data is involved.
2024-05-12 13:06:23 +01:00
Martin Kubánik fb43dc8957
[loc] update Slovak translation to latest 2024-05-12 12:26:17 +01:00
Roberto Boriotti d12e845b9a
[loc] update Italian translation to latest 2024-05-12 12:14:48 +01:00
Miloš Ljubičić 236b4e60eb
[loc] update Serbian translation to latest 2024-05-11 11:40:56 +01:00
Jakub Zieciak b2f06d746b
[loc] update Norwegian and Polish translations 2024-05-10 11:21:38 +01:00
Ben Gamer 8727d3b3f6
[loc] update Croatian translation to latest 2024-05-10 11:13:29 +01:00
Marco A. Ramirez Madrid ef2cac008d
[loc] update Spanish translation to latest 2024-05-10 11:08:51 +01:00
Csizmadia Gábor 9476bb41ad
[loc] update Hungarian translation to latest 2024-05-10 10:47:34 +01:00
五月雨 412f1c63da
[loc] update Japanese translation to latest 2024-05-10 10:42:13 +01:00
Christos Alvanos 0c38268665
[loc] update Greek translation to latest 2024-05-10 10:39:25 +01:00
Pete Batard 03d46b3d87
[misc] silence a benign log warning
* Also update ChangeLog for 4.5 BETA.
2024-05-08 15:44:32 +01:00
Pete Batard d0bc05077a
[misc] improve size based constants
* Make them more explicit by ensuring that they use a size suffix.
* Also improve whitespace consistency.
* Also make sure that we display the search for conflicting process message
  in the status on a search operation that may timeout.
2024-05-07 12:53:40 +01:00
Pete Batard 180a61736c
[misc] move the revoked UEFI bootloader prompt before the ISO → ESP one
* Also fix a potential buffer overflow when displaying the detailed HDD vs UFD score due to the
  safe_sprintf() macro re-evaluating the expression passed as parameter.
* Also refactor and clean up the the safe_###() macros to avoid similar issues.
* Also use FOF_NO_UI as flag for SHDeleteDirectoryExU(), which may alleviate some Alt-D errors.
2024-05-06 19:47:36 +01:00
Pete Batard 2106be0c3b
[iso] fix an assertion with mt86plus_7.00_64.grub.iso
* Also fix a couple typos in Brazilian Portuguese translation.
2024-05-06 19:39:26 +01:00
Marcos Mello ddc7f1b89d
[loc] update Portuguese (Brazilian) translation to latest 2024-05-03 20:12:35 +01:00
Pete Batard 39a5ae6d36
[core] fix "drive cannot find the sector requested" when writing VHDs
* As opposed to the ERROR_HANDLE_EOF we get when reading sectors from the VHD file directly, now that we mount
  VHD/VHDX for reading, and access them as regular disks, we also need to process ERROR_SECTOR_NOT_FOUND as an
  indicator for the end of the drive.
* Also switch to using GetOverlappedResultEx() with a timeout since we no longer have to cater for Windows 7.
* Closes #2468.
2024-05-01 12:48:42 +01:00
Pete Batard cba95f7710
[grub] update GRUB to 2.12 release 2024-04-30 11:59:40 +01:00
Erfan Al 4df3fd8d16
[loc] update Persian translation to latest 2024-04-30 11:57:20 +01:00
VenusGirl d38664dde8
[loc] update Korean translation to latest 2024-04-29 10:44:27 +01:00
Mehmetali Kuran 7d63b78571
[loc] update Turkish translation to latest 2024-04-29 10:39:27 +01:00
Wang JiaWei 2767fdbfd3
[loc] update Chinese Simplified translation to latest 2024-04-29 10:36:34 +01:00
Ahmed Rasnaama 569b1e2971
[loc] update Arabic translation to latest 2024-04-29 10:31:15 +01:00
Pete Batard 2a6df95cad
[iso] fix persistence option not being added for Ubuntu 24.04
* Ubuntu changed their GRUB config format yet again, so our search for the kernel
  config no longer works, and the 'persistent' option doesn't get added.
* Switch to a more generic '/casper/vmlinuz' search, though it might have unintended
  consequences...
* Also fix a possible double free in FormatExtFs().
2024-04-28 13:56:18 +01:00
Pete Batard 83e0bdad7a
[md5sum] fix unwanted partial matches in is_in_md5sum()
* is_in_md5sum() could partially match a string against another one, which, aside from matching
  unwanted files, could also lead to files not being identified as being in the md5sum.txt if
  the previous partial match happened to be with the current search target.
* Fix this by making sure that we always match a whole path followed by '/n', '/r' or '/0'.
2024-04-28 13:26:38 +01:00
Pete Batard df9e333f3a
[md5sum] fix bootloaders not being extracted unless referenced in md5sum.txt
* Not all md5sum.txt (e.g. Ubuntu 24.04) will reference the UEFI bootloader,
  so we can't rely on using that data for the bootloader extraction.
* Instead, formally test for the presence of the bootloader on disk.
2024-04-27 18:21:57 +01:00
Pete Batard 4ec57dc5d7
[iso] fix improper size being returned by ExtractISOFile()
* The call returned the size occupied in blocks rather than the actual file size,
  leading to issues such as Rufus not being able to identify the GRUB version used
  by Ubuntu 24.04.
2024-04-26 21:54:43 +01:00
Pete Batard 6ac2dfb0df
[misc] fix temp_dir not being properly initialized
* The static_/safe_ string macros were not properly designed to handle the case where
  an expression such as strlen() rather than a static value was passed for the count,
  leading to unexpected results, such as excessive truncation of strings. Fix that.
* Also fix a buffer overflow in GetDevices() due to using a wrong string length.
2024-04-26 19:15:48 +01:00
Suttirak Mattayawerakiat 00dc0473b5
[loc] update Thai translation to latest 2024-04-26 12:57:20 +01:00
Pete Batard 4286871f50
[loc] fix versioning for Russian and French
* Also update README for upcoming feature.
2024-04-26 11:06:37 +01:00
Thilo Langbein 2c3e560ba3
[loc] update German translation to latest 2024-04-26 10:54:32 +01:00
Thomas De Rocker 2ecb8b54b2
[loc] upate Dutch translation to latest 2024-04-26 10:52:09 +01:00
Sopor 4019bc135f
[loc] update Swedish translation to latest 2024-04-26 10:46:05 +01:00
Дмитрий Ерохин 0a956f38b0
[loc] update Russian translation to latest 2024-04-26 10:19:13 +01:00
Itiel 37ccc8d1e1
[loc] update Hebrew translation to latest 2024-04-26 10:12:20 +01:00
Mike Handberg Hovedskov 13ae9b3339
[loc] update Danish translation to latest 2024-04-26 10:09:45 +01:00
Richard Kahl 11f74cde01
[loc] update Czech translation to latest 2024-04-26 10:05:09 +01:00
Fedorovici Constantin-Robert b28eb88e3b
[loc] update Romanian translation to latest 2024-04-26 10:01:50 +01:00
Minh Nguyễn Quang 8b0531e4dc
[loc] update Vietnamese translation to latest 2024-04-26 09:56:56 +01:00
Pete Batard 855a06d3a0
[loc] update French translation to latest
* Also change the time of cron execution for the lock issues workflow.
2024-04-25 12:51:28 +01:00
Pete Batard eb45c97667
[bled] fix memory allocation issue for 32-bit in unpack_lzma_stream()
* Vulnerability discovered and reported by Mansour Gashasbi (@gashasbi).
* Also update the lock thread workflow to try to avoid recent failures.
2024-04-22 12:56:28 +01:00
Pete Batard 513c5f44a5
[misc] fix possible buffer overflows in _snprintf()
* _snprintf() is not always guaranteed to NUL terminate a string which could
  lead to  buffer overflows in iso_extract_files() and iso_extract_files().
* Fix this by switching to using the more secure _snprintf_s().
* Vulnerability discovered and reported by Mansour Gashasbi (@gashasbi).
* For good measure, we also switch to the strncat_s() where possible and also
  use memmove() instead of memcpy()/strcpy() as the behaviour of the latter on
  overlapping memory regions is undefined.
* Also fix some additional MinGW warnings regarding casts and nb_blocks.
2024-04-17 17:19:03 +01:00
Pete Batard 92ac1c770c
[wue] don't display WUE when '/sources/$OEM$/$$/Panther/unattend.xml' exists
* Closes #2451.
* Also update Coverity workflow to use latest actions/upload-artifact.
2024-04-15 16:35:52 +01:00
Pete Batard f813eb05d8
[iso] fix a buffer overflow in syslinux.c
* p[safe_strlen(p)] = 0; was pointless and could lead to a buffer overflow if
  the string was not already NUL terminated, so remove it and make sure we
  process a buffer that either contains legitimate Syslinux version strings
  (that are NUL terminated always) or that has been read through read_file()
  (that always adds a NUL terminator to the buffer).
* Also fix some whitespaces in related code sections and switch to using
  read_file() for GRUB version lookup.
* Vulnerability discovered and reported by Mansour Gashasbi (@gashasbi).
2024-04-10 10:26:31 +02:00
Pete Batard 34e6e43a97
[efi] update UEFI:NTFS to latest
* This updates UEFI:NTFS to the v2.5 release:
  https://github.com/pbatard/uefi-ntfs/releases/tag/v2.5
2024-04-09 22:49:31 +02:00
Pete Batard 8a8e418751
[iso] fix a buffer overflow in iso9660/iso9660_fs.c
* Whereas the length of the buffer allocated for the UTF-8 filename string is
  the same length as the UCS-2 (which means it can store twice as many UTF-8
  bytes as there are characters in the filename), it is still possible for the
  converted UTF-8 string to overflow this buffer if the name contains glyphs
  that use 3 or 4-byte sequences.
* As a result, use strncpy with the actual size of the UTF-8 filename buffer
  (the following bytes are calloc'd to zero so the truncated string will be
  NUL terminated) and produce a warning if the filename is truncated.
* Vulnerability discovered and reported by Mansour Gashasbi (@gashasbi).
2024-04-09 00:09:21 +02:00
Pete Batard 4eda8d9d5c
[process] add extra exception handling on NtClose()
* Also fix a typo in Norwegian translation (Closes #2453).
2024-04-04 17:40:20 +01:00
Pete Batard 5061af2b7c
[md5sum] compute and add md5sum_totalbytes to pre-existing md5sum.txt 2024-04-04 17:28:00 +01:00
Pete Batard dd8314b2f0
[ui] add runtime UEFI media validation as a selectable advanced option
* Also add Ctrl-A as a new cheat-mode to toggle the use of Rufus MBR (which is enabled by default)
  which replaces the previous UI checkbox. The Disk ID field is now completely removed as we now
  use the default values for XP and non XP installs, and will expect people with multiple disks to
  disconnect all except the one where they plan to install Windows.
2024-04-02 17:18:06 +01:00
Pete Batard 6dac531552
[misc] don't pass an output size in DeviceIoControl() when not needed
* Also improve partition creation and address 2 Coverity warnings.
2024-04-01 14:56:06 +01:00
Pete Batard 8a5a5a318a
[misc] improve readability of error code handling
* Also don't pass a read size value in WriteFileWithRetry() if we don't use it.
2024-04-01 02:16:41 +01:00
Pete Batard 52ca79816f
[md5sum] Add md5sum.txt creation and runtime UEFI validation
* This allows *runtime* validation of UEFI bootable media, such as Windows
  or Linux installers, which, considering the unreliability of USB flash
  drives, we assert is a a much better proposal than write-time validation
  that utilities like balenaEcther (and to a lesser extent MCT) provide.
* Based on uefi-md5sum (https://github.com/pbatard/uefi-md5sum).
* Unconditionally activated on ISO extraction for GPT targets for now.
  This will be changed to a user selectable option later.
2024-03-29 00:48:05 +00:00
Pete Batard b7568ab30a
[uefi] add the uefi-md5sum resources
* See https://github.com/pbatard/uefi-md5sum.
* The ia32, x64 and aa64 have been Secure Boot signed by Microsoft.
2024-03-28 23:50:41 +00:00
Pete Batard a59389e1e1
[misc] move hash definitions to rufus.h
* Also always add an extra NUL to read_file(), some additional macros in missing.h
  and fix some warnings in process.c.
2024-03-27 19:02:24 +00:00
Pete Batard d3f78c4e01
[efi] update UEFI:NTFS to latest
* Also fix missing original translator for Korean and remove an unwanted warning message.
2024-03-25 18:56:23 +00:00
Pete Batard 5eae8a6441
[cmp] Enable extraction of zip archives outside of ISO copy mode
* This enables the use of Ctrl-SELECT to also extract files from a .zip
  when using non-bootable, DOS, UEFI-NTFS, etc.
* Also clean up some uprintf line terminations and some additional code.
* Also fix some Coverity and MinGW warnings.
2024-03-12 17:41:27 +00:00
Pete Batard abc33122a0
[iso] increase write buffer size to work around a bug in the AMI UEFI NTFS driver
* The AMI UEFI NTFS driver (version 0x10000), which is used in many modern systems from
  ASUS, Gigabyte, intel and so on, has a major bug whereas depending on the size of the
  buffers that are used to write the data onto the NTFS volume from Windows, as well as
  read the data from the NTFS volume from UEFI, the data being read may be incorrect
  (for details on this, see https://github.com/pbatard/AmiNtfsBug).
* Especially, it appears that if the size of the buffer used to write data on Windows is
  smaller than the NTFS cluster size, the bug may be triggered.
* Because of this, we increase the size of ISO write buffer to 64 KB since, per
  https://support.microsoft.com/en-gb/topic/default-cluster-size-for-ntfs-fat-and-exfat-9772e6f1-e31a-00d7-e18f-73169155af95
  this is the maximum cluster size that can be used for NTFS volumes.
* This increase in size should also help with performance somewhat.
* Also add support for C11's _Static_assert() which may come handy.
2024-03-12 12:53:30 +00:00
Pete Batard 8738e7a7de
[vhd] fix truncated write operation when using a VHDX image as source
* The legacy code we used for writing disk images used the size of the source image as
  the maximum number of bytes we should copy, which is fine for uncompressed DD or VHD
  images, but not so much for compressed VHDX ones. So we now make sure to use the
  actual size of the virtual disk, which we obtain when mounting the VHD/VHDX.
* Also fix log progress update as well as a MinGW warning.
2024-03-04 00:49:57 +00:00
Bella Zhang 026afa7e3d
[iso] add Circle Linux to the list of Red-Hat derivatives
* Closes #2414.
2024-02-09 17:04:40 +00:00
Pete Batard 172888ac32
[dos] fix a CodeQL warning and harmonize code 2024-02-09 17:00:42 +00:00
Pete Batard 15e3886499
[iso] enable persistence support for Linux Mint
* Mint users sure are lucky that one of them *lied their way through* pretending that
  persistence actually used to work with previous version of Mint, when it never did,
  because they got us going through a whole refactor of the partition creation process
  just so we could make Mint persistence work.
* Closes #2428.
* Also fix a Coverity warning.
2024-02-09 16:59:28 +00:00
Pete Batard 0f23c47184
[misc] refactor partition creation 2024-02-08 14:17:03 +00:00
Pete Batard 164d4b0ab0
[misc] update workflows to use upload-artifact@v4
* See actions/upload-artifact#483, actions/upload-artifact#472#issuecomment-1861571655
  and ultimately https://github.com/actions/upload-artifact/blob/main/merge/README.md.
2024-02-07 20:11:09 +00:00
Pete Batard 1be7eaf306
[net] fix Fido script not being able to be launched again on user cancel
* Also update workflows to latest setup-msbuild
* Closes #2419
2024-02-07 19:24:17 +00:00
Pete Batard ac9a3f42d8
[misc] fix revoked bootloaders message does not display when using MBR
* Also update version to rufus-next
2024-02-06 20:02:36 +00:00
Pete Batard c2b2624b62
[vhd] improve handing of user selected filename on save to VHD/FFU
* Use of '*.*' as pattern in file save dialog could lead to assert and crash, so
  we now try to derive the type of image to be saved from the file extension. We
  also did not properly handle user cancellation in the file save dialog.
* Also update iso9660/iso9660_fs.c to latest proposal of El Torito image handling.
* Also add a couple asserts in the hash table functions so that, if these ever get
  triggered we will pick them from Windows Store reports, and clean up code.
2024-02-03 18:39:44 +00:00
Pete Batard 018ed3414b
[iso] improve El Torito image handling
* Update to latest libcdio proposal and fix incorrect image size.
* Also remove unnecessary calls in packme.cmd.
2024-01-24 17:51:40 +00:00
Pete Batard f6fd520d2a
[appstore] prevent packaging of ALPHA or BETA versions
* Also add package version override
2024-01-18 14:24:53 +00:00
Pete Batard b63f9ae93c
Rufus 4.4 (Build 2103) 2024-01-17 14:11:50 +00:00
Pete Batard fff39c56e8
[misc] fix UEFI:NTFS partition not being added when needed in MBR mode
* Also add support for SD card readers identifying themselves as SDXC.
2024-01-17 14:10:46 +00:00
Pete Batard 710bfe7f4d
[iso] work around ISOs that use broken symbolic links for UEFI bootloaders
* Per linuxmint/linuxmint#622 some ISOs may have a /EFI/boot/bootx64.efi that
  is a symbolic to a nonexisting file.
* This is originally due to a Debian bug that was fixed in:
  5bff71fea2
* Work around this by trying to extract a working bootx64.efi from the El-Torito image.
* Also improve DumpFatDir() to not replace already existing files.
2024-01-16 17:27:37 +00:00
Pete Batard ae6732c07b
[iso] add basic El-Torito image parsing to libcdio
* Based on El-Torito specs found at https://pdos.csail.mit.edu/6.828/2014/readings/boot-cdrom.pdf.
* Follows 7-zip's virtual '[BOOT]/#...' naming conventions (though we don't check for the full name).
* Limited to 8 NoEmul images.
2024-01-16 17:21:32 +00:00
Fred 2cebf914fd
[fat] align start of data region to MB
* Closes #2387
2024-01-10 13:36:50 +00:00
Pete Batard 70e87482c1
[misc] add some more Windows edition names
* Closes #2380
* Also fix a typo in the Norwegian translation, with thanks to @Legendarion
* Closes #2397
2024-01-10 12:53:07 +00:00
Pete Batard ebe01cc7b6
[dev] filter out Microsoft Dev Drives
* Microsoft Dev Drives are VHDs consisting of a small MSR followed by a large (50 GB or more)
  ReFS partition. See https://learn.microsoft.com/en-us/windows/dev-drive/.
* Closes #2395.
2024-01-08 16:43:52 +00:00
Pete Batard 51569d9e13
[misc] silence Coverity warnings
* Also update copyright year and improve uprintf error handling
* Also bump GitHub Actions dependencies. Note that we do NOT want to update to
  upload-artifact v4 because it BREAKS the creation of artifacts from matrix.
  See: https://github.com/actions/upload-artifact#v4---whats-new
* Closes #2382
* Closes #2383
2024-01-08 14:34:57 +00:00
dependabot[bot] 965d82c425
bump dessant/lock-threads from 4 to 5 (#2359)
Bumps [dessant/lock-threads](https://github.com/dessant/lock-threads) from 4 to 5.
- [Release notes](https://github.com/dessant/lock-threads/releases)
- [Changelog](https://github.com/dessant/lock-threads/blob/main/CHANGELOG.md)
- [Commits](https://github.com/dessant/lock-threads/compare/v4...v5)

---
updated-dependencies:
- dependency-name: dessant/lock-threads
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-25 18:24:40 +00:00
johnloopi b6d14d46df
[loc] Fixed typo in Norwegian translation
* Closes #2351
2023-11-14 12:13:49 +00:00
Pete Batard 89c1f8a72c
[iso] add BIOS support for Artix Linux
* Unfortunately, the Artix maintainers decided *NOT* to include the fat
  GRUB module for UEFI, so this will only work for BIOS boot...
2023-11-09 18:06:06 +00:00
Pete Batard e0b5c6d96f
[misc] improve the code related to the commandline hogger deletion
* Also small additional code improvements
2023-11-09 17:39:38 +00:00
Pete Batard 58c56eb398
[vhd] fix a crash when saving .ffu images with release version
* Also update Rufus next to 4.4
2023-10-27 22:45:24 +02:00
Pete Batard 020e0b7c3a
Rufus 4.3 (Build 2090)
* Also fix a CodeQL warning in process.c
2023-10-19 10:31:19 +01:00
Pete Batard 8edb487ac9
[misc] update ChangeLog for 4.3 BETA
* Also minor code cleanups and improvements.
2023-10-12 19:46:10 +01:00
Pete Batard 1630e912d4
[iso] add exception for Mint's LMDE
* Mint have decided to make their installation rely on a working /live/ ➔ /casper/ symlink for LMDE
  thereby breaking the promise of File System Transposition that all Debian derivatives should have.
* Because of this, trying to use FAT32 with LMDE will fail, as reported in linuxmint/live-installer#152.
* Therefore, now that we can replicate symlinks on NTFS, we add an exception to always enforce the use
  of NTFS for LMDE.
2023-10-12 18:28:56 +01:00
Pete Batard e9d588a6e0
[iso] add symlink support for target file systems that support it
* For now that means only NTFS. And we only do that for ISO-9660/Rock Ridge images.
2023-10-12 17:32:20 +01:00
Pete Batard 0bd38abd4e
[syslinux] improve support for Syslinux based Slax ISOs
* For some weird reason appending the base directory to the root syslinux.cfg
  we create does not appear to work with Slax. So we now always patch ldlinux.sys
  to include the base directory.
* Also add an exception to move the /slax/boot/EFI directory to /EFI.
* It should be noted that, as of slax-64bit-slackware-15.0.3.iso, the Slax UEFI
  Syslinux bootloaders appear to be broken (since creating a media without using
  Rufus at all per the Slax documentation does *not* produce a USB drive that was
  bootable in UEFI mode on 2 of the machines I tried).
* Also clean up some iso.c code and fix some unreachable code in ntfssect.c.
* Closes #2336.
* Closes #2338.
2023-10-11 20:46:46 +01:00
Pete Batard 45a5f22d43
[process] move the search for conflicting process to a background thread
* Removes the annoyance of having to wait for the process search to complete before media creation can start.
* Also update the "Process Hacker" references to its new "System Informer" name.
2023-10-10 22:22:45 +01:00
Pete Batard 8859c59548
[iso] count Rock Ridge duplicated files into the total size to process
* Duplicated symlinked Rock Ridge files were not counted into the total size needed
  to process the image and as a result, progress could go over 100% when extracting
  data (e.g. debian-live-12.1.0-amd64-lxqt.iso).
* Fix this by adding the duplicated files twice in the total block size.
2023-09-23 17:07:55 +01:00
Pete Batard 1fc790295c
[efi] update UEFI:NTFS to latest
* Add Windows bootmgr detection to report a more explicit error on security issues.
2023-09-08 17:33:25 +01:00
Pete Batard 99bffe8364
[misc] add '.wic' to the list of default image extensions
* '.wic' are DD images used by the Yocto project.
* Why Yocto chose to use their own extension instead of using the de-facto '.img' is beyond me but hey...
* Also update GitHub Actions dependencies to latest.
* Closes #2319.
2023-09-08 17:14:09 +01:00
Pete Batard 98725a0d5f
[misc] fix improper processing of net related errors
* With thanks to @Wack0
* Also silence a Coverity warning
2023-09-08 16:58:41 +01:00
Pete Batard 94ecf74c5f
[misc] use FORMAT_MESSAGE_FROM_HMODULE where possible and drop our custom message tables 2023-09-04 11:41:35 +01:00
Pete Batard d5bf53054b
[misc] improve retrieval of core directories
* This *might* help with the issue reported in #2296.
2023-08-28 11:08:03 +01:00
Pete Batard 866aa22a8b
[iso] fix Debian 12 Live not using persistence in BIOS mode
* The Isolinux/Syslinux append line has been moved to /isolinux/live.cfg
  so make sure we patch that file when persistence is enabled.
2023-08-27 23:03:43 +01:00
Pete Batard 9c6b1ad977
[vhd] fix Rufus being unable to open .vhd images
* Due to a typo in vhd.c where the second safe_stricmp() should be against ".vhd" and not ".vhdx" again.
* Also enable the ignore boot marker bypass for VHD/VHDX/FFU and don't misreport those images as
  "compressed disk images".
* Closes #2309.
2023-08-20 13:12:38 +01:00
Pete Batard 5b6574d6f6
[misc] add S Mode detection to Windows version reporting
* With thanks to @Wack0
2023-08-18 17:38:12 +01:00
Pete Batard c5ad16fdeb
[wue] add an expert feature to restrict a Windows installation to S Mode
* This is placed behind an expert wall (Ctrl-Alt-E) on account that:
  - If you happen to boot a Windows To Go drive in S Mode on a computer, it may set any
    existing Windows installation there to S Mode as well, *even if their disk is offline!*
  - It can be *exceedingly* tricky to get out of S Mode, as the SkuPolicyRequired registry
    trick alone may not be enough (i.e. You can have very much a Windows install in S Mode
    *without* SkuPolicyRequired being set anywhere).
* Also set version to rufus-next and fix a ChangeLog typo.
2023-08-15 11:15:16 +01:00
Pete Batard 5084317dd7
Rufus 4.2 (Build 2074)
* Also update UEFI:NTFS's NTFS driver to v1.7
2023-07-26 12:54:49 +01:00
AJIOB b81b440a20
[uefi] fix search for bootloaders in FAT images that have an 'EFI' volume label
* Per https://en.wikipedia.org/wiki/Design_of_the_FAT_file_system#Directory_entry it
  is possible to have a FAT directory entry with a 'EFI' volume label alongside with
  a 'EFI' subdirectory.
* If that happens, then the current Syslinux libfat_searchdir() code may treat the
  'EFI' volume label as an empty subdirectory and say that there are no bootloaders,
  even if the 'EFI\Boot\Boot###.efi' binaries really do exist.
* Fix this by filtering out entries with the 'volume label' attribute (0x08).
* For good measure, also filter out entries with the 'device' attribute (0x40), as
  it is technically possible to create a 'EFI' device leading to the same issue.
* Closes #2288.
* Closes #2289.
2023-07-24 23:55:47 +01:00
Pete Batard 64e85ed09a
[uefi] don't revoke Windows 11 or post Windows 10 20H1 boot media yet
* As opposed to what we originally asserted, Microsoft did enact a blanket revocation
  in SkuSiPolicy.p7b for all post 1703 up to 2305 Windows UEFI bootloaders.
* As a result, unconditionally copying SkuSiPolicy.p7b will result in media as recent
  as Windows 11 22H2 (v1) being flagged as revoked, which we don't want to enforce as
  long as Microsoft themselves haven't entered the enforcing phase of their Black
  Lotus mitigation (currently planned for early 2024).
* Because of this, while we add some revocation detection for post 1703 bootloaders,
  we set it to only go as far as 20H1 for now, which means that all post 20H1 Windows
  10 media and all Windows 11 media will not yet be flagged by Rufus as revoked and
  will still boot in a Secure Boot environment due to lack of an SkuSiPolicy.p7b.
* Ultimately, per #2244 we may look for a BOOTMGRSECURITYVERSIONNUMBER resource to
  blanket revoke all post 1703 - pre 2305 Windows UEFI bootloaders.
* Also remove the now unused comdlg32 library from the linker.
2023-07-15 23:20:59 +02:00
Pete Batard 3329304e67
[grub] update DB for GRUB 2.12~rc1
* Also fix some Coverity warnings in stdlg.c.
2023-07-13 10:11:52 +02:00
Pete Batard 65b84ea99d
[loc] update French translation 2023-07-10 12:40:55 +02:00
Pete Batard 5191c68337
[ui] keep user preferred image type when saving drive to VHD
* Also fix a Coverity warning and use a better description for SELECT image types.
2023-07-10 11:34:50 +02:00
Pete Batard 5bbcba8534
[vhd] add write support for .vhdx and .ffu images
* Also move VHD mounting function calls from iso.c to vhd.c and remove unused VHD footer elements.
2023-07-06 19:47:26 +01:00
Pete Batard f411d526d6
[misc] attempt to fix DLL address resolver for ARM64
* SymLoadModuleEx() on the DLL fails (with ERROR_SUCCESS, sic) on ARM64, so we have to resort
  to loading the DLL in memory and look for the "RSDS" section to access the GUID and Age.
* Except that, once you sort that, you end up with SymEnumSymbols() producing two separate
  addresses for each symbol, on account that the Windows 11 ARM64 DLLs are actually an
  unholy union of X64 and ARM64 *in the same binary*, under an abomination that Microsoft
  calls ARM64X (See https://learn.microsoft.com/en-us/windows/arm/arm64x-pe for details).
* And, of course, Microsoft did not provide any means during PDB enumeration to tell which
  address is for which arch. Especially, the bloody pSymInfo->TypeIndex, that they could
  easily have used for this, is utterly pointless as it remains set to 0...
* This means that, even after all this effort, we're still nowhere close to have a solution
  that can make DLL address resolution work on Windows 11 ARM64.
2023-07-05 22:25:25 +01:00
Pete Batard 0363bfe503
[misc] add an address resolver for internal DLL function calls
* Not sure if we'll use this to hook into FfuCaptureImage()/FfuApplyImage()/FfuMountImage()
  directly. But at least, if we ever need it, it's there...
2023-07-05 18:36:58 +01:00
Pete Batard ef345bf106
[uefi] fix UEFI bootloader extraction when case doesn't match
* With ISO-9660 being case sensitive, we could end up in situations where trying to extract
  '/efi/boot/bootx64.efi' for revocation validation would fail if the file on the image was
  stored as '/EFI/boot/bootx64.efi' (e.g. Debian 12).
* Fox this by storing the exact UEFI bootloader path we detected during ISO scan, and using
  this path for file extraction.
* Also add a Cancel choice to the revocation dialog and harmonize whitespaces.
2023-07-04 18:05:30 +01:00
ИEØ_ΙΙØZ bb66dfc492
[loc] update Traditional Chinese translation
* Closes #2274.
2023-07-04 13:29:27 +01:00
Pete Batard 10dbfdd7e1
[core] make sure the main partition size is aligned to the cluster size
* Having NTFS partitions properly aligned to the cluster size can drastically
  improve the speed of capturing a disk to an FFU image, as, when the size
  is aligned, the FFU capture uses the actual NTFS allocation map to only read
  and capture the clusters that are actually in use, whereas, if no aligned,
  FFU capture falls back to a sector by sector copy that is both much slower
  and also includes unwanted leftover garbage.
* Also only enable FFU when we detect FFUProvider.dll as a system library.
2023-07-04 13:26:04 +01:00
Pete Batard 0b1c68635a
[vhd] add experimental save to Full Flash Update (FFU) image support
* Full Flash Update (FFU) image support was added to dism with Windows 10 1709
  and is an alternate way to save a virtual hard disk for restoration.
* While more modern than VHD/VHDX, FFU creation only works for drives with file
  systems that Windows natively recognizes (FAT, NTFS) and that look like Windows
  installation media, so you can forget about FFU'ing a Linux disk.
* The other *intentional* drawback that Microsoft added is that they don't want
  anybody but themselves being able to create and restore FFU images, so, even
  as they have nice FfuApplyImage()/FfuCaptureImage() calls in FfuProvider.dll
  they have decided not to make these public.
* This means that, since we don't have time to spend on figuring and direct
  hooking internal DLL calls for x86_32, x86_64, ARM and ARM64 (and worrying
  that Microsoft may ever so slightly change their DLL between revs to break
  our hooks), we just call on dism.exe behind the scenes to create the FFU.
2023-07-03 23:57:04 +01:00
Pete Batard f9370e002e
[iso] fix a crash when parsing Windows ISOs with MinGW x86_32
* MinGW32's delay loading functionality is not yet up to par with MSVC's and especially, for
  some libraries (wininet, virtdisk) attempting to delay load them simply crashes the runtime.
* This results in the MinGW32 version of the app crashing when selecting a Windows ISO, as we
  will then try to mount the ISO using virtdisk to poke the build version. Note that this crash
  does not happen with the MinGW64 version or with MSVC.
* Closes #2272.
* Also fix a Coverity warning in SaveImageThread() and improve the VHD saving code.
2023-07-02 13:15:51 +01:00
Pete Batard d4c9f2dfa1
[vhd] enable saving device to compressed VHDX
* Now that we don't have to deal with Windows 7, we can use CreateVirtualDisk() to
  automatically dump a physical disk to VHD/VHDX, so do just that
* Also move the relevant VHD/ISO imaging call to the appropriate source.
2023-07-01 20:43:26 +01:00
Pete Batard 1476e9cd8b
[uefi] fix path of SKUSiPolicy.p7b for WOW
* 32-bit x86 running on 64-bit x86 Windows needs to get SKUSiPolicy.p7b from sysnative.
* Also fix automatic extension switching in file dialog and a small MinGW warning in Bled.
2023-07-01 20:22:10 +01:00
Pete Batard c47ee4c435
[cmp] update Bled to latest
* Adds the provision of default buffer size in bled_init()
2023-06-30 13:05:42 +01:00
Pete Batard c717c7789b
[cmp] further ZIP64 and overall Bled improvements
* The ZIP64 extra record may not be the first one, so add processing for all extra zip records.
* Also add extra sanity checks to try to appease Coverity and properly detect short writes.
2023-06-29 21:15:35 +01:00
Pete Batard f233191d54
[cmp] update Bled to latest
* This adds ZIP64 support, which is required to extract zip archives that are larger than 4GB.
* Closes #2264
* Also fix a MinGW warning in pki.c and improve the UEFI revocation messages.
2023-06-28 17:40:11 +01:00
Pete Batard 52a5551749
[uefi] improve revoked UEFI bootloader reporting
* Remove duplicates from Microsoft's SKUSiPolicy.p7b
* Also display the number of revoked from embedded
* Also use Microsoft's official capitalization for SKUSiPolicy.p7b's target path
2023-06-22 11:18:49 +01:00
Pete Batard 16570f8662
[uefi] warn about revoked UEFI bootloaders when creating Windows To Go drives
* Also move the warning after the WUE dialog.
* Also work around another possible access violation in process.c.
2023-06-19 10:38:30 +02:00
Pete Batard c59e9209eb
[uefi] factorize SkuSiPolicy.p7b copying code and apply it for Windows To Go
* Also don't forget to credit the original authors of the PowerShell gist we derived our code from!
2023-06-19 00:04:08 +02:00
Pete Batard 7eb9a6f16b
[misc] fix some benign Coverity warnings 2023-06-18 19:09:15 +02:00
Pete Batard be5b590cfb
[uefi] add parsing and copying of the system's SkuSiPolicy.p7b
* Instead of embedding the content of the most recent revoked bootloader hashes in db.h
  we now parse the system's SkuSiPolicy.p7b to do so. This has the drawback of not alerting
  users running Rufus on systems where SkuSiPolicy.p7b is not up to date, but I believe the
  trade-off is worth it.
* We now also copy the system's SkuSiPolicy.p7b to the created media when possible (for
  Windows 10 or later), so that Microsoft's WDAC UEFI revocations can apply during boot.
2023-06-18 19:07:45 +02:00
Pete Batard 43764268de
[uefi] add detection and warning for revoked bootloaders
* Considering that alerting users to potential security breaches that may be
  exploited by boot media should also be performed by application that create
  them, we add detection for all the currently known revoked UEFI bootloaders,
  be it the ones from the official UEFI DBX as well as the ones from Windows'
  SkuSiPolicy.p7b, and warn the user when one such bootloader is detected on
  their source media.
* Note that, to actually be revoked, the bootloaders flagged through SkuSiPolicy
  require the copying of the .p7b to the boot media, which we are currently
  not enacting but will perform in a subsequent commit.
* Also fix a Coverity warning in hash.c.
2023-06-16 20:36:50 +02:00
Pete Batard c4b1b23832
[hash] add PE256 hash functions
* Mostly copied from U-Boot's https://github.com/u-boot/u-boot/blob/master/lib/efi_loader/efi_image_loader.c
2023-06-13 17:57:34 +02:00
Pete Batard 090bfb9770
[misc] rename checksum.c to hash.c 2023-06-11 16:18:26 +01:00
Pete Batard 3e81b38c2d
[misc] try to support folks who use a symlink for their temp dir
* Microsoft's WIM mounting APIs can't use symlinked directories and
  some folks want to use a symlinked temp dir...
* Closes #2084
2023-06-05 14:08:25 +01:00
Pete Batard 71e99add76
[iso] increase ISO → ESP limit for Debian 12
* Debian 12 ARM64 netinst ISOs have doubled in size to be larger than 512 MB,
  so we need to increase MAX_ISO_TO_ESP_SIZE as a result.
* Also add extra NULL checks in process.c as some people seem to run into
  NULL deref issues.
* Also set version to rufus-next and update some URLs/text files.
2023-06-05 13:29:18 +01:00
130 changed files with 10873 additions and 5509 deletions

View File

@ -25,7 +25,7 @@ Checklist
---------
- [ ] I looked at https://github.com/pbatard/rufus/wiki/FAQ to see if my question has already been answered.
- [ ] I performed a search in the issue tracker for similar issues using keywords relevant to my problem, such as the error message I got from the log.
- [ ] I clicked the 'Log' button or pressed <kbd>Ctrl</kbd>-<kbd>L</kbd> in Rufus, or used [DebugView](https://learn.microsoft.com/en-us/sysinternals/downloads/debugview), and copy/pasted the log into the section that says `<FULL LOG>` below.
- [ ] I clicked the 'Log' button (🗒️) or pressed <kbd>Ctrl</kbd>-<kbd>L</kbd> in Rufus, or used [DebugView](https://learn.microsoft.com/en-us/sysinternals/downloads/debugview), and copy/pasted the log into the section that says `<FULL LOG>` below.
- [ ] The log I am copying is the FULL log, starting with the line `Rufus version: x.y.z` - I have NOT removed any part of it.
Additionally (if applicable):

View File

@ -40,15 +40,15 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
uses: github/codeql-action/init@v3
with:
languages: cpp
- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v1
uses: microsoft/setup-msbuild@v2
with:
msbuild-architecture: x64
@ -56,4 +56,4 @@ jobs:
run: msbuild ${{env.SOLUTION_FILE_PATH}} /m /p:Configuration=${{ env.BUILD_CONFIGURATION}},Platform=${{ env.TARGET_PLATFORM }}
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
uses: github/codeql-action/analyze@v3

View File

@ -27,7 +27,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
@ -44,7 +44,7 @@ jobs:
run: echo "${{github.workspace}}/cov-analysis-win64/bin" >> $GITHUB_PATH
- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v1
uses: microsoft/setup-msbuild@v2
- name: Build with Coverity
run: |
@ -52,7 +52,7 @@ jobs:
cov-build.exe --dir cov-int msbuild ${{ env.SOLUTION_FILE_PATH }} /m /p:Configuration=${{ env.BUILD_CONFIGURATION }},Platform=${{ env.TARGET_PLATFORM }}
- name: Publish Coverity artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: cov-int
path: cov-int/

View File

@ -3,15 +3,15 @@ name: '[cron] Lock stale issues'
on:
schedule:
- cron: '0 0 * * *'
- cron: '33 22 * * *'
jobs:
lock:
runs-on: ubuntu-latest
steps:
- uses: dessant/lock-threads@v4
- uses: dessant/lock-threads@v5
with:
github-token: ${{ github.token }}
github-token: ${{ secrets.GITHUB_TOKEN }}
issue-inactive-days: '90'
issue-comment: >
This thread has been automatically locked since there has not been

View File

@ -53,7 +53,7 @@ jobs:
upx
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
@ -63,14 +63,18 @@ jobs:
shell: bash
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
# This ONLY works if the shell is bash or if using $env:GITHUB_OUTPUT
run: echo "option=--enable-alpha" >> $GITHUB_OUTPUT
run: |
echo "option=--enable-alpha" >> $GITHUB_OUTPUT
sed -b -i 's/VALUE "InternalName", "Rufus"/VALUE "InternalName", "Rufus (ALPHA)"/' ./src/rufus.rc
- name: Set BETA
id: set_beta
shell: bash
if: ${{ startsWith(github.ref, 'refs/tags/') && contains(github.ref, 'BETA') }}
# This ONLY works if the shell is bash or if using $env:GITHUB_OUTPUT
run: echo "option=--enable-beta" >> $GITHUB_OUTPUT
run: |
echo "option=--enable-beta" >> $GITHUB_OUTPUT
sed -b -i 's/VALUE "InternalName", "Rufus"/VALUE "InternalName", "Rufus (BETA)"/' ./src/rufus.rc
- name: Build
run: |
@ -92,7 +96,18 @@ jobs:
- name: Upload artifacts
if: ${{ github.event_name == 'push' }}
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: MinGW
name: ${{ matrix.sys }}
path: ./*.exe
Extra-Step-To-Merge-Artifacts-Thanks-To-Upload-Artifact-v4-Breaking-Backwards-Compatibility:
runs-on: windows-latest
needs: MinGW-Build
steps:
- name: Merge Artifacts
uses: actions/upload-artifact/merge@v4
if: ${{ github.event_name == 'push' }}
with:
name: MinGW
delete-merged: true

View File

@ -39,13 +39,13 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v1
uses: microsoft/setup-msbuild@v2
with:
msbuild-architecture: x64
@ -54,14 +54,18 @@ jobs:
shell: bash
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
# This ONLY works if the shell is bash or if using $env:GITHUB_OUTPUT
run: echo "option=/DALPHA" >> $GITHUB_OUTPUT
run: |
echo "option=/DALPHA" >> $GITHUB_OUTPUT
sed -b -i 's/VALUE "InternalName", "Rufus"/VALUE "InternalName", "Rufus (ALPHA)"/' ./src/rufus.rc
- name: Set BETA
id: set_beta
shell: bash
if: ${{ startsWith(github.ref, 'refs/tags/') && contains(github.ref, 'BETA') }}
# This ONLY works if the shell is bash or if using $env:GITHUB_OUTPUT
run: echo "option=/DBETA" >> $GITHUB_OUTPUT
run: |
echo "option=/DBETA" >> $GITHUB_OUTPUT
sed -b -i 's/VALUE "InternalName", "Rufus"/VALUE "InternalName", "Rufus (BETA)"/' ./src/rufus.rc
- name: Build
shell: cmd
@ -82,10 +86,21 @@ jobs:
curl --request POST --url https://www.virustotal.com/api/v3/monitor/items --header 'x-apikey: ${{ secrets.VIRUSTOTAL_API_KEY }}' --form path='/rufus_${{ matrix.TARGET_PLATFORM }}.exe' --form file=@./rufus_${{ matrix.TARGET_PLATFORM }}.exe
- name: Upload artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
if: ${{ github.event_name == 'push' }}
with:
name: VS2022
name: ${{ matrix.TARGET_PLATFORM }}
path: |
./*.exe
./*.pdb
Extra-Step-To-Merge-Artifacts-Thanks-To-Upload-Artifact-v4-Breaking-Backwards-Compatibility:
runs-on: windows-latest
needs: VS2022-Build
steps:
- name: Merge Artifacts
uses: actions/upload-artifact/merge@v4
if: ${{ github.event_name == 'push' }}
with:
name: VS2022
delete-merged: true

13
.gitignore vendored
View File

@ -1,27 +1,40 @@
*.a
*.aps
*.appx
*.appxupload
*.bak
*.db
*.db-shm
*.db-wal
*.dep
*.diff
*.dll
*.efi
*.exe
*.htm
*.idb
*.ipch
*.la
*.lib
*.lo
*.lock
*.log
*.mac
*.mo
*.mp4
*.ncb
*.nope
*.o
*.obj
*.old
*.opendb
*.opt
*.org
*.p7x
*.patch
*.pc
*.pdb
*.pdf
*.plg
*.res
*.sig

View File

@ -19,7 +19,7 @@ TARGET := $(word 1,$(subst -, ,$(TUPLE)))
DEF_SUFFIX := $(if $(TARGET:x86_64=),.def,.def64)
.PHONY: all
all: dwmapi-delaylib.lib virtdisk-delaylib.lib wintrust-delaylib.lib
all: dwmapi-delaylib.lib version-delaylib.lib wintrust-delaylib.lib
%.def64: %.def
$(AM_V_SED) "s/@.*//" $< >$@

View File

@ -367,7 +367,7 @@ uninstall-am:
.PHONY: all
all: dwmapi-delaylib.lib virtdisk-delaylib.lib wintrust-delaylib.lib
all: dwmapi-delaylib.lib version-delaylib.lib wintrust-delaylib.lib
%.def64: %.def
$(AM_V_SED) "s/@.*//" $< >$@

4
.mingw/version.def Normal file
View File

@ -0,0 +1,4 @@
EXPORTS
GetFileVersionInfoSizeW@8
GetFileVersionInfoW@16
VerQueryValueA@16

View File

@ -1,5 +0,0 @@
EXPORTS
AttachVirtualDisk@24
GetVirtualDiskPhysicalPath@12
DetachVirtualDisk@12
OpenVirtualDisk@24

View File

@ -133,12 +133,12 @@
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<Link>
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;virtdisk.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>advapi32.lib;comctl32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;wintrust.lib;%(AdditionalDependencies)</AdditionalDependencies>
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
<DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;virtdisk.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
<DelayLoadDLLs>advapi32.dll;comctl32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;version.dll;wintrust.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<ResourceCompile>
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@ -162,12 +162,12 @@
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<Link>
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;virtdisk.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>advapi32.lib;comctl32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;wintrust.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.15063.0\um\arm</AdditionalLibraryDirectories>
<DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;virtdisk.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
<DelayLoadDLLs>advapi32.dll;comctl32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;version.dll;wintrust.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<ResourceCompile>
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@ -193,12 +193,12 @@
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<Link>
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;virtdisk.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>advapi32.lib;comctl32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;wintrust.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\arm64</AdditionalLibraryDirectories>
<DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;virtdisk.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
<DelayLoadDLLs>advapi32.dll;comctl32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;version.dll;wintrust.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<ResourceCompile>
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@ -229,12 +229,12 @@
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<Link>
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;virtdisk.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>advapi32.lib;comctl32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;wintrust.lib;%(AdditionalDependencies)</AdditionalDependencies>
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
<DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;virtdisk.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
<DelayLoadDLLs>advapi32.dll;comctl32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;version.dll;wintrust.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<ResourceCompile>
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@ -260,13 +260,13 @@
<StringPooling>true</StringPooling>
</ClCompile>
<Link>
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;virtdisk.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>advapi32.lib;comctl32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;wintrust.lib;%(AdditionalDependencies)</AdditionalDependencies>
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
<AdditionalOptions>/BREPRO %(AdditionalOptions)</AdditionalOptions>
<DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;virtdisk.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
<DelayLoadDLLs>advapi32.dll;comctl32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;version.dll;wintrust.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<ResourceCompile>
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@ -292,13 +292,13 @@
<StringPooling>true</StringPooling>
</ClCompile>
<Link>
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;virtdisk.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>advapi32.lib;comctl32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;wintrust.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.15063.0\um\arm</AdditionalLibraryDirectories>
<AdditionalOptions>/BREPRO %(AdditionalOptions)</AdditionalOptions>
<DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;virtdisk.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
<DelayLoadDLLs>advapi32.dll;comctl32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;version.dll;wintrust.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<ResourceCompile>
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@ -326,13 +326,13 @@
<StringPooling>true</StringPooling>
</ClCompile>
<Link>
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;virtdisk.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>advapi32.lib;comctl32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;wintrust.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\arm64</AdditionalLibraryDirectories>
<AdditionalOptions>/BREPRO %(AdditionalOptions)</AdditionalOptions>
<DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;virtdisk.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
<DelayLoadDLLs>advapi32.dll;comctl32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;version.dll;wintrust.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<ResourceCompile>
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@ -363,13 +363,13 @@
<StringPooling>true</StringPooling>
</ClCompile>
<Link>
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;virtdisk.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>advapi32.lib;comctl32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;wintrust.lib;%(AdditionalDependencies)</AdditionalDependencies>
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
<AdditionalOptions>/BREPRO %(AdditionalOptions)</AdditionalOptions>
<DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;virtdisk.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
<DelayLoadDLLs>advapi32.dll;comctl32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;version.dll;wintrust.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
</Link>
<ResourceCompile>
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@ -397,7 +397,7 @@
<ClCompile Include="..\src\process.c" />
<ClCompile Include="..\src\re.c" />
<ClCompile Include="..\src\rufus.c" />
<ClCompile Include="..\src\checksum.c" />
<ClCompile Include="..\src\hash.c" />
<ClCompile Include="..\src\smart.c" />
<ClCompile Include="..\src\stdfn.c" />
<ClCompile Include="..\src\stdio.c" />

View File

@ -66,7 +66,7 @@
<ClCompile Include="..\src\smart.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\checksum.c">
<ClCompile Include="..\src\hash.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\pki.c">

View File

@ -1,9 +1,50 @@
o Version 4.5 (2024.05.??)
Add a new advanced option, that adds runtime UEFI media validation to suitable images (Windows, most Linux)
Move the 'Use Rufus MBR' advanced option to a cheat mode (Alt-A)
Fix truncation of VHDX images, as well as a benign error message when writing VHD/VHDX
Fix support for Linux persistence in some configurations (Mint, Ubuntu 24.04)
Fix multiple potential vulnerabilities (with thanks to Mansour Gashasbi)
Update internal GRUB to version 2.12
Update UEFI:NTFS to latest (now always uses the ntfs-3g driver, rather than the buggy AMI NTFS one)
Increase buffer size when copying ISO files, in an attempt to minimize the AMI NTFS UEFI driver bug
Improve partition creation handling
Don't display the WUE dialog when a conflicting 'unattend.xml' already exists
o Version 4.4 (2024.01.17)
Add workaround for distros that use broken symbolic links as their UEFI bootloaders (such as Mint 21.3)
Add support for GRUB 2.12
Fix a crash when saving .ffu images
Fix UEFI:NTFS partition not being added, in MBR mode, for some Linux ISOs
Prevent Microsoft Dev Drives from being listed
Improve support for SDXC card readers
Improve Large FAT32 formatting by aligning start of data regions to 1 MB (courtesy of Fred)
o Version 4.3 (2023.10.19)
Add support for Rock Ridge symbolic links preservation when NTFS is used
Add an exception to enforce NTFS for Linux Mint's LMDE
Add an expert feature to restrict a Windows installation to S Mode
Fix persistence support for Debian 12 when booted in BIOS mode
Fix a regression that prevented the opening of .vhd images
Update UEFI:NTFS to report a more explicit error on bootmgr security issues
Improve the search for conflicting processes by running it in a background thread
Improve support for Slax Linux
o Version 4.2 (2023.07.26)
Add detection and warning for UEFI revoked bootloaders (including ones revoked through SkuSiPolicy.p7b)
Add ZIP64 support, to extract .zip images that are larger than 4 GB
Add saving and restoring current drive to/from compressed VHDX image
Add saving and restoring current drive to/from compressed FFU (Full Flash Update) image [EXPERIMENTAL]
Fix a crash when trying to open Windows ISOs, with the MinGW compiled x86 32-bit version
Fix an issue where ISOs that contain a boot image with an 'EFI' label are not detected as bootable
Increase the ISO → ESP limit for Debian 12 netinst images
Ensure that the main partition size is aligned to the cluster size
o Version 4.1 (2023.05.31)
Add timeouts on enumeration queries that may stall on some systems
Restore MS-DOS drive creation through the download of binaries from Microsoft
Update the log button icon
Fix UEFI:NTFS incompatibility with Windows Dev Kit 2023 platform
Fix more out of range pointer errors with Ubuntu/Fedora when booting in BIOS mode
Fix more GRUB 'out of range pointer' errors with Ubuntu/Fedora when booting in BIOS mode
o Version 4.0 (2023.04.26)
Fix persistent partition not working with Ubuntu 23.04

View File

@ -23,9 +23,10 @@ Features
* Create bootable drives from bootable disk images, including compressed ones
* Create Windows 11 installation drives for PCs that don't have TPM or Secure Boot
* Create [Windows To Go](https://en.wikipedia.org/wiki/Windows_To_Go) drives
* Create VHD/DD, VHDX and FFU images of an existing drive
* Create persistent Linux partitions
* Create VHD/DD images of a drive
* Compute MD5, SHA-1, SHA-256 and SHA-512 checksums of the selected image
* Perform runtime validation of UEFI bootable media
* Improve Windows installation experience by automatically setting up OOBE parameters (local account, privacy options, etc.)
* Perform bad blocks checks, including detection of "fake" flash drives
* Download official Microsoft Windows 8, Windows 10 or Windows 11 retail ISOs

View File

@ -1,2 +1,2 @@
@echo off
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x64\signtool" sign /v /sha1 3dbc3a2a0e9ce8803b422cfdbc60acd33164965d /fd SHA256 /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /td SHA256 %1
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x64\signtool" sign /v /sha1 3dbc3a2a0e9ce8803b422cfdbc60acd33164965d /fd SHA256 /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /td SHA256 %*

20
configure vendored
View File

@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.71 for rufus 4.1.
# Generated by GNU Autoconf 2.71 for rufus 4.5.
#
# Report bugs to <https://github.com/pbatard/rufus/issues>.
#
@ -611,8 +611,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='rufus'
PACKAGE_TARNAME='rufus'
PACKAGE_VERSION='4.1'
PACKAGE_STRING='rufus 4.1'
PACKAGE_VERSION='4.5'
PACKAGE_STRING='rufus 4.5'
PACKAGE_BUGREPORT='https://github.com/pbatard/rufus/issues'
PACKAGE_URL='https://rufus.ie'
@ -1269,7 +1269,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures rufus 4.1 to adapt to many kinds of systems.
\`configure' configures rufus 4.5 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1336,7 +1336,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of rufus 4.1:";;
short | recursive ) echo "Configuration of rufus 4.5:";;
esac
cat <<\_ACEOF
@ -1428,7 +1428,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
rufus configure 4.1
rufus configure 4.5
generated by GNU Autoconf 2.71
Copyright (C) 2021 Free Software Foundation, Inc.
@ -1504,7 +1504,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by rufus $as_me 4.1, which was
It was created by rufus $as_me 4.5, which was
generated by GNU Autoconf 2.71. Invocation command line was
$ $0$ac_configure_args_raw
@ -2767,7 +2767,7 @@ fi
# Define the identity of the package.
PACKAGE='rufus'
VERSION='4.1'
VERSION='4.5'
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@ -5309,7 +5309,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by rufus $as_me 4.1, which was
This file was extended by rufus $as_me 4.5, which was
generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@ -5365,7 +5365,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
rufus config.status 4.1
rufus config.status 4.5
configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\"

View File

@ -1,4 +1,4 @@
AC_INIT([rufus], [4.1], [https://github.com/pbatard/rufus/issues], [rufus], [https://rufus.ie])
AC_INIT([rufus], [4.5], [https://github.com/pbatard/rufus/issues], [rufus], [https://rufus.ie])
AM_INIT_AUTOMAKE([-Wno-portability foreign no-dist no-dependencies])
AC_CONFIG_SRCDIR([src/rufus.c])
AC_CONFIG_MACRO_DIR([m4])

View File

@ -13,7 +13,7 @@
• 源代码: https://github.com/pbatard/rufus
• 更新日志: https://github.com/pbatard/rufus/blob/master/ChangeLog.txt","Rufus 是個能格式化並製作可開機 USB 快閃磁碟機USB 隨身碟、Memory Stick 等等)的工具。
• 官方網站: https://rufus.ie
• 源碼: https://github.com/pbatard/rufus
• 源碼: https://github.com/pbatard/rufus
• 更新日誌: https://github.com/pbatard/rufus/blob/master/ChangeLog.txt","Rufus je aplikacija koja olakšava formatiranje i stvaranje USB pokretačkih jedinica.
• Službena stranica: https://rufus.ie
• Šifra izvora: https://github.com/pbatard/rufus
@ -114,18 +114,20 @@
• Trang web chính thức: https://rufus.ie
• Mã nguồn: https://github.com/pbatard/rufus
• Nhật ký thay đổi: https://github.com/pbatard/rufus/blob/master/ChangeLog.txt"
"ReleaseNotes","3","Text","• Add timeouts on enumeration queries that may stall on some systems
• Restore MS-DOS drive creation through the download of binaries from Microsoft
• Update the log button icon
• Fix UEFI:NTFS incompatibility with Windows Dev Kit 2023 platform
• Fix more out of range pointer errors with Ubuntu/Fedora when booting in BIOS mode",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"ReleaseNotes","3","Text","• Add workaround for distros that use broken symbolic links as their UEFI bootloaders (such as Mint 21.3)
• Add support for GRUB 2.12
• Fix a crash when saving .ffu images
• Fix UEFI:NTFS partition not being added, in MBR mode, for some Linux ISOs
• Prevent Microsoft Dev Drives from being listed
• Improve support for SDXC card readers
• Improve Large FAT32 formatting by aligning start of data regions to 1 MB (courtesy of Fred)",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"Title","4","Text","Rufus",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"ShortTitle","5","Text","",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"SortTitle","6","Text","",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"VoiceTitle","7","Text","",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"ShortDescription","8","Text","","Rufus - The Reliable USB Formatting Utility","Rufus - أداة فرمتة الـ USB جديرة بالثقة","Rufus - Надеждната USB форматираща програма","Rufus - 可靠的 USB 格式化工具","Rufus - 快速可靠的 USB 格式化工具","Rufus - Pouzdan alat za formatiranje USB-a","Rufus - Spolehlivý program pro formátování USB","Rufus - Det pålidelige USB-formateringsværktøj","Rufus - de betrouwbare USB-formatteertool","Rufus - Luotettava USB-alustusohjelma","Rufus - L'utilitaire de formatage USB fiable","Rufus - Das zuverlässige USB-Formatierungstool","Rufus - Μία αξιόπιστη εφαρμογή διαμόρφωσης USB","Rufus - הכלי לאתחול USB האמין ביותר","Rufus - A megbízható USB-formázó segédprogram","Rufus - Utilitas Pemformatan USB yang Handal","Rufus - Utility affidabile per la formattazione di unità USB","Rufus - 信頼性の高い USB フォーマット ユーティリティ","Rufus - 신뢰할 수 있는 USB 포맷 유틸리티","Rufus - uzticama un vienkārša USB formatēšanas utilīta","Rufus - patikima USB formatavimo priemonė","Rufus - Utiliti pemformatan USB yang dipercayai","Rufus - Det pålitelige USB-formateringsprogrammet","Rufus، ابزاری کاربردی و قابل‌اطمینان برای فرمت کردن درایوهای USB","Rufus - niezawodne narzędzie do formatowania USB","Rufus - O Utilitário de Formatação USB Confiável","Rufus - O utilitário de confiança para formatação USB","Rufus - Instrumentul de încredere pentru formatări USB","Rufus - Надежная утилита для форматирования USB","Rufus - Pouzdan Alat Za Formatiranje USB diska","Rufus - Spoľahlivý program pre formátovanie USB","Rufus - zanesljivi pripomoček za USB formatiranje","Rufus, la herramienta de formateo de USBs en la que puedes confiar","Rufus - Det pålitliga verktyget för USB-formatering","Rufus - ยูทิลิตี้การฟอร์แมต USB ที่ไว้ใจได้","Rufus - Güvenilir USB Biçimlendirme Programı","Rufus - надійна утиліта для форматування USB-накопичувачів","Rufus - Tiện ích Định dạng USB Đáng tin cậy"
"DevStudio","9","Text","Pete Batard",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"CopyrightTrademarkInformation","12","Text","© 2011-2023 Pete Batard",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"CopyrightTrademarkInformation","12","Text","© 2011-2024 Pete Batard",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"AdditionalLicenseTerms","13","Text","https://www.gnu.org/licenses/gpl-3.0.html","This application is licensed under the terms of the GNU Public License (GPL) version 3.
See https://www.gnu.org/licenses/gpl-3.0.en.html for details.","هذا التطبيق مُرخص بموجب شروط رخصة جنو (GNU) العمومية (GPL) الإصدار 3.
راجع https://www.gnu.org/licenses/gpl-3.0.ar.html لمزيد من التفاصيل.","Тази програма е лицензирана според условията на GNU Public License (GPL) версия 3.
@ -259,19 +261,19 @@ Xem tại https://www.gnu.org/licenses/gpl-3.0.html để biết thêm chi tiế
"OptionalPromo358x358","611","Relative path (or URL to file in Partner Center)","",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"OptionalPromo1000x800","612","Relative path (or URL to file in Partner Center)","",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"OptionalPromo414x180","613","Relative path (or URL to file in Partner Center)","",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"Feature1","700","Text","","Format USB, flash card and virtual drives to FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","تهيئة USB وبطاقة الفلاش ومحركات الأقراص الافتراضية إلى FAT / FAT32 / NTFS / UDF / exFAT / ReFS / ext2 / ext3","Форматиране на USB, карти памет и виртуални устройства с FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","将 U 盘、存储卡或虚拟驱动器格式化为 FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3 格式","將 U 盤、存儲卡或虛擬驅動器格式化為 FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3 格式","Formatirajte USB, flash karticu i virtualne pogone na FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formátování USB, flash karet a virtuálních jednotek na FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formater USB, flash kort og virtuelle drev til FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","USB, flashkaart en virtuele schijven formatteren naar FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Alusta USB-asemia, muistikortteja ja virtuaalisia asemia muotoon FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatez des périphériques USB, des cartes flash et des disques virtuels en FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatieren von USB, Flash-Karte und virtuellen Laufwerken in FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Μορφοποίηση USB, κάρτας flash και εικονικών μονάδων δίσκου σε FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","אתחול USB, כרטיסי זיכרון וכוננים וירטואליים ל־FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","USB, flash memóriakártyák és virtuális meghajtók formázása FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3 fájlrendszerre","Format USB, kartu flash dan penyimpanan maya ke FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatta USB, flash card e unità virtuali in FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","USBメモリやSDカード、仮想ドライブをFAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3でフォーマットします。","USB, 플래시 카드 및 가상 드라이브를 FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3로 포맷","Formatē USB, atmiņas kartes un virtuālos diskus formātos FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Suformatuokite USB, flash kortelę ir virtualius diskus į FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatkan USB, kad flash dan pemacu maya kepada FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formater USB, minnekort og virtuelle disker til FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","فرمت USB، فلش کارت و درایوهای مجازی به FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Sformatuj nośnik używając: FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatar dispositivos USB, cartões flash e discos virtuais com FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatar dispositivos USB, cartão de memória e drives virtuais em FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatează USB, card flash si drive-uri virtuale la FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Форматировать USB, флешки и виртуальные диски в FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatiraj USB, flash kartice, i virtualne diskove u FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Naformátujte USB, kartu a virtuálne disky do FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","FormatIRANJE USB, bliskavice in virtualnih pogonov na FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatee USB, tarjetas flash y unidades virtuales a FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatera USB-enheter, flash-kort och virtuella enheter till FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","ฟอร์แมต USB, แฟลชการ์ด หรือไดร์ฟจำลองให้อยู่ในรูปแบบของ FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","USB, flash kart ve sanal sürücüleri FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3 olarak biçimlendirin","Форматування USB-накопичувачів, флешок, карток пам'яті у FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Định dạng USB, thẻ nhớ hoặc ổ nhớ ảo với FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3"
"Feature2","701","Text","","Create FreeDOS bootable USB drives","إنشاء محركات أقراص USB قابلة للتشغيل من FreeDOS","Създаване на FreeDOS стартиращ USB устройства","创建 FreeDOS 可启动驱动器","創建 FreeDOS 可啟動驅動器","Stvaranje FreeDOS USB pogona za pokretanje","Vytvoření bootovacích disků USB se systémem FreeDOS","Lav FreeDOS opstartsbare USB drev","FreeDOS opstartbare USB-schijven aanmaken","Luo boottaavia FreeDOS USB-asemia","Créez des disques amorçable FreeDOS","FreeDOS-bootfähige USB-Laufwerke erstellen","Δημιουργήστε μονάδες USB με δυνατότητα εκκίνησης FreeDOS","יצירת כונני USB הניתנים לאתחול של FreeDOS","Bootolható FreeDOS USB meghajtó készítése","Buat perangkat USB FreeDOS yang dapat di boot","Crea unità USB avviabili FreeDOS","FreeDOSの起動可能ドライブを作成します。","FreeDOS 부팅 가능한 USB 드라이브 만들기","Izveido FreeDOS ielādes USB ierīces","Sukurkite FreeDOS įkrovos USB diskus","Buat pemacu USB boleh boot FreeDOS","Lag FreeDos oppstartbar USB stick","درایوهای USB قابل بوت FreeDOS را ایجاد کنید","Stwórz bootowalny nośnik USB FreeDOS","Criar discos USB inicializáveis FreeDOS","Criar unidades USB inicializáveis FreeDOS","Crează drive USB bootabil FreeDOS","Создать загрузочные USB-диски FreeDOS","Kreiraj FreeDOS butabilni USB disk","Vytvorte bootovacie usb zariadenia FreeDOS","Ustvarite FreeDOS zagonske USB pogone","Crear unidades USB de arranque FreeDOS","Skapa FreeDOS startbara USB-enheter","สร้าง USB ไดร์ฟที่บูตได้สำหรับระบบ FreeDOS","FreeDOS önyüklenebilir USB sürücüleri oluşturun","Створення завантажувальних пристроїв FreeDOS","Tạo USB có thể khởi động với FreeDOS"
"Feature3","702","Text","","Create bootable drives from bootable ISOs (Windows, Linux, etc.)","إنشاء محركات أقراص قابلة للتمهيد من ملفات ISO القابلة للتمهيد (Windows و Linux وما إلى ذلك)","Създаване на стартиращи устройства от ISO образи (Windows, Linux и др.)","从可启动 ISO 文件 (Windows 和 Linux 等) 创建可启动驱动器","從可啟動 ISO 文件 (Windows 和 Linux 等) 創建可啟動驅動器","Stvaranje pogona za pokretanje iz ISO-ova za pokretanje (Windows, Linux itd.)","Vytváření bootovacích jednotek ze zaváděcích ISO (Windows, Linux atd.)","Lav opstartsbarer drev fra opstartsbarer ISOer (Window, Linux, osv.)","Opstartbare schijven aanmaken via opstartbare ISO's (Windows, Linux, enz)","Luo käynnistysasemia boottaavista ISO-kuvista (Windows, Linux jne.)","Créez des disques amorçables à partir d'images ISOs (Windows, Linux, etc.)","Erstellen bootfähiger Laufwerke aus bootfähigen ISOs (Windows, Linux, etc.)","Δημιουργήστε εκκινήσιμες μονάδες από ISO με δυνατότητα εκκίνησης (Windows, Linux, κ.λπ.)","יצירת כוננים הניתנים לאתחול מקובצי ISO הניתנים לאתחול (Windows, Linux וכו')","Bootolható meghajtók készítése bootolható ISO képfájlokból (Windows, Linux, stb.)","Buat perangkat yang dapat di boot dari ISO (Windows, Linux, dll.)","Crea unità avviabili da ISO avviabili (Windows, Linux, ecc.)","WindowsやLinuxなどのISOファイルから起動可能ドライブを作成します。","부팅 가능한 ISO (Windows, Linux 등)에서 부팅 가능한 드라이브 만들기","Izveido ielādes ierīces no ISO failiem (Windows, Linux, u.c.)","Sukurkite įkrovos diskus iš įkrovos ISO (Windows, Linux ir kt.)","Buat pemacu boleh boot daripada ISO boleh boot (Windows, Linux, dll.)","Lag oppstartabar enhet/disk fra ISOer (Windows, Linux, etc.)","ایجاد درایوهای قابل بوت از ISOهای قابل بوت (ویندوز، لینوکس و غیره)","Twórz dyski rozruchowe z obrazów ISO (Windows, Linux itp.)","Criar discos inicializáveis a partir de ISOs inicializáveis (Windows, Linux, etc.)","Criar unidades inicializáveis a partir de ISOs inicializáveis (Windows, Linux, etc.)","Crează drive-uri bootabile de la ISO-uri bootabile (Windows, Linux, etc.)","Создать загрузочные диски из загрузочных ISO-образов (Windows, Linux и т.д.)","Kreirajte disk jedinice za pokretanje sistema od ISO-a koji se mogu pokretanja sistema (Windows, Linux itd.)","Vytvorte bootovacie jednotky z ISO súborov (Windows, Linux atď.)","Ustvarite zagonske pogone iz zagonskih ISO-jev (Windows, Linux itd.)","Cree unidades de arranque desde ISO de arranque (Windows, Linux, etc.)","Skapa startbara enheter från startbara ISO-filer (Windows, Linux, etc.)","สร้าง USB ไดร์ฟที่บูตได้จากไฟล์อิมเมจที่บูตได้ (เช่น ไฟล์ติดตั้ง Windows หรือ Linux เป็นต้น)","Önyüklenebilir ISO'lardan önyüklenebilir sürücüler oluşturun (Windows, Linux, vb.)","Створення завантажувальних пристроїв з завантажувальних образів (Windows, Linux, тощо)","Tạo ổ đĩa có thể khởi động từ các file ISO có thể khởi động (Windows, Linux, v.v...)"
"Feature4","703","Text","","Create bootable drives from bootable disk images, including compressed ones","إنشاء محركات أقراص قابلة للتمهيد من صور الأقراص القابلة للتمهيد ، بما في ذلك الأقراص المضغوطة","Създаване на стартиращи устройства от образи, включително компресирани такива","从可启动硬盘镜像 (包括压缩镜像) 创建可启动驱动器","從可啟動硬盤鏡像 (包括壓縮鏡像) 創建可啟動驅動器","Stvaranje pogona za pokretanje iz slika diska za pokretanje, uključujući komprimirane","Vytváření zaváděcích jednotek ze zaváděcích obrazů disků, včetně komprimovaných","Lav opstartsbarer drev fra opstartsbarer disk billeder, inklusiv komprimerede billeder","Opstartbare schijven aanmaken van opstartbare schijf-images, inclusief gecomprimeerde images","Luo käynnistysasemia boottaavista levykuvista, pakatut kuvat mukaanlukien","Créez des disques amorçables à partir d'images disque, y compris à partir d'images compressées","Erstellen bootfähiger Laufwerke aus bootfähigen Festplatten-Images, einschließlich komprimierter Images","Δημιουργήστε μονάδες εκκίνησης από εικόνες δίσκου με δυνατότητα εκκίνησης, συμπεριλαμβανομένων συμπιεσμένων","יצירת כוננים הניתנים לאתחול מקובצי תמונת דיסק הניתנים לאתחול, כולל קבצים דחוסים","Bootolható meghajtók készítése bootolható lemez képfájlokból, beleértve a tömörítetteket is","Buat perangkat yang dapat di boot dari Disk Image, termasuk yang Disk Image yang terkompresi","Crea unità avviabili da immagini disco avviabili, incluse quelle compresse","圧縮済みのものを含むディスクイメージから起動可能ドライブを作成します。","압축된 이미지를 포함하여 부팅 가능한 디스크 이미지에서 부팅 가능한 드라이브 만들기","Izveido ielādes ierīces no ielādes disku virtuālajiem attēliem, tai skaitā arī no saspiestajiem","Sukurkite įkrovos diskus iš įkrovos disko vaizdų, įskaitant suspaustus","Buat pemacu boleh boot daripada imej cakera boleh boot, termasuk yang dimampatkan","Lag oppstartbare disker fra images, inkludert komprimerte sådan","درایوهای قابل بوت را از تصاویر دیسک قابل بوت، از جمله موارد فشرده، ایجاد کنید","Twórz dyski rozruchowe z obrazów dysków, włączając skompresowane","Criar discos inicializáveis a partir de imagens de disco inicializáveis, inclusive de imagens compactadas","Criar unidades inicializáveis a partir de imagens de disco inicializáveis, inclusive de imagens compactadas","Crează drive-uri de la imagini de disc bootabile, incluzând cele compresate","Создать загрузочные диски из образов загрузочных дисков, в том числе сжатых","Kreiranje disk jedinica za pokretanje sistema sa slika diska koji se može pokretanja, uključujući kompresovane","Vytvorte bootovacie jednotky z diskových obrazov, vrátane tých komprimovaných","Ustvarite zagonske pogone iz slik diska, ki jih je mogoče zagnati, vključno s stisnjenimi","Cree unidades de arranque a partir de imágenes de disco de arranque, incluidas las comprimidas","Skapa startbara enheter från startbara diskavbildningar, inklusive komprimerade","สร้างไดร์ฟที่บูตได้จากดิสก์อิมเมจที่บูตได้ รวมไปถึงอันที่ถูกบีบอัด","Sıkıştırılmış olanlar da dahil olmak üzere önyüklenebilir disk yansısından önyüklenebilir sürücüler oluşturun","Створення завантажувальних пристроїв з завантажувальних образів, у тому числі стиснутих","Tạo ổ đĩa có thể khởi động từ các tệp đĩa có thể khởi động, bao gồm cả tệp nén"
"Feature5","704","Text","","Create BIOS or UEFI bootable drives, including UEFI bootable NTFS","إنشاء BIOS أو محركات أقراص UEFI قابلة للتمهيد ، بما في ذلك NTFS القابل للتشغيل من UEFI","Създаване на BIOS или UEFI стартиращи устройства, включително UEFI стартиращ NTFS","创建 BIOS 或 UEFI 可启动驱动器,包括 UEFI 可启动的 NTFS 驱动器","創建 BIOS 或 UEFI 可啟動驅動器,包括 UEFI 可啟動的 NTFS 驅動器","Stvaranje BIOS ili UEFI pogona za pokretanje, uključujući UEFI NTFS za pokretanje","Vytvořte zaváděcí jednotky BIOS nebo UEFI, včetně zaváděcích souborů NTFS UEFI","Lav BIOS eller UEFI opstartsbarer drev, inklusiv UEFI opstartsbarer NTFS","BIOS of UEFI opstartbare schijven aanmaken, inclusief UEFI opstartbare NTFS","Luo BIOS- tai UEFI-boottaavia asemia, mukaanlukien UEFI-boottaavat NTFS-asemat","Créez des disques amorçables BIOS ou UEFI, y compris des disques UEFI amorçables utilisant NTFS","Erstellen von BIOS- oder UEFI-bootfähigen Laufwerken, einschließlich UEFI-bootfähigem NTFS","Δημιουργήστε μονάδες δίσκου με δυνατότητα εκκίνησης BIOS ή UEFI, συμπεριλαμβανομένων NTFS με δυνατότητα εκκίνησης UEFI","יצירת כוננים הניתנים לאתחול ממחשבים התומכים ב־BIOS או UEFI, לרבות כוננים הניתנים לאתחול מ־UEFI, המשתמשים במערכת הקבצים NTFS","BIOS-ból vagy UEFI-ből bootolható meghajtók készítése, beleértve az UEFI-ből bootolható NTFS meghajtókat is","Buat perangkat BIOS atau UEFI yang dapat di boot, termasuk perangkat NTFS yang dapat di boot oleh UEFI","Crea unità avviabili BIOS o UEFI, incluso NTFS avviabile UEFI","UEFI:NTFSを含むBIOS及びUEFIで起動可能なドライブを作成します。","UEFI 부팅 가능한 NTFS를 포함하여 BIOS 또는 UEFI 부팅 가능 드라이브 만들기","Izveido BIOS vai UEFI ielādes ierīces, ieskaitot UEFI ielādi no NTFS","Sukurkite BIOS arba UEFI įkrovos diskus, įskaitant UEFI įkrovos NTFS","Buat pemacu boleh boot BIOS atau UEFI, termasuk NTFS boleh boot UEFI","Lag BIOS eller UEFI oppstartbare disker, inkludert UEFI oppstartbar NTFS","درایوهای قابل بوت بایوس یا UEFI از جمله NTFS قابل بوت UEFI ایجاد کنید","Stwórz dysk rozruchowy BIOS lub UEFI, włączając bootowalny dysk UEFI NTFS","Criar discos inicializáveis BIOS ou UEFI, inclusive discos UEFI inicializáveis usando NTFS","Criar discos inicializáveis BIOS ou UEFI, inclusive discos UEFI inicializáveis usando NTFS","Crează discuri bootabile BIOS sau UEFI, incluzând NTFS-uri bootabile de UEFI","Создать загрузочные диски BIOS или UEFI, включая загрузочный UEFI NTFS","Kreiranje BIOS ili UEFI disk jedinica za pokretanje sistema, uključujući NTFS sa UEFI pokretanjem sistema","Vytvorte bootovacie jednotky systému BIOS alebo UEFI vrátane UEFI bootovateľnej jednotky NTFS","Ustvarite zagonske pogone BIOS ali UEFI, vključno z UEFI bootable NTFS","Cree unidades de arranque BIOS o UEFI, incluido NTFS de arranque UEFI","Skapa BIOS- eller UEFI-startbara enheter, inklusive UEFI-startbar NTFS","สร้างไดร์ฟที่บูตได้จาก BIOS หรือ UEFI รวมไปถึง NTFS ที่บูตได้จาก UEFI","UEFI önyüklenebilir NTFS dahil BIOS ya da UEFI önyüklenebilir sürücüler oluşturun","Створення завантажувальних пристроїв BIOS чи UEFI, включаючи завантажувальний UEFI NTFS","Tạo ổ đĩa có thể khởi động với hệ thống BIOS hoặc UEFI, bao gồm cả NTFS có thể khởi động với UEFI"
"Feature6","705","Text","","Create 'Windows To Go' drives","إنشاء محركات أقراص ""Windows To Go\","Създаване на 'Windows To Go' устройства","创建 'Windows To Go' 驱动器","創建 'Windows To Go' 驅動","Stvaranje pogona ""Windows To Go\","Vytvoření jednotek ""Windows To Go","Lav 'Windows To Go' drev","'Windows To Go'-schijven aanmaken","Luo 'Windows To Go' -asemia","Créez des disques 'Windows To Go'","Erstellen von ""Windows To Go""-Laufwerken","Δημιουργήστε μονάδες δίσκου ""Windows To Go\","יצירת כונני Windows To Go","'Windows To Go' meghajtók készítése","Buat perangkat Windows To Go","Crea unità 'Windows To Go'","Windows To Goドライブを作成します。","'Windows To Go' 드라이브 만들기","Izveido 'Windows To Go' ierīces","Sukurkite ""Windows To Go"" diskus","Buat pemacu 'Windows To Go'","Lag 'Windows To Go' disker","درایوهای ""Windows To Go"" را ایجاد کنید","Stwórz dysk 'Windows To Go'","Criar discos 'Windows To Go'","Criar discos 'Windows To Go'","Crează discuri 'Windows To Go'","Создание дисков Windows To Go","Kreiranje disk jedinica ""Windows to Go\","Vytvorte jednotky „Windows To Go\","Ustvarjanje pogonov »Windows To Go'","Cree unidades 'Windows To Go'","Skapa 'Windows To Go'-enheter","สร้างไดร์ฟของ 'Windows To Go'","'Windows To Go' sürücüleri oluşturun","Створення пристроїв 'Windows To Go'","Tạo ổ đĩa 'Windows To Go'"
"Feature7","706","Text","","Create Windows 11 installation drives for PCs that don't have TPM or Secure Boot","قم بإنشاء محركات تثبيت ويندوز 11 لأجهزة الكمبيوتر التي لا تحتوي على TPM أو التمهيد الآمن","Създаване на Windows 11 инсталационно устройство за компютри, които нямат TPM или Secure Boot","为没有 TPM 或安全启动功能的电脑创建 Windows 11 安装驱动器","為沒有 TPM 或安全啟動功能的電腦創建 Windows 11 安裝驅動","Stvaranje instalacijskih pogona sustava Windows 11 za PC-jeve koji nemaju TPM ili Sigurno pokretanje","Vytvoření instalačních jednotek systému Windows 11 pro počítače bez čipu TPM nebo Secure Boot","Lav Windows 11 installations drev for PCer der ikker har TPM eller Secure Boot","Windows 11 installatieschijven aanmaken voor pc's die geen TPM of Secure Boot hebben","Luo Windows 11 -asennusasemia tietokoneille, jotka eivät tue TPM- tai Secure Boot -ominaisuuksia","Créez des disques d'installation Windows 11 pour des PCs qui ne disposent pas de TPM ou Secure Boot","Erstellen von Windows 11-Installationslaufwerken für PCs ohne TPM oder Secure Boot","Δημιουργήστε μονάδες εγκατάστασης των Windows 11 για υπολογιστές που δεν διαθέτουν TPM ή Ασφαλή Εκκίνηση","יצירת כונני התקנה של Windows 11 עבור מחשבים שאין להם TPM או Secure Boot","Windows 11 telepítési meghajtók készítése olyan PC-k számára, amelyek nem rendelkeznek TPM vagy Secure Boot funkciókkal","Buat perangkat pemasang Windows 11 untuk PC yang tidak mempunyai TPM atau Secure Boot","Crea unità di installazione di Windows 11 per PC che non dispongono di TPM o avvio protetto","TPM及びセキュアブート非対応のPC向けのWindows 11インストールドライブを作成します","TPM 또는 보안 부팅이 없는 PC용 Windows 11 설치 드라이브 만들기","Izveido Windows 11 instalācijas ierīces datoriem, kam nav TPM vai Secure Boot","Sukurkite Windows 11 diegimo diskus kompiuteriams, kuriuose nėra TPM arba saugaus įkrovimo","Buat pemacu pemasangan Windows 11 untuk PC yang tidak mempunyai TPM atau But Selamat","Lag oppstartsmedia for Windows 11 som ikke krever TPM eller Secure Boot","درایوهای نصب ویندوز 11 را برای رایانه هایی که TPM یا Secure Boot ندارند ایجاد کنید","Twórz dyski instalacyjne systemu Windows 11 dla komputerów, które nie posiadają modułu TPM ani Secure Boot","Criar discos de instalação do Windows 11 para PCs que não possuem TPM ou Secure Boot","Criar discos de instalação do Windows 11 para PCs que não possuem TPM ou Secure Boot","Crează drive de instalare Windows 11 pe computere care nu au TPM sau Bootare Securizată","Создать установочные диски Windows 11 для компьютеров без TPM или безопасной загрузки","Kreiranje windows 11 instalacionih disk jedinica za računare koji nemaju TPM ili bezbedno pokretanje sistema","Vytvorte inštalačné jednotky Windows 11 pre počítače, ktoré nemajú modul TPM, ani Secure Boot","Ustvarjanje namestitvenih pogonov za Windows 11 za računalnike, ki nimate TPM ali Varnega zagona","Cree unidades de instalación de Windows 11 para PC que no tienen TPM o Arranque seguro","Skapa installationsenheter till Windows 11 för datorer som inte har TPM eller säker start","สร้างไดร์ฟติดตั้ง Windows 11 สำหรับคอมพิวเตอร์ที่ไม่มี TPM หรือ SecureBoot","TPM ya da Güvenli Önyüklemeye sahip olmayan bilgisayarlar için Windows 11 kurulum sürücüleri oluşturun","Створення інсталяційних дисків Windows 11 для ПК, які не мають TPM чи Secure Boot","Tạo ổ đĩa cài đặt Windows 11 cho các máy tính không có TPM hoặc Secure Boot"
"Feature8","707","Text","","Create persistent Linux partitions","إنشاء Persistent Linux partitions","Създаване на устойчиви Linux дялове","创建持久 Linux 分区","創建持久 Linux 分區","Stvaranje trajnih Linux particija","Vytvoření trvalých oddílů systému Linux","Lav vedvarende Linux adskillelser","Persistent Linux partities aanmaken","Luo pysyviä Linux-osioita","Créez des partitions persistentes pour Linux","Persistente Linux-Partitionen erstellen","Δημιουργήστε μόνιμα διαμερίσματα Linux","יצירת מחיצות Linux קבועות","Tartós Linux partíciók készítése","Buat partisi Linux yang tetap/persistent","Crea partizioni persistenti Linux","記録用Linuxパーティションを作成します。","영구 리눅스 파티션 만들기","Izveido pastāvīgas Linux partīcijas","Sukurkite nuolatinius Linux skaidinius","Buat partition Linux berterusan","Lag persistente Linux partisjoner","ایجاد پارتیشن های لینوکس دائمی","Stwórz particje persistent Linuxa","Criar partições persistentes para Linux","Crie partições persistentes para Linux","Crează partiție de Linux persistentă","Создать постоянные разделы Linux","Kreiranje upornih Linux particija","Vytvorte trvalé oblasti systému Linux","Ustvarjanje trajnih Linux particij","Crear particiones persistentes de Linux","Skapa beständiga Linux-partitioner","สร้างพาร์ทิชั่นของ Linux แบบถาวร","Kalıcı Linux bölümleri oluşturun","Створення розділу збереження Linux","Tạo phân vùng Linux liên tục"
"Feature9","708","Text","","Create VHD/DD images of the selected drive","إنشاء صور VHD / DD لمحرك الأقراص المحدد","Създаване на VHD/DD образи на избраното устройство","为选择的驱动器创建 VHD/DD 镜像","為選中的驅動創建 VHD/DD 鏡像","Stvaranje VHD/DD slika odabranog pogona","Vytvoření obrazů VHD/DD z vybrané jednotky","Lav VHD/DD billeder af det valgte drev","VHD/DD-images van de geselecteerde schijf aanmaken","Luo VHD/DD-kuvia valitusta asemasta","Créez des images VHD/DD du périphérique sélectionné","VHD/DD-Images des ausgewählten Laufwerks erstellen","Δημιουργήστε εικόνες VHD/DD της επιλεγμένης μονάδας δίσκου","יצירת קובצי תמונה מסוג VHD/DD של הכונן שנבחר","VHD/DD képfájl készítése a kiválasztott meghajtóról","Buat image VHD/DD dari penyimpanan yang dipilih","Crea immagini VHD/DD dell'unità selezionata","選択されたドライブのVHD/DDイメージを作成します。","선택한 드라이브의 VHD/DD 이미지 만들기","Izveido izvēlētā diska VHD/DD virtuālos attēlus","Sukurkite pasirinkto disko VHD / DD vaizdus","Buat imej VHD/DD bagi pemacu yang dipilih","Lag VHD/DD speilinger av valgt disk","تصاویر VHD/DD از درایو انتخاب شده ایجاد کنید","Stwórz obraz VHD/DD z wybranego dysku","Criar imagens VHD/DD do dispositivo selecionado","Criar imagens VHD/DD do dispositivo selecionado","Crează imagini VHD/DD de pe drive-ul selectat","Создать образы VHD/DD выбранного диска","Kreiranje VHD/DD slika izabrane disk jedinice","Vytvorte obrazy VHD/DD z vybratej jednotky","Ustvarjanje VHD/DD slik izbranega pogona","Cree imágenes VHD/DD de la unidad seleccionada","Skapa VHD/DD-avbilder av den valda enheten","สร้างอิมเมจไฟล์แบบ VHD/DD ของไดร์ฟที่เลือก","Seçilen sürücünün VHD/DD yansılarını oluşturun","Створення образів VHD/DD з вибраних дисків","Tạo tệp VHD/DD từ ổ đĩa đã chọn"
"Feature10","709","Text","","Compute MD5, SHA-1, SHA-256 and SHA-512 checksums of the selected image","حساب المجموع الاختباري MD5 و SHA-1 و SHA-256 و SHA-512 للصورة المحددة","Изчисляване на MD5, SHA-1, SHA-256 и SHA-512 чексуми на избраният образ","计算被选择镜像的 MD5、SHA-1、SHA-256 和 SHA-512 校验码","計算被選中鏡像的 MD5、SHA-1、SHA-256 和 SHA-512 校驗碼","Izračunajte kontrolne zbrojeve odabrane slike MD5, SHA-1, SHA-256 i SHA-512","Výpočet kontrolních součtů MD5, SHA-1, SHA-256 a SHA-512 vybraného obrazu","Beregn MD5, SHA-1, SHA-256 og SHA-512 checksums af det valgte billede","MD5, SHA-1, SHA-256 en SHA-512 controlesommen berekenen van de geselecteerde image","Laske MD5, SHA-1, SHA-256 ja SHA-512 tarkistussummia valitusta levykuvasta","Calculez les sommes de contrôle MD5, SHA-1, SHA-256 et SHA-512 de l'image sélectionnée","Berechnung von MD5-, SHA-1-, SHA-256- und SHA-512-Prüfsummen für das ausgewählte Bild","Υπολογίστε τα αθροίσματα ελέγχου MD5, SHA-1, SHA-256 και SHA-512 της επιλεγμένης εικόνας","חישוב סיכומי ביקורת מסוג MD5, SHA-1, SHA-256 ו־SHA-512 של קובץ התמונה שנבחרה","A kiválasztott képfájl MD5, SHA-1, SHA-256 és SHA-512 ellenőrző összegének kiszámítása","Hitung checksum MD5, SHA-1, SHA-256 dan SHA-512 dari image yang dipilih","Calcola i checksum MD5, SHA-1, SHA-256 e SHA-512 dell'immagine selezionata","選択されたイメージのMD5、SHA-1、SHA-256及びSHA-512チェックサムを計算します。","선택한 이미지의 MD5, SHA-1, SHA-256 및 SHA-512 체크섬 계산","Izskaitļo izvēlētā virtuālā attēla MD5, SHA-1, SHA-256 un SHA-512 kontrolsummas","Apskaičiuokite pasirinkto vaizdo MD5, SHA-1, SHA-256 ir SHA-512 kontrolines sumas","Kira MD5, SHA-1, SHA-256 dan SHA-512 checksum imej yang dipilih","Kalkuler MD5, SHA-1, SHA-256 og SHA-512 sjekksummer fra valgt speiling","MD5، SHA-1، SHA-256 و SHA-512 را برای تصویر انتخابی محاسبه کنید","Oblicz sumy kontrolne MD5, SHA-1, SHA-256 i SHA-512 dla wybranego obrazu","Calcular somas de verificação MD5, SHA-1, SHA-256 e SHA-512 da imagem selecionada","Calcular checksums MD5, SHA-1, SHA-256 e SHA-512 da imagem selecionada","Compută MD5, SHA-1, SHA-256 și SHA-512 suma de control ale imaginilor selectate","Вычислить контрольные суммы MD5, SHA-1, SHA-256 и SHA-512 выбранного образа","Izračunajte MD5, SHA-1, SHA-256 i SHA-512 kontrolne preglede izabrane slike","Vypočítajte kontrolné súčty vybratého obrazu (MD5, SHA-1, SHA-256 a SHA-512)","Račun MD5, SHA-1, SHA-256 in SHA-512 kontrolni vsoti izbrane slike","Calcule las sumas de comprobación MD5, SHA-1, SHA-256 y SHA-512 de la imagen seleccionada","Beräkna kontrollsummor MD5, SHA-1, SHA-256 och SHA-512 för den valda avbilden","คำนวนรหัส MD5, SHA-1, SHA-256, SHA-512 ของไฟล์อิมเมจที่เลือก","Seçilen yansının MD5, SHA-1, SHA-256 ve SHA-512 sağlama toplamlarını hesaplayın","Обчислення контрольних сум MD5, SHA-1, SHA-256 та SHA-512 для вибраних образів","Tính tổng kiểm MD5, SHA-1, SHA-256 và SHA-512 của tệp đã chọn"
"Feature11","710","Text","","Perform bad blocks checks, including detection of ""fake"" flash drives","إجراء فحوصات كتل تالفة ، بما في ذلك الكشف عن محركات أقراص فلاش ""زائفة\","Проверяване за лоши блокове, включително засичане на ""фалшиви"" устройства","执行坏块检查包括对”假“U盘的检测","執行壞塊檢查包括對”假“USB 快閃磁碟機的檢測","Izvršite provjere loših blokova, uključujući otkrivanje ""lažnih"" flash pogona","Provést kontrolu vadných bloků, včetně detekce ""falešných"" bloků. flash disky","Udøv dårlige blokke tjeks, inklusiv opdagelse af ""falske"" flashdrev","Controles uitvoeren op slechte blokken, inclusief detectie van ""valse"" flashdrives","Suorita viallisten lohkojen tarkistuksia, sisältäen ""valheellisten"" muistitikkujen tunnistamisen","Executez un test de mauvais secteurs avec detection des ""fake drives\","Durchführung von Prüfungen auf fehlerhafte Blöcke, einschließlich der Erkennung von ""gefälschten"" Flash-Laufwerken","Εκτελέστε ελέγχους εσφαλμένων block, συμπεριλαμβανομένου του εντοπισμού ""ψευδών"" μονάδων flash","ביצוע בדיקות אחר בלוקים (אזורים) פגומים, כולל זיהוי של כונני הבזק ""מזוייפים\","Hibás blokkok ellenőrzése, beleértve a ""hamis"" flash meghajtók detektálását","Lakukan cek Blok yang buruk, termasuk deteksi USB Flash Disk ""PALSU\","Esegui controlli dei blocchi danneggiati, incluso il rilevamento di unità flash ""false\","不良ブロックチェック及び容量詐欺ドライブの検知を行います。","""위조"" 플래시 드라이브 감지를 포함하여 불량 블록 검사 수행","Izpilda bojāto bloku pārbaudi ieskaitot ""falsificēto"" nesēju noteikšanu","Atlikite blogų blokų patikrinimus, įskaitant ""netikrų"" flash diskų aptikimą","Melakukan pemeriksaan blok buruk, termasuk pengesanan pemacu kilat ""palsu\","Utfør sjekk for dårlige sektorer, inkludert sjekk for forfalskede flash disker","بررسی بلوک های بد، از جمله تشخیص درایوهای فلش ""جعلی"" را انجام دهید","Sprawdź dysk pod względem spójności danych lub wykryj ""nieorginalny"" pendrive","Executar verificações de blocos defeituosos, incluindo detecção de unidades flash ""falsificadas\","Executar verificações de blocos inválidos, incluindo a detecção de unidades flash ""falsas\","Verifică blocuri rele, incluzând detectarea de drive-uri flash ""false\","Проверить наличие плохих блоков, обнаружить ""поддельные"" флешки","Izvršite provere loših blokova, uključujući otkrivanje ""lažnih"" fleš diskova","Vykonajte kontroly zlých blokov vrátane detekcie „falošných"" prenosných diskov","Izvajanje preverjanj slabih blokov, vključno z odkrivanjem »lažnih« bliskavic","Realice comprobaciones de bloques defectuosos, incluida la detección de unidades flash ""falsas\","Utför kontroll av trasiga block, inklusive upptäckt av ""falska"" USB-minnen","ดำเนินการตรวจสอบบล็อกข้อมูลที่พัง รวมไปถึงการทดสอบว่าเป็นแฟลชไดร์ฟ ""ปลอม"" หรือไม่","""Sahte"" flash sürücülerin tespiti de dahil olmak üzere hatalı blok kontrolleri gerçekleştirin","Перевірка дисків (включаючи фальшиві диски)","Thực hiện kiểm tra điểm lỗi, bao gồm phát hiện ổ đĩa ""giả\"
"Feature12","711","Text","","Download official Microsoft Windows retail ISOs","قم بتنزيل ملفات ISO الرسمية الخاصة بـ Microsoft Windows","Изтегляне на официални Microsoft Windows ISO образи","下载微软官方 Windows 镜像","下載微軟官方 Windows 鏡像","Preuzimanje službenih ISO-ova za maloprodaju sustava Microsoft Windows","Stažení oficiálních souborů ISO systému Microsoft Windows","Hent officielle Microsoft Windows detail ISOer","Officiële Microsoft Windows retail ISO's downloaden","Lataa virallisia Microsoft Windowsin jälleenmyyntiversion ISO-levykuvia","Téléchargez des images ISOs commerciales officielles de Microsoft Windows","Offizielle Microsoft Windows-ISOs herunterladen","Κατεβάστε τα επίσημα retail ISO των Microsoft Windows","הורדת קובצי ה־ISO הקמעונאיים הרשמיים של Microsoft Windows","Hivatalos Microsoft Windows kiskereskedelmi ISO képfájlok letöltése","Unduh ISO Microsoft Windows resmi","Scarica le ISO ufficiali di Microsoft Windows","マイクロソフト公式のWindows ISOをダウンロードします。","공식 Microsoft Windows 리테일 ISO 다운로드","Lejupielādē oficiālos Microsoft ISO failus","Atsisiųskite oficialius Microsoft Windows mažmeninės prekybos ISO","Muat turun rasmi ISO runcit Microsoft Windows","Last ned offisielle Windows ISOer","ISO های رسمی ماکروسافت را دریافت کنید","Pobierz oficjalny obraz ISO systemu Microsoft Windows","Baixar ISOs oficiais do Microsoft Windows","Transferir ISOs oficiais do Microsoft Windows Retail","Descarcă un Microsoft Windows ISO oficial de vânzare","Загрузить официальные ISO-образы Windows","Preuzmite zvanične Microsoft Windows maloprodajne ISO-ove","Stiahnite si oficiálne ISO pre Microsoft Windows","Prenos uradnih Microsoft Windows maloprodaja ISOs","Descargue los ISO oficiales de Microsoft Windows","Ladda ner officiella Microsoft Windows ISO-filer","ดาวน์โหลดอิมเมจไฟล์ของ Windows จากเว็บไซต์ทางการ","Resmi Microsoft Windows Retail ISO'larını indirin","Завантаження офіційних образів Microsoft Windows","Tải xuống các tệp Microsoft Windows ISO bán lẻ chính thức"
"Feature13","712","Text","","Download UEFI Shell ISOs","قم بتنزيل UEFI Shell ISOs","Изтегляне на UEFI Shell образи","下载 UEFI Shell 镜像","下載 UEFI Shell 鏡像","Preuzmite ISO-ove UEFI ljuske","Stažení souborů UEFI Shell ISO","Hent UEFI Shell ISOer","UEFI Shell ISO's downloaden","Lataa UEFI Shell ISO-levykuvia","Téléchargez des images ISOs du Shell UEFI","UEFI-Shell-ISOs herunterladen","Κατεβάστε τα ISO Shell UEFI","הורדת קובצי ISO של מעטפת UEFI","UEFI Shell ISO képfájlok letöltése","Unduh Shell ISO UEFI","Scarica le ISO della shell UEFI","UEFIシェルのISOをダウンロードします。","UEFI Shell ISO 다운로드","Lejupielādē UEFI OS ISO failus","Atsisiųskite UEFI Shell ISO","Muat turun ISO Shell UEFI","Last ned UEFI kommandolinje ISOer","ISO های پوسته UEFI را دانلود کنید","Ściągnij obrazy ISO UEFI Shell","Baixar ISOs do Shell UEFI","Transferir ISOs de UEFI Shell","Descarcă UEFI Shell ISO-uri","Загрузить ISO-образы оболочки UEFI","Preuzmite UEFI Shell ISOs","Stiahnite UEFI Shell ISO","Prenos UEFI Shell ISOs","Descargar ISO de UEFI Shell","Ladda ner UEFI-shell ISO-filer","ดาวน์โหลดอิมเมจไฟล์ของ UEFI Shell","UEFI Shell ISO'larını indirin","Завантаження командної оболонки UEFI ISO","Tải xuống các tệp UEFI Shell ISO"
"Feature1","700","Text","","Format USB, flash card and virtual drives to FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","تهيئة USB وبطاقة الفلاش ومحركات الأقراص الافتراضية إلى FAT / FAT32 / NTFS / UDF / exFAT / ReFS / ext2 / ext3","Форматиране на USB, карти памет и виртуални устройства с FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","将 U 盘、存储卡或虚拟驱动器格式化为 FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3 格式","將隨身碟、記憶卡或虛擬光碟機格式化為 FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3 格式","Formatirajte USB, flash karticu i virtualne pogone na FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formátování USB, flash karet a virtuálních jednotek na FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formater USB, flash kort og virtuelle drev til FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","USB, flashkaart en virtuele schijven formatteren naar FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Alusta USB-asemia, muistikortteja ja virtuaalisia asemia muotoon FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatez des périphériques USB, des cartes flash et des disques virtuels en FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatieren von USB, Flash-Karte und virtuellen Laufwerken in FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Μορφοποίηση USB, κάρτας flash και εικονικών μονάδων δίσκου σε FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","אתחול USB, כרטיסי זיכרון וכוננים וירטואליים ל־FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","USB, flash memóriakártyák és virtuális meghajtók formázása FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3 fájlrendszerre","Format USB, kartu flash dan penyimpanan maya ke FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatta USB, flash card e unità virtuali in FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","USBメモリやSDカード、仮想ドライブをFAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3でフォーマットします。","USB, 플래시 카드 및 가상 드라이브를 FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3로 포맷","Formatē USB, atmiņas kartes un virtuālos diskus formātos FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Suformatuokite USB, flash kortelę ir virtualius diskus į FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatkan USB, kad flash dan pemacu maya kepada FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formater USB, minnekort og virtuelle disker til FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","فرمت USB، فلش کارت و درایوهای مجازی به FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Sformatuj nośnik używając: FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatar dispositivos USB, cartões flash e discos virtuais com FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatar dispositivos USB, cartão de memória e drives virtuais em FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatează USB, card flash si drive-uri virtuale la FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Форматировать USB, флешки и виртуальные диски в FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatiraj USB, flash kartice, i virtualne diskove u FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Naformátujte USB, kartu a virtuálne disky do FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","FormatIRANJE USB, bliskavice in virtualnih pogonov na FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatee USB, tarjetas flash y unidades virtuales a FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatera USB-enheter, flash-kort och virtuella enheter till FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","ฟอร์แมต USB, แฟลชการ์ด หรือไดร์ฟจำลองให้อยู่ในรูปแบบของ FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","USB, flash kart ve sanal sürücüleri FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3 olarak biçimlendirin","Форматування USB-накопичувачів, флешок, карток пам'яті у FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Định dạng USB, thẻ nhớ hoặc ổ nhớ ảo với FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3"
"Feature2","701","Text","","Create FreeDOS bootable USB drives","إنشاء محركات أقراص USB قابلة للتشغيل من FreeDOS","Създаване на FreeDOS стартиращ USB устройства","创建 FreeDOS 可启动驱动器","建立 FreeDOS 可啟隨身碟","Stvaranje FreeDOS USB pogona za pokretanje","Vytvoření bootovacích disků USB se systémem FreeDOS","Lav FreeDOS opstartsbare USB drev","FreeDOS opstartbare USB-schijven aanmaken","Luo boottaavia FreeDOS USB-asemia","Créez des disques amorçable FreeDOS","FreeDOS-bootfähige USB-Laufwerke erstellen","Δημιουργήστε μονάδες USB με δυνατότητα εκκίνησης FreeDOS","יצירת כונני USB הניתנים לאתחול של FreeDOS","Bootolható FreeDOS USB meghajtó készítése","Buat perangkat USB FreeDOS yang dapat di boot","Crea unità USB avviabili FreeDOS","FreeDOSの起動可能ドライブを作成します。","FreeDOS 부팅 가능한 USB 드라이브 만들기","Izveido FreeDOS ielādes USB ierīces","Sukurkite FreeDOS įkrovos USB diskus","Buat pemacu USB boleh boot FreeDOS","Lag FreeDos oppstartbar USB stick","درایوهای USB قابل بوت FreeDOS را ایجاد کنید","Stwórz bootowalny nośnik USB FreeDOS","Criar discos USB inicializáveis FreeDOS","Criar unidades USB inicializáveis FreeDOS","Crează drive USB bootabil FreeDOS","Создать загрузочные USB-диски FreeDOS","Kreiraj FreeDOS butabilni USB disk","Vytvorte bootovacie usb zariadenia FreeDOS","Ustvarite FreeDOS zagonske USB pogone","Crear unidades USB de arranque FreeDOS","Skapa FreeDOS startbara USB-enheter","สร้าง USB ไดร์ฟที่บูตได้สำหรับระบบ FreeDOS","FreeDOS önyüklenebilir USB sürücüleri oluşturun","Створення завантажувальних пристроїв FreeDOS","Tạo USB có thể khởi động với FreeDOS"
"Feature3","702","Text","","Create bootable drives from bootable ISOs (Windows, Linux, etc.)","إنشاء محركات أقراص قابلة للتمهيد من ملفات ISO القابلة للتمهيد (Windows و Linux وما إلى ذلك)","Създаване на стартиращи устройства от ISO образи (Windows, Linux и др.)","从可启动 ISO 文件 (Windows 和 Linux 等) 创建可启动驱动器","從可啟動 ISO 檔案 (Windows 和 Linux 等) 建立可啟動隨身碟","Stvaranje pogona za pokretanje iz ISO-ova za pokretanje (Windows, Linux itd.)","Vytváření bootovacích jednotek ze zaváděcích ISO (Windows, Linux atd.)","Lav opstartsbarer drev fra opstartsbarer ISOer (Window, Linux, osv.)","Opstartbare schijven aanmaken via opstartbare ISO's (Windows, Linux, enz)","Luo käynnistysasemia boottaavista ISO-kuvista (Windows, Linux jne.)","Créez des disques amorçables à partir d'images ISOs (Windows, Linux, etc.)","Erstellen bootfähiger Laufwerke aus bootfähigen ISOs (Windows, Linux, etc.)","Δημιουργήστε εκκινήσιμες μονάδες από ISO με δυνατότητα εκκίνησης (Windows, Linux, κ.λπ.)","יצירת כוננים הניתנים לאתחול מקובצי ISO הניתנים לאתחול (Windows, Linux וכו')","Bootolható meghajtók készítése bootolható ISO képfájlokból (Windows, Linux, stb.)","Buat perangkat yang dapat di boot dari ISO (Windows, Linux, dll.)","Crea unità avviabili da ISO avviabili (Windows, Linux, ecc.)","WindowsやLinuxなどのISOファイルから起動可能ドライブを作成します。","부팅 가능한 ISO (Windows, Linux 등)에서 부팅 가능한 드라이브 만들기","Izveido ielādes ierīces no ISO failiem (Windows, Linux, u.c.)","Sukurkite įkrovos diskus iš įkrovos ISO (Windows, Linux ir kt.)","Buat pemacu boleh boot daripada ISO boleh boot (Windows, Linux, dll.)","Lag oppstartabar enhet/disk fra ISOer (Windows, Linux, etc.)","ایجاد درایوهای قابل بوت از ISOهای قابل بوت (ویندوز، لینوکس و غیره)","Twórz dyski rozruchowe z obrazów ISO (Windows, Linux itp.)","Criar discos inicializáveis a partir de ISOs inicializáveis (Windows, Linux, etc.)","Criar unidades inicializáveis a partir de ISOs inicializáveis (Windows, Linux, etc.)","Crează drive-uri bootabile de la ISO-uri bootabile (Windows, Linux, etc.)","Создать загрузочные диски из загрузочных ISO-образов (Windows, Linux и т.д.)","Kreirajte disk jedinice za pokretanje sistema od ISO-a koji se mogu pokretanja sistema (Windows, Linux itd.)","Vytvorte bootovacie jednotky z ISO súborov (Windows, Linux atď.)","Ustvarite zagonske pogone iz zagonskih ISO-jev (Windows, Linux itd.)","Cree unidades de arranque desde ISO de arranque (Windows, Linux, etc.)","Skapa startbara enheter från startbara ISO-filer (Windows, Linux, etc.)","สร้าง USB ไดร์ฟที่บูตได้จากไฟล์อิมเมจที่บูตได้ (เช่น ไฟล์ติดตั้ง Windows หรือ Linux เป็นต้น)","Önyüklenebilir ISO'lardan önyüklenebilir sürücüler oluşturun (Windows, Linux, vb.)","Створення завантажувальних пристроїв з завантажувальних образів (Windows, Linux, тощо)","Tạo ổ đĩa có thể khởi động từ các file ISO có thể khởi động (Windows, Linux, v.v...)"
"Feature4","703","Text","","Create bootable drives from bootable disk images, including compressed ones","إنشاء محركات أقراص قابلة للتمهيد من صور الأقراص القابلة للتمهيد ، بما في ذلك الأقراص المضغوطة","Създаване на стартиращи устройства от образи, включително компресирани такива","从可启动硬盘镜像 (包括压缩镜像) 创建可启动驱动器","從可啟動硬碟映像檔 (包括壓縮映像檔) 建立可啟動隨身碟","Stvaranje pogona za pokretanje iz slika diska za pokretanje, uključujući komprimirane","Vytváření zaváděcích jednotek ze zaváděcích obrazů disků, včetně komprimovaných","Lav opstartsbarer drev fra opstartsbarer disk billeder, inklusiv komprimerede billeder","Opstartbare schijven aanmaken van opstartbare schijf-images, inclusief gecomprimeerde images","Luo käynnistysasemia boottaavista levykuvista, pakatut kuvat mukaanlukien","Créez des disques amorçables à partir d'images disque, y compris à partir d'images compressées","Erstellen bootfähiger Laufwerke aus bootfähigen Festplatten-Images, einschließlich komprimierter Images","Δημιουργήστε μονάδες εκκίνησης από εικόνες δίσκου με δυνατότητα εκκίνησης, συμπεριλαμβανομένων συμπιεσμένων","יצירת כוננים הניתנים לאתחול מקובצי תמונת דיסק הניתנים לאתחול, כולל קבצים דחוסים","Bootolható meghajtók készítése bootolható lemez képfájlokból, beleértve a tömörítetteket is","Buat perangkat yang dapat di boot dari Disk Image, termasuk yang Disk Image yang terkompresi","Crea unità avviabili da immagini disco avviabili, incluse quelle compresse","圧縮済みのものを含むディスクイメージから起動可能ドライブを作成します。","압축된 이미지를 포함하여 부팅 가능한 디스크 이미지에서 부팅 가능한 드라이브 만들기","Izveido ielādes ierīces no ielādes disku virtuālajiem attēliem, tai skaitā arī no saspiestajiem","Sukurkite įkrovos diskus iš įkrovos disko vaizdų, įskaitant suspaustus","Buat pemacu boleh boot daripada imej cakera boleh boot, termasuk yang dimampatkan","Lag oppstartbare disker fra images, inkludert komprimerte sådan","درایوهای قابل بوت را از تصاویر دیسک قابل بوت، از جمله موارد فشرده، ایجاد کنید","Twórz dyski rozruchowe z obrazów dysków, włączając skompresowane","Criar discos inicializáveis a partir de imagens de disco inicializáveis, inclusive de imagens compactadas","Criar unidades inicializáveis a partir de imagens de disco inicializáveis, inclusive de imagens compactadas","Crează drive-uri de la imagini de disc bootabile, incluzând cele compresate","Создать загрузочные диски из образов загрузочных дисков, в том числе сжатых","Kreiranje disk jedinica za pokretanje sistema sa slika diska koji se može pokretanja, uključujući kompresovane","Vytvorte bootovacie jednotky z diskových obrazov, vrátane tých komprimovaných","Ustvarite zagonske pogone iz slik diska, ki jih je mogoče zagnati, vključno s stisnjenimi","Cree unidades de arranque a partir de imágenes de disco de arranque, incluidas las comprimidas","Skapa startbara enheter från startbara diskavbildningar, inklusive komprimerade","สร้างไดร์ฟที่บูตได้จากดิสก์อิมเมจที่บูตได้ รวมไปถึงอันที่ถูกบีบอัด","Sıkıştırılmış olanlar da dahil olmak üzere önyüklenebilir disk yansısından önyüklenebilir sürücüler oluşturun","Створення завантажувальних пристроїв з завантажувальних образів, у тому числі стиснутих","Tạo ổ đĩa có thể khởi động từ các tệp đĩa có thể khởi động, bao gồm cả tệp nén"
"Feature5","704","Text","","Create BIOS or UEFI bootable drives, including UEFI bootable NTFS","إنشاء BIOS أو محركات أقراص UEFI قابلة للتمهيد ، بما في ذلك NTFS القابل للتشغيل من UEFI","Създаване на BIOS или UEFI стартиращи устройства, включително UEFI стартиращ NTFS","创建 BIOS 或 UEFI 可启动驱动器,包括 UEFI 可启动的 NTFS 驱动器","建立 BIOS 或 UEFI 可啟動隨身碟,包括 UEFI 可啟動的 NTFS 隨身碟","Stvaranje BIOS ili UEFI pogona za pokretanje, uključujući UEFI NTFS za pokretanje","Vytvořte zaváděcí jednotky BIOS nebo UEFI, včetně zaváděcích souborů NTFS UEFI","Lav BIOS eller UEFI opstartsbarer drev, inklusiv UEFI opstartsbarer NTFS","BIOS of UEFI opstartbare schijven aanmaken, inclusief UEFI opstartbare NTFS","Luo BIOS- tai UEFI-boottaavia asemia, mukaanlukien UEFI-boottaavat NTFS-asemat","Créez des disques amorçables BIOS ou UEFI, y compris des disques UEFI amorçables utilisant NTFS","Erstellen von BIOS- oder UEFI-bootfähigen Laufwerken, einschließlich UEFI-bootfähigem NTFS","Δημιουργήστε μονάδες δίσκου με δυνατότητα εκκίνησης BIOS ή UEFI, συμπεριλαμβανομένων NTFS με δυνατότητα εκκίνησης UEFI","יצירת כוננים הניתנים לאתחול ממחשבים התומכים ב־BIOS או UEFI, לרבות כוננים הניתנים לאתחול מ־UEFI, המשתמשים במערכת הקבצים NTFS","BIOS-ból vagy UEFI-ből bootolható meghajtók készítése, beleértve az UEFI-ből bootolható NTFS meghajtókat is","Buat perangkat BIOS atau UEFI yang dapat di boot, termasuk perangkat NTFS yang dapat di boot oleh UEFI","Crea unità avviabili BIOS o UEFI, incluso NTFS avviabile UEFI","UEFI:NTFSを含むBIOS及びUEFIで起動可能なドライブを作成します。","UEFI 부팅 가능한 NTFS를 포함하여 BIOS 또는 UEFI 부팅 가능 드라이브 만들기","Izveido BIOS vai UEFI ielādes ierīces, ieskaitot UEFI ielādi no NTFS","Sukurkite BIOS arba UEFI įkrovos diskus, įskaitant UEFI įkrovos NTFS","Buat pemacu boleh boot BIOS atau UEFI, termasuk NTFS boleh boot UEFI","Lag BIOS eller UEFI oppstartbare disker, inkludert UEFI oppstartbar NTFS","درایوهای قابل بوت بایوس یا UEFI از جمله NTFS قابل بوت UEFI ایجاد کنید","Stwórz dysk rozruchowy BIOS lub UEFI, włączając bootowalny dysk UEFI NTFS","Criar discos inicializáveis BIOS ou UEFI, inclusive discos UEFI inicializáveis usando NTFS","Criar discos inicializáveis BIOS ou UEFI, inclusive discos UEFI inicializáveis usando NTFS","Crează discuri bootabile BIOS sau UEFI, incluzând NTFS-uri bootabile de UEFI","Создать загрузочные диски BIOS или UEFI, включая загрузочный UEFI NTFS","Kreiranje BIOS ili UEFI disk jedinica za pokretanje sistema, uključujući NTFS sa UEFI pokretanjem sistema","Vytvorte bootovacie jednotky systému BIOS alebo UEFI vrátane UEFI bootovateľnej jednotky NTFS","Ustvarite zagonske pogone BIOS ali UEFI, vključno z UEFI bootable NTFS","Cree unidades de arranque BIOS o UEFI, incluido NTFS de arranque UEFI","Skapa BIOS- eller UEFI-startbara enheter, inklusive UEFI-startbar NTFS","สร้างไดร์ฟที่บูตได้จาก BIOS หรือ UEFI รวมไปถึง NTFS ที่บูตได้จาก UEFI","UEFI önyüklenebilir NTFS dahil BIOS ya da UEFI önyüklenebilir sürücüler oluşturun","Створення завантажувальних пристроїв BIOS чи UEFI, включаючи завантажувальний UEFI NTFS","Tạo ổ đĩa có thể khởi động với hệ thống BIOS hoặc UEFI, bao gồm cả NTFS có thể khởi động với UEFI"
"Feature6","705","Text","","Create 'Windows To Go' drives","إنشاء محركات أقراص ""Windows To Go\","Създаване на 'Windows To Go' устройства","创建 'Windows To Go' 驱动器","建立 'Windows To Go' 隨身碟","Stvaranje pogona ""Windows To Go\","Vytvoření jednotek ""Windows To Go","Lav 'Windows To Go' drev","'Windows To Go'-schijven aanmaken","Luo 'Windows To Go' -asemia","Créez des disques 'Windows To Go'","Erstellen von ""Windows To Go""-Laufwerken","Δημιουργήστε μονάδες δίσκου ""Windows To Go\","יצירת כונני Windows To Go","'Windows To Go' meghajtók készítése","Buat perangkat Windows To Go","Crea unità 'Windows To Go'","Windows To Goドライブを作成します。","'Windows To Go' 드라이브 만들기","Izveido 'Windows To Go' ierīces","Sukurkite ""Windows To Go"" diskus","Buat pemacu 'Windows To Go'","Lag 'Windows To Go' disker","درایوهای ""Windows To Go"" را ایجاد کنید","Stwórz dysk 'Windows To Go'","Criar discos 'Windows To Go'","Criar discos 'Windows To Go'","Crează discuri 'Windows To Go'","Создание дисков Windows To Go","Kreiranje disk jedinica ""Windows to Go\","Vytvorte jednotky „Windows To Go\","Ustvarjanje pogonov »Windows To Go'","Cree unidades 'Windows To Go'","Skapa 'Windows To Go'-enheter","สร้างไดร์ฟของ 'Windows To Go'","'Windows To Go' sürücüleri oluşturun","Створення пристроїв 'Windows To Go'","Tạo ổ đĩa 'Windows To Go'"
"Feature7","706","Text","","Create Windows 11 installation drives for PCs that don't have TPM or Secure Boot","قم بإنشاء محركات تثبيت ويندوز 11 لأجهزة الكمبيوتر التي لا تحتوي على TPM أو التمهيد الآمن","Създаване на Windows 11 инсталационно устройство за компютри, които нямат TPM или Secure Boot","为没有 TPM 或安全启动功能的电脑创建 Windows 11 安装驱动器","為沒有 TPM 或安全開機功能的電腦建立 Windows 11 安裝隨身碟","Stvaranje instalacijskih pogona sustava Windows 11 za PC-jeve koji nemaju TPM ili Sigurno pokretanje","Vytvoření instalačních jednotek systému Windows 11 pro počítače bez čipu TPM nebo Secure Boot","Lav Windows 11 installations drev for PCer der ikker har TPM eller Secure Boot","Windows 11 installatieschijven aanmaken voor pc's die geen TPM of Secure Boot hebben","Luo Windows 11 -asennusasemia tietokoneille, jotka eivät tue TPM- tai Secure Boot -ominaisuuksia","Créez des disques d'installation Windows 11 pour des PCs qui ne disposent pas de TPM ou Secure Boot","Erstellen von Windows 11-Installationslaufwerken für PCs ohne TPM oder Secure Boot","Δημιουργήστε μονάδες εγκατάστασης των Windows 11 για υπολογιστές που δεν διαθέτουν TPM ή Ασφαλή Εκκίνηση","יצירת כונני התקנה של Windows 11 עבור מחשבים שאין להם TPM או Secure Boot","Windows 11 telepítési meghajtók készítése olyan PC-k számára, amelyek nem rendelkeznek TPM vagy Secure Boot funkciókkal","Buat perangkat pemasang Windows 11 untuk PC yang tidak mempunyai TPM atau Secure Boot","Crea unità di installazione di Windows 11 per PC che non dispongono di TPM o avvio protetto","TPM及びセキュアブート非対応のPC向けのWindows 11インストールドライブを作成します","TPM 또는 보안 부팅이 없는 PC용 Windows 11 설치 드라이브 만들기","Izveido Windows 11 instalācijas ierīces datoriem, kam nav TPM vai Secure Boot","Sukurkite Windows 11 diegimo diskus kompiuteriams, kuriuose nėra TPM arba saugaus įkrovimo","Buat pemacu pemasangan Windows 11 untuk PC yang tidak mempunyai TPM atau But Selamat","Lag oppstartsmedia for Windows 11 som ikke krever TPM eller Secure Boot","درایوهای نصب ویندوز 11 را برای رایانه هایی که TPM یا Secure Boot ندارند ایجاد کنید","Twórz dyski instalacyjne systemu Windows 11 dla komputerów, które nie posiadają modułu TPM ani Secure Boot","Criar discos de instalação do Windows 11 para PCs que não possuem TPM ou Secure Boot","Criar discos de instalação do Windows 11 para PCs que não possuem TPM ou Secure Boot","Crează drive de instalare Windows 11 pe computere care nu au TPM sau Bootare Securizată","Создать установочные диски Windows 11 для компьютеров без TPM или безопасной загрузки","Kreiranje windows 11 instalacionih disk jedinica za računare koji nemaju TPM ili bezbedno pokretanje sistema","Vytvorte inštalačné jednotky Windows 11 pre počítače, ktoré nemajú modul TPM, ani Secure Boot","Ustvarjanje namestitvenih pogonov za Windows 11 za računalnike, ki nimate TPM ali Varnega zagona","Cree unidades de instalación de Windows 11 para PC que no tienen TPM o Arranque seguro","Skapa installationsenheter till Windows 11 för datorer som inte har TPM eller säker start","สร้างไดร์ฟติดตั้ง Windows 11 สำหรับคอมพิวเตอร์ที่ไม่มี TPM หรือ SecureBoot","TPM ya da Güvenli Önyüklemeye sahip olmayan bilgisayarlar için Windows 11 kurulum sürücüleri oluşturun","Створення інсталяційних дисків Windows 11 для ПК, які не мають TPM чи Secure Boot","Tạo ổ đĩa cài đặt Windows 11 cho các máy tính không có TPM hoặc Secure Boot"
"Feature8","707","Text","","Create persistent Linux partitions","إنشاء Persistent Linux partitions","Създаване на устойчиви Linux дялове","创建持久 Linux 分区","建立持續性 Linux 磁區","Stvaranje trajnih Linux particija","Vytvoření trvalých oddílů systému Linux","Lav vedvarende Linux adskillelser","Persistent Linux partities aanmaken","Luo pysyviä Linux-osioita","Créez des partitions persistentes pour Linux","Persistente Linux-Partitionen erstellen","Δημιουργήστε μόνιμα διαμερίσματα Linux","יצירת מחיצות Linux קבועות","Tartós Linux partíciók készítése","Buat partisi Linux yang tetap/persistent","Crea partizioni persistenti Linux","記録用Linuxパーティションを作成します。","영구 리눅스 파티션 만들기","Izveido pastāvīgas Linux partīcijas","Sukurkite nuolatinius Linux skaidinius","Buat partition Linux berterusan","Lag persistente Linux partisjoner","ایجاد پارتیشن های لینوکس دائمی","Stwórz particje persistent Linuxa","Criar partições persistentes para Linux","Crie partições persistentes para Linux","Crează partiție de Linux persistentă","Создать постоянные разделы Linux","Kreiranje upornih Linux particija","Vytvorte trvalé oblasti systému Linux","Ustvarjanje trajnih Linux particij","Crear particiones persistentes de Linux","Skapa beständiga Linux-partitioner","สร้างพาร์ทิชั่นของ Linux แบบถาวร","Kalıcı Linux bölümleri oluşturun","Створення розділу збереження Linux","Tạo phân vùng Linux liên tục"
"Feature9","708","Text","","Create VHD/DD images of the selected drive","إنشاء صور VHD / DD لمحرك الأقراص المحدد","Създаване на VHD/DD образи на избраното устройство","为选择的驱动器创建 VHD/DD 镜像","為選中的磁碟機建立 VHD/DD 映像檔","Stvaranje VHD/DD slika odabranog pogona","Vytvoření obrazů VHD/DD z vybrané jednotky","Lav VHD/DD billeder af det valgte drev","VHD/DD-images van de geselecteerde schijf aanmaken","Luo VHD/DD-kuvia valitusta asemasta","Créez des images VHD/DD du périphérique sélectionné","VHD/DD-Images des ausgewählten Laufwerks erstellen","Δημιουργήστε εικόνες VHD/DD της επιλεγμένης μονάδας δίσκου","יצירת קובצי תמונה מסוג VHD/DD של הכונן שנבחר","VHD/DD képfájl készítése a kiválasztott meghajtóról","Buat image VHD/DD dari penyimpanan yang dipilih","Crea immagini VHD/DD dell'unità selezionata","選択されたドライブのVHD/DDイメージを作成します。","선택한 드라이브의 VHD/DD 이미지 만들기","Izveido izvēlētā diska VHD/DD virtuālos attēlus","Sukurkite pasirinkto disko VHD / DD vaizdus","Buat imej VHD/DD bagi pemacu yang dipilih","Lag VHD/DD speilinger av valgt disk","تصاویر VHD/DD از درایو انتخاب شده ایجاد کنید","Stwórz obraz VHD/DD z wybranego dysku","Criar imagens VHD/DD do dispositivo selecionado","Criar imagens VHD/DD do dispositivo selecionado","Crează imagini VHD/DD de pe drive-ul selectat","Создать образы VHD/DD выбранного диска","Kreiranje VHD/DD slika izabrane disk jedinice","Vytvorte obrazy VHD/DD z vybratej jednotky","Ustvarjanje VHD/DD slik izbranega pogona","Cree imágenes VHD/DD de la unidad seleccionada","Skapa VHD/DD-avbilder av den valda enheten","สร้างอิมเมจไฟล์แบบ VHD/DD ของไดร์ฟที่เลือก","Seçilen sürücünün VHD/DD yansılarını oluşturun","Створення образів VHD/DD з вибраних дисків","Tạo tệp VHD/DD từ ổ đĩa đã chọn"
"Feature10","709","Text","","Compute MD5, SHA-1, SHA-256 and SHA-512 checksums of the selected image","حساب المجموع الاختباري MD5 و SHA-1 و SHA-256 و SHA-512 للصورة المحددة","Изчисляване на MD5, SHA-1, SHA-256 и SHA-512 чексуми на избраният образ","计算被选择镜像的 MD5、SHA-1、SHA-256 和 SHA-512 校验码","計算被選中映像的 MD5、SHA-1、SHA-256 和 SHA-512 檢查碼","Izračunajte kontrolne zbrojeve odabrane slike MD5, SHA-1, SHA-256 i SHA-512","Výpočet kontrolních součtů MD5, SHA-1, SHA-256 a SHA-512 vybraného obrazu","Beregn MD5, SHA-1, SHA-256 og SHA-512 checksums af det valgte billede","MD5, SHA-1, SHA-256 en SHA-512 controlesommen berekenen van de geselecteerde image","Laske MD5, SHA-1, SHA-256 ja SHA-512 tarkistussummia valitusta levykuvasta","Calculez les sommes de contrôle MD5, SHA-1, SHA-256 et SHA-512 de l'image sélectionnée","Berechnung von MD5-, SHA-1-, SHA-256- und SHA-512-Prüfsummen für das ausgewählte Bild","Υπολογίστε τα αθροίσματα ελέγχου MD5, SHA-1, SHA-256 και SHA-512 της επιλεγμένης εικόνας","חישוב סיכומי ביקורת מסוג MD5, SHA-1, SHA-256 ו־SHA-512 של קובץ התמונה שנבחרה","A kiválasztott képfájl MD5, SHA-1, SHA-256 és SHA-512 ellenőrző összegének kiszámítása","Hitung checksum MD5, SHA-1, SHA-256 dan SHA-512 dari image yang dipilih","Calcola i checksum MD5, SHA-1, SHA-256 e SHA-512 dell'immagine selezionata","選択されたイメージのMD5、SHA-1、SHA-256及びSHA-512チェックサムを計算します。","선택한 이미지의 MD5, SHA-1, SHA-256 및 SHA-512 체크섬 계산","Izskaitļo izvēlētā virtuālā attēla MD5, SHA-1, SHA-256 un SHA-512 kontrolsummas","Apskaičiuokite pasirinkto vaizdo MD5, SHA-1, SHA-256 ir SHA-512 kontrolines sumas","Kira MD5, SHA-1, SHA-256 dan SHA-512 checksum imej yang dipilih","Kalkuler MD5, SHA-1, SHA-256 og SHA-512 sjekksummer fra valgt speiling","MD5، SHA-1، SHA-256 و SHA-512 را برای تصویر انتخابی محاسبه کنید","Oblicz sumy kontrolne MD5, SHA-1, SHA-256 i SHA-512 dla wybranego obrazu","Calcular somas de verificação MD5, SHA-1, SHA-256 e SHA-512 da imagem selecionada","Calcular checksums MD5, SHA-1, SHA-256 e SHA-512 da imagem selecionada","Compută MD5, SHA-1, SHA-256 și SHA-512 suma de control ale imaginilor selectate","Вычислить контрольные суммы MD5, SHA-1, SHA-256 и SHA-512 выбранного образа","Izračunajte MD5, SHA-1, SHA-256 i SHA-512 kontrolne preglede izabrane slike","Vypočítajte kontrolné súčty vybratého obrazu (MD5, SHA-1, SHA-256 a SHA-512)","Račun MD5, SHA-1, SHA-256 in SHA-512 kontrolni vsoti izbrane slike","Calcule las sumas de comprobación MD5, SHA-1, SHA-256 y SHA-512 de la imagen seleccionada","Beräkna kontrollsummor MD5, SHA-1, SHA-256 och SHA-512 för den valda avbilden","คำนวนรหัส MD5, SHA-1, SHA-256, SHA-512 ของไฟล์อิมเมจที่เลือก","Seçilen yansının MD5, SHA-1, SHA-256 ve SHA-512 sağlama toplamlarını hesaplayın","Обчислення контрольних сум MD5, SHA-1, SHA-256 та SHA-512 для вибраних образів","Tính tổng kiểm MD5, SHA-1, SHA-256 và SHA-512 của tệp đã chọn"
"Feature11","710","Text","","Perform bad blocks checks, including detection of ""fake"" flash drives","إجراء فحوصات كتل تالفة ، بما في ذلك الكشف عن محركات أقراص فلاش ""زائفة\","Проверяване за лоши блокове, включително засичане на ""фалшиви"" устройства","执行坏块检查包括对”假“U盘的检测","執行壞軌檢查包括對”假“USB 快閃磁碟機的偵測","Izvršite provjere loših blokova, uključujući otkrivanje ""lažnih"" flash pogona","Provést kontrolu vadných bloků, včetně detekce ""falešných"" bloků. flash disky","Udøv dårlige blokke tjeks, inklusiv opdagelse af ""falske"" flashdrev","Controles uitvoeren op slechte blokken, inclusief detectie van ""valse"" flashdrives","Suorita viallisten lohkojen tarkistuksia, sisältäen ""valheellisten"" muistitikkujen tunnistamisen","Executez un test de mauvais secteurs avec detection des ""fake drives\","Durchführung von Prüfungen auf fehlerhafte Blöcke, einschließlich der Erkennung von ""gefälschten"" Flash-Laufwerken","Εκτελέστε ελέγχους εσφαλμένων block, συμπεριλαμβανομένου του εντοπισμού ""ψευδών"" μονάδων flash","ביצוע בדיקות אחר בלוקים (אזורים) פגומים, כולל זיהוי של כונני הבזק ""מזוייפים\","Hibás blokkok ellenőrzése, beleértve a ""hamis"" flash meghajtók detektálását","Lakukan cek Blok yang buruk, termasuk deteksi USB Flash Disk ""PALSU\","Esegui controlli dei blocchi danneggiati, incluso il rilevamento di unità flash ""false\","不良ブロックチェック及び容量詐欺ドライブの検知を行います。","""위조"" 플래시 드라이브 감지를 포함하여 불량 블록 검사 수행","Izpilda bojāto bloku pārbaudi ieskaitot ""falsificēto"" nesēju noteikšanu","Atlikite blogų blokų patikrinimus, įskaitant ""netikrų"" flash diskų aptikimą","Melakukan pemeriksaan blok buruk, termasuk pengesanan pemacu kilat ""palsu\","Utfør sjekk for dårlige sektorer, inkludert sjekk for forfalskede flash disker","بررسی بلوک های بد، از جمله تشخیص درایوهای فلش ""جعلی"" را انجام دهید","Sprawdź dysk pod względem spójności danych lub wykryj ""nieorginalny"" pendrive","Executar verificações de blocos defeituosos, incluindo detecção de unidades flash ""falsificadas\","Executar verificações de blocos inválidos, incluindo a detecção de unidades flash ""falsas\","Verifică blocuri rele, incluzând detectarea de drive-uri flash ""false\","Проверить наличие плохих блоков, обнаружить ""поддельные"" флешки","Izvršite provere loših blokova, uključujući otkrivanje ""lažnih"" fleš diskova","Vykonajte kontroly zlých blokov vrátane detekcie „falošných"" prenosných diskov","Izvajanje preverjanj slabih blokov, vključno z odkrivanjem »lažnih« bliskavic","Realice comprobaciones de bloques defectuosos, incluida la detección de unidades flash ""falsas\","Utför kontroll av trasiga block, inklusive upptäckt av ""falska"" USB-minnen","ดำเนินการตรวจสอบบล็อกข้อมูลที่พัง รวมไปถึงการทดสอบว่าเป็นแฟลชไดร์ฟ ""ปลอม"" หรือไม่","""Sahte"" flash sürücülerin tespiti de dahil olmak üzere hatalı blok kontrolleri gerçekleştirin","Перевірка дисків (включаючи фальшиві диски)","Thực hiện kiểm tra điểm lỗi, bao gồm phát hiện ổ đĩa ""giả\"
"Feature12","711","Text","","Download official Microsoft Windows retail ISOs","قم بتنزيل ملفات ISO الرسمية الخاصة بـ Microsoft Windows","Изтегляне на официални Microsoft Windows ISO образи","下载微软官方 Windows 镜像","下載微軟官方 Windows 映像檔","Preuzimanje službenih ISO-ova za maloprodaju sustava Microsoft Windows","Stažení oficiálních souborů ISO systému Microsoft Windows","Hent officielle Microsoft Windows detail ISOer","Officiële Microsoft Windows retail ISO's downloaden","Lataa virallisia Microsoft Windowsin jälleenmyyntiversion ISO-levykuvia","Téléchargez des images ISOs commerciales officielles de Microsoft Windows","Offizielle Microsoft Windows-ISOs herunterladen","Κατεβάστε τα επίσημα retail ISO των Microsoft Windows","הורדת קובצי ה־ISO הקמעונאיים הרשמיים של Microsoft Windows","Hivatalos Microsoft Windows kiskereskedelmi ISO képfájlok letöltése","Unduh ISO Microsoft Windows resmi","Scarica le ISO ufficiali di Microsoft Windows","マイクロソフト公式のWindows ISOをダウンロードします。","공식 Microsoft Windows 리테일 ISO 다운로드","Lejupielādē oficiālos Microsoft ISO failus","Atsisiųskite oficialius Microsoft Windows mažmeninės prekybos ISO","Muat turun rasmi ISO runcit Microsoft Windows","Last ned offisielle Windows ISOer","ISO های رسمی ماکروسافت را دریافت کنید","Pobierz oficjalny obraz ISO systemu Microsoft Windows","Baixar ISOs oficiais do Microsoft Windows","Transferir ISOs oficiais do Microsoft Windows Retail","Descarcă un Microsoft Windows ISO oficial de vânzare","Загрузить официальные ISO-образы Windows","Preuzmite zvanične Microsoft Windows maloprodajne ISO-ove","Stiahnite si oficiálne ISO pre Microsoft Windows","Prenos uradnih Microsoft Windows maloprodaja ISOs","Descargue los ISO oficiales de Microsoft Windows","Ladda ner officiella Microsoft Windows ISO-filer","ดาวน์โหลดอิมเมจไฟล์ของ Windows จากเว็บไซต์ทางการ","Resmi Microsoft Windows Retail ISO'larını indirin","Завантаження офіційних образів Microsoft Windows","Tải xuống các tệp Microsoft Windows ISO bán lẻ chính thức"
"Feature13","712","Text","","Download UEFI Shell ISOs","قم بتنزيل UEFI Shell ISOs","Изтегляне на UEFI Shell образи","下载 UEFI Shell 镜像","下載 UEFI Shell 映像檔","Preuzmite ISO-ove UEFI ljuske","Stažení souborů UEFI Shell ISO","Hent UEFI Shell ISOer","UEFI Shell ISO's downloaden","Lataa UEFI Shell ISO-levykuvia","Téléchargez des images ISOs du Shell UEFI","UEFI-Shell-ISOs herunterladen","Κατεβάστε τα ISO Shell UEFI","הורדת קובצי ISO של מעטפת UEFI","UEFI Shell ISO képfájlok letöltése","Unduh Shell ISO UEFI","Scarica le ISO della shell UEFI","UEFIシェルのISOをダウンロードします。","UEFI Shell ISO 다운로드","Lejupielādē UEFI OS ISO failus","Atsisiųskite UEFI Shell ISO","Muat turun ISO Shell UEFI","Last ned UEFI kommandolinje ISOer","ISO های پوسته UEFI را دانلود کنید","Ściągnij obrazy ISO UEFI Shell","Baixar ISOs do Shell UEFI","Transferir ISOs de UEFI Shell","Descarcă UEFI Shell ISO-uri","Загрузить ISO-образы оболочки UEFI","Preuzmite UEFI Shell ISOs","Stiahnite UEFI Shell ISO","Prenos UEFI Shell ISOs","Descargar ISO de UEFI Shell","Ladda ner UEFI-shell ISO-filer","ดาวน์โหลดอิมเมจไฟล์ของ UEFI Shell","UEFI Shell ISO'larını indirin","Завантаження командної оболонки UEFI ISO","Tải xuống các tệp UEFI Shell ISO"
"Feature14","713","Text","",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"Feature15","714","Text","",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"Feature16","715","Text","",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

1 Field ID Type (Type) default en-us ar-sa bg-bg zh-cn zh-tw hr-hr cs-cz da-dk nl-nl fi-fi fr-fr de-de el-gr he-il hu-hu id-id it-it ja-jp ko-kr lv-lv lt-lt ms-my nb-no fa-ir pl-pl pt-br pt-pt ro-ro ru-ru sr-latn-rs sk-sk sl-si es-es sv-se th-th tr-tr uk-ua vi-vn
13 DesktopScreenshot2 101 Relative path (or URL to file in Partner Center) listing/en-us/Screenshot2.png
14 DesktopScreenshot3 102 Relative path (or URL to file in Partner Center) listing/en-us/Screenshot3.png
15 DesktopScreenshot4 103 Relative path (or URL to file in Partner Center) listing/en-us/Screenshot4.png
16 DesktopScreenshot5 104 Relative path (or URL to file in Partner Center)
17 DesktopScreenshot6 105 Relative path (or URL to file in Partner Center)
18 DesktopScreenshot7 106 Relative path (or URL to file in Partner Center)
19 DesktopScreenshot8 107 Relative path (or URL to file in Partner Center)
114 Feature9 708 Text Create VHD/DD images of the selected drive إنشاء صور VHD / DD لمحرك الأقراص المحدد Създаване на VHD/DD образи на избраното устройство 为选择的驱动器创建 VHD/DD 镜像 為選中的驅動創建 VHD/DD 鏡像 為選中的磁碟機建立 VHD/DD 映像檔 Stvaranje VHD/DD slika odabranog pogona Vytvoření obrazů VHD/DD z vybrané jednotky Lav VHD/DD billeder af det valgte drev VHD/DD-images van de geselecteerde schijf aanmaken Luo VHD/DD-kuvia valitusta asemasta Créez des images VHD/DD du périphérique sélectionné VHD/DD-Images des ausgewählten Laufwerks erstellen Δημιουργήστε εικόνες VHD/DD της επιλεγμένης μονάδας δίσκου יצירת קובצי תמונה מסוג VHD/DD של הכונן שנבחר VHD/DD képfájl készítése a kiválasztott meghajtóról Buat image VHD/DD dari penyimpanan yang dipilih Crea immagini VHD/DD dell'unità selezionata 選択されたドライブのVHD/DDイメージを作成します。 선택한 드라이브의 VHD/DD 이미지 만들기 Izveido izvēlētā diska VHD/DD virtuālos attēlus Sukurkite pasirinkto disko VHD / DD vaizdus Buat imej VHD/DD bagi pemacu yang dipilih Lag VHD/DD speilinger av valgt disk تصاویر VHD/DD از درایو انتخاب شده ایجاد کنید Stwórz obraz VHD/DD z wybranego dysku Criar imagens VHD/DD do dispositivo selecionado Criar imagens VHD/DD do dispositivo selecionado Crează imagini VHD/DD de pe drive-ul selectat Создать образы VHD/DD выбранного диска Kreiranje VHD/DD slika izabrane disk jedinice Vytvorte obrazy VHD/DD z vybratej jednotky Ustvarjanje VHD/DD slik izbranega pogona Cree imágenes VHD/DD de la unidad seleccionada Skapa VHD/DD-avbilder av den valda enheten สร้างอิมเมจไฟล์แบบ VHD/DD ของไดร์ฟที่เลือก Seçilen sürücünün VHD/DD yansılarını oluşturun Створення образів VHD/DD з вибраних дисків Tạo tệp VHD/DD từ ổ đĩa đã chọn
115 Feature10 709 Text Compute MD5, SHA-1, SHA-256 and SHA-512 checksums of the selected image حساب المجموع الاختباري MD5 و SHA-1 و SHA-256 و SHA-512 للصورة المحددة Изчисляване на MD5, SHA-1, SHA-256 и SHA-512 чексуми на избраният образ 计算被选择镜像的 MD5、SHA-1、SHA-256 和 SHA-512 校验码 計算被選中鏡像的 MD5、SHA-1、SHA-256 和 SHA-512 校驗碼 計算被選中映像的 MD5、SHA-1、SHA-256 和 SHA-512 檢查碼 Izračunajte kontrolne zbrojeve odabrane slike MD5, SHA-1, SHA-256 i SHA-512 Výpočet kontrolních součtů MD5, SHA-1, SHA-256 a SHA-512 vybraného obrazu Beregn MD5, SHA-1, SHA-256 og SHA-512 checksums af det valgte billede MD5, SHA-1, SHA-256 en SHA-512 controlesommen berekenen van de geselecteerde image Laske MD5, SHA-1, SHA-256 ja SHA-512 tarkistussummia valitusta levykuvasta Calculez les sommes de contrôle MD5, SHA-1, SHA-256 et SHA-512 de l'image sélectionnée Berechnung von MD5-, SHA-1-, SHA-256- und SHA-512-Prüfsummen für das ausgewählte Bild Υπολογίστε τα αθροίσματα ελέγχου MD5, SHA-1, SHA-256 και SHA-512 της επιλεγμένης εικόνας חישוב סיכומי ביקורת מסוג MD5,‏ SHA-1,‏ SHA-256 ו־SHA-512 של קובץ התמונה שנבחרה A kiválasztott képfájl MD5, SHA-1, SHA-256 és SHA-512 ellenőrző összegének kiszámítása Hitung checksum MD5, SHA-1, SHA-256 dan SHA-512 dari image yang dipilih Calcola i checksum MD5, SHA-1, SHA-256 e SHA-512 dell'immagine selezionata 選択されたイメージのMD5、SHA-1、SHA-256及びSHA-512チェックサムを計算します。 선택한 이미지의 MD5, SHA-1, SHA-256 및 SHA-512 체크섬 계산 Izskaitļo izvēlētā virtuālā attēla MD5, SHA-1, SHA-256 un SHA-512 kontrolsummas Apskaičiuokite pasirinkto vaizdo MD5, SHA-1, SHA-256 ir SHA-512 kontrolines sumas Kira MD5, SHA-1, SHA-256 dan SHA-512 checksum imej yang dipilih Kalkuler MD5, SHA-1, SHA-256 og SHA-512 sjekksummer fra valgt speiling MD5، SHA-1، SHA-256 و SHA-512 را برای تصویر انتخابی محاسبه کنید Oblicz sumy kontrolne MD5, SHA-1, SHA-256 i SHA-512 dla wybranego obrazu Calcular somas de verificação MD5, SHA-1, SHA-256 e SHA-512 da imagem selecionada Calcular checksums MD5, SHA-1, SHA-256 e SHA-512 da imagem selecionada Compută MD5, SHA-1, SHA-256 și SHA-512 suma de control ale imaginilor selectate Вычислить контрольные суммы MD5, SHA-1, SHA-256 и SHA-512 выбранного образа Izračunajte MD5, SHA-1, SHA-256 i SHA-512 kontrolne preglede izabrane slike Vypočítajte kontrolné súčty vybratého obrazu (MD5, SHA-1, SHA-256 a SHA-512) Račun MD5, SHA-1, SHA-256 in SHA-512 kontrolni vsoti izbrane slike Calcule las sumas de comprobación MD5, SHA-1, SHA-256 y SHA-512 de la imagen seleccionada Beräkna kontrollsummor MD5, SHA-1, SHA-256 och SHA-512 för den valda avbilden คำนวนรหัส MD5, SHA-1, SHA-256, SHA-512 ของไฟล์อิมเมจที่เลือก Seçilen yansının MD5, SHA-1, SHA-256 ve SHA-512 sağlama toplamlarını hesaplayın Обчислення контрольних сум MD5, SHA-1, SHA-256 та SHA-512 для вибраних образів Tính tổng kiểm MD5, SHA-1, SHA-256 và SHA-512 của tệp đã chọn
116 Feature11 710 Text Perform bad blocks checks, including detection of "fake" flash drives إجراء فحوصات كتل تالفة ، بما في ذلك الكشف عن محركات أقراص فلاش "زائفة\ Проверяване за лоши блокове, включително засичане на "фалшиви" устройства 执行坏块检查,包括对”假“U盘的检测 執行壞塊檢查,包括對”假“USB 快閃磁碟機的檢測 執行壞軌檢查,包括對”假“USB 快閃磁碟機的偵測 Izvršite provjere loših blokova, uključujući otkrivanje "lažnih" flash pogona Provést kontrolu vadných bloků, včetně detekce "falešných" bloků. flash disky Udøv dårlige blokke tjeks, inklusiv opdagelse af "falske" flashdrev Controles uitvoeren op slechte blokken, inclusief detectie van "valse" flashdrives Suorita viallisten lohkojen tarkistuksia, sisältäen "valheellisten" muistitikkujen tunnistamisen Executez un test de mauvais secteurs avec detection des "fake drives\ Durchführung von Prüfungen auf fehlerhafte Blöcke, einschließlich der Erkennung von "gefälschten" Flash-Laufwerken Εκτελέστε ελέγχους εσφαλμένων block, συμπεριλαμβανομένου του εντοπισμού "ψευδών" μονάδων flash ביצוע בדיקות אחר בלוקים (אזורים) פגומים, כולל זיהוי של כונני הבזק "מזוייפים\ Hibás blokkok ellenőrzése, beleértve a "hamis" flash meghajtók detektálását Lakukan cek Blok yang buruk, termasuk deteksi USB Flash Disk "PALSU\ Esegui controlli dei blocchi danneggiati, incluso il rilevamento di unità flash "false\ 不良ブロックチェック及び容量詐欺ドライブの検知を行います。 "위조" 플래시 드라이브 감지를 포함하여 불량 블록 검사 수행 Izpilda bojāto bloku pārbaudi ieskaitot "falsificēto" nesēju noteikšanu Atlikite blogų blokų patikrinimus, įskaitant "netikrų" flash diskų aptikimą Melakukan pemeriksaan blok buruk, termasuk pengesanan pemacu kilat "palsu\ Utfør sjekk for dårlige sektorer, inkludert sjekk for forfalskede flash disker بررسی بلوک های بد، از جمله تشخیص درایوهای فلش "جعلی" را انجام دهید Sprawdź dysk pod względem spójności danych lub wykryj "nieorginalny" pendrive Executar verificações de blocos defeituosos, incluindo detecção de unidades flash "falsificadas\ Executar verificações de blocos inválidos, incluindo a detecção de unidades flash "falsas\ Verifică blocuri rele, incluzând detectarea de drive-uri flash "false\ Проверить наличие плохих блоков, обнаружить "поддельные" флешки Izvršite provere loših blokova, uključujući otkrivanje "lažnih" fleš diskova Vykonajte kontroly zlých blokov vrátane detekcie „falošných" prenosných diskov Izvajanje preverjanj slabih blokov, vključno z odkrivanjem »lažnih« bliskavic Realice comprobaciones de bloques defectuosos, incluida la detección de unidades flash "falsas\ Utför kontroll av trasiga block, inklusive upptäckt av "falska" USB-minnen ดำเนินการตรวจสอบบล็อกข้อมูลที่พัง รวมไปถึงการทดสอบว่าเป็นแฟลชไดร์ฟ "ปลอม" หรือไม่ "Sahte" flash sürücülerin tespiti de dahil olmak üzere hatalı blok kontrolleri gerçekleştirin Перевірка дисків (включаючи фальшиві диски) Thực hiện kiểm tra điểm lỗi, bao gồm phát hiện ổ đĩa "giả\
117 Feature12 711 Text Download official Microsoft Windows retail ISOs قم بتنزيل ملفات ISO الرسمية الخاصة بـ Microsoft Windows Изтегляне на официални Microsoft Windows ISO образи 下载微软官方 Windows 镜像 下載微軟官方 Windows 鏡像 下載微軟官方 Windows 映像檔 Preuzimanje službenih ISO-ova za maloprodaju sustava Microsoft Windows Stažení oficiálních souborů ISO systému Microsoft Windows Hent officielle Microsoft Windows detail ISOer Officiële Microsoft Windows retail ISO's downloaden Lataa virallisia Microsoft Windowsin jälleenmyyntiversion ISO-levykuvia Téléchargez des images ISOs commerciales officielles de Microsoft Windows Offizielle Microsoft Windows-ISOs herunterladen Κατεβάστε τα επίσημα retail ISO των Microsoft Windows הורדת קובצי ה־ISO הקמעונאיים הרשמיים של Microsoft Windows Hivatalos Microsoft Windows kiskereskedelmi ISO képfájlok letöltése Unduh ISO Microsoft Windows resmi Scarica le ISO ufficiali di Microsoft Windows マイクロソフト公式のWindows ISOをダウンロードします。 공식 Microsoft Windows 리테일 ISO 다운로드 Lejupielādē oficiālos Microsoft ISO failus Atsisiųskite oficialius Microsoft Windows mažmeninės prekybos ISO Muat turun rasmi ISO runcit Microsoft Windows Last ned offisielle Windows ISOer ISO های رسمی ماکروسافت را دریافت کنید Pobierz oficjalny obraz ISO systemu Microsoft Windows Baixar ISOs oficiais do Microsoft Windows Transferir ISOs oficiais do Microsoft Windows Retail Descarcă un Microsoft Windows ISO oficial de vânzare Загрузить официальные ISO-образы Windows Preuzmite zvanične Microsoft Windows maloprodajne ISO-ove Stiahnite si oficiálne ISO pre Microsoft Windows Prenos uradnih Microsoft Windows maloprodaja ISOs Descargue los ISO oficiales de Microsoft Windows Ladda ner officiella Microsoft Windows ISO-filer ดาวน์โหลดอิมเมจไฟล์ของ Windows จากเว็บไซต์ทางการ Resmi Microsoft Windows Retail ISO'larını indirin Завантаження офіційних образів Microsoft Windows Tải xuống các tệp Microsoft Windows ISO bán lẻ chính thức
118 Feature13 712 Text Download UEFI Shell ISOs قم بتنزيل UEFI Shell ISOs Изтегляне на UEFI Shell образи 下载 UEFI Shell 镜像 下載 UEFI Shell 鏡像 下載 UEFI Shell 映像檔 Preuzmite ISO-ove UEFI ljuske Stažení souborů UEFI Shell ISO Hent UEFI Shell ISOer UEFI Shell ISO's downloaden Lataa UEFI Shell ISO-levykuvia Téléchargez des images ISOs du Shell UEFI UEFI-Shell-ISOs herunterladen Κατεβάστε τα ISO Shell UEFI הורדת קובצי ISO של מעטפת UEFI UEFI Shell ISO képfájlok letöltése Unduh Shell ISO UEFI Scarica le ISO della shell UEFI UEFIシェルのISOをダウンロードします。 UEFI Shell ISO 다운로드 Lejupielādē UEFI OS ISO failus Atsisiųskite UEFI Shell ISO Muat turun ISO Shell UEFI Last ned UEFI kommandolinje ISOer ISO های پوسته UEFI را دانلود کنید Ściągnij obrazy ISO UEFI Shell Baixar ISOs do Shell UEFI Transferir ISOs de UEFI Shell Descarcă UEFI Shell ISO-uri Загрузить ISO-образы оболочки UEFI Preuzmite UEFI Shell ISOs Stiahnite UEFI Shell ISO Prenos UEFI Shell ISOs Descargar ISO de UEFI Shell Ladda ner UEFI-shell ISO-filer ดาวน์โหลดอิมเมจไฟล์ของ UEFI Shell UEFI Shell ISO'larını indirin Завантаження командної оболонки UEFI ISO Tải xuống các tệp UEFI Shell ISO
119 Feature14 713 Text
120 Feature15 714 Text
121 Feature16 715 Text
122 Feature17 716 Text
123 Feature18 717 Text
124 Feature17 Feature19 716 718 Text
125 Feature18 Feature20 717 719 Text
126 Feature19 MinimumHardwareReq1 718 800 Text
127 Feature20 MinimumHardwareReq2 719 801 Text
128 MinimumHardwareReq1 MinimumHardwareReq3 800 802 Text
129 MinimumHardwareReq2 MinimumHardwareReq4 801 803 Text
130 MinimumHardwareReq3 MinimumHardwareReq5 802 804 Text
131 MinimumHardwareReq4 MinimumHardwareReq6 803 805 Text
132 MinimumHardwareReq5 MinimumHardwareReq7 804 806 Text
133 MinimumHardwareReq6 MinimumHardwareReq8 805 807 Text
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279

View File

@ -3,6 +3,9 @@
@echo off
setlocal EnableExtensions DisableDelayedExpansion
rem if set, this will override the version for the package
rem set VERSION_OVERRIDE=4.4.2104.0
goto main
:ReplaceTokenInFile
@ -66,13 +69,31 @@ for %%a in (%ARCHS%) do (
)
)
rem exiftool.exe can't be installed in the Windows system directories...
if not exist exiftool.exe (
echo exiftool.exe must exist in this directory
goto out
)
rem Make sure we're not trying to create a package from an ALPHA or BETA version!
exiftool -s3 -*InternalName* rufus_x64.exe | findstr /C:"ALPHA" 1>nul && (
echo Alpha version detected - ABORTED
goto out
)
exiftool -s3 -*InternalName* rufus_x64.exe | findstr /C:"BETA" 1>nul && (
echo Beta version detected - ABORTED
goto out
)
rem Populate the version from the executable
set target=%~dp0rufus_x64.exe
set target=%target:\=\\%
wmic datafile where "name='%target%'" get version | find /v "Version" > version.txt
set /p VERSION=<version.txt
set VERSION=%VERSION: =%
del version.txt
if "%VERSION_OVERRIDE%"=="" (
exiftool -s3 -*FileVersionNumber* rufus_x64.exe > version.txt
set /p VERSION=<version.txt
del version.txt
) else (
echo WARNING: Forcing version to %VERSION_OVERRIDE%
set VERSION=%VERSION_OVERRIDE%
)
echo Will create %VERSION% AppStore Bundle
pause

Binary file not shown.

View File

@ -4,4 +4,4 @@
*/
#pragma once
#define GRUB2_PACKAGE_VERSION "2.06"
#define GRUB2_PACKAGE_VERSION "2.12"

View File

@ -1,8 +1,8 @@
This directory contains the Grub 2.0 boot records that are used by Rufus
* boot.img and core.img were created from:
https://ftp.gnu.org/gnu/grub/grub-2.06.tar.xz
on a Debian 10.9 x64 system using the commands:
* boot.img and core.img were created from a patched (since the offcial GRUB 2.12 release is *BROKEN*):
https://ftp.gnu.org/gnu/grub/grub-2.12.tar.xz
on a Debian 12.5 x64 system using the commands:
./autogen.sh
# --enable-boot-time for Manjaro Linux
./configure --disable-nls --enable-boot-time

View File

@ -5,10 +5,24 @@ To edit a translation, please make sure to follow:
https://github.com/pbatard/rufus/wiki/Localization#Editing_an_existing_translation
Or simply download https://files.akeo.ie/pollock/pollock-1.5.exe and follow its directions.
o v4.?? (202?.??.??)
o v4.5 (2024.05.??)
- *UPDATED* IDC_RUFUS_MBR -> IDC_UEFI_MEDIA_VALIDATION "Enable runtime UEFI media validation"
- *UPDATED* MSG_167 "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
- *NEW* MSG_337 "An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS (...)"
- *NEW* MSG_338 "Revoked UEFI bootloader detected"
- *NEW* MSG_339 "Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked (...)"
- *NEW* MSG_340 "a \"Security Violation\" screen"
- *NEW* MSG_341 "a Windows Recovery Screen (BSOD) with '%s'"
- *NEW MSG_342 "Compressed VHDX Image"
- *NEW* MSG_343 "Uncompressed VHD Image"
- *NEW* MSG_344 "Full Flash Update Image"
- *NEW* MSG_345 "Some additional data must be downloaded from Microsoft to use this functionality (...)"
- *NEW* MSG_346 "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
- *NEW* MSG_347 "Expert Mode"
- *NEW* MSG_348 "Extracting archive files: %s"
- *NEW* MSG_349 "Use Rufus MBR"
o v3.22 (2023.??.??)
o v3.22 (2023.03.25)
// MSG_144 is aimed the the ISO download feature
- *UPDATED* MSG_144 "Temporarily banned by Microsoft for requesting too many downloads (...)" -> "Download of Windows ISOs is unavailable due to Microsoft having altered their website to prevent it."
// MSG_199 will appear for the ISO download feature if running on Windows 7

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-04-24 12:17+0300\n"
"PO-Revision-Date: 2023-04-25 13:09+0100\n"
"POT-Creation-Date: 2024-04-26 10:29+0100\n"
"PO-Revision-Date: 2024-04-29 10:22+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: ar_SA\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Arabic (العربية)\n"
"X-Rufus-LCID: 0x0401, 0x0801, 0x0c01, 0x1001, 0x1401, 0x1801, 0x1c01, 0x2001, 0x2401, 0x2801, 0x2c01, 0x3001, 0x3401, 0x3801, 0x3c01, 0x4001\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.2\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "قائمة محركات الأقراص الثابتة USB"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "إضافة إصلاحات لنظام الإدخال والإخراج الأساسي (BIOS) القديم"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "استخدام Rufus MBR مع معرف BIOS"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "تمكين التحقق من صحة وسائط UEFI في وقت التشغيل"
# fixed translation since فورمات is the pronounce of format in arabic, correct translation is تهّيئة
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
@ -73,7 +71,7 @@ msgstr "نظام الملفات"
#. • IDD_DIALOG → IDS_CLUSTER_SIZE_TXT
msgid "Cluster size"
msgstr "حجم الكتلة"
msgstr "حجم المجموعة"
#. • IDD_DIALOG → IDS_LABEL_TXT
msgid "Volume label"
@ -145,7 +143,7 @@ msgstr "السجل"
#. • IDD_LOG → IDC_LOG_CLEAR
msgid "Clear"
msgstr "مسح"
msgstr "مسح الكل"
#. • IDD_LOG → IDC_LOG_SAVE
msgid "Save"
@ -215,11 +213,11 @@ msgstr ""
#. • MSG_004
msgid "Rufus update policy"
msgstr "سياسة تحديث Rufus"
msgstr "تحديث سياسة Rufus"
#. • MSG_005
msgid "Do you want to allow Rufus to check for application updates online?"
msgstr "هل تريد السماح لـ Rufus بالتحقق من تحديثات التطبيق عبر الإنترنت؟"
msgstr "هل تريد السماح لـ Rufus بالتحقق من وجود تحديثات التطبيق عبر الإنترنت؟"
#. • MSG_007
msgid "Cancel"
@ -250,7 +248,7 @@ msgid ""
"%s"
msgstr ""
"%s\n"
"يمكن الإطلاع على تقرير مفصّل خلال:\n"
"يمكن الإطلاع على تقرير مفصّل من خلال:\n"
"%s"
#. • MSG_013
@ -373,7 +371,7 @@ msgstr "إيقاف"
#. • MSG_039
msgid "Launch"
msgstr "إطلاق"
msgstr "بدأ"
#. • MSG_041
msgid "Operation cancelled by the user"
@ -407,11 +405,11 @@ msgstr "أقسام متعددة"
#. • MSG_048
msgid "Rufus - Flushing buffers"
msgstr "روفوس - تفريغ الذاكرة"
msgstr "Rufus - تفريغ الذاكرة"
#. • MSG_049
msgid "Rufus - Cancellation"
msgstr "روفوس - إلغاء"
msgstr "Rufus - إلغاء"
#. • MSG_050
msgid "Success."
@ -451,7 +449,7 @@ msgstr "معالج الجهاز غير صالح."
#. • MSG_059
msgid "The selected cluster size is not valid for this device."
msgstr "حجم الكتلة المحدد غير صالح لهذا الجهاز."
msgstr "حجم المجموعة المحدد غير صالح لهذا الجهاز."
#. • MSG_060
msgid "The volume size is invalid."
@ -509,7 +507,7 @@ msgstr "لم يكتمل فحص الأجزاء السيئة."
#. • MSG_073
msgid "ISO image scan failure."
msgstr "فشل مسح صورة قرص ISO."
msgstr "فشل فحص صورة قرص ISO."
#. • MSG_074
msgid "ISO image extraction failure."
@ -525,7 +523,7 @@ msgstr "تعذر تصحيح/إعداد ملفات الاقلاع."
#. • MSG_077
msgid "Unable to assign a drive letter."
msgstr "تعذر تعيين حرف محرك أقراص."
msgstr "تعذر تعيين حرف لمحرك أقراص."
#. • MSG_078
msgid "Can't mount GUID volume."
@ -574,14 +572,14 @@ msgid ""
"Note: The new file will be downloaded in the current directory and once a '%s' exists there, it will be reused automatically."
msgstr ""
"صورة الـISO يبدو استخدامها لإصدار قديم من '%s'. \n"
"قوائم التمهيد قد لا يتم عرضها بشكل صحيح بهذا السبب.\n"
"قوائم الإقلاع قد لا يتم عرضها بشكل صحيح بهذا السبب.\n"
"\n"
"لإصلاح الخلل يمكنك تحميل إصدار جديد من قبل روفوس:\n"
"لإصلاح الخلل يمكنك تحميل إصدار جديد من قبل Rufus:\n"
"- إختر ‘نعم’ للإتصال بالإنترنت وتحميل الملف\n"
"- إختر ‘لا’ لترك ملف الISO دون تعديل\n"
"إذا كنت لا تعرف ما عليك فعله, عليك اختيار ‘نعم’.\n"
"\n"
"ملاحظة: سيتم تحميل ملف جديد في الدليل الحالي وبعد العثور على %s هناك, سوف يتم إعادة إستخدامه تلقائياً."
"ملاحظة: سيتم تحميل ملف جديد في المجلد الحالي للتطبيق وبعد العثور على %s هناك, سوف يتم إعادة إستخدامه تلقائياً."
#. • MSG_085
msgid "Downloading %s"
@ -630,7 +628,7 @@ msgid ""
msgstr ""
"هام: هذا المحرك يحتوي على أجزاء متعددة !!\n"
"\n"
"قد يشمل ذلك أقسامًا / وحدات تخزين غير مدرجة أو حتى مرئية من Windows. إذا كنت ترغب في المتابعة، فأنت مسؤول عن أي فقد للبيانات في هذه الأقسام."
"قد يشمل ذلك أقسامًا أو وحدات تخزين غير مدرجة أو حتى مرئية من Windows. إذا كنت ترغب في المتابعة، فأنت مسؤول عن أي فقدان للبيانات في هذه الأقسام."
#. • MSG_094
msgid "Multiple partitions detected"
@ -656,11 +654,11 @@ msgid ""
"\n"
"Note: The 'FIXED/REMOVABLE' attribute is a hardware property that can only be changed using custom tools from the drive manufacturer. However those tools are ALMOST NEVER provided to the public..."
msgstr ""
"هام: أنت تحاول تثبيت 'Windows To Go'، لكن القرص المستهدف ليس لديه السمة 'FIXED'. على الأرجح سيتسبب هذا في تجمد ويندوز أثناء الإقلاع، لأن ميكروسوفت لم تصممه ليعمل مع الأقراص ذات السمة البديلة 'REMOVABLE'.\n"
"هام: أنت تحاول تثبيت 'Windows To Go'، لكن القرص المستهدف ليس لديه السمة 'FIXED'. على الأرجح سيتسبب هذا في تجمد ويندوز أثناء الإقلاع، لأن ميكروسوفت لم تصممه ليعمل مع الأقراص ذات السمة 'REMOVABLE'.\n"
"\n"
"هل لا زلت تريد الإستمرار؟\n"
"\n"
"ملاحظة: السمات 'FIXED/REMOVABLE' هي خصائص للعتاد ينكم تغييرها فقط باستعمال أدوات خاصة من مُصنع الأقراص. لكن هذه الأدوات لا تُّوفر للعامة غالبا..."
"ملاحظة: السمات 'FIXED/REMOVABLE' هي خصائص للعتاد يمكن تغييرها فقط باستعمال أدوات خاصة من مُصنع الأقراص. لكن هذه الأدوات لا تُّوفر للعامة غالبا..."
#. • MSG_099
msgid "Filesystem limitation"
@ -679,7 +677,7 @@ msgid ""
"Your platform cannot extract files from WIM archives. WIM extraction is required to create EFI bootable Windows 7 and Windows Vista USB drives. You can fix that by installing a recent version of 7-Zip.\n"
"Do you want to visit the 7-zip download page?"
msgstr ""
"لا يمكن للنظام الأساسي الخاص بك استخراج الملفات من أرشيفات WIM. يلزم استخراج WIM لإنشاء محركات أقراص USB قابلة للتمهيد من EFI لنظامي التشغيل Windows 7 و Windows Vista. يمكنك إصلاح ذلك عن طريق تثبيت إصدار حديث من 7-Zip.\n"
"لا يمكن لنظامك الأساسي استخراج الملفات من أرشيفات WIM. يلزم استخراج WIM لإنشاء محركات أقراص USB قابلة للإقلاع من EFI لنظامي التشغيل Windows 7 و Windows Vista. يمكنك إصلاح ذلك عن طريق تثبيت إصدار حديث من 7-Zip.\n"
"هل تريد زيارة صفحة التنزيل 7-zip؟"
#. • MSG_103
@ -701,13 +699,13 @@ msgid ""
"Note: The file will be downloaded in the current directory and once a '%s' exists there, it will be reused automatically."
msgstr ""
"%s أو أحدث تتطلّب ملف '%s' ليتم التثبيت.\n"
"لأن هذا الملف هو أكثر من 100KB في الحجم، ومتوفّر دائماً في ملفات ISO %s, ليس متوفّر في روفوس. \n"
"لأن هذا الملف هو أكثر من 100KB في الحجم، ومتوفّر دائماً في ملفات ISO %s, ليس متوفّرا في Rufus. \n"
"\n"
"روفوس يمكنه تحميل الملف المفقود لك: \n"
"Rufus يمكنه تحميل الملف المفقود لك: \n"
"- إختر ‘نعم’ للإتصال بالإنترنت وتحميل الملف\n"
"- إختر ‘لا’ إذا كنت تريد نسخ هذا الملف على محرك الأقراص يدوياً في وقت لاحق\n"
"\n"
"ملاحظة: سيتم تحميل ملف جديد في الدليل الحالي وبعد العثور على %s هناك, سوف يتم إعادة إستخدامه تلقائياً."
"ملاحظة: سيتم تحميل ملف جديد في المجلد الحالي للتطبيق وبعد العثور على %s هناك, سوف يتم إعادة إستخدامه تلقائياً."
#. • MSG_105
msgid ""
@ -715,11 +713,11 @@ msgid ""
"If you are sure you want to cancel, click YES. Otherwise, click NO."
msgstr ""
"الإلغاء قد يترك الجهاز في حالة غير صالحة للاستعمال.\n"
"إذا كنت متأكداً من أنك تريد الإلغاء، إضغط نعم، وإلا، إضغط لا."
"إذا كنت متأكداً من أنك تريد الإلغاء، إضغط \"نعم\"، وإلا، إضغط \"لا\"."
#. • MSG_106
msgid "Please select folder"
msgstr "الرجاء إختيار المجلد"
msgstr "الرجاء إختيار مجلد"
#. • MSG_107
msgid "All files"
@ -727,7 +725,7 @@ msgstr "جميع الملفات"
#. • MSG_108
msgid "Rufus log"
msgstr "سجلّ روفوس"
msgstr "سجلّ Rufus"
#. • MSG_109
msgid "0x%02X (Disk %d)"
@ -741,7 +739,7 @@ msgid ""
"MS-DOS cannot boot from a drive using a 64 kilobytes Cluster size.\n"
"Please change the Cluster size or use FreeDOS."
msgstr ""
"لا يمكن لـ MS-DOS التمهيد من محرك أقراص يستخدم حجم الكتلة 64 كيلو بايت.\n"
"لا يمكن لـ MS-DOS الإقلاع من محرك أقراص يستخدم حجم الكتلة 64 كيلو بايت.\n"
"الرجاء تغيير حجم الكتلة أو استخدام FreeDOS."
#. • MSG_111
@ -752,7 +750,7 @@ msgstr "حجم الكتلة غير متوافق"
#.
#. "%d:%02d" is a duration (mins:secs)
msgid "Formatting a large UDF volumes can take a lot of time. At USB 2.0 speeds, the estimated formatting duration is %d:%02d, during which the progress bar will appear frozen. Please be patient!"
msgstr "يمكن أن تستغرق تهيئة وحدات التخزين UDF الكبيرة الكثير من الوقت. عند سرعات USB 2.0، تكون مدة التهيئة المقدرة %d:%02d, حيث سيظهر شريط التقدم مجمداً. يرجى التحلي بالصبر!"
msgstr "يمكن أن تستغرق تهيئة وحدات التخزين UDF الكبيرة الكثير من الوقت. عند سرعات USB 2.0، تكون مدة التهيئة المقدرة بـ %d:%02d, حيث سيظهر شريط التقدم مجمداً. يرجى التحلي بالصبر!"
#. • MSG_113
msgid "Large UDF volume"
@ -774,11 +772,11 @@ msgstr ""
"- قم بتحديد 'نعم' للاتصال بالإنترنت وتنزيل هذه الملفات\n"
"- قم بتحديد 'لا' لإلغاء العملية\n"
"\n"
"ملاحظة: سيتم تنزيل الملفات في دليل التطبيق الحالي وستتم إعادة استخدامها تلقائيًا إذا كانت موجودة."
"ملاحظة: سيتم تنزيل الملفات في مجلد التطبيق الحالي وستتم إعادة استخدامها تلقائيًا إذا كانت موجودة."
#. • MSG_115
msgid "Download required"
msgstr "التنزيل مطلوب"
msgstr "التنزيل من الانترنت مطلوب"
#. • MSG_116
#.
@ -794,11 +792,11 @@ msgid ""
"\n"
"Note: The file will be downloaded in the current application directory and will be reused automatically if present. If no match can be found online, then the default version will be used."
msgstr ""
"هذه الصورة (الإيميج) تستعمل Grub %s لكن التطبيق يحتوي فقط على ملفات تثبيت Grub %s.\n"
"هذه الصورة (image) تستعمل Grub %s لكن التطبيق يحتوي فقط على ملفات تثبيت Grub %s.\n"
"\n"
"بما أن إصدارات Grub المختلفة قد لا تتوافق مع بعضهاالبعض، وبما أنه لا يمكن ضمها كلها، فسيحاول روفوس تحديد مكان إصدار من ملف تثبيت Grub ('core.img') يتوافق مع الموجود في صورتك:\n"
"بما أن إصدارات Grub المختلفة قد لا تتوافق مع بعضهاالبعض، وبما أنه لا يمكن ضمها كلها، فسيحاول Rufus تحديد مكان إصدار من ملف تثبيت Grub ('core.img') يتوافق مع الموجود في صورتك:\n"
"- إختر 'نعم' للاتصال بلالأنترنت ومحاولة تنزيله\n"
"- إختر 'لا' لاستعمال الإصدار الافتراضي من روفوس\n"
"- إختر 'لا' لاستعمال الإصدار الافتراضي من Rufus\n"
"- إختر 'إلغاء' لوقف العملية\n"
"\n"
"ملاحظة: سيتم تنزيل الملف في المجلد الحالي للتطبيق و سيستعمل تلقائيا إذا كان موجداً. إذا لم يتم العثور على إصدار موافق، فسيُستعمل الإصدار الافتراضي كبديل."
@ -813,7 +811,7 @@ msgstr "التثبيت القياسي لنظام التشغيل Windows"
#. http://en.wikipedia.org/wiki/Windows_To_Go in your language.
#. Otherwise, you may add a parenthesis eg. "Windows To Go (<hint at what it does>)"
msgid "Windows To Go"
msgstr ""
msgstr "Windows To Go"
#. • MSG_119
msgid "advanced drive properties"
@ -846,7 +844,7 @@ msgstr "حجم التقسيم المستمر"
#. It is okay to use "No partition" or "None" or "Deactivated" to indicate that a persistent partition will not be
#. created if the width of the control is too small (since the 'Size' edit control is *not* adjusted for width).
msgid "No persistence"
msgstr "لا استمرار"
msgstr "لا استمرارية"
#. • MSG_125
#.
@ -856,7 +854,7 @@ msgstr "حدد حجم التقسيم المستمر لجهاز ال USB الحي
#. • MSG_126
msgid "Set the partition size units."
msgstr "حدد وحدات حجم التقسيم."
msgstr "حدد حجم وحدات التقسيم."
#. • MSG_127
msgid "Do not show this message again"
@ -871,7 +869,7 @@ msgid ""
"You have just created a media that uses the UEFI:NTFS bootloader. Please remember that, to boot this media, YOU MUST DISABLE SECURE BOOT.\n"
"For details on why this is necessary, see the 'More Information' button below."
msgstr ""
"لقد قمت بإنشاء وسائط تستخدم محمل الإقلاع UEFI:NTFS. يرجى التذكر أنه يجب تعطيل Secure Boot للتمكن من إقلاع الوسائط.\n"
"لقد قمت لتوك بإنشاء وسائط تستخدم محمل الإقلاع UEFI:NTFS. يرجى التذكر أنه يجب تعطيل Secure Boot للتمكن من إقلاع الوسائط.\n"
"للمزيد من التفاصيل عن ضرورة الإجراء المذكور, إضغط على زر 'مزيد من المعلومات' أدناه."
#. • MSG_130
@ -888,7 +886,7 @@ msgstr ""
#. • MSG_132
msgid "Another program or process is accessing this drive. Do you want to format it anyway?"
msgstr "هذا القرص يستخدم من قبل برنامج / إجراء آخر. هل تود التهيئة على أية حال ؟"
msgstr "هذا القرص يستخدم من قبل برنامج آخر. هل تود التهيئة على أية حال ؟"
#. • MSG_133
msgid ""
@ -898,11 +896,11 @@ msgid ""
"\n"
"Also note that the reason Rufus cannot automatically fix this for you is that 'WppRecorder.sys' is a Microsoft copyrighted file, so we cannot legally embed a copy of the file in the application..."
msgstr ""
"لقد قام روفوس بإكتشاف أنك تحاول إنشاء وسائط Windows To Go بناءً على ISO 1809\n"
"لقد قام Rufus بإكتشاف أنك تحاول إنشاء وسائط Windows To Go بناءً على ISO 1809\n"
"\n"
"بسبب عيب في Microsoft, سوف تتوقف الوسائط خلال إقلاع Windows (شاشة الموت الزرقاء) ما لم تقم يدوياً بإستبدال ملف 'WppRecorder.sys' بإصدار 1803.\n"
"\n"
"يرجى العلم أن سبب عدم إمكانية روفوس من إصلاح المشكلة تلقائيا هو أن ملف 'WppRecorder.sys' محفوظ الحقوق ل Microsoft, لذلك لا يمكننا تضمين نسخة من الملف في التطبيق..."
"يرجى العلم أن سبب عدم إمكانية Rufus من إصلاح المشكلة تلقائيا هو أن ملف 'WppRecorder.sys' محفوظ الحقوق ل Microsoft, لذلك لا يمكننا تضمين نسخة من الملف في التطبيق..."
#. • MSG_134
msgid ""
@ -910,7 +908,7 @@ msgid ""
"\n"
"Are you sure you want to continue?"
msgstr ""
"بسبب إختيار نظام التجزئة MBR, روفوس قادر فقط على إنشاء تجزئة لغاية 2 TB على هذه الوسائط, الذي سوف يؤدي إلى عدم توفر %s من مساحة القرص.\n"
"بسبب إختيار نظام التجزئة MBR, Rufus(Rufus) قادر فقط على إنشاء تجزئة لغاية 2 TB على هذه الوسائط, الذي سوف يؤدي إلى عدم توفر %s من مساحة القرص.\n"
"\n"
"هل تريد المتابعة ؟"
@ -1035,7 +1033,7 @@ msgstr "الطريقة اللتي سيتم إستخدامها لإنشاء ال
#. • MSG_164
msgid "Method that will be used to make the drive bootable"
msgstr "الطريقة التي سيتّم إستخدامها لخلق محرك أقراص تمهيدي"
msgstr "الطريقة التي سيتّم إستخدامها لخلق محرك أقراص إقلاعي"
#. • MSG_165
msgid "Click to select or download an image..."
@ -1046,16 +1044,8 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "حدّد هذا المربّع للسماح بعرض التسميات الدولية وتعيين أيقونة الجهاز (إنشاء autorun.inf)"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "تثبيت MBR للسماح باختيار التمهيد ويمكن تنكّر الـ BIOS ID لقرص USB"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"محاولة تنكّر محرّك قرص USB (عادة 0x80) كقرص مختلف.\n"
"Tهذا ضروري فقط إذا أردت تثبيت ويندوز إكس بي ولديك أكثر من قرص واحد."
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "قم بتثبيت أداة تحميل تشغيل UEFI، و التي ستقوم بالتحقق من صحة الملف بإستخدام MD5"
#. • MSG_169
msgid ""
@ -1063,7 +1053,7 @@ msgid ""
"This can improve boot detection for older BIOSes."
msgstr ""
"إنشاء قسم إضافي خفي ومحاذاة حدود الأقسام.\n"
"هذا يمكنه تحسين إكتشاف التمهيد لـ BIOSes قديمة."
"هذا يمكنه تحسين إكتشاف الإقلاع لـ BIOSes قديمة."
#. • MSG_170
msgid "Enable the listing of USB Hard Drive enclosures. USE AT YOUR OWN RISKS!!!"
@ -1098,7 +1088,7 @@ msgstr "إصدار %d.%d (بناء %d)"
#. • MSG_176
msgid "English translation: Pete Batard <mailto:pete@akeo.ie>"
msgstr "الترجمة إلى العربية: أ. راس النعامة / عمر الصمد / فراس السيخ / عبدالمجيد"
msgstr "الترجمة إلى العربية:\\line• أ. راس النعامة \\line• عمر الصمد \\line• فراس السيخ \\line• عبدالمجيد"
#. • MSG_177
msgid "Report bugs or request enhancements at:"
@ -1130,7 +1120,7 @@ msgstr "عنوان IP الخاص بك"
#. • MSG_184
msgid "For the purpose of generating private usage statistics, we may keep the information collected, \\b for at most a year\\b0 . However, we will not willingly disclose any of this individual data to third parties."
msgstr "لغرض إنشاء إحصاءات الاستخدام الخاصة، قد نحتفظ بالمعلومات التي تم جمعها, \\b لمدة عام على الأكثر\\b0 . ومع ذلك،، فإننا لن نكشف عن أي من هذه البيانات الفردية عن طيب خاطر لأطراف ثالثة."
msgstr "لغرض إنشاء إحصاءات الاستخدام الخاصة، قد نحتفظ بالمعلومات التي تم جمعها, \\b لمدة عام على الأكثر\\b0 . ومع ذلك،، فإننا لن نكشف عن أي من هذه البيانات الفردية طوعًا لأطراف ثالثة."
#. • MSG_185
msgid "Update Process:"
@ -1141,20 +1131,20 @@ msgid ""
"Rufus does not install or run background services, therefore update checks are performed only when the main application is running.\\line\n"
"Internet access is of course required when checking for updates."
msgstr ""
"روفوس لا يقوم بتثبيت أو تشغيل خدمات خلفية, وبالتالي يتم التحقّق من تحديثات فقط عند تشغيل التطبيق الرئيسي. \\line\n"
"Rufus لا يقوم بتثبيت أو تشغيل خدمات خلفية, وبالتالي يتم التحقّق من تحديثات فقط عند تشغيل التطبيق الرئيسي. \\line\n"
"الإتصال بالإنترنت بالطبع مطلوب عند التحقّق من وجود تحديثات."
#. • MSG_187
msgid "Invalid image for selected boot option"
msgstr "صورة (إيميج) غير صالحة للخيار التمهيدي المحدّد"
msgstr "صورة (image) غير صالحة للخيار الإقلاعي المحدّد"
#. • MSG_188
msgid "The current image doesn't match the boot option selected. Please use a different image or choose a different boot option."
msgstr "الصورة (الإيميج) الحالية لا تتطابق مع الخيار التمهيدي المحدّد. يُرجى إستخدام صورة مختلفة أو تحديد خيار تمهيدي آخر."
msgstr "الصورة (image) الحالية لا تتطابق مع الخيار الإقلاعي المحدّد. يُرجى إستخدام صورة مختلفة أو تحديد خيار إقلاعي آخر."
#. • MSG_189
msgid "This ISO image is not compatible with the selected filesystem"
msgstr "صورة (إيميج) ISO هذه غير متوافقة مع نظام الملفات المحدّد"
msgstr "صورة ISO هذه غير متوافقة مع نظام الملفات المحدّد"
#. • MSG_190
msgid "Incompatible drive detected"
@ -1196,7 +1186,7 @@ msgstr ""
"هام: هذا القرص يستخدم حجم قطاع غير قياسي!\n"
"\n"
"الأقراص التقليدية تستعمل 512-بايت كحجن قطاع لكن هذا القراص يستعمل %d-بايت. في العديد من الحالات، هذا يعني أنك لن تستطيع الإقلاع من هذا القرص.\n"
"يستطيع روفوس محاولة إنشاء قرص إقلاع، لكن من دون ضمان أنه سيعمل."
"يستطيع Rufus محاولة إنشاء قرص إقلاع، لكن من دون ضمان أنه سيعمل."
#. • MSG_197
msgid "Nonstandard sector size detected"
@ -1204,7 +1194,7 @@ msgstr "إكتشاف حجم قطاع غير قياسي"
#. • MSG_198
msgid "'Windows To Go' can only be installed on a GPT partitioned drive if it has the FIXED attribute set. The current drive was not detected as FIXED."
msgstr "يمكن تثبيت 'Windows To Go' على قرص بتقسيمات GPT فقط إذا كان عندهالسمة FIXED مُحددة. لم يتم إكتشاف FIXED في القرص الحالي."
msgstr "يمكن تثبيت 'Windows To Go' فقط على قرص بتقسيمات GPT إذا كان عنده السمة FIXED مُحددة. لم يتم إكتشاف FIXED في القرص الحالي."
#. • MSG_199
msgid "This feature is not available on this platform."
@ -1216,17 +1206,17 @@ msgstr "جاري الإلغاء الرجاء الإنتظار..."
#. • MSG_202
msgid "Scanning image..."
msgstr "مسح الصورة..."
msgstr "فحص الصورة (image)..."
#. • MSG_203
msgid "Failed to scan image"
msgstr "فشل لمسح الصورة"
msgstr "فشل فحص الصورة"
#. • MSG_204
#.
#. %s is the name of an obsolete Syslinux .c32 module. Example: "Obsolete vesamenu.c32 detected"
msgid "Obsolete %s detected"
msgstr "إكتشاف %s قديمة مهملة"
msgstr "إكتشاف %s قديمة"
#. • MSG_205
#.
@ -1285,13 +1275,13 @@ msgstr "فشل إطلاق تطبيق جديد"
#.
#. Example: "Opened some_file.txt"
msgid "Opened %s"
msgstr "فتح %s"
msgstr "تم فتح %s"
#. • MSG_216
#.
#. Example: "Saved rufus.log"
msgid "Saved %s"
msgstr "حفظ %s"
msgstr "تم حفظ %s"
#. • MSG_217
#.
@ -1301,11 +1291,11 @@ msgstr "التهيئة: %s"
#. • MSG_218
msgid "Creating file system: Task %d/%d completed"
msgstr "إنشاء نظام الملفات: تمت %d/%d عملية"
msgstr "إنشاء نظام الملفات: عملية %d/%d تمت"
#. • MSG_219
msgid "NTFS Fixup: %d%% completed"
msgstr "إصلاح NTFS: تم %d%%"
msgstr "إصلاح NTFS: تم إصلاح %d%%"
#. • MSG_220
#.
@ -1313,7 +1303,7 @@ msgstr "إصلاح NTFS: تم %d%%"
#. Example: "Formatting (UDF) - Estimated duration 3:21..."
#. If "estimated duration" is too long, just use "estimated" or an abbreviation
msgid "Formatting (%s) - estimated duration %d:%02d..."
msgstr "فرمتة (%s) تقديرياً %d:%02d..."
msgstr "فرمتة (%s) المدة التقديرية %d:%02d..."
#. • MSG_221
msgid "Setting label (%s)..."
@ -1339,7 +1329,7 @@ msgstr "طلب الوصول إلى القرص..."
#. • MSG_226
msgid "Analyzing existing boot records..."
msgstr "تحليل سجلّات التمهيد الموجودة..."
msgstr "تحليل سجلّات الإقلاع الموجودة..."
#. • MSG_227
msgid "Closing existing volume..."
@ -1347,11 +1337,11 @@ msgstr "غلق وحدة التخزين الموجودة..."
#. • MSG_228
msgid "Writing Master Boot Record..."
msgstr "كتابة سجلّ التمهيد الرئيسي (MBR) ..."
msgstr "كتابة سجلّ الإقلاع الرئيسي (MBR) ..."
#. • MSG_229
msgid "Writing Partition Boot Record..."
msgstr "كتابة سجل تمهيد القسم ..."
msgstr "كتابة سجل إقلاع القسم ..."
#. • MSG_230
msgid "Copying DOS files..."
@ -1363,7 +1353,7 @@ msgstr "نسخ ملفات الـISO: %s"
#. • MSG_232
msgid "Win7 EFI boot setup (%s)..."
msgstr "إعداد تمهيد EFI ل ويندوز7 (%s)..."
msgstr "إعداد إقلاع EFI ل ويندوز7 (%s)..."
#. • MSG_233
msgid "Finalizing, please wait..."
@ -1423,7 +1413,7 @@ msgstr "فشل في تحميل الملف."
#. • MSG_243
msgid "Checking for Rufus updates..."
msgstr "التحقّق من تحديثات روفوس..."
msgstr "التحقّق من تحديثات Rufus..."
#. • MSG_244
msgid "Updates: Unable to connect to the internet"
@ -1435,11 +1425,11 @@ msgstr "التحديثات: عدم القدرة على الوصول إلى بي
#. • MSG_246
msgid "A new version of Rufus is available!"
msgstr "إصدار جديد متاح من روفوس!"
msgstr "إصدار جديد متاح من Rufus!"
#. • MSG_247
msgid "No new version of Rufus was found"
msgstr "لم يتم العثور على إصدار جديد من روفوس"
msgstr "لم يتم العثور على إصدار جديد من Rufus"
#. • MSG_248
msgid "Application registry keys successfully deleted"
@ -1493,7 +1483,7 @@ msgstr "فرض التحديث"
#. • MSG_260
msgid "NTFS compression"
msgstr "إنضغاط NTFS"
msgstr "ضغط NTFS"
#. • MSG_261
msgid "Writing image: %s"
@ -1509,11 +1499,11 @@ msgstr "دعم ISO"
#.
#. Cheat mode to force legacy size units, where 1 KB is 1024 bytes and NOT that fake 1000 bytes abomination!
msgid "Use PROPER size units"
msgstr "استعمل وحدات حجم مناسبة"
msgstr "استعمل وحدات حجم مناسبة (PROPER)"
#. • MSG_264
msgid "Deleting directory '%s'"
msgstr "حذف الدليل '%s'"
msgstr "حذف المجلد '%s'"
#. • MSG_265
msgid "VMWare disk detection"
@ -1529,7 +1519,7 @@ msgstr "تطبيق صورة (نسخة) ويندوز: %s"
#. • MSG_268
msgid "Applying Windows image..."
msgstr "تطبيق صورة (إيميج) ويندوز..."
msgstr "تطبيق صورة (نسخة) ويندوز..."
#. • MSG_269
msgid "Preserve timestamps"
@ -1541,7 +1531,7 @@ msgstr "تنقيح الأخطاء عن طريق USB"
#. • MSG_271
msgid "Computing image checksums: %s"
msgstr "حساب مجاميع اختبار (Checksums) الصورة: %s"
msgstr "حساب مجاميع الإختبار (Checksums) للصورة (Image): %s"
#. • MSG_272
msgid "Compute the MD5, SHA1 and SHA256 checksums for the selected image"
@ -1565,8 +1555,8 @@ msgid ""
"\n"
"Please select the mode that you want to use to write this image:"
msgstr ""
"الصورة التي اخترتها هي صورة 'ISOHybrid'. هذا يعني أنه يمكن كتابتها في نمط %s (نسخة ملف) أو نمط %s.\n"
" (صورة قرص)روفوس يوصي باستعمال نمط %s، كي تتمكن دوما من الوصول الكامل إلى القرص بعد كتابته.\n"
"الصورة التي اخترتها هي صورة 'ISOHybrid'. هذا يعني أنه يمكن كتابتها إما في نمط نسخة ملف %s وإما في نمط نسخة قرص %s.\n"
" Rufus يوصي باستعمال نمط %s، كي تتمكن دوما من الوصول الكامل إلى القرص بعد كتابته.\n"
"لكن، إذا واجهت مشاكلا خلال الإقلاع يمكنك محاولة كتابة هاته الصورة مرة أخرى في نمط %s.\n"
"\n"
"فضلا اختر النمط الذي تريده لكتابة هاته الصورة:"
@ -1609,7 +1599,7 @@ msgstr "التوفيع الرقمي غير صالح"
#. • MSG_284
msgid "The downloaded executable is missing a digital signature."
msgstr "الملف التنفيذي المحمل ينقصه توقيع رقمي معين."
msgstr "الملف التنفيذي المحمل ينقصه توقيع رقمي."
#. • MSG_285
msgid ""
@ -1627,11 +1617,11 @@ msgstr "تصفير القرص: %s"
#. • MSG_287
msgid "Detection of non-USB removable drives"
msgstr "الكشف عن أقراص الUSB القابلة للإزالة"
msgstr "الكشف عن الأقراص غير USB القابلة للإزالة"
#. • MSG_288
msgid "Missing elevated privileges"
msgstr "صلاحيات رفيعة مفقوده"
msgstr "عدم التوفر على صلاحيات رفيعة"
#. • MSG_289
msgid "This application can only run with elevated privileges"
@ -1671,7 +1661,7 @@ msgid ""
"\n"
"Are you sure you want to run it?"
msgstr ""
"هذا الإصدار من روفوس لم يتم إنتاجه من قبل المطورين الرسميين.\n"
"هذا الإصدار من Rufus لم يتم إنتاجه من قبل المطورين الرسميين.\n"
"\n"
"؟هل أنت متأكد من الأستمرار?"
@ -1691,7 +1681,7 @@ msgstr ""
"\n"
"إذا قمت بالحصول على هذا الملف من الإنترنت, يجب عليك تحميل نسخة جديدة و التحقق من أن المجموع الإختباري لMD5 و SHA مطابق للنسخ(ة) الأصلية.\n"
"\n"
"علماُ بانه يمكنك مقارنة الMD5 و SHA في روفوس عن طريق الضغط على زر (✓)"
"علماُ بانه يمكنك مقارنة الMD5 و SHA في Rufus عن طريق الضغط على زر (✓)"
#. • MSG_299
msgid "Timestamp validation error"
@ -1705,7 +1695,7 @@ msgid ""
msgstr ""
"Rufus لم يتمكن من التحقق أن الطابع الزمني للتحديث الذي تم تنزيله أحدث من ذلك الذي في البرنامج التنفيذي الحالي. \n"
"\n"
" من أجل منع سيناريوهات الهجوم المحتملة, تم إحباط عملية الاتحديث و سيتم حذف التحديث, الرجاء التحقق من السجل لمزيد من التفاصيل."
" من أجل منع سيناريوهات الهجوم المحتملة, تم إحباط عملية التحديث و سيتم حذف التحديث, الرجاء التحقق من السجل لمزيد من التفاصيل."
#. • MSG_301
msgid "Show application settings"
@ -1752,7 +1742,7 @@ msgid ""
"\n"
"Please select the mode that you want to use to write this image:"
msgstr ""
"يستخدم ISO الذي حددته UEFI وهو صغير بما يكفي ليتم كتابته كقسم نظام EFI (ESP). يمكن أن تكون الكتابة إلى ESP ، بدلاً من الكتابة إلى قسم بيانات عام يشغل القرص بأكمله ، هي الأفضل لبعض أنواع التثبيتات.\n"
"يستخدم ISO الذي حددته UEFI وهو صغير بما يكفي ليتم كتابته كقسم نظام EFI (ESP). يمكن أن تكون الكتابة إلى ESP ، بدلاً من الكتابة إلى قسم بيانات عام تشغل القرص بأكمله ، هي الأفضل لبعض أنواع التثبيتات.\n"
"\n"
"الرجاء تحديد الوضع الذي تريد استخدامه لكتابة هذه الصورة(Image):"
@ -1786,11 +1776,11 @@ msgstr "رقم تعريف القرص"
#. • MSG_318
msgid "Default thread priority: %d"
msgstr "الأفضلية الافتراضية لمؤشر الترابط: %d"
msgstr "الأفضلية الافتراضية لـ thread : %d"
#. • MSG_319
msgid "Ignore Boot Marker"
msgstr "تجاهل علامة التمهيد"
msgstr "تجاهل علامة الإقلاع"
#. • MSG_320
msgid "Refreshing partition layout (%s)..."
@ -1801,8 +1791,8 @@ msgid ""
"The image you have selected is an ISOHybrid, but its creators have not made it compatible with ISO/File copy mode.\n"
"As a result, DD image writing mode will be enforced."
msgstr ""
"الصورة التي حددتها هي ISO-Hybrid (هجينة) ، لكن منشئوها لم يجعلوها متوافقة مع وضع نسخ ملف ISO. \n"
"نتيجة لذلك ، سيتم فرض وضع كتابة صورة DD."
"الصورة التي حددتها هي ISO-Hybrid (هجينة) ، لكن منشئوها لم يجعلوها متوافقة مع وضع نسخ ملف ISO. \n"
"نتيجة لذلك ، سيتم فرض وضع DD لكتابة الصورة."
#. • MSG_322
msgid "Unable to open or read '%s'"
@ -1810,7 +1800,7 @@ msgstr "غير قادر على فتح أو قراءة '%s'"
#. • MSG_325
msgid "Applying Windows customization: %s"
msgstr "تطبيق تخصيص ويندوز: %s"
msgstr "جاري تطبيق تخصيصات ويندوز: %s"
#. • MSG_326
msgid "Applying user options..."
@ -1830,7 +1820,7 @@ msgstr "قم بإزالة متطلبات 4GB + RAM ، Secure Boot و TPM 2.0"
#. • MSG_330
msgid "Remove requirement for an online Microsoft account"
msgstr "إزالة متطلبات حساب مايكروسوفت عبر الإنترنت"
msgstr "قم بإزالة متطلبات حساب مايكروسوفت عبر الإنترنت"
#. • MSG_331
msgid "Disable data collection (Skip privacy questions)"
@ -1856,11 +1846,87 @@ msgstr "تعطيل التشفير التلقائي BitLocker للجهاز"
msgid "Persistent log"
msgstr "سجل متواصل"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"يجب تنزيل ملف إضافي ('diskcopy.dll') من Microsoft لتثبيت MS-DOS:\n"
"- حدد \"نعم\" للاتصال بالإنترنت وتنزيله\n"
"- اختر \"لا\" لإلغاء العملية\n"
"\n"
"ملاحظة: سيتم تنزيل الملف في مجلد التطبيق وسيتم إعادة استخدامه تلقائيًا إذا كان موجودًا."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "تم اكتشاف أداة تحميل التشغيل UEFI التي تم إبطالها سابقا"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"اكتشف Rufus أن ملف ISO الذي حددته يحتوي على أداة تحميل التشغيل UEFI التي تم إبطالها سابقا والتي ستنتج %s، عند تمكين Secure Boot محدث بالكامل على نظام UEFI .\n"
"\n"
"- إذا حصلت على صورة ISO هذه من مصدر غير حسن السمعة، فيجب أن تفكر في احتمالية احتوائها على برامج UEFI ضارة وتجنب التشغيل منها.\n"
"- إذا حصلت على صورة ISO هذه من مصدر موثوق به، فعليك محاولة العثور على إصدار أكثر حداثة، والذي لن ينتج عنه هذا التحذير."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "شاشة \"الانتهاكات الأمنية\""
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "شاشة استرداد ويندوز (BSOD) مع '%s'"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "صورة VHDX مضغوطة"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "صورة VHD غير مضغوطة"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "صورة (image) لتحديث فلاشة كاملة (FFU)"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"يجب تنزيل بعض البيانات الإضافية من Microsoft لاستخدام هذه الوظيفة:\n"
"- اختر \"نعم\" للاتصال بالإنترنت وتنزيلها\n"
"- اختر \"لا\" لإلغاء العملية"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "تقييد Windows على الوضع \"S\" (S-Mode، غير متوافق مع تجاوز الحساب عبر الإنترنت)"
#. • MSG_347
msgid "Expert Mode"
msgstr "وضع الخبير"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "استخراج ملفات الأرشيف: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "استخدم Refus MBR"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application
msgid "Rufus is a utility that helps format and create bootable USB flash drives, such as USB keys/pendrives, memory sticks, etc."
msgstr "برنامج Rufus هو أداة تساعد في تنسيق وإنشاء أقراص الإقلاع عن طريق USB، مثل مفاتيح USB، بطاقات الذاكرة، وغيرها."
msgstr "برنامج Rufus هو أداة تساعد في تنسيق وإنشاء أقراص الإقلاع USB، مثل مفاتيح USB، بطاقات الذاكرة، وغيرها."
#. • MSG_901
msgid "Official site: %s"
@ -1889,7 +1955,7 @@ msgstr ""
#.
#. Keyword for "boot" will be used for search in the Windows Store
msgid "Boot"
msgstr "التمهيد (Boot)"
msgstr "الإقلاع (Boot)"
#. • MSG_910
#.
@ -1899,19 +1965,19 @@ msgstr "تهيئة USB وبطاقة الفلاش ومحركات الأقراص
#. • MSG_911
msgid "Create FreeDOS bootable USB drives"
msgstr "إنشاء محركات أقراص USB قابلة للتشغيل من FreeDOS"
msgstr "إنشاء محركات أقراص USB قابلة للإقلاع من FreeDOS"
#. • MSG_912
msgid "Create bootable drives from bootable ISOs (Windows, Linux, etc.)"
msgstr "إنشاء محركات أقراص قابلة للتمهيد من ملفات ISO القابلة للتمهيد (Windows و Linux وما إلى ذلك)"
msgstr "إنشاء محركات أقراص قابلة للإقلاع من ملفات ISO القابلة للإقلاع (Windows و Linux وما إلى ذلك)"
#. • MSG_913
msgid "Create bootable drives from bootable disk images, including compressed ones"
msgstr "إنشاء محركات أقراص قابلة للتمهيد من صور الأقراص القابلة للتمهيد ، بما في ذلك الأقراص المضغوطة"
msgstr "إنشاء محركات أقراص قابلة للإقلاع من صور الأقراص القابلة للإقلاع ، بما في ذلك الأقراص المضغوطة"
#. • MSG_914
msgid "Create BIOS or UEFI bootable drives, including UEFI bootable NTFS"
msgstr "إنشاء BIOS أو محركات أقراص UEFI قابلة للتمهيد ، بما في ذلك NTFS القابل للتشغيل من UEFI"
msgstr "إنشاء BIOS أو محركات أقراص UEFI قابلة للإقلاع ، بما في ذلك UEFI NTFS القابل للتشغيل"
#. • MSG_915
msgid "Create 'Windows To Go' drives"
@ -1919,7 +1985,7 @@ msgstr "إنشاء محركات أقراص \"Windows To Go\""
#. • MSG_916
msgid "Create Windows 11 installation drives for PCs that don't have TPM or Secure Boot"
msgstr "قم بإنشاء محركات تثبيت ويندوز 11 لأجهزة الكمبيوتر التي لا تحتوي على TPM أو التمهيد الآمن"
msgstr "قم بإنشاء محركات تثبيت ويندوز 11 لأجهزة الكمبيوتر التي لا تحتوي على TPM أو الإقلاع الآمن (Secure Boot)"
#. • MSG_917
msgid "Create persistent Linux partitions"
@ -1931,7 +1997,7 @@ msgstr "إنشاء صور VHD / DD لمحرك الأقراص المحدد"
#. • MSG_919
msgid "Compute MD5, SHA-1, SHA-256 and SHA-512 checksums of the selected image"
msgstr "حساب المجموع الاختباري MD5 و SHA-1 و SHA-256 و SHA-512 للصورة المحددة"
msgstr "حساب المجاميع الإختبارية MD5 و SHA-1 و SHA-256 و SHA-512 للصورة المحددة"
#. • MSG_920
msgid "Perform bad blocks checks, including detection of \"fake\" flash drives"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-02-16 20:14+0100\n"
"PO-Revision-Date: 2023-02-17 12:30+0000\n"
"POT-Creation-Date: 2024-04-25 20:58+0200\n"
"PO-Revision-Date: 2024-04-25 21:23+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: cs_CZ\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Czech (Čeština)\n"
"X-Rufus-LCID: 0x0405\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.2\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "Seznam USB disků"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "Přidat opravu pro starší BIOSy (extra partition, align, etc.)"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "Použijte Rufus MBR s ID BIOS"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "Povolit ověřování médií UEFI za běhu"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -105,7 +103,7 @@ msgstr "Zavřít"
#. • IDD_DIALOG → IDC_START
msgid "Start"
msgstr ""
msgstr "Spustit"
#. • IDD_ABOUTBOX → IDD_ABOUTBOX
msgid "About Rufus"
@ -397,7 +395,7 @@ msgstr "Zařízení USB (Obecné)"
#. • MSG_046
msgid "%s (Disk %d) [%s]"
msgstr ""
msgstr "%s (Disk %d) [%s]"
#. • MSG_047
#.
@ -770,7 +768,7 @@ msgid ""
msgstr ""
"Tento obraz používá Syslinux %s%s, tato aplikace však obsahuje pouze instalační soubory pro Syslinux %s%s.\n"
"\n"
"Jelikož nové verze Syslinux nejsou vzájemně kompatibilní a není možné v programu Rufus zahrnout všechny verze, je nutné z Internetu stáhnout dodatečné dva soubory (ldlinux.sys a ldlinux.bss):\n"
"Jelikož nové verze Syslinux nejsou vzájemně kompatibilní a není možné v programu Rufus zahrnout všechny verze, je nutné z Internetu stáhnout dodatečné dva soubory (ldlinux.sys a ldlinux.bss):\n"
"- Zvolte 'Ano' pro stažení souborů z Internetu\n"
"- Zvolte 'Ne' pro zrušení operace\n"
"\n"
@ -1047,16 +1045,8 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "Povolíte v názvu disku zobrazení mezinárodních znaků a vytvoření ikony zařízení (vytvořením souboru autorun.inf)"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "Instalovat MBR, který umožní výběr při zavádění systému a zamaskování BIOS ID disku USB"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"Pokusit se o zamaskování boot USB jednotky (většinou 0x80) jako jiného disku.\n"
"Obvykle nutné pouze pokud chcete instalovat Windows XP a máte více jak jeden disk."
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "Nainstalujte zavaděč UEFI, který provede ověření souboru MD5Sum na médiu"
#. • MSG_169
msgid ""
@ -1410,7 +1400,7 @@ msgid ""
"\n"
"The download will be deleted. Please check the log for more details."
msgstr ""
"Podpis stažené aktualizace nelze ověřit. To může znamenat, že systém je nesprávně nakonfigurován pro ověření podpisu nebo označil stažený soubor jako škodlivý.\n"
"Podpis stažené aktualizace nelze ověřit. To může znamenat, že systém je nesprávně nakonfigurován pro ověření podpisu nebo označil stažený soubor jako škodlivý.\n"
"\n"
"Stahování bude smazáno. Zkontrolujte podrobnosti v protokolu."
@ -1857,6 +1847,82 @@ msgstr "Zakázání automatického šifrování zařízení nástrojem BitLocker
msgid "Persistent log"
msgstr "Trvalý protokol"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"Pro instalaci systému MS-DOS je nutné stáhnout další soubor ('diskcopy.dll') od společnosti Microsoft:\n"
"- Vyberte 'Ano' pro připojení k internetu a stažení\n"
"- Výběrem možnosti \"Ne\" operaci zrušíte\n"
"\n"
"Poznámka: Soubor bude stažen do adresáře aplikace a bude automaticky znovu použit, pokud je přítomen."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "Byl zjištěn odvolaný zavaděč UEFI"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Rufus zjistil, že vámi vybraný ISO obsahuje zavaděč UEFI, který byl odvolán a který vytvoří %s, když je v plně aktuálním systému UEFI povoleno Secure Boot.\n"
"\n"
"- Pokud jste tento obraz ISO získali z nerenomovaného zdroje, měli byste zvážit možnost, že by mohl obsahovat malware UEFI a vyhnout se bootování z něj.\n"
"- Pokud jste jej získali z důvěryhodného zdroje, měli byste se pokusit najít aktuálnější verzi, která toto varování nevyvolá."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "obrazovka \"Porušení zabezpečení\""
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "a Obrazovka zotavení systému Windows (BSOD) s '%s'"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "Komprimovaný obraz VHDX"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "Nekomprimovaný obraz VHD"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "Úplná aktualizace Flash Image"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"K použití této funkce je třeba stáhnout některá další data od společnosti Microsoft:\n"
"- Vyberte 'Ano' pro připojení k internetu a stažení\n"
"- Výběrem možnosti \"Ne\" operaci zrušíte"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "Omezit Windows na S-Mode (NEKOMPATIBILNÍ s online vynecháním účtu)"
#. • MSG_347
msgid "Expert Mode"
msgstr "Expertní režim"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "Rozbalení archivních souborů: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "Použijte Rufus MBR"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-04-05 13.03+0200\n"
"PO-Revision-Date: 2023-04-25 13:46+0100\n"
"POT-Creation-Date: 2024-04-25 13:41-0700\n"
"PO-Revision-Date: 2024-04-25 14:34-0700\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: da_DK\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Danish (Dansk)\n"
"X-Rufus-LCID: 0x0406\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.2\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "Vis USB-harddiske"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "Tilføj rettelser for ældre BIOS'er"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "Brug Rufus MBR med BIOS ID"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "Slå runtime UEFI medie validering til"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -1044,16 +1042,8 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "Vælg denne mulighed for at tillade visning af internationale etiketter og skabe et enheds-ikon (opretter en autorun.inf)"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "Installer en MBR, der tillader boot valg og kan maskere et BIOS USB-drev ID"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"Forsøg at maskere det først fundne USB boot-drev (normalt 0x80) som en anden disk.\n"
"Dette burde kun være nødvendigt hvis du installerer Windows XP og ejer mere end én disk."
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "Installer en UEFI bootloader, der vil udføre en MD5Sum fil validering af mediet"
#. • MSG_169
msgid ""
@ -1856,6 +1846,82 @@ msgstr "Deaktiver Bitlockers automatiske apparat kryptering"
msgid "Persistent log"
msgstr "Vedvarende log"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"En ekstra fil ('diskcopy.dll') skal hentes fra Microsoft for at installere MS-DOS:\n"
"- Vælg 'Ja' for at tilslutte til internettet og hente den\n"
"- Vælg 'Nej' for at afbryde operationen\n"
"\n"
"Note: Filen vil blive hentet i programmets mappe og vil blive genbrugt automatisk hvis tilstede."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "Tilbagekaldt UEFI Bootloader opdaget"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Rufus har opdaget at ISO filen du har valgt indeholder en UEFI bootloader der er blevet tilbagekaldt og vil producere %s, når Secure Boot er slået til på et fuldt opdateret UEFI system.\n"
"\n"
"- Hvis du har hentet dette ISO billed fra en upålidelig kilde, bør du overveje muligheden for at den muligvis indeholder UEFI malware og undgå at boote fra den.\n"
"- Hvis du har hentet den fra en pålidelig kilde, bør du kigge efter en nyere version, som ikke vil producere denne advarsel."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "en \"Sikkerhedsbrud\" skærm"
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "en Windows Gendannelsesskærm (BSOD) med '%s'"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "Komprimeret VHDX Afbildning"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "Ukomprimeret VHD Afbildning"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "Full Flash Update Afbildning"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"Noget ekstra data skal hentes fra Microsoft for at udnytte denne funktionalitet:\n"
"- Vælg 'Ja' for at tilslutte til internettet og hente det\n"
"- Vælg 'Nej' for at afbryde operationen"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "Begræns Windows til S-Mode (Inkompatibel med Online bruger bypass)"
#. • MSG_347
msgid "Expert Mode"
msgstr "Ekspert Tilstand"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "Udpakker arkiv filer: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "Brug Rufus MBR"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-02-18 16:30+0100\n"
"PO-Revision-Date: 2023-04-05 12:34+0200\n"
"POT-Creation-Date: 2024-04-26 11:11+0200\n"
"PO-Revision-Date: 2024-04-26 11:48+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: de_DE\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: German (Deutsch)\n"
"X-Rufus-LCID: 0x0407, 0x0807, 0x0c07, 0x1007, 0x1407\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.2\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "USB-Festplatten anzeigen"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "Fix für ältere BIOSe verwenden (zusätzliche Partition usw.)"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "Rufus-MBR mit BIOS-ID benutzen"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "UEFI-Medienvalidierung zur Laufzeit aktivieren"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -1044,16 +1042,8 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "Wählen Sie diese Option, um die Anzeige internationaler Bezeichnungen zu ermöglichen und ein Gerätesymbol zu erzeugen (autorun.inf)"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "Erzeugt einen MBR, der ein Bootmenü erzeugt und die ID des BIOS-USB-Laufwerks maskieren kann"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"Das erste startfähige USB-Laufwerk als andere Festplatte (normalerweise 0x80) maskieren.\n"
"Das sollte nur notwendig sein, wenn Sie Windows XP installieren und mehr als eine Festplatte haben."
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "Ein UEFI Startprogramm installieren, das eine MD5Sum Dateiüberprüfung auf dem Datenträger durchführt"
#. • MSG_169
msgid ""
@ -1840,7 +1830,7 @@ msgstr "Verhindern, dass Windows To Go auf interne Laufwerke zugreifen kann"
#. • MSG_333
msgid "Create a local account with username:"
msgstr "Ein lokales Benutzerkonto erstellen: "
msgstr "Ein lokales Benutzerkonto erstellen:"
#. • MSG_334
msgid "Set regional options to the same values as this user's"
@ -1854,6 +1844,82 @@ msgstr "Deaktivieren der automatischen BitLocker-Laufwerksverschlüsselung"
msgid "Persistent log"
msgstr "Dauerhaftes Protokoll"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"Eine zusätzliche Datei ('diskcopy.dll') muss von Microsoft heruntergeladen werden um MS-DOS zu installieren:\n"
"- 'Ja' um eine Verbindung mit dem Internet herzustellen und die Datei herunterzuladen\n"
"- 'Nein' um den Vorgang abzubrechen\n"
"\n"
"Hinweis: Die Datei wird ins Programmverzeichnis heruntergeladen und bei Bedarf wiederverwendet."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "Zurückgezogenes UEFI Startprogramm erkannt"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Rufus hat erkannt, dass das gewählte ISO-Image ein UEFI-Startprogramm enthält, dass zurückgezogen wurde und das führt zu %s, wenn das UEFI-System aktuell ist und Secure Boot aktiv ist.\n"
"\n"
"- Wenn Sie das ISO-Image aus einer unzuverlässigen Quelle haben, sollten Sie in Betracht ziehen, dass es UEFI-Schadcode enthält und es deshalb nicht verwenden.\n"
"- Wenn Sie es aus einer vertrauenswürdigen Quelle haben, sollten Sie versuchen eine aktuellere Version zu bekommen, die dieses problem nicht hat."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "ein Bildschirm \"Sicherheitsverletzung\""
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "ein Windows Wiederherstellung-Bildschirm (BSOD) mit '%s'"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "Komprimiertes VHDX Image"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "Unkomprimiertes VHD Image"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "Full Flash Update Image"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"Einige weitere Daten müssen von Microsoft heruntergeladen werden, um diese Funktion zu verwenden:\n"
"- 'Ja' um eine Verbindung mit dem Internet herzustellen und diese herunterzuladen\n"
"- 'Nein' um den Vorgang abzubrechen"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "Windows im S-Modus (nicht kompatibel mit Online Konto-Umgehung)"
#. • MSG_347
msgid "Expert Mode"
msgstr "Experten-Modus"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "Archiv-Datei extrahieren: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "Rufus MBR verwenden"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-03-04 18:22+0000\n"
"PO-Revision-Date: 2023-03-04 18:27+0000\n"
"POT-Creation-Date: 2024-05-09 12:52+0300\n"
"PO-Revision-Date: 2024-05-09 13:07+0300\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: el_GR\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Greek (Ελληνικά)\n"
"X-Rufus-LCID: 0x0408\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.2\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "Εμφάνιση συσκευων USB"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "Προσθήκη διορθώσεων για παλαιότερα BIOS(επιπλέον διχοτόμηση, ευθυγράμμιση, κλπ.)"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "Χρήση του Rufus MBR με BIOS ID"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "Ενεργοποίηση επικύρωσης μέσων UEFI χρόνου εκτέλεσης"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -117,7 +115,7 @@ msgstr "Άδεια χρήσης"
#. • IDD_ABOUTBOX → IDOK
msgid "OK"
msgstr ""
msgstr "OK"
#. • IDD_LICENSE → IDD_LICENSE
msgid "Rufus License"
@ -523,7 +521,7 @@ msgstr "Δεν είναι δυνατή η εγκατάσταση/τροποπο
#. • MSG_077
msgid "Unable to assign a drive letter."
msgstr "Αδυναμία αναθέτησης γράμματος στη μονάδα δίσκου."
msgstr "Αδυναμία αναθέτησης γράμματος στη μονάδα δίσκου."
#. • MSG_078
msgid "Can't mount GUID volume."
@ -654,7 +652,7 @@ msgid ""
"\n"
"Note: The 'FIXED/REMOVABLE' attribute is a hardware property that can only be changed using custom tools from the drive manufacturer. However those tools are ALMOST NEVER provided to the public..."
msgstr ""
"ΣΗΜΑΝΤΙΚΟ: Προσπαθείτε να εγκαταστήσετε τα 'Windows To Go', αλλά ο επιλεγμένος δίσκος δεν διαθέτει το χαρακτηριστικό 'ΣΤΑΘΕΡΑ'. Λόγω αυτού, τα Windows πιθανότατα θα 'παγώνουν' κατά τη διάρκεια της εκκίνησης εφόσον η Microsoft δεν έχει σχεδιάσει τα 'Windows To Go' για λειτουργία με δίσκους που έχουν το χαρακτηριστικό 'ΑΦΑΙΡΟΥΜΕΝΟΣ'.\n"
"ΣΗΜΑΝΤΙΚΟ: Προσπαθείτε να εγκαταστήσετε τα 'Windows To Go', αλλά ο επιλεγμένος δίσκος δεν διαθέτει το χαρακτηριστικό 'ΣΤΑΘΕΡΑ'. Λόγω αυτού, τα Windows πιθανότατα θα 'παγώνουν' κατά τη διάρκεια της εκκίνησης εφόσον η Microsoft δεν έχει σχεδιάσει τα 'Windows To Go' για λειτουργία με δίσκους που έχουν το χαρακτηριστικό 'ΑΦΑΙΡΟΥΜΕΝΟΣ'.\n"
"\n"
"Είστε σίγουροι ότι θέλετε να συνεχίσετε?\n"
"\n"
@ -766,7 +764,7 @@ msgid ""
"\n"
"Note: The files will be downloaded in the current application directory and will be reused automatically if present."
msgstr ""
"Αυτό το αρχείο χρησιμοποιεί το Syslinux %s%s παρόλα αυτά η εφαρμογή(Rufus) εμπεριέχει μόνο τα αρχεία εγκατάστασης του Syslinux %s%s.\n"
"Αυτό το αρχείο χρησιμοποιεί το Syslinux %s%s παρόλα αυτά η εφαρμογή(Rufus) εμπεριέχει μόνο τα αρχεία εγκατάστασης του Syslinux %s%s.\n"
"\n"
" Εφόσον οι νέες εκδόσεις του Syslinux δεν είναι συμβατές μεταξύ τους, δεν είναι δυνατό για το Rufus να τις εμπεριέχει όλες. Επομένως, απαιτείται η λήψη δύο νέων αρχείων απο το διαδίκτυο ('ldlinux.sys' και 'ldlinux.bss'): \n"
"- Επιλέξτε το 'Ναι' για να συνδεθείτε στο διαδίκτυο και να κάνετε λήψη των αρχείων\n"
@ -1040,16 +1038,8 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "Επιλέξτε αυτό το πλαίσιο για να επιτραπεί η εμφάνιση των διεθνών ετικετών και ο ορισμός ενός εικονιδίου συσκευής (δημιουργείτε ένα autorun.inf)"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "Εγκατάσταση ενός MBR που επιτρέπει την επιλογή εκκίνησης και μπορεί να υποδυθεί το ρόλο του ID του BIOS USB δίσκου"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"Μετατροπή του πρώτου δίσκου USB με δυνατότητα εκκίνησης (συνήθως 0x80) ως ενός διαφορετικού δίσκου.\n"
"Αυτό θα είναι απαραίτητο μόνο αν εγκαταστήσετε τα Windows XP και έχετε περισσότερους από ένα δίσκους."
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "Εγκαταστήστε UEFI bootloader, ο οποίος θα εκτελέσει την επικύρωση του αρχείου MD5Sum των μέσων"
#. • MSG_169
msgid ""
@ -1756,7 +1746,7 @@ msgstr "Χρησιμοποιήστε %s (στο κύριο παράθυρο τη
#. • MSG_312
msgid "Extra hashes (SHA512)"
msgstr "Επιπλέον hashes (SHA512)"
msgstr "Επιπλέον hashes (SHA512)"
#. • MSG_313
msgid "Save to VHD"
@ -1780,7 +1770,7 @@ msgstr "ID δίσκου"
#. • MSG_318
msgid "Default thread priority: %d"
msgstr "Προεπιλεγμένη προτεραιότητα πυρήνα %d"
msgstr "Προεπιλεγμένη προτεραιότητα πυρήνα %d"
#. • MSG_319
msgid "Ignore Boot Marker"
@ -1850,6 +1840,82 @@ msgstr "Απενεργοποιήστε την αυτόματη κρυπτογρ
msgid "Persistent log"
msgstr "Διατήρηση log"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"Πρέπει να γίνει λήψη ενός πρόσθετου αρχείου ('diskcopy.dll') από τη Microsoft για να εγκαταστήσετε το MS-DOS:\n"
"- Επιλέξτε 'Ναι' για να συνδεθείτε στο Internet και να το κατεβάσετε\n"
"- Επιλέξτε 'Όχι' για να ακυρώσετε τη λειτουργία\n"
"\n"
"Σημείωση: Το αρχείο θα ληφθεί στον κατάλογο της εφαρμογής και θα επαναχρησιμοποιηθεί αυτόματα εάν υπάρχει."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "Εντοπίστηκε ανακληθέν bootloader UEFI"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Ο Rufus εντόπισε ότι το ISO που επιλέξατε περιέχει έναν bootloader UEFI που έχει ανακληθεί και θα παράγει %s, όταν η Ασφαλής Εκκίνηση είναι ενεργοποιημένη σε ένα πλήρως ενημερωμένο σύστημα UEFI.\n"
"\n"
"- Εάν λάβατε αυτήν την εικόνα ISO από μη αξιόπιστη πηγή, θα πρέπει να εξετάσετε το ενδεχόμενο να περιέχει κακόβουλο λογισμικό UEFI και να αποφύγετε την εκκίνηση από αυτό.\n"
"- Εάν το λάβατε από αξιόπιστη πηγή, θα πρέπει να προσπαθήσετε να εντοπίσετε μια πιο ενημερωμένη έκδοση, η οποία δεν θα παράγει αυτήν την προειδοποίηση."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "μια οθόνη \"Παραβίαση ασφαλείας\""
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "μια οθόνη αποκατάστασης των Windows (BSOD) με '%s'"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "Συμπιεσμένη εικόνα VHDX"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "Μη συμπιεσμένη εικόνα VHDX"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "Full Flash Update Image"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"Ορισμένα πρόσθετα δεδομένα πρέπει να ληφθούν από τη Microsoft για να χρησιμοποιήσετε αυτήν τη λειτουργία:\n"
"- Επιλέξτε 'Ναι' για να συνδεθείτε στο Internet και να τα κατεβάσετε\n"
"- Επιλέξτε 'Όχι' για να ακυρώσετε τη λειτουργία"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "Περιορισμός των Windows σε S-Mode (ΑΣΥΜΒΑΤΟ με ηλεκτρονική παράκαμψη λογαριασμού)"
#. • MSG_347
msgid "Expert Mode"
msgstr "Λειτουργία ειδικού"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "Εξαγωγή αρχείων: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "Χρησιμοποίηση του Rufus MBR"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-03-15 23:07+0000\n"
"PO-Revision-Date: 2023-03-15 23:15+0000\n"
"POT-Creation-Date: 2024-05-09 12:54-0300\n"
"PO-Revision-Date: 2024-05-09 12:58-0300\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: es_ES\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Spanish (Español)\n"
"X-Rufus-LCID: 0x040a, 0x080a, 0x0c0a, 0x100a, 0x140a, 0x180a, 0x1c0a, 0x200a, 0x240a, 0x280a, 0x2c0a, 0x300a, 0x340a, 0x380a, 0x3c0a, 0x400a, 0x440a, 0x480a, 0x4c0a, 0x500a, 0x540a, 0x580a\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.2\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "Listar los discos duros USB"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "Agrega correcciones para BIOS viejos (partición extra, alineación, etc.)"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "Usar MBR de Rufus con ID de BIOS"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "Habilitar la validación de medios UEFI en tiempo de ejecución"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -911,7 +909,7 @@ msgid ""
"\n"
"Are you sure you want to continue?"
msgstr ""
"Debido a que has seleccionado MBR para el sistema de particiones, Rufus sólo puede crear una partición de hasta 2TB en este dispositivo, lo que dejará %s del disco no disponibles.\n"
"Debido a que has seleccionado MBR para el sistema de particiones, Rufus sólo puede crear una partición de hasta 2TB en este dispositivo, lo que dejará %s del disco no disponibles.\n"
"\n"
"¿Estas seguro de que deseas continuar?"
@ -1046,16 +1044,8 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "Seleccione esta opción para permitir que se muestren caracteres internacionales y establecer un icono para la unidad (crea un archivo autorun.inf)"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "Instala un MBR que permite seleccionar el dispositivo de arranque y puede enmascarar el ID de identificación del dispositivo USB del BIOS"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"Trata de enmascarar el primer dispositivo USB de arranque (normalmente 0x80) como un disco diferente.\n"
"Sólo debiera ser necesario si instala Windows XP y tiene más de un disco duro."
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "Instale un gestor de arranque UEFI, que realizará la validación del archivo MD5Sum del medio"
#. • MSG_169
msgid ""
@ -1856,6 +1846,82 @@ msgstr "Deshabilitar el cifrado automático de dispositivos BitLocker"
msgid "Persistent log"
msgstr "Registro persistente"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"Se debe descargar un archivo adicional ('diskcopy.dll') de Microsoft para instalar MS-DOS:\n"
"- Seleccione 'Sí' para conectarse a Internet y descargarlo\n"
"- Seleccione 'No' para cancelar la operación.\n"
"\n"
"Nota: El archivo se descargará en el directorio de la aplicación y se reutilizará automáticamente si está presente."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "Se detectó un gestor de arranque UEFI revocado"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Rufus detectó que el ISO que seleccionó contiene un gestor de arranque UEFI que ha sido revocado y que producirá %s, cuando el arranque seguro esté habilitado en un sistema UEFI completamente actualizado.\n"
"\n"
"- Si obtuvo esta imagen ISO de una fuente no confiable, debe considerar la posibilidad de que contenga malware UEFI y evitar arrancar desde allí.\n"
"- Si lo obtuvo de una fuente confiable, debe intentar localizar una versión más actualizada, que no producirá esta advertencia."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "una pantalla de \"violación de seguridad\""
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "una pantalla de recuperación de Windows (BSOD) con '%s'"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "Imagen VHDX comprimida"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "Imagen VHD sin comprimir"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "Imagen de actualización completa de Flash"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"Se deben descargar algunos datos adicionales de Microsoft para utilizar esta funcionalidad:\n"
"- Seleccione 'Sí' para conectarse a Internet y descargarlo\n"
"- Seleccione 'No' para cancelar la operación."
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "Restringir Windows al Modo S (INCOMPATIBLE con la omisión de cuenta en línea)"
#. • MSG_347
msgid "Expert Mode"
msgstr "Modo experto"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "Extrayendo archivos comprimidos: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "Utilice Rufus MBR"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application

View File

@ -1,10 +1,10 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-03-13 17:25+0000\n"
"PO-Revision-Date: 2023-03-13 17:25+0000\n"
"Last-Translator: \n"
"POT-Creation-Date: 2024-04-29 19:24+0300\n"
"PO-Revision-Date: 2024-04-29 20:25+0330\n"
"Last-Translator: MasterVito <mv@mvaop.ir>\n"
"Language-Team: \n"
"Language: fa_IR\n"
"MIME-Version: 1.0\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Persian (پارسی)\n"
"X-Rufus-LCID: 0x0429\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.2\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "نمایش هارد دیسک‌های اکسترنال در فهرست
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "بهسازی و اصلاح تنظیمات برای شناسایی بهتر درایو در BIOSهای قدیمی"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "استفاده از Rufus MBR با BIOS ID برابر با"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "فغال سازی زمان اجرا UEFI media تایید"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -349,7 +347,7 @@ msgstr "BIOS (یا UEFI-CSM)"
#. • MSG_032
msgid "UEFI (non CSM)"
msgstr ""
msgstr "UEFI (بجز CSM)"
#. • MSG_033
msgid "BIOS or UEFI"
@ -406,7 +404,7 @@ msgstr ""
#. • MSG_046
msgid "%s (Disk %d) [%s]"
msgstr ""
msgstr "%s (هارد %d) [%s]"
#. • MSG_047
#.
@ -1054,16 +1052,8 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "اگر نامی که برای درایو موردنظر انتخاب کرده‌اید طولانی و یا دارای حروف غیر انگلیسی است و یا اگر می‌خواهید درایو موردنظر آیکون داشته باشد؛ این گزینه را انتخاب کنید."
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "نصبِ MBR سفارشیِ نرم‌افزارِ Rufus که با استفاده از آن می‌توان نحوه راه‌اندازی را انتخاب و شناسه (ID) درایو USB بایوس را جعل کرد"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"با انتخاب یکی از این گزینه‌ها می‌توانید به‌صورت ساختگی و جعلی، اولین درایو USB با قابلیت راه‌اندازی (معمولاً 0x80) را به‌عنوان هارددیسک جداگانه معرفی کنید.\n"
"انتخاب این گزینه فقط زمانی ضروری است که بیش از یک هارددیسک دارید و می‌خواهید ویندوز XP نصب کنید."
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "نصب یک UEFI bootloader این کار باعث اعتبارسنجی نوع md5sUM برای رسانه میشود"
#. • MSG_169
msgid ""
@ -1252,7 +1242,7 @@ msgstr "فایل %s موجود نیست"
#. The name proposed by Windows' Computer Management → Disk Management when you try to format
#. a drive with an empty label. For an example, see https://rufus.ie/pics/default_name.png.
msgid "New Volume"
msgstr ""
msgstr "بخش جدید"
#. • MSG_208
#.
@ -1856,7 +1846,81 @@ msgstr "رمزگذاری خودکار دستگاه BitLocker را غیرفعال
#. • MSG_336
msgid "Persistent log"
msgstr "لیست مداوم"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"فایل دیگری ('diskcopy.dll:) نیاز است دانلود شود از مایکروسافت برای نصب MS-DOS:\n"
"- انتخاب :'بله' برای وصل شدن به اینترنت و دانلود آن\n"
"- انتخاب 'نه' برای کنسل کردن این کار\n"
"\n"
"نکته: فایل در مکان نرم افزار دانلود میشود و دوباره استفاده میشود درصورت انجام مجدد این کار."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "بوت لودر UEFI کنسل شده شناسایی شد"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Rufus متوجه شده که فایل ISO که انتخاب کردید دارای UEFI بوت لودری است که لفو شده و باعث %s, درصورتی که بوت امن فعال شده بر روی سیستم کاملا اپدیت شده UEFI\v\v- اگه شما این فایل ISO رو از یک جای غیر قابل اعتماد دریافت کردید ممکن است این فایل دارای ویروس UEFI باشد و نباید آنرا بوت کرد \n"
"\v- اگه شما شما از جای مورد اغفماد دریافت کردیدش, میتونید تلاش کنید برای پیدا کردن نسخه جدیدتر, با اینکار دیگر این هشتار را دریافت نمیکنید."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "یک صفحه \"مشکلی امنیتی\""
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "یک صفخه ریکاوری ویندوز (BSOD) با '%S\""
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "فایل VHDX فشرده شده"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "فایل VHD فشرده نشده"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr ""
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"دیتا های دیگری نیاز به دانلود از مایکروسافت برای انجام دادن این کار نیاز است:\n"
"- انتخاب 'بله' برای وصل شدن به اینترنت و دانلود آنها\n"
"- انتخاب 'نه' برای لغو کردن این کار"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "مجبور کردن ویندوز به S-Mode ( دارای مشکلات با حذفز استفاده اکانت آنلاین )"
#. • MSG_347
msgid "Expert Mode"
msgstr "بخش حرفه ای"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "استراج کردن فایل های آرشیو: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "استفاده از Rufus MBR"
#. • MSG_900
#.

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-03-03 15:43+0200\n"
"PO-Revision-Date: 2023-03-03 16:58+0200\n"
"POT-Creation-Date: 2024-05-14 12:47+0300\n"
"PO-Revision-Date: 2024-05-14 14:07+0300\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: fi_FI\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Finnish (Suomi)\n"
"X-Rufus-LCID: 0x040B\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.4\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "Näytä USB-kiintolevyt"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "Lisää korjauksia vanhoja BIOS-versioita varten"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "Käytä Rufus-MBR:ää, BIOS ID:llä"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "Ota käyttöön ajonaikainen UEFI-tietovälineen tarkistus"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -579,7 +577,7 @@ msgstr ""
"- Valitse 'Ei' jättääksesi ISO-levykuvan alkuperäiseen muotoonsa\n"
"Jos et ole varma, sinun kannattaa valita 'Kyllä'.\n"
"\n"
"Huomio: Uusi tiedosto ladataan nykyiseen sijaintiin ja kun '%s' löytyy sijainnista, sitä käytetään automaattisesti."
"Huomio: Uusi tiedosto ladataan nykyiseen sijaintiin ja kun '%s' löytyy sijainnista, sitä käytetään automaattisesti."
#. • MSG_085
msgid "Downloading %s"
@ -768,11 +766,11 @@ msgid ""
msgstr ""
"Tämä kuva käyttää Syslinuxia %s%s, mutta tämä sovellus sisältää asennustiedostot vain Syslinuxille %s%s.\n"
"\n"
"Koska Syslinuxin uudet versiot eivät ole keskenään yhteensopivia, eikä Rufus voisi sisältää niitä kaikkia, on kaksi lisätiedostoa ladattava internetistä ('ldlinux.sys' ja 'ldlinux.bss'):\n"
"Koska Syslinuxin uudet versiot eivät ole keskenään yhteensopivia, eikä Rufus voisi sisältää niitä kaikkia, on kaksi lisätiedostoa ladattava internetistä ('ldlinux.sys' ja 'ldlinux.bss'):\n"
"- Valitse 'Kyllä' yhdistääksesi internetiin ja ladataksesi nämä tiedostot\n"
"- Valitse 'Ei' peruaksesi toiminnon\n"
"\n"
"Huomio: Tiedosto ladataan nykyiseen sovelluskansioon ja niitä käytetäänautomaattisesti uudelleen niiden löytyessä."
"Huomio: Tiedostot ladataan nykyiseen sovelluskansioon ja niitä uudelleenkäytetään automaattisesti, jos se ovat jo olemassa."
#. • MSG_115
msgid "Download required"
@ -1043,16 +1041,8 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "Valitse valintaruutu salliaksesi kansainvälisten merkkien näyttämisen ja asettaaksesi laitekuvakkeen (luo autorun.inf-tiedoston)"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "Asenna MBR, joka sallii käynnistysvalinnan ja voi naamioida USB-aseman BIOS ID:n"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"Yritä naamioida ensimmäinen boottaava USB-asema (yleensä 0x80) eri asemaksi.\n"
"Tämän tulisi olla tarpeellista vain asennettaessa Windows XP:tä, kun levyjä on useampia."
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "Asenna UEFI-käynnistyslataaja, joka tulee suorittamaan tietovälineelle MD5Sum-tiedostotarkistuksen"
#. • MSG_169
msgid ""
@ -1733,7 +1723,7 @@ msgstr "Pikanollataan asemaa: %s"
#. • MSG_307
msgid "this may take a while"
msgstr "Tämä voi viedä hetken"
msgstr "tämä voi viedä hetken"
#. • MSG_308
msgid "VHD detection"
@ -1843,7 +1833,7 @@ msgstr "Luo paikallinen käyttäjätili käyttäjänimellä:"
#. • MSG_334
msgid "Set regional options to the same values as this user's"
msgstr "Aseta alueelliset vaihtoehdot samoihin asetuksiin kuin llä käyttäjällä"
msgstr "Aseta alueelliset vaihtoehdot samoihin asetuksiin kuin nykyisellä käyttäjällä"
#. • MSG_335
msgid "Disable BitLocker automatic device encryption"
@ -1853,6 +1843,82 @@ msgstr "Poista käytöstä automaattinen laitteen BitLocker-salaus"
msgid "Persistent log"
msgstr "Pysyvä lokitiedosto"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"Uusi tiedosto ('diskcopy.dll') on ladattava Microsoftilta MS-DOSin asennusta varten:\n"
"- Valitse 'Kyllä' yhdistääksesi internetiin ja ladataksesi sen\n"
"- Valitse 'Ei' peruuttaaksesi toiminnon\n"
"\n"
"Huomio: Tiedosto ladataan sovelluksen kansioon ja sitä uudelleenkäytetään automaattisesti, jos se on jo olemassa."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "Mitätöity UEFI-käynnistyslataaja havaittu"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Rufus havaitsi, että käyttämäsi ISO-levykuva sisältää UEFI-käynnistyslataajan, joka on mitätöity ja tulee aiheuttamaan %s Secure Bootin ollessa päällä ajantasaisessa UEFI-kokoonpanossa.\n"
"\n"
"- Jos olet hankkinut tämän ISO-levykuvan ei-luotettavasta lähteestä, huomioi UEFI-haittaohjelmien mahdollisuus ja vältä siltä käynnistämistä.\n"
"- Jos olet hankkinut sen luotettavasta lähteestä, sinun tulisi yrittää etsiä uudempi versio, joka ei aiheuta tätä varoitusta."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "\"Turvallisuusrikkomus\"-näkymän"
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "Windowsin palautusnäkymän (BSOD) viestillä '%s'"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "Pakattu VHDX-levykuva"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "Pakkaamaton VHD-levykuva"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "Full Flash Update -levykuva"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"Tämän toiminnon käyttäminen vaatii lisätiedostojen lataamista Microsoftilta:\n"
"- Valitse 'Kyllä' yhdistääksesi internetiin ja ladataksesi ne\n"
"- Valitse 'Ei' peruuttaaksesi toiminnon"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "Rajoita Windows S Mode-tilaan (EI YHTEENSOPIVA verkkotilin ohituksen kanssa)"
#. • MSG_347
msgid "Expert Mode"
msgstr "Asiantuntijatila"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "Puretaan tiedostoarkistoja: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "Rufusin MBR:n käyttö"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application

View File

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-05-26 12:25+0100\n"
"PO-Revision-Date: 2023-05-26 12:25+0100\n"
"POT-Creation-Date: 2024-04-25 12:25+0100\n"
"PO-Revision-Date: 2024-04-25 12:46+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: fr_FR\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: French (Français)\n"
"X-Rufus-LCID: 0x040c, 0x080c, 0x0c0c, 0x100c, 0x140c, 0x180c, 0x1c0c, 0x200c, 0x240c, 0x280c, 0x2c0c, 0x300c, 0x340c, 0x380c, 0xe40c\n"
"X-Generator: Poedit 3.3.1\n"
"X-Generator: Poedit 3.4.2\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "Lister les disques durs USB"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "Ajouter les options de compatibilité pour vieux BIOS"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "Utiliser le MBR Rufus avec ID"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "Activer la validation des média sous UEFI"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -1041,16 +1039,8 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "Cochez cette case pour permettre laffichage des caractères étendus/internationaux et ajouter une icône (ceci crée un fichier autorun.inf)"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "Installe un MBR permettant la sélection du périphérique de démarrage. Peut aussi camoufler lID de disque pour le BIOS"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"Camoufle le premier disque USB démarrable (généralement 0x80) sous une ID différente.\n"
"Changez cette option si vous installez Windows XP avec plus dun disque dur."
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "Installe un fichier de démarrage UEFI, qui effectue une validation MD5Sum du média"
#. • MSG_169
msgid ""
@ -1090,7 +1080,7 @@ msgid "Version %d.%d (Build %d)"
msgstr ""
#. • MSG_176
msgid "English translation: Pete Batard <mailto:pete@akeo.ie>"
msgid "mailto:support@akeo.ie"
msgstr "Traduction Française : Pete Batard <mailto:pete@akeo.ie>"
#. • MSG_177
@ -1822,7 +1812,7 @@ msgstr "Supprimer la nécessité d'avoir 4Go+ de RAM, Secure Boot et TPM 2.0"
#. • MSG_330
msgid "Remove requirement for an online Microsoft account"
msgstr "Supprimer la nécessité d'utiliser un compte Microsoft en ligne"
msgstr "Supprimer la nécessité d'utiliser un compte utilisateur Microsoft en ligne"
#. • MSG_331
msgid "Disable data collection (Skip privacy questions)"
@ -1862,6 +1852,68 @@ msgstr ""
"\n"
"Note : Ce fichier sera téléchargé dans le répertoire de l'application et réutilisé automatiquement s'il est présent."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "Bootloader UEFI révoqué détecté"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Rufus a détecté que lISO que vous avez sélectionnée contient un bootloader UEFI révoqué, qui devrait produire %s sur un système UEFI à jour, lorsque 'Secure Boot' est activé.\n"
"\n"
"- Si vous avez obtenu cette image ISO à partir dune source douteuse, vous devriez envisager la possibilité quelle puisse contenir un logiciel malveillant, et éviter de démarrer à partir de celle-ci.\n"
"- Si vous lavez obtenu à partir dune source fiable, vous devriez essayer de trouver une version plus récente, où cette notification ne se produit pas."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "un écran « Violation de sécurité »"
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "un écran de récupération Windows (BSOD) avec '%s'"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "Image VHDX compressée"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "Image VHD non compressée"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "Image 'Full Flash Update'"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"Des données complémentaires doivent être téléchargées à partir du site Microsoft avant d'utiliser cette fonctionnalité :\n"
"- Sélectionnez 'Oui' pour vous connecter à Internet et le télécharger ces données\n"
"- Sélectionnez 'Non' pour annuler lopération"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "Restreint Windows au mode \"S\" (INCOMPATIBLE avec l'option de désactivation d'un compte utilisateur Microsoft en ligne)"
#. • MSG_347
msgid "Expert Mode"
msgstr "Mode expert"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "Extraction d'archive : %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "Utilisation du MBR Rufus"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-02-16 22:57+0200\n"
"PO-Revision-Date: 2023-02-24 13:13+0000\n"
"POT-Creation-Date: 2024-04-25 21:07+0300\n"
"PO-Revision-Date: 2024-04-26 01:31+0300\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: he_IL\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Hebrew (עברית)\n"
"X-Rufus-LCID: 0x040d\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.2\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "הצגת רשימה של כונני USB קשיחים"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "הוספת תיקונים ל־BIOS־ים ישנים (מחיצה נוספת, יישור...)"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "שימוש ב־MBR של Rufus עם מזהה BIOS"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "הפעלת אימות מדיה של UEFI בזמן ריצה"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -481,7 +479,7 @@ msgstr "שגיאת התקנה"
#. • MSG_067
msgid "Could not open media. It may be in use by another process. Please re-plug the media and try again."
msgstr "לא ניתן לפתוח את המדיה. יתכן שהיא בשימוש על־ידי תהליך אחר. נא לחבר מחדש את המדיה ולנסות שוב."
msgstr "לא ניתן לפתוח את המדיה. ייתכן שהיא בשימוש על־ידי תהליך אחר. נא לחבר מחדש את המדיה ולנסות שוב."
#. • MSG_068
msgid "Could not partition drive."
@ -572,7 +570,7 @@ msgid ""
"Note: The new file will be downloaded in the current directory and once a '%s' exists there, it will be reused automatically."
msgstr ""
"נראה שקובץ ה־ISO הזה משתמש בגרסה מיושנת של '%s'.\n"
"לפיכך, יתכן שתפריטי האתחול לא יוצגו כראוי.\n"
"לפיכך, ייתכן שתפריטי האתחול לא יוצגו כראוי.\n"
"\n"
"Rufus יכול להוריד גרסה חדשה יותר כדי לתקן בעיה זו:\n"
"- יש לבחור 'כן' כדי להתחבר לאינטרנט ולהוריד את הקובץ\n"
@ -1043,16 +1041,8 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "יש לסמן תיבה זו כדי לאפשר הצגה של תוויות שם בינלאומיות וכדי להגדיר סמל להתקן (יוצר קובץ autorun.inf)"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "מתקין MBR שמאפשר בחירת אתחול ויכול לגרום למזהה כונן ה־USB ב־BIOS להזדהות כמזהה אחר"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"מנסה לגרום לכונן ה־USB בר־האתחול הראשון (בדרך כלל 0x80) להזדהות כדיסק אחר.\n"
"זה אמור להיות נחוץ רק אם ברצונך להתקין Windows XP ויש לך יותר מדיסק אחד."
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "מתקין מנהל אתחול UEFI שיבצע אימות קבצים שעל המדיה בשיטת MD5Sum"
#. • MSG_169
msgid ""
@ -1127,7 +1117,7 @@ msgstr "כתובת ה־IP שלך"
#. • MSG_184
msgid "For the purpose of generating private usage statistics, we may keep the information collected, \\b for at most a year\\b0 . However, we will not willingly disclose any of this individual data to third parties."
msgstr "לצורך יצירת סטטיסטיקת שימוש פרטית, יתכן שנשמור את המידע שייאסף \\b לשנה לכל היותר\\b0 . עם זאת, אנחנו לא נמסור מרצוננו החופשי את הנתונים האלה לשום גורם צד שלישי."
msgstr "לצורך יצירת סטטיסטיקת שימוש פרטית, ייתכן שנשמור את המידע שייאסף \\b לשנה לכל היותר\\b0 . עם זאת, אנחנו לא נמסור מרצוננו החופשי את הנתונים האלה לשום גורם צד שלישי."
#. • MSG_185
msgid "Update Process:"
@ -1665,7 +1655,7 @@ msgid ""
"The last version of Rufus compatible with this platform is v%d.%d."
msgstr ""
"גרסה זו של Windows אינה נתמכת יותר על־ידי Rufus.\n"
"הגרסה האחרונה של Rufus הנתמכת בפלטפורמה זו היא %d.%d."
"הגרסה האחרונה של Rufus הנתמכת בפלטפורמה זו היא v%d.%d."
#. • MSG_295
msgid "Warning: Unofficial version"
@ -1862,6 +1852,82 @@ msgstr "השבתת הצפנת מכשיר אוטומטית של BitLocker"
msgid "Persistent log"
msgstr "יומן קבוע"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"יש להוריד קובץ נוסף ('diskcopy.dll') מ־Microsoft על מנת להתקין MS-DOS:\n"
"- יש לבחור 'כן' כדי להתחבר לאינטרנט ולהוריד אותו\n"
"- יש לבחור 'לא' כדי לבטל את הפעולה\n"
"\n"
"הערה: הקובץ יירד לספרייה בה ממוקם היישום וכל עוד הקובץ יהיה שם, Rufus ישתמש בו באופן אוטומטי במידת הצורך."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "אותר מנהל אתחול UEFI שנאסר לשימוש"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Rufus איתר שקובץ ה־ISO שבחרת מכיל מנהל אתחול UEFI שנאסר לשימוש ושיציג %s, כאשר Secure Boot מופעל על מערכת UEFI מעודכנת לחלוטין.\n"
"\n"
"- אם השגת את קובץ תמונת ISO זה ממקור מפוקפק, כדאי לשקול את האפשרות שייתכן שהוא מכיל נוזקת UEFI, ולהימנע מלאתחל ממנו.\n"
"- אם השגת אותה ממקור מהימן, כדאי לנסות לאתר גרסה יותר עדכנית, שלא תציג אזהרה זו."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "מסך \"הפרת אבטחה\""
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "מסך שחזור של Windows (BSOD) עם '%s'"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "קובץ תמונה VHDX מכווץ"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "קובץ תמונה VHD שאינו מכווץ"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "קובץ תמונה של Full Flash Update"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"יש להוריד נתונים נוספים מ־Microsoft על מנת להשתמש באפשרות זו:\n"
"- יש לבחור 'כן' כדי להתחבר לאינטרנט ולהוריד אותם\n"
"- יש לבחור 'לא' כדי לבטל את הפעולה"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "הגבלת ההתקנה של Windows למצב S-Mode (אינו נתמך עם האפשרות לעקיפת חשבון מקוון)"
#. • MSG_347
msgid "Expert Mode"
msgstr "מצב מומחה"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "מחלץ קובצי ארכיון: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "שימוש ב־MBR של Rufus"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-04-25 13:11+0100\n"
"PO-Revision-Date: 2023-04-25 13:14+0100\n"
"POT-Creation-Date: 2024-05-09 18:57+0200\n"
"PO-Revision-Date: 2024-05-09 19:30+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: hr_HR\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Croatian (Hrvatski)\n"
"X-Rufus-LCID: 0x041a, 0x081a, 0x101a\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.2\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "Prikaži USB čvrste diskove"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "Dodavanje zakrpa za stari BIOS (dodatne particije, poravnanje, itd.)"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "Koristi Rufus MBR za BIOS ID"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "Omogućite provjeru valjanosti UEFI medija"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -1041,16 +1039,8 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "Potvrdite ovo da dozvolite prikaz internacionalnih oznaka i napravite ikonu (stvara autorun.inf)"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "Instaliraj MBR koji omogućuje boot odabir i može pretvoriti BIOS USB drive ID"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"Maskiraj prvi butabilni USB pogon (uobičajeno 0x80) kao drugačiji disk.\n"
"Ovo je potrebno ako instalirate Windows XP i imate više diskova."
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "Instaliraj UEFI bootloader koji će izvršiti MD5 Sum provjeru valjanosti datoteke medije"
#. • MSG_169
msgid ""
@ -1851,6 +1841,82 @@ msgstr "Onemogući BitLocker automatsko šifriranje uređaja"
msgid "Persistent log"
msgstr "Stalni zapisnik"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"Dodatnu datoteku ('diskcopy.dll') potrebno je preuzeti s Microsofta da biste instalirali MS-DOS:\n"
"- Odaberite 'Da' za spajanje na Internet i preuzimanje\n"
"- Odaberite 'Ne' za poništavanje operacije\n"
"\n"
"Napomena: Datoteka će se preuzeti u imenik aplikacije i automatski će se ponovno koristiti ako postoji."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "Otkriven opozvani UEFI pokretački program"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Rufus je otkrio da ISO koji ste odabrali sadrži UEFI bootloader koji je opozvan i koji će proizvesti %s, kada je Secure Boot omogućen na potpuno ažuriranom UEFI sustavu.\n"
"\n"
"- Ako ste nabavili ovu ISO sliku iz izvora koji nije renomiran, trebali biste razmotriti mogućnost da ona sadrži zlonamjerni softver UEFI i izbjegavati pokretanje ga.\n"
"- Ako ste ga dobili od pouzdanog izvora, trebali biste pokušati locirati noviju verziju koja neće proizvesti ovo upozorenje."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "zaslon \"Sigurnosna povreda\""
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "zaslon za oporavak sustava Windows (BSOD) s '%s'"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "Komprimirana VHDX slika"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "Nekomprimirana VHD slika"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "Potpuna ažuriranje flash slike"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"Za korištenje ove funkcije potrebno je preuzeti neke dodatne podatke od Microsofta:\n"
"- Odaberite 'Da' za spajanje na Internet i preuzimanje\n"
"- Odaberite 'Ne' za poništavanje operacije"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "Ograniči Windows na S-Mode (NEKOMPATIBILNO s mrežnim zaobilaženjem računa)"
#. • MSG_347
msgid "Expert Mode"
msgstr "Stručnog načina rada"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "Izdvajanje arhivskih datoteka: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "Koristiti Rufus MBR"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-03-12 13:52+0000\n"
"PO-Revision-Date: 2023-03-12 13:52+0000\n"
"POT-Creation-Date: 2024-05-09 13:01+0200\n"
"PO-Revision-Date: 2024-05-10 10:46+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: hu_HU\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Hungarian (Magyar)\n"
"X-Rufus-LCID: 0x040e\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.4\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "USB merevlemezek listázása"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "Javítások hozzáadása régi BIOS-okhoz (extra partíció, igazítás, stb.)"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "Rufus MBR használata BIOS azonosítóval"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "Futásidejű UEFI adathordozó érvényesítés"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -1044,16 +1042,8 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "Pipáld be a nemzetközi címkék megjelenítésének engedélyezéséhez, és az eszköz ikon beállításához (egy autorun.inf fájlt készít)"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "Olyan MBR telepítése, ami engedélyezi a boot meghajtó kiválasztását, és képes a BIOS USB eszköz azonosítóját maszkolni"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"Próbáld meg az első bootolható USB eszközt (általában: 0x80) egy másik lemezként mutatni.\n"
"Ez csak akkor lehet szükséges, ha Windows XP-t telepítesz, és egynél több lemezed van."
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "Olyan UEFI rendszerbetöltő telepítése, ami elvégzi az adathordozón található fájlok MD5Sum érvényesítését"
#. • MSG_169
msgid ""
@ -1855,6 +1845,82 @@ msgstr "BitLocker automatikus eszköz titkosítás letiltása"
msgid "Persistent log"
msgstr "Tartós naplózás"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"Az MS-DOS telepítéséhez egy további fájlt ('diskcopy.dll') kell letölteni a Microsofttól:\n"
"- Válaszd az 'Igen' gombot az internethez történő kapcsolódáshoz, és a fájl letöltéséhez\n"
"- Válaszd a 'Nem' gombot a művelet megszakításához\n"
"\n"
"Megjegyzés: A fájl a program mappájába lesz letöltve, és automatikusan újra lesz használva, ha létezik."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "Visszavont UEFI rendszerbetöltő detektálva"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"A Rufus észlelte, hogy a kiválasztott ISO egy olyan UEFI rendszerbetöltőt tartalmaz, amelyet visszavontak, és ha a Secure Boot engedélyezve van egy teljesen naprakész UEFI rendszeren, akkor ehhez vezet: %s.\n"
"\n"
"- Ha ezt az ISO képet nem megbízható forrásból szerezted be, akkor számolnod kell azzal a lehetőséggel, hogy UEFI kártevőt tartalmazhat, és elkerülendő az erről történő rendszerindítás.\n"
"- Ha megbízható forrásból szerezted be, akkor próbálj meg egy naprakészebb verziót találni, amelyre ez a figyelmeztetés nem jelenik meg."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "\"Security Violation\" képernyő"
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "Windows helyreállítási képernyő (BSOD / kék halál) ezzel: '%s'"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "Tömörített VHDX képfájl"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "Nem tömörített VHD képfájl"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "Full Flash Update (FFU) képfájl"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"E funkcionalitás használatához néhány további adat letöltése szükséges a Microsofttól:\n"
"- Válaszd az 'Igen' gombot az internethez történő csatlakozáshoz, és az adatok letöltéséhez\n"
"- Válaszd a 'Nem' gombot a művelet megszakításához"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "Windows korlátozása S módra (NEM KOMPATIBILIS az online Microsoft-fiók követelmény eltávolításával)"
#. • MSG_347
msgid "Expert Mode"
msgstr "Szakértő mód"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "Archív fájlok kibontása: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "Rufus MBR használata"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-02-17 10:50+0100\n"
"PO-Revision-Date: 2023-02-21 19:52+0000\n"
"POT-Creation-Date: 2024-05-12 12:06+0100\n"
"PO-Revision-Date: 2024-05-12 12:12+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: it_IT\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Italian (Italiano)\n"
"X-Rufus-LCID: 0x0410, 0x0810\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.4\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -25,7 +25,7 @@ msgstr "Dispositivo/unità"
#. • IDD_DIALOG → IDS_BOOT_SELECTION_TXT
msgid "Boot selection"
msgstr "Selezione boot"
msgstr "Tipo boot sistema"
#. • IDD_DIALOG → IDC_SELECT
msgid "Select"
@ -37,11 +37,11 @@ msgstr "Opzioni immagine"
#. • IDD_DIALOG → IDS_PARTITION_TYPE_TXT
msgid "Partition scheme"
msgstr "Schema partizione"
msgstr "Tipo schema partizione"
#. • IDD_DIALOG → IDS_TARGET_SYSTEM_TXT
msgid "Target system"
msgstr "Sistema destinazione"
msgstr "Tipo sistema destinazione"
#. • IDD_DIALOG → IDC_LIST_USB_HDD
msgid "List USB Hard Drives"
@ -54,13 +54,11 @@ msgstr "Elenco unità disco USB"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "Aggiungi correzioni per vecchi BIOS (partizioni extra, allineamento, etc)"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "Usa MBR Rufus con ID BIOS"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "Abilita convalida multimediale UEFI in runtime"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -208,7 +206,7 @@ msgid ""
"WARNING: ALL DATA ON DEVICE '%s' WILL BE DESTROYED.\n"
"To continue with this operation, click OK. To quit click CANCEL."
msgstr ""
"ATTENZIONE: TUTTI I DATI SULL'UNITÀ '%s' SARANNO CANCELLATI.\n"
"ATTENZIONE: TUTTI I DATI NELL'UNITÀ '%s' SARANNO CANCELLATI.\n"
"Per continuare seleziona 'OK'. Per annullare seleziona 'ANNULLA'."
#. • MSG_004
@ -677,7 +675,7 @@ msgid ""
"Your platform cannot extract files from WIM archives. WIM extraction is required to create EFI bootable Windows 7 and Windows Vista USB drives. You can fix that by installing a recent version of 7-Zip.\n"
"Do you want to visit the 7-zip download page?"
msgstr ""
"Il tuo sistema operativo non può estrarre file dall'archivio WIM. L'estrazione WIM è necessaria per creare una unità USB avviabile EFI Windows 7 e Windows Vista. Puoi correggere ciò installando una versione recente di 7-Zip.\n"
"Il sistema operativo non può estrarre file dall'archivio WIM. L'estrazione WIM è necessaria per creare una unità USB avviabile EFI Windows 7 e Windows Vista. Puoi correggere ciò installando una versione recente di 7-Zip.\n"
"Vuoi visitare la pagina web da cui scaricare 7-zip?"
#. • MSG_103
@ -1048,17 +1046,9 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "Abilita questa opzione per permettere la visualizzazione delle etichette internazionali e impostare una icona dispositivo (creerà un file autorun.inf)"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "Installa un MBR che permette la selezione all'avvio e maschera l'ID unità USB del BIOS"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"Prova prima a mascherare l'unità avviabile USB (normalmente 0x80) come un disco differente.\n"
"Questo potrebbe essere necessario solo se installi Windows XP e hai più di un disco."
#. • MSG_169
msgid ""
"Create an extra hidden partition and try to align partitions boundaries.\n"
@ -1100,7 +1090,7 @@ msgstr "Versione %d.%d (build %d)"
#. • MSG_176
msgid "English translation: Pete Batard <mailto:pete@akeo.ie>"
msgstr "Traduzione italiana a cura di bovirus"
msgstr "Traduzione italiana a cura di R.B."
#. • MSG_177
msgid "Report bugs or request enhancements at:"
@ -1116,11 +1106,11 @@ msgstr "Policy aggiornamenti:"
#. • MSG_180
msgid "If you choose to allow this program to check for application updates, you agree that the following information may be collected on our server(s):"
msgstr "Se scegli di permettere a questo programma di controllare automaticamente gli aggiornamenti, accetti che le seguenti informazioni saranno catalogate nei nostri server:"
msgstr "Se permetti a questo programma di controllare automaticamente gli aggiornamenti, accetti che le seguenti informazioni saranno catalogate nei nostri server:"
#. • MSG_181
msgid "Your operating system's architecture and version"
msgstr "L'architettura del tuo sistema operativo e la versione"
msgstr "L'architettura del sistema operativo e la versione"
#. • MSG_182
msgid "The version of the application you use"
@ -1128,7 +1118,7 @@ msgstr "La versione dell'applicazione in uso"
#. • MSG_183
msgid "Your IP address"
msgstr "Il tuo indirizzo IP"
msgstr "Indirizzo IP"
#. • MSG_184
msgid "For the purpose of generating private usage statistics, we may keep the information collected, \\b for at most a year\\b0 . However, we will not willingly disclose any of this individual data to third parties."
@ -1595,7 +1585,7 @@ msgstr "Non avviabile"
#. • MSG_280
msgid "Disk or ISO image"
msgstr "Immagine disco o ISO"
msgstr "File immagine disco o file ISO"
#. • MSG_281
msgid "%s (Please select)"
@ -1820,7 +1810,7 @@ msgstr "Applicando opzioni utente..."
#. • MSG_327
msgid "Windows User Experience"
msgstr "Windows User Experience"
msgstr "Esperienza utente Windows"
#. • MSG_328
msgid "Customize Windows installation?"
@ -1858,6 +1848,82 @@ msgstr "Disabilita la crittografia automatica dei dispositivi BitLocker"
msgid "Persistent log"
msgstr "Log persistente"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"Per installare MS-DOS è necessario scaricare da Microsoft un file aggiuntivo (\"diskcopy.dll\"):\n"
"- Seleziona 'Sì' per connettersi ad internet e scaricarlo\n"
"- Seleziona 'No' per annullare l'operazione\n"
"\n"
"Nota: il file verrà scaricato nella cartella dell'applicazione e se presente verrà riutilizzato automaticamente."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "Rilevato bootloader UEFI revocato"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Rufus ha rilevato che l'ISO selezionata contiene un bootloader UEFI che è stato revocato e che quando Secure Boot è abilitato su un sistema UEFI completamente aggiornato produrrà %s. \n"
"\n"
"- Se hai ottenuto questa immagine ISO da una so0egente non affidabile, dovresti considerare la possibilità che possa contenere malware UEFI ed evitare di eseguire l'avvio da esso.\n"
"- Se l'hai ottenuto da una sorgente attendibile, dovresti provare a cercare una versione più aggiornata, che non genererà questo avviso."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "una schermata \"Violazione sicurezza\""
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "una schermata di ripristino Windows (BSOD) con '%s'"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "Immagine VHDX compressa"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "Immagine VHD non compressa"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "Immagine aggiornamento flash completa"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"Per usare questa funzionalità è necessario scaricare da Microsoft alcuni dati aggiuntivi:\n"
"- Seleziona 'Sì' per connettersi ad internet e scaricarli\n"
"- Seleziona 'No' per annullare l'operazione"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "Limita Windows alla modalità S (INCOMPATIBILE con il bypass dell'account online)"
#. • MSG_347
msgid "Expert Mode"
msgstr "Modalità esperto"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "Estrazione file archivio: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "Usa MBR Rufus"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application
@ -1874,7 +1940,7 @@ msgstr "Codice sorgente: %s"
#. • MSG_903
msgid "ChangeLog: %s"
msgstr "ChangeLog: %s"
msgstr "Novità: %s"
#. • MSG_904
#.

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-04-06 11:46+0900\n"
"PO-Revision-Date: 2023-04-06 18:36+0200\n"
"POT-Creation-Date: 2024-05-09 21:04+0900\n"
"PO-Revision-Date: 2024-05-09 22:07+0900\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: ja_JP\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Japanese (日本語)\n"
"X-Rufus-LCID: 0x0411\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.2\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "USB 接続の HDD を一覧表示"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "古い BIOS のために修正を追加 (パーティションの拡張、並び替え、その他)"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "BIOS ID で Rufus の MBR を作成"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "ランタイムUEFIメディア検証を有効化"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -1046,16 +1044,8 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "機能拡張されたラベルの表示とデバイス アイコンの設定を有効するにはこのチェック ボックスをオンにします。“autorun.inf” を作成します。"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "ブート選択が可能で BIOS の USB ドライブ ID に見えるよう偽装された MBR をインストールします。"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"最優先でブートする USB ドライブ (通常は 0x80) を別のディスクとして偽装します。\n"
"Windows XP をインストールして複数のディスクを使用する場合にのみ必要です。"
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "MD5チェックサム検証を行うUEFIブートローダーをインストールします。"
#. • MSG_169
msgid ""
@ -1857,6 +1847,82 @@ msgstr "BitLocker 自動デバイス暗号化を無効化します。"
msgid "Persistent log"
msgstr "永続ログ"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"MS-DOSをインストールするにはMicrosoftから追加のファイル(diskcopy.dll)をダウンロードする必要があります。\n"
"- はいを選択すると、インターネットに接続しダウンロードします。\n"
"- いいえを選択すると、キャンセルします\n"
"\n"
"注意:ファイルはアプリケーションのディレクトリへダウンロードされ、今後自動的に再利用されます。"
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "無効なUEFIブートローダーが検出されました。"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Rufusは選択されたISOイメージが無効なUEFIブートローダーを含み、最新のUEFIでセキュアブートが有効である場合%sを引き起こすことを検出しました。\n"
"\n"
"- このファイルが信頼できないソースから入手されたものであれば、マルウェア混入の可能性があるため起動しないことをお勧めします。\n"
"- このファイルが信頼できるソースから取得したものであれば、警告が発生しない新しいバージョンを探すことをお勧めします。"
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "セキュリティ侵害表示"
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "\"%s\"によるWindowsのブルースクリーン"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "圧縮されたVHDXイメージ"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "圧縮されていないVHDイメージ"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "Full Flash Updateイメージ"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"この機能を使用するにはMicrosoftから追加のファイルをいくつかダウンロードする必要があります。\n"
"- はいを選択すると、インターネットに接続しダウンロードします。\n"
"- いいえを選択すると、キャンセルします"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "WindowsのSモードを強制する(オンラインアカウント要件の削除と同時に使用できません)"
#. • MSG_347
msgid "Expert Mode"
msgstr "エキスパートモード"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "ファイルを展開中: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "Rufus MBRを使用する"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-03-10 13:36+0000\n"
"PO-Revision-Date: 2023-03-10 13:40+0000\n"
"POT-Creation-Date: 2024-04-29 04:19+0900\n"
"PO-Revision-Date: 2024-04-29 05:50+0900\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: ko_KR\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Korean (한국어)\n"
"X-Rufus-LCID: 0x0412\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.2\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "USB 하드 드라이브 목록"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "오래된 BIOS에 대한 수정 추가 (추가 파티션, 정렬 등)"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "BIOS ID로 Rufus MBR 사용"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "런타임 UEFI 미디어 유효성 검증 사용"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -175,11 +173,11 @@ msgstr "업데이트 확인 - Rufus"
#. • IDD_NEW_VERSION → IDS_NEW_VERSION_AVAIL_TXT
msgid "A newer version is available. Please download the latest version!"
msgstr "새 버전을 사용할 수 있습니다. 최신 버전을 다운로드하십시오!"
msgstr "최신 버전을 사용할 수 있습니다. 최신 버전을 다운로드하세요!"
#. • IDD_NEW_VERSION → IDC_WEBSITE
msgid "Click here to go to the website"
msgstr "웹 사이트로 이동하려면 여기를 클릭하십시오"
msgstr "웹사이트로 이동하려면 여기를 클릭하세요"
#. • IDD_NEW_VERSION → IDS_NEW_VERSION_NOTES_GRP
msgid "Release Notes"
@ -201,7 +199,7 @@ msgid ""
"Please close the first application before running another one."
msgstr ""
"다른 Rufus 응용 프로그램이 실행 중입니다.\n"
"다른 응용 프로그램을 실행하기 전에 첫 번째 응용 프로그램을 닫으십시오."
"다른 응용 프로그램을 실행하기 전에 첫 번째 응용 프로그램을 닫아주세요."
#. • MSG_003
msgid ""
@ -209,7 +207,7 @@ msgid ""
"To continue with this operation, click OK. To quit click CANCEL."
msgstr ""
"경고: '%s' 장치의 모든 데이터가 삭제됩니다.\n"
"이 작업을 계속하려면 확인을 클릭하십시오. 끝내려면 취소를 클릭하십시오."
"이 작업을 계속하려면 확인을 클릭합니다. 종료하려면 취소를 클릭합니다."
#. • MSG_004
msgid "Rufus update policy"
@ -217,7 +215,7 @@ msgstr "Rufus 업데이트 정책"
#. • MSG_005
msgid "Do you want to allow Rufus to check for application updates online?"
msgstr "Rufus가 온라인으로 응용프로그램 업데이트를 확인할 수 있도록 허용하시겠습니까?"
msgstr "Rufus가 온라인으로 응용 프로그램 업데이트를 확인할 수 있도록 허용하시겠습니까?"
#. • MSG_007
msgid "Cancel"
@ -237,7 +235,7 @@ msgstr ""
"검사 완료: %d개의 불량 블록을 찾았습니다\n"
" %d개 읽기 오류\n"
" %d개 쓰기 오류\n"
" %d개 손상 오류"
" %d개 손상 오류"
#. • MSG_012
#.
@ -433,7 +431,7 @@ msgstr "미디어가 쓰기 금지되어 있습니다."
#. • MSG_055
msgid "The device is in use by another process. Please close any other process that may be accessing the device."
msgstr "장치가 다른 프로세스에서 사용 중입니다. 장치에 액세스할 수 있는 다른 프로세스를 닫으십시오."
msgstr "다른 프로세스에서 장치를 사용 중입니다. 장치에 액세스할 수 있는 다른 프로세스를 모두 닫으세요."
#. • MSG_056
msgid "Quick format is not available for this device."
@ -457,7 +455,7 @@ msgstr "볼륨 크기가 유효하지 않습니다."
#. • MSG_061
msgid "Please insert a removable media in drive."
msgstr "드라이브에 이동식 미디어를 삽입하십시오."
msgstr "드라이브에 이동식 미디어를 삽입하세요."
#. • MSG_062
msgid "An unsupported command was received."
@ -481,7 +479,7 @@ msgstr "설치 실패"
#. • MSG_067
msgid "Could not open media. It may be in use by another process. Please re-plug the media and try again."
msgstr "미디어를 열 수 없습니다. 다른 프로세스에서 사용 중일 수 있습니다. 미디어를 다시 연결하고 다시 시도하십시오."
msgstr "미디어를 열 수 없습니다. 다른 프로세스에서 사용 중일 수 있습니다. 미디어를 다시 연결하고 다시 시도하세요."
#. • MSG_068
msgid "Could not partition drive."
@ -575,8 +573,8 @@ msgstr ""
"이로 인해 부팅 메뉴가 제대로 표시되지 않을 수 있습니다.\n"
"\n"
"Rufus는 이 문제를 해결하기 위해 최신 버전을 다운로드할 수 있습니다:\n"
"- 인터넷에 연결하고 파일을 다운로드하려면 '예'를 선택하십시오.\n"
"- 기존 ISO 파일을 수정하지 않은 상태로 두려면 '아니오'를 선택하십시오.\n"
"- 인터넷에 연결하고 파일을 다운로드하려면 '예'를 선택합니다\n"
"- 기존 ISO 파일을 수정하지 않은 상태로 두려면 '아니오'를 선택합니다\n"
"무엇을 해야 할지 모르면 '예'를 선택해야 합니다.\n"
"\n"
"참고: 새 파일이 현재 디렉터리에 다운로드되고 '%s'가 있으면 자동으로 재사용됩니다."
@ -614,7 +612,7 @@ msgstr "지원되지 않는 ISO"
#. • MSG_091
msgid "When using UEFI Target Type, only EFI bootable ISO images are supported. Please select an EFI bootable ISO or set the Target Type to BIOS."
msgstr "UEFI 대상 유형을 사용하는 경우 EFI 부팅 ISO 이미지만 지원됩니다. EFI 부팅 ISO를 선택하거나 대상 유형을 BIOS로 설정하십시오."
msgstr "UEFI 대상 유형을 사용하는 경우, EFI 부팅 가능한 ISO 이미지만 지원됩니다. EFI 부팅 가능한 ISO를 선택하거나 대상 유형을 BIOS로 설정하세요."
#. • MSG_092
msgid "Unsupported filesystem"
@ -640,7 +638,7 @@ msgstr "DD 이미지"
#. • MSG_096
msgid "The file system currently selected can not be used with this type of ISO. Please select a different file system or use a different ISO."
msgstr "현재 선택한 파일 시스템은 이 유형의 ISO에서 사용할 수 없습니다. 다른 파일 시스템을 선택하거나 다른 ISO를 사용하십시오."
msgstr "현재 선택한 파일 시스템은 이 유형의 ISO와 함께 사용할 수 없습니다. 다른 파일 시스템을 선택하거나 다른 ISO를 사용하세요."
#. • MSG_097
msgid "'%s' can only be applied if the file system is NTFS."
@ -702,8 +700,8 @@ msgstr ""
"이 파일은 크기가 100KB 이상이고 항상 %s ISO 이미지에 존재하기 때문에 Rufus에 포함되어 있지 않습니다.\n"
"\n"
"Rufus가 누락된 파일을 다운로드할 수 있습니다:\n"
"- 인터넷에 연결하고 파일을 다운로드하려면 '예'를 선택하십시오\n"
"- 나중에 드라이브에 이 파일을 수동으로 복사하려면 '아니오'를 선택하십시오\n"
"- 인터넷에 연결하고 파일을 다운로드하려면 '예'를 선택합니다\n"
"- 나중에 드라이브에 이 파일을 수동으로 복사하려면 '아니오'를 선택합니다\n"
"\n"
"참고: 파일이 현재 디렉터리에 다운로드되고 '%s'가 있으면 자동으로 재사용됩니다."
@ -713,11 +711,11 @@ msgid ""
"If you are sure you want to cancel, click YES. Otherwise, click NO."
msgstr ""
"취소하면 장치를 사용할 수 없는 상태가 될 수 있습니다.\n"
"취소하려면 예를 클릭하십시오. 그렇지 않으면 아니요를 클릭합니다."
"취소하려면 예를 클릭합니다. 그렇지 않으면 아니오를 클릭합니다."
#. • MSG_106
msgid "Please select folder"
msgstr "폴더를 선택하십시오"
msgstr "폴더를 선택하세요"
#. • MSG_107
msgid "All files"
@ -740,7 +738,7 @@ msgid ""
"Please change the Cluster size or use FreeDOS."
msgstr ""
"MS-DOS는 64KB 클러스터 크기를 사용하는 드라이브에서 부팅할 수 없습니다.\n"
"클러스터 크기를 변경하거나 FreeDOS를 사용하십시오."
"클러스터 크기를 변경하거나 FreeDOS를 사용하세요."
#. • MSG_111
msgid "Incompatible Cluster size"
@ -769,8 +767,8 @@ msgstr ""
"이 이미지에서는 Syslinux %s%s를 사용하지만 이 응용 프로그램에는 Syslinux %s%s에 대한 설치 파일만 포함됩니다.\n"
"\n"
"새 버전의 Syslinux는 서로 호환되지 않으므로 Rufus가 모두 포함할 수 없으므로 인터넷에서 두 개의 추가 파일 ('ldlinux.sys' 및 'ldlinux.bss')을 다운로드해야 합니다:\n"
"- 인터넷에 연결하고 이러한 파일을 다운로드하려면 '예'를 선택하십시오\n"
"- 작업을 취소하려면 '아니오'를 선택하십시오\n"
"- 인터넷에 연결하고 이러한 파일을 다운로드하려면 '예'를 선택합니다\n"
"- 작업을 취소하려면 '아니오'를 선택합니다\n"
"\n"
"참고: 파일은 현재 응용 프로그램 디렉터리에 다운로드되며 있는 경우 자동으로 재사용됩니다."
@ -795,9 +793,9 @@ msgstr ""
"이 이미지는 Grub %s을(를) 사용하지만 응용 프로그램에는 Grub %s에 대한 설치 파일만 포함합니다.\n"
"\n"
"다른 버전의 Grub은 서로 호환되지 않을 수 있으며, 모두 포함할 수 없기 때문에 Rufus는 이미지에서 일치하는 Grub 설치 파일 ('core.img')의 버전을 찾으려고 시도합니다:\n"
"- 인터넷에 연결하고 다운로드하려면 '예'를 선택하십시오\n"
"- Rufus의 기본 버전을 사용하려면 '아니요'를 선택하십시오\n"
"- 작업을 중단하려면 '취소'를 선택하십시오\n"
"- 인터넷에 연결하고 다운로드하려면 '예'를 선택합니다\n"
"- Rufus의 기본 버전을 사용하려면 '아니오'를 선택합니다\n"
"- 작업을 중단하려면 '취소'를 선택합니다\n"
"\n"
"참고: 파일은 현재 응용 프로그램 디렉터리에 다운로드되며 있는 경우 자동으로 재사용됩니다. 일치하는 항목을 온라인으로 찾을 수 없는 경우 기본 버전이 사용됩니다."
@ -870,7 +868,7 @@ msgid ""
"For details on why this is necessary, see the 'More Information' button below."
msgstr ""
"UEFI:NTFS 부트 로더를 사용하는 미디어를 방금 만들었습니다. 이 미디어를 부팅하려면 보안 부팅을 비활성화해야 합니다.\n"
"이 작업이 필요한 이유에 대한 자세한 내용은 아래의 '추가 정보' 버튼을 참조하십시오."
"이 기능이 필요한 이유에 대한 자세한 내용은 아래의 '추가 정보' 버튼을 참조하세요."
#. • MSG_130
msgid "Windows image selection"
@ -882,7 +880,7 @@ msgid ""
"Please select the image you wish to use for this installation:"
msgstr ""
"이 ISO에는 여러 개의 Windows 이미지가 포함되어 있습니다.\n"
"이 설치에 사용할 이미지를 선택하십시오:"
"이 설치에 사용할 이미지를 선택하세요:"
#. • MSG_132
msgid "Another program or process is accessing this drive. Do you want to format it anyway?"
@ -950,7 +948,7 @@ msgstr "브라우저를 사용하여 다운로드"
#. • MSG_144
msgid "Download of Windows ISOs is unavailable due to Microsoft having altered their website to prevent it."
msgstr "너무 많은 다운로드를 요청하여 Microsoft에서 일시적으로 금지했습니다. 나중에 다시 시도하십시오."
msgstr "Microsoft가 이를 방지하기 위해 웹사이트를 변경했기 때문에 Windows ISO를 다운로드할 수 없습니다."
#. • MSG_145
msgid "PowerShell 3.0 or later is required to run this script."
@ -970,7 +968,7 @@ msgstr "ISO 이미지 다운로드"
#. • MSG_150
msgid "Type of computer you plan to use this bootable drive with. It is your responsibility to determine whether your target is of BIOS or UEFI type before you start creating the drive, as it may fail to boot otherwise."
msgstr "이 부팅 드라이브를 사용할 컴퓨터 유형입니다. 드라이브 생성을 시작하기 전에 대상이 BIOS인지 UEFI 유형인지 확인하는 것은 사용자의 책임입니다. 그렇지 않으면 부팅에 실패할 수 있습니다."
msgstr "이 부팅 가능한 드라이브를 사용하려는 컴퓨터 유형입니다. 드라이브를 만들기 전에 대상이 BIOS인지 UEFI 유형인지 확인해야 합니다. 그렇지 않으면 부팅에 실패할 수도 있기 때문입니다."
#. • MSG_151
#.
@ -1012,7 +1010,7 @@ msgid ""
"International characters are accepted."
msgstr ""
"이 필드를 사용하여 드라이브 레이블을 설정합니다.\n"
"국제 문자 사용할 수 있습니다."
"국제 문자 사용할 수 있습니다."
#. • MSG_160
msgid "Toggle advanced options"
@ -1028,31 +1026,23 @@ msgstr "\"느린\" 포맷 방법을 사용하려면 이 상자의 선택을 취
#. • MSG_163
msgid "Method that will be used to create partitions"
msgstr "파티션을 만드는 데 사용할 방식입니다"
msgstr "파티션을 만드는 데 사용할 방"
#. • MSG_164
msgid "Method that will be used to make the drive bootable"
msgstr "드라이브를 부팅 가능한 상태로 만드는 데 사용되는 방식입니다"
msgstr "드라이브를 부팅 가능하게 만드는 데 사용되는 방법"
#. • MSG_165
msgid "Click to select or download an image..."
msgstr "이미지를 선택하거나 다운로드하려면 클릭하십시오..."
msgstr "이미지를 선택하거나 다운로드하려면 클릭..."
#. • MSG_166
msgid "Check this box to allow the display of international labels and set a device icon (creates an autorun.inf)"
msgstr "국제 레이블을 표시하고 장치 아이콘을 설정하려면 이 확인란을 선택합니다 (autorun.inf 생성)."
msgstr "이 확인란을 선택하면 국제 레이블 표시를 허용하고 장치 아이콘을 설정할 수 있습니다 (autorun.inf 생성)."
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "부팅 선택을 허용하고 BIOS USB 드라이브 ID를 위장할 수 있는 MBR 설치"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"부팅 가능한 첫 번째 USB 드라이브 (일반적으로 0x80)를 다른 디스크로 위장해 보십시오.\n"
"Windows XP를 설치하고 디스크가 두 개 이상인 경우에만 필요합니다."
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "미디어의 MD5Sum 파일 유효성 검사를 수행할 UEFI 부트로더 설치"
#. • MSG_169
msgid ""
@ -1095,7 +1085,7 @@ msgstr "버전 %d.%d (빌드 %d)"
#. • MSG_176
msgid "English translation: Pete Batard <mailto:pete@akeo.ie>"
msgstr "한국어 번역:\\line• Uk-Jin Jang <mailto:doublestat@gmail.com>\\line• 비너스걸-VᴇɴsGɪʀʟ♥ <mailto:venusgirl@outlook.com>"
msgstr "한국어 번역:\\line• 비너스걸 (VᴇɴsGɪʀʟ♥) <mailto:venusgirl@outlook.com>"
#. • MSG_177
msgid "Report bugs or request enhancements at:"
@ -1111,7 +1101,7 @@ msgstr "업데이트 정책:"
#. • MSG_180
msgid "If you choose to allow this program to check for application updates, you agree that the following information may be collected on our server(s):"
msgstr "이 프로그램에서 응용프로그램 업데이트를 확인하도록 선택한 경우, 다음 정보가 서버에서 수집될 수 있다는 데 동의하는 것입니다:"
msgstr "이 프로그램에서 응용 프로그램 업데이트를 확인하도록 선택한 경우, 다음 정보가 서버에서 수집될 수 있다는 데 동의하는 것입니다:"
#. • MSG_181
msgid "Your operating system's architecture and version"
@ -1147,7 +1137,7 @@ msgstr "선택한 부팅 옵션에 대한 잘못된 이미지"
#. • MSG_188
msgid "The current image doesn't match the boot option selected. Please use a different image or choose a different boot option."
msgstr "현재 이미지가 선택한 부팅 옵션과 일치하지 않습니다. 다른 이미지를 사용하거나 다른 부팅 옵션을 선택하십시오."
msgstr "현재 이미지가 선택한 부팅 옵션과 일치하지 않습니다. 다른 이미지를 사용하거나 다른 부팅 옵션을 선택하세요."
#. • MSG_189
msgid "This ISO image is not compatible with the selected filesystem"
@ -1378,7 +1368,7 @@ msgstr "Syslinux %s 설치 중..."
#. Bad blocks status. Example: "Bad Blocks: Write pass 1/2 - 12.34% (0/0/1 errors)"
#. See MSG_191 & MSG_192 for "Write pass"/"Read pass" translation.
msgid "Bad Blocks: %s %d/%d - %0.2f%% (%d/%d/%d errors)"
msgstr "불량 블록: 통과 %d/%d - %0.2f%% (%d/%d/%d 오류)"
msgstr "불량 블록: %s %d/%d - %0.2f%% (%d/%d/%d 오류)"
#. • MSG_236
msgid "Bad Blocks: Testing with random pattern"
@ -1406,9 +1396,9 @@ msgid ""
"\n"
"The download will be deleted. Please check the log for more details."
msgstr ""
"다운로드한 업데이트의 서명을 확인할 수 없습니다. 이는 시스템이 서명 유효성 검사를 위해 잘못 구성되었거나 악의적인 다운로드를 나타냈음을 의미할 수 있습니다.\n"
"다운로드한 업데이트의 서명을 확인할 수 없습니다. 이는 시스템이 서명 유효성 검사를 위해 잘못 구성되었거나 악의적인 다운로드를 의미할 수 있습니다.\n"
"\n"
"다운로드가 삭제됩니다. 자세한 내용은 로그를 확인하십시오."
"다운로드가 삭제됩니다. 자세한 내용은 로그에서 확인하세요."
#. • MSG_241
msgid "Downloading: %s"
@ -1462,7 +1452,7 @@ msgstr "크기 확인"
#. • MSG_253
msgid "Hard disk detection"
msgstr "하드디스크 감지"
msgstr "하드 디스크 감지"
#. • MSG_254
msgid "Force large FAT32 formatting"
@ -1564,9 +1554,9 @@ msgid ""
msgstr ""
"선택한 이미지는 'ISO 하이브리드' 이미지입니다. 즉, %s (파일 복사) 모드 또는 %s (디스크 이미지) 모드로 쓸 수 있습니다.\n"
"Rufus는 %s 모드를 사용하는 것이 좋습니다. 따라서 드라이브를 작성한 후에는 항상 드라이브에 대한 전체 액세스 권한을 가질 수 있습니다.\n"
"그러나 부팅하는 동안 문제가 발생하면 %s 모드에서 이 이미지를 다시 쓰십시오.\n"
"그러나 부팅하는 동안 문제가 발생하면 %s 모드에서 이 이미지를 다시 작성해 볼 수 있습니다.\n"
"\n"
"이 이미지를 쓰는 데 사용할 모드를 선택하십시오:"
"이 이미지를 작성하는 데 사용할 모드를 선택하세요:"
#. • MSG_276
#.
@ -1594,7 +1584,7 @@ msgstr "디스크 또는 ISO 이미지"
#. • MSG_281
msgid "%s (Please select)"
msgstr "%s (선택하십시오)"
msgstr "%s (선택해 주세요)"
#. • MSG_282
msgid "Exclusive USB drive locking"
@ -1620,11 +1610,11 @@ msgstr ""
#. • MSG_286
msgid "Zeroing drive: %s"
msgstr "드라이브 0 채우기: %s"
msgstr "드라이브 제로화 중: %s"
#. • MSG_287
msgid "Detection of non-USB removable drives"
msgstr "USB가 아닌 이동식 드라이브 감지됩니다"
msgstr "USB 이동식 드라이브 감지"
#. • MSG_288
msgid "Missing elevated privileges"
@ -1644,7 +1634,7 @@ msgstr "버전 선택"
#. • MSG_292
msgid "Please select the version of Windows you want to install:"
msgstr "설치할 Windows 버전을 선택하십시오:"
msgstr "설치하려는 Windows 버전을 선택하세요:"
#. • MSG_293
msgid "Unsupported Windows version"
@ -1702,7 +1692,7 @@ msgid ""
msgstr ""
"Rufus가 다운로드한 업데이트의 타임스탬프가 현재 실행 파일의 타임스탬프보다 최신인지 확인할 수 없습니다.\n"
"\n"
"잠재적인 공격 시나리오를 방지하기 위해 업데이트 프로세스가 중단되었으며 다운로드가 삭제됩니다. 자세한 내용은 로그를 확인하십시오."
"잠재적인 공격 시나리오를 방지하기 위해 업데이트 프로세스가 중단되었으며 다운로드가 삭제됩니다. 자세한 내용은 로그를 확인하시기 바랍니다."
#. • MSG_301
msgid "Show application settings"
@ -1751,7 +1741,7 @@ msgid ""
msgstr ""
"선택한 ISO는 UEFI를 사용하며 EFI 시스템 파티션 (ESP)으로 작성할 수 있을 정도로 작습니다. 일부 유형의 설치에서는 전체 디스크를 차지하는 일반 데이터 파티션에 쓰는 대신 ESP에 쓰는 것이 바람직할 수 있습니다.\n"
"\n"
"이 이미지를 쓰는 데 사용할 모드를 선택하십시오:"
"이 이미지를 작성하는 데 사용할 모드를 선택하세요:"
#. • MSG_311
msgid "Use %s (in the main application window) to enable."
@ -1853,6 +1843,82 @@ msgstr "BitLocker 자동 장치 암호화 사용 안 함"
msgid "Persistent log"
msgstr "영구 로그"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"MS-DOS를 설치하려면 Microsoft에서 추가 파일 ('diskcopy.dll')을 다운로드해야 합니다:\n"
"- 인터넷에 연결하여 다운로드하려면 '예'를 선택합니다\n"
"- 작업을 취소하려면 '아니오'를 선택합니다\n"
"\n"
"참고: 해당 파일은 응용 프로그램의 디렉터리에 다운로드되며 존재하는 경우 자동으로 재사용됩니다."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "취소된 UEFI 부트로더가 탐지됨"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Rufus는 사용자가 선택한 ISO에 취소된 UEFI 부트로더가 포함되어 있으며, 이는 완전히 최신 UEFI 시스템에서 보안 부팅이 활성화된 경우에 %s을(를) 생성한다는 것을 감지했습니다.\n"
"\n"
"- 평판이 좋지 않은 소스에서 이 ISO 이미지를 가져온 경우 UEFI 멀웨어가 포함되어 있을 가능성을 고려하고 부팅을 피해야 합니다.\n"
"- 신뢰할 수 있는 소스에서 가져온 경우에는 보다 최신 버전을 찾아야 합니다. 그러면 이 경고가 발생하지 않습니다.."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "\"보안 위반\" 화면"
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "%s이(가) 있는 Windows 복구 화면 (BSOD)"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "압축된 VHDX 이미지"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "압축되지 않은 VHD 이미지"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "전체 플래시 업데이트 이미지"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"이 기능을 사용하려면 Microsoft에서 몇 가지 추가 데이터를 다운로드해야 합니다:\n"
"- 인터넷에 연결하여 다운로드하려면 '예'를 선택합니다\n"
"- 작업을 취소하려면 '아니오'를 선택합니다"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "Windows를 S-Mode로 제한 (온라인 계정 우회와 호환되지 않음)"
#. • MSG_347
msgid "Expert Mode"
msgstr "전문가 모드"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "압축 파일 추출 중: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "Rufus MBR 사용"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-02-24 15:38+0200\n"
"PO-Revision-Date: 2023-02-26 22:12+0000\n"
"POT-Creation-Date: 2024-05-14 16:22+0100\n"
"PO-Revision-Date: 2024-05-14 16:22+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: lv_LV\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Latvian (Latviešu)\n"
"X-Rufus-LCID: 0x0426\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.4\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "USB disku saraksts"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "Pievienot vecāku BIOSu labojumus (partīcijām, dalījumam, u.c.)"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "Izmantot MBR ar BIOS ID"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "Ieslēgt UEFI nesēja pārbaudi izpildīšanas laikā"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -117,7 +115,7 @@ msgstr "Licence"
#. • IDD_ABOUTBOX → IDOK
msgid "OK"
msgstr "Aprstiprināt"
msgstr "Apstiprināt"
#. • IDD_LICENSE → IDD_LICENSE
msgid "Rufus License"
@ -273,11 +271,11 @@ msgstr "Citādi"
#. • MSG_018
msgid "Your version: %d.%d (Build %d)"
msgstr "Jūsu versija: %d.%d (Build %d)"
msgstr "Jūsu versija: %d.%d (Būvējums %d)"
#. • MSG_019
msgid "Latest version: %d.%d (Build %d)"
msgstr "Pēdējā versija: %d.%d (Build %d)"
msgstr "Pēdējā versija: %d.%d (Būvējums %d)"
#. • MSG_020
#. • MSG_026
@ -768,7 +766,7 @@ msgid ""
msgstr ""
"Šis virtuālais attēls izmanto Syslinux %s%s, bet programma satur instalācijas failus Syslinux %s%s.\n"
"\n"
"Tā kā jaunās Syslinux versijas nav savstarpēji atbalstāmas, nepieciešams ielādēt no interneta vajadzīgos failus ('ldlinux.sys' un 'ldlinux.bss'):\n"
"Tā kā jaunās Syslinux versijas nav savstarpēji atbalstāmas, nepieciešams ielādēt no interneta vajadzīgos failus ('ldlinux.sys' un 'ldlinux.bss'):\n"
"- Izvēlieties 'Jā' lai pieslēgtos pie interneta un mēģināt ielādētu šos failus\n"
"- Izvēlieties 'Nē' lai atceltu šo darbību\n"
"\n"
@ -914,7 +912,7 @@ msgstr ""
#. • MSG_135
msgid "Version"
msgstr "Vesija"
msgstr "Versija"
#. • MSG_136
msgid "Release"
@ -1043,23 +1041,15 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "Atzīmējiet starptautisko simbolu atbalstam un ierīces ikonas izveidei (tiek izveidots fails autorun.inf)"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "Instalēt MBR, kur var izvēlēties ielādi un kurš var maskēties BIOS'ā ar ierīces identifikatoru"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"Mēģināt maskēt pirmo USB ielādes ierīci (parasti 0x80) kā citu disku.\n"
"Tas nepieciešams, kad instalējat Windows XP un izmantojat vairāk nekā vienu dieskus."
#. • MSG_169
msgid ""
"Create an extra hidden partition and try to align partitions boundaries.\n"
"This can improve boot detection for older BIOSes."
msgstr ""
"IZveidot papildus slēpto partīciju un izlīdzināt partīciju robežas.\n"
"Izveidot papildus slēpto partīciju un izlīdzināt partīciju robežas.\n"
"Šī opcija var atvieglot ielādes noteikšanu vecākās BIOS versijās."
#. • MSG_170
@ -1734,7 +1724,7 @@ msgstr "Ātrā diska nullēšana: %s"
#. • MSG_307
msgid "this may take a while"
msgstr "Šī darbība var aizņemt laiku"
msgstr "šī darbība var aizņemt laiku"
#. • MSG_308
msgid "VHD detection"
@ -1750,7 +1740,7 @@ msgid ""
"\n"
"Please select the mode that you want to use to write this image:"
msgstr ""
"Izvēlētais ISO-fails izmanto UEFI un ir pietiekoši mazs, lai varētu tikt ierakstīts, kā EFI (ESP) sistēmas sadaļa. Ieraksts iekš ESP, nevis kopējā datu sadaļā, kas aizņem visu disku, var būt ieteicamāks dažu ielāžu tipiem.\n"
"Izvēlētais ISO-fails izmanto UEFI un ir pietiekoši mazs, lai varētu tikt ierakstīts, kā EFI (ESP) sistēmas sadaļa. Ieraksts iekš ESP, nevis kopējā datu sadaļā, kas aizņem visu disku, var būt ieteicamāks dažu ielāžu tipiem.\n"
"\n"
"Izvēlieties to režīmu, kuru nepieciešams izmantot lai ierakstīt šo virtuālo attēlu:"
@ -1816,7 +1806,7 @@ msgstr "Lietotāja opciju pielietošana..."
#. • MSG_327
msgid "Windows User Experience"
msgstr "Windows User Experience"
msgstr "Windows lietotāju pieredze"
#. • MSG_328
msgid "Customize Windows installation?"
@ -1854,6 +1844,82 @@ msgstr "Atslēgt automātisko šifrēšanu ar BitLocker"
msgid "Persistent log"
msgstr "Pastāvīgs žurnāls"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"Lai instalēt MS-DOS no Microsoft vietnes nepieciešams lejuplādēt papildus failu («diskcopy.dll»):\n"
"- Izvēlieties «Jā», lai pieslēgties pie Interneta un failu lejuplādēt.\n"
"- Izvēlieties «Nē», lai atcelt darbību.\n"
"\n"
"Piezīme. Fails tiks lejuplādēts programmas mapē, ja tas jau eksistē, tiks izmantots atkārtoti."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "Pamanīts atceltais UEFI ielādes ieraksts"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Rufus konstatēja Jūsu izvēlētais ISO-fails satur atceltu UEFI ielādes ierakstu, kurš izdos %s, ja būs ieslēgta drošā ielāde pilnīgi jauninātajā UEFI sistēmā.\n"
"\n"
"- Ja šis ISO fails ir iegūts no nedrošiem avotiem, vajag ņemt vērā, ka tas var saturēt UEFI ļaunatūru un censties no tā nestartēt.\n"
"- Ja fails iegūts no droša avota, būtu jāatrod jaunāka versija, kurai nerādīs šādu brīdinājumu."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "a \"Drošības pārkāpuma\" ekrāns"
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "a Windows atkopšanas ekrāns (BSOD) ar '%s'"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "Saspiests VHDX attēls"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "Nesaspiests VHDX attēls"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "Full Flash atjauninājuma attēls"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"Lai izmantotu šo funkcionalitāti, no Microsoft ir jālejupielādē daži papildus dati:\n"
"- Izvēlieties 'Jā', lai izveidotu savienojumu ar Internetu un lejupielādētu tos\n"
"- Izvēlieties \"Nē\", lai atceltu darbību"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "Ierobežot Windows tikai S režīmā (NESADERĪGS ar tiešsaistes konta apiešanu)"
#. • MSG_347
msgid "Expert Mode"
msgstr "Eksperta režīms"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "Atpakot arhīva failus: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "Izmantot Rufus MBR"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application
@ -1887,7 +1953,7 @@ msgstr ""
#.
#. Keyword for "boot" will be used for search in the Windows Store
msgid "Boot"
msgstr ""
msgstr "Ielāde"
#. • MSG_910
#.

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-04-17 13:44+0100\n"
"PO-Revision-Date: 2023-04-17 13:46+0100\n"
"POT-Creation-Date: 2024-05-09 19:38+0100\n"
"PO-Revision-Date: 2024-05-09 19:44+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: nb_NO\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Norwegian (Norsk)\n"
"X-Rufus-LCID: 0x0414\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.4\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "Før opp USB harddisker"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "Legger til fiks for gamle BIOSer (ekstra partisjon, etc.)"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "Bruk Rufus MBR med BIOS ID"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "Aktiver runtime UEFI-medievalidering"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -803,7 +801,7 @@ msgstr ""
#. • MSG_117
msgid "Standard Windows installation"
msgstr "Standard Windows instalasjon"
msgstr "Standard Windows installasjon"
#. • MSG_118
#.
@ -1043,16 +1041,8 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "Merk denne boksen for å tillate visning av internasjonal merkelapp og lage et stasjonsikon (lager en autorun.inf)"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "Installerer en MBR som tillater oppstartsvalg og kan maskere BIOS USB-stasjons ID"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"Forsøk å maskere første oppstartbare USB-stasjon (vanligvis 0x80) som en annen stasjon.\n"
"Dette er kun nødvendig hvis du installerer Windows XP og har mer enn en stasjon."
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "Installer en UEFI bootloader, som vil utføre MD5Sum-filvalidering av media"
#. • MSG_169
msgid ""
@ -1095,7 +1085,7 @@ msgstr "Versjon %d.%d (Utgave %d)"
#. • MSG_176
msgid "English translation: Pete Batard <mailto:pete@akeo.ie>"
msgstr "Norsk oversettelse:\\line• JED <mailto:translator744@outlook.com>\\line• Thorbjørn Bruarøy <mailto:problemkontroll@gmail.com>\\line• Jakub Zieciak <mailto:jakub.zieciak@gmail.com>"
msgstr "Norsk oversettelse:\\line• JED <mailto:translator744@outlook.com>\\line• Thorbjørn Bruarøy <mailto:problemkontroll@gmail.com>\\line• Jakub Zieciak"
#. • MSG_177
msgid "Report bugs or request enhancements at:"
@ -1839,11 +1829,11 @@ msgstr "Ikke gi Windows To Go tilgang til interne harddisker"
#. • MSG_333
msgid "Create a local account with username:"
msgstr "Lag en lokal brukerkongot med med brukernavnet:"
msgstr "Lag en lokal brukerkonto med brukernavnet:"
#. • MSG_334
msgid "Set regional options to the same values as this user's"
msgstr "Sett regionale instillinger til det samme som den aktive brukerkontoen"
msgstr "Sett regionale innstillinger til det samme som den aktive brukerkontoen"
#. • MSG_335
msgid "Disable BitLocker automatic device encryption"
@ -1853,6 +1843,82 @@ msgstr "Deaktiver BitLocker kryptering av enheten"
msgid "Persistent log"
msgstr "Behold log"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"En ekstra fil ('diskcopy.dll') må lastes ned fra Microsoft for å installere MS-DOS:\n"
"- Velg \"Ja\" for å koble til Internett og laste den ned\n"
"- Velg 'Nei' for å avbryte operasjonen\n"
"\n"
"Merk: Filen vil bli lastet ned i programmets katalog og vil automatisk bli gjenbrukt hvis den er tilstede."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "Opphevet UEFI bootloader oppdaget"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Rufus oppdaget at ISO-en du har valgt inneholder en UEFI-oppstartslaster som har blitt tilbakekalt og som vil produsere %s, når sikker oppstart er aktivert på et fullstendig oppdatert UEFI-system.\n"
"\n"
"- Hvis du har fått dette ISO-bildet fra en ikke-anerkjent kilde, bør du vurdere muligheten for at det kan inneholde UEFI-malware og unngå å starte opp fra det.\n"
"- Hvis du har fått det fra en pålitelig kilde, bør du prøve å finne en mer oppdatert versjon, som ikke vil gi denne advarselen."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "en \"Sikkerhetsbrudd\"-skjerm"
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "en Windows-gjenopprettingsskjerm (BSOD) med '%s'"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "Komprimert VHDX-imaget"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "Ukomprimert VHD-imaget"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "Full Flash Update Image"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"Noen tilleggsdata må lastes ned fra Microsoft for å bruke denne funksjonaliteten:\n"
"- Velg \"Ja\" for å koble til Internett og laste den ned\n"
"- Velg 'Nei' for å avbryte operasjonen"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "Begrens Windows til S-modus (INKOMPATIBEL med online kontoomgåelse)"
#. • MSG_347
msgid "Expert Mode"
msgstr "Ekspert modus"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "Pakker ut arkivfiler: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "Bruk Rufus MBR"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-02-17 09:03+0100\n"
"PO-Revision-Date: 2023-02-17 17:02+0000\n"
"POT-Creation-Date: 2024-04-26 11:15+0200\n"
"PO-Revision-Date: 2024-04-26 11:44+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: nl_NL\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Dutch (Nederlands)\n"
"X-Rufus-LCID: 0x0413, 0x0813\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.2\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "USB-harde schijven weergeven"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "Oplossingen voor oude BIOS'en toevoegen (extra partitie, uitlijnen, etc.)"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "Rufus MBR met BIOS ID gebruiken"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "Media-validatie via UEFI inschakelen"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -92,7 +90,7 @@ msgstr "Uitgebreid label en pictogrambestanden aanmaken"
#. • IDD_DIALOG → IDS_STATUS_TXT
msgid "Status"
msgstr "Status"
msgstr ""
#. • IDD_DIALOG → IDCANCEL
#. • IDD_LICENSE → IDCANCEL
@ -139,7 +137,7 @@ msgstr "Nee"
#. • IDD_LOG → IDD_LOG
msgid "Log"
msgstr "Log"
msgstr ""
#. • IDD_LOG → IDC_LOG_CLEAR
msgid "Clear"
@ -282,7 +280,7 @@ msgstr "Laatste versie: %d.%d (Build %d)"
#. • MSG_020
#. • MSG_026
msgid "bytes"
msgstr "bytes"
msgstr ""
#. • MSG_021
#.
@ -294,19 +292,19 @@ msgstr "kB"
#.
#. *Short* version of the megabyte size suffix
msgid "MB"
msgstr "MB"
msgstr ""
#. • MSG_023
#.
#. *Short* version of the gigabyte size suffix
msgid "GB"
msgstr "GB"
msgstr ""
#. • MSG_024
#.
#. *Short* version of the terabyte size suffix
msgid "TB"
msgstr "TB"
msgstr ""
#. • MSG_025
#.
@ -811,7 +809,7 @@ msgstr "Standaard Windows-installatie"
#. http://en.wikipedia.org/wiki/Windows_To_Go in your language.
#. Otherwise, you may add a parenthesis eg. "Windows To Go (<hint at what it does>)"
msgid "Windows To Go"
msgstr "Windows To Go"
msgstr ""
#. • MSG_119
msgid "advanced drive properties"
@ -918,7 +916,7 @@ msgstr "Versie"
#. • MSG_136
msgid "Release"
msgstr "Release"
msgstr ""
#. • MSG_137
msgid "Edition"
@ -1043,16 +1041,8 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "Aanvinken om weergave van internationale labels toe te laten en een apparaat-pictogram in te stellen (maakt een autorun.inf aan)"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "Installeert een MBR die een opstartselectie toestaat en de BIOS USB-drive ID kan verbergen"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"Probeert de eerste opstartbare USB drive (gewoonlijk 0x80) voor te laten doen als een andere schijf.\n"
"Dit is alleen nodig als u Windows XP installeert en meer dan één schijf heeft."
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "Installeert een UEFI-bootloader die bij elke opstart vanaf het medium een MD5Sum-bestandsvalidatie uitvoert op het medium zelf"
#. • MSG_169
msgid ""
@ -1759,7 +1749,7 @@ msgstr "Gebruik %s (in het hoofdvenster) om in te schakelen."
#. • MSG_312
msgid "Extra hashes (SHA512)"
msgstr "Extra hashes (SHA512)"
msgstr ""
#. • MSG_313
msgid "Save to VHD"
@ -1851,7 +1841,83 @@ msgstr "Automatische Bitlocker-apparaatversleuteling uitschakelen"
#. • MSG_336
msgid "Persistent log"
msgstr "Persistent log"
msgstr ""
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"Er moet een extra bestand ('diskcopy.dll') worden gedownload van Microsoft om MS-DOS te installeren:\n"
"- Selecteer 'Ja' om verbinding te maken met internet en het bestand te downloaden\n"
"- Selecteer 'Nee' om de bewerking te annuleren\n"
"\n"
"Opmerking: het bestand wordt gedownload in de map van de toepassing en wordt automatisch opnieuw gebruikt als het aanwezig is."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "Ingetrokken UEFI-bootloader gedetecteerd"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Rufus heeft gedetecteerd dat de ISO die u hebt geselecteerd een UEFI-bootloader bevat die is ingetrokken en %s zal produceren wanneer Secure Boot is ingeschakeld op een volledig bijgewerkt UEFI-systeem.\n"
"\n"
"- Als u deze ISO-image hebt verkregen van een niet-vertrouwde bron, houdt u best rekening met de mogelijkheid dat het UEFI-malware bevat en vermijdt u om ervan op te starten.\n"
"- Als u het van een betrouwbare bron hebt verkregen, moet u proberen een meer up-to-date versie te vinden die deze waarschuwing niet produceert."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "een \"Security Violation\"-scherm"
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "een Windows-herstelscherm (BSOD) met '%s'"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "Gecomprimeerde VHDX-image"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "Niet-gecomprimeerde VHD-image"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "Full Flash Update image"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"Om deze functionaliteit te kunnen gebruiken, moeten enkele extra gegevens worden gedownload van Microsoft:\n"
"- Selecteer 'Ja' om verbinding te maken met internet en ze te downloaden\n"
"- Selecteer 'Nee' om de bewerking te annuleren"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "Windows beperken tot S-Modus (NIET COMPATIBEL met omzeiling voor online account)"
#. • MSG_347
msgid "Expert Mode"
msgstr "Expert-modus"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "Archiefbestanden uitpakken: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "Rufus MBR gebruiken"
#. • MSG_900
#.
@ -1886,7 +1952,7 @@ msgstr ""
#.
#. Keyword for "boot" will be used for search in the Windows Store
msgid "Boot"
msgstr "Boot"
msgstr "Opstarten"
#. • MSG_910
#.

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-03-16 00:35+0000\n"
"PO-Revision-Date: 2023-04-05 12:41+0200\n"
"POT-Creation-Date: 2024-05-09 19:08+0100\n"
"PO-Revision-Date: 2024-05-09 19:38+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: pl_PL\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Polish (Polski)\n"
"X-Rufus-LCID: 0x0415\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.4\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "Pokaż dyski twarde USB"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "Dodaj łatkę dla starych BIOSów (dodatkowa partycja, itp.)"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "Użyj MBR Rufusa z ID BIOSu"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "Włącz weryfikację nośnika UEFI w czasie wykonywania"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -1043,16 +1041,8 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "Zaznacz to pole, aby zezwolić na wyświetlanie etykiet międzynarodowych i ustawić ikonę urządzenia (tworzy plik autorun.inf)"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "Instaluje MBR, który pozwala wybrać uruchamianie i może zmienić ID dysku USB w BIOSie"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"Próbuje przedstawić pierwszy bootowalny dysk USB (zazwyczaj 0x80) jako inny dysk.\n"
"Będzie to konieczne tylko przy instalowaniu Windowsa XP i posiadaniu więcej niż jednego dysku."
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "Zainstaluj bootloader UEFI, który przeprowadzi weryfikację typu MD5SUM na nośniku"
#. • MSG_169
msgid ""
@ -1095,7 +1085,7 @@ msgstr "Wersja %d.%d (Build %d)"
#. • MSG_176
msgid "English translation: Pete Batard <mailto:pete@akeo.ie>"
msgstr "Polskie tłumaczenie:\\line• Piotr Halama <http://halamix2.pl>\\line• Krzysztof J. Szklarski\\line• Jakub Zieciak <mailto:jakub.zieciak@gmail.com>\\line• Jakub Mierzejewski <mailto:jakmierzejewski@gmail.com>"
msgstr "Polskie tłumaczenie:\\line• Piotr Halama <http://halamix2.pl>\\line• Krzysztof J. Szklarski\\line• Jakub Zieciak\\line• Jakub Mierzejewski <mailto:jakmierzejewski@gmail.com>"
#. • MSG_177
msgid "Report bugs or request enhancements at:"
@ -1853,6 +1843,82 @@ msgstr "Dezaktywuj automatyczne szyfrowanie BitLocker"
msgid "Persistent log"
msgstr "Stały dziennik (log)"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"Dodatkowy plik (\"diskcopy.dll\") musi zostać pobrany od Microsoft, żeby zainstalować MS-DOS:\n"
"- Wybierz opcję \"Tak\", aby pobrać pliku z internetu\n"
"- Wybierz opcję \"Nie\", aby anulować operajcę\n"
"\n"
"Uwaga: Plik zostanie pobrany do folderu aplikacji i będzie użyty pownownie, gdy będzie dostępny."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "Wykryto unieważniony bootloader UEFI"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Rufus wykrył, że wybrany plik ISO zawiera bootloader UEFI, który został unieważniony, i który wygenereuje %s. gdy włączony zostanie \"Secure Boot\" w pełni zaktualizowanym systemie UEFI.\n"
"\n"
"- Jeśli uzyskałeś ten obraz ISO z niezaufanego źródła, powinienneś rozważyć możliwość, że może on zawierać złośliwe oprogramowanie dla UEFI i unikać jego uruchamiania.\n"
"- Jeśli uzyskałeś go z zaufanego źródła, powinieneś spróbować znaleźć nowszą wersję, która nie wygeneruje tego ostrzeżenia."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "ekran \"Naruszenie Bezpieczeństwa\""
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "\"Ekran odzyskiwania systemu Windows\" (BSOD) z '%s'"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "Zkompresowany obraz VHDX"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "Zdekompresowany obraz VHD"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "Obraz typu \"aktualizacja full flush\""
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"Aby móc korzystać z tej funkcji, należy pobrać pewne dodatkowe dane od firmy Microsoft:\n"
"- Wybierz opcję „Tak”, aby połączyć się z Internetem i pobrać plik\n"
"- Wybierz opcję „Nie”, aby anulować operację"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "Ogranicz system Windows do trybu S (NIEZGODNY z obejściem konta online)"
#. • MSG_347
msgid "Expert Mode"
msgstr "Tryb eksperta"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "Wypakowywanie plików z archiwum: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "Użyj Rufus MBR"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2022-06-07 16:25+0100\n"
"PO-Revision-Date: 2023-03-17 14:32+0000\n"
"POT-Creation-Date: 2024-05-01 14:24-0300\n"
"PO-Revision-Date: 2024-05-04 12:06+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: pt_BR\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Portuguese Brazilian (Português do Brasil)\n"
"X-Rufus-LCID: 0x0416\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.2\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "Listar Discos Rígidos USB"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "Opções de compatibilidade para BIOSs antigos"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "Usar MBR do Rufus com ID de BIOS"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "Habilitar validação de mídia UEFI"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -655,7 +653,7 @@ msgid ""
"\n"
"Note: The 'FIXED/REMOVABLE' attribute is a hardware property that can only be changed using custom tools from the drive manufacturer. However those tools are ALMOST NEVER provided to the public..."
msgstr ""
"IMPORTANTE: Você está tentando instalar 'Windows Para Levar', porém o drive de destino não tem o atributo 'FIXED'. Portanto, é possível que o Windows trave durante a inicialização, pois a Microsoft não o desenvolveu para funcionar em drives que, em lugar daquele, tenham o atributo 'REMOVABLE'. \n"
"IMPORTANTE: Você está tentando instalar 'Windows To Go', porém o drive de destino não tem o atributo 'FIXED'. Portanto, é possível que o Windows trave durante a inicialização, pois a Microsoft não o desenvolveu para funcionar em drives que, em lugar daquele, tenham o atributo 'REMOVABLE'. \n"
"\n"
"Você ainda deseja continuar?\n"
"\n"
@ -1044,16 +1042,8 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "Selecione esta opção para permitir a exibição de caracteres acentuados e atribuir um ícone para a unidade (cria um arquivo autorun.inf)"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "Instalar um MBR que permita a seleção de inicialização e possa mascarar o ID de identificação do drive USB do BIOS"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"Tenta mascarar o primeiro drive USB inicializável (geralmente 0x80) como um disco diferente.\n"
"Isso só deve ser necessário se você instalar o Windows XP e tiver mais de um disco."
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "Instalar um carregador de inicialização que realizará validação da mídia usando MD5Sum"
#. • MSG_169
msgid ""
@ -1202,7 +1192,7 @@ msgstr "Detectado tamanho de setor fora do padrão"
#. • MSG_198
msgid "'Windows To Go' can only be installed on a GPT partitioned drive if it has the FIXED attribute set. The current drive was not detected as FIXED."
msgstr "'Windows Para Levar' só pode ser instalado em um drive particionado como GPT se ele tiver o atributo FIXO ativo. O drive atual não apresenta o atributo FIXO."
msgstr "'Windows To Go' só pode ser instalado em um drive particionado como GPT se ele tiver o atributo FIXO ativo. O drive atual não apresenta o atributo FIXO."
#. • MSG_199
msgid "This feature is not available on this platform."
@ -1722,9 +1712,7 @@ msgid "Create a disk image of the selected device"
msgstr "Criar uma imagem do dispositivo selecionado"
#. • MSG_305
msgid ""
"Use this option to indicate if you plan to install Windows to a different disk, or if you want to run Windows directly from this drive (Windows To Go).\r\n"
"In 'Extended Windows 11 Installation' mode, Rufus will patch the media so that Windows 11 can be installed on platforms that don't meet the TPM 2.0 or Secure Boot requirements."
msgid "Use this option to indicate if you plan to install Windows to a different disk, or if you want to run Windows directly from this drive (Windows To Go)."
msgstr "Use esta opção caso queira instalar o Windows neste dispositivo ou em outro, ou se deseja rodar o Windows direto deste dispositivo (Windows To Go)."
#. • MSG_306
@ -1856,6 +1844,82 @@ msgstr "Desativar a encriptação automática BitLocker"
msgid "Persistent log"
msgstr "Registo persistente"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"Um arquivo adicional ('diskcopy.dll') precisa ser baixado da Microsoft para instalar o MS-DOS:\n"
"- Selecione 'Sim' para se conectar à Internet e baixá-lo\n"
"- Selecione 'Não' para cancelar a operação\n"
"\n"
"Nota: O arquivo será baixado no diretório da aplicação e será reutilizado automaticamente caso presente."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "Detectado carregador de inicialização UEFI revogado"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Rufus detectou que o ISO selecionado contém um carregador de inicialização UEFI que foi revogado e produzirá %s quando Secure Boot estiver habilitado em um sistema UEFI atualizado.\n"
"\n"
"- Se você obteve essa imagem ISO de uma fonte não confiável, você deve considerar a possibilidade da mesma conter malware UEFI e evitar inicializar através dela.\n"
"- Se você a obteve de uma fonte confiável, você deve tentar achar uma versão mais recente, que não produza este aviso."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "uma tela \"Security Violation\""
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "uma tela de Reparo do Windows (BSOD) com '%s'"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "Imagem VHDX comprimida"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "Imagem VHD não comprimida"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "Imagem Full Flash Update"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"Alguns dados adicionais precisam ser baixados da Microsoft para usar essa funcionalidade:\n"
"- Selecione 'Sim' para se conectar à Internet e baixá-los\n"
"- Selecione 'Não' para cancelar a operação"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "Restringir Windows ao modo S (INCOMPATÍVEL com remoção de exigência de conta online)"
#. • MSG_347
msgid "Expert Mode"
msgstr "Modo Especialista"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "Extraindo arquivos: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "Usar MBR do Rufus"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-03-20 12:57+0000\n"
"PO-Revision-Date: 2023-03-20 12:57+0000\n"
"POT-Creation-Date: 2024-04-25 21:23+0300\n"
"PO-Revision-Date: 2024-04-25 22:00+0300\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: ro_RO\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Romanian (Română)\n"
"X-Rufus-LCID: 0x0418, 0x0818\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.2\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "Afișare unități conectate prin USB"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "Adăugare remedieri pentru BIOS-uri vechi (partiție extra, aliniere, etc.)"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "Utilizare MBR Rufus cu ID BIOS"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "Activați validarea mediilor UEFI în timpul execuției"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -338,7 +336,7 @@ msgstr "BIOS (sau UEFI-CSM)"
#. • MSG_032
msgid "UEFI (non CSM)"
msgstr ""
msgstr "UEFI (fără CSM)"
#. • MSG_033
msgid "BIOS or UEFI"
@ -1043,16 +1041,8 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "Bifați această casetă pentru a permite afișarea etichetelor internaționale și pentru a seta o pictogramă pentru dispozitiv (se va crea un fișier autorun.inf)"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "Instalează un MBR care permite pornirea și selecția dispozitivului USB din BIOS"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"Se va încerca mascarea primei unități USB (de obicei 0x80) ca fiind un alt disc.\n"
"Acest lucru este necesar numai dacă instalați Windows XP și aveți mai mult decât un singur disc."
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "Instalează un bootloader UEFI care poate performa validări MD5sum a fișierelor media"
#. • MSG_169
msgid ""
@ -1853,6 +1843,82 @@ msgstr "Blochează BitLocker de la encriptarea automată a dispozitivului"
msgid "Persistent log"
msgstr "Logare persistentă"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"Un fișier adițional ('diskcopy.dll') trebuie să fie descărcat de la Microsoft pentru a instala MS-DOS:\n"
"- Selectează 'Da' ca să te conectezi la Internet și să le descarci\n"
"- Selectează 'Nu' pentru a anula operațiunea\n"
"\n"
"Notiță: Acest fișier va fi descărcat in aceeași locație cu aplicația și va fi reutilizat automat dacă este prezent."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "Bootloader UEFI nepermis detectat"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Rufus a detectat că fișierul ISO care lai selectat conține un bootloader UEFI care nu este permis si ar produce %s, cand Secure Boot este activat pe un system UEFI actualizat.\n"
"\n"
"- Dacă ai făcut rost de aceasta imagine ISO de la o sursă de neîncredere, este recomandat să consideri posibilitatea că ar putea conține malware UEFI ce nu ar permite pornirea de la aceasta.\n"
"- Dacă ai făcut rost de aceasta de la o sursă de încredere, ar putea fi necesară căutarea unei versiuni mai noi, care nu ar produce acest avertisment."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "un ecran de \"Încălcare de Securitate\""
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "un ecran de Recuperare Windows (BSOD) cu '%s'"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "Imagine VHDX comprimată"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "Imagine VHD necomprimată"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "Flash complet de imagine de actualizare"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"Niște date adiționale trebuie descărcate de la Microsoft pentru a folosii această funție:\n"
"- Selectează 'Da' ca să te conectezi la Internet și să le descarci\n"
"- Selectează 'Nu' pentru a anula operațiunea"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "Restricționează Windows la S-Mode (INCOMPATIBIL cu bypass-ul pentru un cont online)"
#. • MSG_347
msgid "Expert Mode"
msgstr "Mod expert"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "Extractând fișiere arhivate: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "Folosește Rufus MBR"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1,10 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-02-26 22:16+0000\n"
"PO-Revision-Date: 2023-02-26 22:16+0000\n"
"Last-Translator: \n"
"POT-Creation-Date: 2024-05-12 10:18+0200\n"
"PO-Revision-Date: 2024-05-12 10:38+0200\n"
"Last-Translator: martinco78\n"
"Language-Team: \n"
"Language: sk_SK\n"
"MIME-Version: 1.0\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Slovak (Slovensky)\n"
"X-Rufus-LCID: 0x041B\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.4\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "Zobraziť zoznam USB pevných diskov (USB HDD)"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "Pridať úpravy pre staré BIOSy (extra partície, ...)"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "Použiť Rufus MBR s BIOS ID"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "Povoliť overenie médií UEFI v runtime režime"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -117,7 +115,7 @@ msgstr "Licencia"
#. • IDD_ABOUTBOX → IDOK
msgid "OK"
msgstr ""
msgstr "OK"
#. • IDD_LICENSE → IDD_LICENSE
msgid "Rufus License"
@ -290,31 +288,31 @@ msgstr "bajtov"
#.
#. *Short* version of the kilobyte size suffix
msgid "KB"
msgstr ""
msgstr "KB"
#. • MSG_022
#.
#. *Short* version of the megabyte size suffix
msgid "MB"
msgstr ""
msgstr "MB"
#. • MSG_023
#.
#. *Short* version of the gigabyte size suffix
msgid "GB"
msgstr ""
msgstr "GB"
#. • MSG_024
#.
#. *Short* version of the terabyte size suffix
msgid "TB"
msgstr ""
msgstr "TB"
#. • MSG_025
#.
#. *Short* version of the pentabyte size suffix
msgid "PB"
msgstr ""
msgstr "PB"
#. • MSG_027
msgid "kilobytes"
@ -397,7 +395,7 @@ msgstr "Úložné zariadenie USB (všeobecné)"
#. • MSG_046
msgid "%s (Disk %d) [%s]"
msgstr ""
msgstr "%s (Disk %d) [%s]"
#. • MSG_047
#.
@ -491,7 +489,7 @@ msgstr "Nie je možné vytvoriť oddiely."
#. • MSG_069
msgid "Could not copy files to target drive."
msgstr "Nie je možné kopírovať súbory do cieľovej jednotky."
msgstr "Nie je možné kopírovať súbory do cieľovej jednotky."
#. • MSG_070
msgid "Cancelled by user."
@ -735,7 +733,7 @@ msgstr "Záznam programu Rufus"
#. • MSG_109
msgid "0x%02X (Disk %d)"
msgstr ""
msgstr "0x%02X (Disk %d)"
#. • MSG_110
#.
@ -745,7 +743,7 @@ msgid ""
"MS-DOS cannot boot from a drive using a 64 kilobytes Cluster size.\n"
"Please change the Cluster size or use FreeDOS."
msgstr ""
"MS-DOS nemôže byť bootovaný z jednotky používajúcich klastre s veľkosťou 64kb.\n"
"Systém MS-DOS nemôže byť spustený z jednotky používajúcej klastre s veľkosťou 64kb.\n"
"Zmeňte veľkosť klastra alebo použite FreeDOS."
#. • MSG_111
@ -774,7 +772,7 @@ msgid ""
msgstr ""
"Tento obraz používa Syslinux %s%s ale tento program obsahuje inštaláciu pre Syslinux %s%s.\n"
"\n"
"Ak nová verzia Syslinuxu nie je kompaktibilná s ďalším obrazom, je možné, že program Rufus neobsahuje dva doplnkové súbory, ktoré budú musieť byť stiahnuté z internetu (ldlinux.sys a ldlinux.bss):\n"
"Ak nová verzia Syslinuxu nie je kompaktibilná s ďalším obrazom, je možné, že program Rufus neobsahuje dva doplnkové súbory, ktoré budú musieť byť stiahnuté z internetu (ldlinux.sys a ldlinux.bss):\n"
"- Stlačte „Áno\" pre stiahnutie týchto súborov z internetu\n"
"- Stlačte „Nie\" pre zrušenie operácie\n"
"\n"
@ -1051,16 +1049,8 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "Označením tohto políčka povolíte v názve disku zobrazenie medzinárodných znakov a vytvorenie ikony zariadenia (vytvorením súboru autorun.inf)"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "Inštalovaním MBR programu povolíte výber pri bootovaní a možnosť maskovania použitím BIOS USB drive ID"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"Vyskúšajte maskovanie prvej bootovacej USB jednotky (zvyčajne 0x80) ako odlišného disku.\n"
"Toto je nevyhnutné, ak chcete inštalovať Windows XP a máte viac ako jeden disk."
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "Nainštalovať zavádzač UEFI, ktorý vykoná overenie média prostredníctvom MD5Sum súboru"
#. • MSG_169
msgid ""
@ -1861,6 +1851,82 @@ msgstr "Vypnutie automatického šifrovania zariadenia BitLocker"
msgid "Persistent log"
msgstr "Trvalý záznam činností"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"Pre inštaláciu systému MS-DOS je potrebné prevziať od spoločnosti Microsoft ďalší súbor („diskcopy.dll\"):\n"
"- Výberom možnosti „Áno\" ho stiahnete z internetu\n"
"- Výberom možnosti „Nie\" zrušíte operáciu\n"
"\n"
"Poznámka: Súbor sa stiahne do adresára aplikácie a automaticky sa znova použije, ak je k dispozícii."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "Bol zistený zrušený zavádzač UEFI"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Program Rufus zistil, že ISO, ktoré ste vybrali, obsahuje zavádzač UEFI, ktorý bol zrušený a ktorý bude produkovať %s, keď je povolené zabezpečené spustenie na plne aktuálnom systéme UEFI.\n"
"\n"
"- Ak ste tento obraz ISO získali z neseriózneho zdroja, mali by ste zvážiť možnosť, že by mohol obsahovať malvér UEFI a vyhnúť sa bootovaniu z neho.\n"
"- Ak ste ho získali z dôveryhodného zdroja, mali by ste sa pokúsiť nájsť aktuálnejšiu verziu, ktorá toto upozornenie nespustí."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "obrazovka „Narušenie bezpečnosti\""
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "a Obrazovka obnovenia systému Windows (BSOD) s %s"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "Komprimovaný obraz VHDX"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "Nekomprimovaný obraz VHD"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "Obraz úplnej flash aktualizácie"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"Ak chcete používať túto funkciu, musíte si od spoločnosti Microsoft stiahnuť niektoré ďalšie dáta:\n"
"- Výberom možnosti „Áno\" ich stiahnete z internetu\n"
"- Výberom možnosti „Nie\" zrušíte túto operáciu"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "Obmedziť systém Windows s režimom S (NEKOMPATIBILNÝ s obídením konta online)"
#. • MSG_347
msgid "Expert Mode"
msgstr "Expertný režim"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "Extrahovanie archívnych súborov: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "Použiť Rufus MBR"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application
@ -1894,7 +1960,7 @@ msgstr ""
#.
#. Keyword for "boot" will be used for search in the Windows Store
msgid "Boot"
msgstr ""
msgstr "boot"
#. • MSG_910
#.

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-02-17 17:21+0000\n"
"PO-Revision-Date: 2023-02-17 17:22+0000\n"
"POT-Creation-Date: 2024-05-10 22:14+0200\n"
"PO-Revision-Date: 2024-05-10 22:25+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: sr_RS\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Serbian (Srpski)\n"
"X-Rufus-LCID: 0x241a, 0x081a, 0x181a, 0x2c1a, 0x701a, 0x7c1a\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.4\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "Pokaži USB čvrste diskove"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "Dodaj ispravke za stare BIOS-e (dodatne particije, svrstanje, itd.)"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "Koristi Rufus MBR sa BIOS ID-em"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "Омогућите проверу UEFI медија током извршавања"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -545,7 +543,7 @@ msgstr ""
"\n"
"Zavsino od brzine vašeg USB uređaja, ova operacija može potrajati dugo, naročito za velike datoteke.\n"
"\n"
"Preporučujemo da dozvolite Windows-u da završi, kako bi izbjegli korupciju. Ukoliko ne želite čekati, samo izvadite USB uređaj..."
"Preporučujemo da dozvolite Windows-u da završi, kako bi izbjegli korupciju. Ukoliko ne želite čekati, samo izvadite USB uređaj..."
#. • MSG_081
msgid "Unsupported image"
@ -850,7 +848,7 @@ msgstr "Bez stalne veličine"
#.
#. Tooltips used for the peristence size slider and edit control
msgid "Set the size of the persistent partition for live USB media. Setting the size to 0 disables the persistent partition."
msgstr "Izaberite veličinu stalne particije za live USB datoteku. Podešavanjem na 0 onemogućava stalnu particiju."
msgstr "Izaberite veličinu stalne particije za live USB datoteku. Podešavanjem na 0 onemogućava stalnu particiju."
#. • MSG_126
msgid "Set the partition size units."
@ -1043,16 +1041,8 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "Označite ovo polje kako biste dozvolili prikaz internacionalnih oznaka i napravite ikonicu uređaja (izrađuje autorun.inf)"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "Instaliraj MBR koji omogućava odabir pri podizanju sistema i može pretvoriti ID BIOS-a USB uređaja"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"Pokušaj maskirati prvi USB uređaj za podizanje sistema (uobičajeno 0x80) kao drugačiji disk.\n"
"Ovo je samo potrebno ako instalirate Windows XP i imate više od jednog diska."
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "Инсталирајте UEFI боотлоадер, који ће извршити проверу МД5Сум-y датотеке медија"
#. • MSG_169
msgid ""
@ -1853,6 +1843,82 @@ msgstr "Onemogući BitLocker automatsku enkripciju uređaja"
msgid "Persistent log"
msgstr "Trajna evidencija"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"Додатна датотека ('diskcopy.dll') мора да се преузме са Microsoft-a да би се инсталирао MS-DOS:\n"
"- Изаберите „Да“ да бисте се повезали на Интернет и преузели га\n"
"- Изаберите „Не“ да бисте отказали операцију\n"
"\n"
"Напомена: Датотека ће бити преузета у директоријум апликације и аутоматски ће се поново користити ако постоји."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "Откривен је опозвани UEFI покретач"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Руфус је открио да ISO који сте изабрали садржи UEFI покретач који је опозван и који ће произвести %s када је безбедно покретање омогућено на потпуно ажурираном UEFI систему.\n"
"\n"
"- Ако сте ову ISO слику добили од неугледног извора, требало би да размотрите могућност да садржи UEIFI малвер и избегавајте покретање са њега.\n"
"- Ако сте га добили од поузданог извора, покушајте да пронађете новију верзију, која неће произвести ово упозорење."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "екран „Нарушавање безбедности“"
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "Windows Рековери Екран (BSOD) са „%s“"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "Компресована VHDX слика"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "Некомпримована VHD слика"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "Фулл Фласх Упдате Имаге"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"Неки додатни подаци морају се преузети од Microsoft-a да бисте користили ову функцију:\n"
"- Изаберите „Да“ да бисте се повезали на Интернет и преузели га\n"
"- Изаберите „Не“ да бисте отказали операцију"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "Ограничите Виндовс на С-Моде (НИЈЕ КОМПАТИБИЛАН са заобилажењем налога на мрежи)"
#. • MSG_347
msgid "Expert Mode"
msgstr "Ekspertni Rezim"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "Распакивање архивских датотека: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "Koritsti Rufus MBR"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application

View File

@ -1,11 +1,11 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-02-16 22:33+0100\n"
"PO-Revision-Date: 2023-02-16 23:43+0100\n"
"Last-Translator: Sopor <sopor@hotmail.com>\n"
"Language-Team: \n"
"POT-Creation-Date: 2024-04-26 00:51+0200\n"
"PO-Revision-Date: 2024-04-26 14:23+0100\n"
"Last-Translator: \n"
"Language-Team: Sopor <sopor@users.noreply.github.com>\n"
"Language: sv_SE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Swedish (Svenska)\n"
"X-Rufus-LCID: 0x041d, 0x081d\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.2\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -52,15 +52,13 @@ msgstr "Lista USB-hårddiskar"
#. It is acceptable to drop the parenthesis () if you are running out of space
#. as there is a tooltip (MSG_169) providing these details.
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "Lägg till korrigeringar för äldre BIOS:ar"
msgstr "Lägg till korrigeringar för äldre BIOS:ar (extra partition, etc)"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "Använd Rufus MBR med BIOS-ID"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "Aktivera runtime UEFI-mediavalidering"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -92,7 +90,7 @@ msgstr "Skapa utökat namn och ikonfiler"
#. • IDD_DIALOG → IDS_STATUS_TXT
msgid "Status"
msgstr "Status"
msgstr ""
#. • IDD_DIALOG → IDCANCEL
#. • IDD_LICENSE → IDCANCEL
@ -117,7 +115,7 @@ msgstr "Licens"
#. • IDD_ABOUTBOX → IDOK
msgid "OK"
msgstr "OK"
msgstr ""
#. • IDD_LICENSE → IDD_LICENSE
msgid "Rufus License"
@ -171,7 +169,7 @@ msgstr "Uppdatera nu"
#. • IDD_NEW_VERSION → IDD_NEW_VERSION
msgid "Check For Updates - Rufus"
msgstr "Kontrollera efter uppdateringar - Rufus"
msgstr "Sök efter uppdateringar - Rufus"
#. • IDD_NEW_VERSION → IDS_NEW_VERSION_AVAIL_TXT
msgid "A newer version is available. Please download the latest version!"
@ -193,7 +191,7 @@ msgstr "Nerladdning"
#. • MSG_001
msgid "Other instance detected"
msgstr "Program redan i gång"
msgstr "Programmet körs redan"
#. • MSG_002
msgid ""
@ -201,7 +199,7 @@ msgid ""
"Please close the first application before running another one."
msgstr ""
"Rufus körs redan.\n"
"Stäng det andra programmet innan du startar ännu ett."
"Stäng det första programmet innan du startar ett nytt."
#. • MSG_003
msgid ""
@ -209,8 +207,8 @@ msgid ""
"To continue with this operation, click OK. To quit click CANCEL."
msgstr ""
"VARNING: ALL DATA PÅ ENHETEN '%s'\n"
"KOMMER ATT FÖRSVINNA.\n"
"För att fortsätta, tryck OK. För att avbryta tryck AVBRYT."
"KOMMER ATT TAS BORT.\n"
"För att fortsätta tryck OK. För att avbryta tryck AVBRYT."
#. • MSG_004
msgid "Rufus update policy"
@ -283,37 +281,37 @@ msgstr "Senaste version: %d.%d (Build %d)"
#. • MSG_020
#. • MSG_026
msgid "bytes"
msgstr "bytes"
msgstr ""
#. • MSG_021
#.
#. *Short* version of the kilobyte size suffix
msgid "KB"
msgstr "KB"
msgstr ""
#. • MSG_022
#.
#. *Short* version of the megabyte size suffix
msgid "MB"
msgstr "MB"
msgstr ""
#. • MSG_023
#.
#. *Short* version of the gigabyte size suffix
msgid "GB"
msgstr "GB"
msgstr ""
#. • MSG_024
#.
#. *Short* version of the terabyte size suffix
msgid "TB"
msgstr "TB"
msgstr ""
#. • MSG_025
#.
#. *Short* version of the pentabyte size suffix
msgid "PB"
msgstr "PB"
msgstr ""
#. • MSG_027
msgid "kilobytes"
@ -396,7 +394,7 @@ msgstr "USB-lagringsenhet (Allmänt)"
#. • MSG_046
msgid "%s (Disk %d) [%s]"
msgstr "%s (Disk %d) [%s]"
msgstr ""
#. • MSG_047
#.
@ -728,7 +726,7 @@ msgstr "Rufus logg"
#. • MSG_109
msgid "0x%02X (Disk %d)"
msgstr "0x%02X (Disk %d)"
msgstr ""
#. • MSG_110
#.
@ -810,7 +808,7 @@ msgstr "Standard Windowsinstallation"
#. http://en.wikipedia.org/wiki/Windows_To_Go in your language.
#. Otherwise, you may add a parenthesis eg. "Windows To Go (<hint at what it does>)"
msgid "Windows To Go"
msgstr "Windows To Go"
msgstr ""
#. • MSG_119
msgid "advanced drive properties"
@ -913,11 +911,11 @@ msgstr ""
#. • MSG_135
msgid "Version"
msgstr "Version"
msgstr ""
#. • MSG_136
msgid "Release"
msgstr "Release"
msgstr ""
#. • MSG_137
msgid "Edition"
@ -975,11 +973,11 @@ msgstr "Typ av dator du planerar att använda den här startbara enheten på. De
#.
#. You shouldn't translate 'Legacy Mode' as this is an option that usually appears in English in the UEFI settings.
msgid "'UEFI-CSM' means that the device will only boot in BIOS emulation mode (also known as 'Legacy Mode') under UEFI, and not in native UEFI mode."
msgstr "'UEFI-CSM' innebär att enheten startar i BIOS-emuleringsläge (kallas också för 'Legacy Mode') under UEFI och inte i nativ UEFI-läge."
msgstr "\"UEFI-CSM\" innebär att enheten startar i BIOS-emuleringsläge (kallas också för 'Legacy Mode') under UEFI och inte i nativ UEFI-läge."
#. • MSG_152
msgid "'non CSM' means that the device will only boot in native UEFI mode, and not in BIOS emulation mode (also known as 'Legacy Mode')."
msgstr "'icke CSM' innebär att enheten startar i nativ UEFI-läge och inte i BIOS-emuleringsläge (kallas också för 'Legacy Mode')."
msgstr "\"icke CSM\" innebär att enheten startar i nativ UEFI-läge och inte i BIOS-emuleringsläge (kallas också för 'Legacy Mode')."
#. • MSG_153
msgid "Test pattern: 0x%02X"
@ -1015,7 +1013,7 @@ msgstr ""
#. • MSG_160
msgid "Toggle advanced options"
msgstr "Visa/Dölj avancerat"
msgstr "Visa/dölj avancerat"
#. • MSG_161
msgid "Check the device for bad blocks using a test pattern"
@ -1042,16 +1040,8 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "Markera för att tillåta visa internationella namn och sätta en enhetsikon (en autorun.inf skapas)"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "Installera en MBR som tillåter flera uppstartsmöjligheter och som kan maskera bort BIOS USB enhets-ID"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"Prova att maskera bort den första startbara USB-enheten (vanligtvis 0x80) som en annan disk.\n"
"Detta är endast nödvändigt om du installerar Windows XP och du har mer än en disk."
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "Installera en UEFI-starthanterare som kommer att utföra MD5Sum-filvalidering av media"
#. • MSG_169
msgid ""
@ -1092,11 +1082,11 @@ msgstr "Rufus - Det pålitliga verktyget för USB-formatering"
#. • MSG_175
msgid "Version %d.%d (Build %d)"
msgstr "Version %d.%d (Build %d)"
msgstr ""
#. • MSG_176
msgid "English translation: Pete Batard <mailto:pete@akeo.ie>"
msgstr "Svensk översättning: Sopor <mailto:sopor@hotmail.com>"
msgstr "Svensk översättning: Sopor"
#. • MSG_177
msgid "Report bugs or request enhancements at:"
@ -1202,7 +1192,7 @@ msgstr "En icke standard sektorstorlek upptäckt"
#. • MSG_198
msgid "'Windows To Go' can only be installed on a GPT partitioned drive if it has the FIXED attribute set. The current drive was not detected as FIXED."
msgstr "'Windows To Go' kan endast installeras på en enhet med GPT-partition om det är en FIXERAD enhet. Nuvarande enhet är inte FIXERAD."
msgstr "\"Windows To Go\" kan endast installeras på en enhet med GPT-partition om det är en FIXERAD enhet. Nuvarande enhet är inte FIXERAD."
#. • MSG_199
msgid "This feature is not available on this platform."
@ -1563,7 +1553,7 @@ msgid ""
"\n"
"Please select the mode that you want to use to write this image:"
msgstr ""
"Avbilden du har valt är en 'ISOHybrid-avbild'. Detta innebär att den kan skrivas i både läge %s (filkopiering) eller i läge %s (disk-avbild).\n"
"Avbilden du har valt är en \"ISOHybrid-avbild\". Detta innebär att den kan skrivas i både läge %s (filkopiering) eller i läge %s (disk-avbild).\n"
"Rufus rekommenderar att läge %s används, så att du alltid har full tillgång till enheten efter att du skrivit till den.\n"
"Skulle du få problem vid uppstarten, kan du i stället prova skriva avbilden i läge %s.\n"
"\n"
@ -1824,7 +1814,7 @@ msgstr "Anpassa Windows-installationen?"
#. • MSG_329
msgid "Remove requirement for 4GB+ RAM, Secure Boot and TPM 2.0"
msgstr "Ta bort kravet på 4 GB+ RAM, Secure Boot och TPM 2.0"
msgstr "Ta bort kravet på 4GB+ RAM, Secure Boot och TPM 2.0"
#. • MSG_330
msgid "Remove requirement for an online Microsoft account"
@ -1836,7 +1826,7 @@ msgstr "Inaktivera datainsamling (Hoppa över sekretessfrågor)"
#. • MSG_332
msgid "Prevent Windows To Go from accessing internal disks"
msgstr "Förhindra Windows To Go från att komma åt interna diskar"
msgstr "Förhindra \"Windows To Go\" från att komma åt interna diskar"
#. • MSG_333
msgid "Create a local account with username:"
@ -1854,6 +1844,82 @@ msgstr "Inaktivera BitLockers automatiska enhetskryptering"
msgid "Persistent log"
msgstr "Bestående logg"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"En fil (diskcopy.dll) måste laddas ner från Microsoft för att installera MS-DOS:\n"
"- Välj \"Ja\" för att ansluta till Internet och ladda ner den\n"
"- Välj \"Nej\" för att avbryta operationen\n"
"\n"
"Obs: Filen kommer att laddas ner i programmets katalog och kommer att återanvändas automatiskt om den finns."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "Återkallad UEFI-starthanterare upptäcktes"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Rufus upptäckte att den ISO-filen du har valt innehåller en UEFI-starthanterare som har återkallats och som kommer att producera %s, när \"Secure Boot\" är aktiverat på ett helt uppdaterat UEFI-system.\n"
"\n"
"- Om du skaffade den här ISO-avbilden från en icke ansedd källa bör du överväga möjligheten att den kan innehålla UEFI-skadlig programvara och undvika att starta från den.\n"
"- Om du har fått det från en pålitlig källa bör du försöka hitta en mer uppdaterad version som inte ger den här varningen."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "en \"Säkerhetsöverträdelseskärm\""
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "en Windows-återställningsskärm (BSOD) med '%s'"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "Komprimerad VHDX-avbild"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "Okomprimerad VHD-avbild"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "Full flash uppdateringsavbild"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"Ytterligare data måste laddas ner från Microsoft för att kunna använda den här funktionen:\n"
"- Välj \"Ja\" för att ansluta till Internet och ladda ner den\n"
"- Välj \"Nej\" för att avbryta operationen"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "Begränsa Windows till S-läge (INKOMPATIBEL med förbikoppling av onlinekonto)"
#. • MSG_347
msgid "Expert Mode"
msgstr "Expertläge"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "Extraherar arkivfiler: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "Använd Rufus MBR"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application
@ -1913,7 +1979,7 @@ msgstr "Skapa BIOS- eller UEFI-startbara enheter, inklusive UEFI-startbar NTFS"
#. • MSG_915
msgid "Create 'Windows To Go' drives"
msgstr "Skapa 'Windows To Go'-enheter"
msgstr "Skapa \"Windows To Go\"-enheter"
#. • MSG_916
msgid "Create Windows 11 installation drives for PCs that don't have TPM or Secure Boot"
@ -1941,4 +2007,4 @@ msgstr "Ladda ner officiella Microsoft Windows ISO-filer"
#. • MSG_922
msgid "Download UEFI Shell ISOs"
msgstr "Ladda ner UEFI-shell ISO-filer"
msgstr "Ladda ner UEFI-skal ISO-filer"

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-02-23 15:14+0300\n"
"PO-Revision-Date: 2023-04-05 12:42+0200\n"
"POT-Creation-Date: 2024-04-28 09:05+0300\n"
"PO-Revision-Date: 2024-04-28 09:32+0300\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: tr_TR\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Turkish (Türkçe)\n"
"X-Rufus-LCID: 0x041F\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.2\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "USB Sabit Sürücüleri Listele"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "Eski BIOSlar için düzeltme ekle (ekstra bölüm, hizalama vs.)"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "Rufus MBR kullan. BIOS Kimliği Seçin"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "Çalışma zamanı UEFI ortam doğrulamasını etkinleştir"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -1043,16 +1041,8 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "Uluslararası etiketleri görüntülemek için bu onay kutusunu seçin ve aygıt simgesini belirleyin (autorun.inf oluşturur)"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "Açılış seçimine izin veren ve BIOS USB Sürücü kimliğini taklit edebilen bir MBR yükler"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"İlk açılabilir USB sürücüsünü farklı bir disk olarak taklit etmeye çalış (genellikle 0x80).\n"
"Bu sadece Windows XP yüklemesinde ve birden fazla diske varsa gerekebilir."
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "Medyanın MD5Sum dosya doğrulamasını gerçekleştirecek bir UEFI önyükleyici yükleyin"
#. • MSG_169
msgid ""
@ -1798,7 +1788,7 @@ msgid ""
"The image you have selected is an ISOHybrid, but its creators have not made it compatible with ISO/File copy mode.\n"
"As a result, DD image writing mode will be enforced."
msgstr ""
"Seçtiğiniz yansı bir ISOHybrid, ancak yansı ISO/Dosya kopyalama modu ile uyumlu hale olrak oluşturulmamış.\n"
"Seçtiğiniz yansı bir ISOHybrid, ancak yansı ISO/Dosya kopyalama modu ile uyumlu hale olrak oluşturulmamış.\n"
"Sonuç olarak, DD yansısı yazma modu uygulanacaktır."
#. • MSG_322
@ -1853,6 +1843,82 @@ msgstr "BitLocker otomatik cihaz şifrelemesini devre dışı bırakın"
msgid "Persistent log"
msgstr "Kalıcı günlük"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"MS-DOS'u yüklemek için Microsoft'tan ek bir dosyanın ('diskcopy.dll') indirilmesi gerekir:\n"
"- İnternete bağlanıp indirmek için 'Evet'i seçin\n"
"- İşlemden vazgeçmek için 'Hayır'ı seçin\n"
"\n"
"Not: Dosya uygulamanın dizinine indirilecek ve varsa otomatik olarak yeniden kullanılacaktır."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "İptal edilen UEFI önyükleyici algılandı"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Rufus, seçtiğiniz ISO'nun iptal edilmiş bir UEFI önyükleyici içerdiğini ve tamamen güncel bir UEFI sisteminde Güvenli Önyükleme etkinleştirildiğinde %s oluşturacağını algıladı.\n"
"\n"
"- Bu ISO görüntüsünü saygın olmayan bir kaynaktan aldıysanız, bunun UEFI kötü amaçlı yazılım içerme olasılığını göz önünde bulundurmalı ve bu görüntüden önyükleme yapmaktan kaçınmalısınız.\n"
"- Eğer güvenilir bir kaynaktan aldıysanız bu uyarıyı vermeyecek daha güncel bir versiyon bulmaya çalışmalısınız."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "\"Güvenlik İhlali\" ekranı"
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "'%s' içeren bir Windows Kurtarma Ekranı (BSOD)"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "Sıkıştırılmış VHDX Yansısı"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "Sıkıştırılmamış VHD Yansısı"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "Full Flash Update Yansısı"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"Bu işlevselliği kullanmak için Microsoft'tan bazı ek verilerin indirilmesi gerekir:\n"
"- İnternete bağlanıp indirmek için 'Evet'i seçin\n"
"- İşlemden vazgeçmek için 'Hayır'ı seçin"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "Windows'u S-Mode ile Kısıtlayın (çevrimiçi hesap atlamayla UYUMSUZ)"
#. • MSG_347
msgid "Expert Mode"
msgstr "Uzman Modu"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "Arşiv dosyaları çıkarılıyor: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "Rufus MBR'yi kullanın"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-03-09 10:21+0200\n"
"PO-Revision-Date: 2023-03-12 14:09+0000\n"
"POT-Creation-Date: 2024-05-14 13:59+0300\n"
"PO-Revision-Date: 2024-05-15 21:15+0300\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: uk_UA\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Ukrainian (Українська)\n"
"X-Rufus-LCID: 0x0422\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.4\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "Список USB накопичувачів"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "Додати виправлення для старих BIOS (додатковий розділ, вирівнювання, тощо)"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "Використовувати Rufus MBR з BIOS ID"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "Увімкнути перевірку носія UEFI під час виконання"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -92,7 +90,7 @@ msgstr "Створити розширену мітку та значок при
#. • IDD_DIALOG → IDS_STATUS_TXT
msgid "Status"
msgstr "Статус"
msgstr "Стан"
#. • IDD_DIALOG → IDCANCEL
#. • IDD_LICENSE → IDCANCEL
@ -433,7 +431,7 @@ msgstr "Вибраний пристрій захищений від запису
#. • MSG_055
msgid "The device is in use by another process. Please close any other process that may be accessing the device."
msgstr "Вибраний пристрій використовується іншим процесом. Будь ласка, закінчіть процес перед використанням вибраного пристрою."
msgstr "Вибраний пристрій використовується іншим процесом. Будь ласка, завершіть процес перед використанням вибраного пристрою."
#. • MSG_056
msgid "Quick format is not available for this device."
@ -575,9 +573,9 @@ msgstr ""
"Через це завантажувальне меню може відображатися неправильно.\n"
"\n"
"Нову версію можна завантажити за допомогою Rufus:\n"
"- Оберіть 'Так', щоб завантажити файл з інтернету\n"
"- Оберіть 'Ні', щоб не модифікувати ISO-образ\n"
"Якщо ви не знаєте що робити, то оберіть 'Так'.\n"
"- Виберіть 'Так', щоб завантажити файл з інтернету\n"
"- Виберіть 'Ні', щоб не модифікувати ISO-образ\n"
"Якщо ви не знаєте що робити, то виберіть 'Так'.\n"
"\n"
"Файл буде завантажений в поточну директорію, а в разі наявності '%s' - замінений автоматично."
@ -614,7 +612,7 @@ msgstr "Непідтримуваний ISO-образ"
#. • MSG_091
msgid "When using UEFI Target Type, only EFI bootable ISO images are supported. Please select an EFI bootable ISO or set the Target Type to BIOS."
msgstr "При використанні системного інтерфейсу UEFI підтримуються тільки завантажувальні EFI ISO-образи. Будь ласка, оберіть завантажувальний EFI ISO-образ чи змініть системний інтерфейс на BIOS."
msgstr "При використанні системного інтерфейсу UEFI підтримуються тільки завантажувальні EFI ISO-образи. Будь ласка, виберіть завантажувальний EFI ISO-образ чи змініть системний інтерфейс на BIOS."
#. • MSG_092
msgid "Unsupported filesystem"
@ -702,8 +700,8 @@ msgstr ""
"Оскільки цей файл більший за 100 Кб, і завжди присутній в %s ISO-образах, він не був вбудований в Rufus.\n"
"\n"
"Rufus може завантажити відсутній файл:\n"
"- Оберіть 'Так', якщо хочете завантажити даний файл\n"
"- Оберіть 'Ні', якщо хочете завантажити його вручну пізніше\n"
"- Виберіть 'Так', якщо хочете завантажити даний файл\n"
"- Виберіть 'Ні', якщо хочете завантажити його вручну пізніше\n"
"\n"
"Примітка: Файл буде завантажений в поточну директорію. За наявності '%s', він буде перезаписаний автоматично."
@ -717,7 +715,7 @@ msgstr ""
#. • MSG_106
msgid "Please select folder"
msgstr "Будь ласка, оберіть теку"
msgstr "Будь ласка, виберіть теку"
#. • MSG_107
msgid "All files"
@ -769,8 +767,8 @@ msgstr ""
"Даний образ використовує Syslinux %s%s, проте даний додаток включає в себе тільки настановні файли для Syslinux %s%s.\n"
"\n"
"Так як нові версії Syslinux несумісні одна з одною, необхідно, щоб додаткові файли ('ldlinux.sys' та 'ldlinux.bss') були завантажені з інтернету:\n"
"- Оберіть 'Так', щоб завантажити файли з інтернету\n"
"- Оберіть 'Ні', щоб відмінити операцію\n"
"- Виберіть 'Так', щоб завантажити файли з інтернету\n"
"- Виберіть 'Ні', щоб відмінити операцію\n"
"\n"
"Примітка: Файли будуть завантажені в поточний каталог додатку і будуть використовуватися повторно за необхідності."
@ -795,9 +793,9 @@ msgstr ""
"Даний образ використовує завантажувач Grub %s, але додаток включає тільки настановні файли для завантажувача Grub %s.\n"
"\n"
"Різні версії завантажувача Grub можуть бути несумісними одна з одною та увімкнення їх усіх не являється можливим. Rufus намагатиметься знайти потрібну версію настановного файла завантажувача Grub ('core.img'), що відповідає версії завантажувача вашого образу:\n"
"- Оберіть 'Так', щоб скачати завантажувальний файл з Інтернета\n"
"- Оберіть 'Ні', щоб використовувати версію за замовчуванням із Rufus\n"
"- Оберіть 'Відмінити', щоб відмінити операцію\n"
"- Виберіть 'Так', щоб скачати завантажувальний файл з інтернету\n"
"- Виберіть 'Ні', щоб використовувати версію за замовчуванням із Rufus\n"
"- Виберіть 'Відмінити', щоб відмінити операцію\n"
"\n"
"Примітка: Файл буде завантажено в поточний каталог додатку та буде використаний повторно наступного разу. Якщо потрібна версія настановного файла не буде знайдена в інтернеті, то буде використовуватися версія за замовчуванням."
@ -811,7 +809,7 @@ msgstr "Стандартне встановлення Windows"
#. http://en.wikipedia.org/wiki/Windows_To_Go in your language.
#. Otherwise, you may add a parenthesis eg. "Windows To Go (<hint at what it does>)"
msgid "Windows To Go"
msgstr "Windows To Go"
msgstr ""
#. • MSG_119
msgid "advanced drive properties"
@ -1043,16 +1041,8 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "Дозволити відображення міток з міжнародними символами та задати значок пристрою (створюється autorun.inf)"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "Використовувати MBR, що дозволяє вибрати завантажувач та може замаскувати ідентифікатор пристрою в BIOS"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"Спробуйте замаскувати перший завантажувальний USB-накопичувач (зазвичай 0x80) як інший диск.\n"
"Це необхідно тільки якщо ви встановлюєте Windows XP та маєте більше ніж один диск."
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "Встановити завантажувач UEFI, який буде виконувати перевірку MD5Sum"
#. • MSG_169
msgid ""
@ -1095,7 +1085,7 @@ msgstr "Версія %d.%d (Збірка %d)"
#. • MSG_176
msgid "English translation: Pete Batard <mailto:pete@akeo.ie>"
msgstr "Українською переклав:\\line• Великожон Костянтин <mailto:mind.converter@gmail.com>"
msgstr "Українською переклав: Великожон Костянтин <mailto:mind.converter@gmail.com>"
#. • MSG_177
msgid "Report bugs or request enhancements at:"
@ -1566,7 +1556,7 @@ msgstr ""
"Rufus рекомендує використовувати %s режим для повного доступу до диска після запису.\n"
"Однак, якщо ви зіштовхнетесь з проблемами під час завантаження ви можете ще раз спробувати записати образ в %s режимі.\n"
"\n"
"Будь ласка, оберіть режим, який ви хочете використовувати для запису обраного образа:"
"Будь ласка, виберіть режим, який ви хочете використовувати для запису обраного образа:"
#. • MSG_276
#.
@ -1594,7 +1584,7 @@ msgstr "Диск чи ISO-образ"
#. • MSG_281
msgid "%s (Please select)"
msgstr "%s (Будь ласка, оберіть)"
msgstr "%s (Будь ласка, виберіть)"
#. • MSG_282
msgid "Exclusive USB drive locking"
@ -1686,7 +1676,7 @@ msgid ""
msgstr ""
"Розмір вибраного файла ISO не співпадає з оголошеним розміром: %s даних відсутні!\n"
"\n"
"Якщо ви завантажили цей файл з Інтернету, вам слід завантажити нову копію файла або перевірити співпадіння контрольних сум MD5 чи SHA з офіційним файлом.\n"
"Якщо ви завантажили цей файл з інтернету, вам слід завантажити нову копію файла або перевірити співпадіння контрольних сум MD5 чи SHA з офіційним файлом.\n"
"\n"
"Пам'ятайте, що ви можете порівняти MD5 чи SHA в Rufus, натиснувши кнопку (✓)."
@ -1853,6 +1843,82 @@ msgstr "Вимкнути автоматичне шифрування прист
msgid "Persistent log"
msgstr "Постійний журнал"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"Необхідно завантажити додатковий файл ('diskcopy.dll') з сайту Microsoft для встановлення MS-DOS:\n"
"- Виберіть 'Так' для з'єднання з інтернетом та його завантаження\n"
"- Виберіть 'Ні' для скасування операції\n"
"\n"
"Примітка: файл буде завантажено в каталог додатку та повторно використано за наявності."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "Виявлено відкликаний завантажувач UEFI"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Rufus виявив, що вибраний ISO містить відкликаний завантажувач UEFI, що буде створювати %s, коли в оновленій системі UEFI буде ввімкнено безпечне завантаження.\n"
"\n"
"- Якщо ви отримали цей образ з неперевіреного джерела, Вам слід розглянути можливість того, що він може містити зловмисне ПЗ і уникнути завантаження з нього.\n"
"- Якщо ви отримали цей образ з довіреного джерела, Вам слід спробувати знайти більш актуальну версію, що не буде провокувати це попередження."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "вікно \"Security Violation\""
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "вікно Windows Recovery Screen (BSOD) з '%s'"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "Образ VHDX зі стисненням"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "Образ VHD без стиснення"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "Образ Full Flash Update"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"Для використання даного функціоналу необхідно завантажити деякі додаткові дані з сайту Microsoft:\n"
"- Виберіть 'Так' для з'єднання з інтернетом та завантаження даних\n"
"- Виберіть 'Ні' для скасування операції"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "Обмежити Windows до S-Mode (НЕСУМІСНО з обходом облікового запису)"
#. • MSG_347
msgid "Expert Mode"
msgstr "Просунутий режим"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "Видобування архівованих файлів: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "Використовувати Rufus MBR"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-04-16 06:07+0700\n"
"PO-Revision-Date: 2023-04-17 13:37+0100\n"
"POT-Creation-Date: 2024-04-26 02:45+0900\n"
"PO-Revision-Date: 2024-04-26 03:13+0900\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: vi_VN\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Vietnamese (Tiếng Việt)\n"
"X-Rufus-LCID: 0x042A\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.2\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "Danh sách ổ cứng USB"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "Thêm khắc phục cho BIOS cũ (phân vùng, sắp xếp...khác)"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "Dùng MBR của Rufus với ID BIOS"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "Bật xác thực phương tiện UEFI tại thời điểm chạy"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -1043,16 +1041,8 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "Chọn mục này để cho phép hiện tên ổ đĩa toàn hệ thống và đặt biểu tượng thiết bị (khởi tạo autorun.inf)"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "Cài đặt một MBR cho phép lựa chọn khởi động và có thể giả ID ổ đĩa USB BIOS"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"Thử giả ổ đĩa USB khởi động đầu tiên (thường là 0x80) như một đĩa khác.\n"
"Điều này chỉ cần thiết nếu bạn cài đặt Windows XP và có nhiều hơn một đĩa."
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "Cài đặt bộ khởi động UEFI, cùng với việc tiến trình xác thực MD5Sum của phương tiện"
#. • MSG_169
msgid ""
@ -1853,6 +1843,82 @@ msgstr "Vô hiệu tự động mã hoá thiết bị BitLocker"
msgid "Persistent log"
msgstr "Nhật ký"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"Một tệp tin bổ sung ('diskcopy.dll') phải được tải về từ Microsoft để cài đặt MS-DOS:\n"
"- Chọn 'Có' để kết nối tới Internet và tải nó xuống\n"
"- Chọn 'Không' để huỷ tiến trình\n"
"\n"
"Ghi chú: Tệp tin sẽ được tải xuống tại đường dẫn của phần mềm và sẽ được tự động tái sử dụng nếu có sẵn."
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "Đã phát hiện bộ khởi động UEFI bị thu hồi"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Rufus đã phát hiện ra rằng tệp ISO bạn đã chọn có chứa một bộ khởi động UEFI đã bị thu hồi và nó sẽ tạo ra %s, khi Secure Boot được kích hoạt trên một hệ thống UEFI được cập nhật đầy đủ và mới nhất.\n"
"\n"
"- Nếu bạn sở hữu tệp ISO này từ một nguồn không đáng tin cậy, bạn nên cân nhắc khả năng có thể chứa mã độc UEFI và tránh khởi động từ nó.\n"
"- Nếu bạn sở hữu từ một nguồn uy tín, bạn nên thử tìm một bản mới hơn, theo đó cảnh báo này sẽ không hiện ra."
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "một màn hình \"Vi phạm Bảo mật\""
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "một Màn hình Khôi phục Windows (BSOD) với '%s'"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "Tệp VHDX đã nén"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "Tệp VHD chưa nén"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "Ghi Đầy đủ Tệp Cập nhật"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"Một vài dữ lieu phải được tải xuống từ Microsoft để sử dụng tính năng này:\n"
"- Chọn 'Có' để kết nối tới Internet và tải xuống nó\n"
"- Chọn 'Không' để huỷ tiến trình"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "Giới hạn Windows vào S-Mode (KHÔNG TƯƠNG THÍCH với việc bỏ qua tài khoản trực tuyến)"
#. • MSG_347
msgid "Expert Mode"
msgstr "Chế độ Chuyên nghiệp"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "Đang giải nén tệp lưu trữ: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "Sử dụng Rufus MBR"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: 3.22\n"
"Project-Id-Version: 4.5\n"
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
"POT-Creation-Date: 2023-02-19 23:07+0800\n"
"PO-Revision-Date: 2023-02-20 13:37+0000\n"
"POT-Creation-Date: 2024-04-28 10:38+0800\n"
"PO-Revision-Date: 2024-04-28 10:59+0800\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: zh_CN\n"
@ -13,7 +13,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Rufus-LanguageName: Chinese Simplified (简体中文)\n"
"X-Rufus-LCID: 0x0804, 0x1004\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.2\n"
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
msgid "Drive Properties"
@ -54,13 +54,11 @@ msgstr "显示 USB 外置硬盘"
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
msgstr "添加对旧 BIOS 修正(额外的分区,校准等)"
#. • IDD_DIALOG → IDC_RUFUS_MBR
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
#.
#. 'MBR': See http://en.wikipedia.org/wiki/Master_boot_record
#. Rufus can install it's own custom MBR (the Rufus MBR), which also allows users to
#. specify a custom disk ID for the BIOS. The tooltip for this control is MSG_167.
msgid "Use Rufus MBR with BIOS ID"
msgstr "使用 Rufus MBR 配合 BIOS ID"
#. It is acceptable to drop the "runtime" if you are running out of space
msgid "Enable runtime UEFI media validation"
msgstr "启用运行时 UEFI 介质验证"
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
msgid "Format Options"
@ -1047,16 +1045,8 @@ msgid "Check this box to allow the display of international labels and set a dev
msgstr "勾选本框允许国际卷标的显示并设置一个设备图标(创建一个 autorun.inf)"
#. • MSG_167
msgid "Install an MBR that allows boot selection and can masquerade the BIOS USB drive ID"
msgstr "安装一个可以引导选择内容并可以伪装 BIOS USB 盘 ID 的 MBR"
#. • MSG_168
msgid ""
"Try to masquerade first bootable USB drive (usually 0x80) as a different disk.\n"
"This should only be necessary if you install Windows XP and have more than one disk."
msgstr ""
"尝试将首个可引导的 USB 驱动器 (通常为 0x80) 伪装为不同的磁盘。\n"
"只有当您安装 Windows XP并拥有多个磁盘时才需要此选项。"
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
msgstr "安装 UEFI 引导加载器,该加载器将对介质进行 MD5 校验"
#. • MSG_169
msgid ""
@ -1859,6 +1849,82 @@ msgstr "禁用 BitLocker 自动设备加密"
msgid "Persistent log"
msgstr "持久化日志"
#. • MSG_337
msgid ""
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation\n"
"\n"
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
msgstr ""
"必须从微软下载额外的文件(\"diskcopy.dll\"),以安装 MS-DOS\n"
"- 选择 '是' 连接网络并下载这些文件\n"
"- 选择 '否' 取消此项操作\n"
"\n"
"注意:文件将会被下载到当前应用程序目录,如果存在则会自动选用。"
#. • MSG_338
msgid "Revoked UEFI bootloader detected"
msgstr "检测到被吊销的 UEFI 引导加载器"
#. • MSG_339
msgid ""
"Rufus detected that the ISO you have selected contains a UEFI bootloader that has been revoked and that will produce %s, when Secure Boot is enabled on a fully up to date UEFI system.\n"
"\n"
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
msgstr ""
"Rufus 检测到您选择的 ISO 包含一个已被吊销的 UEFI 引导加载器,当在最新的 UEFI 系统上启用安全启动时,将产生%s。\n"
"\n"
"- 如果您从非可信来源获取此 ISO 镜像,则应考虑其中可能包含 UEFI 恶意软件,应当避免启动此镜像。\n"
"- 如果是从可信来源获取的,则应尝试查找不会产生此警告的最新版本。"
#. • MSG_340
msgid "a \"Security Violation\" screen"
msgstr "一个“安全违规”界面"
#. • MSG_341
msgid "a Windows Recovery Screen (BSOD) with '%s'"
msgstr "一个包含 '%s' 的蓝屏界面"
#. • MSG_342
msgid "Compressed VHDX Image"
msgstr "压缩的 VHDX 镜像"
#. • MSG_343
msgid "Uncompressed VHD Image"
msgstr "未压缩的 VHD 镜像"
#. • MSG_344
msgid "Full Flash Update Image"
msgstr "完整闪存更新镜像"
#. • MSG_345
msgid ""
"Some additional data must be downloaded from Microsoft to use this functionality:\n"
"- Select 'Yes' to connect to the Internet and download it\n"
"- Select 'No' to cancel the operation"
msgstr ""
"使用此功能需要从微软下载一些额外数据:\n"
"- 选择 '是' 连接网络并下载这些文件\n"
"- 选择 '否' 取消此项操作"
#. • MSG_346
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
msgstr "将 Windows 限制为 S 模式(与绕过在线账户功能不兼容)"
#. • MSG_347
msgid "Expert Mode"
msgstr "专家模式"
#. • MSG_348
msgid "Extracting archive files: %s"
msgstr "正在解压文件: %s"
#. • MSG_349
msgid "Use Rufus MBR"
msgstr "使用 Rufus MBR"
#. • MSG_900
#.
#. The following messages are for the Windows Store listing only and are not used by the application
@ -1902,7 +1968,7 @@ msgstr "将 U 盘、存储卡或虚拟驱动器格式化为 FAT/FAT32/NTFS/UDF/e
#. • MSG_911
msgid "Create FreeDOS bootable USB drives"
msgstr "创建 FreeDOS 可启动驱动器"
msgstr "创建 FreeDOS 可启动驱动器"
#. • MSG_912
msgid "Create bootable drives from bootable ISOs (Windows, Linux, etc.)"

View File

@ -1802,43 +1802,43 @@ msgstr "無法開啟或讀取 '%s'"
#. • MSG_325
msgid "Applying Windows customization: %s"
msgstr "正在應用 Windows 自定義設置%s"
msgstr "正在套用 Windows 客製化設定%s"
#. • MSG_326
msgid "Applying user options..."
msgstr "正在應用用戶設置..."
msgstr "正在套用使用者設定..."
#. • MSG_327
msgid "Windows User Experience"
msgstr "Windows 用戶體驗"
msgstr "Windows 使用者體驗"
#. • MSG_328
msgid "Customize Windows installation?"
msgstr "自定義 Windows 安裝?"
msgstr "客製化 Windows 安裝?"
#. • MSG_329
msgid "Remove requirement for 4GB+ RAM, Secure Boot and TPM 2.0"
msgstr "移除對 4GB+ 內存、安全引導和 TPM 2.0 的要求"
msgstr "移除對 4GB+ 記憶體、安全開機和 TPM 2.0 的要求"
#. • MSG_330
msgid "Remove requirement for an online Microsoft account"
msgstr "移除對登錄微軟賬戶的要求"
msgstr "將登入微軟帳號的要求移除"
#. • MSG_331
msgid "Disable data collection (Skip privacy questions)"
msgstr "關閉數據收集 (跳過隱私設置)"
msgstr "關閉資料收集 (跳過隱私設定)"
#. • MSG_332
msgid "Prevent Windows To Go from accessing internal disks"
msgstr "阻止 Windows To Go 訪問內部磁盤"
msgstr "防止 Windows To Go 存取內部磁碟"
#. • MSG_333
msgid "Create a local account with username:"
msgstr "創建一個使用此用戶名的本地賬號:"
msgstr "使用此使用者名建立一個本機帳戶:"
#. • MSG_334
msgid "Set regional options to the same values as this user's"
msgstr "使用當前用戶的區域設置"
msgstr "使用目前用戶的區域設定"
#. • MSG_335
msgid "Disable BitLocker automatic device encryption"
@ -1860,7 +1860,7 @@ msgstr "官方網站: %s"
#. • MSG_902
msgid "Source Code: %s"
msgstr "源碼: %s"
msgstr "源碼: %s"
#. • MSG_903
msgid "ChangeLog: %s"
@ -1887,52 +1887,52 @@ msgstr "啟動"
#.
#. This and subsequent messages will be listed in the 'Features' section of the Windows Store page
msgid "Format USB, flash card and virtual drives to FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3"
msgstr "將 U 盤、存儲卡或虛擬驅動器格式化為 FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3 格式"
msgstr "將隨身碟、記憶卡或虛擬光碟機格式化為 FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3 格式"
#. • MSG_911
msgid "Create FreeDOS bootable USB drives"
msgstr "創建 FreeDOS 可啟動驅動器"
msgstr "建立 FreeDOS 可啟隨身碟"
#. • MSG_912
msgid "Create bootable drives from bootable ISOs (Windows, Linux, etc.)"
msgstr "從可啟動 ISO 文件 (Windows 和 Linux 等) 創建可啟動驅動器"
msgstr "從可啟動 ISO 檔案 (Windows 和 Linux 等) 建立可啟動隨身碟"
#. • MSG_913
msgid "Create bootable drives from bootable disk images, including compressed ones"
msgstr "從可啟動硬盤鏡像 (包括壓縮鏡像) 創建可啟動驅動器"
msgstr "從可啟動硬碟映像檔 (包括壓縮映像檔) 建立可啟動隨身碟"
#. • MSG_914
msgid "Create BIOS or UEFI bootable drives, including UEFI bootable NTFS"
msgstr "創建 BIOS 或 UEFI 可啟動驅動器,包括 UEFI 可啟動的 NTFS 驅動器"
msgstr "建立 BIOS 或 UEFI 可啟動隨身碟,包括 UEFI 可啟動的 NTFS 隨身碟"
#. • MSG_915
msgid "Create 'Windows To Go' drives"
msgstr "創建 'Windows To Go' 驅動"
msgstr "建立 'Windows To Go' 隨身碟"
#. • MSG_916
msgid "Create Windows 11 installation drives for PCs that don't have TPM or Secure Boot"
msgstr "為沒有 TPM 或安全啟動功能的電腦創建 Windows 11 安裝驅動"
msgstr "為沒有 TPM 或安全開機功能的電腦建立 Windows 11 安裝隨身碟"
#. • MSG_917
msgid "Create persistent Linux partitions"
msgstr "創建持久 Linux 分區"
msgstr "建立持續性 Linux 磁區"
#. • MSG_918
msgid "Create VHD/DD images of the selected drive"
msgstr "為選中的驅動創建 VHD/DD 鏡像"
msgstr "為選中的磁碟機建立 VHD/DD 映像檔"
#. • MSG_919
msgid "Compute MD5, SHA-1, SHA-256 and SHA-512 checksums of the selected image"
msgstr "計算被選中鏡像的 MD5、SHA-1、SHA-256 和 SHA-512 校驗碼"
msgstr "計算被選中映像的 MD5、SHA-1、SHA-256 和 SHA-512 檢查碼"
#. • MSG_920
msgid "Perform bad blocks checks, including detection of \"fake\" flash drives"
msgstr "執行壞塊檢查包括對”假“USB 快閃磁碟機的檢測"
msgstr "執行壞軌檢查包括對”假“USB 快閃磁碟機的偵測"
#. • MSG_921
msgid "Download official Microsoft Windows retail ISOs"
msgstr "下載微軟官方 Windows 鏡像"
msgstr "下載微軟官方 Windows 映像檔"
#. • MSG_922
msgid "Download UEFI Shell ISOs"
msgstr "下載 UEFI Shell 鏡像"
msgstr "下載 UEFI Shell 映像檔"

View File

@ -1,7 +1,7 @@
/*
* Rufus: The Reliable USB Formatting Utility
* Poedit <-> rufus.loc conversion utility
* Copyright © 2018-2023 Pete Batard <pete@akeo.ie>
* Copyright © 2018-2024 Pete Batard <pete@akeo.ie>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -41,9 +41,9 @@ using System.Windows.Forms;
[assembly: AssemblyDescription("Poedit ↔ Rufus loc conversion utility")]
[assembly: AssemblyCompany("Akeo Consulting")]
[assembly: AssemblyProduct("Pollock")]
[assembly: AssemblyCopyright("Copyright © 2018-2023 Pete Batard <pete@akeo.ie>")]
[assembly: AssemblyCopyright("Copyright © 2018-2024 Pete Batard <pete@akeo.ie>")]
[assembly: AssemblyTrademark("GNU GPLv3")]
[assembly: AssemblyVersion("1.5.*")]
[assembly: AssemblyVersion("1.6.*")]
namespace pollock
{
@ -1244,9 +1244,9 @@ Retry:
if ((list.Count >= 2) && (index >= 0))
{
Process.Start($"mailto:pete@akeo.ie?subject=Rufus {list[index][0]} translation v{list[0][2]} update" +
$"&body=Hi Pete,%0D%0A%0D%0APlease find attached the latest {list[index][0]} translation." +
$"%0D%0A%0D%0A<PLEASE ATTACH '{app_dir}{po_file}' AND REMOVE THIS LINE>" +
Process.Start($"mailto:pete@akeo.ie?subject=Rufus%20{list[index][0]}%20translation%20v{list[0][2]}%20update" +
$"&body=Hi%20Pete,%0D%0A%0D%0APlease%20find%20attached%20the%20latest%20{list[index][0]}%20translation." +
$"%0D%0A%0D%0A<PLEASE%20ATTACH%20'{app_dir}{po_file}'%20AND%20REMOVE%20THIS%20LINE>" +
$"%0D%0A%0D%0ARegards,");
}
return;

File diff suppressed because it is too large Load Diff

BIN
res/md5/bootaa64.efi Normal file

Binary file not shown.

BIN
res/md5/bootarm.efi Normal file

Binary file not shown.

BIN
res/md5/bootia32.efi Normal file

Binary file not shown.

BIN
res/md5/bootriscv64.efi Normal file

Binary file not shown.

BIN
res/md5/bootx64.efi Normal file

Binary file not shown.

3
res/md5/readme.txt Normal file
View File

@ -0,0 +1,3 @@
This directory contains the uefi-md5sum bootloaders added by Rufus for media validation.
See https://github.com/pbatard/uefi-md5sum for details.

208
res/scripts/SspToBar.ps1 Normal file
View File

@ -0,0 +1,208 @@
#
# SspToBar.ps1 - SkuSiPolicy.p7b revoked PE256 hashes to C byte array converter
# Copyright © 2023 Pete Batard <pete@akeo.ie>
# Heavily derived from https://gist.github.com/mattifestation/92e545bf1ee5b68eeb71d254cec2f78e
# Copyright © 2016-2019 Matthew Graeber with contributions by James Forshaw
#
# License: BSD 3-Clause
#
# This script is generates the pe256ssp[] byte array from Rufus' db.h
#region Parameters
[cmdletbinding()]
param(
# (Optional) The path to the .p7b to process
[string]$BinaryFilePath = "SkuSiPolicy.p7b",
# (Optional) Output the straight values
[switch]$Raw = $false
)
#endregion
Add-Type -AssemblyName 'System.Security'
$BinPath = Resolve-Path $BinaryFilePath
$GuidLength = 0x10
$Pe256HashLength = 0x20
$HeaderLengthMax = 0x44
# Helper function to read strings from the binary
function Get-BinaryString {
[OutputType('String')]
param (
[Parameter(Mandatory)]
[IO.BinaryReader]
[ValidateNotNullOrEmpty()]
$BinaryReader
)
$StringLength = $BinaryReader.ReadUInt32()
if ($StringLength) {
$PaddingBytes = 4 - $StringLength % 4 -band 3
$StringBytes = $BinaryReader.ReadBytes($StringLength)
$null = $BinaryReader.ReadBytes($PaddingBytes)
[Text.Encoding]::Unicode.GetString($StringBytes)
}
$null = $BinaryReader.ReadInt32()
}
try {
$CIPolicyBytes = [IO.File]::ReadAllBytes($BinPath.Path)
try {
$ContentType = $null
try {
$ContentType = [Security.Cryptography.Pkcs.ContentInfo]::GetContentType($CIPolicyBytes)
} catch { }
# Check for PKCS#7 ASN.1 SignedData type
if ($ContentType -and $ContentType.Value -eq '1.2.840.113549.1.7.2') {
$Cms = New-Object System.Security.Cryptography.Pkcs.SignedCms
$Cms.Decode($CIPolicyBytes)
$CIPolicyBytes = $Cms.ContentInfo.Content
if ($CIPolicyBytes[0] -eq 4) {
$PolicySize = $CIPolicyBytes[1]
$BaseIndex = 2
if (($PolicySize -band 0x80) -eq 0x80) {
$SizeCount = $PolicySize -band 0x7F
$BaseIndex += $SizeCount
$PolicySize = 0
for ($i = 0; $i -lt $SizeCount; $i++) {
$PolicySize = $PolicySize -shl 8
$PolicySize = $PolicySize -bor $CIPolicyBytes[2 + $i]
}
}
$CIPolicyBytes = $CIPolicyBytes[$BaseIndex..($BaseIndex + $PolicySize - 1)]
}
}
} catch {
Write-Output $_
}
$MemoryStream = New-Object -TypeName IO.MemoryStream -ArgumentList @(,$CIPolicyBytes)
$BinaryReader = New-Object -TypeName System.IO.BinaryReader -ArgumentList $MemoryStream, ([Text.Encoding]::Unicode)
} catch {
throw $_
return
}
try {
$CIPolicyFormatVersion = $BinaryReader.ReadInt32()
Write-Verbose "Detected CI Policy Format Version $CIPolicyFormatVersion"
if ($CIPolicyFormatVersion -gt 7) {
Write-Warning "CI Policy Format may be unsupported..."
}
$PolicyTypeID = [Guid][Byte[]] $BinaryReader.ReadBytes($GuidLength)
switch ($PolicyTypeID.Guid) {
'a244370e-44c9-4c06-b551-f6016e563076' { Write-Verbose "Policy Type {$PolicyTypeID} => Enterprise Code Integrity Policy (SiPolicy.p7b or UpdateSiPolicy.p7b)" }
'2a5a0136-f09f-498e-99cc-51099011157c' { Write-Verbose "Policy Type {$PolicyTypeID} => Windows Revoke Code Integrity Policy (RvkSiPolicy.p7b or UpdateRvkSiPolicy.p7b)" }
'976d12c8-cb9f-4730-be52-54600843238e' { Write-Verbose "Policy Type {$PolicyTypeID} => SKU Code Integrity Policy (SkuSiPolicy.p7b or UpdateSkuSiPolicy.p7b)" }
'5951a96a-e0b5-4d3d-8fb8-3e5b61030784' { Write-Verbose "Policy Type {$PolicyTypeID} => Windows Lockdown Code Integrity Policy (WinSiPolicy.p7b or UpdateWinSiPolicy.p7b)" }
'4e61c68c-97f6-430b-9cd7-9b1004706770' { Write-Verbose "Policy Type {$PolicyTypeID} => Advanced Threat Protection Code Integrity Policy (ATPSiPolicy.p7b or UpdateATPSiPolicy.p7b)" }
'd2bda982-ccf6-4344-ac5b-0b44427b6816' { Write-Verbose "Policy Type {$PolicyTypeID} => Driver Code Integrity Policy (DriverSiPolicy.p7b or UpdateDriverSiPolicy.p7b)" }
default { Write-Warning "Policy Type {$PolicyTypeID} => Unknown Policy Type" }
}
[Byte[]] $PlatformIDBytes = $BinaryReader.ReadBytes($GuidLength)
$PlatformID = [Guid] $PlatformIDBytes
Write-Verbose "PlatformID: {$PlatformID}"
$OptionFlags = $BinaryReader.ReadInt32()
Write-Verbose "Policy Option Flags: 0x$($OptionFlags.ToString('X8'))"
if ($OptionFlags -band ([Int32]::MinValue) -ne [Int32]::MinValue) {
throw "Invalid Policy Option Flags"
return
}
if (($OptionFlags -band 0x40000000) -eq 0x40000000) {
Write-Warning 'Policy Option Flags indicate that the CI Policy was built from supplemental policies.'
}
$EKURuleEntryCount = $BinaryReader.ReadInt32()
Write-Verbose "$EKURuleEntryCount EKU Rule(s)"
$FileRuleEntryCount = $BinaryReader.ReadInt32()
Write-Verbose "$FileRuleEntryCount File Rule(s)"
$SignerRuleEntryCount = $BinaryReader.ReadInt32()
Write-Verbose "$SignerRuleEntryCount Signer Rule(s)"
$SignerScenarioEntryCount = $BinaryReader.ReadInt32()
Write-Verbose "$SignerScenarioEntryCount Signer Scenario(s)"
$Revis = $BinaryReader.ReadUInt16()
$Build = $BinaryReader.ReadUInt16()
$Minor = $BinaryReader.ReadUInt16()
$Major = $BinaryReader.ReadUInt16()
Write-Verbose "Version: $Major.$Minor.$Build.$Revis"
$HeaderLength = $BinaryReader.ReadInt32()
if ($HeaderLength -ne ($HeaderLengthMax - 4)) {
Write-Warning "$BinPath has an invalid header footer: 0x$($HeaderLength.ToString('x8'))"
}
if ($EKURuleEntryCount) {
Write-Verbose "Skipping EKU Rules..."
for ($i = 0; $i -lt $EKURuleEntryCount; $i++) {
$EkuValueLen = $BinaryReader.ReadUInt32()
$PaddingBytes = 4 - $EkuValueLen % 4 -band 3
$null = $BinaryReader.ReadBytes($EkuValueLen)
$null = $BinaryReader.ReadBytes($PaddingBytes)
}
}
if ($FileRuleEntryCount) {
Write-Verbose "Processing File Rules..."
$HashArray = New-Object System.Collections.ArrayList
for ($i = 0; $i -lt $FileRuleEntryCount; $i++) {
$FileRuleTypeValue = $BinaryReader.ReadInt32()
$FileName = Get-BinaryString -BinaryReader $BinaryReader
$Revis = $BinaryReader.ReadUInt16()
$Build = $BinaryReader.ReadUInt16()
$Minor = $BinaryReader.ReadUInt16()
$Major = $BinaryReader.ReadUInt16()
$HashLen = $BinaryReader.ReadUInt32()
if ($HashLen) {
$PaddingBytes = 4 - $HashLen % 4 -band 3
$HashBytes = $BinaryReader.ReadBytes($HashLen)
# We are only interested in the 'DENY' type (0) for PE256 hashes
if (($FileRuleTypeValue -eq 0) -and ($HashLen -eq $Pe256HashLength)) {
$HashString = ($HashBytes | ForEach-Object ToString x2) -join ''
$HashArray.Add($HashString) | Out-Null
}
$null = $BinaryReader.ReadBytes($PaddingBytes)
}
}
# Sort the array and remove duplicates
$HashArray.Sort()
$HashArray = $HashArray | Select-Object -Unique
foreach ($HashStr in $HashArray) {
if ($Raw) {
Write-Output $HashStr
} else {
$HashChars = $HashStr.ToCharArray()
$Line = "`t"
for ($i = 0; $i -lt $Pe256HashLength; $i++) {
$Line += "0x" + $HashChars[2 * $i] + $HashChars[2 * $i + 1] + ", "
}
Write-Output $Line
}
}
}
} catch {
$BinaryReader.Close()
$MemoryStream.Close()
throw $_
return
}

View File

@ -7,7 +7,7 @@ This image, which can be mounted as a FAT file system or opened in 7-zip,
contains the following data:
o Secure Boot signed NTFS UEFI drivers, derived from ntfs-3g [1].
These drivers are the exact same as the read-only binaries from release 1.6,
These drivers are the exact same as the read-only binaries from release 1.7,
except for the addition of Microsoft's Secure Boot signature.
Note that, per Microsoft's current Secure Boot signing policies, the 32-bit
ARM driver (ntfs_arm.efi) is not Secure Boot signed.
@ -17,7 +17,7 @@ o Non Secure Boot signed exFAT UEFI drivers from EfiFs [2].
because they are licensed under GPLv3, cannot be Secure Boot signed.
o Secure Boot signed UEFI:NTFS bootloader binaries [3].
These drivers are the exact same as the binaries from release 2.2, except for
These drivers are the exact same as the binaries from release 2.3, except for
the addition of Microsoft's Secure Boot signature.
Note that, per Microsoft's current Secure Boot signing policies, the 32-bit
ARM bootloader (bootarm.efi) is not Secure Boot signed.

Binary file not shown.

View File

@ -1,8 +1,11 @@
SUBDIRS = ../.mingw bled ext2fs ms-sys syslinux/libfat syslinux/libinstaller syslinux/win libcdio/iso9660 libcdio/udf libcdio/driver ../res/loc
# As far as I can tell, the following libraries are *not* vulnerable to side-loading, so we link using their regular version:
NONVULNERABLE_LIBS = -lsetupapi -lole32 -lgdi32 -lshlwapi -lcrypt32 -lcomdlg32 -lcomctl32 -luuid
NONVULNERABLE_LIBS = -lsetupapi -lole32 -lgdi32 -lshlwapi -lcrypt32 -lcomctl32 -luuid
# The following libraries are vulnerable (or have an unknown vulnerability status), so we link using our delay-loaded replacement:
VULNERABLE_LIBS = -ldwmapi-delaylib -lvirtdisk-delaylib -lwintrust-delaylib
# Ideally there would also be virtdisk and wininet as delaylib's below, but the MinGW folks haven't quite sorted out delay-loading
# for x86_32 so as soon as you try to call APIs from these, the application will crash!
# See https://github.com/pbatard/rufus/issues/1877#issuecomment-1109683039 as well as https://github.com/pbatard/rufus/issues/2272
VULNERABLE_LIBS = -ldwmapi-delaylib -lversion-delaylib -lwintrust-delaylib
noinst_PROGRAMS = rufus
@ -14,7 +17,7 @@ AM_V_WINDRES = $(AM_V_WINDRES_$(V))
%_rc.o: %.rc ../res/loc/embedded.loc
$(AM_V_WINDRES) $(AM_RCFLAGS) -i $< -o $@
rufus_SOURCES = badblocks.c checksum.c cpu.c dev.c dos.c dos_locale.c drive.c format.c format_ext.c format_fat32.c icon.c iso.c \
rufus_SOURCES = badblocks.c cpu.c dev.c dos.c dos_locale.c drive.c format.c format_ext.c format_fat32.c hash.c icon.c iso.c \
localization.c net.c parser.c pki.c process.c re.c rufus.c smart.c stdfn.c stdio.c stdlg.c syslinux.c ui.c vhd.c wue.c
rufus_CFLAGS = -I$(srcdir)/ms-sys/inc -I$(srcdir)/syslinux/libfat -I$(srcdir)/syslinux/libinstaller -I$(srcdir)/syslinux/win -I$(srcdir)/libcdio $(AM_CFLAGS) \
-DEXT2_FLAT_INCLUDES=0 -DSOLUTION=rufus

View File

@ -87,13 +87,14 @@ mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
PROGRAMS = $(noinst_PROGRAMS)
am_rufus_OBJECTS = rufus-badblocks.$(OBJEXT) rufus-checksum.$(OBJEXT) \
rufus-cpu.$(OBJEXT) rufus-dev.$(OBJEXT) rufus-dos.$(OBJEXT) \
am_rufus_OBJECTS = rufus-badblocks.$(OBJEXT) rufus-cpu.$(OBJEXT) \
rufus-dev.$(OBJEXT) rufus-dos.$(OBJEXT) \
rufus-dos_locale.$(OBJEXT) rufus-drive.$(OBJEXT) \
rufus-format.$(OBJEXT) rufus-format_ext.$(OBJEXT) \
rufus-format_fat32.$(OBJEXT) rufus-icon.$(OBJEXT) \
rufus-iso.$(OBJEXT) rufus-localization.$(OBJEXT) \
rufus-net.$(OBJEXT) rufus-parser.$(OBJEXT) rufus-pki.$(OBJEXT) \
rufus-format_fat32.$(OBJEXT) rufus-hash.$(OBJEXT) \
rufus-icon.$(OBJEXT) rufus-iso.$(OBJEXT) \
rufus-localization.$(OBJEXT) rufus-net.$(OBJEXT) \
rufus-parser.$(OBJEXT) rufus-pki.$(OBJEXT) \
rufus-process.$(OBJEXT) rufus-re.$(OBJEXT) \
rufus-rufus.$(OBJEXT) rufus-smart.$(OBJEXT) \
rufus-stdfn.$(OBJEXT) rufus-stdio.$(OBJEXT) \
@ -274,14 +275,17 @@ top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
SUBDIRS = ../.mingw bled ext2fs ms-sys syslinux/libfat syslinux/libinstaller syslinux/win libcdio/iso9660 libcdio/udf libcdio/driver ../res/loc
# As far as I can tell, the following libraries are *not* vulnerable to side-loading, so we link using their regular version:
NONVULNERABLE_LIBS = -lsetupapi -lole32 -lgdi32 -lshlwapi -lcrypt32 -lcomdlg32 -lcomctl32 -luuid
NONVULNERABLE_LIBS = -lsetupapi -lole32 -lgdi32 -lshlwapi -lcrypt32 -lcomctl32 -luuid
# The following libraries are vulnerable (or have an unknown vulnerability status), so we link using our delay-loaded replacement:
VULNERABLE_LIBS = -ldwmapi-delaylib -lvirtdisk-delaylib -lwintrust-delaylib
# Ideally there would also be virtdisk and wininet as delaylib's below, but the MinGW folks haven't quite sorted out delay-loading
# for x86_32 so as soon as you try to call APIs from these, the application will crash!
# See https://github.com/pbatard/rufus/issues/1877#issuecomment-1109683039 as well as https://github.com/pbatard/rufus/issues/2272
VULNERABLE_LIBS = -ldwmapi-delaylib -lversion-delaylib -lwintrust-delaylib
AM_V_WINDRES_0 = @echo " RC $@";$(WINDRES)
AM_V_WINDRES_1 = $(WINDRES)
AM_V_WINDRES_ = $(AM_V_WINDRES_$(AM_DEFAULT_VERBOSITY))
AM_V_WINDRES = $(AM_V_WINDRES_$(V))
rufus_SOURCES = badblocks.c checksum.c cpu.c dev.c dos.c dos_locale.c drive.c format.c format_ext.c format_fat32.c icon.c iso.c \
rufus_SOURCES = badblocks.c cpu.c dev.c dos.c dos_locale.c drive.c format.c format_ext.c format_fat32.c hash.c icon.c iso.c \
localization.c net.c parser.c pki.c process.c re.c rufus.c smart.c stdfn.c stdio.c stdlg.c syslinux.c ui.c vhd.c wue.c
rufus_CFLAGS = -I$(srcdir)/ms-sys/inc -I$(srcdir)/syslinux/libfat -I$(srcdir)/syslinux/libinstaller -I$(srcdir)/syslinux/win -I$(srcdir)/libcdio $(AM_CFLAGS) \
@ -351,12 +355,6 @@ rufus-badblocks.o: badblocks.c
rufus-badblocks.obj: badblocks.c
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-badblocks.obj `if test -f 'badblocks.c'; then $(CYGPATH_W) 'badblocks.c'; else $(CYGPATH_W) '$(srcdir)/badblocks.c'; fi`
rufus-checksum.o: checksum.c
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-checksum.o `test -f 'checksum.c' || echo '$(srcdir)/'`checksum.c
rufus-checksum.obj: checksum.c
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-checksum.obj `if test -f 'checksum.c'; then $(CYGPATH_W) 'checksum.c'; else $(CYGPATH_W) '$(srcdir)/checksum.c'; fi`
rufus-cpu.o: cpu.c
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-cpu.o `test -f 'cpu.c' || echo '$(srcdir)/'`cpu.c
@ -405,6 +403,12 @@ rufus-format_fat32.o: format_fat32.c
rufus-format_fat32.obj: format_fat32.c
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-format_fat32.obj `if test -f 'format_fat32.c'; then $(CYGPATH_W) 'format_fat32.c'; else $(CYGPATH_W) '$(srcdir)/format_fat32.c'; fi`
rufus-hash.o: hash.c
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-hash.o `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
rufus-hash.obj: hash.c
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-hash.obj `if test -f 'hash.c'; then $(CYGPATH_W) 'hash.c'; else $(CYGPATH_W) '$(srcdir)/hash.c'; fi`
rufus-icon.o: icon.c
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-icon.o `test -f 'icon.c' || echo '$(srcdir)/'`icon.c

View File

@ -4,7 +4,7 @@
* Copyright 1992-1994 Remy Card <card@masi.ibp.fr>
* Copyright 1995-1999 Theodore Ts'o
* Copyright 1999 David Beattie
* Copyright 2011-2023 Pete Batard <pete@akeo.ie>
* Copyright 2011-2024 Pete Batard <pete@akeo.ie>
*
* This file is based on the minix file system programs fsck and mkfs
* written and copyrighted by Linus Torvalds <Linus.Torvalds@cs.helsinki.fi>
@ -318,7 +318,7 @@ static void CALLBACK alarm_intr(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dw
{
if (!num_blocks)
return;
if (FormatStatus) {
if (ErrorStatus) {
uprintf("%sInterrupting at block %" PRIu64 "\n", bb_prefix,
(unsigned long long) currently_testing);
cancel_ops = -1;

View File

@ -7,7 +7,7 @@
*
* Copyright 1995, 1996, 1997, 1998, 1999 by Theodore Ts'o
* Copyright 1999 by David Beattie
* Copyright 2011-2018 by Pete Batard
* Copyright 2011-2024 by Pete Batard
*
* This file is based on the minix file system programs fsck and mkfs
* written and copyrighted by Linus Torvalds <Linus.Torvalds@cs.helsinki.fi>
@ -28,12 +28,11 @@ typedef struct bb_struct_u64_iterate *bb_badblocks_iterate;
typedef struct bb_struct_u64_list *bb_u64_list;
typedef struct bb_struct_u64_iterate *bb_u64_iterate;
#define BB_ET_NO_MEMORY (ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_NOT_ENOUGH_MEMORY)
#define BB_ET_MAGIC_BADBLOCKS_LIST (ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_OBJECT_IN_LIST)
#define BB_ET_MAGIC_BADBLOCKS_ITERATE (ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_INVALID_BLOCK)
#define BB_ET_NO_MEMORY RUFUS_ERROR(ERROR_NOT_ENOUGH_MEMORY)
#define BB_ET_MAGIC_BADBLOCKS_LIST RUFUS_ERROR(ERROR_OBJECT_IN_LIST)
#define BB_ET_MAGIC_BADBLOCKS_ITERATE RUFUS_ERROR(ERROR_INVALID_BLOCK)
#define BB_CHECK_MAGIC(struct, code) \
if ((struct)->magic != (code)) return (code)
#define BB_CHECK_MAGIC(struct, code) if ((struct)->magic != (code)) return (code)
#define BB_BAD_BLOCKS_THRESHOLD 256
#define BB_BLOCKS_AT_ONCE 64
#define BB_SYS_PAGE_SIZE 4096

View File

@ -261,6 +261,8 @@ static inline int transformer_switch_file(transformer_state_t* xstate)
xstate->dst_fd = -1;
}
_snprintf_s(dst, sizeof(dst), _TRUNCATE, "%s/%s", xstate->dst_dir, xstate->dst_name);
free(xstate->dst_name);
xstate->dst_name = NULL;
for (i = 0; i < strlen(dst); i++) {
if (dst[i] == '/')
dst[i] = '\\';

View File

@ -1,7 +1,7 @@
/*
* Bled (Base Library for Easy Decompression)
*
* Copyright © 2014-2020 Pete Batard <pete@akeo.ie>
* Copyright © 2014-2023 Pete Batard <pete@akeo.ie>
*
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
*/
@ -31,6 +31,7 @@ jmp_buf bb_error_jmp;
char* bb_virtual_buf = NULL;
size_t bb_virtual_len = 0, bb_virtual_pos = 0;
int bb_virtual_fd = -1;
uint32_t BB_BUFSIZE = 0x10000;
static long long int unpack_none(transformer_state_t *xstate)
{
@ -54,7 +55,7 @@ unpacker_t unpacker[BLED_COMPRESSION_MAX] = {
int64_t bled_uncompress(const char* src, const char* dst, int type)
{
transformer_state_t xstate;
int64_t ret;
int64_t ret = -1;
if (!bled_initialized) {
bb_error_msg("The library has not been initialized");
@ -85,17 +86,16 @@ int64_t bled_uncompress(const char* src, const char* dst, int type)
if (setjmp(bb_error_jmp))
goto err;
ret = unpacker[type](&xstate);
_close(xstate.src_fd);
_close(xstate.dst_fd);
return ret;
err:
free(xstate.dst_name);
if (xstate.src_fd > 0)
_close(xstate.src_fd);
if (xstate.dst_fd > 0)
_close(xstate.dst_fd);
return -1;
return ret;
}
/* Uncompress using Windows handles */
@ -132,6 +132,7 @@ int64_t bled_uncompress_with_handles(HANDLE hSrc, HANDLE hDst, int type)
if (setjmp(bb_error_jmp))
return -1;
return unpacker[type](&xstate);
}
@ -139,7 +140,7 @@ int64_t bled_uncompress_with_handles(HANDLE hSrc, HANDLE hDst, int type)
int64_t bled_uncompress_to_buffer(const char* src, char* buf, size_t size, int type)
{
transformer_state_t xstate;
int64_t ret;
int64_t ret = -1;
if (!bled_initialized) {
bb_error_msg("The library has not been initialized");
@ -177,22 +178,21 @@ int64_t bled_uncompress_to_buffer(const char* src, char* buf, size_t size, int t
if (setjmp(bb_error_jmp))
goto err;
ret = unpacker[type](&xstate);
if (src[0] != 0)
_close(xstate.src_fd);
return ret;
err:
if (xstate.src_fd > 0)
free(xstate.dst_name);
if ((src[0] != 0) && (xstate.src_fd > 0))
_close(xstate.src_fd);
return -1;
return ret;
}
/* Uncompress all files from archive 'src', compressed using 'type', to destination dir 'dir' */
int64_t bled_uncompress_to_dir(const char* src, const char* dir, int type)
{
transformer_state_t xstate;
int64_t ret;
int64_t ret = -1;
if (!bled_initialized) {
bb_error_msg("The library has not been initialized");
@ -220,18 +220,16 @@ int64_t bled_uncompress_to_dir(const char* src, const char* dir, int type)
if (setjmp(bb_error_jmp))
goto err;
ret = unpacker[type](&xstate);
_close(xstate.src_fd);
if (xstate.dst_fd > 0)
_close(xstate.dst_fd);
return ret;
err:
free(xstate.dst_name);
if (xstate.src_fd > 0)
_close(xstate.src_fd);
if (xstate.dst_fd > 0)
_close(xstate.dst_fd);
return -1;
return ret;
}
int64_t bled_uncompress_from_buffer_to_buffer(const char* src, const size_t src_len, char* dst, size_t dst_len, int type)
@ -268,7 +266,8 @@ int64_t bled_uncompress_from_buffer_to_buffer(const char* src, const size_t src_
}
/* Initialize the library.
* When the parameters are not NULL you can:
* When the parameters are not NULL or zero you can:
* - specify the buffer size to use (must be larger than 64KB and a power of two)
* - specify the printf-like function you want to use to output message
* void print_function(const char* format, ...);
* - specify the read/write functions you want to use;
@ -278,18 +277,25 @@ int64_t bled_uncompress_from_buffer_to_buffer(const char* src, const size_t src_
* void switch_function(const char* filename, const uint64_t filesize);
* - point to an unsigned long variable, to be used to cancel operations when set to non zero
*/
int bled_init(printf_t print_function, read_t read_function, write_t write_function,
int bled_init(uint32_t buffer_size, printf_t print_function, read_t read_function, write_t write_function,
progress_t progress_function, switch_t switch_function, unsigned long* cancel_request)
{
if (bled_initialized)
return -1;
bled_initialized = true;
BB_BUFSIZE = buffer_size;
/* buffer_size must be larger than 64 KB and a power of two */
if (buffer_size < 0x10000 || (buffer_size & (buffer_size - 1)) != 0) {
if (buffer_size != 0 && print_function != NULL)
print_function("bled_init: invalid buffer_size, defaulting to 64 KB");
BB_BUFSIZE = 0x10000;
}
bled_printf = print_function;
bled_read = read_function;
bled_write = write_function;
bled_progress = progress_function;
bled_switch = switch_function;
bled_cancel_request = cancel_request;
bled_initialized = true;
return 0;
}

View File

@ -50,7 +50,8 @@ int64_t bled_uncompress_to_dir(const char* src, const char* dir, int type);
int64_t bled_uncompress_from_buffer_to_buffer(const char* src, const size_t src_len, char* dst, size_t dst_len, int type);
/* Initialize the library.
* When the parameters are not NULL you can:
* When the parameters are not NULL or zero you can:
* - specify the buffer size to use (must be larger than 64KB and a power of two)
* - specify the printf-like function you want to use to output message
* void print_function(const char* format, ...);
* - specify the read/write functions you want to use;
@ -60,7 +61,7 @@ int64_t bled_uncompress_from_buffer_to_buffer(const char* src, const size_t src_
* void switch_function(const char* filename, const uint64_t filesize);
* - point to an unsigned long variable, to be used to cancel operations when set to non zero
*/
int bled_init(printf_t print_function, read_t read_function, write_t write_function,
int bled_init(uint32_t buffer_size, printf_t print_function, read_t read_function, write_t write_function,
progress_t progress_function, switch_t switch_function, unsigned long* cancel_request);
/* This call frees any resource used by the library */

View File

@ -42,7 +42,7 @@
#include "bb_archive.h"
#if 0
# define dbg(...) bb_error_msg(__VA_ARGS__)
# define dbg(...) bb_printf(__VA_ARGS__)
#else
# define dbg(...) ((void)0)
#endif

View File

@ -45,10 +45,11 @@ typedef struct huft_t {
} v;
} huft_t;
/* gunzip_window size--must be a power of two, and
* at least 32K for zip's deflate method */
#define GUNZIP_WSIZE BB_BUFSIZE
enum {
/* gunzip_window size--must be a power of two, and
* at least 32K for zip's deflate method */
GUNZIP_WSIZE = BB_BUFSIZE,
/* If BMAX needs to be larger than 16, then h and x[] should be ulg. */
BMAX = 16, /* maximum bit length of any code (16 for explode) */
N_MAX = 288, /* maximum number of codes in any set */
@ -1029,7 +1030,7 @@ inflate_unzip_internal(STATE_PARAM transformer_state_t *xstate)
error_msg = "corrupted data";
if (setjmp(error_jmp)) {
/* Error from deep inside zip machinery */
bb_simple_error_msg("corrupted data");
bb_simple_error_msg("%s", error_msg);
n = -1;
goto ret;
}
@ -1197,9 +1198,13 @@ static int check_header_gzip(STATE_PARAM transformer_state_t *xstate)
if (header.formatted.flags & 0x18) {
while (1) {
do {
/* None of our buffers should be larger than BB_BUFSIZE */
if (bytebuffer_offset > BB_BUFSIZE) {
bb_error_msg("buffer overflow");
return 0;
}
if (!top_up(PASS_STATE 1))
return 0;
// coverity[tainted_data]
} while (bytebuffer[bytebuffer_offset++] != 0);
if ((header.formatted.flags & 0x18) != 0x18)
break;
@ -1272,7 +1277,7 @@ unpack_gz_stream(transformer_state_t *xstate)
n = inflate_unzip_internal(PASS_STATE xstate);
if (n < 0) {
total = (n == -ENOSPC)?xstate->mem_output_size_max:n;
total = (n == -ENOSPC) ? xstate->mem_output_size_max : n;
goto ret;
}
total += n;

View File

@ -27,10 +27,10 @@
/* Default input buffer size */
#define IBUFSIZ BB_BUFSIZE
#define IBUFSIZ ((int)BB_BUFSIZE)
/* Default output buffer size */
#define OBUFSIZ BB_BUFSIZE
#define OBUFSIZ ((int)BB_BUFSIZE)
/* Defines for third byte of header */
#define BIT_MASK 0x1f /* Mask for 'number of compresssion bits' */

View File

@ -255,6 +255,11 @@ unpack_lzma_stream(transformer_state_t *xstate)
header.dict_size = SWAP_LE32(header.dict_size);
header.dst_size = SWAP_LE64(header.dst_size);
if (header.dict_size > 1024 * 1024 * 1024) {
bb_simple_error_msg("lzma dictionary size too large");
return -1;
}
if (header.dict_size == 0)
header.dict_size++;

View File

@ -1,31 +1,36 @@
/*
* unzip implementation for Bled/busybox
*
* Copyright © 2015-2020 Pete Batard <pete@akeo.ie>
* Copyright © 2015-2023 Pete Batard <pete@akeo.ie>
* Based on mini unzip implementation for busybox © Ed Clark
* Loosely based on original busybox unzip applet © Laurence Anderson.
*
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
*/
/* The following are not currently supported:
* - Store (uncompressed)
* - Zip64
*/
#include "libbb.h"
#include "bb_archive.h"
#if 0
# define dbg(...) bb_printf(__VA_ARGS__)
#else
# define dbg(...) ((void)0)
#endif
#define xread safe_read
enum {
#if BB_BIG_ENDIAN
ZIP_FILEHEADER_MAGIC = 0x504b0304,
ZIP_CDF_MAGIC = 0x504b0102, /* central directory's file header */
ZIP_CDE_MAGIC = 0x504b0506, /* "end of central directory" record */
ZIP_CDF_MAGIC = 0x504b0102, /* CDF item */
ZIP_CDE_MAGIC = 0x504b0506, /* End of CDF */
ZIP64_CDE_MAGIC = 0x504b0606, /* End of Zip64 CDF */
ZIP_DD_MAGIC = 0x504b0708,
#else
ZIP_FILEHEADER_MAGIC = 0x04034b50,
ZIP_CDF_MAGIC = 0x02014b50,
ZIP_CDE_MAGIC = 0x06054b50,
ZIP64_CDE_MAGIC = 0x06064b50,
ZIP_DD_MAGIC = 0x08074b50,
#endif
};
@ -41,36 +46,29 @@ typedef union {
uint16_t method; /* 4-5 */
uint16_t modtime; /* 6-7 */
uint16_t moddate; /* 8-9 */
uint32_t crc32; /* 10-13 */
uint32_t cmpsize; /* 14-17 */
uint32_t ucmpsize; /* 18-21 */
uint32_t crc32 PACKED; /* 10-13 */
uint32_t cmpsize PACKED; /* 14-17 */
uint32_t ucmpsize PACKED; /* 18-21 */
uint16_t filename_len; /* 22-23 */
uint16_t extra_len; /* 24-25 */
} PACKED formatted;
} PACKED zip_header_t;
/* filename follows (not NUL terminated) */
/* extra field follows */
/* data follows */
} fmt PACKED;
} zip_header_t; /* PACKED - gcc 4.2.1 doesn't like it (spews warning) */
PRAGMA_END_PACKED
/* Check the offset of the last element, not the length. This leniency
* allows for poor packing, whereby the overall struct may be too long,
* even though the elements are all in the right place.
*/
struct BUG_zip_header_must_be_26_bytes {
char BUG_zip_header_must_be_26_bytes[
offsetof(zip_header_t, formatted.extra_len) + 2
== ZIP_HEADER_LEN ? 1 : -1];
};
#define FIX_ENDIANNESS_ZIP(zip_header) do { \
(zip_header).formatted.version = SWAP_LE16((zip_header).formatted.version ); \
(zip_header).formatted.method = SWAP_LE16((zip_header).formatted.method ); \
(zip_header).formatted.modtime = SWAP_LE16((zip_header).formatted.modtime ); \
(zip_header).formatted.moddate = SWAP_LE16((zip_header).formatted.moddate ); \
(zip_header).formatted.crc32 = SWAP_LE32((zip_header).formatted.crc32 ); \
(zip_header).formatted.cmpsize = SWAP_LE32((zip_header).formatted.cmpsize ); \
(zip_header).formatted.ucmpsize = SWAP_LE32((zip_header).formatted.ucmpsize ); \
(zip_header).formatted.filename_len = SWAP_LE16((zip_header).formatted.filename_len); \
(zip_header).formatted.extra_len = SWAP_LE16((zip_header).formatted.extra_len ); \
} while (0)
#define FIX_ENDIANNESS_ZIP(zip) \
do { if (BB_BIG_ENDIAN) { \
(zip).fmt.method = SWAP_LE16((zip).fmt.method ); \
(zip).fmt.modtime = SWAP_LE16((zip).fmt.modtime ); \
(zip).fmt.moddate = SWAP_LE16((zip).fmt.moddate ); \
(zip).fmt.crc32 = SWAP_LE32((zip).fmt.crc32 ); \
(zip).fmt.cmpsize = SWAP_LE32((zip).fmt.cmpsize ); \
(zip).fmt.ucmpsize = SWAP_LE32((zip).fmt.ucmpsize ); \
(zip).fmt.filename_len = SWAP_LE16((zip).fmt.filename_len); \
(zip).fmt.extra_len = SWAP_LE16((zip).fmt.extra_len ); \
}} while (0)
#define CDF_HEADER_LEN 42
@ -83,46 +81,46 @@ typedef union {
uint16_t version_needed; /* 2-3 */
uint16_t cdf_flags; /* 4-5 */
uint16_t method; /* 6-7 */
uint16_t mtime; /* 8-9 */
uint16_t mdate; /* 10-11 */
uint16_t modtime; /* 8-9 */
uint16_t moddate; /* 10-11 */
uint32_t crc32; /* 12-15 */
uint32_t cmpsize; /* 16-19 */
uint32_t ucmpsize; /* 20-23 */
uint16_t file_name_length; /* 24-25 */
uint16_t extra_field_length; /* 26-27 */
uint16_t filename_len; /* 24-25 */
uint16_t extra_len; /* 26-27 */
uint16_t file_comment_length; /* 28-29 */
uint16_t disk_number_start; /* 30-31 */
uint16_t internal_file_attributes; /* 32-33 */
uint32_t external_file_attributes; /* 34-37 */
uint32_t relative_offset_of_local_header; /* 38-41 */
} PACKED formatted;
uint16_t internal_attributes; /* 32-33 */
uint32_t external_attributes PACKED; /* 34-37 */
uint32_t relative_offset_of_local_header PACKED; /* 38-41 */
/* filename follows (not NUL terminated) */
/* extra field follows */
/* file comment follows */
} fmt PACKED;
} cdf_header_t;
PRAGMA_END_PACKED
struct BUG_cdf_header_must_be_42_bytes {
char BUG_cdf_header_must_be_42_bytes[
offsetof(cdf_header_t, formatted.relative_offset_of_local_header) + 4
== CDF_HEADER_LEN ? 1 : -1];
};
#define FIX_ENDIANNESS_CDF(cdf) \
do { if (BB_BIG_ENDIAN) { \
(cdf).fmt.version_made_by = SWAP_LE16((cdf).fmt.version_made_by); \
(cdf).fmt.version_needed = SWAP_LE16((cdf).fmt.version_needed ); \
(cdf).fmt.method = SWAP_LE16((cdf).fmt.method ); \
(cdf).fmt.modtime = SWAP_LE16((cdf).fmt.modtime ); \
(cdf).fmt.moddate = SWAP_LE16((cdf).fmt.moddate ); \
(cdf).fmt.crc32 = SWAP_LE32((cdf).fmt.crc32 ); \
(cdf).fmt.cmpsize = SWAP_LE32((cdf).fmt.cmpsize ); \
(cdf).fmt.ucmpsize = SWAP_LE32((cdf).fmt.ucmpsize ); \
(cdf).fmt.filename_len = SWAP_LE16((cdf).fmt.filename_len ); \
(cdf).fmt.extra_len = SWAP_LE16((cdf).fmt.extra_len ); \
(cdf).fmt.file_comment_length = SWAP_LE16((cdf).fmt.file_comment_length); \
(cdf).fmt.external_attributes = SWAP_LE32((cdf).fmt.external_attributes); \
}} while (0)
#define FIX_ENDIANNESS_CDF(cdf_header) do { \
(cdf_header).formatted.crc32 = SWAP_LE32((cdf_header).formatted.crc32 ); \
(cdf_header).formatted.cmpsize = SWAP_LE32((cdf_header).formatted.cmpsize ); \
(cdf_header).formatted.ucmpsize = SWAP_LE32((cdf_header).formatted.ucmpsize ); \
(cdf_header).formatted.file_name_length = SWAP_LE16((cdf_header).formatted.file_name_length); \
(cdf_header).formatted.extra_field_length = SWAP_LE16((cdf_header).formatted.extra_field_length); \
(cdf_header).formatted.file_comment_length = SWAP_LE16((cdf_header).formatted.file_comment_length); \
IF_DESKTOP( \
(cdf_header).formatted.version_made_by = SWAP_LE16((cdf_header).formatted.version_made_by); \
(cdf_header).formatted.external_file_attributes = SWAP_LE32((cdf_header).formatted.external_file_attributes); \
) \
} while (0)
#define CDE_HEADER_LEN 16
#define CDE_LEN 16
PRAGMA_BEGIN_PACKED
typedef union {
uint8_t raw[CDE_HEADER_LEN];
uint8_t raw[CDE_LEN];
struct {
/* uint32_t signature; 50 4b 05 06 */
uint16_t this_disk_no;
@ -131,24 +129,111 @@ typedef union {
uint16_t cdf_entries_total;
uint32_t cdf_size;
uint32_t cdf_offset;
/* uint16_t file_comment_length; */
/* .ZIP file comment (variable size) */
} PACKED formatted;
} cde_header_t;
/* uint16_t archive_comment_length; */
/* archive comment follows */
} fmt PACKED;
} cde_t;
PRAGMA_END_PACKED
struct BUG_cde_header_must_be_16_bytes {
char BUG_cde_header_must_be_16_bytes[
sizeof(cde_header_t) == CDE_HEADER_LEN ? 1 : -1];
};
#define FIX_ENDIANNESS_CDE(cde) \
do { if (BB_BIG_ENDIAN) { \
(cde).fmt.cdf_offset = SWAP_LE32((cde).fmt.cdf_offset); \
}} while (0)
#define FIX_ENDIANNESS_CDE(cde_header) do { \
(cde_header).formatted.cdf_offset = SWAP_LE32((cde_header).formatted.cdf_offset); \
} while (0)
/* Extra records */
#define EXTRA_HEADER_LEN 4
PRAGMA_BEGIN_PACKED
typedef union {
uint8_t raw[EXTRA_HEADER_LEN];
struct {
uint16_t tag;
uint16_t length;
/* extra record follows */
} fmt PACKED;
} extra_header_t;
PRAGMA_END_PACKED
#if ENABLE_DESKTOP
#define FIX_ENDIANNESS_EXTRA(ext) \
do { if (BB_BIG_ENDIAN) { \
(ext).fmt.tag = SWAP_LE16((ext).fmt.tag); \
(ext).fmt.length = SWAP_LE32((ext).fmt.length); \
}} while (0)
/* ZIP64 records */
#define ZIP64_LEN 20
PRAGMA_BEGIN_PACKED
typedef union {
uint8_t raw[ZIP64_LEN];
struct {
/* uint16_t tag; 00 01 */
uint16_t tag;
uint16_t length;
uint64_t ucmpsize PACKED;
uint64_t cmpsize PACKED;
} fmt PACKED;
} zip64_t;
PRAGMA_END_PACKED
#define FIX_ENDIANNESS_ZIP64(z64) \
do { if (BB_BIG_ENDIAN) { \
(z64).fmt.cmpsize = SWAP_LE64((z64).fmt.cmpsize); \
(z64).fmt.ucmpsize = SWAP_LE64((z64).fmt.ucmpsize); \
}} while (0)
#define CDE64_LEN 52
PRAGMA_BEGIN_PACKED
typedef union {
uint8_t raw[CDE64_LEN];
struct {
/* uint32_t signature; 50 4b 06 06 */
uint64_t size PACKED;
uint16_t version_made_by;
uint16_t version_needed;
uint32_t this_disk_no;
uint32_t disk_with_cdf_no;
uint64_t cdf_entries_on_this_disk PACKED;
uint64_t cdf_entries_total PACKED;
uint64_t cdf_size PACKED;
uint64_t cdf_offset PACKED;
/* archive comment follows */
} fmt PACKED;
} cde64_t;
PRAGMA_END_PACKED
#define FIX_ENDIANNESS_CDE64(c64) \
do { if (BB_BIG_ENDIAN) { \
(c64).fmt.size = SWAP_LE64((c64).fmt.size); \
(c64).fmt.cdf_offset = SWAP_LE64((c64).fmt.cdf_offset); \
}} while (0)
inline void BUG(void) {
/* Check the offset of the last element, not the length. This leniency
* allows for poor packing, whereby the overall struct may be too long,
* even though the elements are all in the right place.
*/
BUILD_BUG_ON(
offsetof(zip_header_t, fmt.extra_len) + 2
!= ZIP_HEADER_LEN);
BUILD_BUG_ON(
offsetof(cdf_header_t, fmt.relative_offset_of_local_header) + 4
!= CDF_HEADER_LEN);
BUILD_BUG_ON(sizeof(cde_t) != CDE_LEN);
BUILD_BUG_ON(sizeof(extra_header_t) != EXTRA_HEADER_LEN);
BUILD_BUG_ON(sizeof(zip64_t) != ZIP64_LEN);
BUILD_BUG_ON(sizeof(cde64_t) != CDE64_LEN);
}
/* This value means that we failed to find CDF */
#define BAD_CDF_OFFSET ((uint32_t)0xffffffff)
#if !ENABLE_FEATURE_UNZIP_CDF
# define find_cdf_offset(fd) BAD_CDF_OFFSET
#else
/* Seen in the wild:
* Self-extracting PRO2K3XP_32.exe contains 19078464 byte zip archive,
* where CDE was nearly 48 kbytes before EOF.
@ -157,81 +242,149 @@ struct BUG_cde_header_must_be_16_bytes {
* To make extraction work, bumped PEEK_FROM_END from 16k to 64k.
*/
#define PEEK_FROM_END (64*1024)
/* This value means that we failed to find CDF */
#define BAD_CDF_OFFSET ((uint32_t)0xffffffff)
/* NB: does not preserve file position! */
static uint32_t find_cdf_offset(int fd)
static uint64_t find_cdf_offset(int fd)
{
cde_header_t cde_header;
unsigned char *p;
off_t end;
unsigned char *buf = xzalloc(PEEK_FROM_END);
cde_t cde;
cde64_t cde64;
unsigned char *buf;
unsigned char *p, c;
uint64_t end = 0, found, size;
if (buf == NULL)
return 0;
end = lseek(fd, 0, SEEK_END);
end -= PEEK_FROM_END;
if (end < 0)
size = lseek(fd, 0, SEEK_END);
if (size == (off_t) -1)
return BAD_CDF_OFFSET;
if (size > PEEK_FROM_END)
end = size - PEEK_FROM_END;
else
end = 0;
lseek(fd, end, SEEK_SET);
full_read(fd, buf, PEEK_FROM_END);
cde_header.formatted.cdf_offset = BAD_CDF_OFFSET;
size = MIN(size, PEEK_FROM_END);
lseek(fd, end, SEEK_SET);
buf = xzalloc((size_t)size);
if (buf == NULL)
return 0;
full_read(fd, buf, (unsigned int)size);
found = BAD_CDF_OFFSET;
p = buf;
while (p <= buf + PEEK_FROM_END - CDE_HEADER_LEN - 4) {
while (p <= buf + size - CDE_LEN - 4) {
if (*p != 'P') {
p++;
continue;
}
if (*++p != 'K')
continue;
if (*++p != 5)
c = *++p;
if (c != 5 && c != 6)
continue;
if (*++p != 6)
continue;
/* we found CDE! */
memcpy(cde_header.raw, p + 1, CDE_HEADER_LEN);
FIX_ENDIANNESS_CDE(cde_header);
/*
* I've seen .ZIP files with seemingly valid CDEs
* where cdf_offset points past EOF - ??
* Ignore such CDEs:
*/
if (cde_header.formatted.cdf_offset < end + (p - buf))
switch (c) {
case 5: /* 32-bit CDE */
memcpy(cde.raw, p + 1, CDE_LEN);
dbg("cde.this_disk_no:%d", cde.fmt.this_disk_no);
dbg("cde.disk_with_cdf_no:%d", cde.fmt.disk_with_cdf_no);
dbg("cde.cdf_entries_on_this_disk:%d", cde.fmt.cdf_entries_on_this_disk);
dbg("cde.cdf_entries_total:%d", cde.fmt.cdf_entries_total);
dbg("cde.cdf_size:%d", cde.fmt.cdf_size);
dbg("cde.cdf_offset:%x", cde.fmt.cdf_offset);
FIX_ENDIANNESS_CDE(cde);
/*
* I've seen .ZIP files with seemingly valid CDEs
* where cdf_offset points past EOF - ??
* This check ignores such CDEs:
*/
if (cde.fmt.cdf_offset != 0xffffffffL &&
cde.fmt.cdf_offset < end + (p - buf)) {
found = cde.fmt.cdf_offset;
dbg("Possible cdf_offset:0x%"OFF_FMT"x at 0x%"OFF_FMT"x",
found, end + (p - 3 - buf));
dbg(" cdf_offset+cdf_size:0x%"OFF_FMT"x",
(found + SWAP_LE32(cde.fmt.cdf_size)));
/*
* We do not "break" here because only the last CDE is valid.
* I've seen a .zip archive which contained a .zip file,
* uncompressed, and taking the first CDE was using
* the CDE inside that file!
*/
}
break;
cde_header.formatted.cdf_offset = BAD_CDF_OFFSET;
case 6: /* 64-bit CDE */
memcpy(cde64.raw, p + 1, CDE64_LEN);
FIX_ENDIANNESS_CDE64(cde64);
dbg("cde64.this_disk_no:%d", cde64.fmt.this_disk_no);
dbg("cde64.disk_with_cdf_no:%d", cde64.fmt.disk_with_cdf_no);
dbg("cde64.cdf_entries_on_this_disk:%lld", cde64.fmt.cdf_entries_on_this_disk);
dbg("cde64.cdf_entries_total:%lld", cde64.fmt.cdf_entries_total);
dbg("cde64.cdf_size:%lld", cde64.fmt.cdf_size);
dbg("cde64.cdf_offset:%llx", cde64.fmt.cdf_offset);
if (cde64.fmt.cdf_offset < end + (p - buf)) {
found = cde64.fmt.cdf_offset;
dbg("Possible cdf_offset:0x%"OFF_FMT"x at 0x%"OFF_FMT"x",
found, end + (p - 3 - buf));
dbg(" cdf_offset+cdf_size:0x%"OFF_FMT"x",
(found + SWAP_LE64(cde64.fmt.cdf_size)));
}
break;
}
}
free(buf);
return cde_header.formatted.cdf_offset;
dbg("Found cdf_offset:0x%"OFF_FMT"x", found);
return found;
};
static uint32_t read_next_cdf(int fd, uint32_t cdf_offset, cdf_header_t *cdf_ptr)
static uint64_t read_next_cdf(int fd, uint64_t cdf_offset, cdf_header_t *cdf)
{
off_t org;
uint32_t magic;
org = lseek(fd, 0, SEEK_CUR);
if (cdf_offset == BAD_CDF_OFFSET)
return cdf_offset;
if (!cdf_offset)
cdf_offset = find_cdf_offset(fd);
if (cdf_offset != BAD_CDF_OFFSET) {
lseek(fd, cdf_offset + 4, SEEK_SET);
if (_read(fd, cdf_ptr->raw, CDF_HEADER_LEN) != CDF_HEADER_LEN)
return 0;
FIX_ENDIANNESS_CDF(*cdf_ptr);
cdf_offset += 4 + CDF_HEADER_LEN
+ cdf_ptr->formatted.file_name_length
+ cdf_ptr->formatted.extra_field_length
+ cdf_ptr->formatted.file_comment_length;
dbg("Reading CDF at 0x%"OFF_FMT"x", cdf_offset);
lseek(fd, cdf_offset, SEEK_SET);
(void)_read(fd, &magic, 4);
/* Central Directory End? Assume CDF has ended.
* (more correct method is to use cde.cdf_entries_total counter)
*/
if (magic == ZIP_CDE_MAGIC) {
dbg("got ZIP_CDE_MAGIC");
return 0; /* EOF */
}
if (magic == ZIP64_CDE_MAGIC) { /* seen in .zip with >4GB files */
dbg("got ZIP64_CDE_MAGIC");
return 0; /* EOF */
}
(void)_read(fd, cdf->raw, CDF_HEADER_LEN);
lseek(fd, org, SEEK_SET);
FIX_ENDIANNESS_CDF(*cdf);
dbg(" magic:%08x filename_len:%u extra_len:%u file_comment_length:%u",
magic,
(unsigned)cdf->fmt.filename_len,
(unsigned)cdf->fmt.extra_len,
(unsigned)cdf->fmt.file_comment_length
);
//TODO: require that magic == ZIP_CDF_MAGIC?
cdf_offset += 4 + CDF_HEADER_LEN
+ cdf->fmt.filename_len
+ cdf->fmt.extra_len
+ cdf->fmt.file_comment_length;
dbg("Next cdf_offset 0x%"OFF_FMT"x", cdf_offset);
return cdf_offset;
};
#endif
static void die_if_bad_fnamesize(unsigned sz)
{
if (sz > 0xfff) /* more than 4k?! no funny business please */
bb_simple_error_msg_and_die("bad archive");
}
static void unzip_skip(int fd, off_t skip)
{
if (skip != 0)
@ -239,109 +392,262 @@ static void unzip_skip(int fd, off_t skip)
bb_copyfd_exact_size(fd, -1, skip);
}
IF_DESKTOP(long long) int FAST_FUNC unpack_zip_stream(transformer_state_t *xstate)
/* Set the filename and process extra ZIP64 data */
static void unzip_set_xstate(transformer_state_t* xstate, zip_header_t* zip)
{
uint8_t* buf = NULL;
uint16_t i = 0;
extra_header_t* extra;
zip64_t* zip64;
/* Set the default sizes for non ZIP64 content */
xstate->dst_size = zip->fmt.ucmpsize;
xstate->bytes_in = zip->fmt.cmpsize;
/* Set the filename */
die_if_bad_fnamesize(zip->fmt.filename_len);
xstate->dst_name = xzalloc(zip->fmt.filename_len + 1);
if (xstate->dst_name == NULL)
goto err;
xread(xstate->src_fd, xstate->dst_name, zip->fmt.filename_len);
xstate->dst_name[zip->fmt.filename_len] = 0;
/* Read the extra data */
if (zip->fmt.extra_len) {
dbg("Reading extra data");
buf = malloc(zip->fmt.extra_len);
if (buf == NULL)
goto err;
xread(xstate->src_fd, buf, zip->fmt.extra_len);
}
/* Process the extra records */
if (zip->fmt.extra_len < EXTRA_HEADER_LEN + 1)
goto err;
for (i = 0; i < zip->fmt.extra_len - EXTRA_HEADER_LEN; ) {
extra = (extra_header_t*)&buf[i];
FIX_ENDIANNESS_EXTRA(*extra);
dbg(" tag:0x%04x len:%u",
(unsigned)extra->fmt.tag,
(unsigned)extra->fmt.length
);
i += EXTRA_HEADER_LEN + extra->fmt.length;
/* Process the ZIP64 data */
if (extra->fmt.tag == SWAP_LE16(0x0001)) {
zip64 = (zip64_t*)extra;
FIX_ENDIANNESS_ZIP64(*zip64);
if ((zip->fmt.cmpsize == 0xffffffffL || zip->fmt.ucmpsize == 0xffffffffL) &&
EXTRA_HEADER_LEN + zip64->fmt.length >= ZIP64_LEN) {
dbg("Actual cmpsize:0x%"OFF_FMT"x ucmpsize:0x%"OFF_FMT"x",
zip64->fmt.cmpsize,
zip64->fmt.ucmpsize
);
xstate->dst_size = zip64->fmt.ucmpsize;
xstate->bytes_in = zip64->fmt.cmpsize;
}
}
}
err:
free(buf);
}
static IF_DESKTOP(long long) int
unzip_extract(zip_header_t* zip, transformer_state_t* xstate)
{
IF_DESKTOP(long long) int n = -EFAULT;
zip_header_t zip_header;
#if ENABLE_DESKTOP
uint32_t cdf_offset = 0;
if (zip->fmt.method == 0) {
/* Method 0 - stored (not compressed) */
if (xstate->dst_size) {
bb_copyfd_exact_size(xstate->src_fd, xstate->dst_fd, xstate->dst_size);
}
return xstate->dst_size;
}
if (zip->fmt.method == 8) {
/* Method 8 - inflate */
n = inflate_unzip(xstate);
/* Validate decompression */
if (n >= 0) {
if (zip->fmt.crc32 != (xstate->crc32 ^ 0xffffffffL)) {
bb_simple_error_msg_and_die("crc error");
}
} else if (n != -ENOSPC) {
bb_simple_error_msg_and_die("inflate error");
}
}
#if ENABLE_FEATURE_UNZIP_BZIP2
else if (zip->fmt.method == 12) {
/* Tested. Unpacker reads too much, but we use CDF
* and will seek to the correct beginning of next file.
*/
xstate->bytes_out = unpack_bz2_stream(xstate);
if ((int64_t)xstate->bytes_out < 0)
bb_simple_error_msg_and_die("inflate error");
}
#endif
#if ENABLE_FEATURE_UNZIP_LZMA
else if (zip->fmt.method == 14) {
/* Not tested yet */
xstate->bytes_out = unpack_lzma_stream(xstate);
if ((int64_t)xstate->bytes_out < 0)
bb_simple_error_msg_and_die("inflate error");
}
#endif
#if ENABLE_FEATURE_UNZIP_XZ
else if (zip->fmt.method == 95) {
/* Not tested yet */
xstate->bytes_out = unpack_xz_stream(xstate);
if ((int64_t)xstate->bytes_out < 0)
bb_simple_error_msg_and_die("inflate error");
}
#endif
else {
bb_error_msg_and_die("unsupported method %u", zip->fmt.method);
}
/* Validate decompression - size */
if (n != -ENOSPC && xstate->dst_size != xstate->bytes_out) {
/* Don't die. Who knows, maybe len calculation
* was botched somewhere. After all, crc matched! */
bb_simple_error_msg("bad length");
}
return n;
}
IF_DESKTOP(long long) int FAST_FUNC
unpack_zip_stream(transformer_state_t *xstate)
{
IF_DESKTOP(long long) int n = -EFAULT;
bool is_dir = false;
uint64_t cdf_offset = find_cdf_offset(xstate->src_fd); /* try to seek to the end, find CDE and CDF start */
while (1) {
uint32_t magic;
bool is_dir = false;
/* Check magic number */
safe_read(xstate->src_fd, &magic, 4);
/* Central directory? It's at the end, so exit */
if (magic == ZIP_CDF_MAGIC)
break;
#if ENABLE_DESKTOP
/* Data descriptor? It was a streaming file, go on */
if (magic == ZIP_DD_MAGIC) {
/* skip over duplicate crc32, cmpsize and ucmpsize */
unzip_skip(xstate->src_fd, 3 * 4);
continue;
}
#endif
if (magic != ZIP_FILEHEADER_MAGIC)
bb_error_msg_and_err("invalid zip magic 0x%08X", magic);
/* Read the file header */
safe_read(xstate->src_fd, zip_header.raw, ZIP_HEADER_LEN);
FIX_ENDIANNESS_ZIP(zip_header);
if ((zip_header.formatted.method != 8) && (zip_header.formatted.method != 0)) {
bb_error_msg_and_err("zip method method %d is not supported", zip_header.formatted.method);
}
#if !ENABLE_DESKTOP
if (zip_header.formatted.zip_flags & SWAP_LE16(0x0009)) {
bb_error_msg_and_err("zip flags 1 and 8 are not supported");
}
#else
if (zip_header.formatted.zip_flags & SWAP_LE16(0x0001)) {
/* 0x0001 - encrypted */
bb_error_msg_and_die("zip flag 1 (encryption) is not supported");
}
if (cdf_offset != BAD_CDF_OFFSET) {
cdf_header_t cdf_header;
cdf_offset = read_next_cdf(xstate->src_fd, cdf_offset, &cdf_header);
/*
* Note: cdf_offset can become BAD_CDF_OFFSET after the above call.
zip_header_t zip;
if (!ENABLE_FEATURE_UNZIP_CDF || cdf_offset == BAD_CDF_OFFSET) {
/* Normally happens when input is unseekable.
*
* Valid ZIP file has Central Directory at the end
* with central directory file headers (CDFs).
* After it, there is a Central Directory End structure.
* CDFs identify what files are in the ZIP and where
* they are located. This allows ZIP readers to load
* the list of files without reading the entire ZIP archive.
* ZIP files may be appended to, only files specified in
* the CD are valid. Scanning for local file headers is
* not a correct algorithm.
*
* We try to do the above, and resort to "linear" reading
* of ZIP file only if seek failed or CDE wasn't found.
*/
if (zip_header.formatted.zip_flags & SWAP_LE16(0x0008)) {
uint32_t magic;
/* Check magic number */
xread(xstate->src_fd, &magic, 4);
/* CDF item? Assume there are no more files, exit */
if (magic == ZIP_CDF_MAGIC) {
dbg("got ZIP_CDF_MAGIC");
break;
}
/* Data descriptor? It was a streaming file, go on */
if (magic == ZIP_DD_MAGIC) {
dbg("got ZIP_DD_MAGIC");
/* skip over duplicate crc32, cmpsize and ucmpsize */
unzip_skip(xstate->src_fd, 3 * 4);
continue;
}
if (magic != ZIP_FILEHEADER_MAGIC)
bb_error_msg_and_die("invalid zip magic %08X", (int)magic);
dbg("got ZIP_FILEHEADER_MAGIC");
xread(xstate->src_fd, zip.raw, ZIP_HEADER_LEN);
FIX_ENDIANNESS_ZIP(zip);
if (zip.fmt.zip_flags & SWAP_LE16(0x0008)) {
bb_error_msg_and_die("zip flag %s is not supported",
"8 (streaming)");
}
}
#if ENABLE_FEATURE_UNZIP_CDF
else {
/* cdf_offset is valid (and we know the file is seekable) */
cdf_header_t cdf;
cdf_offset = read_next_cdf(xstate->src_fd, cdf_offset, &cdf);
if (cdf_offset == 0) /* EOF? */
break;
# if 1
lseek(xstate->src_fd,
SWAP_LE32(cdf.fmt.relative_offset_of_local_header) + 4,
SEEK_SET);
xread(xstate->src_fd, zip.raw, ZIP_HEADER_LEN);
FIX_ENDIANNESS_ZIP(zip);
if (zip.fmt.zip_flags & SWAP_LE16(0x0008)) {
/* 0x0008 - streaming. [u]cmpsize can be reliably gotten
* only from Central Directory. See unzip_doc.txt
* only from Central Directory.
*/
zip_header.formatted.crc32 = cdf_header.formatted.crc32;
zip_header.formatted.cmpsize = cdf_header.formatted.cmpsize;
zip_header.formatted.ucmpsize = cdf_header.formatted.ucmpsize;
zip.fmt.crc32 = cdf.fmt.crc32;
zip.fmt.cmpsize = cdf.fmt.cmpsize;
zip.fmt.ucmpsize = cdf.fmt.ucmpsize;
}
/* Check for UNIX/DOS/WIN directory */
is_dir = cdf_header.formatted.external_file_attributes & 0x40000010;
is_dir = cdf.fmt.external_attributes & 0x40000010;
// Seen in some zipfiles: central directory 9 byte extra field contains
// a subfield with ID 0x5455 and 5 data bytes, which is a Unix-style UTC mtime.
// Local header version:
// u16 0x5455 ("UT")
// u16 size (1 + 4 * n)
// u8 flags: bit 0:mtime is present, bit 1:atime is present, bit 2:ctime is present
// u32 mtime
// u32 atime
// u32 ctime
// Central header version:
// u16 0x5455 ("UT")
// u16 size (5 (or 1?))
// u8 flags: bit 0:mtime is present, bit 1:atime is present, bit 2:ctime is present
// u32 mtime (CDF does not store atime/ctime)
# else
/* CDF has the same data as local header, no need to read the latter...
* ...not really. An archive was seen with cdf.extra_len == 6 but
* zip.extra_len == 0.
*/
memcpy(&zip.fmt.version,
&cdf.fmt.version_needed, ZIP_HEADER_LEN);
xlseek(zip_fd,
SWAP_LE32(cdf.fmt.relative_offset_of_local_header) + 4 + ZIP_HEADER_LEN,
SEEK_SET);
# endif
}
#endif
if (cdf_offset == BAD_CDF_OFFSET
&& (zip_header.formatted.zip_flags & SWAP_LE16(0x0008))
) {
&& (zip.fmt.zip_flags & SWAP_LE16(0x0008))
) {
/* If it's a streaming zip, we _require_ CDF */
bb_error_msg_and_die("can't find file table");
}
#endif
if (zip.fmt.zip_flags & SWAP_LE16(0x0001)) {
/* 0x0001 - encrypted */
bb_error_msg_and_die("zip flag %s is not supported",
"1 (encryption)");
}
dbg("File cmpsize:0x%x extra_len:0x%x ucmpsize:0x%x",
(unsigned)zip.fmt.cmpsize,
(unsigned)zip.fmt.extra_len,
(unsigned)zip.fmt.ucmpsize
);
/* Sets the file name and set the file sizes using ZIP64 if present */
unzip_set_xstate(xstate, &zip);
/* Handle multiple file switching */
if ((!is_dir) && (xstate->dst_dir != NULL)) {
xstate->dst_size = zip_header.formatted.ucmpsize;
xstate->dst_name = xzalloc(zip_header.formatted.filename_len + 1);
safe_read(xstate->src_fd, xstate->dst_name, zip_header.formatted.filename_len);
xstate->dst_name[zip_header.formatted.filename_len] = 0;
n = transformer_switch_file(xstate);
free(xstate->dst_name);
if (n < 0)
if ((!is_dir) && (xstate->dst_dir != NULL) &&
(transformer_switch_file(xstate) < 0)) {
goto err;
} else {
unzip_skip(xstate->src_fd, zip_header.formatted.filename_len);
}
/* Skip extra header bytes */
unzip_skip(xstate->src_fd, zip_header.formatted.extra_len);
n = unzip_extract(&zip, xstate);
if (zip_header.formatted.method == 0) {
if (!is_dir)
bb_error_msg_and_err("zip method method 0 is only supported for directories");
} else {
/* Method 8 - inflate */
xstate->bytes_in = zip_header.formatted.cmpsize;
n = inflate_unzip(xstate);
/* Validate decompression */
if (n >= 0) {
if (zip_header.formatted.ucmpsize != 0xffffffffL && zip_header.formatted.ucmpsize != xstate->bytes_out)
bb_error_msg_and_err("bad length");
else if (zip_header.formatted.crc32 != (xstate->crc32 ^ 0xffffffffL))
bb_error_msg_and_err("crc error");
} else if (n != -ENOSPC) {
bb_error_msg_and_err("inflate error");
}
}
/* Only process the first file if not extracting to a dir */
if (xstate->dst_dir == NULL)
break;

View File

@ -149,7 +149,6 @@ IF_DESKTOP(long long) int FAST_FUNC unpack_vtsi_stream(transformer_state_t* xsta
buf = (uint8_t*)segment + footer.segment_num * sizeof(VTSI_SEGMENT);
lseek(src_fd, footer.segment_offset, SEEK_SET);
/* coverity[tainted_data_argument] */
safe_read(src_fd, segment, footer.segment_num * sizeof(VTSI_SEGMENT));
if (!check_vtsi_segment(&footer, segment))

View File

@ -19,6 +19,10 @@ archive_handle_t* FAST_FUNC init_handle(void)
archive_handle->action_data = data_skip;
archive_handle->filter = filter_accept_all;
archive_handle->seek = seek_by_jump;
#if ENABLE_CPIO || ENABLE_RPM2CPIO || ENABLE_RPM
archive_handle->cpio__owner.uid = (uid_t)-1L;
archive_handle->cpio__owner.gid = (gid_t)-1L;
#endif
return archive_handle;
}

View File

@ -2,7 +2,7 @@
* Library header for busybox/Bled
*
* Rewritten for Bled (Base Library for Easy Decompression)
* Copyright © 2014-2022 Pete Batard <pete@akeo.ie>
* Copyright © 2014-2023 Pete Batard <pete@akeo.ie>
*
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
*/
@ -39,20 +39,24 @@
#include <sys/types.h>
#include <io.h>
#define BB_BUFSIZE 0x40000
#define ONE_TB 1099511627776ULL
#define ENABLE_DESKTOP 1
#define ENABLE_DESKTOP 1
#if ENABLE_DESKTOP
#define IF_DESKTOP(x) x
#define IF_DESKTOP(x) x
#define IF_NOT_DESKTOP(x)
#else
#define IF_DESKTOP(x)
#define IF_NOT_DESKTOP(x) x
#define IF_NOT_DESKTOP(x) x
#endif
#define IF_NOT_FEATURE_LZMA_FAST(x) x
#define ENABLE_FEATURE_UNZIP_CDF 1
#define ENABLE_FEATURE_UNZIP_BZIP2 1
#define ENABLE_FEATURE_UNZIP_LZMA 1
#define ENABLE_FEATURE_UNZIP_XZ 1
#define uoff_t unsigned off_t
#define OFF_FMT PRIi64
#define uoff_t unsigned off_t
#define OFF_FMT "ll"
#ifndef _MODE_T_
#define _MODE_T_
@ -100,6 +104,7 @@ typedef unsigned int uid_t;
#define get_le16(ptr) (*(const uint16_t *)(ptr))
#endif
extern uint32_t BB_BUFSIZE;
extern smallint bb_got_signal;
extern uint32_t *global_crc32_table;
extern jmp_buf bb_error_jmp;
@ -163,7 +168,6 @@ static inline void *xrealloc(void *ptr, size_t size) {
#define bb_msg_read_error "read error"
#define bb_msg_write_error "write error"
#define bb_mode_string(str, mode) "[not implemented]"
#define bb_copyfd_exact_size(fd1, fd2, size) bb_error_msg("Not implemented")
#define bb_make_directory(path, mode, flags) SHCreateDirectoryExU(NULL, path, NULL)
static inline int link(const char *oldpath, const char *newpath) {errno = ENOSYS; return -1;}
@ -188,6 +192,11 @@ static inline int full_read(int fd, void *buf, unsigned int count) {
errno = EFAULT;
return -1;
}
/* None of our r/w buffers should be larger than BB_BUFSIZE */
if (count > BB_BUFSIZE) {
errno = E2BIG;
return -1;
}
if ((bled_cancel_request != NULL) && (*bled_cancel_request != 0)) {
errno = EINTR;
return -1;
@ -212,9 +221,56 @@ static inline int full_read(int fd, void *buf, unsigned int count) {
static inline int full_write(int fd, const void* buffer, unsigned int count)
{
/* None of our r/w buffers should be larger than BB_BUFSIZE */
if (count > BB_BUFSIZE) {
errno = E2BIG;
return -1;
}
return (bled_write != NULL) ? bled_write(fd, buffer, count) : _write(fd, buffer, count);
}
static inline void bb_copyfd_exact_size(int fd1, int fd2, off_t size)
{
off_t rb = 0;
uint8_t* buf = NULL;
if (fd1 < 0 || fd2 < 0)
bb_error_msg_and_die("invalid fd");
/* Enforce a 1 TB limit to keep Coverity happy */
if (size > ONE_TB)
bb_error_msg_and_die("too large");
buf = malloc(BB_BUFSIZE);
if (buf == NULL)
bb_error_msg_and_die("out of memory");
while (rb < size) {
int r, w;
r = full_read(fd1, buf, (unsigned int)MIN(size - rb, BB_BUFSIZE));
if (r < 0) {
free(buf);
bb_error_msg_and_die("read error");
}
if (r == 0) {
bb_error_msg("short read");
break;
}
w = full_write(fd2, buf, r);
if (w < 0) {
free(buf);
bb_error_msg_and_die("write error");
}
if (w != r) {
bb_error_msg("short write");
break;
}
rb += r;
}
free(buf);
}
static inline struct tm *localtime_r(const time_t *timep, struct tm *result) {
if (localtime_s(result, timep) != 0)
result = NULL;

View File

@ -57,11 +57,7 @@
*/
#if defined(__GNUC__)
#define RETURNS_MALLOC __attribute__ ((malloc))
#ifdef __MINGW32__
#define PACKED __attribute__ ((packed, gcc_struct))
#else
#define PACKED __attribute__ ((__packed__))
#endif
#define ALIGNED(m) __attribute__ ((__aligned__(m)))
#define PRAGMA_BEGIN_PACKED
#define PRAGMA_END_PACKED

539
src/db.h
View File

@ -1,6 +1,7 @@
/*
* Rufus: The Reliable USB Formatting Utility
* DB of the hash values we know for downloadable content (GRUB, Syslinux, etc.)
* DB of the known SHA256 hash values for Rufus downloadable content (GRUB, Syslinux, etc.)
* as well PE256 hash values for UEFI revoked content (DBX, SkuSiPolicy.p7b)
* Copyright © 2016-2023 Pete Batard <pete@akeo.ie>
*
* This program is free software: you can redistribute it and/or modify
@ -24,7 +25,6 @@
* NB: Table data was generated from the https://github.com/pbatard/rufus-web/tree/gh-pages/files/
* directory using the https://github.com/pbatard/rufus-web/blob/gh-pages/files/gendb.sh script.
*/
static uint8_t sha256db[] = {
0x01, 0x21, 0x98, 0x20, 0xd9, 0x1c, 0x28, 0x7b, 0x35, 0x28, 0x06, 0xf1, 0xb6, 0xa8, 0x0d, 0x4a, 0x8a, 0xf4, 0x5c, 0xf5, 0x04, 0x83, 0xed, 0x6b, 0xe0, 0xc6, 0x0e, 0x7a, 0x66, 0x9c, 0x67, 0x87, // syslinux-6.04/pre2/ldlinux.bss
0x0a, 0xd1, 0x3c, 0x2a, 0xb9, 0xd1, 0xcc, 0x66, 0x73, 0x70, 0xc4, 0x34, 0xf3, 0xe2, 0xa0, 0x54, 0x1c, 0xb8, 0x37, 0xdb, 0x72, 0x3e, 0x19, 0xae, 0x81, 0xc8, 0xee, 0x0b, 0xbe, 0x10, 0xdc, 0xe0, // grub-2.06@e67a551a-nonstandard/core.img
@ -80,6 +80,7 @@ static uint8_t sha256db[] = {
0x78, 0x64, 0x8e, 0xf0, 0xc5, 0x00, 0x41, 0x75, 0xb9, 0xa8, 0xea, 0x33, 0x30, 0x14, 0xea, 0x02, 0xc9, 0x17, 0xf8, 0x23, 0xe7, 0x7a, 0x3e, 0xc9, 0xac, 0xd9, 0xd2, 0x2b, 0x46, 0x02, 0xf3, 0x6d, // syslinux-6.03/pre13/ldlinux.sys
0x7d, 0xa9, 0xc5, 0x21, 0x76, 0xb8, 0xaf, 0x01, 0x64, 0xea, 0x39, 0x21, 0x22, 0x44, 0xb1, 0x0a, 0xa0, 0xc7, 0x97, 0xe7, 0x65, 0xbb, 0x6b, 0x92, 0x69, 0xb5, 0x8b, 0xc9, 0xe5, 0x0a, 0x9f, 0x18, // syslinux-5.01/ldlinux.bss
0x82, 0x11, 0xfa, 0xe8, 0xaf, 0xf0, 0x23, 0x3f, 0x05, 0xa8, 0xb7, 0x8c, 0x58, 0x15, 0x25, 0xe2, 0x81, 0xac, 0x98, 0x23, 0x54, 0xa8, 0xc4, 0x3b, 0xb4, 0x96, 0x5e, 0x61, 0xdc, 0x98, 0xb4, 0x62, // syslinux-6.03/pre8/ldlinux.bss
0x83, 0x57, 0xaa, 0xd3, 0x6a, 0xec, 0x68, 0x21, 0xcb, 0xf2, 0x17, 0x4d, 0xb5, 0xd2, 0x09, 0xef, 0x2c, 0xd2, 0x62, 0x88, 0x12, 0x39, 0xeb, 0xc3, 0xf4, 0xc1, 0xcf, 0x55, 0xab, 0x10, 0xee, 0x55, // grub-2.12~rc1/core.img
0x83, 0x9b, 0xd0, 0x8a, 0xcb, 0x68, 0x47, 0xd6, 0x55, 0x07, 0xf1, 0x4e, 0x7a, 0x55, 0x6e, 0x91, 0xe6, 0x12, 0x9c, 0x47, 0x86, 0x3f, 0x7d, 0x61, 0xe2, 0xce, 0x6d, 0xb7, 0x8d, 0xf3, 0xd2, 0x3f, // syslinux-6.03/pre9/ldlinux.bss
0x87, 0xaa, 0x91, 0xf8, 0x7f, 0xba, 0x5f, 0x31, 0x79, 0x43, 0x08, 0xda, 0xa4, 0xa4, 0x8d, 0xad, 0x6c, 0xf6, 0xfa, 0x34, 0x26, 0x4d, 0x66, 0xb8, 0x84, 0xb8, 0xb9, 0xdc, 0x96, 0x42, 0xed, 0x86, // syslinux-5.02/ldlinux.sys
0x88, 0x14, 0xe5, 0x76, 0xab, 0xc1, 0xaa, 0x44, 0xdd, 0xe9, 0x43, 0xb0, 0xca, 0xae, 0xe8, 0x33, 0xa5, 0x81, 0x01, 0x42, 0x61, 0x4a, 0xde, 0xeb, 0x4c, 0xc7, 0x25, 0xe7, 0x8a, 0x50, 0x45, 0xb7, // syslinux-6.03/ldlinux.bss
@ -121,3 +122,537 @@ static uint8_t sha256db[] = {
0xfb, 0x0a, 0x23, 0xca, 0x4d, 0x22, 0xfd, 0xd2, 0xad, 0x4e, 0xfa, 0x1b, 0x21, 0x08, 0xb6, 0x60, 0xd2, 0xff, 0xa3, 0xf2, 0xfb, 0xdd, 0x25, 0x32, 0xdc, 0xf1, 0x3f, 0x49, 0x33, 0x28, 0x46, 0x7b, // syslinux-6.03/pre11/ldlinux.bss
0xfb, 0x49, 0xfd, 0x45, 0x8c, 0xaf, 0x47, 0x5a, 0x16, 0x05, 0x5e, 0x4a, 0x75, 0x5a, 0xc3, 0xe3, 0x95, 0x52, 0xf4, 0xe9, 0x6c, 0xa2, 0x0d, 0xea, 0x53, 0xf5, 0xc4, 0x09, 0x2b, 0x68, 0xfd, 0x4f, // syslinux-6.00/ldlinux.sys
};
/*
* DBX table data was generated through the following shell command:
* wget -q -O - https://uefi.org/sites/default/files/resources/dbx_info.csv | tail -n +2 | awk -F "\"*,\"*" '{print $2}' | tr '[:upper:]' '[:lower:]' | sort | uniq -w 64 | awk -F '' '{for(i=1; i<=64; i+=2) {printf "0x%s%s, ", $i,$(i+1);}} {print ""}'
*
* Note that, because we are using the "UEFI Revocation List Contents" to generate the table
* below and not the *signed* "UEFI Revocation List file(s)" and the Microsoft terms of use at
* https://uefi.org/revocationlistfile make it clear that they governs only the use of the UEFI
* Revocation List file(s), we assert that the utterly moronic and downright user-endangering
* (since they effectively prevent end-users from being able to revoke bootloaders that should
* be revoked, thereby fostering the proliferation of malware) Microsoft terms of use that
* restrict the download and use of the "UEFI Revocation List file(s)" do not apply to the
* table below, especially as it is not used in the context of UEFI itself or for installation
* or update of UEFI systems.
*/
static uint8_t pe256dbx[] = {
0x00, 0x21, 0xb5, 0xb1, 0x1c, 0xeb, 0x03, 0x40, 0x2d, 0x61, 0x81, 0x34, 0x80, 0x0a, 0x36, 0xc5, 0x4e, 0x1c, 0x43, 0x28, 0xad, 0x38, 0x9d, 0x50, 0xb4, 0x0e, 0xac, 0xc1, 0xe8, 0x81, 0xdc, 0xb5,
0x00, 0x7f, 0x4c, 0x95, 0x12, 0x57, 0x13, 0xb1, 0x12, 0x09, 0x3e, 0x21, 0x66, 0x3e, 0x2d, 0x23, 0xe3, 0xc1, 0xae, 0x9c, 0xe4, 0xb5, 0xde, 0x0d, 0x58, 0xa2, 0x97, 0x33, 0x23, 0x36, 0xa2, 0xd8,
0x01, 0xe2, 0xda, 0x8e, 0xc5, 0xa6, 0x92, 0x9d, 0xdb, 0xbb, 0xeb, 0x2e, 0x98, 0x07, 0x58, 0x6f, 0xac, 0xdd, 0xca, 0x6a, 0x7e, 0xf6, 0x2b, 0xfe, 0xbb, 0x58, 0x1b, 0xdc, 0x2d, 0x72, 0x74, 0xd6,
0x02, 0x57, 0xff, 0x71, 0x0f, 0x2a, 0x16, 0xe4, 0x89, 0xb3, 0x74, 0x93, 0xc0, 0x76, 0x04, 0xa7, 0xcd, 0xa9, 0x61, 0x29, 0xd8, 0xa8, 0xfd, 0x68, 0xd2, 0xb6, 0xaf, 0x63, 0x39, 0x04, 0x31, 0x5d,
0x02, 0xe6, 0x21, 0x6a, 0xca, 0xef, 0x64, 0x01, 0x40, 0x1f, 0xa5, 0x55, 0xec, 0xbe, 0xd9, 0x40, 0xb1, 0xa5, 0xf2, 0x56, 0x9a, 0xed, 0x92, 0x95, 0x61, 0x37, 0xae, 0x58, 0x48, 0x2e, 0xf1, 0xb7,
0x03, 0x28, 0xf7, 0xdd, 0x12, 0xb5, 0x52, 0xef, 0xa7, 0xa9, 0xe0, 0x83, 0x73, 0x03, 0x33, 0xb8, 0x5f, 0x3f, 0x4e, 0x83, 0xd3, 0x93, 0x87, 0xfc, 0x53, 0x18, 0x63, 0xb4, 0x22, 0xf7, 0x5c, 0xc8,
0x03, 0xdf, 0x45, 0x00, 0x27, 0x3c, 0x43, 0x18, 0x92, 0x96, 0xf0, 0x9d, 0x73, 0x49, 0x77, 0xc8, 0x82, 0xa0, 0x08, 0xfc, 0x05, 0x6f, 0x43, 0xc3, 0x09, 0xb9, 0xd2, 0x35, 0x1f, 0x31, 0x79, 0x2e,
0x03, 0xf6, 0x4a, 0x29, 0x94, 0x8a, 0x88, 0xbe, 0xff, 0xdb, 0x03, 0x5e, 0x0b, 0x09, 0xa7, 0x37, 0x0c, 0xcf, 0x0c, 0xd9, 0xce, 0x6b, 0xcf, 0x8e, 0x64, 0x0c, 0x21, 0x07, 0x31, 0x8f, 0xab, 0x87,
0x04, 0x0b, 0x3b, 0xc3, 0x39, 0xe9, 0xb6, 0xf9, 0xac, 0xd8, 0x28, 0xb8, 0x8f, 0x34, 0x82, 0xa5, 0xc3, 0xf6, 0x4e, 0x67, 0xe5, 0xa7, 0x14, 0xba, 0x1d, 0xa8, 0xa7, 0x04, 0x53, 0xb3, 0x4a, 0xf6,
0x05, 0x72, 0x90, 0x29, 0xef, 0x94, 0x0c, 0x5e, 0x6e, 0xe9, 0x6b, 0x3b, 0x12, 0x53, 0xc0, 0x87, 0x83, 0xc0, 0x13, 0x29, 0xbc, 0xe2, 0xe9, 0x95, 0x1b, 0xc2, 0x2a, 0x09, 0x22, 0x3f, 0xc1, 0x5c,
0x05, 0xd8, 0x7e, 0x15, 0x71, 0x34, 0x54, 0x61, 0x6f, 0x5b, 0x0e, 0xd7, 0x84, 0x9a, 0xb5, 0xc1, 0x71, 0x2a, 0xb8, 0x4f, 0x02, 0x34, 0x94, 0x78, 0xec, 0x2a, 0x38, 0xf9, 0x70, 0xc0, 0x14, 0x89,
0x06, 0x5d, 0x94, 0xb9, 0xea, 0x00, 0x39, 0x7a, 0x2a, 0xdd, 0xb7, 0x47, 0xe1, 0xe0, 0x97, 0x8e, 0x4d, 0xe6, 0xbf, 0x17, 0x53, 0x39, 0x77, 0x8f, 0xb9, 0xb0, 0x76, 0x0f, 0xec, 0x3d, 0x3b, 0x61,
0x06, 0xc6, 0x70, 0xf8, 0x57, 0x2b, 0xf8, 0x9a, 0xba, 0xe1, 0x3d, 0x14, 0xd8, 0x1f, 0xfe, 0x80, 0xd5, 0x55, 0x0f, 0x69, 0x68, 0x62, 0xb1, 0xab, 0x38, 0x6e, 0x4d, 0x8c, 0x56, 0xb0, 0x20, 0x16,
0x06, 0xe3, 0xf6, 0x46, 0xce, 0xb1, 0x02, 0x37, 0x2e, 0x3e, 0x08, 0x6d, 0x46, 0x23, 0x4b, 0x06, 0xa9, 0xaf, 0x13, 0xee, 0xf6, 0x5a, 0xad, 0x18, 0x0e, 0xa2, 0x88, 0x0b, 0xf8, 0xbc, 0x12, 0xa8,
0x06, 0xeb, 0x5b, 0xad, 0xd2, 0x6e, 0x4f, 0xae, 0x65, 0xf9, 0xa4, 0x23, 0x58, 0xde, 0xef, 0x7c, 0x18, 0xe5, 0x2c, 0xc0, 0x5f, 0xbb, 0x7f, 0xc7, 0x67, 0x76, 0xe6, 0x9d, 0x1b, 0x98, 0x2a, 0x14,
0x07, 0xb6, 0xd3, 0xaa, 0x86, 0xd0, 0xa8, 0xd5, 0xf4, 0x6b, 0xdd, 0x58, 0x86, 0xd8, 0xf2, 0x0f, 0xa2, 0xdd, 0x93, 0x77, 0x89, 0x8d, 0x11, 0x39, 0xbd, 0x74, 0xb4, 0x1f, 0x5e, 0x7a, 0xe4, 0x4b,
0x08, 0xbb, 0x22, 0x89, 0xe9, 0xe9, 0x1b, 0x4d, 0x20, 0xff, 0x3f, 0x15, 0x62, 0x51, 0x6a, 0xb0, 0x7e, 0x97, 0x9b, 0x2c, 0x6c, 0xef, 0xe2, 0xab, 0x70, 0xc6, 0xdf, 0xc1, 0x19, 0x9f, 0x8d, 0xa5,
0x09, 0x28, 0xf0, 0x40, 0x8b, 0xf7, 0x25, 0xe6, 0x1d, 0x67, 0xd8, 0x71, 0x38, 0xa8, 0xee, 0xbc, 0x52, 0x96, 0x2d, 0x28, 0x47, 0xf1, 0x6e, 0x35, 0x87, 0x16, 0x3b, 0x16, 0x0e, 0x41, 0xb6, 0xad,
0x09, 0xf7, 0x69, 0x96, 0x31, 0xc1, 0x8d, 0xb0, 0xc3, 0x34, 0x91, 0xeb, 0x4b, 0x3c, 0x65, 0xb8, 0xf2, 0x79, 0x23, 0x8c, 0x5f, 0xc5, 0xe3, 0xab, 0x0b, 0xa5, 0x27, 0x37, 0xdb, 0xbd, 0x26, 0xf3,
0x09, 0xf9, 0x8a, 0xa9, 0x0f, 0x85, 0x19, 0x8c, 0x0d, 0x73, 0xf8, 0x9b, 0xa7, 0x7e, 0x87, 0xec, 0x6f, 0x59, 0x6c, 0x49, 0x13, 0x50, 0xfb, 0x8f, 0x8b, 0xba, 0x80, 0xa6, 0x2f, 0xbb, 0x91, 0x4b,
0x0a, 0x3c, 0x20, 0x72, 0xef, 0x4f, 0xbd, 0xbf, 0x04, 0x5e, 0x18, 0x76, 0xe8, 0x55, 0xbb, 0x8a, 0xd5, 0xdd, 0x08, 0x09, 0xf6, 0x6a, 0xd1, 0x44, 0x22, 0x39, 0xa7, 0xd8, 0x56, 0xad, 0x90, 0x8e,
0x0a, 0x62, 0x07, 0x07, 0xac, 0xf2, 0x3a, 0x4e, 0x6c, 0xdc, 0x35, 0x7a, 0x14, 0x99, 0xe1, 0x48, 0x52, 0xb6, 0x05, 0xd9, 0xeb, 0x61, 0x86, 0x42, 0x2f, 0x57, 0xd4, 0x58, 0xe6, 0x27, 0xd6, 0xc0,
0x0a, 0x75, 0xea, 0x0b, 0x1d, 0x70, 0xea, 0xa4, 0xd3, 0xf3, 0x74, 0x24, 0x6d, 0xb5, 0x4f, 0xc7, 0xb4, 0x3e, 0x7f, 0x59, 0x6a, 0x35, 0x33, 0x09, 0xb9, 0xc3, 0x6b, 0x4f, 0xd9, 0x75, 0x72, 0x5e,
0x0b, 0x49, 0x08, 0xad, 0x33, 0xcb, 0x2f, 0x7e, 0x87, 0xd3, 0x10, 0x8b, 0x74, 0x36, 0x4c, 0x5c, 0x42, 0xfa, 0x59, 0x78, 0x07, 0xee, 0xac, 0x98, 0xde, 0x5e, 0xc6, 0x3f, 0x58, 0x96, 0xce, 0x34,
0x0c, 0x0c, 0x78, 0x83, 0x7f, 0xa7, 0x67, 0xeb, 0x04, 0x5b, 0x81, 0x99, 0xe1, 0xe2, 0x0a, 0xd6, 0x66, 0xf9, 0x09, 0x28, 0xda, 0xee, 0xb8, 0xf5, 0xe5, 0x25, 0x3d, 0x8e, 0x78, 0x77, 0xfc, 0xb4,
0x0c, 0x51, 0xd7, 0x90, 0x6f, 0xc4, 0x93, 0x11, 0x49, 0x76, 0x5d, 0xa8, 0x86, 0x82, 0x42, 0x6b, 0x2c, 0xfe, 0x9e, 0x6a, 0xa4, 0xf2, 0x72, 0x53, 0xea, 0xb4, 0x00, 0x11, 0x14, 0x32, 0xe3, 0xa7,
0x0c, 0xa5, 0xe6, 0x02, 0x46, 0x82, 0x58, 0xb0, 0x68, 0x5a, 0x2b, 0x2b, 0x7f, 0x02, 0x8b, 0x97, 0x73, 0x54, 0x60, 0x2a, 0x82, 0xad, 0xa8, 0x6c, 0x99, 0x19, 0xfc, 0x47, 0x2a, 0xe4, 0xca, 0x40,
0x0c, 0xe0, 0x21, 0x00, 0xf6, 0x7c, 0x7e, 0xf8, 0x5f, 0x4e, 0xed, 0x36, 0x8f, 0x02, 0xbf, 0x70, 0x92, 0x38, 0x0a, 0x3c, 0x23, 0xca, 0x91, 0xfd, 0x7f, 0x19, 0x43, 0x0d, 0x94, 0xb0, 0x0c, 0x19,
0x0d, 0x85, 0xda, 0xaa, 0x48, 0x1b, 0x1b, 0xe8, 0x43, 0x20, 0xe1, 0x2b, 0x50, 0x78, 0x79, 0x4d, 0xa2, 0x96, 0x28, 0xac, 0xb4, 0x3b, 0x69, 0xc8, 0x90, 0x9d, 0x29, 0x1b, 0xb9, 0x95, 0xca, 0x72,
0x0d, 0xc2, 0x4c, 0x75, 0xeb, 0x1a, 0xef, 0x56, 0xb9, 0xf1, 0x3a, 0xb9, 0xde, 0x60, 0xe2, 0xec, 0xa1, 0xc4, 0x51, 0x00, 0x34, 0xe2, 0x90, 0xbb, 0xb3, 0x6c, 0xf6, 0x0a, 0x54, 0x9b, 0x23, 0x4c,
0x0e, 0x44, 0x21, 0x2b, 0xad, 0xf4, 0x0d, 0x6b, 0x8d, 0xe3, 0x31, 0x1e, 0x63, 0x20, 0x45, 0x37, 0x05, 0x88, 0xe0, 0xb2, 0x3b, 0x7a, 0x48, 0x0e, 0xb5, 0xdc, 0x10, 0xdb, 0x65, 0xd1, 0xb4, 0xb3,
0x0f, 0xa3, 0xa2, 0x9a, 0xd0, 0x51, 0x30, 0xd7, 0xfe, 0x5b, 0xf4, 0xd2, 0x59, 0x65, 0x63, 0xcd, 0xed, 0x1d, 0x87, 0x40, 0x96, 0xaa, 0xcc, 0x18, 0x10, 0x69, 0x93, 0x2a, 0x2e, 0x49, 0x51, 0x9a,
0x11, 0x42, 0xa0, 0xcc, 0x7c, 0x90, 0x04, 0xdf, 0xf6, 0x4c, 0x59, 0x48, 0x48, 0x4d, 0x6a, 0x7e, 0xc3, 0x51, 0x4e, 0x17, 0x6f, 0x5c, 0xa6, 0xbd, 0xee, 0xd7, 0xa0, 0x93, 0x94, 0x0b, 0x93, 0xcc,
0x13, 0x64, 0xb7, 0xb9, 0x4a, 0xb2, 0xa9, 0x3e, 0x79, 0xd2, 0x97, 0xeb, 0xf6, 0xce, 0x0a, 0x30, 0xf7, 0x99, 0x7e, 0x59, 0x29, 0xe4, 0x08, 0xef, 0x0d, 0x3b, 0x5d, 0x54, 0xc6, 0x4e, 0x7b, 0x90,
0x13, 0xa1, 0xf3, 0x7b, 0xed, 0xfb, 0x54, 0x17, 0xb6, 0xb7, 0x37, 0xe2, 0xa3, 0x81, 0x6c, 0x8f, 0xd5, 0x87, 0xd7, 0x4d, 0x83, 0x69, 0x14, 0xb2, 0xb2, 0xed, 0xc9, 0xfd, 0x6c, 0xa3, 0x0e, 0x58,
0x13, 0xdb, 0xa2, 0x84, 0x47, 0xfd, 0xbe, 0x3c, 0x8a, 0x24, 0xfe, 0xe3, 0xeb, 0x88, 0x63, 0x8c, 0xe1, 0xd8, 0xf9, 0x7c, 0xd4, 0x92, 0x50, 0x56, 0xc0, 0xad, 0x0e, 0x91, 0xca, 0x51, 0x23, 0x7d,
0x14, 0x77, 0x30, 0xb4, 0x2f, 0x11, 0xfe, 0x49, 0x3f, 0xe9, 0x02, 0xb6, 0x25, 0x1e, 0x97, 0xcd, 0x2b, 0x6f, 0x34, 0xd3, 0x6a, 0xf5, 0x93, 0x30, 0xf1, 0x1d, 0x02, 0xa4, 0x2f, 0x94, 0x0d, 0x07,
0x14, 0x8f, 0xe1, 0x8f, 0x71, 0x5a, 0x9f, 0xcf, 0xe1, 0xa4, 0x44, 0xce, 0x0f, 0xff, 0x7f, 0x85, 0x86, 0x9e, 0xb4, 0x22, 0x33, 0x0d, 0xc0, 0x4b, 0x31, 0x4c, 0x0f, 0x29, 0x5d, 0x6d, 0xa7, 0x9e,
0x15, 0x10, 0x98, 0x8d, 0x3d, 0xcc, 0xe1, 0x20, 0xf2, 0x26, 0x96, 0xa9, 0xe8, 0x7b, 0x02, 0xe7, 0xfa, 0xd6, 0x36, 0x7e, 0xf4, 0xae, 0x8b, 0xfd, 0x54, 0xcd, 0xb5, 0x28, 0xa5, 0xc4, 0x8e, 0x99,
0x16, 0x59, 0x8e, 0xe3, 0x9b, 0x71, 0x6e, 0xd9, 0xe4, 0x76, 0x5a, 0x44, 0xab, 0xf8, 0x69, 0x06, 0xc9, 0xb2, 0x5c, 0x25, 0xab, 0xf6, 0x31, 0xcc, 0x78, 0xec, 0xe6, 0xf7, 0x21, 0x1b, 0x03, 0x65,
0x17, 0x2f, 0xa5, 0x84, 0xb4, 0xee, 0xa5, 0xa5, 0xd4, 0x10, 0x4f, 0xb0, 0xac, 0x30, 0xed, 0xe0, 0x32, 0xcc, 0xd3, 0x1c, 0xd2, 0x67, 0x5d, 0x70, 0x03, 0xd7, 0x9a, 0x2c, 0xd0, 0xc2, 0x43, 0xe6,
0x17, 0x88, 0xd8, 0x4a, 0xa6, 0x1e, 0xde, 0x6f, 0x2e, 0x96, 0xcf, 0xc9, 0x00, 0xad, 0x1c, 0xab, 0x1c, 0x5b, 0xe8, 0x65, 0x37, 0xf2, 0x72, 0x12, 0xe8, 0xc2, 0x91, 0xd6, 0xad, 0xe3, 0xb1, 0xe9,
0x17, 0xc2, 0xb5, 0xb9, 0x66, 0x93, 0xcd, 0xc2, 0x95, 0x1c, 0x89, 0xdd, 0xe6, 0x41, 0xd1, 0x47, 0x16, 0x06, 0x3f, 0x5f, 0xc8, 0x79, 0x5c, 0xeb, 0xc6, 0x35, 0x37, 0x8b, 0x73, 0x04, 0x4e, 0x8b,
0x19, 0x9f, 0x3c, 0xf9, 0x90, 0x81, 0x6d, 0x71, 0x0f, 0x55, 0x67, 0x22, 0xca, 0x06, 0x85, 0x97, 0xc4, 0x34, 0x1b, 0x7f, 0x34, 0x66, 0x42, 0x33, 0x98, 0x39, 0xae, 0x30, 0x49, 0x53, 0x09, 0xd0,
0x19, 0xf4, 0xc7, 0x03, 0x0a, 0xd7, 0x40, 0x35, 0xf5, 0xbc, 0x07, 0xac, 0xe2, 0x85, 0xbd, 0x75, 0x38, 0xf2, 0x31, 0xd2, 0x57, 0x87, 0x75, 0x5d, 0x72, 0x07, 0x1e, 0xde, 0x87, 0x9c, 0x69, 0x78,
0x1a, 0x74, 0x74, 0x0e, 0xbb, 0xe6, 0xa0, 0xe7, 0xdd, 0x44, 0xcc, 0x3d, 0x8e, 0x29, 0xf8, 0xfc, 0xf4, 0x2b, 0x64, 0x22, 0x98, 0xa5, 0xc5, 0xa5, 0x86, 0xd7, 0x7b, 0xe0, 0xdb, 0x15, 0xc2, 0xf9,
0x1b, 0x90, 0x91, 0x15, 0xa8, 0xd4, 0x73, 0xe5, 0x13, 0x28, 0xa8, 0x78, 0x23, 0xbd, 0x62, 0x1c, 0xe6, 0x55, 0xdf, 0xae, 0x54, 0xfa, 0x2b, 0xfa, 0x72, 0xfd, 0xc0, 0x29, 0x86, 0x11, 0xd6, 0xb8,
0x1b, 0x9a, 0x8d, 0x23, 0xff, 0xc2, 0x11, 0xef, 0xf6, 0xf1, 0x2d, 0x17, 0x03, 0x7e, 0xb0, 0x76, 0xea, 0x46, 0x56, 0x2d, 0xec, 0x93, 0x7f, 0x44, 0xcc, 0x49, 0xd4, 0xaf, 0x1c, 0x11, 0x9b, 0xa0,
0x1b, 0xcf, 0x16, 0x11, 0xe0, 0xcc, 0x92, 0xc9, 0xd4, 0x6d, 0x2a, 0x51, 0xc7, 0xec, 0xf6, 0xec, 0x63, 0xc5, 0x62, 0xef, 0x75, 0x93, 0x24, 0xa1, 0xd9, 0x15, 0x1d, 0x50, 0x8a, 0x16, 0xb7, 0xb3,
0x1c, 0x19, 0xa5, 0xa2, 0x40, 0xa3, 0x61, 0x13, 0x1d, 0xcc, 0x5e, 0xc2, 0x53, 0x63, 0xda, 0x6e, 0x79, 0xc7, 0xd5, 0x5b, 0x3c, 0x79, 0xc0, 0x97, 0x6c, 0x94, 0x7f, 0x1d, 0x04, 0xa3, 0x8a, 0xaa,
0x1c, 0xb4, 0xdc, 0xca, 0xf2, 0xc8, 0x12, 0xcf, 0xa7, 0xb4, 0x93, 0x8e, 0x13, 0x71, 0xfe, 0x2b, 0x96, 0x91, 0x0f, 0xe4, 0x07, 0x21, 0x6f, 0xd9, 0x54, 0x28, 0x67, 0x2d, 0x6c, 0x7e, 0x73, 0x16,
0x1d, 0x5c, 0x15, 0xce, 0xd7, 0x38, 0x45, 0xb7, 0xe9, 0x68, 0xbf, 0x3a, 0xce, 0x52, 0xc5, 0xc6, 0x60, 0xaa, 0x2d, 0xa6, 0xdd, 0xef, 0xf2, 0xce, 0x64, 0x45, 0xa0, 0x4b, 0x88, 0x5a, 0x0f, 0x12,
0x1d, 0x8b, 0x58, 0xc1, 0xfd, 0xb8, 0xda, 0x8b, 0x33, 0xcc, 0xee, 0x1e, 0x5f, 0x97, 0x3a, 0xf7, 0x34, 0xd9, 0x0e, 0xf3, 0x17, 0xe3, 0x3f, 0x5d, 0xb1, 0x57, 0x3c, 0x2b, 0xa0, 0x88, 0xa8, 0x0c,
0x1d, 0xa5, 0x3f, 0x3a, 0x2c, 0x7c, 0x41, 0xc9, 0x30, 0x99, 0x73, 0x72, 0x66, 0xb5, 0x61, 0x9f, 0xf6, 0x16, 0xa4, 0x33, 0xfb, 0x3b, 0x87, 0x02, 0x34, 0x62, 0x2d, 0x7a, 0xaf, 0xab, 0x9a, 0x7a,
0x1d, 0xc8, 0xa3, 0xf5, 0x9b, 0x23, 0xcc, 0xc4, 0x11, 0xd4, 0x66, 0x91, 0xfc, 0x9b, 0x5c, 0x35, 0x99, 0x3b, 0xca, 0x20, 0xe7, 0xe2, 0x29, 0x9f, 0x1a, 0x95, 0x22, 0x3b, 0x9f, 0x11, 0x2e, 0x43,
0x1e, 0xae, 0xd6, 0x2c, 0x4a, 0xbc, 0xb2, 0x52, 0x46, 0x43, 0xe1, 0x72, 0x3f, 0x6a, 0xad, 0xcc, 0x31, 0xa7, 0x4a, 0xf4, 0xd2, 0x28, 0x5d, 0x3b, 0x13, 0x88, 0x0c, 0xc4, 0x4c, 0x22, 0xde, 0xc5,
0x1f, 0x16, 0x07, 0x8c, 0xce, 0x00, 0x9d, 0xf6, 0x2e, 0xdb, 0x9e, 0x71, 0x70, 0xe6, 0x6c, 0xaa, 0xe6, 0x70, 0xbc, 0xe7, 0x1b, 0x8f, 0x92, 0xd3, 0x82, 0x80, 0xc5, 0x6a, 0xa3, 0x72, 0x03, 0x1d,
0x1f, 0x17, 0x91, 0x86, 0xef, 0xdf, 0x5e, 0xf2, 0xde, 0x01, 0x82, 0x45, 0xba, 0x0e, 0xae, 0x81, 0x34, 0x86, 0x86, 0x01, 0xba, 0x0d, 0x35, 0xff, 0x3d, 0x98, 0x65, 0xc1, 0x53, 0x7c, 0xed, 0x93,
0x1f, 0x53, 0x59, 0x87, 0xea, 0x73, 0x86, 0xdf, 0x6b, 0xfe, 0x75, 0xf5, 0x1e, 0xfd, 0x35, 0xe4, 0xd2, 0xda, 0x4b, 0x00, 0x2d, 0xca, 0x29, 0x99, 0xc0, 0xcb, 0x4b, 0x76, 0x7b, 0xaf, 0xaf, 0xfd,
0x1f, 0x8a, 0x0e, 0x13, 0xaa, 0xde, 0x08, 0x85, 0xa0, 0x6b, 0x5d, 0x82, 0x2b, 0xb2, 0x1d, 0x81, 0x11, 0x66, 0x4c, 0x37, 0x69, 0x1f, 0x0d, 0x25, 0x6e, 0xba, 0x84, 0x02, 0x77, 0x51, 0x1b, 0xca,
0x1f, 0xb6, 0x19, 0xfe, 0x15, 0x04, 0xef, 0x78, 0xc8, 0xbf, 0x59, 0x29, 0x4b, 0x16, 0xc6, 0xd9, 0xbf, 0x1d, 0xa7, 0x41, 0xfb, 0x58, 0x2d, 0xe1, 0x25, 0xb6, 0xa0, 0x44, 0xf6, 0x96, 0x1c, 0x57,
0x21, 0x16, 0x18, 0x3b, 0xba, 0xb5, 0xd6, 0x96, 0x4c, 0x00, 0x1c, 0x93, 0x1a, 0x09, 0xec, 0xa1, 0xdc, 0x0f, 0xd6, 0x65, 0x1a, 0x61, 0xbe, 0x4a, 0x8a, 0x95, 0x48, 0xdc, 0x47, 0x6b, 0x90, 0xb1,
0x21, 0x25, 0x8f, 0xa3, 0x87, 0x71, 0x77, 0xac, 0x48, 0x0c, 0xb5, 0x71, 0x13, 0x4b, 0xee, 0x7b, 0xa1, 0x53, 0x1d, 0xdd, 0x12, 0x74, 0x21, 0x7d, 0xff, 0x71, 0xbc, 0xd6, 0x18, 0xf6, 0xc3, 0xd5,
0x21, 0x55, 0x4d, 0x1f, 0x3b, 0xf9, 0xf5, 0x2d, 0x3c, 0xd2, 0x97, 0xd2, 0x7d, 0xf5, 0x62, 0x15, 0xc0, 0xfd, 0x08, 0xa0, 0xbf, 0x67, 0x38, 0x68, 0xf3, 0xd8, 0xc6, 0xc0, 0x64, 0xdc, 0x56, 0x09,
0x21, 0xf2, 0x7d, 0x89, 0xf2, 0xe7, 0x7d, 0xee, 0x7c, 0xd4, 0x33, 0x6e, 0x3a, 0x3a, 0xde, 0x36, 0x2a, 0x2a, 0xae, 0x9f, 0xb2, 0xef, 0xe2, 0x07, 0x94, 0x91, 0xa5, 0x18, 0xf3, 0xd5, 0x1f, 0xed,
0x22, 0xb5, 0xa8, 0x8d, 0x79, 0xb8, 0x14, 0x65, 0x98, 0x61, 0x3b, 0x37, 0x01, 0xb0, 0xd2, 0xad, 0x3e, 0x1d, 0x2b, 0xc2, 0x15, 0xd3, 0xa6, 0x13, 0xa3, 0x03, 0x56, 0x95, 0x32, 0x39, 0x48, 0x5c,
0x22, 0xc3, 0x86, 0x76, 0x06, 0xa6, 0x25, 0x04, 0x8e, 0x1d, 0x9d, 0x52, 0x30, 0xf0, 0x7f, 0xae, 0x41, 0xe7, 0x0b, 0xd0, 0x8e, 0xa9, 0x78, 0xbd, 0xb3, 0x75, 0x63, 0xc0, 0xed, 0xd9, 0xda, 0x03,
0x23, 0x14, 0x2e, 0x14, 0x42, 0x4f, 0xb3, 0xff, 0x4e, 0xfc, 0x75, 0xd0, 0x0b, 0x63, 0x86, 0x77, 0x27, 0x84, 0x1a, 0xba, 0x50, 0x05, 0x14, 0x90, 0x70, 0xee, 0x24, 0x17, 0xdf, 0x8a, 0xb7, 0x99,
0x23, 0xa0, 0xf1, 0xde, 0x04, 0xef, 0x67, 0x8e, 0x62, 0x1a, 0x44, 0x90, 0x40, 0xcf, 0x51, 0x9d, 0xdc, 0x36, 0x79, 0xfe, 0x54, 0xc9, 0xe2, 0xe0, 0x89, 0x7d, 0xfe, 0x2c, 0x80, 0xd3, 0xdc, 0x26,
0x23, 0xfc, 0xd6, 0xbf, 0x30, 0x84, 0xce, 0xe6, 0xa9, 0xf9, 0x88, 0x5e, 0x52, 0x39, 0x23, 0x0b, 0x0a, 0xdd, 0xe0, 0xc8, 0x70, 0x58, 0x9e, 0xe4, 0x61, 0x55, 0x1d, 0x1c, 0xa8, 0xf4, 0xe8, 0x5b,
0x24, 0x5e, 0x9b, 0x81, 0x34, 0x2e, 0x45, 0xe1, 0xba, 0xf4, 0xf8, 0xd8, 0x30, 0xd1, 0x8e, 0xa7, 0xfa, 0xe9, 0xfd, 0xff, 0x05, 0x49, 0x72, 0x90, 0xea, 0x64, 0x42, 0xc4, 0xef, 0x0f, 0xfa, 0x57,
0x25, 0x0a, 0xe0, 0xba, 0x86, 0x0d, 0x6d, 0x46, 0x89, 0x44, 0x91, 0xd6, 0x30, 0xd5, 0x8b, 0x1c, 0xa0, 0x08, 0xf6, 0x95, 0xc9, 0x2c, 0xe2, 0x08, 0x4a, 0x29, 0x54, 0x86, 0xf7, 0x1f, 0x98, 0x5b,
0x26, 0x29, 0xae, 0x14, 0xb4, 0x67, 0xda, 0x5d, 0xf8, 0xe9, 0xeb, 0x6f, 0x1a, 0xdc, 0x1a, 0x9f, 0x50, 0xa7, 0x8d, 0xbc, 0x3c, 0x24, 0x62, 0x71, 0xc8, 0x53, 0x0d, 0x0d, 0x35, 0x99, 0x7a, 0x4c,
0x26, 0x4c, 0xbc, 0x57, 0x65, 0x71, 0x8a, 0x0b, 0xcc, 0xb0, 0xf7, 0x9c, 0x0f, 0xdd, 0x13, 0x3a, 0x89, 0x82, 0x03, 0xfb, 0x6f, 0x4f, 0x20, 0x52, 0xcb, 0x06, 0x47, 0xfb, 0xf6, 0x00, 0x0e, 0xd0,
0x26, 0x6c, 0x14, 0x29, 0xc8, 0xdc, 0x38, 0x94, 0x81, 0xb3, 0x81, 0x4b, 0xc3, 0xaf, 0x87, 0x23, 0xdb, 0x28, 0xee, 0xce, 0xb0, 0xbb, 0x02, 0x6b, 0xbb, 0xed, 0xa0, 0xcc, 0x41, 0xd3, 0x6b, 0xc3,
0x26, 0x79, 0x65, 0x0f, 0xe3, 0x41, 0xf2, 0xcf, 0x1e, 0xa8, 0x83, 0x46, 0x0b, 0x35, 0x56, 0xaa, 0xaf, 0x77, 0xa7, 0x0d, 0x6b, 0x8d, 0xc4, 0x84, 0xc9, 0x30, 0x1d, 0x1b, 0x74, 0x6c, 0xf7, 0xb5,
0x26, 0xac, 0xa3, 0xc9, 0x27, 0x09, 0x57, 0x72, 0xfa, 0x26, 0xa4, 0xd6, 0x36, 0x80, 0x59, 0x71, 0x30, 0xad, 0x16, 0x1e, 0xee, 0x8c, 0xbc, 0xe3, 0x4b, 0x59, 0xe1, 0x0c, 0x61, 0x67, 0xe9, 0x2a,
0x27, 0x0c, 0x84, 0xb2, 0x9d, 0x86, 0xf1, 0x63, 0x12, 0xb0, 0x6a, 0xaa, 0xe4, 0xeb, 0xb8, 0xdf, 0xf8, 0xde, 0x7d, 0x08, 0x0d, 0x82, 0x5b, 0x88, 0x39, 0xff, 0x17, 0x66, 0x27, 0x4e, 0xff, 0x47,
0x28, 0x41, 0x53, 0xe7, 0xd0, 0x4a, 0x9f, 0x18, 0x7e, 0x5c, 0x3d, 0xbf, 0xe1, 0x7b, 0x26, 0x72, 0xad, 0x2f, 0xbd, 0xd1, 0x19, 0xf2, 0x7b, 0xec, 0x78, 0x94, 0x17, 0xb7, 0x91, 0x98, 0x53, 0xec,
0x28, 0x88, 0x78, 0xf1, 0x2e, 0x8b, 0x9c, 0x6c, 0xcb, 0xf6, 0x01, 0xc7, 0x3d, 0x5f, 0x4e, 0x98, 0x5c, 0xac, 0x0f, 0xf3, 0xfc, 0xb0, 0xc2, 0x4e, 0x44, 0x14, 0x91, 0x2b, 0x3e, 0xb9, 0x1f, 0x15,
0x28, 0xce, 0x0d, 0xad, 0x50, 0x73, 0x09, 0x00, 0xc5, 0xd1, 0x8c, 0xc5, 0x8d, 0x52, 0x55, 0x29, 0x34, 0x52, 0xca, 0x37, 0xd7, 0x64, 0x86, 0x8c, 0x16, 0xea, 0xa9, 0xea, 0xf6, 0xbd, 0x7c, 0x83,
0x29, 0x92, 0x06, 0x8e, 0x4f, 0x61, 0x6f, 0x2d, 0x72, 0x53, 0xe9, 0xd5, 0x81, 0x16, 0xa9, 0x7f, 0x22, 0x92, 0x3f, 0x4d, 0xc1, 0xb7, 0x8a, 0x58, 0xbe, 0x44, 0x99, 0xb9, 0x82, 0xec, 0xf2, 0x70,
0x29, 0xcc, 0xa4, 0x54, 0x4e, 0xa3, 0x30, 0xd6, 0x15, 0x91, 0xc7, 0x84, 0x69, 0x5c, 0x14, 0x9c, 0x6b, 0x04, 0x00, 0x22, 0xac, 0x7b, 0x5b, 0x89, 0xcb, 0xd7, 0x28, 0x00, 0xd1, 0x08, 0x40, 0xea,
0x2a, 0x92, 0x10, 0x38, 0x65, 0xfb, 0x60, 0xfc, 0x84, 0xd3, 0x57, 0x18, 0x0c, 0xc7, 0xdb, 0x45, 0x35, 0x9b, 0x04, 0xad, 0x41, 0x9e, 0x8c, 0x4f, 0xab, 0x74, 0xf7, 0x14, 0x3f, 0xc0, 0x65, 0x5a,
0x2b, 0x1b, 0x9e, 0xcc, 0xf5, 0x85, 0xb1, 0x1c, 0x51, 0x22, 0x65, 0x1d, 0x7b, 0x94, 0x53, 0x4b, 0xb1, 0x31, 0xaa, 0x7c, 0x87, 0x4e, 0x22, 0x62, 0x03, 0x8b, 0x85, 0xdb, 0x3e, 0xe8, 0x3e, 0x4d,
0x2b, 0x21, 0x02, 0x9f, 0xa0, 0x33, 0x52, 0x6d, 0x1d, 0xcd, 0x9e, 0x87, 0xad, 0x88, 0x93, 0xf9, 0xb5, 0xa0, 0x89, 0x87, 0xc3, 0x27, 0x1b, 0x8a, 0x86, 0x71, 0x68, 0x65, 0xde, 0x53, 0xd9, 0x58,
0x2b, 0x22, 0x98, 0xea, 0xa2, 0x6b, 0x9d, 0xc4, 0xa4, 0x55, 0x8a, 0xe9, 0x2e, 0x7b, 0xb0, 0xe4, 0xf8, 0x5c, 0xf3, 0x4b, 0xf8, 0x48, 0xfd, 0xf6, 0x36, 0xc0, 0xc1, 0x1f, 0xbe, 0xc4, 0x98, 0x97,
0x2b, 0x7a, 0x7a, 0x4d, 0xaf, 0xc3, 0x5e, 0x49, 0xd0, 0x3c, 0xbe, 0x71, 0x18, 0xe6, 0xba, 0x45, 0x82, 0x40, 0x1e, 0x17, 0x76, 0xb9, 0xc1, 0x8a, 0x25, 0x97, 0x72, 0x5b, 0x05, 0xa6, 0x05, 0xf1,
0x2d, 0xcf, 0x8e, 0x8d, 0x81, 0x70, 0x23, 0xd1, 0xe8, 0xe1, 0x45, 0x1a, 0x3d, 0x68, 0xd6, 0xec, 0x30, 0xd9, 0xbe, 0xd9, 0x4c, 0xbc, 0xb8, 0x7f, 0x19, 0xdd, 0xc1, 0xcc, 0x01, 0x16, 0xac, 0x1a,
0x2e, 0x69, 0x21, 0xdc, 0x97, 0x0a, 0xac, 0x43, 0x3d, 0xe9, 0xae, 0x4e, 0xd6, 0x6b, 0x26, 0x81, 0xa4, 0xcd, 0x2b, 0xe6, 0x49, 0xd2, 0xee, 0x9a, 0x56, 0x18, 0x71, 0xc3, 0x35, 0xe8, 0xb1, 0xb7,
0x2e, 0xa4, 0xcb, 0x6a, 0x1f, 0x1e, 0xb1, 0xd3, 0xdc, 0xe8, 0x2d, 0x54, 0xfd, 0xe2, 0x6d, 0xed, 0x24, 0x3b, 0xa3, 0xe1, 0x8d, 0xe7, 0xc6, 0xd2, 0x11, 0x90, 0x2a, 0x59, 0x4f, 0xe5, 0x67, 0x88,
0x2f, 0x9a, 0x8e, 0xb6, 0xc8, 0xe1, 0x8e, 0x7e, 0x11, 0x8a, 0xfe, 0x9b, 0x51, 0xe2, 0x33, 0xd8, 0x8e, 0xc7, 0x6c, 0x0e, 0xa2, 0x56, 0xff, 0x1f, 0x2a, 0x84, 0x2b, 0x3a, 0x0e, 0xa9, 0xf4, 0x66,
0x31, 0x09, 0x49, 0xb7, 0xfd, 0x26, 0xaf, 0x0e, 0x2e, 0x29, 0xe1, 0xc9, 0x02, 0xac, 0x19, 0x85, 0x74, 0xf0, 0x96, 0xd1, 0x58, 0x36, 0x37, 0x6c, 0x8b, 0x3e, 0xf2, 0xdd, 0x1f, 0xb5, 0xf1, 0xc5,
0x31, 0x1a, 0x2a, 0xc5, 0x5b, 0x50, 0xc0, 0x9b, 0x30, 0xb3, 0xcc, 0x93, 0xb9, 0x94, 0xa1, 0x19, 0x15, 0x3e, 0xee, 0xac, 0x54, 0xef, 0x89, 0x2f, 0xc4, 0x47, 0xbb, 0xbd, 0x96, 0x10, 0x1a, 0xa1,
0x31, 0x53, 0xb3, 0xe3, 0x05, 0x57, 0x54, 0x39, 0x91, 0x46, 0x05, 0xd9, 0x76, 0xcf, 0x6e, 0xad, 0x5a, 0x50, 0x0e, 0x54, 0xd0, 0xb6, 0xab, 0xcd, 0xaa, 0xfc, 0xce, 0xd1, 0xbc, 0x47, 0xe0, 0x4f,
0x32, 0x4c, 0xbe, 0x75, 0xef, 0x34, 0xe0, 0x9a, 0x98, 0xc7, 0x1b, 0x18, 0x6f, 0x53, 0x5f, 0x90, 0x91, 0xa1, 0xff, 0x25, 0x7b, 0xea, 0x93, 0xdf, 0xea, 0xf1, 0x99, 0xeb, 0x35, 0x2c, 0xa0, 0xf6,
0x32, 0x69, 0x67, 0xc7, 0xff, 0xc1, 0xb8, 0x6d, 0xb8, 0xb3, 0x2b, 0x05, 0x70, 0xe8, 0x8a, 0x89, 0xcc, 0x15, 0x34, 0xcf, 0xcf, 0x30, 0x0b, 0x98, 0xc0, 0x77, 0xe4, 0x73, 0xf9, 0xb1, 0x8f, 0xa1,
0x32, 0xad, 0x32, 0x96, 0x82, 0x9b, 0xc4, 0x6d, 0xcf, 0xac, 0x5e, 0xdd, 0xcb, 0x9d, 0xbf, 0x2c, 0x1e, 0xed, 0x5c, 0x11, 0xf8, 0x3b, 0x22, 0x10, 0xcf, 0x9c, 0x6e, 0x60, 0xc7, 0x98, 0xd4, 0xa7,
0x32, 0xd4, 0xba, 0x3a, 0x03, 0xd1, 0xf2, 0xb6, 0xbc, 0x80, 0xd0, 0x11, 0xc0, 0xfa, 0x10, 0x77, 0x47, 0xb7, 0xb5, 0x73, 0xfe, 0x96, 0xaa, 0xff, 0xf2, 0x17, 0x35, 0xec, 0xf5, 0x62, 0xd3, 0x37,
0x33, 0x24, 0x50, 0x89, 0x0f, 0x9c, 0x8f, 0xff, 0x7e, 0xc1, 0x5c, 0x53, 0x92, 0x1b, 0xf2, 0x72, 0x27, 0xab, 0x9e, 0xa0, 0x6b, 0x0e, 0x1c, 0x81, 0x6d, 0x81, 0x9f, 0x8e, 0x21, 0xcf, 0xb5, 0x5f,
0x33, 0x9c, 0x2b, 0xcf, 0x04, 0x45, 0xba, 0xa7, 0x34, 0x5a, 0x02, 0xcd, 0xe5, 0x05, 0xe1, 0x72, 0xd2, 0x4c, 0xc9, 0xce, 0xa2, 0x9a, 0x92, 0xeb, 0xee, 0x3f, 0x39, 0x01, 0x69, 0x3f, 0xd2, 0xc8,
0x34, 0x0d, 0xa3, 0x2b, 0x58, 0x33, 0x1c, 0x8e, 0x2b, 0x56, 0x1b, 0xaf, 0x30, 0x0c, 0xa9, 0xdf, 0xd6, 0xb9, 0x1c, 0xd2, 0x27, 0x0e, 0xe0, 0xe2, 0xa3, 0x49, 0x58, 0xb1, 0xc6, 0x25, 0x9e, 0x85,
0x35, 0xc1, 0x6a, 0xa2, 0xbb, 0x4d, 0xad, 0xf5, 0x02, 0x8f, 0x48, 0x01, 0x18, 0x5c, 0xd3, 0x68, 0xb9, 0x22, 0xc6, 0xcf, 0x76, 0x51, 0xcb, 0x7f, 0xef, 0x30, 0xdf, 0xb9, 0x59, 0x20, 0xfb, 0x99,
0x36, 0x2e, 0xd3, 0x1d, 0x20, 0xb1, 0xe0, 0x03, 0x92, 0x28, 0x12, 0x31, 0xa9, 0x6f, 0x0a, 0x0a, 0xcf, 0xde, 0x02, 0x61, 0x89, 0x53, 0xe6, 0x95, 0xc9, 0xef, 0x2e, 0xb0, 0xba, 0xc3, 0x75, 0x50,
0x36, 0x7a, 0x31, 0xe5, 0x83, 0x88, 0x31, 0xad, 0x2c, 0x07, 0x46, 0x47, 0x88, 0x6a, 0x6c, 0xdf, 0xf2, 0x17, 0xe6, 0xb1, 0xba, 0x91, 0x0b, 0xff, 0x85, 0xdc, 0x7a, 0x87, 0xae, 0x9b, 0x5e, 0x98,
0x36, 0xb7, 0xcd, 0xb6, 0x56, 0x4c, 0x58, 0xcb, 0x54, 0x89, 0x5b, 0x6d, 0x2c, 0x73, 0xf8, 0x8d, 0x29, 0x08, 0xbc, 0xbd, 0x69, 0x3b, 0xfd, 0x25, 0x39, 0x45, 0xbd, 0x31, 0xe3, 0xee, 0x81, 0xbc,
0x37, 0x65, 0xd7, 0x69, 0xc0, 0x5b, 0xf9, 0x8b, 0x42, 0x7b, 0x35, 0x11, 0x90, 0x3b, 0x21, 0x37, 0xe8, 0xa4, 0x9b, 0x6f, 0x85, 0x9d, 0x0a, 0xf1, 0x59, 0xed, 0x6a, 0x86, 0x78, 0x6a, 0xa6, 0x34,
0x37, 0xa4, 0x80, 0x37, 0x4d, 0xaf, 0x62, 0x02, 0xce, 0x79, 0x0c, 0x31, 0x8a, 0x2b, 0xb8, 0xaa, 0x37, 0x97, 0x31, 0x12, 0x61, 0x16, 0x0a, 0x8e, 0x30, 0x55, 0x8b, 0x7d, 0xea, 0x78, 0xc7, 0xa6,
0x38, 0x60, 0xb7, 0xc7, 0xff, 0x6f, 0x4b, 0xcd, 0x58, 0x65, 0x84, 0x3b, 0x2e, 0x86, 0xb2, 0xec, 0xa5, 0xff, 0x4f, 0xb0, 0x71, 0x99, 0x9f, 0x21, 0x29, 0xd4, 0xc7, 0x75, 0x3b, 0x80, 0x6f, 0x34,
0x38, 0x6d, 0x69, 0x5c, 0xdf, 0x2d, 0x45, 0x76, 0xe0, 0x1b, 0xca, 0xcc, 0xf5, 0xe4, 0x9e, 0x78, 0xda, 0x51, 0xaf, 0x99, 0x55, 0xc0, 0xb8, 0xfa, 0x76, 0x06, 0x37, 0x3b, 0x00, 0x79, 0x94, 0xb3,
0x38, 0x90, 0x9d, 0xaf, 0x2f, 0xe2, 0x9b, 0xbf, 0xe2, 0x23, 0x03, 0x93, 0x9d, 0x39, 0x04, 0xf3, 0x8d, 0xca, 0x48, 0xb7, 0xf2, 0xa4, 0x1f, 0x28, 0xf3, 0x4d, 0xe5, 0x64, 0xa0, 0x24, 0x27, 0x81,
0x39, 0x89, 0x95, 0x77, 0x0d, 0x21, 0xe9, 0xf6, 0x6b, 0x90, 0xd6, 0x9d, 0x1e, 0xde, 0x16, 0xc9, 0xe5, 0x8c, 0x06, 0x34, 0xb2, 0xf7, 0xd2, 0x6b, 0x1f, 0x22, 0x50, 0x1d, 0xd9, 0x3f, 0xda, 0xe5,
0x39, 0x9f, 0x9d, 0xa6, 0xcf, 0x5a, 0x87, 0x83, 0x96, 0x37, 0xb5, 0x5f, 0x62, 0xbb, 0x2c, 0xc6, 0xa9, 0x3f, 0xa5, 0xaf, 0x7f, 0xe7, 0xad, 0x76, 0xb4, 0xaf, 0x0f, 0xb3, 0x20, 0xc9, 0x81, 0x27,
0x39, 0xab, 0xed, 0x29, 0x35, 0x89, 0x1e, 0xef, 0x96, 0xe2, 0xb7, 0x33, 0xbb, 0xc6, 0x95, 0x1d, 0xaf, 0xad, 0x1a, 0x4c, 0x6b, 0x50, 0x0d, 0x2d, 0x9b, 0x28, 0xc3, 0x58, 0x35, 0x5a, 0x6a, 0xb8,
0x3a, 0x4f, 0x74, 0xbe, 0xaf, 0xae, 0x2b, 0x93, 0x83, 0xad, 0x82, 0x15, 0xd2, 0x33, 0xa6, 0xcf, 0x3d, 0x05, 0x7f, 0xb3, 0xc7, 0xe2, 0x13, 0xe8, 0x97, 0xbe, 0xef, 0x42, 0x55, 0xfa, 0xee, 0x9d,
0x3a, 0x91, 0xf0, 0xf9, 0xe5, 0x28, 0x7f, 0xa2, 0x99, 0x4c, 0x7d, 0x93, 0x0b, 0x2c, 0x1a, 0x5e, 0xe1, 0x4c, 0xe8, 0xe1, 0xc8, 0x30, 0x4a, 0xe4, 0x95, 0xad, 0xc5, 0x8c, 0xc4, 0x45, 0x3c, 0x0c,
0x3a, 0x9e, 0x49, 0xe6, 0xe6, 0x44, 0xc0, 0xab, 0xec, 0x17, 0xd3, 0x2d, 0x02, 0x03, 0x39, 0xd1, 0x71, 0x43, 0x9a, 0xba, 0x32, 0x74, 0x09, 0xa7, 0x79, 0x7e, 0x66, 0x86, 0xbd, 0x0f, 0x64, 0x1c,
0x3a, 0xe7, 0x6c, 0x45, 0xca, 0x70, 0xe9, 0x18, 0x0c, 0x15, 0x59, 0x98, 0x1f, 0x42, 0x62, 0x2d, 0xd2, 0x51, 0xbc, 0xa1, 0xfb, 0xe6, 0xb9, 0x01, 0xc5, 0x2e, 0xc1, 0x16, 0x73, 0xb0, 0x35, 0x14,
0x3b, 0x30, 0xc3, 0xe6, 0xa9, 0x23, 0xcb, 0xb7, 0xcf, 0x65, 0xb5, 0x39, 0x02, 0x5f, 0x12, 0xb1, 0xc8, 0x10, 0xd7, 0x44, 0x80, 0xf2, 0x5c, 0xbf, 0xcb, 0x9a, 0x7b, 0xfd, 0x63, 0x3f, 0x06, 0xed,
0x3b, 0x76, 0x96, 0xdf, 0x62, 0x7a, 0xde, 0x30, 0xbb, 0x15, 0xbd, 0xc5, 0xce, 0x3f, 0x3c, 0x27, 0x24, 0x0c, 0x97, 0x33, 0x53, 0xe8, 0x55, 0x1e, 0x7b, 0x03, 0x6c, 0x90, 0xd0, 0x12, 0x80, 0xc9,
0x3b, 0xe8, 0xe7, 0xeb, 0x34, 0x8d, 0x35, 0xc1, 0x92, 0x8f, 0x19, 0xc7, 0x69, 0x84, 0x67, 0x88, 0x99, 0x16, 0x41, 0xd1, 0xf6, 0xcf, 0x09, 0x51, 0x4c, 0xa1, 0x02, 0x69, 0x93, 0x4f, 0x73, 0x59,
0x3e, 0x1a, 0x60, 0x21, 0xb3, 0xc6, 0x06, 0x6e, 0x94, 0xf7, 0xf0, 0x6a, 0xd7, 0xb2, 0x9e, 0x35, 0xb1, 0xbd, 0x9e, 0xe4, 0x96, 0x82, 0x7a, 0x29, 0x0e, 0xfb, 0x9b, 0xe7, 0xa2, 0x7c, 0x5d, 0x63,
0x3e, 0x33, 0x3d, 0xe8, 0x7d, 0x21, 0x12, 0x47, 0xb2, 0xab, 0x00, 0x09, 0x3c, 0xab, 0x48, 0xf6, 0x06, 0x9d, 0x71, 0x8a, 0xfd, 0x29, 0xe9, 0x91, 0x7a, 0x3d, 0x5f, 0x60, 0xe8, 0x75, 0x57, 0xb6,
0x3e, 0x39, 0x26, 0xf0, 0xb8, 0xa1, 0x5a, 0xd5, 0xa1, 0x41, 0x67, 0xbb, 0x64, 0x7a, 0x84, 0x3c, 0x3d, 0x43, 0x21, 0xe3, 0x5d, 0xbc, 0x44, 0xdc, 0xe8, 0xc8, 0x37, 0x41, 0x7f, 0x2d, 0x28, 0xb0,
0x3e, 0x82, 0x8e, 0xf5, 0xe8, 0x80, 0xfe, 0x62, 0xb3, 0x3d, 0x36, 0xb7, 0x8f, 0x22, 0x35, 0xf1, 0xa3, 0x14, 0x15, 0x38, 0x99, 0xac, 0x80, 0x46, 0x95, 0x97, 0x29, 0x7b, 0x9a, 0x9d, 0xd2, 0x2d,
0x3e, 0xce, 0x27, 0xcb, 0xb3, 0xec, 0x44, 0x38, 0xcc, 0xe5, 0x23, 0xb9, 0x27, 0xc4, 0xf0, 0x5f, 0xdc, 0x5c, 0x59, 0x3a, 0x37, 0x66, 0xdb, 0x98, 0x4c, 0x5e, 0x43, 0x7a, 0x3f, 0xf6, 0xa1, 0x6b,
0x3f, 0xe9, 0xf8, 0xd1, 0x1e, 0xdc, 0xa3, 0xfc, 0x18, 0x99, 0x10, 0x04, 0x84, 0xde, 0x4c, 0xc2, 0xc6, 0x26, 0xab, 0xb3, 0x8b, 0x73, 0x98, 0x5a, 0x44, 0x1b, 0x7c, 0x3a, 0x0d, 0x39, 0xca, 0x54,
0x40, 0x0a, 0xc6, 0x6d, 0x59, 0xb7, 0xb0, 0x94, 0xa9, 0xe3, 0x0b, 0x01, 0xa6, 0xbd, 0x01, 0x3a, 0xff, 0x1d, 0x30, 0x57, 0x0f, 0x83, 0xe7, 0x59, 0x2f, 0x42, 0x1d, 0xbe, 0x5f, 0xf4, 0xba, 0x8f,
0x40, 0x8b, 0x8b, 0x3d, 0xf5, 0xab, 0xb0, 0x43, 0x52, 0x1a, 0x49, 0x35, 0x25, 0x02, 0x31, 0x75, 0xab, 0x12, 0x61, 0xb1, 0xde, 0x21, 0x06, 0x4d, 0x6b, 0xf2, 0x47, 0xce, 0x14, 0x21, 0x53, 0xb9,
0x40, 0xd6, 0xca, 0xe0, 0x29, 0x73, 0x78, 0x90, 0x80, 0xcf, 0x4c, 0x3a, 0x9a, 0xd1, 0x1b, 0x5a, 0x0a, 0x4d, 0x8b, 0xba, 0x44, 0x38, 0xab, 0x96, 0xe2, 0x76, 0xcc, 0x78, 0x44, 0x54, 0xde, 0xe7,
0x41, 0x85, 0x82, 0x1f, 0x6d, 0xab, 0x5b, 0xa8, 0x34, 0x7b, 0x78, 0xa2, 0x2b, 0x5f, 0x9a, 0x0a, 0x75, 0x70, 0xca, 0x5c, 0x93, 0xa7, 0x4d, 0x47, 0x8a, 0x79, 0x3d, 0x83, 0xba, 0xc4, 0x98, 0x05,
0x41, 0xcc, 0xe0, 0xfc, 0x46, 0x76, 0x09, 0xca, 0x36, 0x8b, 0xed, 0xba, 0x45, 0xc2, 0x92, 0xf2, 0xbe, 0x1b, 0x62, 0x2f, 0xb9, 0xbe, 0x04, 0x73, 0xcf, 0x51, 0xe7, 0xa9, 0x6e, 0xe6, 0x56, 0x52,
0x41, 0xd1, 0xee, 0xb1, 0x77, 0xc0, 0x32, 0x4e, 0x17, 0xdd, 0x65, 0x57, 0xf3, 0x84, 0xe5, 0x32, 0xde, 0x0c, 0xf5, 0x1a, 0x01, 0x9a, 0x44, 0x6b, 0x01, 0xef, 0xb3, 0x51, 0xbc, 0x25, 0x9d, 0x77,
0x43, 0x80, 0xa4, 0x3a, 0x7b, 0x0b, 0xe1, 0xac, 0xe5, 0x4a, 0x65, 0xb3, 0xe2, 0x5e, 0xd3, 0x5f, 0x34, 0x0d, 0x69, 0x06, 0x36, 0x58, 0x21, 0xaf, 0x13, 0x99, 0x41, 0xd5, 0xd6, 0xe1, 0xea, 0x1b,
0x45, 0x0e, 0xff, 0xc8, 0x27, 0xca, 0x53, 0x5a, 0x79, 0xd5, 0xc4, 0xff, 0x3e, 0x1a, 0x3f, 0x61, 0x4c, 0xa9, 0x12, 0x6b, 0x37, 0x92, 0xf9, 0x97, 0xd3, 0x87, 0x91, 0xca, 0x73, 0x99, 0x32, 0x0c,
0x45, 0x87, 0x6b, 0x4d, 0xd8, 0x61, 0xd4, 0x5b, 0x3a, 0x94, 0x80, 0x07, 0x74, 0x02, 0x7a, 0x5d, 0xb4, 0x5a, 0x48, 0xb2, 0xa7, 0x29, 0x41, 0x09, 0x08, 0xb6, 0x41, 0x2f, 0x8a, 0x87, 0xe9, 0x5d,
0x45, 0x94, 0x57, 0xc4, 0x8e, 0x1b, 0x45, 0x0d, 0x8f, 0x22, 0x85, 0x8f, 0xfb, 0x39, 0x2f, 0xca, 0x78, 0xbb, 0x6f, 0x4d, 0xa8, 0x37, 0x86, 0x28, 0x89, 0xab, 0x79, 0x8b, 0xdc, 0xbd, 0xf0, 0x8f,
0x46, 0x67, 0xbf, 0x25, 0x0c, 0xd7, 0xc1, 0xa0, 0x6b, 0x84, 0x74, 0xc6, 0x13, 0xcd, 0xb1, 0xdf, 0x64, 0x8a, 0x7f, 0x58, 0x73, 0x6f, 0xbf, 0x57, 0xd0, 0x5d, 0x6f, 0x75, 0x5d, 0xab, 0x67, 0xf4,
0x47, 0xb3, 0x1a, 0x1c, 0x78, 0x67, 0x64, 0x4b, 0x2e, 0xe8, 0x09, 0x3b, 0x2d, 0x5f, 0xbe, 0x21, 0xe2, 0x1f, 0x77, 0xc1, 0x61, 0x7a, 0x2c, 0x08, 0x81, 0x2f, 0x57, 0xac, 0xe0, 0x85, 0x0e, 0x9f,
0x47, 0xf7, 0xa5, 0xf3, 0x82, 0x12, 0x86, 0xa9, 0xc6, 0x77, 0xf6, 0x6c, 0xfe, 0x2a, 0x84, 0xd5, 0xca, 0x94, 0xcb, 0x6f, 0xc1, 0xeb, 0xe8, 0xe1, 0x98, 0x6e, 0x91, 0xed, 0xd5, 0x8c, 0xbe, 0x33,
0x47, 0xff, 0x1b, 0x63, 0xb1, 0x40, 0xb6, 0xfc, 0x04, 0xed, 0x79, 0x13, 0x13, 0x31, 0xe6, 0x51, 0xda, 0x5b, 0x2e, 0x2f, 0x17, 0x0f, 0x5d, 0xae, 0xf4, 0x15, 0x3d, 0xc2, 0xfb, 0xc5, 0x32, 0xb1,
0x48, 0xcd, 0xb3, 0x1a, 0x16, 0xd8, 0x91, 0x12, 0x4b, 0xe7, 0x74, 0x90, 0xfb, 0xc2, 0xad, 0x13, 0xcb, 0x35, 0x5a, 0x18, 0xcb, 0x00, 0x07, 0x25, 0x8c, 0xa4, 0xbc, 0xea, 0x44, 0xf2, 0x88, 0xef,
0x48, 0xf4, 0x58, 0x4d, 0xe1, 0xc5, 0xec, 0x65, 0x0c, 0x25, 0xe6, 0xc6, 0x23, 0x63, 0x5c, 0xe1, 0x01, 0xbd, 0x82, 0x61, 0x7f, 0xc4, 0x00, 0xd4, 0x15, 0x0f, 0x0a, 0xee, 0x23, 0x55, 0xb4, 0xca,
0x49, 0x0c, 0x92, 0x72, 0x42, 0xcc, 0x62, 0x27, 0xca, 0x43, 0x9a, 0x7e, 0x9a, 0xa9, 0xd7, 0x71, 0xad, 0x4d, 0x16, 0x86, 0xee, 0xde, 0x1f, 0x33, 0x1c, 0xbb, 0x6c, 0x69, 0xe9, 0xbe, 0x74, 0x6e,
0x49, 0x46, 0x5d, 0x4a, 0xd7, 0x01, 0x64, 0x2c, 0x7b, 0xcb, 0x5e, 0xf3, 0x0a, 0x08, 0x07, 0xa3, 0xcd, 0x43, 0x8a, 0xb4, 0x2b, 0xf8, 0xd6, 0x2d, 0x68, 0x03, 0x8c, 0x3f, 0xcb, 0xbe, 0x86, 0x05,
0x49, 0x53, 0x00, 0x79, 0x0e, 0x6c, 0x9b, 0xf2, 0x51, 0x0d, 0xab, 0xa5, 0x9d, 0xb3, 0xd5, 0x7e, 0x9d, 0x2b, 0x85, 0xd7, 0xd7, 0x64, 0x04, 0x34, 0xec, 0x75, 0xba, 0xa3, 0x85, 0x1c, 0x74, 0xe5,
0x4a, 0x48, 0x73, 0xa3, 0x19, 0xa3, 0xa3, 0xde, 0x35, 0xea, 0x32, 0x57, 0x71, 0xdf, 0xfc, 0xbb, 0x31, 0xec, 0x14, 0x55, 0x0a, 0x4e, 0x02, 0x9c, 0xf0, 0xfe, 0xb9, 0xcd, 0x68, 0x6b, 0x8c, 0x92,
0x4a, 0x9b, 0x1c, 0x43, 0x8b, 0xc8, 0xf1, 0x14, 0xbf, 0xaa, 0x82, 0xf5, 0xd5, 0x33, 0xda, 0x31, 0xcc, 0x61, 0x0c, 0x27, 0x67, 0x11, 0x42, 0x2c, 0x74, 0xa1, 0x67, 0xb8, 0xae, 0xed, 0x7c, 0x82,
0x4a, 0xac, 0x0a, 0x9e, 0x08, 0x9d, 0xf8, 0xe9, 0xac, 0x67, 0x25, 0xe0, 0xdf, 0xca, 0x3a, 0xc1, 0x1a, 0x17, 0x74, 0x7a, 0x2e, 0x35, 0xf4, 0x3a, 0x2b, 0x38, 0xa5, 0x8f, 0x8a, 0xe2, 0xa2, 0x73,
0x4b, 0x59, 0xc6, 0xd8, 0xe9, 0x44, 0x28, 0xc4, 0xcb, 0xdb, 0x0f, 0x30, 0x6f, 0xed, 0x75, 0xb0, 0x99, 0xea, 0x34, 0x94, 0x31, 0xf0, 0x01, 0xaa, 0x81, 0x9c, 0x3b, 0xd0, 0xd1, 0x60, 0x08, 0x12,
0x4b, 0x86, 0x68, 0xa5, 0xd4, 0x65, 0xbc, 0xdd, 0x90, 0x00, 0xaa, 0x8d, 0xfc, 0xff, 0x42, 0x04, 0x4f, 0xcb, 0xd0, 0xae, 0xce, 0x32, 0xfc, 0x70, 0x11, 0xa8, 0x3e, 0x91, 0x60, 0xe8, 0x9f, 0x09,
0x4c, 0xda, 0xe3, 0x92, 0x0a, 0x51, 0x2c, 0x9c, 0x05, 0x2a, 0x8b, 0x4a, 0xba, 0x90, 0x96, 0x96, 0x9b, 0x0a, 0x01, 0x97, 0xb6, 0x14, 0x03, 0x1e, 0x4c, 0x64, 0xa5, 0xd8, 0x98, 0xcb, 0x09, 0xb9,
0x4e, 0xe4, 0x5a, 0x21, 0x7b, 0x38, 0xa8, 0xc1, 0x37, 0x77, 0xdf, 0x08, 0x60, 0xf1, 0x25, 0x5e, 0x52, 0xba, 0xf3, 0xcf, 0x9d, 0x07, 0x53, 0x73, 0xe3, 0x1a, 0xd7, 0xe2, 0xc8, 0x5e, 0x2c, 0xdb,
0x4f, 0x02, 0x14, 0xfc, 0xe4, 0xfa, 0x88, 0x97, 0xd0, 0xc8, 0x0a, 0x46, 0xd6, 0xda, 0xb4, 0x12, 0x47, 0x26, 0xd1, 0x36, 0xfc, 0x24, 0x92, 0xef, 0xd0, 0x1b, 0xfe, 0xdf, 0xa3, 0x88, 0x7a, 0x9c,
0x4f, 0x93, 0xed, 0x05, 0xad, 0x7e, 0x20, 0xbd, 0xde, 0x62, 0x41, 0xd2, 0x4b, 0x19, 0x6d, 0x63, 0x34, 0xc8, 0xc4, 0x01, 0x0d, 0x92, 0x75, 0x7e, 0x48, 0x68, 0xff, 0x4b, 0xbd, 0x6a, 0x0f, 0x98,
0x4f, 0x94, 0xf4, 0x0c, 0x6b, 0x4b, 0xac, 0x7b, 0xf2, 0x19, 0xc7, 0x3d, 0xaf, 0xd0, 0x87, 0x08, 0x79, 0xf1, 0xdb, 0x10, 0xde, 0x6c, 0x86, 0x20, 0xf6, 0xf1, 0x33, 0x3d, 0x7a, 0xa5, 0x45, 0x5a,
0x50, 0x87, 0x11, 0x41, 0x45, 0x9a, 0x21, 0xfa, 0xba, 0x3d, 0xbb, 0xf6, 0x3d, 0xa5, 0xaa, 0xc8, 0x86, 0x3f, 0xa3, 0xd8, 0xa9, 0x89, 0x1f, 0x18, 0x2e, 0xd7, 0x2e, 0x3a, 0x74, 0xb6, 0x4f, 0xdc,
0x50, 0xf9, 0x34, 0x02, 0xb6, 0x61, 0x27, 0xd8, 0x7b, 0x94, 0x70, 0x67, 0xe9, 0x68, 0x9d, 0xf5, 0xb2, 0xb3, 0x6b, 0x25, 0x38, 0x33, 0xff, 0xe1, 0xe6, 0xce, 0xca, 0x68, 0x5f, 0xae, 0x2d, 0x85,
0x52, 0xa3, 0xca, 0x4d, 0xb9, 0x23, 0xc0, 0x64, 0x8a, 0xc0, 0x4b, 0xe8, 0x6c, 0xe0, 0x2d, 0xbc, 0x6a, 0x3a, 0xaa, 0xc8, 0x31, 0x23, 0x66, 0xb1, 0x06, 0x20, 0x5d, 0xec, 0x6e, 0x2c, 0xa2, 0xd9,
0x52, 0xce, 0xad, 0xa5, 0x8e, 0x8d, 0x14, 0xab, 0x47, 0xe7, 0x06, 0xdc, 0xd6, 0x26, 0x4d, 0x82, 0xaf, 0xfc, 0x0f, 0x9f, 0xc6, 0x2a, 0xb4, 0x6f, 0x77, 0xbe, 0x46, 0xf2, 0x62, 0xae, 0x1b, 0x17,
0x53, 0x48, 0x07, 0x53, 0x29, 0xa1, 0x08, 0x7e, 0xbb, 0x68, 0x9f, 0xcf, 0xc7, 0x75, 0x30, 0x4b, 0x09, 0xc6, 0x78, 0x6a, 0x52, 0x3f, 0x83, 0xe7, 0xbb, 0x90, 0xe2, 0x6d, 0xe0, 0xe6, 0x1f, 0xf7,
0x54, 0x06, 0x1f, 0xf5, 0x0d, 0x91, 0x29, 0x6f, 0x2f, 0x44, 0xd8, 0xb3, 0x38, 0xae, 0xed, 0xfb, 0xbe, 0x86, 0xdf, 0x49, 0xdb, 0x5d, 0xe8, 0xa4, 0x51, 0x91, 0xaa, 0xa9, 0x31, 0xf5, 0xbc, 0xf6,
0x54, 0x08, 0x01, 0xdd, 0x34, 0x5d, 0xc1, 0xc3, 0x3e, 0xf4, 0x31, 0xb3, 0x5b, 0xf4, 0xc0, 0xe6, 0x8b, 0xd3, 0x19, 0xb5, 0x77, 0xb9, 0xab, 0xe1, 0xa9, 0xcf, 0xf1, 0xcb, 0xc3, 0x9f, 0x54, 0x8f,
0x54, 0xc7, 0xd9, 0xc2, 0x86, 0x72, 0xa1, 0x30, 0x6e, 0x43, 0xed, 0x7f, 0xee, 0xd3, 0x8b, 0x29, 0x5f, 0x8e, 0xec, 0x27, 0x92, 0x51, 0xf9, 0x96, 0xfa, 0x29, 0x3f, 0x68, 0xfc, 0x6c, 0xfb, 0x12,
0x56, 0xb3, 0xda, 0x72, 0x59, 0xeb, 0x1b, 0xec, 0x44, 0x19, 0x9a, 0x7e, 0xbf, 0x74, 0xc6, 0xfe, 0x91, 0x2c, 0x8f, 0xe9, 0xbf, 0x4a, 0x20, 0xa7, 0x61, 0x0c, 0x5e, 0x9b, 0xc0, 0xb6, 0x01, 0xcd,
0x56, 0xfb, 0x79, 0xaa, 0xb2, 0x6e, 0xe9, 0xd0, 0xe0, 0xca, 0x37, 0x2f, 0xb8, 0x6a, 0x8b, 0xb4, 0x59, 0xac, 0xbc, 0x50, 0x5d, 0x0a, 0xb3, 0x5e, 0x6a, 0x63, 0x2a, 0x3d, 0x5f, 0x88, 0xdc, 0xb3,
0x57, 0x69, 0x2f, 0xc2, 0xb8, 0x0d, 0x80, 0x9a, 0x3b, 0xe4, 0x09, 0xb4, 0x44, 0x75, 0xdd, 0xed, 0x72, 0x25, 0xc7, 0x6f, 0xdd, 0x5f, 0xf0, 0x9e, 0x4e, 0xd7, 0xd3, 0x30, 0xa5, 0x87, 0x33, 0xa5,
0x57, 0xae, 0xab, 0x53, 0xdb, 0x02, 0xcc, 0xd1, 0xe3, 0x07, 0xad, 0x3b, 0xe5, 0x24, 0xeb, 0x50, 0x7d, 0x03, 0x39, 0xbb, 0x2a, 0xab, 0x3b, 0xc9, 0xb6, 0x53, 0x08, 0x8b, 0x7e, 0x79, 0x0f, 0xcc,
0x57, 0xe6, 0x91, 0x3a, 0xfa, 0xcc, 0x52, 0x22, 0xbd, 0x76, 0xcd, 0xaf, 0x31, 0xf8, 0xed, 0x88, 0x89, 0x54, 0x64, 0x25, 0x53, 0x74, 0xef, 0x09, 0x7a, 0x82, 0xd7, 0xf5, 0x9a, 0xd3, 0x95, 0x96,
0x58, 0x68, 0x98, 0xc6, 0x0c, 0xff, 0x53, 0x9b, 0x76, 0xd2, 0x3d, 0xbf, 0x2c, 0x92, 0xe4, 0x10, 0x5f, 0x6a, 0x75, 0x49, 0xe1, 0x3f, 0x53, 0xd2, 0x93, 0x70, 0x8b, 0x79, 0x3c, 0xa9, 0x0d, 0x2d,
0x58, 0x90, 0xfa, 0x22, 0x71, 0x21, 0xc7, 0x6d, 0x90, 0xed, 0x9e, 0x63, 0xc8, 0x7e, 0x3a, 0x65, 0x33, 0xee, 0xa0, 0xf6, 0xf0, 0xa1, 0xa2, 0x3f, 0x1f, 0xc4, 0x45, 0x13, 0x9b, 0xc6, 0xbc, 0xdf,
0x5a, 0x18, 0x4e, 0x74, 0x06, 0x57, 0xe2, 0x18, 0xd6, 0x35, 0x16, 0x82, 0x86, 0xf0, 0xf7, 0x0b, 0xb5, 0x67, 0x2e, 0x4e, 0xdb, 0x78, 0x71, 0x75, 0x50, 0xc7, 0x06, 0x86, 0xc2, 0x32, 0xea, 0x5b,
0x5a, 0x47, 0xb0, 0xb1, 0x1d, 0x2f, 0xd9, 0xcd, 0x39, 0xc6, 0x27, 0xd1, 0xe6, 0xbf, 0x4a, 0xfe, 0xd9, 0x60, 0x1a, 0xa1, 0x5d, 0x6a, 0x5d, 0x84, 0xfb, 0x10, 0xf3, 0x97, 0x55, 0xd2, 0xd3, 0x23,
0x5a, 0xaf, 0xc9, 0xf5, 0xf9, 0x8d, 0xb7, 0x5f, 0x85, 0x19, 0xd8, 0x65, 0x29, 0x24, 0x93, 0x29, 0x39, 0x76, 0x0f, 0x00, 0xdf, 0x88, 0x27, 0xfa, 0x2a, 0x6e, 0x36, 0xdb, 0x26, 0x5f, 0x21, 0xf8,
0x5b, 0x24, 0x8e, 0x91, 0x3d, 0x71, 0x85, 0x3d, 0x3d, 0xa5, 0xae, 0xdd, 0x8d, 0x9a, 0x4b, 0xc5, 0x7a, 0x91, 0x71, 0x26, 0x57, 0x38, 0x17, 0xfb, 0x5f, 0xcb, 0x2d, 0x86, 0xa2, 0xf1, 0xc8, 0x86,
0x5b, 0x89, 0xf1, 0xaa, 0x24, 0x35, 0xa0, 0x3d, 0x18, 0xd9, 0xb2, 0x03, 0xd1, 0x7f, 0xb4, 0xfb, 0xa4, 0xf8, 0xf5, 0x07, 0x6c, 0xf1, 0xf9, 0xb8, 0xd6, 0xd9, 0xb8, 0x26, 0x22, 0x22, 0x35, 0xc1,
0x5c, 0x2a, 0xfe, 0x34, 0xbd, 0x8a, 0x7a, 0xeb, 0xbb, 0x43, 0x9c, 0x25, 0x1d, 0xfb, 0x6a, 0x42, 0x4f, 0x00, 0xe5, 0x35, 0xac, 0x4d, 0xf6, 0x1e, 0xc1, 0x97, 0x45, 0xb6, 0xf1, 0x0e, 0x89, 0x3a,
0x5c, 0x39, 0xf0, 0xe5, 0xe0, 0xe7, 0xfa, 0x3b, 0xe0, 0x50, 0x90, 0x81, 0x3b, 0x13, 0xd1, 0x61, 0xac, 0xaf, 0x48, 0x49, 0x4f, 0xde, 0x62, 0x33, 0xb4, 0x52, 0xc4, 0x16, 0xd2, 0x9c, 0xdd, 0xbe,
0x5c, 0x58, 0x05, 0x19, 0x6a, 0x85, 0xe9, 0x37, 0x89, 0x45, 0x70, 0x17, 0xd4, 0xf9, 0xeb, 0x68, 0x28, 0xb9, 0x7c, 0x41, 0xcb, 0x9b, 0xa6, 0xd3, 0xdc, 0x1f, 0xcc, 0x11, 0x5f, 0x52, 0x7a, 0x55,
0x5d, 0x1e, 0x9a, 0xcb, 0xbb, 0x4a, 0x7d, 0x02, 0x4b, 0x68, 0x52, 0xdf, 0x02, 0x59, 0x70, 0xe2, 0xce, 0xd6, 0x6f, 0xf6, 0x22, 0xee, 0x01, 0x9c, 0xd0, 0xed, 0x7f, 0xd8, 0x41, 0xcc, 0xad, 0x02,
0x5e, 0x2b, 0xb7, 0xbc, 0x8b, 0x16, 0xe0, 0xb9, 0xdd, 0xff, 0x75, 0x60, 0x66, 0x68, 0xe6, 0x9d, 0x76, 0xaf, 0x12, 0x19, 0xc1, 0x71, 0x80, 0xef, 0x0a, 0x5b, 0x9b, 0x38, 0x3f, 0x00, 0xb9, 0x95,
0x5e, 0x67, 0xbf, 0x24, 0x0b, 0x1d, 0x05, 0xf6, 0xf6, 0x18, 0x90, 0x88, 0x68, 0xa4, 0x94, 0xc5, 0x0a, 0x30, 0xab, 0x25, 0x5b, 0x06, 0x61, 0x9f, 0xa2, 0x84, 0x11, 0xeb, 0x26, 0x0f, 0x67, 0x4a,
0x5e, 0xb2, 0xc7, 0x68, 0x43, 0xb2, 0x53, 0xac, 0xbc, 0xec, 0xbb, 0x84, 0x76, 0x76, 0x97, 0x12, 0x8f, 0x00, 0x0c, 0x18, 0x35, 0x8c, 0x78, 0xc5, 0xba, 0xf1, 0x35, 0xa5, 0x99, 0x6c, 0x03, 0x7f,
0x60, 0x78, 0xc0, 0xfa, 0x37, 0xd9, 0xd3, 0x5d, 0xad, 0xac, 0x7a, 0xd9, 0x0e, 0x90, 0xa3, 0xa9, 0x5c, 0x44, 0x98, 0x5a, 0x3d, 0x30, 0x5b, 0xd2, 0x2a, 0x5d, 0x83, 0x8e, 0xd4, 0x54, 0x91, 0xee,
0x61, 0x53, 0x5c, 0xaa, 0x14, 0x47, 0x61, 0xfc, 0x48, 0xcc, 0x9d, 0x7a, 0x83, 0x5d, 0xfa, 0xf0, 0x20, 0xb5, 0x69, 0xed, 0xfc, 0x7f, 0xa6, 0x28, 0xf9, 0x83, 0xd5, 0x8a, 0x3a, 0xc2, 0x5f, 0x2a,
0x61, 0xce, 0xc4, 0xa3, 0x77, 0xbf, 0x59, 0x02, 0xc0, 0xfe, 0xae, 0xe3, 0x70, 0x34, 0xbf, 0x97, 0xd5, 0xbc, 0x6e, 0x06, 0x15, 0xe2, 0x3a, 0x1c, 0xdf, 0xba, 0xe6, 0xe3, 0xf5, 0xfb, 0x3c, 0xfd,
0x62, 0xb7, 0x9f, 0xb4, 0xa0, 0x40, 0x52, 0xfc, 0xb4, 0x98, 0xa9, 0x7f, 0x22, 0xa3, 0x56, 0x76, 0x42, 0xd4, 0xbc, 0x47, 0xd1, 0xc2, 0xff, 0x9a, 0x06, 0x31, 0x1c, 0x8c, 0x61, 0x48, 0xe9, 0x07,
0x63, 0x1f, 0x08, 0x57, 0xb4, 0x18, 0x45, 0x36, 0x2c, 0x90, 0xc6, 0x98, 0x0b, 0x4b, 0x10, 0xc4, 0xb6, 0x28, 0xe2, 0x3d, 0xbe, 0x24, 0xb6, 0xe9, 0x6c, 0x12, 0x8a, 0xe3, 0xdc, 0xb0, 0xd5, 0xac,
0x63, 0x3f, 0x98, 0x06, 0xbc, 0x96, 0xa8, 0x31, 0xcc, 0x2c, 0x8d, 0x52, 0x1d, 0x71, 0xe9, 0xeb, 0xd0, 0x21, 0x80, 0xda, 0xba, 0x1a, 0x50, 0x97, 0x8e, 0xf6, 0xb7, 0x2e, 0x50, 0x34, 0xe9, 0xef,
0x64, 0xcc, 0xc8, 0x86, 0xeb, 0x99, 0xc3, 0x0a, 0xa8, 0x08, 0xe5, 0xca, 0x9b, 0xd3, 0x71, 0x57, 0x7b, 0xaf, 0x9d, 0x3f, 0xa0, 0xe4, 0x50, 0x11, 0x84, 0x64, 0xf5, 0x14, 0xb4, 0x7a, 0x02, 0x8a,
0x65, 0x62, 0x5a, 0x14, 0x3d, 0x22, 0x0e, 0xa1, 0x84, 0xdb, 0xd5, 0xcd, 0xfb, 0x1b, 0x9e, 0x9c, 0x3b, 0xd9, 0x65, 0x42, 0x94, 0xea, 0xa2, 0xb9, 0x86, 0x28, 0xbc, 0x27, 0x3e, 0xbc, 0x18, 0xb5,
0x65, 0x82, 0xdc, 0xcb, 0x8b, 0x30, 0x5e, 0xfe, 0x0b, 0xbb, 0xaf, 0xdc, 0xc7, 0xd2, 0x95, 0xa6, 0xa8, 0xbf, 0x1d, 0xf0, 0x39, 0x7e, 0x1a, 0x8a, 0xc7, 0x36, 0xe9, 0x09, 0x8a, 0x2a, 0x64, 0xc0,
0x65, 0xb2, 0xe7, 0xcc, 0x18, 0xd9, 0x03, 0xc3, 0x31, 0xdf, 0x11, 0x52, 0xdf, 0x73, 0xca, 0x0d, 0xc9, 0x32, 0xd2, 0x9f, 0x17, 0x99, 0x74, 0x81, 0xc5, 0x6f, 0x30, 0x87, 0xb2, 0xdd, 0x31, 0x47,
0x65, 0xf3, 0xc0, 0xa0, 0x1b, 0x84, 0x02, 0xd3, 0x62, 0xb9, 0x72, 0x2e, 0x98, 0xf7, 0x5e, 0x5e, 0x99, 0x1e, 0x6c, 0x18, 0x6e, 0x93, 0x4f, 0x7b, 0x2b, 0x2e, 0x6b, 0xe6, 0xde, 0xc8, 0x00, 0xec,
0x66, 0xaa, 0x13, 0xa0, 0xed, 0xc2, 0x19, 0x38, 0x4d, 0x9c, 0x42, 0x5d, 0x39, 0x27, 0xe6, 0xed, 0x4a, 0x5d, 0x19, 0x40, 0xc5, 0xe7, 0xcd, 0x4d, 0xac, 0x88, 0xf5, 0x77, 0x01, 0x03, 0xf2, 0xf1,
0x66, 0xd0, 0x80, 0x3e, 0x25, 0x50, 0xd9, 0xe7, 0x90, 0x82, 0x9a, 0xe1, 0xb5, 0xf8, 0x15, 0x47, 0xcc, 0x9b, 0xfb, 0xe6, 0x9b, 0x51, 0x81, 0x70, 0x68, 0xec, 0xb5, 0xda, 0xbb, 0x7a, 0x89, 0xfc,
0x67, 0x30, 0xc9, 0x11, 0xe6, 0xd9, 0x10, 0x09, 0x42, 0x0d, 0x20, 0x2f, 0xb6, 0xf3, 0x94, 0x56, 0x8a, 0x06, 0xaa, 0x97, 0xe9, 0xf3, 0x3f, 0x30, 0xc7, 0xe9, 0x2a, 0xaa, 0x71, 0x33, 0x2d, 0x68,
0x68, 0x73, 0xd2, 0xf6, 0x1c, 0x29, 0xbd, 0x52, 0xe9, 0x54, 0xee, 0xff, 0x59, 0x77, 0xaa, 0x83, 0x67, 0x43, 0x99, 0x97, 0x81, 0x1a, 0x62, 0xff, 0x21, 0x2c, 0x94, 0x81, 0x33, 0xc6, 0x8d, 0x97,
0x68, 0xee, 0x46, 0x32, 0xc7, 0xbe, 0x1c, 0x66, 0xc8, 0x3e, 0x89, 0xdd, 0x93, 0xea, 0xee, 0x12, 0x94, 0x15, 0x9a, 0xbf, 0x45, 0xb4, 0xc2, 0xc7, 0x2d, 0x7d, 0xc7, 0x49, 0x9a, 0xa2, 0xa0, 0x43,
0x69, 0x1b, 0xa3, 0x41, 0x4e, 0x78, 0x62, 0x25, 0x81, 0xbc, 0x51, 0x9b, 0xaf, 0x0b, 0xcb, 0x16, 0xfb, 0x26, 0x2d, 0x3a, 0xbb, 0xd8, 0x63, 0x9f, 0x3e, 0x0e, 0xca, 0x2a, 0x29, 0xf9, 0x94, 0x06,
0x6a, 0x0e, 0x82, 0x46, 0x54, 0xb7, 0x47, 0x91, 0x52, 0x05, 0x8c, 0xf7, 0x38, 0xa3, 0x78, 0xe6, 0x29, 0x48, 0x38, 0x74, 0xb6, 0xdb, 0xd6, 0x7e, 0x0d, 0x8c, 0x33, 0x27, 0xb2, 0xfc, 0xac, 0x64,
0x6a, 0x16, 0xad, 0xa3, 0xfe, 0x0c, 0x54, 0x68, 0xf0, 0xa4, 0x3f, 0xb2, 0xf5, 0x97, 0xa4, 0x2f, 0x3d, 0xa3, 0x21, 0x8c, 0x88, 0xee, 0x81, 0x9b, 0xf7, 0x99, 0x11, 0x0c, 0xf7, 0xa7, 0x9b, 0x6c,
0x6b, 0x54, 0x49, 0x7f, 0xf9, 0x91, 0x5a, 0x69, 0x77, 0x42, 0x8b, 0xdf, 0x8f, 0x45, 0xb1, 0x16, 0xd8, 0x74, 0xc4, 0xf8, 0xa8, 0x36, 0xb5, 0xbd, 0xfc, 0x37, 0x3d, 0x05, 0xf4, 0xc0, 0xef, 0x87,
0x6b, 0x8e, 0xec, 0x82, 0x9f, 0x03, 0x73, 0x93, 0x10, 0x99, 0xf0, 0x70, 0xcb, 0xd4, 0xe2, 0xe1, 0x38, 0x0c, 0xd5, 0x64, 0x42, 0x01, 0xd0, 0x5d, 0x80, 0xd8, 0x6b, 0x1e, 0x7e, 0xd0, 0xb0, 0x8b,
0x6c, 0xe1, 0xf2, 0x98, 0x6f, 0x0c, 0x46, 0x68, 0x3b, 0xa0, 0x7d, 0x29, 0x6d, 0x0a, 0x84, 0x44, 0x8e, 0xcf, 0x76, 0xc6, 0x9d, 0xb1, 0x83, 0xfe, 0x29, 0xc3, 0x6e, 0xed, 0x8f, 0x8e, 0x8f, 0x2f,
0x6c, 0xfd, 0xdb, 0x62, 0x03, 0xf2, 0x54, 0xd3, 0x8a, 0x5b, 0xcd, 0xd4, 0x17, 0x3d, 0x51, 0x64, 0x7a, 0x48, 0x7c, 0xa7, 0x0a, 0xb2, 0x13, 0x26, 0xac, 0xa0, 0xa0, 0x3b, 0xb3, 0xd2, 0xba, 0xc0,
0x6d, 0x17, 0x4d, 0xc1, 0x67, 0x3f, 0x7c, 0xfb, 0x6f, 0x1e, 0xa7, 0x5d, 0x71, 0x73, 0x9a, 0xfd, 0xe2, 0xb7, 0x84, 0xe2, 0x14, 0xe4, 0x1a, 0xe6, 0xf5, 0xaa, 0x30, 0xf6, 0x22, 0xa4, 0x00, 0xc4,
0x6d, 0xbb, 0xea, 0xd2, 0x3e, 0x8c, 0x86, 0x0c, 0xf8, 0xb4, 0x7f, 0x74, 0xfb, 0xfc, 0xa5, 0x20, 0x4d, 0xe3, 0xe2, 0x8b, 0x88, 0x13, 0x13, 0xbb, 0x1d, 0x1e, 0xcc, 0xdc, 0x47, 0x47, 0x93, 0x4e,
0x6d, 0xea, 0xd1, 0x32, 0x57, 0xdf, 0xc3, 0xcc, 0xc6, 0xa4, 0xb3, 0x70, 0x16, 0xba, 0x91, 0x75, 0x5f, 0xe9, 0xe0, 0xec, 0x1f, 0x41, 0x50, 0x30, 0x94, 0x2e, 0x5a, 0xbc, 0x47, 0xf0, 0x7c, 0x88,
0x6e, 0xfe, 0xfe, 0x0b, 0x5b, 0x01, 0x47, 0x8b, 0x7b, 0x94, 0x4c, 0x10, 0xd3, 0xa8, 0xac, 0xa2, 0xcc, 0xa4, 0x20, 0x88, 0x88, 0xe2, 0x05, 0x9f, 0x8a, 0x06, 0xcb, 0x58, 0x24, 0xd7, 0xba, 0xb0,
0x6f, 0x53, 0xcd, 0x5b, 0xf4, 0x34, 0xb1, 0x9b, 0x4e, 0x14, 0xca, 0x12, 0x7c, 0x59, 0x67, 0x52, 0x07, 0x9d, 0x98, 0x9f, 0xcc, 0x98, 0xbb, 0x7d, 0x7c, 0xf3, 0x15, 0x56, 0x19, 0xec, 0x34, 0x7d,
0x70, 0x6b, 0x8a, 0x82, 0x06, 0x52, 0x21, 0x2d, 0x3a, 0x5f, 0x57, 0x30, 0x3c, 0x9c, 0xb2, 0xb8, 0x0b, 0x9e, 0x79, 0xdc, 0xf2, 0x62, 0x1f, 0x29, 0x31, 0x8a, 0xf2, 0x34, 0x64, 0x19, 0xed, 0xfa,
0x70, 0xa1, 0x45, 0x0a, 0xf2, 0xad, 0x39, 0x55, 0x69, 0xad, 0x0a, 0xfe, 0xb1, 0xd9, 0xc1, 0x25, 0x32, 0x4e, 0xe9, 0x0a, 0xec, 0x39, 0xc2, 0x58, 0x88, 0x01, 0x34, 0xd4, 0x89, 0x2d, 0x51, 0xab,
0x71, 0xa5, 0x71, 0x6d, 0xec, 0xf0, 0x9f, 0xe8, 0xbc, 0xbc, 0xc7, 0x32, 0x25, 0xfe, 0x1e, 0x70, 0x12, 0x07, 0x6c, 0xea, 0x39, 0xb4, 0x9e, 0x9e, 0x72, 0xaf, 0xa2, 0x91, 0xb1, 0xfb, 0x71, 0x7f,
0x71, 0xb6, 0x01, 0xee, 0x37, 0x46, 0xda, 0x71, 0x77, 0x72, 0x6d, 0xb8, 0x4f, 0x5b, 0x41, 0x7c, 0x97, 0x21, 0x58, 0x3d, 0x2d, 0x88, 0xad, 0x85, 0x7b, 0xf3, 0x68, 0xa5, 0x4f, 0xf7, 0x6b, 0xfa,
0x72, 0xc2, 0x6f, 0x82, 0x7c, 0xeb, 0x92, 0x98, 0x97, 0x98, 0x96, 0x1b, 0xc6, 0xae, 0x74, 0x8d, 0x14, 0x1e, 0x05, 0xd3, 0xeb, 0xcf, 0xb6, 0x5d, 0x90, 0x41, 0xb2, 0x66, 0xc9, 0x20, 0xbe, 0x82,
0x73, 0x1a, 0x31, 0xcc, 0x36, 0xc5, 0xa7, 0xd7, 0x44, 0x5f, 0x96, 0x44, 0xce, 0x4e, 0x85, 0x0e, 0x99, 0xcc, 0x79, 0x62, 0xef, 0x6e, 0x2d, 0xe9, 0x87, 0x21, 0x44, 0x7a, 0x14, 0x38, 0xd8, 0x05,
0x73, 0x6a, 0xfb, 0x5d, 0xf2, 0x9e, 0xc9, 0xc8, 0x85, 0x32, 0xbe, 0x9c, 0x62, 0x0e, 0xf8, 0x09, 0x01, 0xbf, 0x23, 0xe7, 0x2f, 0x2d, 0x34, 0x88, 0xb7, 0x57, 0xaf, 0xf1, 0x7e, 0x73, 0x4a, 0xce,
0x73, 0xba, 0xeb, 0x8e, 0xb0, 0xb6, 0x40, 0x56, 0xa7, 0xbc, 0x30, 0x96, 0x42, 0xfd, 0xc5, 0x89, 0xbf, 0x21, 0x99, 0x28, 0xa9, 0x06, 0x66, 0x6d, 0x10, 0x7e, 0x65, 0xe8, 0xb0, 0xdb, 0xf4, 0x96,
0x74, 0x90, 0xad, 0x46, 0xb3, 0xae, 0xa3, 0x2d, 0xd2, 0x1c, 0x46, 0xa7, 0xa4, 0x2f, 0xf4, 0x18, 0x3f, 0xfa, 0xa7, 0xc4, 0x86, 0xc7, 0x5c, 0x64, 0x38, 0xad, 0xf9, 0x36, 0xe5, 0x12, 0xb9, 0xa5,
0x74, 0xb3, 0x9c, 0x20, 0x6d, 0xc8, 0xa1, 0x1c, 0xd1, 0x96, 0xd5, 0x99, 0x8d, 0x29, 0x96, 0xb6, 0xad, 0x47, 0x7d, 0x72, 0xea, 0xf8, 0x6e, 0x19, 0xa3, 0xdc, 0x14, 0xec, 0x0e, 0xab, 0x0f, 0x1e,
0x75, 0xe7, 0x8c, 0x19, 0x7f, 0xf9, 0x1f, 0x57, 0x47, 0x35, 0xa3, 0xa6, 0x06, 0xe5, 0x68, 0x62, 0xe9, 0xe0, 0xb8, 0x4d, 0xf0, 0xcf, 0x69, 0xf7, 0xc7, 0xf4, 0x3c, 0xbc, 0x17, 0x1a, 0xb3, 0x71,
0x77, 0xcd, 0xcf, 0xc9, 0x64, 0x4f, 0x8f, 0x80, 0xff, 0x40, 0x7c, 0xde, 0x31, 0x6a, 0xc2, 0x35, 0xdd, 0xd1, 0xad, 0xa9, 0xc3, 0xb6, 0xa5, 0xaa, 0x95, 0x44, 0xdb, 0x2d, 0x64, 0xb7, 0x9f, 0xed,
0x78, 0x03, 0xf1, 0x2e, 0x7e, 0x1b, 0x70, 0x63, 0x50, 0x2e, 0xb8, 0xe2, 0x23, 0xa9, 0x01, 0x3e, 0x2b, 0x61, 0x12, 0x5a, 0x88, 0x8b, 0x74, 0xd6, 0x14, 0x65, 0xb5, 0x1d, 0xe5, 0x32, 0x76, 0xba,
0x78, 0x17, 0x64, 0x10, 0x21, 0x88, 0xa8, 0xb4, 0xb1, 0x73, 0xd4, 0xa8, 0xf5, 0xec, 0x94, 0xd8, 0x28, 0x64, 0x71, 0x56, 0x09, 0x7f, 0x99, 0x35, 0x7a, 0x58, 0x1e, 0x62, 0x4b, 0x37, 0x75, 0x09,
0x78, 0x36, 0x46, 0x5b, 0xdf, 0xfa, 0xe7, 0x68, 0xef, 0xae, 0xdc, 0xba, 0xa8, 0xb5, 0x78, 0x7b, 0xaf, 0x51, 0xb2, 0x79, 0x2a, 0x02, 0x0e, 0x80, 0xe3, 0x41, 0xa3, 0xf8, 0x24, 0xff, 0x82, 0xca,
0x78, 0x83, 0x83, 0xa4, 0xc7, 0x33, 0xbb, 0x87, 0xd2, 0xbf, 0x51, 0x67, 0x3d, 0xc7, 0x3e, 0x92, 0xdf, 0x15, 0xab, 0x7d, 0x51, 0xdc, 0x71, 0x56, 0x27, 0xae, 0x77, 0x68, 0x6d, 0x8d, 0x23, 0xbc,
0x78, 0xb4, 0xed, 0xca, 0xab, 0xc8, 0xd9, 0x09, 0x3e, 0x20, 0xe2, 0x17, 0x80, 0x2c, 0xae, 0xb4, 0xf0, 0x9e, 0x23, 0xa3, 0x39, 0x4c, 0x4a, 0xcc, 0x6e, 0x87, 0xe8, 0xf3, 0x53, 0x95, 0x31, 0x0f,
0x7a, 0x02, 0x94, 0xba, 0x07, 0xa2, 0xae, 0xe3, 0x64, 0x8a, 0xfc, 0x0d, 0xaf, 0x2e, 0xfd, 0x52, 0x6a, 0x5b, 0x76, 0x34, 0x9e, 0xc9, 0x06, 0xf8, 0x19, 0xc0, 0x3b, 0xc2, 0x17, 0x25, 0x76, 0x38,
0x7a, 0xb5, 0xff, 0x84, 0xb7, 0xb8, 0x0a, 0x43, 0x23, 0x66, 0xe3, 0xbb, 0xcc, 0x19, 0x8e, 0xd3, 0x82, 0xc9, 0xfd, 0x59, 0x2c, 0xd5, 0xdd, 0x21, 0x01, 0x38, 0xd2, 0xf9, 0x29, 0x7c, 0xc1, 0xf6,
0x7b, 0x94, 0xf0, 0x50, 0x5f, 0x37, 0xb1, 0x9b, 0x43, 0x2a, 0xba, 0x08, 0xbe, 0x2e, 0x3e, 0x00, 0x30, 0x38, 0xc0, 0x2c, 0xeb, 0x53, 0x1e, 0x16, 0x9d, 0x46, 0x0d, 0xb6, 0x0c, 0x35, 0x16, 0x49,
0x7b, 0xc9, 0xcb, 0x54, 0x63, 0xce, 0x0f, 0x01, 0x1f, 0xb5, 0x08, 0x5e, 0xb8, 0xba, 0x77, 0xd1, 0xac, 0xd2, 0x83, 0xc4, 0x3f, 0x4a, 0x57, 0x60, 0x3c, 0xc1, 0x13, 0xf2, 0x2c, 0xeb, 0xc5, 0x79,
0x7c, 0x09, 0xd8, 0xb9, 0x0b, 0x72, 0xb7, 0xc2, 0xcc, 0xf1, 0xa4, 0x13, 0xe3, 0x35, 0xc2, 0xd1, 0xa2, 0x5d, 0x75, 0xbb, 0x85, 0x41, 0xf9, 0xbc, 0x16, 0xb4, 0xc4, 0xe2, 0x6b, 0xda, 0x68, 0x55,
0x7c, 0x73, 0x72, 0xa6, 0x0d, 0x71, 0xe0, 0x48, 0x79, 0xb8, 0x93, 0x0c, 0x16, 0x49, 0x44, 0xd9, 0x6d, 0x37, 0x53, 0xe0, 0xa2, 0x92, 0x4a, 0x31, 0x23, 0x1d, 0x1d, 0x5f, 0xb9, 0x78, 0x82, 0xf2,
0x7d, 0x0b, 0x74, 0xae, 0x42, 0xdf, 0x73, 0xa0, 0xc2, 0xc9, 0xca, 0x64, 0xf6, 0xc8, 0x38, 0x13, 0xd3, 0xd6, 0xa5, 0xc4, 0xb0, 0x2b, 0xc4, 0x7f, 0x56, 0x6c, 0xed, 0xd5, 0x68, 0x2c, 0x69, 0x1a,
0x7e, 0xac, 0x80, 0xa9, 0x15, 0xc8, 0x4c, 0xd4, 0xaf, 0xec, 0x63, 0x89, 0x04, 0xd9, 0x4e, 0xb1, 0x68, 0xa8, 0x55, 0x79, 0x51, 0xa4, 0xd5, 0x39, 0xb0, 0x71, 0x30, 0x28, 0x55, 0x2b, 0x6b, 0x8c,
0x7f, 0x29, 0x2b, 0xce, 0x8d, 0xc9, 0x7b, 0x60, 0x1e, 0xf1, 0xea, 0x72, 0xbd, 0xf7, 0xd9, 0x6a, 0x12, 0xa8, 0x77, 0x82, 0xbb, 0x1b, 0x1c, 0x54, 0x7f, 0x85, 0xc5, 0x5c, 0x7b, 0x3f, 0xf0, 0x35,
0x7f, 0x3b, 0xdd, 0x2e, 0x92, 0xae, 0x41, 0x7b, 0x21, 0x43, 0xcc, 0x99, 0x3c, 0x7f, 0xe4, 0x8d, 0x93, 0x63, 0xff, 0xa6, 0x5c, 0x9c, 0xc4, 0x61, 0xb6, 0xa4, 0x07, 0xa7, 0x79, 0x99, 0x81, 0x74,
0x7f, 0x49, 0xcc, 0xb3, 0x09, 0x32, 0x3b, 0x1c, 0x7a, 0xb1, 0x1c, 0x93, 0xc9, 0x55, 0xb8, 0xc7, 0x44, 0xf0, 0xa2, 0xb7, 0x5c, 0x31, 0x1f, 0x49, 0x5e, 0x18, 0x90, 0x60, 0x70, 0x50, 0x00, 0x27,
0x7f, 0x96, 0x02, 0xc1, 0x23, 0xa0, 0x90, 0xbb, 0x0c, 0x4c, 0x3b, 0x69, 0x66, 0x2b, 0xc5, 0x2d, 0x67, 0x5a, 0x0a, 0x4e, 0xd4, 0x44, 0xd1, 0xc1, 0xe0, 0xe2, 0x6c, 0x2b, 0x0d, 0xc3, 0x76, 0x0b,
0x7f, 0x96, 0x47, 0x30, 0xcf, 0xb7, 0xb8, 0xce, 0xa2, 0x84, 0xe2, 0xe8, 0x10, 0x21, 0x2f, 0xf9, 0xb0, 0xee, 0x18, 0x22, 0x7f, 0x64, 0x42, 0x7a, 0x09, 0x5d, 0x68, 0x86, 0x49, 0x3d, 0xb0, 0xc4,
0x7f, 0xc7, 0x19, 0x6e, 0xbb, 0xfa, 0x0d, 0x79, 0x47, 0xde, 0x66, 0xf3, 0x71, 0x58, 0xdf, 0x23, 0x82, 0x1f, 0x15, 0x6f, 0x72, 0x4f, 0xc3, 0xcc, 0x90, 0x6f, 0x16, 0xe8, 0xeb, 0xfa, 0x3e, 0x9f,
0x7f, 0xdd, 0xfe, 0x06, 0xc4, 0x4d, 0xc4, 0x30, 0x2d, 0xa5, 0x45, 0x77, 0x35, 0x3c, 0x18, 0xfd, 0xbe, 0x11, 0xb4, 0x1c, 0xb3, 0xe6, 0x06, 0x4e, 0xc1, 0xc1, 0x16, 0xee, 0x10, 0x2f, 0xe0, 0x80,
0x80, 0x04, 0x23, 0xce, 0xb7, 0xe4, 0x75, 0x96, 0x21, 0xa6, 0x2c, 0x72, 0x9b, 0xab, 0xc8, 0x1f, 0x53, 0x25, 0x9d, 0x95, 0xf7, 0x64, 0x57, 0x22, 0x4a, 0xd6, 0x01, 0x54, 0x2b, 0x7b, 0x26, 0xd4,
0x80, 0x4e, 0x35, 0x4c, 0x63, 0x68, 0xbb, 0x27, 0xa9, 0x0f, 0xae, 0x8e, 0x49, 0x8a, 0x57, 0x05, 0x2b, 0x29, 0x34, 0x18, 0x25, 0x9a, 0x01, 0x9c, 0x4f, 0x53, 0xa2, 0x00, 0x72, 0x54, 0x49, 0x0f,
0x80, 0x55, 0xed, 0xee, 0xb1, 0x85, 0x61, 0x92, 0x7d, 0xd5, 0x95, 0x6b, 0xe9, 0x07, 0x0c, 0x45, 0x03, 0xfe, 0xc7, 0x83, 0xaa, 0x96, 0xf1, 0x66, 0xf5, 0xf9, 0x3f, 0xdb, 0xc3, 0xc2, 0xab, 0x43,
0x80, 0xb4, 0xd9, 0x69, 0x31, 0xbf, 0x0d, 0x02, 0xfd, 0x91, 0xa6, 0x1e, 0x19, 0xd1, 0x4f, 0x1d, 0xa4, 0x52, 0xe6, 0x6d, 0xb2, 0x40, 0x8c, 0xa8, 0x60, 0x4d, 0x41, 0x1f, 0x92, 0x65, 0x9f, 0x0a,
0x81, 0x2e, 0xb0, 0xfa, 0x2d, 0xf1, 0x3a, 0x88, 0x95, 0x49, 0x72, 0x9c, 0xad, 0xbf, 0x17, 0x20, 0xb6, 0x8f, 0x6c, 0x9e, 0x21, 0x95, 0x57, 0x41, 0xb7, 0x28, 0x02, 0x59, 0x0a, 0xf1, 0xb5, 0xca,
0x81, 0x5d, 0x98, 0xae, 0xe4, 0x98, 0xcf, 0x27, 0xfd, 0x66, 0x48, 0xc7, 0xe0, 0x2c, 0xfc, 0x0a, 0x4a, 0x88, 0xaa, 0x73, 0x23, 0x7c, 0xbb, 0x23, 0x52, 0xfe, 0x38, 0x38, 0x4a, 0x72, 0x68, 0x3d,
0x81, 0xa8, 0xb2, 0xc9, 0x75, 0x1a, 0xeb, 0x1f, 0xab, 0xa7, 0xdb, 0xde, 0x5e, 0xe9, 0x69, 0x1d, 0xc0, 0xea, 0xee, 0x2a, 0x31, 0xc3, 0x8b, 0x14, 0x91, 0xa8, 0x14, 0x67, 0x56, 0xa6, 0xb7, 0x70,
0x82, 0x5a, 0xcc, 0xe0, 0x63, 0x4b, 0x91, 0x81, 0x8f, 0x57, 0xce, 0x96, 0xb8, 0x31, 0x4e, 0xce, 0xe7, 0x37, 0x3b, 0xd2, 0x0d, 0xa7, 0x7f, 0xb0, 0x8b, 0x9b, 0x96, 0xd6, 0x6e, 0xb6, 0x51, 0x45,
0x82, 0xac, 0xba, 0x48, 0xd5, 0x23, 0x6c, 0xcf, 0xf7, 0x65, 0x9a, 0xfc, 0x14, 0x59, 0x4d, 0xee, 0x90, 0x2b, 0xd6, 0x08, 0x2e, 0xf1, 0xa3, 0x0a, 0x0b, 0x9b, 0x50, 0x86, 0x28, 0xcf, 0x34, 0xf4,
0x83, 0x58, 0x81, 0xf2, 0xa5, 0x57, 0x2d, 0x70, 0x59, 0xb5, 0xc8, 0x63, 0x50, 0x18, 0x55, 0x28, 0x92, 0xe9, 0x45, 0x62, 0x6f, 0x11, 0x5f, 0xc9, 0xca, 0x07, 0xac, 0xf7, 0xbd, 0xe8, 0x57, 0xa4,
0x83, 0x98, 0x94, 0xed, 0x39, 0x1b, 0x7c, 0x88, 0xe9, 0x95, 0xf8, 0x45, 0xca, 0x15, 0x2f, 0x65, 0xbf, 0x88, 0x18, 0x50, 0xd7, 0x68, 0xe3, 0xef, 0x38, 0x80, 0x83, 0x8b, 0x52, 0x84, 0x6a, 0x74,
0x84, 0xd7, 0x5f, 0x7a, 0x89, 0x13, 0xd6, 0x6d, 0xb9, 0x46, 0xea, 0xf1, 0x48, 0x0e, 0xad, 0xde, 0xc3, 0x06, 0x3d, 0x27, 0xa6, 0xf6, 0x25, 0xf0, 0x40, 0xb4, 0x06, 0x71, 0x8a, 0xbc, 0xac, 0x44,
0x85, 0x25, 0x57, 0x00, 0x89, 0x09, 0x31, 0xc5, 0xb7, 0x1a, 0x73, 0xdf, 0xf0, 0x9e, 0xa5, 0x12, 0x5c, 0xd7, 0x02, 0xea, 0x65, 0xf4, 0x5b, 0x40, 0x54, 0xc1, 0x46, 0x3e, 0x00, 0x17, 0x3f, 0xdc,
0x86, 0xe9, 0x38, 0x4c, 0x41, 0xf9, 0x33, 0x9d, 0x9b, 0x0f, 0x80, 0xb4, 0x80, 0x55, 0xd0, 0x2b, 0xe5, 0xff, 0x90, 0x88, 0x60, 0xf2, 0xce, 0xf6, 0x33, 0x59, 0xe0, 0xd8, 0xb7, 0x93, 0x7a, 0x27,
0x87, 0x17, 0x6a, 0x15, 0xe7, 0x66, 0xbd, 0x06, 0x52, 0x8e, 0xd9, 0x1a, 0x61, 0x48, 0x1c, 0x3b, 0x3c, 0xde, 0x65, 0xee, 0x95, 0x11, 0x54, 0x03, 0xf9, 0xff, 0xc6, 0xd3, 0xa2, 0x6d, 0x43, 0xd0,
0x88, 0x06, 0xcf, 0x0c, 0x7b, 0xd5, 0xdf, 0x7e, 0x01, 0xd1, 0x20, 0xf5, 0x67, 0x34, 0x11, 0x3b, 0xe9, 0x16, 0xe1, 0x83, 0x75, 0x55, 0x77, 0xbd, 0x48, 0x02, 0x6c, 0x25, 0xdb, 0x26, 0x86, 0x80,
0x88, 0x10, 0xb3, 0x70, 0x03, 0xe7, 0xcd, 0xda, 0x02, 0x66, 0x63, 0x96, 0x8a, 0xa9, 0xe1, 0xb9, 0xcc, 0xcc, 0x96, 0xee, 0xd9, 0x85, 0x28, 0xcf, 0x5a, 0x97, 0x5b, 0xde, 0x7b, 0x80, 0x84, 0xb7,
0x89, 0x4d, 0x78, 0x39, 0x36, 0x8f, 0x32, 0x98, 0xcc, 0x91, 0x5a, 0xe8, 0x74, 0x2e, 0xf3, 0x30, 0xd7, 0xa2, 0x66, 0x99, 0xf4, 0x59, 0x47, 0x8c, 0xf2, 0x2c, 0x2b, 0x6b, 0xb2, 0x85, 0x01, 0x66,
0x89, 0xf3, 0xd1, 0xf6, 0xe4, 0x85, 0xc3, 0x34, 0xcd, 0x05, 0x9d, 0x09, 0x95, 0xe3, 0xcd, 0xfd, 0xc0, 0x05, 0x71, 0xb1, 0x84, 0x98, 0x54, 0x84, 0x7a, 0x44, 0xdc, 0x55, 0x48, 0xe2, 0xdc, 0xfb,
0x8a, 0x03, 0x96, 0x0b, 0xde, 0xa6, 0xa4, 0x95, 0x3a, 0xc5, 0x0a, 0x2b, 0xbf, 0x93, 0x17, 0xbe, 0x22, 0x8c, 0x2e, 0xbb, 0xc2, 0x99, 0xe1, 0xe9, 0x0c, 0xc7, 0xc6, 0xeb, 0x18, 0xf4, 0x3b, 0x94,
0x8a, 0x30, 0x5c, 0x5f, 0xbe, 0x7c, 0x56, 0xf9, 0xe3, 0x21, 0x4d, 0x7a, 0xdb, 0x8f, 0x17, 0x63, 0x41, 0xf4, 0x02, 0x0f, 0x23, 0x4f, 0x3c, 0x14, 0xe5, 0x23, 0x35, 0x96, 0x7a, 0x2d, 0x36, 0x5f,
0x8a, 0xa5, 0x09, 0xfb, 0x46, 0x1c, 0x09, 0x9a, 0x3c, 0x1b, 0x80, 0x6d, 0x28, 0x1a, 0x1e, 0x12, 0x75, 0x77, 0x1e, 0xda, 0x0b, 0x0e, 0x3f, 0x7d, 0x95, 0xe0, 0xc1, 0x1b, 0x3c, 0x17, 0x34, 0xeb,
0x8c, 0x03, 0x49, 0xd7, 0x08, 0x57, 0x1a, 0xe5, 0xaa, 0x21, 0xc1, 0x13, 0x63, 0x48, 0x23, 0x32, 0x07, 0x32, 0x97, 0xd8, 0x68, 0xf2, 0x90, 0x58, 0x91, 0x65, 0x29, 0xef, 0xc5, 0x20, 0xef, 0x70,
0x8c, 0xb4, 0xfd, 0xae, 0x88, 0xf4, 0xf4, 0x92, 0xac, 0x6c, 0x87, 0x71, 0x66, 0x02, 0x36, 0x6d, 0xf1, 0xac, 0x84, 0x22, 0x4b, 0x85, 0xab, 0x2d, 0x39, 0x49, 0xf5, 0xae, 0xe7, 0x9c, 0xef, 0xeb,
0x8d, 0x53, 0x32, 0xb3, 0x50, 0x57, 0x7a, 0xb7, 0xb1, 0x98, 0x7f, 0x93, 0xfd, 0xa1, 0x04, 0xb2, 0x09, 0x0f, 0x6a, 0x62, 0xe2, 0x62, 0x21, 0x42, 0x64, 0xf5, 0x54, 0xb6, 0x16, 0x3e, 0x80, 0x50,
0x8d, 0x93, 0xd6, 0x0c, 0x69, 0x19, 0x59, 0x65, 0x14, 0x76, 0xe5, 0xdc, 0x46, 0x4b, 0xe1, 0x2a, 0x85, 0xfa, 0x52, 0x80, 0xb6, 0xf5, 0x24, 0xd4, 0xa1, 0xc3, 0xfc, 0xc9, 0xd0, 0x48, 0xcf, 0xad,
0x8e, 0x53, 0xef, 0xdc, 0x15, 0xf8, 0x52, 0xce, 0xe5, 0xa6, 0xe9, 0x29, 0x31, 0xbc, 0x42, 0xe6, 0x16, 0x3c, 0xd3, 0x0f, 0xf6, 0x49, 0xcc, 0xa7, 0xe8, 0x72, 0x52, 0xc3, 0xa4, 0x59, 0x96, 0x0b,
0x8e, 0xc2, 0x54, 0x0c, 0xed, 0xdd, 0x59, 0x2e, 0x61, 0x6a, 0xf4, 0x38, 0x6d, 0xa9, 0xea, 0xf7, 0x68, 0x55, 0xef, 0x0a, 0x79, 0x2e, 0x26, 0xfc, 0x14, 0x9b, 0x32, 0xe9, 0x51, 0xd7, 0x6c, 0x85,
0x8e, 0xd8, 0xaa, 0x03, 0x19, 0x9d, 0xe7, 0xd5, 0x41, 0xcc, 0xbb, 0x30, 0x09, 0xa2, 0xb1, 0xff, 0x57, 0x52, 0x19, 0x66, 0x2d, 0x8b, 0x23, 0xfb, 0xa7, 0xfd, 0xff, 0x02, 0xd8, 0x0a, 0xbd, 0x29,
0x8e, 0xde, 0x77, 0x32, 0x28, 0x4d, 0xab, 0x4a, 0xa3, 0x84, 0x60, 0x6c, 0xa0, 0x7b, 0xe2, 0x9e, 0x72, 0xfd, 0xed, 0x09, 0x45, 0x97, 0x26, 0x1a, 0x2f, 0x64, 0x73, 0x49, 0x4a, 0x8a, 0xca, 0x0a,
0x8f, 0xdb, 0x08, 0x51, 0xb7, 0x63, 0x9b, 0x32, 0x93, 0x01, 0x9b, 0xf0, 0xa8, 0xdb, 0xd6, 0xb7, 0xdd, 0x57, 0x91, 0x0a, 0xc0, 0xcc, 0x02, 0x24, 0x85, 0x2c, 0x33, 0x81, 0x88, 0x0f, 0x2a, 0x45,
0x90, 0x63, 0xf5, 0xfb, 0xc5, 0xe5, 0x7a, 0xb6, 0xde, 0x6c, 0x94, 0x88, 0x14, 0x60, 0x20, 0xe1, 0x72, 0xb1, 0x76, 0xd5, 0xab, 0x57, 0xd4, 0xc8, 0x9f, 0x0f, 0x60, 0x0e, 0x17, 0xfe, 0x2d, 0xe2,
0x90, 0xa4, 0x83, 0x52, 0x6b, 0x42, 0x38, 0xc5, 0x5b, 0xc5, 0xde, 0xd2, 0x89, 0xd7, 0xc1, 0xd3, 0x76, 0x10, 0x9b, 0x9d, 0x5f, 0x3e, 0x93, 0x52, 0x9e, 0xda, 0x75, 0xc4, 0xd4, 0x51, 0x52, 0x3a,
0x90, 0xae, 0xc5, 0xc4, 0x99, 0x56, 0x74, 0xa8, 0x49, 0xc1, 0xd1, 0x38, 0x44, 0x63, 0xf3, 0xb0, 0x2b, 0x5a, 0xa6, 0x25, 0xa5, 0xc3, 0x20, 0xfc, 0x4f, 0xe7, 0xd9, 0xbb, 0x58, 0xa6, 0x23, 0x98,
0x91, 0x41, 0xea, 0x1a, 0x4e, 0x6b, 0xf1, 0xf4, 0xd7, 0x2c, 0x28, 0xa1, 0xd0, 0xd1, 0x24, 0xa9, 0x28, 0xd5, 0xa7, 0xd3, 0x6b, 0x14, 0xfc, 0x7e, 0x7e, 0x53, 0xef, 0x44, 0x23, 0x60, 0xff, 0x99,
0x91, 0x50, 0x09, 0xd1, 0xcf, 0x9d, 0x68, 0xb9, 0xe5, 0x30, 0x64, 0xde, 0x82, 0xd4, 0xb7, 0x0b, 0x58, 0xd2, 0xf0, 0x14, 0xa0, 0x38, 0x05, 0xcc, 0x40, 0x64, 0x27, 0xd3, 0x23, 0xd9, 0xfc, 0x35,
0x91, 0x65, 0x6a, 0xa4, 0xef, 0x49, 0x3b, 0x38, 0x24, 0xa0, 0xb7, 0x26, 0x32, 0x48, 0xe4, 0xe2, 0xd6, 0x57, 0xa5, 0xc8, 0x48, 0x8d, 0x88, 0x0c, 0xb6, 0x5b, 0x01, 0x73, 0x09, 0x32, 0xfb, 0x53,
0x91, 0x72, 0x1a, 0xa7, 0x62, 0x66, 0xb5, 0xbb, 0x2f, 0x80, 0x09, 0xf1, 0x18, 0x85, 0x10, 0xa3, 0x6e, 0x54, 0xaf, 0xd5, 0x6e, 0x96, 0x73, 0x87, 0xea, 0x7d, 0x0b, 0x11, 0x4d, 0x78, 0x20, 0x89,
0x91, 0x97, 0x1c, 0x14, 0x97, 0xbf, 0x8e, 0x5b, 0xc6, 0x84, 0x39, 0xac, 0xc4, 0x8d, 0x63, 0xeb, 0xb8, 0xfa, 0xab, 0xfd, 0x76, 0x4d, 0xcb, 0xe8, 0x2f, 0x3b, 0xa9, 0x77, 0xca, 0xc8, 0xcf, 0x6a,
0x91, 0xd5, 0x6d, 0x76, 0x5b, 0x02, 0x0b, 0x99, 0xb7, 0x71, 0x65, 0x82, 0xe3, 0xc3, 0x80, 0x14, 0x7f, 0xf0, 0xac, 0xdd, 0xf6, 0x3b, 0xb0, 0x9a, 0xcd, 0xed, 0x0c, 0x02, 0x49, 0xe5, 0xcc, 0x8c,
0x92, 0x18, 0x5c, 0x26, 0x42, 0x85, 0x74, 0x1f, 0xa7, 0xf1, 0x98, 0xca, 0xd8, 0xf3, 0x07, 0xc6, 0x08, 0x91, 0xad, 0x93, 0x2d, 0x9e, 0x3c, 0x2a, 0x08, 0xd9, 0x25, 0x46, 0xff, 0x70, 0x99, 0xed,
0x92, 0xf8, 0x58, 0xf6, 0xa0, 0x2b, 0xd2, 0x01, 0x46, 0x18, 0xb0, 0x5d, 0x77, 0x59, 0xe3, 0x4e, 0x77, 0x81, 0xb1, 0x5c, 0x34, 0xc8, 0x81, 0x4b, 0xa4, 0xc9, 0x30, 0xb3, 0x20, 0xf8, 0xdb, 0x09,
0x93, 0x35, 0xc9, 0xdd, 0x70, 0x01, 0xa2, 0xec, 0x4e, 0x32, 0x2a, 0xb6, 0xa2, 0xd1, 0x1e, 0x6c, 0x4c, 0xd4, 0xef, 0x16, 0x44, 0xc0, 0x0d, 0x63, 0x14, 0xb7, 0xba, 0x5a, 0x26, 0xf9, 0xeb, 0x7d,
0x93, 0xf5, 0x23, 0x3e, 0x99, 0x70, 0xa7, 0xdb, 0x1e, 0x4c, 0x9a, 0xa2, 0xde, 0x24, 0x04, 0x63, 0x67, 0x28, 0xe7, 0xc6, 0x6c, 0x03, 0xf2, 0xbb, 0xe7, 0x4b, 0x18, 0xb2, 0x0a, 0x93, 0xba, 0x96,
0x94, 0x14, 0xf5, 0xfa, 0x58, 0x53, 0x97, 0x8c, 0x07, 0xfc, 0x6b, 0xb1, 0x7a, 0x1c, 0xa9, 0x46, 0x0f, 0xe4, 0x43, 0xff, 0xca, 0x02, 0x1f, 0xa5, 0x2c, 0x86, 0x72, 0xa9, 0x44, 0x60, 0xf4, 0x4f,
0x94, 0x1a, 0x51, 0x23, 0x9e, 0xd4, 0x16, 0xa7, 0x88, 0xb5, 0x05, 0x9d, 0xd6, 0x47, 0x63, 0x1b, 0x16, 0xe5, 0x06, 0xc8, 0xf6, 0xad, 0x87, 0xb1, 0xd5, 0xf3, 0xb8, 0xc9, 0x71, 0x99, 0xa1, 0x60,
0x94, 0x70, 0x78, 0xf9, 0x7c, 0x61, 0x96, 0x96, 0x8c, 0x3a, 0xe9, 0x9c, 0x9a, 0x5d, 0x58, 0x66, 0x7e, 0x86, 0x88, 0x2c, 0xf6, 0xc8, 0xc9, 0xd5, 0x89, 0x67, 0xa4, 0x96, 0xbb, 0x7a, 0xf4, 0x3c,
0x95, 0x04, 0x9f, 0x0e, 0x41, 0x37, 0xc7, 0x90, 0xb0, 0xd2, 0x76, 0x71, 0x95, 0xe5, 0x6f, 0x73, 0x80, 0x7d, 0x12, 0x3a, 0xdc, 0xf8, 0xf6, 0xe7, 0xbf, 0x2d, 0x4d, 0x99, 0x1d, 0x30, 0x5f, 0x89,
0x95, 0x8c, 0x0d, 0xb6, 0x51, 0xf4, 0xe4, 0xcc, 0xd0, 0x62, 0x44, 0x62, 0x63, 0x61, 0x8c, 0x87, 0x79, 0x10, 0xe0, 0x82, 0x57, 0xec, 0x6d, 0x9b, 0xcd, 0xd8, 0xbf, 0x1e, 0x33, 0x13, 0x4f, 0xfb,
0x96, 0xe4, 0x50, 0x94, 0x50, 0xd3, 0x80, 0xda, 0xc3, 0x62, 0xff, 0x8e, 0x29, 0x55, 0x89, 0x12, 0x8a, 0x1f, 0x1c, 0xe5, 0x58, 0x85, 0xd2, 0x0d, 0x89, 0xc2, 0x7b, 0xa2, 0xa9, 0xd0, 0x09, 0x09,
0x97, 0x83, 0xb5, 0xee, 0x44, 0x92, 0xe9, 0xe8, 0x91, 0xc6, 0x55, 0xf1, 0xf4, 0x80, 0x35, 0x95, 0x9d, 0xad, 0x45, 0x3c, 0x0e, 0x62, 0x3a, 0xf0, 0xfe, 0x7b, 0xf2, 0xc0, 0xa5, 0x78, 0x85, 0xe3,
0x97, 0xa5, 0x1a, 0x09, 0x44, 0x44, 0x62, 0x0d, 0xf3, 0x8c, 0xd8, 0xc6, 0x51, 0x2c, 0xac, 0x90, 0x9a, 0x75, 0xfd, 0x43, 0x7a, 0xe1, 0xe4, 0xd2, 0x29, 0x29, 0x80, 0x76, 0x61, 0x23, 0x81, 0x27,
0x97, 0xa8, 0xc5, 0xba, 0x11, 0xd6, 0x1f, 0xef, 0xbb, 0x5d, 0x6a, 0x05, 0xda, 0x4e, 0x15, 0xba, 0x47, 0x2d, 0xc4, 0xc6, 0xcd, 0x49, 0x72, 0xfc, 0x1a, 0x03, 0x5d, 0xe3, 0x21, 0x34, 0x2f, 0xe4,
0x98, 0xcc, 0x8b, 0x91, 0xfe, 0xc5, 0x25, 0x2f, 0x62, 0xe8, 0x18, 0x43, 0xd9, 0xd5, 0xd8, 0xac, 0x2a, 0x2f, 0x25, 0x3a, 0xa3, 0x81, 0x52, 0xb3, 0x23, 0x6a, 0x50, 0x92, 0x20, 0x0e, 0xd2, 0x90,
0x99, 0x28, 0x20, 0xe6, 0xec, 0x8c, 0x41, 0xda, 0xae, 0x4b, 0xd8, 0xab, 0x48, 0xf5, 0x82, 0x68, 0xe9, 0x43, 0xa6, 0x70, 0xd3, 0x5c, 0xa5, 0xe2, 0xbd, 0xcd, 0x3e, 0x7c, 0x4c, 0x94, 0xa0, 0x72,
0x99, 0x2d, 0x35, 0x9a, 0xa7, 0xa5, 0xf7, 0x89, 0xd2, 0x68, 0xb9, 0x4c, 0x11, 0xb9, 0x48, 0x5a, 0x6b, 0x1c, 0xe6, 0x43, 0x62, 0xb0, 0xed, 0xb4, 0x44, 0x1c, 0xcc, 0x18, 0x7c, 0x39, 0x64, 0x7b,
0x99, 0x54, 0xa1, 0xa9, 0x9d, 0x55, 0xe8, 0xb1, 0x89, 0xab, 0x1b, 0xca, 0x41, 0x4b, 0x91, 0xf6, 0xa0, 0x17, 0x19, 0x1f, 0x6c, 0x40, 0xa8, 0x6b, 0x6f, 0x3e, 0xf3, 0x68, 0xdd, 0x86, 0x00, 0x31,
0x99, 0x59, 0xed, 0x4e, 0x05, 0xe5, 0x48, 0xb5, 0x9f, 0x21, 0x93, 0x08, 0xa4, 0x55, 0x63, 0xea, 0x85, 0xbb, 0x22, 0x4c, 0x1a, 0xd9, 0x6d, 0xec, 0x0e, 0x96, 0xc0, 0xe7, 0x1f, 0xfc, 0xcd, 0x81,
0x99, 0x6c, 0x1d, 0x55, 0x95, 0x5d, 0xfb, 0x36, 0x98, 0x86, 0x9b, 0xdc, 0x2a, 0x70, 0x0e, 0x6b, 0xcc, 0x76, 0x24, 0x68, 0x71, 0x6b, 0x5c, 0xbd, 0xa7, 0x29, 0x5c, 0xf9, 0x88, 0x41, 0x22, 0x0a,
0x99, 0xb2, 0xbd, 0x1f, 0xcf, 0x17, 0xb5, 0x2c, 0x64, 0xe8, 0x50, 0x6b, 0x97, 0xfa, 0x10, 0xcf, 0x8b, 0x63, 0x97, 0xc9, 0xd0, 0x5d, 0x8d, 0x54, 0x3f, 0x86, 0x89, 0x3b, 0x21, 0x0d, 0xba, 0x62,
0x99, 0xd7, 0xad, 0xa0, 0xd6, 0x7e, 0x52, 0x33, 0x10, 0x8d, 0xbd, 0x76, 0x70, 0x2f, 0x4b, 0x16, 0x80, 0x87, 0xcf, 0xc4, 0xec, 0x65, 0x49, 0x4d, 0x6c, 0xa8, 0xab, 0xa8, 0x58, 0xfe, 0xba, 0xda,
0x9a, 0x22, 0x81, 0x8e, 0x84, 0xca, 0x5c, 0xde, 0xc6, 0xf7, 0xfd, 0xf0, 0xa1, 0x0b, 0x9f, 0xf2, 0x30, 0xa5, 0x3a, 0x5c, 0x18, 0xf4, 0xe9, 0x17, 0x9c, 0x90, 0xa3, 0xfd, 0x26, 0x8c, 0xd6, 0x22,
0x9a, 0xf9, 0x25, 0x41, 0xe6, 0x3e, 0xac, 0xbc, 0x57, 0x84, 0xbb, 0x44, 0xdb, 0x66, 0xf9, 0xb6, 0x07, 0x26, 0x17, 0x4f, 0x4e, 0xc1, 0x78, 0xc6, 0xce, 0x32, 0xea, 0xf6, 0x47, 0xee, 0xbc, 0xa2,
0x9b, 0xaf, 0x4f, 0x76, 0xd7, 0x6b, 0xf5, 0xd6, 0xa8, 0x97, 0xbf, 0xbd, 0x5f, 0x42, 0x9b, 0xa1, 0x4d, 0x04, 0xe0, 0x8b, 0x48, 0xc3, 0xee, 0x8d, 0x76, 0x93, 0x0a, 0x82, 0x8f, 0xff, 0x38, 0x91,
0x9c, 0x25, 0x9f, 0xcb, 0x30, 0x1d, 0x5f, 0xc7, 0x39, 0x7e, 0xd5, 0x75, 0x99, 0x63, 0xe0, 0xef, 0x6b, 0x36, 0xe4, 0x20, 0x57, 0xfd, 0x73, 0x04, 0x6e, 0x6b, 0xd0, 0x8b, 0x14, 0x9f, 0x75, 0x1c,
0x9d, 0x00, 0xae, 0x4c, 0xd4, 0x7a, 0x41, 0xc7, 0x83, 0xdc, 0x48, 0xf3, 0x42, 0xc0, 0x76, 0xc2, 0xc1, 0x6f, 0x34, 0x13, 0xf4, 0xd2, 0xdf, 0x50, 0xd1, 0x81, 0xca, 0x3b, 0xb5, 0xad, 0x85, 0x9d,
0x9d, 0xd2, 0xdc, 0xb7, 0x2f, 0x5e, 0x74, 0x16, 0x27, 0xf2, 0xe9, 0xe0, 0x3a, 0xb1, 0x85, 0x03, 0xa3, 0x40, 0x3c, 0xf6, 0xa9, 0x04, 0xa4, 0x79, 0xa4, 0xdb, 0x05, 0xd9, 0x7e, 0x22, 0x50, 0xa9,
0x9d, 0xeb, 0xca, 0x15, 0x9f, 0x78, 0x92, 0xd5, 0x6c, 0x94, 0x61, 0x4c, 0x46, 0x9c, 0xf3, 0x7c, 0x8d, 0xa0, 0x35, 0x68, 0x3b, 0x12, 0x51, 0xfc, 0x4e, 0x6e, 0xc0, 0xef, 0x2e, 0xee, 0x72, 0x0e,
0x9e, 0x08, 0x46, 0x4c, 0xef, 0x99, 0x31, 0x47, 0x3c, 0x38, 0x4d, 0xb7, 0x72, 0x78, 0x99, 0x7a, 0xe9, 0x2d, 0x50, 0x36, 0x8c, 0x8d, 0x2b, 0x9d, 0x6a, 0xea, 0x6e, 0x33, 0x23, 0xa2, 0xbb, 0xe7,
0x9e, 0x0d, 0x90, 0x74, 0xf1, 0x46, 0x46, 0x1f, 0x9a, 0xce, 0xe7, 0xd2, 0x7f, 0x2c, 0x7d, 0xd8, 0xbe, 0xe7, 0x3e, 0xb6, 0x2a, 0xc6, 0x2c, 0xf8, 0x7f, 0x03, 0xbe, 0xe0, 0xc4, 0x51, 0x65, 0x28,
0x9e, 0xbd, 0xa9, 0x55, 0x4a, 0xd5, 0xbb, 0x9e, 0x3d, 0x5c, 0xe7, 0x00, 0xf7, 0xc8, 0x6d, 0x4f, 0x5b, 0x0d, 0x78, 0x2b, 0xf1, 0xdb, 0xf3, 0x0a, 0x6a, 0x72, 0x34, 0x74, 0x9a, 0x5d, 0xd5, 0x17,
0x9e, 0xd3, 0x3f, 0x0f, 0xbc, 0x18, 0x0b, 0xc0, 0x32, 0xf8, 0x90, 0x9c, 0xa2, 0xc4, 0xab, 0x34, 0x18, 0xed, 0xc3, 0x3a, 0x45, 0xa5, 0x0d, 0x25, 0x21, 0xa3, 0xb5, 0x87, 0x6a, 0xa3, 0xea, 0x2c,
0x9f, 0x13, 0x6f, 0x15, 0x2a, 0x21, 0x88, 0x5d, 0x57, 0x45, 0x19, 0x55, 0x4c, 0x7b, 0x64, 0xc1, 0x5f, 0x01, 0x4e, 0x41, 0x3c, 0xde, 0x6a, 0xd1, 0x60, 0xf2, 0x09, 0x1e, 0xba, 0x9e, 0x64, 0x24,
0x9f, 0x18, 0x63, 0xed, 0x57, 0x17, 0xc3, 0x94, 0xb4, 0x2e, 0xf1, 0x0a, 0x66, 0x07, 0xb1, 0x44, 0xa6, 0x5b, 0xa1, 0x1f, 0xb6, 0x57, 0x9d, 0xf9, 0x4b, 0x8e, 0xb2, 0xf0, 0xc4, 0xcd, 0x60, 0xc1,
0x9f, 0x2b, 0x71, 0xec, 0x2f, 0xec, 0xc9, 0x3e, 0x4e, 0xde, 0xae, 0x24, 0xb3, 0x2f, 0x88, 0x57, 0xfa, 0x36, 0xa8, 0x1a, 0x72, 0x72, 0xde, 0xfd, 0x54, 0x35, 0xd2, 0x9f, 0xa3, 0xbf, 0x82, 0x8e,
0x9f, 0xa4, 0xd5, 0x02, 0x3f, 0xd4, 0x3e, 0xca, 0xff, 0x42, 0x00, 0xba, 0x7e, 0x8d, 0x43, 0x53, 0x25, 0x9d, 0x2b, 0x7e, 0x5e, 0x72, 0xb5, 0x09, 0x6e, 0xff, 0x80, 0x27, 0xd6, 0x6d, 0x10, 0x43,
0xa0, 0x10, 0x7a, 0x56, 0x4e, 0x93, 0x98, 0x9c, 0x57, 0x04, 0x4f, 0xd1, 0x8a, 0xa8, 0x5b, 0xeb, 0x12, 0x58, 0x10, 0x1a, 0xc3, 0xd9, 0xf6, 0xe1, 0x0b, 0xf1, 0x2c, 0x1c, 0x65, 0x73, 0xbc, 0x2b,
0xa1, 0x09, 0xe7, 0x1a, 0xe3, 0xa0, 0x37, 0x6c, 0xa0, 0x05, 0x9a, 0x42, 0x12, 0x50, 0x50, 0x8e, 0xdb, 0x2b, 0xb6, 0x24, 0xb6, 0x51, 0x7a, 0x29, 0x1f, 0x51, 0xe2, 0x49, 0xf1, 0x6b, 0x5c, 0xe7,
0xa1, 0xa5, 0x9c, 0xc2, 0x78, 0x42, 0x46, 0xad, 0x69, 0x3b, 0x1d, 0xf1, 0x51, 0x45, 0x46, 0x42, 0x32, 0x4e, 0x89, 0xc8, 0x98, 0x56, 0x6a, 0x59, 0x90, 0x68, 0x91, 0xf4, 0x80, 0x89, 0xec, 0xe9,
0xa2, 0x24, 0x71, 0xb1, 0xd0, 0x4c, 0x11, 0xca, 0x89, 0x5e, 0x8c, 0x07, 0x8c, 0x22, 0x17, 0x18, 0xc9, 0x6c, 0x40, 0x30, 0x9d, 0x64, 0xcf, 0x84, 0x14, 0x47, 0x59, 0xca, 0x7d, 0xfb, 0xd0, 0xd0,
0xa3, 0x30, 0xfd, 0xe6, 0x5c, 0x06, 0x7a, 0x5f, 0x0b, 0x75, 0xc8, 0x0d, 0x0a, 0x30, 0x07, 0x67, 0xc3, 0x01, 0xeb, 0x75, 0xe0, 0xcf, 0x9b, 0x4e, 0xe2, 0x40, 0xf0, 0xd6, 0x0b, 0x3d, 0xc5, 0x03,
0xa3, 0x72, 0xda, 0x66, 0xe1, 0x5d, 0x45, 0x6d, 0xc4, 0x20, 0x0b, 0xd3, 0x90, 0x8e, 0x09, 0x43, 0xba, 0x4e, 0xaf, 0x86, 0x4f, 0x7a, 0x35, 0x06, 0x2b, 0x6b, 0x17, 0x04, 0x32, 0x0d, 0x09, 0x0a,
0xa4, 0x8b, 0x5e, 0x31, 0x47, 0x7d, 0xa2, 0x48, 0x68, 0x0a, 0x89, 0x35, 0xd1, 0xe5, 0xe6, 0x30, 0xe6, 0xfd, 0xe2, 0x22, 0x77, 0xf9, 0x63, 0x5d, 0xa7, 0xd6, 0xf7, 0xf9, 0xaa, 0x17, 0xe3, 0x4a,
0xa4, 0xb3, 0xfe, 0xe3, 0x24, 0xd2, 0x5c, 0x53, 0xfb, 0x5c, 0xb4, 0x86, 0x30, 0xdc, 0x80, 0xdd, 0x7e, 0xe7, 0x8c, 0x1a, 0xac, 0x8c, 0x8d, 0xee, 0xa9, 0x27, 0x39, 0x69, 0x97, 0xe3, 0x3b, 0xce,
0xa4, 0xd9, 0x78, 0xb7, 0xc4, 0xbd, 0xa1, 0x54, 0x35, 0xd5, 0x08, 0xf8, 0xb9, 0x59, 0x2e, 0xc2, 0xa5, 0xad, 0xfb, 0x12, 0xea, 0x7b, 0xad, 0x14, 0x6a, 0x35, 0xec, 0xb5, 0x30, 0x94, 0x64, 0x2f,
0xa5, 0xbc, 0xfc, 0x74, 0x8d, 0xa4, 0x15, 0xbd, 0x7f, 0x00, 0xb6, 0x69, 0xe1, 0x23, 0x7c, 0x98, 0x98, 0xa6, 0xd0, 0x35, 0x17, 0xcc, 0x80, 0xb3, 0x62, 0x6f, 0x0b, 0xe3, 0x26, 0x04, 0x6b, 0x28,
0xa5, 0xe0, 0xc1, 0xc1, 0xfd, 0xeb, 0xe6, 0x1c, 0x4d, 0xdb, 0xb6, 0x6c, 0x57, 0xeb, 0x23, 0xbc, 0xaa, 0x86, 0xc3, 0x6b, 0xab, 0x99, 0x00, 0xad, 0x10, 0x34, 0x2a, 0x49, 0x71, 0x12, 0x8e, 0xac,
0xa5, 0xe4, 0x76, 0xc4, 0xba, 0x2e, 0xd8, 0xef, 0x8c, 0x30, 0xf2, 0x47, 0xf3, 0xe1, 0x3a, 0xfa, 0x5c, 0x7e, 0x3a, 0x5a, 0x95, 0x2e, 0x4b, 0x83, 0x25, 0xc2, 0x2f, 0x33, 0xf7, 0xf2, 0x36, 0x21,
0xa6, 0x08, 0xa8, 0x7f, 0x51, 0xbd, 0xf7, 0x53, 0x2b, 0x4b, 0x80, 0xfa, 0x95, 0xea, 0xdf, 0xdf, 0x1b, 0xf8, 0xb0, 0xcb, 0xb5, 0x8a, 0x7d, 0x39, 0x39, 0xc9, 0xf1, 0x1c, 0x12, 0xe7, 0x1c, 0x85,
0xa6, 0xf1, 0x3f, 0x3b, 0xb8, 0x13, 0x2d, 0x24, 0x85, 0x91, 0xf6, 0x76, 0x2c, 0xed, 0x6d, 0x3a, 0x55, 0xef, 0xd8, 0x81, 0x2d, 0xb9, 0x73, 0x04, 0x49, 0xe2, 0x67, 0xcb, 0x64, 0x47, 0x14, 0x5b,
0xa7, 0xb7, 0x88, 0xa7, 0x84, 0x96, 0x07, 0x34, 0x8c, 0x0d, 0xe9, 0x04, 0x19, 0x89, 0xf7, 0xd6, 0x7e, 0xc3, 0x02, 0xf0, 0xce, 0x8d, 0x7f, 0xde, 0x5e, 0x43, 0x48, 0x01, 0xf0, 0x12, 0xb5, 0xb1,
0xa7, 0xdf, 0xcc, 0x3a, 0x8d, 0x6a, 0xb3, 0x0f, 0x93, 0xf3, 0x17, 0x48, 0xdb, 0xc8, 0xea, 0x38, 0x41, 0x5c, 0xf5, 0x2b, 0xb9, 0xad, 0x80, 0x85, 0x67, 0x2c, 0xd9, 0xab, 0x89, 0x38, 0xd5, 0xde,
0xa8, 0xa3, 0x30, 0x0e, 0x33, 0xa0, 0xa2, 0x69, 0x28, 0x39, 0xcc, 0xba, 0x84, 0x80, 0x3c, 0x5e, 0x74, 0x2d, 0x12, 0x50, 0x1b, 0x6d, 0x58, 0xc4, 0x6e, 0xb8, 0x7f, 0x32, 0x01, 0x7f, 0x2c, 0xff,
0xa9, 0x24, 0xd3, 0xca, 0xd6, 0xda, 0x42, 0xb7, 0x39, 0x9b, 0x96, 0xa0, 0x95, 0xa0, 0x6f, 0x18, 0xf6, 0xb1, 0xab, 0xa5, 0xb8, 0x73, 0xb0, 0xd5, 0xf3, 0xa0, 0xee, 0x21, 0x73, 0xb4, 0x8b, 0x6c,
0xa9, 0x83, 0xe7, 0x3e, 0x57, 0xbd, 0xf0, 0x14, 0xc9, 0xa2, 0x93, 0x31, 0x29, 0x0e, 0xe8, 0x7d, 0xf3, 0x7f, 0x97, 0xc8, 0x1d, 0xbc, 0xc4, 0x3c, 0x6c, 0x93, 0x3f, 0xe2, 0x20, 0x9c, 0x0b, 0xd5,
0xa9, 0xce, 0x29, 0x69, 0xa8, 0x39, 0x82, 0xf8, 0x0b, 0x6b, 0x26, 0x85, 0x56, 0x8a, 0x7d, 0x6f, 0x8e, 0x58, 0xbc, 0xb5, 0xfa, 0xba, 0xa2, 0xf8, 0x16, 0x80, 0x92, 0x17, 0x55, 0x18, 0xa0, 0xc9,
0xab, 0x31, 0x1e, 0x73, 0x71, 0x12, 0xe4, 0xd3, 0x4a, 0xbf, 0x54, 0x58, 0x36, 0xbc, 0x67, 0x16, 0x37, 0x66, 0x3e, 0x93, 0x73, 0x8c, 0xef, 0xa3, 0x74, 0x05, 0x21, 0x4c, 0xe8, 0xc9, 0x2a, 0x58,
0xab, 0xee, 0x52, 0x28, 0x92, 0xfa, 0x10, 0xb2, 0x22, 0x08, 0xb4, 0xd1, 0x54, 0x01, 0x84, 0x61, 0x7b, 0xc9, 0x87, 0x5c, 0x9e, 0x03, 0xe5, 0x35, 0x3b, 0x4f, 0xf4, 0x76, 0x57, 0x7d, 0x91, 0x8b,
0xad, 0x16, 0xde, 0x1e, 0x2b, 0xa2, 0x71, 0x96, 0x39, 0x51, 0x24, 0x68, 0x3b, 0x80, 0xef, 0xc1, 0x86, 0xee, 0x7e, 0x51, 0xd4, 0x34, 0xf8, 0xff, 0x67, 0xd9, 0x73, 0xf4, 0x6e, 0x8e, 0x60, 0x2f,
0xad, 0x3b, 0xe5, 0x89, 0xc0, 0x47, 0x4e, 0x97, 0xde, 0x5b, 0xb2, 0xbf, 0x33, 0x53, 0x49, 0x48, 0xb7, 0x6b, 0xb8, 0x03, 0x76, 0xdf, 0xdc, 0x58, 0xb1, 0xfe, 0xd7, 0x67, 0xb5, 0xa1, 0x5b, 0xfc,
0xad, 0xcc, 0x0b, 0x6f, 0xd6, 0xdc, 0x59, 0x11, 0xbf, 0x42, 0xf0, 0x36, 0xc0, 0x33, 0xfc, 0x3e, 0x43, 0xf0, 0x7a, 0x83, 0x12, 0xe9, 0x1d, 0x0d, 0x8d, 0x32, 0x79, 0x3b, 0x62, 0x94, 0x0c, 0x7e,
0xae, 0x1d, 0xca, 0x8a, 0xab, 0x7c, 0x4b, 0xdd, 0x21, 0xc5, 0xaa, 0x19, 0xa3, 0x23, 0xf5, 0x97, 0xbd, 0x18, 0x50, 0x44, 0x5d, 0x76, 0x69, 0x5c, 0xb2, 0x91, 0x0c, 0xcc, 0xb5, 0xf1, 0x63, 0xb8,
0xaf, 0x3b, 0xbf, 0x0c, 0x27, 0x5b, 0xdd, 0x5e, 0xbd, 0x8a, 0x87, 0xf0, 0x02, 0x63, 0x84, 0x74, 0x85, 0x57, 0x2f, 0x8a, 0x98, 0x3d, 0xef, 0x0e, 0xae, 0x98, 0x95, 0xcd, 0x93, 0xd7, 0xff, 0xc3,
0xaf, 0x79, 0xb1, 0x40, 0x64, 0x60, 0x1b, 0xc0, 0x98, 0x7d, 0x47, 0x47, 0xaf, 0x1e, 0x91, 0x4a, 0x22, 0x8c, 0x05, 0xd6, 0x22, 0xce, 0xda, 0x03, 0xb7, 0xa4, 0xf6, 0x70, 0x14, 0xfe, 0xe7, 0x67,
0xaf, 0x93, 0xd5, 0xa2, 0x23, 0x8f, 0x01, 0xd5, 0x95, 0xa1, 0xbc, 0x20, 0x92, 0xf0, 0xab, 0x29, 0xa5, 0x50, 0xb2, 0xb9, 0x6b, 0xde, 0x73, 0x56, 0xeb, 0xf6, 0x4d, 0x8f, 0x04, 0x23, 0x49, 0x58,
0xb1, 0x33, 0xde, 0x42, 0xa3, 0x73, 0x76, 0xf5, 0xd9, 0x14, 0x39, 0xaf, 0x3d, 0x61, 0xd3, 0x82, 0x01, 0xf1, 0x03, 0x77, 0xc3, 0x6d, 0xac, 0xd9, 0xc2, 0x61, 0x0f, 0x52, 0xaa, 0x12, 0x4a, 0x91,
0xb1, 0x49, 0xb2, 0x9e, 0x82, 0x11, 0xe2, 0x48, 0x27, 0xfb, 0xe0, 0x16, 0x8d, 0x30, 0xcb, 0x26, 0x19, 0xcd, 0x33, 0x65, 0xbd, 0x6f, 0x81, 0x73, 0xe7, 0xa7, 0x31, 0xc5, 0xf7, 0x02, 0xdc, 0xd9,
0xb2, 0xbe, 0xae, 0xca, 0xc1, 0xbd, 0xe4, 0x09, 0xf8, 0x29, 0x33, 0xd8, 0x0f, 0xa3, 0xbf, 0x5f, 0xa0, 0xd1, 0xff, 0x8d, 0x1f, 0x97, 0xe5, 0x26, 0x0b, 0xb2, 0x5c, 0x0f, 0xbb, 0xa3, 0x5c, 0xa7,
0xb3, 0x44, 0xd2, 0xf3, 0x3e, 0x30, 0xa2, 0x5e, 0xb9, 0x27, 0xe4, 0xc1, 0xa4, 0x19, 0xd0, 0x19, 0xac, 0xcf, 0xa8, 0x24, 0x9a, 0x5c, 0xe6, 0x22, 0xb8, 0xe7, 0xc7, 0xd8, 0xd5, 0x80, 0x7a, 0x00,
0xb3, 0xe5, 0x06, 0x34, 0x0f, 0xbf, 0x6b, 0x57, 0x86, 0x97, 0x33, 0x93, 0x07, 0x9f, 0x24, 0xb6, 0x6b, 0xa4, 0x65, 0x07, 0xe3, 0x5e, 0x91, 0x1d, 0xb0, 0x36, 0x2a, 0x2a, 0xcd, 0xe9, 0x70, 0x49,
0xb3, 0xea, 0xfd, 0xeb, 0x6e, 0x28, 0x09, 0xbd, 0x72, 0x73, 0x0e, 0x4f, 0xc7, 0x89, 0x6b, 0x9d, 0x94, 0x54, 0x3c, 0xa3, 0x60, 0xe9, 0x62, 0x9b, 0x63, 0xc0, 0x39, 0xff, 0x91, 0x27, 0x4b, 0xeb,
0xb4, 0x20, 0x50, 0x9d, 0x0d, 0x69, 0xb2, 0x94, 0x63, 0x3f, 0xd7, 0xae, 0x2c, 0x36, 0xb2, 0xb5, 0x49, 0xd4, 0x5a, 0x6a, 0x86, 0x3e, 0xf1, 0x68, 0x43, 0xa1, 0x11, 0x6a, 0x11, 0x12, 0x7f, 0x56,
0xb4, 0x93, 0x8e, 0xd2, 0xff, 0x00, 0x1b, 0x73, 0xef, 0x31, 0xe5, 0xbb, 0xbe, 0xbe, 0x1d, 0x6d, 0xbb, 0x7d, 0x98, 0x88, 0xa9, 0xfb, 0xe5, 0x25, 0x1a, 0x52, 0xa5, 0xed, 0x01, 0x66, 0x52, 0xcf,
0xb5, 0x25, 0x31, 0xc8, 0x43, 0x51, 0xeb, 0x69, 0x5a, 0x8a, 0xff, 0x0b, 0x7a, 0x5b, 0xdf, 0x93, 0x97, 0x2c, 0xde, 0xdf, 0xaf, 0x40, 0x67, 0x74, 0x54, 0x25, 0xd7, 0x5e, 0x21, 0xcd, 0x0c, 0xbb,
0xb6, 0x32, 0xa6, 0x28, 0x6c, 0x6f, 0xaa, 0x66, 0x43, 0xec, 0x34, 0x31, 0x1e, 0x0b, 0x97, 0x10, 0xa3, 0x50, 0x8f, 0xc9, 0x52, 0xe9, 0xa0, 0x42, 0x63, 0xc3, 0x31, 0x79, 0xe3, 0x28, 0x14, 0xf8,
0xb6, 0x7d, 0xb8, 0xd5, 0x3c, 0x92, 0x5f, 0xeb, 0xad, 0xaf, 0xce, 0x43, 0x56, 0x20, 0x6c, 0x85, 0xf7, 0x3e, 0x22, 0x45, 0x6e, 0xae, 0x4e, 0xd6, 0xee, 0x77, 0xf6, 0xa9, 0xe1, 0x1a, 0x07, 0x8c,
0xb7, 0xd3, 0xe3, 0xc4, 0xa9, 0x30, 0xff, 0xfc, 0xdb, 0x18, 0x46, 0x19, 0x53, 0x4e, 0xf7, 0xc3, 0xd4, 0x54, 0x35, 0xef, 0x97, 0xf7, 0x98, 0x86, 0x11, 0x71, 0x4f, 0x55, 0x23, 0xb2, 0x07, 0xe5,
0xb7, 0xea, 0x2f, 0xbd, 0x3f, 0xee, 0xda, 0x30, 0x99, 0x12, 0xb2, 0x76, 0x7b, 0xa8, 0x0d, 0xd0, 0x37, 0x81, 0x3e, 0x80, 0xfe, 0xd1, 0x7c, 0xda, 0x79, 0xef, 0x7f, 0x62, 0xb6, 0xd1, 0x95, 0x3b,
0xb8, 0xd6, 0xb5, 0xe7, 0x85, 0x7b, 0x45, 0x83, 0x0e, 0x01, 0x7c, 0x7b, 0xe3, 0xd8, 0x56, 0xad, 0xeb, 0x97, 0xc7, 0x29, 0x0e, 0xb0, 0x66, 0x5a, 0x3d, 0x47, 0x3a, 0x4b, 0xeb, 0x51, 0xdc, 0xf3,
0xb9, 0x3f, 0x06, 0x99, 0x59, 0x8f, 0x8b, 0x20, 0xfa, 0x0d, 0xac, 0xc1, 0x2c, 0xfc, 0xfc, 0x1f, 0x25, 0x68, 0x79, 0x3f, 0x6e, 0x77, 0x9e, 0x04, 0x79, 0x5e, 0x6d, 0x7c, 0x22, 0x53, 0x0f, 0x75,
0xb9, 0x79, 0x15, 0xda, 0x9f, 0x05, 0x27, 0x7f, 0xa5, 0x68, 0x7f, 0x8c, 0x41, 0x13, 0x2d, 0xf6, 0x91, 0x52, 0x51, 0x7f, 0x2b, 0xa2, 0x52, 0xd4, 0x66, 0x39, 0x5b, 0x40, 0xd4, 0xf2, 0xd1, 0x55,
0xb9, 0xb2, 0x0e, 0x93, 0x3e, 0x2b, 0x6c, 0x33, 0xc9, 0xff, 0x08, 0x8e, 0x22, 0x4d, 0x80, 0x20, 0x28, 0xf2, 0x9a, 0x4c, 0xeb, 0xe5, 0x0a, 0xb5, 0xd7, 0x46, 0x02, 0x79, 0x11, 0xa4, 0x54, 0xff,
0xba, 0xdf, 0xf5, 0xe4, 0xf0, 0xfe, 0xa7, 0x11, 0x70, 0x1c, 0xa8, 0xfb, 0x22, 0xe4, 0xc4, 0x38, 0x21, 0xe3, 0x1e, 0x21, 0x0c, 0xf5, 0x2d, 0x1d, 0x4f, 0x74, 0xdd, 0x50, 0xf1, 0xd0, 0x39, 0xbc,
0xbb, 0x01, 0xda, 0x03, 0x33, 0xbb, 0x63, 0x9c, 0x7e, 0x1c, 0x80, 0x6d, 0xb0, 0x56, 0x1d, 0xc9, 0x8a, 0x53, 0x16, 0xf2, 0x2f, 0xef, 0x10, 0x90, 0xfb, 0x8d, 0x0b, 0xe4, 0x6d, 0xae, 0x49, 0x9a,
0xbb, 0x1d, 0xd1, 0x6d, 0x53, 0x00, 0x08, 0x63, 0x6f, 0x23, 0x23, 0x03, 0xa7, 0xa8, 0x6f, 0x3d, 0xff, 0x96, 0x9f, 0x84, 0x88, 0x15, 0xc0, 0x57, 0x4b, 0x12, 0xc2, 0xd7, 0x87, 0xfe, 0xc9, 0x3f,
0xbb, 0x44, 0xfd, 0x8c, 0xd0, 0x4a, 0xbc, 0x3b, 0x54, 0xe5, 0xcc, 0xea, 0x97, 0xef, 0x81, 0xe7, 0x0f, 0xd3, 0x93, 0x3c, 0x34, 0x28, 0x8d, 0x8b, 0x86, 0xf6, 0xec, 0xb4, 0xf3, 0xed, 0x1f, 0xde,
0xbc, 0x75, 0xf9, 0x10, 0xff, 0x32, 0x0f, 0x5c, 0xb5, 0x99, 0x9e, 0x66, 0xbb, 0xd4, 0x03, 0x4f, 0x4a, 0xe5, 0x37, 0xa4, 0x2f, 0xdf, 0xef, 0x35, 0x16, 0x1c, 0x53, 0x48, 0xe3, 0x66, 0xe2, 0x16,
0xbd, 0x88, 0x23, 0x55, 0xbf, 0x68, 0x13, 0xcf, 0x88, 0xec, 0x0b, 0x83, 0xb6, 0x13, 0x36, 0x91, 0x10, 0x0f, 0x48, 0x03, 0x81, 0xac, 0x06, 0x53, 0x1c, 0x3d, 0x59, 0x09, 0xcf, 0x1f, 0xb6, 0x26,
0xbd, 0xd0, 0x11, 0x26, 0xe9, 0xd8, 0x57, 0x10, 0xd3, 0xfe, 0x75, 0xaf, 0x1c, 0xc1, 0x70, 0x2a, 0x29, 0xf0, 0x81, 0xb4, 0xf6, 0xfd, 0xf6, 0xa2, 0xb2, 0x13, 0x5c, 0x02, 0x97, 0xa9, 0xce, 0xc5,
0xbd, 0xd4, 0x08, 0x6c, 0x01, 0x9f, 0x5d, 0x38, 0x84, 0x53, 0xc6, 0xd9, 0x34, 0x75, 0xd3, 0x9a, 0x57, 0x65, 0x72, 0xba, 0xff, 0x75, 0x61, 0x2c, 0x32, 0x1b, 0x46, 0xa3, 0x5a, 0x53, 0x29, 0xb1,
0xbe, 0x43, 0x5d, 0xf7, 0xcd, 0x28, 0xaa, 0x2a, 0x7c, 0x8d, 0xb4, 0xfc, 0x81, 0x73, 0x47, 0x5b, 0x77, 0xe5, 0xab, 0xf3, 0x92, 0xf7, 0x6b, 0x7c, 0x76, 0xfa, 0x3f, 0x69, 0x8c, 0xb7, 0x1a, 0x9a,
0xbe, 0xf7, 0x66, 0x3b, 0xe5, 0xea, 0x4d, 0xbf, 0xd8, 0x68, 0x6e, 0x24, 0x70, 0x1e, 0x03, 0x6f, 0x4c, 0x03, 0xfb, 0x7f, 0xcd, 0x67, 0xa6, 0xc5, 0x66, 0xed, 0x94, 0xce, 0x09, 0xc4, 0x44, 0x70,
0xbf, 0x55, 0x0c, 0x6f, 0x82, 0x6c, 0x96, 0x46, 0x15, 0x52, 0xe6, 0x65, 0xf5, 0x3a, 0x4f, 0x27, 0x5a, 0x14, 0x83, 0x8f, 0xd6, 0x4c, 0xcf, 0x77, 0x3d, 0x19, 0x4b, 0x78, 0xce, 0x33, 0xe9, 0x07,
0xbf, 0xca, 0xa4, 0x14, 0x45, 0xf2, 0x0b, 0x54, 0xae, 0xa6, 0x50, 0xd0, 0x3d, 0x7c, 0x39, 0xb7, 0x7c, 0xd8, 0x2a, 0x7a, 0x14, 0x82, 0x4d, 0xc5, 0x5a, 0xa5, 0x87, 0xc4, 0xc0, 0xf7, 0x42, 0xa3,
0xc0, 0x53, 0x0b, 0xad, 0xc4, 0xd0, 0x66, 0xd5, 0xc4, 0xb8, 0xb9, 0x55, 0x02, 0x3e, 0x9e, 0xfa, 0x7f, 0xb9, 0x33, 0x7e, 0xcb, 0x7e, 0x12, 0x98, 0xe7, 0xcb, 0xa1, 0x72, 0xd8, 0x68, 0x04, 0x85,
0xc0, 0x5b, 0x92, 0x50, 0xbd, 0xa8, 0xe8, 0x6b, 0x6e, 0x5c, 0x6a, 0x8c, 0x58, 0x4f, 0x0f, 0x61, 0xb4, 0xa3, 0xd2, 0x43, 0x68, 0x99, 0x65, 0xb5, 0xa9, 0x55, 0xa2, 0xcb, 0x19, 0x8d, 0x1e, 0x99,
0xc1, 0x27, 0xf0, 0xee, 0xfc, 0x2e, 0x45, 0x19, 0x89, 0xd8, 0x8e, 0x4d, 0x1d, 0xa8, 0xa3, 0xb0, 0x8c, 0xa9, 0xd5, 0x88, 0x49, 0x87, 0xa6, 0x15, 0x7e, 0x04, 0xe9, 0xa7, 0x1c, 0x01, 0xad, 0xfc,
0xc1, 0x54, 0x7c, 0xf9, 0x02, 0x57, 0x02, 0x07, 0xa9, 0x69, 0x4b, 0x6b, 0x8e, 0x35, 0x3f, 0xe4, 0x14, 0x19, 0xdb, 0x6a, 0x38, 0x02, 0x22, 0x1d, 0xdf, 0x10, 0xfb, 0x8f, 0x86, 0x94, 0x78, 0x04,
0xc2, 0x16, 0x14, 0xe2, 0x07, 0xb1, 0x99, 0x1d, 0x3d, 0x6d, 0xf8, 0x42, 0x00, 0x97, 0x18, 0x65, 0x2d, 0x24, 0x1a, 0x8d, 0x92, 0x6e, 0x22, 0x1b, 0x85, 0xd0, 0x69, 0xf1, 0x61, 0x5e, 0x27, 0xa2,
0xc2, 0x46, 0x97, 0x59, 0xc1, 0x94, 0x7e, 0x14, 0xf4, 0xb6, 0x5f, 0x72, 0xa9, 0xf5, 0xb3, 0xaf, 0x8b, 0x6f, 0x6e, 0x72, 0x7b, 0x68, 0xbb, 0x0d, 0x91, 0x38, 0x5c, 0xbf, 0x42, 0x17, 0x6a, 0x8a,
0xc2, 0xcc, 0x91, 0x55, 0x56, 0x17, 0x17, 0x1a, 0x7d, 0x8a, 0xf5, 0x7d, 0xee, 0x52, 0x9b, 0x44, 0x3a, 0x41, 0xa1, 0xfa, 0xd3, 0xd4, 0x03, 0x2d, 0xbd, 0xb8, 0x14, 0xda, 0xd6, 0xc2, 0x68, 0x8e,
0xc3, 0x29, 0x7e, 0x35, 0xc3, 0xa9, 0xef, 0xc4, 0xc0, 0x51, 0x70, 0x6a, 0xab, 0x77, 0xd2, 0x9a, 0x26, 0xe6, 0x2d, 0x9a, 0x38, 0xde, 0x25, 0x6d, 0xff, 0xeb, 0x77, 0xa0, 0xee, 0xc8, 0x66, 0x6a,
0xc3, 0x2e, 0x05, 0xee, 0xf5, 0x4d, 0x7e, 0xaa, 0x0d, 0xd8, 0x9f, 0xe0, 0xf4, 0xd1, 0xa8, 0xd9, 0x76, 0x71, 0xfb, 0x45, 0x6f, 0x62, 0x99, 0x04, 0x7c, 0x31, 0x92, 0xc3, 0xe3, 0x72, 0x4b, 0xca,
0xc3, 0x50, 0x5b, 0xf3, 0xec, 0x10, 0xa5, 0x1d, 0xac, 0xe4, 0x17, 0xc7, 0x6b, 0x8b, 0xd1, 0x09, 0x39, 0xa0, 0x65, 0xd1, 0xf3, 0x4e, 0x75, 0xb8, 0xa3, 0x06, 0x5e, 0xe3, 0x1c, 0xc6, 0x9b, 0x96,
0xc4, 0x2d, 0x11, 0xc7, 0x0c, 0xcf, 0x5e, 0x8c, 0xf3, 0xfb, 0x91, 0xfd, 0xf2, 0x1d, 0x88, 0x40, 0x21, 0xad, 0x83, 0x6c, 0xa6, 0x8a, 0xdf, 0x2c, 0xbb, 0x79, 0x95, 0xc1, 0x0b, 0xf5, 0x88, 0xd4,
0xc4, 0x52, 0xab, 0x84, 0x60, 0x73, 0xdf, 0x5a, 0xce, 0x25, 0xcc, 0xa6, 0x4d, 0x6b, 0x7a, 0x09, 0xd9, 0x06, 0x30, 0x8a, 0x1a, 0x65, 0xeb, 0x52, 0x40, 0xe3, 0xc4, 0xeb, 0xca, 0xa9, 0xcc, 0x0c,
0xc4, 0x70, 0x16, 0x1a, 0x06, 0xe6, 0xb4, 0x52, 0x25, 0x3a, 0x62, 0x35, 0x36, 0x92, 0x49, 0x79, 0xcd, 0xd1, 0x18, 0x38, 0xe0, 0x8d, 0x8e, 0x4d, 0xc8, 0x6f, 0x76, 0x37, 0x32, 0xe6, 0x4b, 0x0b,
0xc4, 0xeb, 0xdc, 0x43, 0x04, 0x8c, 0x43, 0xf5, 0xf1, 0x1c, 0x59, 0xea, 0xd0, 0x51, 0xa3, 0x58, 0x5a, 0x07, 0xfa, 0xfc, 0xe9, 0x85, 0xcf, 0xed, 0x8b, 0x27, 0xb7, 0x3a, 0x54, 0x92, 0xf9, 0xb2,
0xc5, 0x5b, 0xe4, 0xa2, 0xa6, 0xac, 0x57, 0x4a, 0x9d, 0x46, 0xf1, 0xe1, 0xc5, 0x4c, 0xac, 0x29, 0xd2, 0x9d, 0xcd, 0x7b, 0x90, 0x40, 0x38, 0x9e, 0x71, 0x57, 0xbb, 0x32, 0xc4, 0x59, 0x1c, 0x4c,
0xc6, 0x9d, 0x64, 0xa5, 0xb8, 0x39, 0xe4, 0x1b, 0xa1, 0x67, 0x42, 0x52, 0x7e, 0x17, 0x05, 0x6a, 0x18, 0xce, 0x3c, 0x27, 0x6f, 0xd2, 0x6e, 0x34, 0x90, 0x1a, 0x1b, 0xc7, 0xd0, 0xe3, 0x22, 0x19,
0xc8, 0x05, 0x60, 0x3c, 0x4f, 0xa0, 0x38, 0x77, 0x6e, 0x42, 0xf2, 0x63, 0xc6, 0x04, 0xb4, 0x9d, 0x96, 0x84, 0x03, 0x22, 0xe1, 0x92, 0x2d, 0x56, 0x06, 0xa9, 0xb0, 0xbb, 0xb5, 0xbf, 0xfe, 0x6f,
0xc8, 0x75, 0xae, 0x8a, 0x8d, 0xb5, 0x44, 0x1a, 0x57, 0x71, 0x72, 0x86, 0x9a, 0x4e, 0xc6, 0xe7, 0x1d, 0xac, 0xe7, 0xa8, 0x75, 0xf4, 0x2a, 0x2f, 0xbb, 0xa4, 0xb5, 0x2f, 0x29, 0x34, 0x99, 0xde,
0xc9, 0x99, 0xeb, 0x66, 0x39, 0x35, 0x06, 0xc8, 0x14, 0x9c, 0x35, 0xc8, 0xa8, 0xce, 0x87, 0x67, 0x18, 0x95, 0xd6, 0x51, 0x67, 0xe4, 0xb0, 0x14, 0x0b, 0x54, 0xda, 0x72, 0xa9, 0x2d, 0x7c, 0x88,
0xc9, 0xec, 0x35, 0x04, 0x06, 0xf2, 0x6e, 0x55, 0x9a, 0xff, 0xb4, 0x03, 0x0d, 0xe2, 0xeb, 0xde, 0x54, 0x35, 0x05, 0x4c, 0x35, 0xa9, 0x98, 0x60, 0x5b, 0x8f, 0xcf, 0x04, 0x97, 0x2d, 0x8d, 0x55,
0xc9, 0xf9, 0xc0, 0x34, 0x34, 0x99, 0x7f, 0xbd, 0x0f, 0xbb, 0x69, 0x8d, 0xac, 0x55, 0x62, 0x64, 0xeb, 0xe9, 0x67, 0xf9, 0x48, 0xa9, 0x79, 0x78, 0xa0, 0xc3, 0x2e, 0xf8, 0x5f, 0x94, 0xb1, 0x88,
0xca, 0x65, 0xa9, 0xb2, 0x91, 0x5d, 0x9a, 0x05, 0x5a, 0x40, 0x7b, 0xc0, 0x69, 0x89, 0x36, 0x34, 0x9a, 0x04, 0xe3, 0xdb, 0x69, 0x1e, 0x17, 0x84, 0x19, 0xfb, 0xa7, 0x01, 0xaa, 0xd8, 0xde, 0x55,
0xcb, 0x34, 0x00, 0x11, 0xaf, 0xeb, 0x0d, 0x74, 0xc4, 0xa5, 0x88, 0xb3, 0x6e, 0xba, 0xa4, 0x41, 0x96, 0x16, 0x08, 0xe8, 0xd2, 0xfa, 0x80, 0xdc, 0xa8, 0xc1, 0x38, 0x72, 0xc8, 0x50, 0x79, 0x6b,
0xcb, 0x67, 0x22, 0x99, 0x5d, 0x48, 0x21, 0xae, 0xaa, 0x98, 0x71, 0xc1, 0xb9, 0x78, 0x2a, 0x02, 0xed, 0x2f, 0x3d, 0x2b, 0xc6, 0xc1, 0xaa, 0xfd, 0x3e, 0x6b, 0x76, 0x73, 0xa2, 0x10, 0xa8, 0xfb,
0xcb, 0x7b, 0xba, 0xbe, 0x6e, 0x9a, 0x11, 0x8c, 0x42, 0x0b, 0xe4, 0x29, 0x41, 0x32, 0xa8, 0x8b, 0xc4, 0x94, 0x96, 0x9d, 0x95, 0xb9, 0x88, 0x44, 0x80, 0xbd, 0x4f, 0x68, 0xab, 0x94, 0xfb, 0x2c,
0xcb, 0x95, 0xa4, 0xd2, 0xe0, 0xe0, 0x2a, 0x5b, 0x56, 0xd0, 0x59, 0xc9, 0xf2, 0x23, 0xc2, 0x32, 0x67, 0x53, 0xea, 0x8c, 0x44, 0xd2, 0xe3, 0xfa, 0x6c, 0x44, 0x86, 0x62, 0x9b, 0xe3, 0x87, 0xa9,
0xcb, 0x99, 0x4b, 0x40, 0x05, 0x90, 0xb6, 0x6c, 0xbf, 0x55, 0xfc, 0x66, 0x35, 0x55, 0xca, 0xf0, 0xd4, 0xf1, 0xce, 0x26, 0x74, 0x64, 0xd0, 0x45, 0x2c, 0x23, 0x61, 0xe0, 0x5e, 0xe1, 0xcd, 0x50,
0xcb, 0xcb, 0xb8, 0xe8, 0x1f, 0x1c, 0xfe, 0xe4, 0xd0, 0x2d, 0x65, 0x48, 0x10, 0x80, 0xec, 0xde, 0x62, 0x52, 0x83, 0x44, 0xc5, 0x37, 0x2b, 0x09, 0xfe, 0xd4, 0xee, 0x3c, 0xa1, 0xe1, 0x43, 0x30,
0xcc, 0x20, 0x2e, 0x8f, 0x27, 0x53, 0xec, 0x75, 0xc9, 0xee, 0xaa, 0xc6, 0x5c, 0x9d, 0x39, 0xee, 0xa6, 0xfa, 0xed, 0x57, 0x06, 0x64, 0xe9, 0x30, 0xe3, 0x81, 0x59, 0x76, 0xcd, 0x33, 0x2d, 0x91,
0xcc, 0x73, 0x96, 0xd1, 0xc3, 0x06, 0xad, 0xfc, 0xe4, 0x9e, 0x70, 0xd7, 0xda, 0xf3, 0x2d, 0x09, 0x3a, 0x8f, 0x2f, 0xeb, 0xe2, 0xac, 0x05, 0x76, 0xba, 0x85, 0x37, 0x70, 0xe1, 0x1b, 0x3e, 0xf2,
0xcc, 0x8e, 0xec, 0x6e, 0xb9, 0x21, 0x2c, 0xbf, 0x89, 0x7a, 0x5a, 0xce, 0x7e, 0x8a, 0xbe, 0xec, 0xe1, 0x07, 0x9f, 0x1a, 0x6d, 0xef, 0x0a, 0x78, 0x95, 0x91, 0xcb, 0x15, 0x47, 0xf1, 0xf0, 0x84,
0xce, 0x1a, 0xf9, 0xfc, 0xce, 0x6a, 0xd1, 0x9c, 0x00, 0xd8, 0x23, 0x6b, 0x23, 0xb0, 0x3c, 0xf8, 0x3c, 0x59, 0x3c, 0x61, 0x84, 0xa0, 0x82, 0x66, 0xe5, 0x8f, 0xe9, 0x5c, 0x6c, 0xaa, 0x4d, 0x13,
0xce, 0x65, 0xc2, 0x95, 0x21, 0xcd, 0x84, 0x98, 0xfa, 0xd9, 0x62, 0xe5, 0xf7, 0x0d, 0x55, 0xc5, 0x04, 0x43, 0x66, 0xec, 0x09, 0xc7, 0x61, 0xa6, 0x0c, 0xc7, 0xc4, 0xa2, 0x00, 0x17, 0x76, 0xa4,
0xce, 0x8c, 0x44, 0xe1, 0x85, 0xfa, 0xaa, 0x03, 0x95, 0x9c, 0xf2, 0x32, 0x29, 0x60, 0x78, 0x54, 0xef, 0x7e, 0x31, 0x6e, 0xd0, 0x77, 0x3d, 0x66, 0xd7, 0xbe, 0x5e, 0x0a, 0x48, 0x06, 0x1d, 0xe5,
0xce, 0xf7, 0x5d, 0x1d, 0xa8, 0xe9, 0x91, 0xac, 0x96, 0xd3, 0x6f, 0x8a, 0x14, 0x56, 0x28, 0x49, 0x20, 0x7f, 0x9d, 0xd5, 0x0f, 0xc6, 0x30, 0x28, 0xba, 0x83, 0x27, 0x7d, 0x5c, 0x27, 0xd0, 0x0b,
0xcf, 0x13, 0xa2, 0x43, 0xc1, 0xcd, 0x2e, 0x3c, 0x8c, 0xeb, 0x7e, 0x70, 0x10, 0x03, 0x87, 0xce, 0xcb, 0xfb, 0x83, 0x05, 0x25, 0xbb, 0xf9, 0xd0, 0xb7, 0x0c, 0x79, 0xad, 0xf3, 0xe8, 0x41, 0x28,
0xcf, 0x3f, 0x7c, 0x24, 0xaf, 0x6d, 0x46, 0xe1, 0x33, 0xbb, 0x6a, 0x93, 0x69, 0x02, 0xa4, 0x74, 0x13, 0x39, 0x4b, 0x2a, 0x8a, 0xdd, 0xc6, 0x3a, 0x88, 0x90, 0xc7, 0x5e, 0xb7, 0xc3, 0xa6, 0xc7,
0xcf, 0x7f, 0x9e, 0x7d, 0x09, 0x10, 0x23, 0xa1, 0xa1, 0xc3, 0xf5, 0xcb, 0xf7, 0xdd, 0xac, 0xf7, 0xb1, 0x8f, 0x03, 0xa4, 0xd0, 0x79, 0x61, 0xf7, 0x15, 0x06, 0xfe, 0x9d, 0xf4, 0x38, 0x8e, 0xee,
0xcf, 0xd2, 0xa8, 0xf2, 0x3b, 0xbc, 0xe7, 0x42, 0x4f, 0x4a, 0x6e, 0x27, 0xde, 0xf3, 0x68, 0xf1, 0x7b, 0x08, 0x6f, 0xfa, 0x22, 0x65, 0x28, 0x90, 0x0f, 0xa0, 0x92, 0x73, 0x6e, 0x70, 0x5e, 0xf9,
0xd0, 0x69, 0xa0, 0x7b, 0x5a, 0xcd, 0xe0, 0x04, 0xfe, 0x72, 0x86, 0x55, 0x80, 0x41, 0xf1, 0xf1, 0x23, 0xdd, 0x88, 0xbb, 0x13, 0x95, 0xe5, 0xe4, 0x53, 0xf6, 0x2f, 0x48, 0xef, 0x37, 0xd1, 0x99,
0xd0, 0x84, 0xac, 0x3f, 0xcd, 0x80, 0x89, 0x3b, 0x18, 0x78, 0x65, 0x3c, 0x8b, 0xa9, 0xb7, 0x1f, 0xb9, 0xc5, 0x3e, 0x25, 0x84, 0x3a, 0x98, 0x9e, 0xf5, 0x1a, 0x9b, 0x44, 0xc7, 0xea, 0xfc, 0xbc,
0xd1, 0x4e, 0xe5, 0x61, 0x6d, 0xc8, 0xec, 0x74, 0xd6, 0x95, 0xaf, 0x08, 0xda, 0xcc, 0x78, 0xbb, 0xef, 0xaf, 0xa7, 0xa9, 0x7a, 0x5c, 0xfe, 0xab, 0x9b, 0x96, 0x1e, 0x86, 0xce, 0x9e, 0xdd, 0x37,
0xd2, 0x8a, 0xec, 0x97, 0xe2, 0x8a, 0x38, 0xd9, 0x4b, 0xe6, 0x53, 0x69, 0xe4, 0x3d, 0x01, 0xf6, 0x26, 0x61, 0x95, 0xd6, 0x11, 0x3e, 0x7e, 0xd1, 0x7a, 0x69, 0x30, 0xa3, 0x09, 0x28, 0x88, 0x00,
0xd3, 0x72, 0xc0, 0xd0, 0xf4, 0xfd, 0xc9, 0xf5, 0x2e, 0x9e, 0x1f, 0x23, 0xfc, 0x56, 0xee, 0x72, 0x41, 0x4a, 0x17, 0xf3, 0x50, 0xd0, 0xce, 0xa6, 0xc2, 0x6a, 0x35, 0xa6, 0xc3, 0x21, 0x7a, 0x13,
0xd4, 0x17, 0xc0, 0x04, 0x52, 0x5c, 0x7b, 0xb5, 0x75, 0x23, 0x83, 0x62, 0x78, 0xce, 0xe1, 0x20, 0xfd, 0x66, 0x14, 0x79, 0x83, 0xba, 0x73, 0x8a, 0xac, 0x01, 0x1e, 0x24, 0xbe, 0x75, 0xe6, 0xe2,
0xd4, 0x24, 0x11, 0x90, 0xcd, 0x5a, 0x36, 0x9d, 0x8c, 0x34, 0x4c, 0x66, 0x0e, 0x24, 0xf3, 0x02, 0x7f, 0xb8, 0xe7, 0x06, 0x4f, 0xab, 0x33, 0x77, 0x0e, 0x93, 0xfa, 0x76, 0x5f, 0xfb, 0x15, 0x2e,
0xd4, 0x55, 0xa3, 0xc0, 0x84, 0xdf, 0x64, 0xcf, 0x66, 0xdc, 0x1d, 0x2b, 0xab, 0x35, 0x2c, 0x74, 0xaa, 0xf6, 0x60, 0x35, 0x05, 0x8d, 0xf1, 0x14, 0x3e, 0xfb, 0xdd, 0x42, 0x98, 0xaa, 0x45, 0x27,
0xd4, 0x65, 0xd6, 0x3b, 0x03, 0x84, 0xf1, 0x6a, 0x16, 0x10, 0xb0, 0xa8, 0x6c, 0x5d, 0x73, 0xb3, 0x6a, 0x33, 0x70, 0x98, 0x28, 0xde, 0x8f, 0xe2, 0x6d, 0xba, 0xc6, 0xdc, 0x6e, 0xfa, 0x00, 0x7d,
0xd4, 0x72, 0xd0, 0xdc, 0xba, 0x3f, 0x5d, 0xd6, 0x1b, 0xe3, 0x93, 0x12, 0x44, 0x71, 0x7b, 0xf2, 0x23, 0x0b, 0xab, 0xd3, 0x0e, 0x9e, 0x2f, 0x6b, 0x28, 0x80, 0xbf, 0xcd, 0xc8, 0xfd, 0x66, 0x65,
0xd5, 0xbc, 0x11, 0xfb, 0x61, 0x9b, 0xfc, 0xed, 0x64, 0x24, 0x9b, 0x93, 0x0c, 0x78, 0x5e, 0xad, 0x5f, 0xca, 0x39, 0x27, 0xf0, 0xce, 0x3c, 0x5e, 0xfd, 0x3f, 0x1d, 0x9a, 0xf0, 0x4b, 0x37, 0xbf,
0xd6, 0xee, 0x8d, 0xb7, 0x82, 0xe3, 0x6c, 0xaf, 0xfb, 0x4d, 0x9f, 0x82, 0x07, 0x90, 0x04, 0x87, 0xde, 0x93, 0x0a, 0xab, 0xcc, 0x1d, 0x19, 0x6f, 0xa4, 0x55, 0xfb, 0xfd, 0x6f, 0x37, 0x27, 0x3d,
0xd7, 0x59, 0x30, 0x8d, 0x04, 0x7e, 0x92, 0x06, 0x00, 0x6b, 0x51, 0xb5, 0x77, 0x0f, 0xa2, 0x5e, 0xf5, 0xc1, 0x24, 0xb8, 0xac, 0xc6, 0xb0, 0x13, 0x9f, 0x58, 0x83, 0x76, 0x5f, 0xe3, 0x0d, 0xea,
0xd7, 0x96, 0x51, 0xaa, 0x3a, 0x04, 0x91, 0xd3, 0x3b, 0x79, 0x79, 0xf5, 0xb4, 0x19, 0x36, 0xf8, 0xac, 0xef, 0xba, 0x99, 0xbb, 0xa1, 0x0e, 0x05, 0xfd, 0x6f, 0x54, 0xe2, 0x85, 0x9c, 0xc5, 0x89,
0xd8, 0x60, 0xd3, 0xdc, 0x4d, 0x9a, 0x41, 0x2e, 0x8f, 0xe8, 0x03, 0x61, 0x00, 0xbd, 0xa7, 0x63, 0x7b, 0x57, 0xa0, 0x16, 0x8c, 0xa8, 0x11, 0x78, 0x1e, 0xd4, 0xa0, 0x08, 0x15, 0xa9, 0x7e, 0x0c,
0xd8, 0x78, 0x17, 0xf7, 0x63, 0x09, 0xb1, 0xe4, 0x20, 0x54, 0x78, 0x08, 0xcb, 0x57, 0x3a, 0xea, 0x0c, 0x8e, 0x7d, 0xe1, 0x41, 0x23, 0x79, 0x3a, 0x42, 0x38, 0x85, 0x82, 0x18, 0x42, 0x86, 0xb7,
0xd8, 0x9a, 0x11, 0xd1, 0x6c, 0x48, 0x8d, 0xd4, 0xfb, 0xbc, 0x54, 0x1d, 0x4b, 0x07, 0xfa, 0xf8, 0x67, 0x0d, 0x66, 0x09, 0x94, 0x48, 0x8f, 0xe5, 0x4b, 0x1f, 0xbf, 0xf2, 0x70, 0x4e, 0x42, 0x88,
0xd8, 0xd4, 0xe6, 0xdd, 0xf6, 0xe4, 0x2d, 0x74, 0xa6, 0xa5, 0x36, 0xea, 0x62, 0xfd, 0x12, 0x17, 0xe4, 0x29, 0x0b, 0x14, 0x5c, 0x9e, 0x5c, 0x36, 0x95, 0xa3, 0x1b, 0x42, 0xef, 0xb5, 0xf5, 0xa4,
0xd9, 0x66, 0x8a, 0xb5, 0x27, 0x85, 0x08, 0x67, 0x86, 0xc1, 0x34, 0xb5, 0xe4, 0xbd, 0xdb, 0xf7, 0x24, 0x52, 0x81, 0x3b, 0x69, 0x73, 0x22, 0x9a, 0xb9, 0x2a, 0xa1, 0xa5, 0x4d, 0x20, 0x1b, 0xf5,
0xda, 0x35, 0x60, 0xfd, 0x0c, 0x32, 0xb5, 0x4c, 0x83, 0xd4, 0xf2, 0xff, 0x86, 0x90, 0x03, 0xd2, 0x08, 0x93, 0x69, 0xac, 0xf2, 0xc8, 0x96, 0x08, 0xf8, 0xaf, 0xa7, 0x43, 0x6b, 0xfa, 0x46, 0x55,
0xda, 0x99, 0x43, 0x27, 0x71, 0x74, 0x96, 0x0b, 0x0d, 0x7d, 0x3f, 0x0d, 0x65, 0x61, 0x76, 0xf3, 0x72, 0x3e, 0xd2, 0xf0, 0x3a, 0x90, 0x51, 0x8b, 0xeb, 0x3c, 0x6c, 0x20, 0x2b, 0x88, 0xcc, 0x14,
0xda, 0xf8, 0x70, 0x06, 0xf2, 0x65, 0x39, 0x09, 0xe3, 0x9a, 0x52, 0xb7, 0xec, 0xb2, 0x34, 0x48, 0x4e, 0x7a, 0xc8, 0x4a, 0xc2, 0x1e, 0xb5, 0x93, 0x54, 0xc1, 0xba, 0xfc, 0xdd, 0xf0, 0x8d, 0x9c,
0xdb, 0x1e, 0x5c, 0x61, 0x52, 0xa2, 0x8d, 0x3e, 0xb6, 0xb1, 0xaf, 0xea, 0xad, 0x49, 0x74, 0xf3, 0x65, 0x4a, 0xc6, 0xfb, 0xbe, 0x76, 0x9d, 0x87, 0x0a, 0xbb, 0x74, 0xed, 0xe6, 0x32, 0xb9, 0xe5,
0xdb, 0xaf, 0x9e, 0x05, 0x6d, 0x3d, 0x5b, 0x38, 0xb6, 0x85, 0x53, 0x30, 0x4a, 0xbc, 0x88, 0x82, 0x7e, 0xbc, 0x00, 0xf8, 0x0c, 0xb9, 0xc7, 0xe1, 0x97, 0xcd, 0xbc, 0x58, 0x22, 0xcd, 0x31, 0x6c,
0xdb, 0xb4, 0x24, 0xcb, 0x8a, 0xd3, 0x5e, 0xe6, 0x85, 0x46, 0x09, 0x26, 0x45, 0xc4, 0x68, 0x9d, 0x60, 0x27, 0xa9, 0x7f, 0xed, 0xf3, 0xc5, 0xaf, 0x84, 0x2b, 0x95, 0x72, 0xf1, 0x27, 0x69, 0x97,
0xdc, 0x7c, 0xc8, 0xd1, 0xdc, 0x11, 0xe3, 0x04, 0xab, 0xdf, 0x6e, 0x62, 0x27, 0x83, 0x8f, 0x35, 0xb2, 0x23, 0xb7, 0x80, 0xf0, 0x30, 0xde, 0x7b, 0x34, 0x1e, 0x88, 0xa3, 0xf6, 0xa3, 0x61, 0xb4,
0xdc, 0x8a, 0xff, 0x7f, 0xaa, 0x9d, 0x1a, 0x00, 0xa3, 0xe3, 0x2e, 0xef, 0xbf, 0x89, 0x9b, 0x30, 0x59, 0xcb, 0xb3, 0x13, 0xa4, 0x8b, 0x82, 0xfa, 0x9c, 0x8d, 0x93, 0x1f, 0xd5, 0x8f, 0xb6, 0x9d,
0xdc, 0xcc, 0x3c, 0xe1, 0xc0, 0x0e, 0xe4, 0xb0, 0xb1, 0x04, 0x87, 0xd3, 0x72, 0xa0, 0xfa, 0x47, 0xf5, 0xc2, 0x6f, 0x57, 0xa3, 0x59, 0xbe, 0x7b, 0x27, 0x80, 0x1e, 0x14, 0x4e, 0xac, 0xba, 0xc4,
0xdd, 0x59, 0xaf, 0x56, 0x08, 0x44, 0x06, 0xe3, 0x8c, 0x63, 0xfb, 0xe0, 0x85, 0x0f, 0x30, 0xa0, 0xcd, 0x12, 0x77, 0x46, 0x2a, 0x21, 0x92, 0x59, 0x0f, 0xb0, 0x5b, 0xc2, 0x59, 0xe6, 0x12, 0x73,
0xdd, 0x5e, 0x4e, 0x9f, 0x20, 0xce, 0x8b, 0xf8, 0xf3, 0x51, 0x22, 0x61, 0xf1, 0x76, 0xec, 0xdd, 0x04, 0x6c, 0x07, 0x9d, 0x32, 0x58, 0x5d, 0x9b, 0x25, 0x9a, 0xfe, 0x0a, 0x28, 0xc9, 0x73, 0xdf,
0xdd, 0xa0, 0x12, 0x1d, 0xcf, 0x16, 0x7d, 0xb1, 0xe2, 0x62, 0x2d, 0x10, 0xf4, 0x54, 0x70, 0x18, 0x37, 0xac, 0x6a, 0xf3, 0x04, 0xa0, 0x3e, 0xc0, 0x6b, 0x30, 0x27, 0x90, 0x49, 0x88, 0xc5, 0x6b,
0xdd, 0xf3, 0xe4, 0x26, 0x14, 0x19, 0x94, 0x4f, 0x7c, 0x2f, 0x8b, 0x92, 0xf6, 0xd1, 0x4c, 0x35, 0x06, 0x0b, 0x4f, 0x94, 0x81, 0x8c, 0xc4, 0x18, 0x3f, 0x0c, 0x07, 0x27, 0x06, 0xde, 0xf7, 0x26,
0xde, 0x7f, 0x76, 0x6e, 0x44, 0x54, 0xda, 0x11, 0x8a, 0x6c, 0x42, 0xbe, 0xe4, 0x76, 0xc4, 0xbb, 0x66, 0xf6, 0x60, 0xbf, 0xdb, 0x88, 0xdb, 0x57, 0x2c, 0x46, 0x21, 0xc4, 0x3e, 0xc1, 0x83, 0x6e,
0xdf, 0x02, 0xaa, 0xb4, 0x83, 0x87, 0xa9, 0xe1, 0xd4, 0xc6, 0x52, 0x28, 0x08, 0x9c, 0xb6, 0xab, 0xe1, 0x96, 0xc8, 0xf4, 0xb3, 0x96, 0xc7, 0xe4, 0xbb, 0xc3, 0x95, 0xde, 0x13, 0x69, 0x77, 0xf6,
0xdf, 0x6e, 0xc4, 0xf5, 0x0b, 0xe2, 0xa4, 0xb7, 0x65, 0x7f, 0x03, 0x97, 0xbe, 0xd4, 0x83, 0xbe, 0x14, 0x3a, 0x18, 0x88, 0x36, 0x15, 0x80, 0x0a, 0x65, 0xa6, 0x4b, 0x7e, 0x84, 0xd9, 0xb8, 0x58,
0xdf, 0x91, 0xac, 0x85, 0xa9, 0x4f, 0xcd, 0x0c, 0xfb, 0x81, 0x55, 0xbd, 0x7c, 0xbe, 0xfa, 0xac, 0x14, 0xb8, 0xc5, 0xee, 0x73, 0x97, 0xfe, 0x2c, 0xc8, 0x59, 0x84, 0x45, 0x9e, 0x2e, 0xa1, 0x4e,
0xe0, 0x51, 0xb7, 0x88, 0xec, 0xba, 0xed, 0xa5, 0x30, 0x46, 0xc7, 0x0e, 0x6a, 0xf6, 0x05, 0x8f, 0x95, 0x22, 0x2c, 0x04, 0x61, 0x57, 0xb8, 0xc4, 0xc1, 0xb9, 0xc2, 0xcf, 0xc6, 0x5f, 0x46, 0xe5,
0xe0, 0x60, 0xda, 0x09, 0x56, 0x1a, 0xe0, 0x0d, 0xcf, 0xb1, 0x76, 0x9d, 0x6e, 0x8e, 0x84, 0x68, 0x68, 0xa1, 0xe9, 0x9a, 0x54, 0xb1, 0x4a, 0xa5, 0xd0, 0x68, 0x9f, 0x28, 0x40, 0xce, 0xc6, 0xdf,
0xe1, 0x1b, 0xdb, 0xfb, 0xac, 0x47, 0x36, 0x91, 0x8c, 0x49, 0x77, 0x98, 0xd6, 0xed, 0x01, 0x8f, 0x52, 0x97, 0x26, 0xa6, 0xb1, 0x89, 0x4b, 0xe0, 0x65, 0x8d, 0x1b, 0x95, 0x19, 0x53, 0x8b, 0x22,
0xe2, 0x26, 0xd6, 0xf3, 0xa3, 0x32, 0x23, 0x8f, 0xee, 0x8a, 0x42, 0xa8, 0xfd, 0x57, 0xe8, 0xb0, 0x09, 0x72, 0x5d, 0xb5, 0xf8, 0xdf, 0x4d, 0xc1, 0xcb, 0x54, 0xf1, 0x7c, 0x6f, 0x47, 0xa9, 0xc7,
0xe2, 0x4b, 0x31, 0x5a, 0x55, 0x16, 0x71, 0x48, 0x3d, 0x8b, 0x90, 0x73, 0xb3, 0x2d, 0xe1, 0x1b, 0x4d, 0xe1, 0xeb, 0x2e, 0xab, 0x21, 0x1a, 0xfd, 0x2d, 0x9c, 0x31, 0x9f, 0xf5, 0x5e, 0x08, 0xd0,
0xe2, 0xcf, 0x88, 0x1c, 0xf0, 0x71, 0x95, 0x45, 0x45, 0x05, 0x04, 0x7d, 0x74, 0x81, 0x0e, 0xd7, 0x9a, 0xe2, 0x0d, 0xfd, 0x0f, 0x15, 0x93, 0xaf, 0xbb, 0xf0, 0x82, 0x70, 0xa4, 0x86, 0xc0, 0x38,
0xe3, 0x6d, 0xfc, 0x71, 0x9d, 0x21, 0x14, 0xc2, 0xe3, 0x9a, 0xea, 0x88, 0x84, 0x9e, 0x28, 0x45, 0xab, 0x32, 0x6f, 0x6f, 0x7f, 0xe7, 0x4e, 0x0e, 0x53, 0x9b, 0x7e, 0x54, 0xd8, 0x1f, 0x36, 0x31,
0xe3, 0x7f, 0xf3, 0xfc, 0x0e, 0xff, 0x20, 0xbf, 0xc1, 0xc0, 0x60, 0xa4, 0xbf, 0x56, 0x88, 0x5e, 0x1e, 0xfd, 0x55, 0xa8, 0xe9, 0xce, 0x3c, 0x5f, 0x48, 0x69, 0x44, 0x4c, 0xac, 0xff, 0xad, 0x0b,
0xe3, 0x98, 0x91, 0xf4, 0x8b, 0xbc, 0xc5, 0x93, 0xb8, 0xed, 0x86, 0xce, 0x82, 0xce, 0x66, 0x6f, 0xc1, 0x14, 0x5b, 0x9f, 0xcb, 0xfd, 0x2b, 0x07, 0xba, 0xd0, 0xa8, 0x9b, 0xf4, 0xc7, 0xbf, 0xbf,
0xe4, 0x25, 0x72, 0xaf, 0xac, 0x72, 0x0f, 0x5d, 0x4a, 0x1c, 0x7a, 0xaa, 0xf8, 0x02, 0xf0, 0x94, 0xda, 0xce, 0xb6, 0x82, 0xf4, 0xe9, 0x27, 0x83, 0xb2, 0xbb, 0x3f, 0xa0, 0x08, 0x62, 0xaf, 0x7f,
0xe6, 0x23, 0x6d, 0xc1, 0xee, 0x07, 0x4c, 0x07, 0x7c, 0x7a, 0x1c, 0x9b, 0x39, 0x65, 0x94, 0x74, 0x30, 0x84, 0x7b, 0xe1, 0x25, 0xf7, 0xae, 0xb7, 0x1d, 0x91, 0xa1, 0x28, 0x13, 0x3a, 0xea, 0x7f,
0xe6, 0x37, 0x00, 0x25, 0x26, 0x22, 0x1b, 0xc3, 0x2e, 0x47, 0x74, 0x55, 0xb1, 0x2f, 0x86, 0x4f, 0x20, 0xb2, 0x7c, 0x44, 0x67, 0x9a, 0x2e, 0x78, 0xe5, 0xc5, 0x6d, 0xa1, 0xff, 0xce, 0x8b, 0x41,
0xe6, 0x85, 0x6f, 0x13, 0x7f, 0x79, 0x99, 0x2d, 0xc9, 0x4f, 0xa2, 0xf4, 0x32, 0x97, 0xec, 0x32, 0xd2, 0xd9, 0xa7, 0x6f, 0x7b, 0xe6, 0x61, 0x14, 0xc6, 0xa1, 0x3e, 0xfc, 0x3b, 0xcd, 0xf5, 0xc8,
0xe6, 0xc6, 0x3c, 0x98, 0x4b, 0xc7, 0x54, 0x73, 0x63, 0x76, 0x56, 0x4a, 0x8f, 0x9a, 0xb1, 0xb7, 0x88, 0x5b, 0x9a, 0xc2, 0xf4, 0x9f, 0x1e, 0xc6, 0xe4, 0x05, 0x30, 0x49, 0xd2, 0x6f, 0x78, 0xf9,
0xe7, 0x68, 0x1f, 0x15, 0x31, 0x21, 0xea, 0x1e, 0x67, 0xf7, 0x4b, 0xbc, 0xb0, 0xcd, 0xc5, 0xe5, 0x02, 0x70, 0x2c, 0x1b, 0x8c, 0xc5, 0x5f, 0xb6, 0x5d, 0x70, 0x2d, 0xfb, 0xa9, 0x48, 0xb5, 0xf4,
0xe7, 0xc2, 0x0b, 0x3a, 0xb4, 0x81, 0xec, 0x88, 0x55, 0x01, 0xec, 0xa5, 0x29, 0x37, 0x81, 0xd8, 0x4b, 0x5a, 0x1a, 0xc2, 0x4f, 0x88, 0x26, 0x6b, 0x52, 0x70, 0xe7, 0xec, 0xb4, 0xaa, 0x25, 0x38,
0xe7, 0xd9, 0xbd, 0xbc, 0xc6, 0x8b, 0x5b, 0xed, 0x59, 0x0c, 0x29, 0xb7, 0x2d, 0xca, 0x2b, 0x96, 0x77, 0x9b, 0x8b, 0x68, 0xb1, 0x2a, 0x47, 0xde, 0xd0, 0x74, 0xb8, 0xf1, 0xb3, 0x2f, 0x8f, 0xbe,
0xe8, 0x00, 0x39, 0x5d, 0xbe, 0x0e, 0x04, 0x57, 0x81, 0xe8, 0x00, 0x51, 0x78, 0xb4, 0xba, 0xf5, 0xa2, 0x57, 0xf0, 0x6e, 0x15, 0x91, 0x21, 0xa6, 0x7c, 0x59, 0x5f, 0x6a, 0xe2, 0x25, 0x06, 0xfd,
0xe8, 0x08, 0xa3, 0x37, 0xed, 0x69, 0x11, 0xef, 0x56, 0x1c, 0x27, 0xca, 0xba, 0xca, 0xbf, 0x4e, 0xa6, 0xd6, 0xe2, 0x0f, 0xb7, 0x0f, 0x54, 0x13, 0xb1, 0x21, 0xac, 0x25, 0x1a, 0xbc, 0xc1, 0x0c,
0xe8, 0x81, 0x86, 0x66, 0xb7, 0xe0, 0x14, 0xb6, 0xe4, 0x82, 0x0a, 0xfa, 0xa8, 0x4d, 0x5a, 0x84, 0xfa, 0x42, 0xcb, 0x5d, 0x26, 0x63, 0xc8, 0x48, 0xd3, 0x58, 0xb2, 0x91, 0x32, 0x74, 0xba, 0x21,
0xe9, 0xc7, 0x1b, 0x7c, 0xd5, 0xa4, 0xdf, 0x0b, 0xa4, 0x8d, 0x2c, 0xa4, 0x8e, 0x6c, 0x46, 0x8e, 0x65, 0x72, 0x57, 0xf7, 0x3f, 0x66, 0x01, 0x7d, 0xe4, 0x5e, 0x18, 0xee, 0x74, 0x6e, 0xd7, 0xd5,
0xe9, 0xd8, 0x73, 0xcb, 0xce, 0xde, 0x36, 0x34, 0xe0, 0xa4, 0xb3, 0x64, 0x4b, 0x51, 0xe1, 0xc8, 0xa0, 0xa0, 0x48, 0x27, 0x29, 0x92, 0xc7, 0x38, 0x51, 0x3e, 0xbc, 0x96, 0xcd, 0x3e, 0x33, 0x60,
0xea, 0x9c, 0x72, 0xc1, 0xce, 0x86, 0x5e, 0x60, 0x44, 0xab, 0xff, 0x57, 0x6f, 0xd7, 0x12, 0xd4, 0xdf, 0x3f, 0x51, 0x14, 0x31, 0x87, 0x53, 0xef, 0xcf, 0xef, 0xed, 0x70, 0xee, 0x58, 0x68, 0x84,
0xea, 0xff, 0x8c, 0x85, 0xc2, 0x08, 0xba, 0x4d, 0x5b, 0x6b, 0x80, 0x46, 0xf5, 0xd6, 0x08, 0x17, 0x47, 0xd7, 0x79, 0xba, 0xda, 0x77, 0x68, 0xe6, 0x49, 0xd0, 0x47, 0xff, 0x9b, 0x1f, 0x66, 0x0c,
0xed, 0xd2, 0xcb, 0x55, 0x72, 0x6e, 0x10, 0xab, 0xed, 0xec, 0x9d, 0xe8, 0xca, 0x5d, 0xed, 0x28, 0x9a, 0xd7, 0x93, 0xab, 0x3b, 0x69, 0x19, 0xd1, 0x63, 0xc8, 0x75, 0xfe, 0xc1, 0x20, 0x9c, 0xd5,
0xee, 0x0a, 0x54, 0xe2, 0xdd, 0x98, 0x48, 0xd7, 0xa2, 0x09, 0xd2, 0xc9, 0x45, 0x44, 0x9a, 0x0b, 0xac, 0x9a, 0x46, 0xc4, 0x5e, 0x5e, 0x03, 0x3c, 0x69, 0x82, 0xd2, 0x92, 0x48, 0x39, 0xac, 0x74,
0xee, 0x83, 0xa5, 0x66, 0x49, 0x61, 0x09, 0xa7, 0x4f, 0x6a, 0xc6, 0xe4, 0x10, 0xdf, 0x00, 0xbb, 0x29, 0xa2, 0x90, 0xe0, 0x02, 0x15, 0x16, 0xae, 0x3b, 0x8a, 0x23, 0x28, 0x8e, 0x7e, 0x2e, 0x72,
0xee, 0xd7, 0xe0, 0xef, 0xf2, 0xed, 0x55, 0x9e, 0x2a, 0x79, 0xee, 0x36, 0x1f, 0x99, 0x62, 0xaf, 0x3b, 0x1e, 0x99, 0x91, 0x31, 0xe3, 0x0b, 0xb7, 0xfd, 0x07, 0x54, 0x6f, 0xae, 0x0a, 0x72, 0x67,
0xef, 0x87, 0xbe, 0x89, 0xa4, 0x13, 0x65, 0x7d, 0xe8, 0x72, 0x14, 0x98, 0x55, 0x2c, 0xf9, 0xe0, 0xf3, 0xc1, 0xf7, 0x1b, 0xc6, 0x2d, 0xfa, 0x63, 0xb9, 0xf2, 0x5b, 0xbc, 0x66, 0xe8, 0x64, 0x94,
0xf0, 0x21, 0x74, 0xbb, 0x75, 0xbc, 0x77, 0x4d, 0xf2, 0xd7, 0xa6, 0x3a, 0x0b, 0x0f, 0x7a, 0x04, 0x0c, 0x99, 0x07, 0x39, 0x9f, 0x97, 0xf6, 0x42, 0x74, 0x3d, 0xa9, 0x7d, 0xf3, 0x01, 0x04, 0xc7,
0xf0, 0xb3, 0xd0, 0xd4, 0xc5, 0x45, 0x78, 0x80, 0xe2, 0xd9, 0xb7, 0x72, 0x8e, 0xb6, 0x4b, 0xd2, 0x88, 0xb5, 0xd4, 0xa2, 0x6e, 0xc8, 0x83, 0xf3, 0xc0, 0x94, 0x1d, 0x8a, 0xf2, 0x9d, 0x94, 0x66,
0xf1, 0x86, 0x3e, 0xc8, 0xb7, 0xf4, 0x3f, 0x94, 0xad, 0x14, 0xfb, 0x0b, 0x8b, 0x4a, 0x69, 0x49, 0x7a, 0x8c, 0x65, 0xec, 0xbc, 0x2a, 0x55, 0xe0, 0xbb, 0x42, 0x0e, 0x77, 0x2b, 0x8c, 0xdc, 0x91,
0xf1, 0x97, 0xa1, 0x71, 0xa0, 0x9a, 0xb6, 0x40, 0xaa, 0x8a, 0xc4, 0xff, 0x7d, 0xdf, 0xc8, 0x83, 0x77, 0xa8, 0x9f, 0xdb, 0xb3, 0xfe, 0xe0, 0x14, 0xab, 0xb9, 0x09, 0x7d, 0x92, 0x57, 0x5b, 0x67,
0xf1, 0xb4, 0xf6, 0x51, 0x3b, 0x0d, 0x54, 0x4a, 0x68, 0x8d, 0x13, 0xad, 0xc2, 0x91, 0xef, 0xa8, 0xc5, 0x9f, 0x42, 0x0c, 0xa5, 0xdc, 0xb2, 0x3e, 0x0b, 0x5a, 0x06, 0xfa, 0x7e, 0x0d, 0x08, 0x3d,
0xf1, 0xca, 0xd3, 0xac, 0x00, 0x5b, 0x57, 0xd6, 0xe2, 0x2e, 0xa5, 0x7b, 0x9e, 0xbe, 0x1e, 0xe9, 0xe5, 0x05, 0x2b, 0xdd, 0xa4, 0x99, 0xf5, 0xf2, 0xc1, 0x36, 0x43, 0x17, 0xde, 0x87, 0xa7, 0x94,
0xf2, 0x54, 0x08, 0x77, 0x46, 0xfd, 0xb5, 0xd9, 0xd9, 0xea, 0xe6, 0xdf, 0x45, 0x84, 0x85, 0x75, 0x2b, 0xeb, 0x0f, 0xcf, 0x29, 0x5c, 0x36, 0xd2, 0x73, 0x51, 0x1b, 0x45, 0xf7, 0x48, 0x02, 0x87,
0xf2, 0x77, 0xaf, 0x4f, 0x9b, 0xdc, 0x91, 0x8a, 0xe8, 0x9f, 0xa3, 0x5c, 0xc1, 0xb3, 0x4e, 0x34, 0x98, 0x4c, 0x04, 0xae, 0x97, 0x65, 0x32, 0x2c, 0x3c, 0xb0, 0x49, 0x57, 0x4d, 0x36, 0x50, 0x9c,
0xf2, 0xa1, 0x6d, 0x35, 0xb5, 0x54, 0x69, 0x41, 0x87, 0xa7, 0x0d, 0x40, 0xca, 0x68, 0x29, 0x59, 0xf4, 0xf3, 0x5c, 0x2c, 0xe0, 0xea, 0xb8, 0xfd, 0x64, 0xf7, 0xac, 0x2a, 0xb9, 0xf5, 0xc2, 0x4a,
0xf2, 0xa7, 0x44, 0x64, 0x23, 0x52, 0x48, 0xea, 0x2a, 0x41, 0xea, 0x0d, 0x02, 0x56, 0xe9, 0xcd, 0xd2, 0x4b, 0xb6, 0xb3, 0xe2, 0xa6, 0xf2, 0xfc, 0x7e, 0x0a, 0xad, 0xc8, 0x6e, 0xc5, 0x6c, 0xa1,
0xf3, 0x1f, 0xd4, 0x61, 0xc5, 0xe9, 0x95, 0x10, 0x40, 0x3f, 0xc9, 0x7c, 0x1d, 0xa2, 0xd8, 0xa9, 0xcb, 0xe2, 0x70, 0x59, 0x7d, 0x32, 0xba, 0xdf, 0x8f, 0xd6, 0x6b, 0x77, 0x49, 0x5f, 0x8d, 0x94,
0xf3, 0x30, 0xf2, 0x3c, 0x09, 0x77, 0x2a, 0x64, 0xe1, 0x47, 0x8a, 0x19, 0xce, 0x00, 0x3f, 0xab, 0xca, 0x4f, 0x52, 0xa9, 0x43, 0x1a, 0x8c, 0x68, 0x03, 0x01, 0x9a, 0xd5, 0x32, 0xd7, 0xdd, 0xc8,
0xf3, 0x37, 0x27, 0xb5, 0x4a, 0x99, 0x08, 0xce, 0xc7, 0xed, 0x8d, 0xb5, 0x82, 0xa1, 0x48, 0x24, 0x20, 0xfa, 0x25, 0x7b, 0x61, 0xb5, 0x59, 0xc4, 0x73, 0x43, 0x11, 0x08, 0x72, 0xad, 0xf7, 0xd8,
0xf3, 0xd3, 0x89, 0x50, 0xa3, 0xca, 0xcf, 0x61, 0xc9, 0x4d, 0xb9, 0x15, 0x35, 0x76, 0x19, 0x4e, 0x95, 0x3b, 0x57, 0x85, 0x63, 0x71, 0x59, 0xb3, 0xaa, 0x6f, 0x1e, 0x92, 0x32, 0x20, 0xea, 0xd4,
0xf4, 0x8e, 0x6d, 0xd8, 0x71, 0x8e, 0x95, 0x3b, 0x60, 0xa2, 0x4f, 0x2c, 0xbe, 0xa6, 0x0a, 0x95, 0x21, 0xde, 0xae, 0x67, 0xdb, 0x25, 0x42, 0x5b, 0x7d, 0x3a, 0xce, 0x3c, 0x51, 0x7d, 0xd9, 0xb7,
0xf4, 0xd7, 0xd6, 0xf0, 0xd8, 0x20, 0xf7, 0x49, 0xa4, 0x42, 0xda, 0xb0, 0xa3, 0x4d, 0x53, 0xa7, 0x1c, 0xe4, 0x7d, 0xf5, 0x1d, 0xe0, 0x7e, 0x67, 0x23, 0xab, 0x84, 0x81, 0x08, 0xad, 0x19, 0x45,
0xf4, 0xd8, 0xea, 0xd6, 0xc3, 0x25, 0x03, 0x05, 0x38, 0xd1, 0x0e, 0xbb, 0x39, 0xf0, 0xef, 0xdc, 0x2f, 0x55, 0x37, 0x94, 0xc1, 0x4a, 0x5e, 0x45, 0xf9, 0x55, 0x5c, 0x33, 0x59, 0x25, 0xd9, 0xd3,
0xf4, 0xdc, 0x5a, 0x40, 0xd2, 0xa9, 0xdb, 0xda, 0xb2, 0x10, 0xba, 0xe0, 0xc5, 0x08, 0xe0, 0x53, 0xae, 0x98, 0x6c, 0x4d, 0xa4, 0x2d, 0x68, 0x76, 0x0a, 0x16, 0x55, 0xd6, 0xfb, 0xae, 0xc0, 0x51,
0xf5, 0x1b, 0xc0, 0xb8, 0xfc, 0xe1, 0xba, 0xe7, 0x1b, 0x76, 0xcb, 0x3a, 0xde, 0x28, 0xb7, 0x12, 0x66, 0x9d, 0x4e, 0x93, 0x8f, 0xd3, 0x7c, 0x9f, 0x58, 0x72, 0x49, 0x3a, 0xcc, 0x25, 0xfa, 0xe1,
0xf5, 0x58, 0xe0, 0x4e, 0xf9, 0x9b, 0x39, 0xa1, 0x01, 0x2e, 0x8b, 0xc2, 0x68, 0x57, 0x28, 0xd9, 0x83, 0xc6, 0x82, 0xcf, 0x5e, 0x6f, 0x7e, 0x4d, 0x33, 0x5a, 0x66, 0x02, 0x83, 0xd7, 0xc6, 0x66,
0xf5, 0xd3, 0x96, 0xfc, 0x5a, 0xd8, 0xb7, 0xea, 0xc2, 0x26, 0x52, 0x12, 0x9d, 0x56, 0x44, 0x9d, 0xc3, 0x0b, 0x69, 0x65, 0xce, 0x3e, 0x41, 0xf5, 0xd7, 0x65, 0x90, 0xe3, 0xb1, 0xec, 0xfe, 0x62,
0xf5, 0xe8, 0x92, 0xdd, 0x6e, 0xc4, 0xc2, 0xde, 0xfa, 0x4a, 0x49, 0x5c, 0x09, 0x21, 0x9b, 0x62, 0x13, 0x79, 0xb6, 0x4d, 0xa3, 0xd1, 0xb2, 0xe3, 0x4a, 0xdf, 0x4b, 0x5f, 0x11, 0x02, 0xbd, 0x39,
0xf7, 0x49, 0x47, 0x59, 0x0a, 0x87, 0xa0, 0x05, 0x02, 0x3e, 0x9e, 0xf8, 0x9c, 0xdf, 0x0c, 0x38, 0xd8, 0xd5, 0x82, 0xca, 0x41, 0x73, 0xf8, 0x20, 0x1c, 0xeb, 0xc4, 0x43, 0xef, 0x79, 0x67, 0x90,
0xf7, 0xe4, 0xc7, 0xfb, 0x10, 0x75, 0x5a, 0xc5, 0x34, 0xbc, 0xdf, 0x61, 0xaa, 0x7f, 0xa1, 0x85, 0x39, 0xe4, 0x2e, 0x06, 0x1c, 0x24, 0x78, 0x91, 0xe9, 0xba, 0x42, 0xe1, 0x72, 0x90, 0xc7, 0x42,
0xf8, 0xdd, 0x22, 0x81, 0xc6, 0x7c, 0x59, 0xa0, 0x8f, 0xdd, 0xc9, 0x85, 0x9e, 0x9d, 0x5f, 0xf7, 0x38, 0x02, 0xca, 0xd8, 0x89, 0x75, 0x24, 0x2b, 0xd1, 0x14, 0x86, 0xf1, 0x3c, 0x6d, 0xda, 0x6b,
0xf8, 0xf3, 0x8c, 0x4f, 0xeb, 0xe9, 0xd8, 0xe4, 0x5e, 0x71, 0xa4, 0x59, 0xc5, 0xbf, 0xf1, 0x71, 0x75, 0x5c, 0x34, 0x8d, 0x5f, 0x61, 0x9f, 0x3c, 0x6e, 0xf3, 0x0a, 0x3f, 0x8f, 0xd0, 0x2b, 0xd1,
0xf9, 0x23, 0xef, 0xa6, 0x61, 0x5c, 0xe9, 0xa9, 0x3e, 0x5d, 0x69, 0x96, 0x3b, 0x30, 0xad, 0xb0, 0x0f, 0x2d, 0x20, 0x59, 0x11, 0x3f, 0x55, 0xba, 0xbc, 0x47, 0x7b, 0xa8, 0x89, 0x84, 0x1f, 0x29,
0xfa, 0xbc, 0x37, 0x9d, 0xf3, 0x95, 0xe6, 0xf5, 0x24, 0x72, 0xb4, 0x4f, 0xa5, 0x08, 0x2f, 0x9f, 0x0e, 0x0d, 0xa4, 0x80, 0xf0, 0x51, 0x98, 0xc6, 0x68, 0x14, 0xb7, 0x05, 0x5b, 0x03, 0xf4, 0x46,
0xfb, 0x0b, 0xbc, 0x25, 0x6a, 0xea, 0x5c, 0xf9, 0x3d, 0xa9, 0x9c, 0xf2, 0x64, 0x81, 0xcc, 0x42, 0xf4, 0xe7, 0xba, 0x6b, 0x32, 0xdb, 0x63, 0xb8, 0x27, 0x62, 0x08, 0x07, 0xe7, 0x9e, 0x80, 0x5c,
0xfc, 0x73, 0x60, 0x34, 0xeb, 0xab, 0x00, 0x47, 0x76, 0x58, 0x1c, 0xe9, 0xa6, 0xc1, 0x12, 0x10, 0x6d, 0xfd, 0xdf, 0xab, 0xb3, 0x15, 0xb1, 0xf0, 0xa4, 0xd0, 0x84, 0x2d, 0x67, 0x30, 0x84, 0x29,
0xfd, 0x30, 0x62, 0x35, 0x8e, 0x0e, 0x1d, 0xc4, 0xc3, 0xa6, 0x03, 0x80, 0xef, 0x1b, 0xdf, 0xd4, 0xc5, 0x1f, 0x44, 0x73, 0xb8, 0x60, 0x09, 0x37, 0xd9, 0x21, 0xdf, 0x47, 0x2f, 0xbf, 0x9b, 0x65,
0xfd, 0x45, 0x91, 0xad, 0xd2, 0xe5, 0xb0, 0x66, 0x43, 0x63, 0x72, 0x0c, 0x71, 0x49, 0x29, 0x82, 0xd5, 0xb2, 0x23, 0xa1, 0x41, 0xa6, 0x24, 0x82, 0x46, 0xcd, 0x23, 0x81, 0xf6, 0x7e, 0x92, 0x6c,
0xfd, 0xbe, 0x6c, 0x45, 0xf2, 0x41, 0x44, 0x21, 0x56, 0x2d, 0x81, 0x2e, 0xb6, 0x7c, 0x5f, 0xa0, 0xcf, 0xd0, 0xd4, 0x0a, 0xfe, 0x2c, 0xf0, 0xcd, 0xdc, 0x5e, 0x09, 0x05, 0x4a, 0xcb, 0x4f, 0xe5,
0xfe, 0x0e, 0x58, 0x84, 0x6c, 0x40, 0x71, 0x7f, 0xed, 0xe6, 0xa1, 0xe0, 0xd6, 0xa0, 0x54, 0x6c, 0xbf, 0x8b, 0x8c, 0xf0, 0xb8, 0x22, 0x58, 0xfc, 0x16, 0xd0, 0x5b, 0xab, 0x58, 0x10, 0x7d, 0x34,
0xff, 0xd7, 0x68, 0x8e, 0x7d, 0x2b, 0x8c, 0x3c, 0x31, 0x40, 0xb4, 0x15, 0xe7, 0x28, 0xbb, 0xe7, 0x66, 0x3c, 0x54, 0xe2, 0x3b, 0xd2, 0x88, 0xff, 0x2c, 0xf4, 0x61, 0x78, 0x35, 0x08, 0x8f, 0x39,
0xff, 0xf4, 0x21, 0xa9, 0xdc, 0xd3, 0xef, 0x38, 0xad, 0x58, 0x5e, 0x8b, 0xac, 0xa4, 0x08, 0xac, 0x2e, 0x4c, 0xdb, 0xdf, 0xa6, 0x79, 0x90, 0x0e, 0xc1, 0x70, 0x89, 0x62, 0x4e, 0x31, 0x0a, 0xda,
};

View File

@ -1,7 +1,7 @@
/*
* Rufus: The Reliable USB Formatting Utility
* Device detection and enumeration
* Copyright © 2014-2023 Pete Batard <pete@akeo.ie>
* Copyright © 2014-2024 Pete Batard <pete@akeo.ie>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -384,8 +384,7 @@ BOOL GetOpticalMedia(IMG_SAVE* img_save)
FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL);
if (hDrive == INVALID_HANDLE_VALUE)
continue;
if (!DeviceIoControl(hDrive, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX,
NULL, 0, geometry, sizeof(geometry), &size, NULL))
if (!DeviceIoControl(hDrive, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX, NULL, 0, geometry, sizeof(geometry), &size, NULL))
continue;
// Rewritable media usually has a one sector
if (DiskGeometry->DiskSize.QuadPart <= 4096)
@ -465,7 +464,7 @@ BOOL GetDevices(DWORD devnum)
// Oh, and we also have card devices (e.g. 'SCSI\DiskO2Micro_SD_...') under the SCSI enumerator...
const char* scsi_disk_prefix = "SCSI\\Disk";
const char* scsi_card_name[] = {
"_SD_", "_SDHC_", "_MMC_", "_MS_", "_MSPro_", "_xDPicture_", "_O2Media_"
"_SD_", "_SDHC_", "_SDXC_", "_MMC_", "_MS_", "_MSPro_", "_xDPicture_", "_O2Media_"
};
const char* usb_speed_name[USB_SPEED_MAX] = { "USB", "USB 1.0", "USB 1.1", "USB 2.0", "USB 3.0", "USB 3.1" };
const char* windows_sandbox_vhd_label = "PortableBaseLayer";
@ -594,7 +593,7 @@ BOOL GetDevices(DWORD devnum)
uprintf("Could not allocate Device ID list");
goto out;
}
for (s=0, i=0; s<ARRAYSIZE(usbstor_name); s++) {
for (s = 0, i = 0; s < ARRAYSIZE(usbstor_name); s++) {
list_start[s] = i;
if (list_size[s] > 1) {
if (CM_Get_Device_ID_ListA(usbstor_name[s], &devid_list[i], list_size[s], ulFlags) != CR_SUCCESS)
@ -891,13 +890,13 @@ BOOL GetDevices(DWORD devnum)
break;
}
drive_size = GetDriveSize(drive_index);
if (drive_size < (MIN_DRIVE_SIZE * MB)) {
uprintf("Device eliminated because it is smaller than %d MB", MIN_DRIVE_SIZE);
if (drive_size < MIN_DRIVE_SIZE) {
uprintf("Device eliminated because it is smaller than %s", SizeToHumanReadable(MIN_DRIVE_SIZE, FALSE, FALSE));
safe_free(devint_detail_data);
break;
}
if (GetDriveLabel(drive_index, drive_letters, &label)) {
if (GetDriveLabel(drive_index, drive_letters, &label, FALSE)) {
if ((props.is_SCSI) && (!props.is_UASP) && (!props.is_VHD)) {
if (!props.is_Removable) {
// Non removables should have been eliminated above, but since we
@ -928,11 +927,16 @@ BOOL GetDevices(DWORD devnum)
uprintf("NOTE: You can enable the listing of Hard Drives under 'advanced drive properties'");
safe_free(devint_detail_data);
break;
} else if ((!enable_HDDs) && (props.is_CARD) && (drive_size > MAX_DEFAULT_LIST_CARD_SIZE * GB)) {
uprintf("Device eliminated because it was detected as a card larger than %d GB", MAX_DEFAULT_LIST_CARD_SIZE);
} else if ((!enable_HDDs) && (props.is_CARD) && (drive_size > MAX_DEFAULT_LIST_CARD_SIZE)) {
uprintf("Device eliminated because it was detected as a card larger than %s",
SizeToHumanReadable(MAX_DEFAULT_LIST_CARD_SIZE, FALSE, FALSE));
uprintf("To use such a card, check 'List USB Hard Drives' under 'advanced drive properties'");
safe_free(devint_detail_data);
break;
} else if (props.is_VHD && IsMsDevDrive(drive_index)) {
uprintf("Device eliminated because it was detected as a Microsoft Dev Drive");
safe_free(devint_detail_data);
break;
}
// Windows 10 19H1 mounts a 'PortableBaseLayer' for its Windows Sandbox feature => unlist those
if (safe_strcmp(label, windows_sandbox_vhd_label) == 0) {
@ -982,8 +986,8 @@ BOOL GetDevices(DWORD devnum)
safe_free(devint_detail_data);
break;
}
safe_sprintf(&display_msg[strlen(display_msg)], sizeof(display_msg) - strlen(display_msg),
"%s [%s]", (right_to_left_mode)?RIGHT_TO_LEFT_MARK:"",
safe_sprintf(&display_msg[strlen(display_msg)], sizeof(display_msg) - strlen(display_msg) - 1,
"%s [%s]", (right_to_left_mode) ? RIGHT_TO_LEFT_MARK : "",
SizeToHumanReadable(drive_size, FALSE, use_fake_units));
display_name = display_msg;
}

View File

@ -2,7 +2,7 @@
* Rufus: The Reliable USB Formatting Utility
* DOS boot file extraction, from the FAT12 floppy image in diskcopy.dll
* (MS WinME DOS) or from the embedded FreeDOS resource files
* Copyright © 2011-2023 Pete Batard <pete@akeo.ie>
* Copyright © 2011-2024 Pete Batard <pete@akeo.ie>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -352,7 +352,7 @@ BOOL ExtractFreeDOS(const char* path)
IDR_FD_EGA17_CPX, IDR_FD_EGA18_CPX };
char filename[MAX_PATH], locale_path[MAX_PATH];
BYTE* res_data;
DWORD res_size, Size;
DWORD res_size;
HANDLE hFile;
int i;
@ -366,10 +366,10 @@ BOOL ExtractFreeDOS(const char* path)
static_strcat(locale_path, "LOCALE\\");
CreateDirectoryA(locale_path, NULL);
for (i=0; i<ARRAYSIZE(res_name); i++) {
for (i = 0; i < ARRAYSIZE(res_name); i++) {
res_data = (BYTE*)GetResource(hMainInstance, MAKEINTRESOURCEA(res_id[i]), _RT_RCDATA, res_name[i], &res_size, FALSE);
static_strcpy(filename, ((i<2)?path:locale_path));
static_strcpy(filename, ((i<2) ? path : locale_path));
static_strcat(filename, res_name[i]);
hFile = CreateFileA(filename, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ, NULL,
@ -379,7 +379,7 @@ BOOL ExtractFreeDOS(const char* path)
return FALSE;
}
if (!WriteFileWithRetry(hFile, res_data, res_size, &Size, WRITE_RETRIES)) {
if (!WriteFileWithRetry(hFile, res_data, res_size, NULL, WRITE_RETRIES)) {
uprintf("Could not write file '%s': %s.", filename, WindowsErrorString());
safe_closehandle(hFile);
return FALSE;

View File

@ -1,7 +1,7 @@
/*
* Rufus: The Reliable USB Formatting Utility
* DOS keyboard locale setup
* Copyright © 2011-2021 Pete Batard <pete@akeo.ie>
* Copyright © 2011-2024 Pete Batard <pete@akeo.ie>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -197,8 +197,8 @@ static kb_list fd_kb_list[] = {
static int ms_get_kbdrv(const char* kb)
{
unsigned int i, j;
for (i=0; i<ARRAYSIZE(ms_kb_list); i++) {
for (j=0; j<ms_kb_list[i].size; j++) {
for (i = 0; i<ARRAYSIZE(ms_kb_list); i++) {
for (j = 0; j < ms_kb_list[i].size; j++) {
if (safe_strcmp(ms_kb_list[i].list[j], kb) == 0) {
return i;
}
@ -210,8 +210,8 @@ static int ms_get_kbdrv(const char* kb)
static int fd_get_kbdrv(const char* kb)
{
unsigned int i, j;
for (i=0; i<ARRAYSIZE(fd_kb_list); i++) {
for (j=0; j<fd_kb_list[i].size; j++) {
for (i = 0; i < ARRAYSIZE(fd_kb_list); i++) {
for (j = 0; j < fd_kb_list[i].size; j++) {
if (safe_strcmp(fd_kb_list[i].list[j], kb) == 0) {
return i;
}
@ -250,7 +250,7 @@ static const char* kb_hr_list[][2] = {
{"is", "Icelandic"},
{"it", "Italian"},
{"jp", "Japanese"},
// {"ko", "Korean"}, // Unsupported by FreeDOS?
// {"ko", "Korean"}, // Unsupported by FreeDOS
{"nl", "Dutch"},
{"no", "Norwegian"},
{"pl", "Polish"},
@ -270,7 +270,7 @@ static const char* kb_hr_list[][2] = {
{"lv", "Latvian"},
{"lt", "Lithuanian"},
{"tj", "Tajik"},
// {"fa", "Persian"}; // Unsupported by FreeDOS?
// {"fa", "Persian"}; // Unsupported by FreeDOS
{"vi", "Vietnamese"},
{"hy", "Armenian"},
{"az", "Azeri"},
@ -288,7 +288,7 @@ static const char* kb_hr_list[][2] = {
static const char* kb_to_hr(const char* kb)
{
int i;
for (i=0; i<ARRAYSIZE(kb_hr_list); i++) {
for (i = 0; i < ARRAYSIZE(kb_hr_list); i++) {
if (safe_strcmp(kb, kb_hr_list[i][0]) == 0) {
return kb_hr_list[i][1];
}
@ -426,7 +426,7 @@ static cp_list cp_hr_list[] = {
static const char* cp_to_hr(ULONG cp)
{
int i;
for (i=0; i<ARRAYSIZE(cp_hr_list); i++) {
for (i = 0; i < ARRAYSIZE(cp_hr_list); i++) {
if (cp_hr_list[i].cp == cp) {
return cp_hr_list[i].name;
}
@ -449,13 +449,13 @@ static const char* get_kb(void)
// need an KLID which GetKeyboardLayoutNameA() does return ...but only as a
// string of an hex value...
GetKeyboardLayoutNameA(kbid_str);
if (sscanf(kbid_str, "%x", &kbid) == 0) {
uprintf("Could not scan keyboard layout name - falling back to US as default\n");
if (sscanf(kbid_str, "%x", &kbid) <= 0) {
uprintf("Could not scan keyboard layout name - defaulting to US");
kbid = 0x00000409;
}
uprintf("Windows KBID 0x%08x\n", kbid);
for (pass=0; pass<3; pass++) {
for (pass = 0; pass < 3; pass++) {
// Some of these return values are defined in
// HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout\DosKeybCodes
// Others are picked up in FreeDOS official keyboard layouts, v3.0
@ -748,12 +748,12 @@ static const char* get_kb(void)
} else if (pass == 1) {
// If we still didn't get a match, use the system's primary language
kbid = PRIMARYLANGID(GetSystemDefaultLangID());
uprintf("Unable to match KBID, trying LangID 0x%04x\n", kbid);
uprintf("Unable to match KBID, trying LangID 0x%04x", kbid);
}
break;
}
}
uprintf("Unable to match KBID and LangID - defaulting to US\n");
uprintf("Unable to match KBID and LangID - defaulting to US");
return "us";
}
@ -976,14 +976,14 @@ BOOL SetDOSLocale(const char* path, BOOL bFreeDOS)
// First handle the codepage
kb = get_kb();
// We have a keyboard ID, but that doesn't mean it's supported
kbdrv = bFreeDOS?fd_get_kbdrv(kb):ms_get_kbdrv(kb);
kbdrv = bFreeDOS ? fd_get_kbdrv(kb) : ms_get_kbdrv(kb);
if (kbdrv < 0) {
uprintf("Keyboard id '%s' is not supported - falling back to 'us'\n", kb);
uprintf("Keyboard id '%s' is not supported - falling back to 'us'", kb);
kb = "us";
kbdrv = bFreeDOS?fd_get_kbdrv(kb):ms_get_kbdrv(kb); // Always succeeds
kbdrv = bFreeDOS ? fd_get_kbdrv(kb) : ms_get_kbdrv(kb); // Always succeeds
}
assert(kbdrv >= 0);
uprintf("Will use DOS keyboard '%s' [%s]\n", kb, kb_to_hr(kb));
uprintf("Will use DOS keyboard '%s' [%s]", kb, kb_to_hr(kb));
// Now get a codepage
cp = GetOEMCP();
@ -994,16 +994,16 @@ BOOL SetDOSLocale(const char* path, BOOL bFreeDOS)
(char*)&actual_cp, sizeof(actual_cp)))
cp = actual_cp;
}
egadrv = bFreeDOS?fd_get_ega(cp):ms_get_ega(cp);
egadrv = bFreeDOS ? fd_get_ega(cp) : ms_get_ega(cp);
if (egadrv == NULL) {
// We need to use the fallback CP from the keyboard we got above, as 437 is not always available
uprintf("Unable to find an EGA file with codepage %d [%s]\n", cp, cp_to_hr(cp));
uprintf("Unable to find an EGA file with codepage %d [%s]", cp, cp_to_hr(cp));
cp = kbdrv_data[kbdrv].default_cp;
egadrv = bFreeDOS?"ega.cpx":"ega.cpi";
egadrv = bFreeDOS ? "ega.cpx" : "ega.cpi";
} else if (bFreeDOS) {
cp = fd_upgrade_cp(cp);
}
uprintf("Will use codepage %d [%s]\n", cp, cp_to_hr(cp));
uprintf("Will use codepage %d [%s]", cp, cp_to_hr(cp));
if ((cp == 437) && (strcmp(kb, "us") == 0)) {
// Nothing much to do if US/US - just notify in autoexec.bat
@ -1011,14 +1011,14 @@ BOOL SetDOSLocale(const char* path, BOOL bFreeDOS)
static_strcat(filename, "\\AUTOEXEC.BAT");
fd = fopen(filename, "w+");
if (fd == NULL) {
uprintf("Unable to create 'AUTOEXEC.BAT': %s.\n", WindowsErrorString());
uprintf("Unable to create 'AUTOEXEC.BAT': %s", WindowsErrorString());
return FALSE;
}
fprintf(fd, "@echo off\n");
fprintf(fd, "set PATH=.;\\;\\LOCALE\n");
fprintf(fd, "echo Using %s keyboard with %s codepage [%d]\n", kb_to_hr("us"), cp_to_hr(437), 437);
fclose(fd);
uprintf("Successfully wrote 'AUTOEXEC.BAT'\n");
uprintf("Successfully wrote 'AUTOEXEC.BAT'");
return TRUE;
}
@ -1027,7 +1027,7 @@ BOOL SetDOSLocale(const char* path, BOOL bFreeDOS)
static_strcat(filename, "\\CONFIG.SYS");
fd = fopen(filename, "w+");
if (fd == NULL) {
uprintf("Unable to create 'CONFIG.SYS': %s.\n", WindowsErrorString());
uprintf("Unable to create 'CONFIG.SYS': %s.", WindowsErrorString());
return FALSE;
}
if (bFreeDOS) {
@ -1045,14 +1045,14 @@ BOOL SetDOSLocale(const char* path, BOOL bFreeDOS)
bFreeDOS?"MENU ":"MENUITEM=", bFreeDOS?')':',', kb_to_hr("us"), cp_to_hr(437), 437);
fprintf(fd, "%s", bFreeDOS?"MENU\n12?\n":"[1]\ndevice=\\locale\\display.sys con=(ega,,1)\n[2]\n");
fclose(fd);
uprintf("Successfully wrote 'CONFIG.SYS'\n");
uprintf("Successfully wrote 'CONFIG.SYS'");
// AUTOEXEC.BAT
static_strcpy(filename, path);
static_strcat(filename, "\\AUTOEXEC.BAT");
fd = fopen(filename, "w+");
if (fd == NULL) {
uprintf("Unable to create 'AUTOEXEC.BAT': %s.\n", WindowsErrorString());
uprintf("Unable to create 'AUTOEXEC.BAT': %s", WindowsErrorString());
return FALSE;
}
fprintf(fd, "@echo off\n");
@ -1066,7 +1066,7 @@ BOOL SetDOSLocale(const char* path, BOOL bFreeDOS)
fprintf(fd, "keyb %s,,\\locale\\%s\n", kb, kbdrv_data[kbdrv].name);
fprintf(fd, ":2\n");
fclose(fd);
uprintf("Successfully wrote 'AUTOEXEC.BAT'\n");
uprintf("Successfully wrote 'AUTOEXEC.BAT'");
return TRUE;
}

View File

@ -1,7 +1,7 @@
/*
* Rufus: The Reliable USB Formatting Utility
* Drive access function calls
* Copyright © 2011-2023 Pete Batard <pete@akeo.ie>
* Copyright © 2011-2024 Pete Batard <pete@akeo.ie>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -74,7 +74,7 @@ PF_TYPE_DECL(NTAPI, NTSTATUS, NtQueryVolumeInformationFile, (HANDLE, PIO_STATUS_
RUFUS_DRIVE_INFO SelectedDrive;
extern BOOL write_as_esp;
extern windows_version_t WindowsVersion;
uint64_t partition_offset[PI_MAX];
int partition_index[PI_MAX];
uint64_t persistence_size = 0;
/*
@ -90,13 +90,12 @@ uint64_t persistence_size = 0;
BOOL SetAutoMount(BOOL enable)
{
HANDLE hMountMgr;
DWORD size;
BOOL ret = FALSE;
hMountMgr = CreateFileA(MOUNTMGR_DOS_DEVICE_NAME, 0, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hMountMgr == INVALID_HANDLE_VALUE)
return FALSE;
ret = DeviceIoControl(hMountMgr, IOCTL_MOUNTMGR_SET_AUTO_MOUNT, &enable, sizeof(enable), NULL, 0, &size, NULL);
ret = DeviceIoControl(hMountMgr, IOCTL_MOUNTMGR_SET_AUTO_MOUNT, &enable, sizeof(enable), NULL, 0, NULL, NULL);
CloseHandle(hMountMgr);
return ret;
}
@ -137,7 +136,6 @@ static HANDLE GetHandle(char* Path, BOOL bLockDrive, BOOL bWriteAccess, BOOL bWr
{
int i;
BYTE access_mask = 0;
DWORD size;
uint64_t EndTime;
HANDLE hDrive = INVALID_HANDLE_VALUE;
char DevPath[MAX_PATH];
@ -172,8 +170,7 @@ static HANDLE GetHandle(char* Path, BOOL bLockDrive, BOOL bWriteAccess, BOOL bWr
uprintf("Warning: Could not obtain exclusive rights. Retrying with write sharing enabled...");
bWriteShare = TRUE;
// Try to report the process that is locking the drive
// We also use bit 6 as a flag to indicate that SearchProcess was called.
access_mask = SearchProcess(DevPath, SEARCH_PROCESS_TIMEOUT, TRUE, TRUE, FALSE) | 0x40;
access_mask = GetProcessSearch(SEARCH_PROCESS_TIMEOUT, 0x07, FALSE);
}
Sleep(DRIVE_ACCESS_TIMEOUT / DRIVE_ACCESS_RETRIES);
}
@ -187,25 +184,23 @@ static HANDLE GetHandle(char* Path, BOOL bLockDrive, BOOL bWriteAccess, BOOL bWr
}
if (bLockDrive) {
if (DeviceIoControl(hDrive, FSCTL_ALLOW_EXTENDED_DASD_IO, NULL, 0, NULL, 0, &size, NULL)) {
if (DeviceIoControl(hDrive, FSCTL_ALLOW_EXTENDED_DASD_IO, NULL, 0, NULL, 0, NULL, NULL)) {
uprintf("I/O boundary checks disabled");
}
EndTime = GetTickCount64() + DRIVE_ACCESS_TIMEOUT;
do {
if (DeviceIoControl(hDrive, FSCTL_LOCK_VOLUME, NULL, 0, NULL, 0, &size, NULL))
if (DeviceIoControl(hDrive, FSCTL_LOCK_VOLUME, NULL, 0, NULL, 0, NULL, NULL))
goto out;
if (IS_ERROR(FormatStatus)) // User cancel
if (IS_ERROR(ErrorStatus)) // User cancel
break;
Sleep(DRIVE_ACCESS_TIMEOUT / DRIVE_ACCESS_RETRIES);
} while (GetTickCount64() < EndTime);
// If we reached this section, either we didn't manage to get a lock or the user cancelled
uprintf("Could not lock access to %s: %s", Path, WindowsErrorString());
// See if we can report the processes are accessing the drive
if (!IS_ERROR(FormatStatus) && (access_mask == 0))
// Double the search process timeout here, as Windows is so bloated with processes
// that 10 seconds has become way too small to get much of any results these days...
access_mask = SearchProcess(DevPath, 2 * SEARCH_PROCESS_TIMEOUT, TRUE, TRUE, FALSE);
if (!IS_ERROR(ErrorStatus) && (access_mask == 0))
access_mask = GetProcessSearch(SEARCH_PROCESS_TIMEOUT, 0x07, FALSE);
// Try to continue if the only access rights we saw were for read-only
if ((access_mask & 0x07) != 0x01)
safe_closehandle(hDrive);
@ -314,8 +309,7 @@ char* GetLogicalName(DWORD DriveIndex, uint64_t PartitionOffset, BOOL bKeepTrail
continue;
}
r = DeviceIoControl(hDrive, IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS, NULL, 0,
&DiskExtents, sizeof(DiskExtents), &size, NULL);
r = DeviceIoControl(hDrive, IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS, NULL, 0, &DiskExtents, sizeof(DiskExtents), &size, NULL);
if ((!r) || (size == 0)) {
suprintf("Could not get Disk Extents: %s", r ? "(empty data)" : WindowsErrorString());
safe_closehandle(hDrive);
@ -395,7 +389,7 @@ char* AltGetLogicalName(DWORD DriveIndex, uint64_t PartitionOffset, BOOL bKeepTr
if (PartitionOffset == 0) {
i = 0;
} else if (matching_drive) {
for (i = 0; (i < MAX_PARTITIONS) && (PartitionOffset != SelectedDrive.PartitionOffset[i]); i++);
for (i = 0; (i < MAX_PARTITIONS) && (PartitionOffset != SelectedDrive.Partition[i].Offset); i++);
if (i >= MAX_PARTITIONS) {
suprintf("Error: Could not find a partition at offset %lld on this disk", PartitionOffset);
goto out;
@ -431,11 +425,11 @@ char* GetExtPartitionName(DWORD DriveIndex, uint64_t PartitionOffset)
if (DriveIndex != SelectedDrive.DeviceNumber)
goto out;
CheckDriveIndex(DriveIndex);
for (i = 0; (i < MAX_PARTITIONS) && (PartitionOffset != SelectedDrive.PartitionOffset[i]); i++);
for (i = 0; (i < MAX_PARTITIONS) && (PartitionOffset != SelectedDrive.Partition[i].Offset); i++);
if (i >= MAX_PARTITIONS)
goto out;
static_sprintf(volume_name, "\\\\.\\PhysicalDrive%lu %I64u %I64u", DriveIndex,
SelectedDrive.PartitionOffset[i], SelectedDrive.PartitionSize[i]);
SelectedDrive.Partition[i].Offset, SelectedDrive.Partition[i].Size);
ret = safe_strdup(volume_name);
out:
return ret;
@ -1009,7 +1003,7 @@ BOOL WaitForLogical(DWORD DriveIndex, uint64_t PartitionOffset)
return TRUE;
}
free(LogicalPath);
if (IS_ERROR(FormatStatus)) // User cancel
if (IS_ERROR(ErrorStatus)) // User cancel
return FALSE;
Sleep(DRIVE_ACCESS_TIMEOUT / DRIVE_ACCESS_RETRIES);
} while (GetTickCount64() < EndTime);
@ -1066,13 +1060,12 @@ int GetDriveNumber(HANDLE hDrive, char* path)
BOOL s;
int r = -1;
if (!DeviceIoControl(hDrive, IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS, NULL, 0,
&DiskExtents, sizeof(DiskExtents), &size, NULL) || (size <= 0) || (DiskExtents.NumberOfDiskExtents < 1) ) {
if (!DeviceIoControl(hDrive, IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS, NULL, 0, &DiskExtents, sizeof(DiskExtents), &size, NULL) ||
(size <= 0) || (DiskExtents.NumberOfDiskExtents < 1)) {
// DiskExtents are NO_GO (which is the case for external USB HDDs...)
s = DeviceIoControl(hDrive, IOCTL_STORAGE_GET_DEVICE_NUMBER, NULL, 0, &DeviceNumber, sizeof(DeviceNumber),
&size, NULL);
s = DeviceIoControl(hDrive, IOCTL_STORAGE_GET_DEVICE_NUMBER, NULL, 0, &DeviceNumber, sizeof(DeviceNumber), &size, NULL);
if ((!s) || (size == 0)) {
uprintf("Could not get device number for device %s %s", path, s ? "(empty data)" : WindowsErrorString());
uuprintf("Could not get device number for device %s %s", path, s ? "(empty data)" : WindowsErrorString());
return -1;
}
r = (int)DeviceNumber.DeviceNumber;
@ -1184,8 +1177,7 @@ static BOOL _GetDriveLettersAndType(DWORD DriveIndex, char* drive_letters, UINT*
// handling to determine if they are fixed or removable.
if ((drives_found == 0) && (drive_type != NULL)) {
hPhysical = GetPhysicalHandle(DriveIndex + DRIVE_INDEX_MIN, FALSE, FALSE, FALSE);
r = DeviceIoControl(hPhysical, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX,
NULL, 0, geometry, sizeof(geometry), &size, NULL);
r = DeviceIoControl(hPhysical, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX, NULL, 0, geometry, sizeof(geometry), &size, NULL);
safe_closehandle(hPhysical);
if (r && size > 0) {
if (DiskGeometry->Geometry.MediaType == FixedMedia)
@ -1314,10 +1306,10 @@ BOOL IsDriveLetterInUse(const char drive_letter)
* Return the drive letter and volume label
* If the drive doesn't have a volume assigned, space is returned for the letter
*/
BOOL GetDriveLabel(DWORD DriveIndex, char* letters, char** label)
BOOL GetDriveLabel(DWORD DriveIndex, char* letters, char** label, BOOL bSilent)
{
HANDLE hPhysical;
DWORD size, error;
DWORD error;
static char VolumeLabel[MAX_PATH + 1] = { 0 };
char DrivePath[] = "#:\\", AutorunPath[] = "#:\\autorun.inf", *AutorunLabel = NULL;
WCHAR VolumeName[MAX_PATH + 1] = { 0 }, FileSystemName[64];
@ -1347,13 +1339,13 @@ BOOL GetDriveLabel(DWORD DriveIndex, char* letters, char** label)
// In the case of card readers with no card, users can get an annoying popup asking them
// to insert media. Use IOCTL_STORAGE_CHECK_VERIFY to prevent this
hPhysical = GetPhysicalHandle(DriveIndex, FALSE, FALSE, TRUE);
if (DeviceIoControl(hPhysical, IOCTL_STORAGE_CHECK_VERIFY, NULL, 0, NULL, 0, &size, NULL))
if (DeviceIoControl(hPhysical, IOCTL_STORAGE_CHECK_VERIFY, NULL, 0, NULL, 0, NULL, NULL))
AutorunLabel = get_token_data_file("label", AutorunPath);
else if (GetLastError() == ERROR_NOT_READY)
uprintf("Ignoring 'autorun.inf' label for drive %c: No media", toupper(letters[0]));
suprintf("Ignoring 'autorun.inf' label for drive %c: No media", toupper(letters[0]));
safe_closehandle(hPhysical);
if (AutorunLabel != NULL) {
uprintf("Using 'autorun.inf' label for drive %c: '%s'", toupper(letters[0]), AutorunLabel);
suprintf("Using 'autorun.inf' label for drive %c: '%s'", toupper(letters[0]), AutorunLabel);
static_strcpy(VolumeLabel, AutorunLabel);
safe_free(AutorunLabel);
*label = VolumeLabel;
@ -1389,8 +1381,7 @@ uint64_t GetDriveSize(DWORD DriveIndex)
if (hPhysical == INVALID_HANDLE_VALUE)
return FALSE;
r = DeviceIoControl(hPhysical, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX,
NULL, 0, geometry, sizeof(geometry), &size, NULL);
r = DeviceIoControl(hPhysical, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX, NULL, 0, geometry, sizeof(geometry), &size, NULL);
safe_closehandle(hPhysical);
if (!r || size <= 0)
return 0;
@ -1408,8 +1399,7 @@ BOOL IsMediaPresent(DWORD DriveIndex)
BYTE geometry[128];
hPhysical = GetPhysicalHandle(DriveIndex, FALSE, FALSE, TRUE);
r = DeviceIoControl(hPhysical, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX,
NULL, 0, geometry, sizeof(geometry), &size, NULL) && (size > 0);
r = DeviceIoControl(hPhysical, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX, NULL, 0, geometry, sizeof(geometry), &size, NULL) && (size > 0);
safe_closehandle(hPhysical);
return r;
}
@ -1512,8 +1502,7 @@ uint64_t GetEspOffset(DWORD DriveIndex)
if (hPhysical == INVALID_HANDLE_VALUE)
return FALSE;
r = DeviceIoControl(hPhysical, IOCTL_DISK_GET_DRIVE_LAYOUT_EX,
NULL, 0, layout, sizeof(layout), &size, NULL);
r = DeviceIoControl(hPhysical, IOCTL_DISK_GET_DRIVE_LAYOUT_EX, NULL, 0, layout, sizeof(layout), &size, NULL);
if (!r || size <= 0) {
uprintf("Could not get layout for drive 0x%02x: %s", DriveIndex, WindowsErrorString());
goto out;
@ -1541,7 +1530,7 @@ static BOOL StoreEspInfo(GUID* guid)
static_sprintf(key_name[0], "ToggleEsp%02u", j);
str = ReadSettingStr(key_name[0]);
if ((str == NULL) || (str[0] == 0))
return WriteSettingStr(key_name[0], GuidToString(guid));
return WriteSettingStr(key_name[0], GuidToString(guid, TRUE));
}
// All slots are used => Move every key down and add to last slot
// NB: No, we don't care that the slot we remove may not be the oldest.
@ -1550,7 +1539,7 @@ static BOOL StoreEspInfo(GUID* guid)
static_sprintf(key_name[1], "ToggleEsp%02u", j + 1);
WriteSettingStr(key_name[0], ReadSettingStr(key_name[1]));
}
return WriteSettingStr(key_name[1], GuidToString(guid));
return WriteSettingStr(key_name[1], GuidToString(guid, TRUE));
}
static GUID* GetEspGuid(uint8_t index)
@ -1697,7 +1686,7 @@ BOOL ToggleEsp(DWORD DriveIndex, uint64_t PartitionOffset)
}
DriveLayout->PartitionEntry[esp_index].RewritePartition = TRUE; // Just in case
r = DeviceIoControl(hPhysical, IOCTL_DISK_SET_DRIVE_LAYOUT_EX, (BYTE*)DriveLayout, dl_size, NULL, 0, &dl_size, NULL);
r = DeviceIoControl(hPhysical, IOCTL_DISK_SET_DRIVE_LAYOUT_EX, (BYTE*)DriveLayout, dl_size, NULL, 0, NULL, NULL);
if (!r) {
uprintf("Could not set drive layout: %s", WindowsErrorString());
goto out;
@ -1871,8 +1860,7 @@ BOOL GetDrivePartitionData(DWORD DriveIndex, char* FileSystemName, DWORD FileSys
return FALSE;
SelectedDrive.nPartitions = 0;
memset(SelectedDrive.PartitionOffset, 0, sizeof(SelectedDrive.PartitionOffset));
memset(SelectedDrive.PartitionSize, 0, sizeof(SelectedDrive.PartitionSize));
memset(SelectedDrive.Partition, 0, sizeof(SelectedDrive.Partition));
// Populate the filesystem data
FileSystemName[0] = 0;
volume_name = GetLogicalName(DriveIndex, 0, TRUE, FALSE);
@ -1885,8 +1873,7 @@ BOOL GetDrivePartitionData(DWORD DriveIndex, char* FileSystemName, DWORD FileSys
if (hPhysical == INVALID_HANDLE_VALUE)
return FALSE;
r = DeviceIoControl(hPhysical, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX,
NULL, 0, geometry, sizeof(geometry), &size, NULL);
r = DeviceIoControl(hPhysical, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX, NULL, 0, geometry, sizeof(geometry), &size, NULL);
if (!r || size <= 0) {
suprintf("Could not get geometry for drive 0x%02x: %s", DriveIndex, WindowsErrorString());
safe_closehandle(hPhysical);
@ -1908,8 +1895,7 @@ BOOL GetDrivePartitionData(DWORD DriveIndex, char* FileSystemName, DWORD FileSys
suprintf("Cylinders: %" PRIi64 ", Tracks per cylinder: %d, Sectors per track: %d",
DiskGeometry->Geometry.Cylinders, DiskGeometry->Geometry.TracksPerCylinder, DiskGeometry->Geometry.SectorsPerTrack);
r = DeviceIoControl(hPhysical, IOCTL_DISK_GET_DRIVE_LAYOUT_EX,
NULL, 0, layout, sizeof(layout), &size, NULL );
r = DeviceIoControl(hPhysical, IOCTL_DISK_GET_DRIVE_LAYOUT_EX, NULL, 0, layout, sizeof(layout), &size, NULL );
if (!r || size <= 0) {
suprintf("Could not get layout for drive 0x%02x: %s", DriveIndex, WindowsErrorString());
safe_closehandle(hPhysical);
@ -1964,8 +1950,8 @@ BOOL GetDrivePartitionData(DWORD DriveIndex, char* FileSystemName, DWORD FileSys
}
}
if (i < MAX_PARTITIONS) {
SelectedDrive.PartitionOffset[i] = DriveLayout->PartitionEntry[i].StartingOffset.QuadPart;
SelectedDrive.PartitionSize[i] = DriveLayout->PartitionEntry[i].PartitionLength.QuadPart;
SelectedDrive.Partition[i].Offset = DriveLayout->PartitionEntry[i].StartingOffset.QuadPart;
SelectedDrive.Partition[i].Size = DriveLayout->PartitionEntry[i].PartitionLength.QuadPart;
}
suprintf(" Type: %s (0x%02x)\r\n Detected File System: %s\r\n"
" Size: %s (%lld bytes)\r\n Start Sector: %lld, Boot: %s",
@ -1990,23 +1976,24 @@ BOOL GetDrivePartitionData(DWORD DriveIndex, char* FileSystemName, DWORD FileSys
case PARTITION_STYLE_GPT:
SelectedDrive.PartitionStyle = PARTITION_STYLE_GPT;
suprintf("Partition type: GPT, NB Partitions: %d", DriveLayout->PartitionCount);
suprintf("Disk GUID: %s", GuidToString(&DriveLayout->Gpt.DiskId));
suprintf("Disk GUID: %s", GuidToString(&DriveLayout->Gpt.DiskId, TRUE));
suprintf("Max parts: %d, Start Offset: %" PRIi64 ", Usable = %" PRIi64 " bytes",
DriveLayout->Gpt.MaxPartitionCount, DriveLayout->Gpt.StartingUsableOffset.QuadPart, DriveLayout->Gpt.UsableLength.QuadPart);
for (i = 0; i < DriveLayout->PartitionCount; i++) {
if (i < MAX_PARTITIONS) {
SelectedDrive.PartitionOffset[i] = DriveLayout->PartitionEntry[i].StartingOffset.QuadPart;
SelectedDrive.PartitionSize[i] = DriveLayout->PartitionEntry[i].PartitionLength.QuadPart;
SelectedDrive.Partition[i].Offset = DriveLayout->PartitionEntry[i].StartingOffset.QuadPart;
SelectedDrive.Partition[i].Size = DriveLayout->PartitionEntry[i].PartitionLength.QuadPart;
wcscpy(SelectedDrive.Partition[i].Name, DriveLayout->PartitionEntry[i].Gpt.Name);
}
SelectedDrive.nPartitions++;
isUefiNtfs = (wcscmp(DriveLayout->PartitionEntry[i].Gpt.Name, L"UEFI:NTFS") == 0);
suprintf("Partition %d%s:\r\n Type: %s", i+1, isUefiNtfs ? " (UEFI:NTFS)" : "",
suprintf("Partition %d%s:\r\n Type: %s", i + 1, isUefiNtfs ? " (UEFI:NTFS)" : "",
GetGPTPartitionType(&DriveLayout->PartitionEntry[i].Gpt.PartitionType));
if (DriveLayout->PartitionEntry[i].Gpt.Name[0] != 0)
suprintf(" Name: '%S'", DriveLayout->PartitionEntry[i].Gpt.Name);
suprintf(" Detected File System: %s", GetFsName(hPhysical, DriveLayout->PartitionEntry[i].StartingOffset));
suprintf(" ID: %s\r\n Size: %s (%" PRIi64 " bytes)\r\n Start Sector: %" PRIi64 ", Attributes: 0x%016" PRIX64,
GuidToString(&DriveLayout->PartitionEntry[i].Gpt.PartitionId),
GuidToString(&DriveLayout->PartitionEntry[i].Gpt.PartitionId, TRUE),
SizeToHumanReadable(DriveLayout->PartitionEntry[i].PartitionLength.QuadPart, TRUE, FALSE),
DriveLayout->PartitionEntry[i].PartitionLength,
DriveLayout->PartitionEntry[i].StartingOffset.QuadPart / SelectedDrive.SectorSize,
@ -2065,9 +2052,7 @@ out:
*/
BOOL UnmountVolume(HANDLE hDrive)
{
DWORD size;
if (!DeviceIoControl(hDrive, FSCTL_DISMOUNT_VOLUME, NULL, 0, NULL, 0, &size, NULL)) {
if (!DeviceIoControl(hDrive, FSCTL_DISMOUNT_VOLUME, NULL, 0, NULL, 0, NULL, NULL)) {
uprintf("Could not unmount drive: %s", WindowsErrorString());
return FALSE;
}
@ -2222,7 +2207,7 @@ BOOL RemountVolume(char* drive_name, BOOL bSilent)
} else {
suprintf("Could not remount %s as %c: %s", volume_name, toupper(drive_name[0]), WindowsErrorString());
// This will leave the drive inaccessible and must be flagged as an error
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|APPERR(ERROR_CANT_REMOUNT_VOLUME);
ErrorStatus = RUFUS_ERROR(APPERR(ERROR_CANT_REMOUNT_VOLUME));
return FALSE;
}
}
@ -2235,15 +2220,17 @@ BOOL RemountVolume(char* drive_name, BOOL bSilent)
* (especially IOCTL_DISK_UPDATE_PROPERTIES is *USELESS*), and therefore the OS will try to
* read the file system data at an old location, even if the partition has just been deleted.
*/
static BOOL ClearPartition(HANDLE hDrive, LARGE_INTEGER offset, DWORD size)
static BOOL ClearPartition(HANDLE hDrive, uint64_t offset, DWORD size)
{
BOOL r = FALSE;
uint8_t* buffer = calloc(size, 1);
LARGE_INTEGER li_offset;
if (buffer == NULL)
return FALSE;
if (!SetFilePointerEx(hDrive, offset, NULL, FILE_BEGIN)) {
li_offset.QuadPart = offset;
if (!SetFilePointerEx(hDrive, li_offset, NULL, FILE_BEGIN)) {
free(buffer);
return FALSE;
}
@ -2263,41 +2250,44 @@ static BOOL ClearPartition(HANDLE hDrive, LARGE_INTEGER offset, DWORD size)
BOOL CreatePartition(HANDLE hDrive, int partition_style, int file_system, BOOL mbr_uefi_marker, uint8_t extra_partitions)
{
const char* PartitionTypeName[] = { "MBR", "GPT", "SFD" };
const wchar_t *extra_part_name = L"", *main_part_name = write_as_esp ? L"EFI System Partition" : L"Main Data Partition";
const LONGLONG main_part_size = write_as_esp ? MAX_ISO_TO_ESP_SIZE * MB : SelectedDrive.DiskSize;
const LONGLONG bytes_per_track = ((LONGLONG)SelectedDrive.SectorsPerTrack) * SelectedDrive.SectorSize;
const DWORD size_to_clear = MAX_SECTORS_TO_CLEAR * SelectedDrive.SectorSize;
uint8_t* buffer;
uint64_t last_offset = SelectedDrive.DiskSize;
size_t uefi_ntfs_size = 0;
CREATE_DISK CreateDisk = {PARTITION_STYLE_RAW, {{0}}};
DRIVE_LAYOUT_INFORMATION_EX4 DriveLayoutEx = {0};
BOOL r;
DWORD i, size, bufsize, pn = 0;
LONGLONG main_part_size_in_sectors, extra_part_size_in_tracks = 0;
DWORD pi = 0, mi, i, size, bufsize;
CREATE_DISK CreateDisk = { PARTITION_STYLE_RAW, { { 0 } } };
DRIVE_LAYOUT_INFORMATION_EX4 DriveLayoutEx = { 0 };
// Go for a 260 MB sized ESP by default to keep everyone happy, including 4K sector users:
// https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/configure-uefigpt-based-hard-drive-partitions
// and folks using MacOS: https://github.com/pbatard/rufus/issues/979
LONGLONG esp_size = 260 * MB;
LONGLONG ClusterSize = (LONGLONG)ComboBox_GetCurItemData(hClusterSize);
PrintInfoDebug(0, MSG_238, PartitionTypeName[partition_style]);
if (ClusterSize == 0)
ClusterSize = 0x200;
if (partition_style == PARTITION_STYLE_SFD)
// Nothing to do
return TRUE;
if (extra_partitions & XP_UEFI_NTFS) {
uefi_ntfs_size = GetResourceSize(hMainInstance, MAKEINTRESOURCEA(IDR_UEFI_NTFS), _RT_RCDATA, "uefi-ntfs.img");
if (uefi_ntfs_size == 0)
if (uefi_ntfs_size == 0) {
uprintf("Could not access embedded 'uefi-ntfs.img'");
return FALSE;
}
}
memset(partition_offset, 0, sizeof(partition_offset));
memset(SelectedDrive.PartitionOffset, 0, sizeof(SelectedDrive.PartitionOffset));
memset(SelectedDrive.PartitionSize, 0, sizeof(SelectedDrive.PartitionSize));
// Compute the start offset of our first partition
memset(partition_index, 0, sizeof(partition_index));
memset(SelectedDrive.Partition, 0, sizeof(SelectedDrive.Partition));
// Compute the starting offset of the first partition
if ((partition_style == PARTITION_STYLE_GPT) || (!IsChecked(IDC_OLD_BIOS_FIXES))) {
// Go with the MS 1 MB wastage at the beginning...
DriveLayoutEx.PartitionEntry[pn].StartingOffset.QuadPart = MB;
SelectedDrive.Partition[pi].Offset = 1 * MB;
} else {
// Some folks appear to think that 'Fixes for old BIOSes' is some kind of magic
// wand and are adamant to try to apply them when creating *MODERN* VHD drives.
@ -2307,14 +2297,10 @@ BOOL CreatePartition(HANDLE hDrive, int partition_style, int file_system, BOOL m
// CHS sizes that IBM imparted upon us. Long story short, we now align to a
// cylinder size that is itself aligned to the cluster size.
// If this actually breaks old systems, please send your complaints to IBM.
LONGLONG ClusterSize = (LONGLONG)ComboBox_GetCurItemData(hClusterSize);
if (ClusterSize == 0)
ClusterSize = 0x200;
DriveLayoutEx.PartitionEntry[pn].StartingOffset.QuadPart =
((bytes_per_track + (ClusterSize - 1)) / ClusterSize) * ClusterSize;
SelectedDrive.Partition[pi].Offset = HI_ALIGN_X_TO_Y(bytes_per_track, ClusterSize);
// GRUB2 no longer fits in the usual 31½ KB that the above computation provides
// so just unconditionally double that size and get on with it.
DriveLayoutEx.PartitionEntry[pn].StartingOffset.QuadPart *= 2;
SelectedDrive.Partition[pi].Offset *= 2;
}
// Having the ESP up front may help (and is the Microsoft recommended way) but this
@ -2323,22 +2309,16 @@ BOOL CreatePartition(HANDLE hDrive, int partition_style, int file_system, BOOL m
if (((SelectedDrive.MediaType == FixedMedia) || (WindowsVersion.BuildNumber > 15000)) &&
(extra_partitions & XP_ESP)) {
assert(partition_style == PARTITION_STYLE_GPT);
extra_part_name = L"EFI System Partition";
DriveLayoutEx.PartitionEntry[pn].PartitionLength.QuadPart = esp_size;
DriveLayoutEx.PartitionEntry[pn].Gpt.PartitionType = PARTITION_GENERIC_ESP;
uprintf("● Creating %S (offset: %lld, size: %s)", extra_part_name, DriveLayoutEx.PartitionEntry[pn].StartingOffset.QuadPart,
SizeToHumanReadable(DriveLayoutEx.PartitionEntry[pn].PartitionLength.QuadPart, TRUE, FALSE));
IGNORE_RETVAL(CoCreateGuid(&DriveLayoutEx.PartitionEntry[pn].Gpt.PartitionId));
wcsncpy(DriveLayoutEx.PartitionEntry[pn].Gpt.Name, extra_part_name, ARRAYSIZE(DriveLayoutEx.PartitionEntry[pn].Gpt.Name));
// Zero the first sectors from this partition to avoid file system caching issues
if (!ClearPartition(hDrive, DriveLayoutEx.PartitionEntry[pn].StartingOffset, size_to_clear))
uprintf("Could not zero %S: %s", extra_part_name, WindowsErrorString());
SelectedDrive.PartitionOffset[pn] = DriveLayoutEx.PartitionEntry[pn].StartingOffset.QuadPart;
SelectedDrive.PartitionSize[pn] = DriveLayoutEx.PartitionEntry[pn].PartitionLength.QuadPart;
partition_offset[PI_ESP] = SelectedDrive.PartitionOffset[pn];
pn++;
DriveLayoutEx.PartitionEntry[pn].StartingOffset.QuadPart = DriveLayoutEx.PartitionEntry[pn - 1].StartingOffset.QuadPart +
DriveLayoutEx.PartitionEntry[pn - 1].PartitionLength.QuadPart;
partition_index[PI_ESP] = pi;
wcscpy(SelectedDrive.Partition[pi].Name, L"EFI System Partition");
SelectedDrive.Partition[pi].Size = esp_size;
SelectedDrive.Partition[pi + 1].Offset = SelectedDrive.Partition[pi].Offset + SelectedDrive.Partition[pi].Size;
// Align next partition to track and cluster
SelectedDrive.Partition[pi + 1].Offset = HI_ALIGN_X_TO_Y(SelectedDrive.Partition[pi + 1].Offset, bytes_per_track);
if (ClusterSize % SelectedDrive.SectorSize == 0)
SelectedDrive.Partition[pi + 1].Offset = LO_ALIGN_X_TO_Y(SelectedDrive.Partition[pi + 1].Offset, ClusterSize);
assert(SelectedDrive.Partition[pi + 1].Offset >= SelectedDrive.Partition[pi].Offset + SelectedDrive.Partition[pi].Size);
pi++;
// Clear the extra partition we processed
extra_partitions &= ~(XP_ESP);
}
@ -2346,182 +2326,166 @@ BOOL CreatePartition(HANDLE hDrive, int partition_style, int file_system, BOOL m
// If required, set the MSR partition (GPT only - must be created before the data part)
if (extra_partitions & XP_MSR) {
assert(partition_style == PARTITION_STYLE_GPT);
extra_part_name = L"Microsoft Reserved Partition";
DriveLayoutEx.PartitionEntry[pn].PartitionLength.QuadPart = 128*MB;
DriveLayoutEx.PartitionEntry[pn].Gpt.PartitionType = PARTITION_MICROSOFT_RESERVED;
uprintf("● Creating %S (offset: %lld, size: %s)", extra_part_name, DriveLayoutEx.PartitionEntry[pn].StartingOffset.QuadPart,
SizeToHumanReadable(DriveLayoutEx.PartitionEntry[pn].PartitionLength.QuadPart, TRUE, FALSE));
IGNORE_RETVAL(CoCreateGuid(&DriveLayoutEx.PartitionEntry[pn].Gpt.PartitionId));
wcsncpy(DriveLayoutEx.PartitionEntry[pn].Gpt.Name, extra_part_name, ARRAYSIZE(DriveLayoutEx.PartitionEntry[pn].Gpt.Name));
// Zero the first sectors from this partition to avoid file system caching issues
if (!ClearPartition(hDrive, DriveLayoutEx.PartitionEntry[pn].StartingOffset, size_to_clear))
uprintf("Could not zero %S: %s", extra_part_name, WindowsErrorString());
SelectedDrive.PartitionOffset[pn] = DriveLayoutEx.PartitionEntry[pn].StartingOffset.QuadPart;
SelectedDrive.PartitionSize[pn] = DriveLayoutEx.PartitionEntry[pn].PartitionLength.QuadPart;
pn++;
DriveLayoutEx.PartitionEntry[pn].StartingOffset.QuadPart = DriveLayoutEx.PartitionEntry[pn-1].StartingOffset.QuadPart +
DriveLayoutEx.PartitionEntry[pn-1].PartitionLength.QuadPart;
// Clear the extra partition we processed
wcscpy(SelectedDrive.Partition[pi].Name, L"Microsoft Reserved Partition");
SelectedDrive.Partition[pi].Size = 128 * MB;
SelectedDrive.Partition[pi + 1].Offset = SelectedDrive.Partition[pi].Offset + SelectedDrive.Partition[pi].Size;
SelectedDrive.Partition[pi + 1].Offset = HI_ALIGN_X_TO_Y(SelectedDrive.Partition[pi + 1].Offset, bytes_per_track);
if (ClusterSize % SelectedDrive.SectorSize == 0)
SelectedDrive.Partition[pi + 1].Offset = LO_ALIGN_X_TO_Y(SelectedDrive.Partition[pi + 1].Offset, ClusterSize);
assert(SelectedDrive.Partition[pi + 1].Offset >= SelectedDrive.Partition[pi].Offset + SelectedDrive.Partition[pi].Size);
pi++;
extra_partitions &= ~(XP_MSR);
}
// Set our main data partition
if (write_as_esp) {
// Align ESP to 64 MB while leaving at least 32 MB free space
esp_size = max(esp_size, ((((LONGLONG)img_report.projected_size / MB) + 96) / 64) * 64 * MB);
main_part_size_in_sectors = (esp_size - DriveLayoutEx.PartitionEntry[pn].StartingOffset.QuadPart) /
SelectedDrive.SectorSize;
} else {
main_part_size_in_sectors = (main_part_size - DriveLayoutEx.PartitionEntry[pn].StartingOffset.QuadPart) /
// Need 33 sectors at the end for secondary GPT
SelectedDrive.SectorSize - ((partition_style == PARTITION_STYLE_GPT) ? 33 : 0);
}
// Reserve an entry for the main partition
partition_index[PI_MAIN] = pi++;
// Shorthand for the main index.
mi = partition_index[PI_MAIN];
wcscpy(SelectedDrive.Partition[mi].Name, write_as_esp ? L"EFI System Partition" : L"Main Data Partition");
if (extra_partitions) {
// Adjust the size according to extra partitions (which we always align to a track)
if (extra_partitions & XP_ESP) {
extra_part_name = L"EFI System";
extra_part_size_in_tracks = (esp_size + bytes_per_track - 1) / bytes_per_track;
} else if (extra_partitions & XP_UEFI_NTFS) {
extra_part_name = L"UEFI:NTFS";
extra_part_size_in_tracks = (max(MIN_EXTRA_PART_SIZE, uefi_ntfs_size) + bytes_per_track - 1) / bytes_per_track;
} else if ((extra_partitions & XP_CASPER)) {
// TODO: Should we align these to cluster as well?
if (extra_partitions & XP_PERSISTENCE) {
assert(persistence_size != 0);
extra_part_name = L"Linux Persistence";
extra_part_size_in_tracks = persistence_size / bytes_per_track;
} else if (extra_partitions & XP_COMPAT) {
extra_part_name = L"BIOS Compatibility";
extra_part_size_in_tracks = 1; // One track for the extra partition
} else {
assert(FALSE);
partition_index[PI_CASPER] = pi;
wcscpy(SelectedDrive.Partition[pi].Name, L"Linux Persistence");
SelectedDrive.Partition[pi++].Size = HI_ALIGN_X_TO_Y(persistence_size, bytes_per_track);
}
if (extra_partitions & XP_ESP) {
partition_index[PI_ESP] = pi;
wcscpy(SelectedDrive.Partition[pi].Name, L"EFI System Partition");
SelectedDrive.Partition[pi++].Size = HI_ALIGN_X_TO_Y(esp_size, bytes_per_track);
} else if (extra_partitions & XP_UEFI_NTFS) {
partition_index[PI_UEFI_NTFS] = pi;
wcscpy(SelectedDrive.Partition[pi].Name, L"UEFI:NTFS");
SelectedDrive.Partition[pi++].Size = HI_ALIGN_X_TO_Y(uefi_ntfs_size, bytes_per_track);
} else if (extra_partitions & XP_COMPAT) {
wcscpy(SelectedDrive.Partition[pi].Name, L"BIOS Compatibility");
SelectedDrive.Partition[pi++].Size = bytes_per_track; // One track for the extra partition
}
// NB: Because we already subtracted the backup GPT size from the main partition size and
// this extra partition is indexed on main size, it does not overflow into the backup GPT.
main_part_size_in_sectors = ((main_part_size_in_sectors / SelectedDrive.SectorsPerTrack) -
extra_part_size_in_tracks) * SelectedDrive.SectorsPerTrack;
}
if (main_part_size_in_sectors <= 0) {
uprintf("Error: Invalid %S size", main_part_name);
assert(pi <= MAX_PARTITIONS);
if (pi > MAX_PARTITIONS)
return FALSE;
// Compute the offsets of the extra partitions (which we always align to a track)
last_offset = SelectedDrive.DiskSize;
if (partition_style == PARTITION_STYLE_GPT)
last_offset -= 33ULL * SelectedDrive.SectorSize;
for (i = pi - 1; i > mi; i--) {
assert(SelectedDrive.Partition[i].Size < last_offset);
SelectedDrive.Partition[i].Offset = LO_ALIGN_X_TO_Y(last_offset - SelectedDrive.Partition[i].Size, bytes_per_track);
last_offset = SelectedDrive.Partition[i].Offset;
}
// With the above, Compute the main partition size (which we align to a track)
assert(last_offset > SelectedDrive.Partition[mi].Offset);
SelectedDrive.Partition[mi].Size = LO_ALIGN_X_TO_Y(last_offset - SelectedDrive.Partition[mi].Offset, bytes_per_track);
// Try to make sure that the main partition size is a multiple of the cluster size
// This can be especially important when trying to capture an NTFS partition as FFU, as, when
// the NTFS partition is aligned to cluster size, the FFU capture parses the NTFS allocated
// map to only record clusters that are in use, whereas, if not aligned, the FFU capture uses
// a full sector by sector scan of the NTFS partition and records any non-zero garbage, which
// may include garbage leftover data from a previous reformat...
if (ClusterSize % SelectedDrive.SectorSize == 0)
SelectedDrive.Partition[mi].Size = LO_ALIGN_X_TO_Y(SelectedDrive.Partition[mi].Size, ClusterSize);
if (SelectedDrive.Partition[mi].Size <= 0) {
uprintf("Error: Invalid %S size", SelectedDrive.Partition[mi].Name);
return FALSE;
}
uprintf("● Creating %S (offset: %lld, size: %s)", main_part_name, DriveLayoutEx.PartitionEntry[pn].StartingOffset.QuadPart,
SizeToHumanReadable(main_part_size_in_sectors * SelectedDrive.SectorSize, TRUE, FALSE));
// Zero the beginning of this partition to avoid conflicting leftovers
if (!ClearPartition(hDrive, DriveLayoutEx.PartitionEntry[pn].StartingOffset, size_to_clear))
uprintf("Could not zero %S: %s", main_part_name, WindowsErrorString());
DriveLayoutEx.PartitionEntry[pn].PartitionLength.QuadPart = main_part_size_in_sectors * SelectedDrive.SectorSize;
if (partition_style == PARTITION_STYLE_MBR) {
DriveLayoutEx.PartitionEntry[pn].Mbr.BootIndicator = (boot_type != BT_NON_BOOTABLE);
switch (file_system) {
case FS_FAT16:
DriveLayoutEx.PartitionEntry[pn].Mbr.PartitionType = 0x0e; // FAT16 LBA
break;
case FS_NTFS:
case FS_EXFAT:
case FS_UDF:
case FS_REFS:
DriveLayoutEx.PartitionEntry[pn].Mbr.PartitionType = 0x07;
break;
case FS_EXT2:
case FS_EXT3:
case FS_EXT4:
DriveLayoutEx.PartitionEntry[pn].Mbr.PartitionType = 0x83;
break;
case FS_FAT32:
DriveLayoutEx.PartitionEntry[pn].Mbr.PartitionType = 0x0c; // FAT32 LBA
break;
default:
uprintf("Unsupported file system");
return FALSE;
}
} else {
if (write_as_esp)
DriveLayoutEx.PartitionEntry[pn].Gpt.PartitionType = PARTITION_GENERIC_ESP;
else if (IS_EXT(file_system))
DriveLayoutEx.PartitionEntry[pn].Gpt.PartitionType = PARTITION_LINUX_DATA;
else
DriveLayoutEx.PartitionEntry[pn].Gpt.PartitionType = PARTITION_MICROSOFT_DATA;
IGNORE_RETVAL(CoCreateGuid(&DriveLayoutEx.PartitionEntry[pn].Gpt.PartitionId));
wcsncpy(DriveLayoutEx.PartitionEntry[pn].Gpt.Name, main_part_name, ARRAYSIZE(DriveLayoutEx.PartitionEntry[pn].Gpt.Name));
}
SelectedDrive.PartitionOffset[pn] = DriveLayoutEx.PartitionEntry[pn].StartingOffset.QuadPart;
SelectedDrive.PartitionSize[pn] = DriveLayoutEx.PartitionEntry[pn].PartitionLength.QuadPart;
partition_offset[PI_MAIN] = SelectedDrive.PartitionOffset[pn];
pn++;
// Set the optional extra partition
if (extra_partitions) {
// Should end on a track boundary
DriveLayoutEx.PartitionEntry[pn].StartingOffset.QuadPart = DriveLayoutEx.PartitionEntry[pn-1].StartingOffset.QuadPart +
DriveLayoutEx.PartitionEntry[pn-1].PartitionLength.QuadPart;
DriveLayoutEx.PartitionEntry[pn].PartitionLength.QuadPart = (extra_partitions & XP_UEFI_NTFS) ? uefi_ntfs_size :
extra_part_size_in_tracks * bytes_per_track;
uprintf("● Creating %S Partition (offset: %lld, size: %s)", extra_part_name, DriveLayoutEx.PartitionEntry[pn].StartingOffset.QuadPart,
SizeToHumanReadable(DriveLayoutEx.PartitionEntry[pn].PartitionLength.QuadPart, TRUE, FALSE));
SelectedDrive.PartitionOffset[pn] = DriveLayoutEx.PartitionEntry[pn].StartingOffset.QuadPart;
SelectedDrive.PartitionSize[pn] = DriveLayoutEx.PartitionEntry[pn].PartitionLength.QuadPart;
if (extra_partitions & XP_CASPER)
partition_offset[PI_CASPER] = SelectedDrive.PartitionOffset[pn];
else if (extra_partitions & XP_ESP)
partition_offset[PI_ESP] = SelectedDrive.PartitionOffset[pn];
if (partition_style == PARTITION_STYLE_GPT) {
if (extra_partitions & XP_ESP)
DriveLayoutEx.PartitionEntry[pn].Gpt.PartitionType = PARTITION_GENERIC_ESP;
else if (extra_partitions & XP_CASPER)
DriveLayoutEx.PartitionEntry[pn].Gpt.PartitionType = PARTITION_LINUX_DATA;
else
DriveLayoutEx.PartitionEntry[pn].Gpt.PartitionType = PARTITION_MICROSOFT_DATA;
if (extra_partitions & XP_UEFI_NTFS) {
// Build the DriveLayoutEx table
for (i = 0; i < pi; i++) {
uprintf("● Creating %S%s (offset: %lld, size: %s)", SelectedDrive.Partition[i].Name,
(wcsstr(SelectedDrive.Partition[i].Name, L"Partition") == NULL) ? " Partition" : "",
SelectedDrive.Partition[i].Offset,
SizeToHumanReadable(SelectedDrive.Partition[i].Size, TRUE, FALSE));
// Zero the first sectors of the partition to avoid file system caching issues
if (!ClearPartition(hDrive, SelectedDrive.Partition[i].Offset,
(DWORD)MIN(size_to_clear, SelectedDrive.Partition[i].Size)))
uprintf("Could not zero %S: %s", SelectedDrive.Partition[i].Name, WindowsErrorString());
DriveLayoutEx.PartitionEntry[i].PartitionStyle = partition_style;
DriveLayoutEx.PartitionEntry[i].StartingOffset.QuadPart = SelectedDrive.Partition[i].Offset;
DriveLayoutEx.PartitionEntry[i].PartitionLength.QuadPart = SelectedDrive.Partition[i].Size;
DriveLayoutEx.PartitionEntry[i].PartitionNumber = i + 1;
DriveLayoutEx.PartitionEntry[i].RewritePartition = TRUE;
if (partition_style == PARTITION_STYLE_MBR) {
if (i == mi) {
DriveLayoutEx.PartitionEntry[i].Mbr.BootIndicator = (boot_type != BT_NON_BOOTABLE);
switch (file_system) {
case FS_FAT16:
DriveLayoutEx.PartitionEntry[i].Mbr.PartitionType = 0x0e; // FAT16 LBA
break;
case FS_NTFS:
case FS_EXFAT:
case FS_UDF:
case FS_REFS:
DriveLayoutEx.PartitionEntry[i].Mbr.PartitionType = 0x07;
break;
case FS_EXT2:
case FS_EXT3:
case FS_EXT4:
DriveLayoutEx.PartitionEntry[i].Mbr.PartitionType = 0x83;
break;
case FS_FAT32:
DriveLayoutEx.PartitionEntry[i].Mbr.PartitionType = 0x0c; // FAT32 LBA
break;
default:
uprintf("Unsupported file system");
return FALSE;
}
}
// May override the the type of main partition if write_as_esp is active
if ((wcscmp(SelectedDrive.Partition[i].Name, L"EFI System Partition") == 0) ||
(wcscmp(SelectedDrive.Partition[i].Name, L"UEFI:NTFS") == 0))
DriveLayoutEx.PartitionEntry[i].Mbr.PartitionType = 0xef;
else if (wcscmp(SelectedDrive.Partition[i].Name, L"Linux Persistence") == 0)
DriveLayoutEx.PartitionEntry[i].Mbr.PartitionType = 0x83;
else if (wcscmp(SelectedDrive.Partition[i].Name, L"BIOS Compatibility") == 0)
DriveLayoutEx.PartitionEntry[i].Mbr.PartitionType = RUFUS_EXTRA_PARTITION_TYPE;
} else {
assert(partition_style == PARTITION_STYLE_GPT);
if (wcscmp(SelectedDrive.Partition[i].Name, L"UEFI:NTFS") == 0) {
DriveLayoutEx.PartitionEntry[i].Gpt.PartitionType = PARTITION_GENERIC_ESP;
// Prevent a drive letter from being assigned to the UEFI:NTFS partition
DriveLayoutEx.PartitionEntry[pn].Gpt.Attributes = GPT_BASIC_DATA_ATTRIBUTE_NO_DRIVE_LETTER;
DriveLayoutEx.PartitionEntry[i].Gpt.Attributes = GPT_BASIC_DATA_ATTRIBUTE_NO_DRIVE_LETTER;
#if !defined(_DEBUG)
// Also make the partition read-only for release versions
DriveLayoutEx.PartitionEntry[pn].Gpt.Attributes += GPT_BASIC_DATA_ATTRIBUTE_READ_ONLY;
DriveLayoutEx.PartitionEntry[i].Gpt.Attributes += GPT_BASIC_DATA_ATTRIBUTE_READ_ONLY;
#endif
}
IGNORE_RETVAL(CoCreateGuid(&DriveLayoutEx.PartitionEntry[pn].Gpt.PartitionId));
wcsncpy(DriveLayoutEx.PartitionEntry[pn].Gpt.Name, (extra_partitions & XP_ESP) ? L"EFI System Partition" : extra_part_name,
ARRAYSIZE(DriveLayoutEx.PartitionEntry[pn].Gpt.Name));
} else {
if (extra_partitions & (XP_UEFI_NTFS | XP_ESP)) {
DriveLayoutEx.PartitionEntry[pn].Mbr.PartitionType = 0xef;
} else if (extra_partitions & XP_CASPER) {
DriveLayoutEx.PartitionEntry[pn].Mbr.PartitionType = 0x83;
} else if (extra_partitions & XP_COMPAT) {
DriveLayoutEx.PartitionEntry[pn].Mbr.PartitionType = RUFUS_EXTRA_PARTITION_TYPE;
// Set the one track compatibility partition to be all hidden sectors
DriveLayoutEx.PartitionEntry[pn].Mbr.HiddenSectors = SelectedDrive.SectorsPerTrack;
} else {
assert(FALSE);
}
} else if (wcscmp(SelectedDrive.Partition[i].Name, L"EFI System Partition") == 0)
DriveLayoutEx.PartitionEntry[i].Gpt.PartitionType = PARTITION_GENERIC_ESP;
else if (wcscmp(SelectedDrive.Partition[i].Name, L"Linux Persistence") == 0)
DriveLayoutEx.PartitionEntry[i].Gpt.PartitionType = PARTITION_LINUX_DATA;
else if (wcscmp(SelectedDrive.Partition[i].Name, L"Microsoft Reserved Partition") == 0)
DriveLayoutEx.PartitionEntry[i].Gpt.PartitionType = PARTITION_MICROSOFT_RESERVED;
else
DriveLayoutEx.PartitionEntry[i].Gpt.PartitionType = PARTITION_MICROSOFT_DATA;
IGNORE_RETVAL(CoCreateGuid(&DriveLayoutEx.PartitionEntry[i].Gpt.PartitionId));
wcscpy(DriveLayoutEx.PartitionEntry[i].Gpt.Name, SelectedDrive.Partition[i].Name);
}
// We need to write the UEFI:NTFS partition before we refresh the disk
if (extra_partitions & XP_UEFI_NTFS) {
uprintf("Writing %S data...", extra_part_name);
if (!SetFilePointerEx(hDrive, DriveLayoutEx.PartitionEntry[pn].StartingOffset, NULL, FILE_BEGIN)) {
uprintf("Could not set position");
return FALSE;
}
buffer = GetResource(hMainInstance, MAKEINTRESOURCEA(IDR_UEFI_NTFS), _RT_RCDATA, "uefi-ntfs.img", &bufsize, FALSE);
if (buffer == NULL) {
uprintf("Could not access source image");
return FALSE;
}
if(!WriteFileWithRetry(hDrive, buffer, bufsize, &size, WRITE_RETRIES)) {
uprintf("Write error: %s", WindowsErrorString());
return FALSE;
}
}
pn++;
}
// Initialize the remaining partition data
for (i = 0; i < pn; i++) {
DriveLayoutEx.PartitionEntry[i].PartitionNumber = i + 1;
DriveLayoutEx.PartitionEntry[i].PartitionStyle = partition_style;
DriveLayoutEx.PartitionEntry[i].RewritePartition = TRUE;
// We need to write the UEFI:NTFS partition before we refresh the disk
if (extra_partitions & XP_UEFI_NTFS) {
LARGE_INTEGER li;
uprintf("Writing UEFI:NTFS data...", SelectedDrive.Partition[partition_index[PI_UEFI_NTFS]].Name);
li.QuadPart = SelectedDrive.Partition[partition_index[PI_UEFI_NTFS]].Offset;
if (!SetFilePointerEx(hDrive, li, NULL, FILE_BEGIN)) {
uprintf(" Could not set position");
return FALSE;
}
buffer = GetResource(hMainInstance, MAKEINTRESOURCEA(IDR_UEFI_NTFS), _RT_RCDATA,
"uefi-ntfs.img", &bufsize, FALSE);
if (buffer == NULL) {
uprintf(" Could not access source image");
return FALSE;
}
if(!WriteFileWithRetry(hDrive, buffer, bufsize, NULL, WRITE_RETRIES)) {
uprintf(" Write error: %s", WindowsErrorString());
return FALSE;
}
}
switch (partition_style) {
@ -2531,7 +2495,7 @@ BOOL CreatePartition(HANDLE hDrive, int partition_style, int file_system, BOOL m
// This helps us reselect the partition scheme option that was used when creating the
// drive in Rufus. As far as I can tell, Windows doesn't care much if this signature
// isn't unique for USB drives.
CreateDisk.Mbr.Signature = mbr_uefi_marker?MBR_UEFI_MARKER:(DWORD)GetTickCount64();
CreateDisk.Mbr.Signature = mbr_uefi_marker ? MBR_UEFI_MARKER : (DWORD)GetTickCount64();
DriveLayoutEx.PartitionStyle = PARTITION_STYLE_MBR;
DriveLayoutEx.PartitionCount = 4; // Must be multiple of 4 for MBR
@ -2550,10 +2514,10 @@ BOOL CreatePartition(HANDLE hDrive, int partition_style, int file_system, BOOL m
CreateDisk.Gpt.MaxPartitionCount = MAX_PARTITIONS;
DriveLayoutEx.PartitionStyle = PARTITION_STYLE_GPT;
DriveLayoutEx.PartitionCount = pn;
DriveLayoutEx.PartitionCount = pi;
// At the very least, a GPT disk has 34 reserved sectors at the beginning and 33 at the end.
DriveLayoutEx.Type.Gpt.StartingUsableOffset.QuadPart = 34 * SelectedDrive.SectorSize;
DriveLayoutEx.Type.Gpt.UsableLength.QuadPart = SelectedDrive.DiskSize - (34+33) * SelectedDrive.SectorSize;
DriveLayoutEx.Type.Gpt.UsableLength.QuadPart = SelectedDrive.DiskSize - (34 + 33) * SelectedDrive.SectorSize;
DriveLayoutEx.Type.Gpt.MaxPartitionCount = MAX_PARTITIONS;
DriveLayoutEx.Type.Gpt.DiskId = CreateDisk.Gpt.DiskId;
break;
@ -2561,8 +2525,7 @@ BOOL CreatePartition(HANDLE hDrive, int partition_style, int file_system, BOOL m
// If you don't call IOCTL_DISK_CREATE_DISK, the IOCTL_DISK_SET_DRIVE_LAYOUT_EX call will fail
size = sizeof(CreateDisk);
r = DeviceIoControl(hDrive, IOCTL_DISK_CREATE_DISK, (BYTE*)&CreateDisk, size, NULL, 0, &size, NULL);
if (!r) {
if (!DeviceIoControl(hDrive, IOCTL_DISK_CREATE_DISK, (BYTE*)&CreateDisk, size, NULL, 0, NULL, NULL)) {
uprintf("Could not reset disk: %s", WindowsErrorString());
return FALSE;
}
@ -2570,9 +2533,11 @@ BOOL CreatePartition(HANDLE hDrive, int partition_style, int file_system, BOOL m
// "The goggles, they do nothing!"
RefreshDriveLayout(hDrive);
size = sizeof(DriveLayoutEx) - ((partition_style == PARTITION_STYLE_GPT)?((4-pn)*sizeof(PARTITION_INFORMATION_EX)):0);
r = DeviceIoControl(hDrive, IOCTL_DISK_SET_DRIVE_LAYOUT_EX, (BYTE*)&DriveLayoutEx, size, NULL, 0, &size, NULL);
if (!r) {
size = sizeof(DriveLayoutEx) - ((partition_style == PARTITION_STYLE_GPT) ?
((MAX_PARTITIONS - pi) * sizeof(PARTITION_INFORMATION_EX)) : 0);
// The DRIVE_LAYOUT_INFORMATION_EX used by Microsoft, with its 1-sized array, is designed to overrun...
// coverity[overrun-buffer-arg]
if (!DeviceIoControl(hDrive, IOCTL_DISK_SET_DRIVE_LAYOUT_EX, (BYTE*)&DriveLayoutEx, size, NULL, 0, NULL, NULL)) {
uprintf("Could not set drive layout: %s", WindowsErrorString());
return FALSE;
}
@ -2586,10 +2551,9 @@ BOOL CreatePartition(HANDLE hDrive, int partition_style, int file_system, BOOL m
BOOL RefreshDriveLayout(HANDLE hDrive)
{
BOOL r;
DWORD size;
// Diskpart does call the following IOCTL this after updating the partition table, so we do too
r = DeviceIoControl(hDrive, IOCTL_DISK_UPDATE_PROPERTIES, NULL, 0, NULL, 0, &size, NULL );
r = DeviceIoControl(hDrive, IOCTL_DISK_UPDATE_PROPERTIES, NULL, 0, NULL, 0, NULL, NULL);
if (!r)
uprintf("Could not refresh drive layout: %s", WindowsErrorString());
return r;
@ -2599,20 +2563,17 @@ BOOL RefreshDriveLayout(HANDLE hDrive)
BOOL InitializeDisk(HANDLE hDrive)
{
BOOL r;
DWORD size;
CREATE_DISK CreateDisk = {PARTITION_STYLE_RAW, {{0}}};
uprintf("Initializing disk...");
size = sizeof(CreateDisk);
r = DeviceIoControl(hDrive, IOCTL_DISK_CREATE_DISK,
(BYTE*)&CreateDisk, size, NULL, 0, &size, NULL );
r = DeviceIoControl(hDrive, IOCTL_DISK_CREATE_DISK, (BYTE*)&CreateDisk, sizeof(CreateDisk), NULL, 0, NULL, NULL);
if (!r) {
uprintf("Could not delete drive layout: %s", WindowsErrorString());
return FALSE;
}
r = DeviceIoControl(hDrive, IOCTL_DISK_UPDATE_PROPERTIES, NULL, 0, NULL, 0, &size, NULL );
r = DeviceIoControl(hDrive, IOCTL_DISK_UPDATE_PROPERTIES, NULL, 0, NULL, 0, NULL, NULL);
if (!r) {
uprintf("Could not refresh drive layout: %s", WindowsErrorString());
return FALSE;
@ -2635,5 +2596,43 @@ const char* GetGPTPartitionType(const GUID* guid)
{
int i;
for (i = 0; (i < ARRAYSIZE(gpt_type)) && !CompareGUID(guid, gpt_type[i].guid); i++);
return (i < ARRAYSIZE(gpt_type)) ? gpt_type[i].name : GuidToString(guid);
return (i < ARRAYSIZE(gpt_type)) ? gpt_type[i].name : GuidToString(guid, TRUE);
}
/*
* Detect Microsoft Dev Drives, which are VHDs consisting of a small MSR followed by a large
* (50 GB or more) ReFS partition. See https://learn.microsoft.com/en-us/windows/dev-drive/.
* NB: Despite the option being proposed, I have *NOT* been able to create MBR-based Dev Drives.
*/
BOOL IsMsDevDrive(DWORD DriveIndex)
{
BOOL r, ret = FALSE;
DWORD size = 0;
HANDLE hPhysical = INVALID_HANDLE_VALUE;
BYTE layout[4096] = { 0 };
PDRIVE_LAYOUT_INFORMATION_EX DriveLayout = (PDRIVE_LAYOUT_INFORMATION_EX)(void*)layout;
hPhysical = GetPhysicalHandle(DriveIndex, FALSE, FALSE, TRUE);
if (hPhysical == INVALID_HANDLE_VALUE)
goto out;
r = DeviceIoControl(hPhysical, IOCTL_DISK_GET_DRIVE_LAYOUT_EX, NULL, 0, layout, sizeof(layout), &size, NULL);
if (!r || size <= 0)
goto out;
if (DriveLayout->PartitionStyle != PARTITION_STYLE_GPT)
goto out;
if (DriveLayout->PartitionCount != 2)
goto out;
if (!CompareGUID(&DriveLayout->PartitionEntry[0].Gpt.PartitionType, &PARTITION_MICROSOFT_RESERVED))
goto out;
if (!CompareGUID(&DriveLayout->PartitionEntry[1].Gpt.PartitionType, &PARTITION_MICROSOFT_DATA))
goto out;
if (DriveLayout->PartitionEntry[1].PartitionLength.QuadPart < 20 * GB)
goto out;
ret = (strcmp(GetFsName(hPhysical, DriveLayout->PartitionEntry[1].StartingOffset), "ReFS") == 0);
out:
safe_closehandle(hPhysical);
return ret;
}

View File

@ -1,7 +1,7 @@
/*
* Rufus: The Reliable USB Formatting Utility
* Drive access function calls
* Copyright © 2011-2022 Pete Batard <pete@akeo.ie>
* Copyright © 2011-2024 Pete Batard <pete@akeo.ie>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -36,12 +36,13 @@
#define XP_ESP 0x02
#define XP_UEFI_NTFS 0x04
#define XP_COMPAT 0x08
#define XP_CASPER 0x10
#define XP_PERSISTENCE 0x10
#define PI_MAIN 0
#define PI_ESP 1
#define PI_CASPER 2
#define PI_MAX 3
#define PI_UEFI_NTFS 3
#define PI_MAX 4
// The following should match VDS_FSOF_FLAGS as much as possible
#define FP_FORCE 0x00000001
@ -57,7 +58,7 @@
#define VDS_RESCAN_REFRESH 0x00000001
#define VDS_RESCAN_REENUMERATE 0x00000002
#define VDS_SET_ERROR(hr) do { if (hr != S_OK) { SetLastError(hr); FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_GEN_FAILURE; } } while(0)
#define VDS_SET_ERROR(hr) do { if (hr != S_OK) { SetLastError((DWORD)hr); ErrorStatus = RUFUS_ERROR(ERROR_GEN_FAILURE); } } while(0)
#if !defined(__MINGW32__)
typedef enum _FSINFOCLASS {
@ -347,8 +348,7 @@ typedef struct _DRIVE_LAYOUT_INFORMATION_EX4 {
} DRIVE_LAYOUT_INFORMATION_EX4, *PDRIVE_LAYOUT_INFORMATION_EX4;
static __inline BOOL UnlockDrive(HANDLE hDrive) {
DWORD size;
return DeviceIoControl(hDrive, FSCTL_UNLOCK_VOLUME, NULL, 0, NULL, 0, &size, NULL);
return DeviceIoControl(hDrive, FSCTL_UNLOCK_VOLUME, NULL, 0, NULL, 0, NULL, NULL);
}
#define safe_unlockclose(h) do {if ((h != INVALID_HANDLE_VALUE) && (h != NULL)) {UnlockDrive(h); CloseHandle(h); h = INVALID_HANDLE_VALUE;}} while(0)
@ -362,8 +362,11 @@ typedef struct {
MEDIA_TYPE MediaType;
int PartitionStyle;
int nPartitions; // number of partitions we actually care about
uint64_t PartitionOffset[MAX_PARTITIONS];
uint64_t PartitionSize[MAX_PARTITIONS];
struct {
wchar_t Name[36];
uint64_t Offset;
uint64_t Size;
} Partition[MAX_PARTITIONS];
int FSType;
char proposed_label[16];
BOOL has_protective_mbr;
@ -374,7 +377,7 @@ typedef struct {
} ClusterSize[FS_MAX];
} RUFUS_DRIVE_INFO;
extern RUFUS_DRIVE_INFO SelectedDrive;
extern uint64_t partition_offset[PI_MAX];
extern int partition_index[PI_MAX];
BOOL SetAutoMount(BOOL enable);
BOOL GetAutoMount(BOOL* enabled);
@ -396,7 +399,7 @@ UINT GetDriveTypeFromIndex(DWORD DriveIndex);
char GetUnusedDriveLetter(void);
BOOL IsDriveLetterInUse(const char drive_letter);
char RemoveDriveLetters(DWORD DriveIndex, BOOL bUseLast, BOOL bSilent);
BOOL GetDriveLabel(DWORD DriveIndex, char* letter, char** label);
BOOL GetDriveLabel(DWORD DriveIndex, char* letters, char** label, BOOL bSilent);
uint64_t GetDriveSize(DWORD DriveIndex);
BOOL IsMediaPresent(DWORD DriveIndex);
BOOL AnalyzeMBR(HANDLE hPhysicalDrive, const char* TargetName, BOOL bSilent);
@ -421,3 +424,4 @@ BOOL RefreshLayout(DWORD DriveIndex);
BOOL GetOpticalMedia(IMG_SAVE* img_save);
uint64_t GetEspOffset(DWORD DriveIndex);
BOOL ToggleEsp(DWORD DriveIndex, uint64_t PartitionOffset);
BOOL IsMsDevDrive(DWORD DriveIndex);

View File

@ -5,7 +5,7 @@
*
* Copyright (C) 1993, 1994, 1995 Theodore Ts'o.
* Copyright (C) 1998 Andrey Shedel <andreys@ns.cr.cyco.com>
* Copyright (C) 2018-2019 Pete Batard <pete@akeo.ie>
* Copyright (C) 2018-2024 Pete Batard <pete@akeo.ie>
*
* %Begin-Header%
* This file may be redistributed under the terms of the GNU Library
@ -180,7 +180,7 @@ static __inline unsigned _MapNtStatus(IN NTSTATUS Status)
// Return the last Windows Error
DWORD ext2_last_winerror(DWORD default_error)
{
return ERROR_SEVERITY_ERROR | FAC(FACILITY_STORAGE) | (LastWinError ? LastWinError : default_error);
return RUFUS_ERROR(LastWinError ? LastWinError : default_error);
}
//

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
/*
* Rufus: The Reliable USB Formatting Utility
* Formatting function calls
* Copyright © 2011-2020 Pete Batard <pete@akeo.ie>
* Copyright © 2011-2023 Pete Batard <pete@akeo.ie>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -111,6 +111,10 @@ typedef BOOLEAN (WINAPI* EnableVolumeCompression_t)(
ULONG CompressionFlags // FILE_SYSTEM_PROP_FLAG
);
#define IMG_COMPRESSION_FFU (BLED_COMPRESSION_MAX)
#define IMG_COMPRESSION_VHD (BLED_COMPRESSION_MAX + 1)
#define IMG_COMPRESSION_VHDX (BLED_COMPRESSION_MAX + 2)
BOOL WritePBR(HANDLE hLogicalDrive);
BOOL FormatLargeFAT32(DWORD DriveIndex, uint64_t PartitionOffset, DWORD ClusterSize, LPCSTR FSName, LPCSTR Label, DWORD Flags);
BOOL FormatExtFs(DWORD DriveIndex, uint64_t PartitionOffset, DWORD BlockSize, LPCSTR FSName, LPCSTR Label, DWORD Flags);

View File

@ -1,7 +1,7 @@
/*
* Rufus: The Reliable USB Formatting Utility
* extfs formatting
* Copyright © 2019-2021 Pete Batard <pete@akeo.ie>
* Copyright © 2019-2024 Pete Batard <pete@akeo.ie>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -178,7 +178,7 @@ const char* error_message(errcode_t error_code)
if ((error_code > EXT2_ET_BASE) && error_code < (EXT2_ET_BASE + 1000)) {
static_sprintf(error_string, "Unknown ext2fs error %ld (EXT2_ET_BASE + %ld)", error_code, error_code - EXT2_ET_BASE);
} else {
SetLastError((FormatStatus == 0) ? (ERROR_SEVERITY_ERROR | FAC(FACILITY_STORAGE) | (error_code & 0xFFFF)) : FormatStatus);
SetLastError((ErrorStatus == 0) ? RUFUS_ERROR(error_code & 0xFFFF) : ErrorStatus);
static_sprintf(error_string, "%s", WindowsErrorString());
}
return error_string;
@ -196,7 +196,7 @@ errcode_t ext2fs_print_progress(int64_t cur_value, int64_t max_value)
last_value = cur_value;
uprintfs("+");
}
return IS_ERROR(FormatStatus) ? EXT2_ET_CANCEL_REQUESTED : 0;
return IS_ERROR(ErrorStatus) ? EXT2_ET_CANCEL_REQUESTED : 0;
}
const char* GetExtFsLabel(DWORD DriveIndex, uint64_t PartitionOffset)
@ -223,7 +223,7 @@ const char* GetExtFsLabel(DWORD DriveIndex, uint64_t PartitionOffset)
#define TEST_IMG_PATH "\\??\\C:\\tmp\\disk.img"
#define TEST_IMG_SIZE 4000 // Size in MB
#define SET_EXT2_FORMAT_ERROR(x) if (!IS_ERROR(FormatStatus)) FormatStatus = ext2_last_winerror(x)
#define SET_EXT2_FORMAT_ERROR(x) if (!IS_ERROR(ErrorStatus)) ErrorStatus = ext2_last_winerror(x)
BOOL FormatExtFs(DWORD DriveIndex, uint64_t PartitionOffset, DWORD BlockSize, LPCSTR FSName, LPCSTR Label, DWORD Flags)
{
@ -273,7 +273,7 @@ BOOL FormatExtFs(DWORD DriveIndex, uint64_t PartitionOffset, DWORD BlockSize, LP
volume_name = GetExtPartitionName(DriveIndex, PartitionOffset);
#endif
if ((volume_name == NULL) | (strlen(FSName) != 4) || (strncmp(FSName, "ext", 3) != 0)) {
FormatStatus = ERROR_SEVERITY_ERROR | FAC(FACILITY_STORAGE) | ERROR_INVALID_PARAMETER;
ErrorStatus = RUFUS_ERROR(ERROR_INVALID_PARAMETER);
goto out;
}
if (strchr(volume_name, ' ') != NULL)
@ -491,7 +491,10 @@ BOOL FormatExtFs(DWORD DriveIndex, uint64_t PartitionOffset, DWORD BlockSize, LP
// Finally we can call close() to get the file system gets created
r = ext2fs_close(ext2fs);
if (r != 0) {
if (r == 0) {
// Make sure ext2fs isn't freed twice
ext2fs = NULL;
} else {
SET_EXT2_FORMAT_ERROR(ERROR_WRITE_FAULT);
uprintf("Could not create %s volume: %s", FSName, error_message(r));
goto out;

View File

@ -2,7 +2,7 @@
* Rufus: The Reliable USB Formatting Utility
* Large FAT32 formatting
* Copyright © 2007-2009 Tom Thornhill/Ridgecrop
* Copyright © 2011-2022 Pete Batard <pete@akeo.ie>
* Copyright © 2011-2024 Pete Batard <pete@akeo.ie>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -38,9 +38,7 @@
#include "msapi_utf8.h"
#include "localization.h"
#define die(msg, err) do { uprintf(msg); \
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|err; \
goto out; } while(0)
#define die(msg, err) do { uprintf(msg); ErrorStatus = RUFUS_ERROR(err); goto out; } while(0)
extern BOOL write_as_esp;
@ -175,6 +173,7 @@ BOOL FormatLargeFAT32(DWORD DriveIndex, uint64_t PartitionOffset, DWORD ClusterS
DWORD BytesPerSect = 0;
DWORD SectorsPerCluster = 0;
DWORD TotalSectors = 0;
DWORD AlignSectors = 0;
DWORD SystemAreaSize = 0;
DWORD UserAreaSize = 0;
ULONGLONG qTotalSectors = 0;
@ -190,7 +189,7 @@ BOOL FormatLargeFAT32(DWORD DriveIndex, uint64_t PartitionOffset, DWORD ClusterS
ULONGLONG FatNeeded, ClusterCount;
if (safe_strncmp(FSName, "FAT", 3) != 0) {
FormatStatus = ERROR_SEVERITY_ERROR | FAC(FACILITY_STORAGE) | ERROR_INVALID_PARAMETER;
ErrorStatus = RUFUS_ERROR(ERROR_INVALID_PARAMETER);
goto out;
}
PrintInfoDebug(0, MSG_222, "Large FAT32");
@ -201,7 +200,7 @@ BOOL FormatLargeFAT32(DWORD DriveIndex, uint64_t PartitionOffset, DWORD ClusterS
hLogicalVolume = write_as_esp ?
AltGetLogicalHandle(DriveIndex, PartitionOffset, TRUE, TRUE, FALSE) :
GetLogicalHandle(DriveIndex, PartitionOffset, TRUE, TRUE, FALSE);
if (IS_ERROR(FormatStatus))
if (IS_ERROR(ErrorStatus))
goto out;
if ((hLogicalVolume == INVALID_HANDLE_VALUE) || (hLogicalVolume == NULL))
die("Invalid logical volume handle", ERROR_INVALID_HANDLE);
@ -221,7 +220,7 @@ BOOL FormatLargeFAT32(DWORD DriveIndex, uint64_t PartitionOffset, DWORD ClusterS
}
if (dgDrive.BytesPerSector < 512)
dgDrive.BytesPerSector = 512;
if (IS_ERROR(FormatStatus)) goto out;
if (IS_ERROR(ErrorStatus)) goto out;
if (!DeviceIoControl (hLogicalVolume, IOCTL_DISK_GET_PARTITION_INFO, NULL, 0, &piDrive,
sizeof(piDrive), &cbRet, NULL)) {
if (!DeviceIoControl (hLogicalVolume, IOCTL_DISK_GET_PARTITION_INFO_EX, NULL, 0, &xpiDrive,
@ -235,7 +234,7 @@ BOOL FormatLargeFAT32(DWORD DriveIndex, uint64_t PartitionOffset, DWORD ClusterS
piDrive.PartitionLength.QuadPart = xpiDrive.PartitionLength.QuadPart;
piDrive.HiddenSectors = (DWORD)(xpiDrive.StartingOffset.QuadPart / dgDrive.BytesPerSector);
}
if (IS_ERROR(FormatStatus)) goto out;
if (IS_ERROR(ErrorStatus)) goto out;
BytesPerSect = dgDrive.BytesPerSector;
@ -295,7 +294,6 @@ BOOL FormatLargeFAT32(DWORD DriveIndex, uint64_t PartitionOffset, DWORD ClusterS
SectorsPerCluster = ClusterSize / BytesPerSect;
pFAT32BootSect->bSecPerClus = (BYTE)SectorsPerCluster;
pFAT32BootSect->wRsvdSecCnt = (WORD)ReservedSectCount;
pFAT32BootSect->bNumFATs = (BYTE)NumFATs;
pFAT32BootSect->wRootEntCnt = 0;
pFAT32BootSect->wTotSec16 = 0;
@ -310,6 +308,13 @@ BOOL FormatLargeFAT32(DWORD DriveIndex, uint64_t PartitionOffset, DWORD ClusterS
FatSize = GetFATSizeSectors(pFAT32BootSect->dTotSec32, pFAT32BootSect->wRsvdSecCnt,
pFAT32BootSect->bSecPerClus, pFAT32BootSect->bNumFATs, BytesPerSect);
// Update reserved sector count so that the start of data region is aligned to a MB boundary
SystemAreaSize = ReservedSectCount + NumFATs * FatSize;
AlignSectors = (1 * MB) / BytesPerSect;
SystemAreaSize = (SystemAreaSize + AlignSectors - 1) / AlignSectors * AlignSectors;
ReservedSectCount = SystemAreaSize - NumFATs * FatSize;
pFAT32BootSect->wRsvdSecCnt = (WORD)ReservedSectCount;
pFAT32BootSect->dFATSz32 = FatSize;
pFAT32BootSect->wExtFlags = 0;
pFAT32BootSect->wFSVer = 0;

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
/*
* Rufus: The Reliable USB Formatting Utility
* Extract icon from executable and set autorun.inf
* Copyright © 2012-2021 Pete Batard <pete@akeo.ie>
* Copyright © 2012-2024 Pete Batard <pete@akeo.ie>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -95,12 +95,15 @@ BOOL ExtractAppIcon(const char* path, BOOL bSilent)
HRSRC res;
WORD i;
BYTE* res_data;
DWORD res_size, Size, offset;
DWORD res_size, offset;
HANDLE hFile = INVALID_HANDLE_VALUE;
BOOL r = FALSE;
GRPICONDIR* icondir;
icondir = (GRPICONDIR*)GetResource(hMainInstance, MAKEINTRESOURCEA(IDI_ICON), _RT_GROUP_ICON, "icon", &res_size, FALSE);
assert(icondir != NULL && icondir->idCount <= 64);
if (icondir == NULL || icondir->idCount > 64)
goto out;
hFile = CreateFileU(path, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
@ -110,34 +113,34 @@ BOOL ExtractAppIcon(const char* path, BOOL bSilent)
}
// Write .ico header
if (!WriteFileWithRetry(hFile, icondir, 3*sizeof(WORD), &Size, WRITE_RETRIES)) {
if (!WriteFileWithRetry(hFile, icondir, 3 * sizeof(WORD), NULL, WRITE_RETRIES)) {
uprintf("Could not write icon header: %s.", WindowsErrorString());
goto out;
}
// Write icon data
offset = 3*sizeof(WORD) + icondir->idCount*sizeof(ICONDIRENTRY);
for (i=0; i<icondir->idCount; i++) {
offset = 3 * sizeof(WORD) + icondir->idCount * sizeof(ICONDIRENTRY);
for (i = 0; i < icondir->idCount; i++) {
// Write the common part of ICONDIRENTRY
if (!WriteFileWithRetry(hFile, &icondir->idEntries[i], sizeof(GRPICONDIRENTRY)-sizeof(WORD), &Size, WRITE_RETRIES)) {
if (!WriteFileWithRetry(hFile, &icondir->idEntries[i], sizeof(GRPICONDIRENTRY)-sizeof(WORD), NULL, WRITE_RETRIES)) {
uprintf("Could not write ICONDIRENTRY[%d]: %s.", i, WindowsErrorString());
goto out;
}
res = FindResourceA(hMainInstance, MAKEINTRESOURCEA(icondir->idEntries[i].nID), _RT_ICON);
// Write the DWORD offset
if (!WriteFileWithRetry(hFile, &offset, sizeof(offset), &Size, WRITE_RETRIES)) {
if (!WriteFileWithRetry(hFile, &offset, sizeof(offset), NULL, WRITE_RETRIES)) {
uprintf("Could not write ICONDIRENTRY[%d] offset: %s.", i, WindowsErrorString());
goto out;
}
offset += SizeofResource(NULL, res);
}
for (i=0; i<icondir->idCount; i++) {
for (i = 0; i < icondir->idCount; i++) {
// Write icon data
res = FindResourceA(hMainInstance, MAKEINTRESOURCEA(icondir->idEntries[i].nID), _RT_ICON);
res_handle = LoadResource(NULL, res);
res_data = (BYTE*)LockResource(res_handle);
res_size = SizeofResource(NULL, res);
if (!WriteFileWithRetry(hFile, res_data, res_size, &Size, WRITE_RETRIES)) {
if (!WriteFileWithRetry(hFile, res_data, res_size, NULL, WRITE_RETRIES)) {
uprintf("Could not write icon data #%d: %s.", i, WindowsErrorString());
goto out;
}

845
src/iso.c

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
/*
Copyright (C) 2003-2008, 2012-2013, 2017
Copyright (C) 2003-2008, 2012-2013, 2017, 2023-2024
Rocky Bernstein <rocky@gnu.org>
Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org>
@ -27,7 +27,7 @@
* filesystem library; applications include this.
*
* See also the ISO-9660 specification. The freely available European
* equivalant standard is called ECMA-119.
* equivalent standard is called ECMA-119.
*/
@ -78,7 +78,7 @@ typedef char dchar_t; /*! See section 7.4.1 */
program; things are done this way so that in a debugger one can to
refer to the enumeration value names such as in a debugger
expression and get something. With the more common a \#define
mechanism, the name/value assocation is lost at run time.
mechanism, the name/value association is lost at run time.
*/
extern enum iso_enum1_s {
ISO_PVD_SECTOR = 16, /**< Sector of Primary Volume Descriptor. */
@ -93,8 +93,9 @@ extern enum iso_enum1_s {
preparer id. */
MAX_ISOPATHNAME = 255, /**< Maximum number of characters in the
entire ISO 9660 filename. */
ISO_BLOCKSIZE = 2048 /**< Number of bytes in an ISO 9660 block. */
ISO_BLOCKSIZE = 2048, /**< Number of bytes in an ISO 9660 block. */
VIRTUAL_SECTORSIZE = 512 /**< Number of bytes in an El Torito virtual
image sector */
} iso_enums1;
/*! An enumeration for some of the ISO_* \#defines below. This isn't
@ -162,6 +163,7 @@ extern enum iso_vd_enum_s {
extern const char ISO_STANDARD_ID[sizeof("CD001")-1];
#define ISO_STANDARD_ID "CD001"
#define EL_TORITO_ID "EL TORITO SPECIFICATION\0\0\0\0\0\0\0\0\0"
#define CDIO_EXTENT_BLOCKS(size) ((size + (ISO_BLOCKSIZE - 1)) / ISO_BLOCKSIZE)
@ -395,7 +397,7 @@ typedef struct iso9660_pvd_s iso9660_pvd_t;
/*!
\brief ISO-9660 Supplementary Volume Descriptor.
This is used for Joliet Extentions and is almost the same as the
This is used for Joliet Extensions and is almost the same as the
the primary descriptor but two unused fields, "unused1" and "unused3
become "flags and "escape_sequences" respectively.
*/
@ -506,6 +508,37 @@ struct iso9660_svd_s {
typedef struct iso9660_svd_s iso9660_svd_t;
/*!
\brief ISO-9660 Boot Record Volume Descriptor.
*/
struct iso9660_brvd_s {
uint8_t type; /**< ISO_VD_BOOT_RECORD - 0 */
char id[5]; /**< ISO_STANDARD_ID "CD001" */
uint8_t version; /**< value 1 for El Torito */
char system_id[ISO_MAX_SYSTEM_ID]; /**< Boot system ID */
uint8_t unused1[32]; /**< unused - value 0 */
uint32_t boot_catalog_sector; /**< first sector of boot catalog */
uint8_t unused2[1973]; /**< Unused - value 0 */
} GNUC_PACKED;
typedef struct iso9660_brvd_s iso9660_brvd_t;
/*!
\brief ISO-9660 Boot Record Volume Descriptor.
*/
struct iso9660_br_s {
uint8_t boot_id; /**< Boot indicator - 0x88 */
uint8_t media_type; /**< Boot media type - 0 for no emul. */
uint16_t load_seg; /**< Load segment for x86 */
uint8_t system_type; /**< System type - 0 for x86 */
uint8_t unused1;
uint16_t num_sectors; /**< Virtual sectors count of the image */
uint32_t image_lsn; /**< Start address of the image */
uint8_t unused2[20];
} GNUC_PACKED;
typedef struct iso9660_br_s iso9660_br_t;
PRAGMA_END_PACKED
/*! \brief A data type for a list of ISO9660
@ -550,7 +583,7 @@ struct iso9660_stat_s { /* big endian!! */
/* Multi-extent aware size, in bytes.
It is guaranteed that the bytes are stored as gapless string in a
continguous sequence of blocks. I.e. they can be read sequentially
contiguous sequence of blocks. I.e. they can be read sequentially
starting at iso9660_stat_s.lsn.
Data files which do not fulfil this promise cause a warning message
and are not represented by this type of struct.
@ -582,7 +615,8 @@ extern enum iso_extension_enum_s {
ISO_EXTENSION_JOLIET_LEVEL2 = 0x02,
ISO_EXTENSION_JOLIET_LEVEL3 = 0x04,
ISO_EXTENSION_ROCK_RIDGE = 0x08,
ISO_EXTENSION_HIGH_SIERRA = 0x10
ISO_EXTENSION_HIGH_SIERRA = 0x10,
ISO_EXTENSION_EL_TORITO = 0x20
} iso_extension_enums;
@ -638,7 +672,7 @@ typedef struct _iso9660_s iso9660_t;
contained in a file format that libiso9660 doesn't know natively
(or knows imperfectly.)
Some tolerence allowed for positioning the ISO 9660 image. We scan
Some tolerance allowed for positioning the ISO 9660 image. We scan
for STANDARD_ID and use that to set the eventual offset to adjust
by (as long as that is <= i_fuzz).
@ -650,7 +684,7 @@ typedef struct _iso9660_s iso9660_t;
uint16_t i_fuzz);
/*!
Open an ISO 9660 image for reading with some tolerence for positioning
Open an ISO 9660 image for reading with some tolerance for positioning
of the ISO9660 image. We scan for ISO_STANDARD_ID and use that to set
the eventual offset to adjust by (as long as that is <= i_fuzz).
@ -766,7 +800,7 @@ typedef struct _iso9660_s iso9660_t;
tm will reported in GMT.
*/
bool iso9660_get_dtime (const iso9660_dtime_t *idr_date, bool b_localtime,
/*out*/ struct tm *tm);
/*out*/ struct tm *p_tm);
/*!
@ -857,7 +891,7 @@ typedef struct _iso9660_s iso9660_t;
/*!
Take psz_path and a version number and turn that into a ISO-9660
pathname. (That's just the pathname followd by ";" and the version
pathname. (That's just the pathname followed by ";" and the version
number. For example, mydir/file.ext -> MYDIR/FILE.EXT;1 for version
1. The resulting ISO-9660 pathname is returned.
*/
@ -1202,7 +1236,7 @@ lsn_t iso9660_get_dir_extent(const iso9660_dir_t *p_idr);
@param p_iso the ISO-9660 file image to get data from
@param u_file_limit the maximimum number of (non-rock-ridge) files
@param u_file_limit the maximum number of (non-rock-ridge) files
to consider before giving up and returning "dunno".
"dunno" can also be returned if there was some error encountered
@ -1278,7 +1312,7 @@ lsn_t iso9660_get_dir_extent(const iso9660_dir_t *p_idr);
void iso9660_set_evd (void *pd);
/*!
Return true if ISO 9660 image has extended attrributes (XA).
Return true if ISO 9660 image has extended attributes (XA).
*/
bool iso9660_ifs_is_xa (const iso9660_t * p_iso);

View File

@ -105,6 +105,12 @@ _cdio_memdup (const void *mem, size_t count);
char *
_cdio_strdup_upper (const char str[]);
int
_cdio_stricmp(const char str1[], const char str2[]);
int
_cdio_strnicmp(const char str1[], const char str2[], size_t count);
/*! Duplicate path and make it platform compliant. Typically needed for
MinGW/MSYS where a "/c/..." path must be translated to "c:/..." for
use with fopen(), etc. Returned string must be freed by the caller

View File

@ -142,6 +142,35 @@ _cdio_strdup_upper (const char str[])
return new_str;
}
int
_cdio_stricmp (const char str1[], const char str2[])
{
if (str1 && str2) {
int c1, c2;
do {
c1 = tolower((unsigned char)*str1++);
c2 = tolower((unsigned char)*str2++);
} while (c1 == c2 && c1 != '\0');
return c1 - c2;
} else return (str1 != str2);
}
int
_cdio_strnicmp(const char str1[], const char str2[], size_t count)
{
if (str1 && str2) {
int c1 = 0, c2 = 0;
size_t i;
for (i = 0; i < count; i++) {
c1 = tolower((unsigned char)*str1++);
c2 = tolower((unsigned char)*str2++);
if (c1 != c2 || c1 == '\0')
break;
}
return c1 - c2;
} else return (str1 != str2);
}
/* Convert MinGW/MSYS paths that start in "/c/..." to "c:/..."
so that they can be used with fopen(), stat(), etc.
Returned string must be freed by the caller using cdio_free().*/

View File

@ -1,6 +1,7 @@
/*
Copyright (C) 2003-2008, 2011-2015, 2017 Rocky Bernstein <rocky@gnu.org>
Copyright (C) 2018, 2020 Pete Batard <pete@akeo.ie>
Copyright (C) 2003-2008, 2011-2015, 2017, 2024
Rocky Bernstein <rocky@gnu.org>
Copyright (C) 2018, 2020, 2024 Pete Batard <pete@akeo.ie>
Copyright (C) 2018 Thomas Schmitt <scdbackup@gmx.net>
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
@ -59,6 +60,9 @@
#include "_cdio_stdio.h"
#include "cdio_private.h"
/* Maximum number of El-Torito boot images we keep an index for */
#define MAX_BOOT_IMAGES 8
/** Implementation of iso9660_t type */
struct _iso9660_s {
cdio_header_t header; /**< Internal header - MUST come first. */
@ -83,6 +87,11 @@ struct _iso9660_s {
be CDIO_CD_FRAMESIZE_RAW (2352) or
M2RAW_SECTOR_SIZE (2336).
*/
struct {
uint32_t lsn; /**< Start LSN of an El-Torito bootable image */
uint32_t num_sectors; /**< Number of virtual sectors occupied by the
bootable image */
} boot_img[MAX_BOOT_IMAGES];
int i_fuzzy_offset; /**< Adjustment in bytes to make ISO_STANDARD_ID
("CD001") come out as ISO_PVD_SECTOR
(frame 16). Normally this should be 0
@ -505,7 +514,8 @@ iso9660_ifs_read_superblock (iso9660_t *p_iso,
iso_extension_mask_t iso_extension_mask)
{
iso9660_svd_t p_svd; /* Secondary volume descriptor. */
int i;
iso9660_brvd_t* p_brvd = (iso9660_brvd_t*)&p_svd; /* Boot record volume descriptor. */
int i, j, k;
if (!p_iso || !iso9660_ifs_read_pvd(p_iso, &(p_iso->pvd)))
return false;
@ -516,6 +526,50 @@ iso9660_ifs_read_superblock (iso9660_t *p_iso,
for (i=1; (0 != iso9660_iso_seek_read (p_iso, &p_svd, ISO_PVD_SECTOR+i, 1)); i++) {
if (ISO_VD_END == from_711(p_svd.type) ) /* Last SVD */
break;
if (iso_extension_mask & ISO_EXTENSION_EL_TORITO) {
/* Check for an El-Torito boot volume descriptor */
if (ISO_VD_BOOT_RECORD == from_711(p_svd.type) &&
(memcmp(p_brvd->system_id, EL_TORITO_ID, ISO_MAX_SYSTEM_ID) == 0)) {
/* Perform basic parsing of boot entries to fill an image table */
iso9660_br_t br[ISO_BLOCKSIZE / sizeof(iso9660_br_t)];
if (iso9660_iso_seek_read(p_iso, &br, p_brvd->boot_catalog_sector, 1) ==
ISO_BLOCKSIZE) {
for (j = 0, k = 0;
j < (ISO_BLOCKSIZE / sizeof(iso9660_br_t)) && k < MAX_BOOT_IMAGES;
j++) {
if (br[j].boot_id == 0x88 && br[j].media_type == 0) {
p_iso->boot_img[k].lsn = uint32_from_le(br[j].image_lsn);
p_iso->boot_img[k++].num_sectors = uint16_from_le(br[j].num_sectors);
}
}
/* Special case for non specs-compliant images that do follow the UEFI */
/* specs and that use size 0 or 1 for images larger than 0xffff virtual */
/* sectors, in which case the image runs to the end of the volume (per */
/* UEFI specs) or to the next LSN (as seen with some software). */
cdio_assert(ISO_BLOCKSIZE / VIRTUAL_SECTORSIZE == 4);
for (j = 0; j < MAX_BOOT_IMAGES; j++) {
uint32_t next_lsn = from_733(p_iso->pvd.volume_space_size);
if (p_iso->boot_img[j].lsn == 0)
continue;
/* Find the closest LSN after the one from this image */
cdio_assert(p_iso->boot_img[j].lsn <= next_lsn);
for (k = 0; k < MAX_BOOT_IMAGES; k++) {
if (p_iso->boot_img[k].lsn > p_iso->boot_img[j].lsn &&
p_iso->boot_img[k].lsn < next_lsn)
next_lsn = p_iso->boot_img[k].lsn;
}
/* If the image has a sector size of 0 or 1 and theres' more than */
/* 0xffff sectors to the next LSN, assume it needs expansion. */
if (p_iso->boot_img[j].num_sectors <= 1 &&
(next_lsn - p_iso->boot_img[j].lsn) >= 0x4000) {
p_iso->boot_img[j].num_sectors =
(next_lsn - p_iso->boot_img[j].lsn) * 4;
cdio_warn("Auto-expanding the size of %d-Boot-NoEmul.img", j);
}
}
}
}
}
if ( ISO_VD_SUPPLEMENTARY == from_711(p_svd.type) ) {
/* We're only interested in Joliet => make sure the SVD isn't overwritten */
if (p_iso->u_joliet_level == 0)
@ -798,7 +852,7 @@ _iso9660_is_rock_ridge_enabled(void* p_image)
/*!
Convert a directory record name to a 0-terminated string.
One of parameters alloc_result and cpy_result should be non-NULL to take
the result.
the result.
*/
static bool
_iso9660_recname_to_cstring(const char *src, size_t src_len,
@ -811,8 +865,11 @@ _iso9660_recname_to_cstring(const char *src, size_t src_len,
cdio_utf8_t *p_psz_out = NULL;
if (cdio_charset_to_utf8(src, i_inlen, &p_psz_out, "UCS-2BE")) {
if (cpy_result != NULL)
strcpy(cpy_result, p_psz_out);
if (cpy_result != NULL) {
strncpy(cpy_result, p_psz_out, i_inlen);
if (strlen(p_psz_out) > i_inlen)
cdio_warn("file name '%s' will be truncated", p_psz_out);
}
if (alloc_result != NULL)
*alloc_result = p_psz_out;
else
@ -1236,7 +1293,7 @@ _fs_iso_stat_traverse (iso9660_t *p_iso, const iso9660_stat_t *_root,
{
unsigned offset = 0;
uint8_t *_dirbuf = NULL;
uint32_t blocks;
uint32_t blocks;
int ret, cmp;
iso9660_stat_t *p_stat = NULL;
iso9660_dir_t *p_iso9660_dir = NULL;
@ -1441,6 +1498,34 @@ iso9660_fs_stat_translate (CdIo_t *p_cdio, const char psz_path[])
iso9660_stat_t *
iso9660_ifs_stat_translate (iso9660_t *p_iso, const char psz_path[])
{
/* Special case for virtual El-Torito boot images ('/[BOOT]/#-Boot-NoEmul.img') */
if (psz_path && p_iso && p_iso->boot_img[0].lsn != 0) {
/* Work on a path without leading slash */
const char* path = (psz_path[0] == '/') ? &psz_path[1] : psz_path;
if ((_cdio_strnicmp(path, "[BOOT]/", 7) == 0) &&
(_cdio_stricmp(&path[8], "-Boot-NoEmul.img") == 0)) {
int index = path[7] - '0';
iso9660_stat_t* p_stat;
if (strlen(path) < 24)
return NULL;
cdio_assert(MAX_BOOT_IMAGES <= 10);
if ((path[7] < '0') || (path[7] > '0' + MAX_BOOT_IMAGES - 1))
return NULL;
if (p_iso->boot_img[index].lsn == 0 || p_iso->boot_img[index].num_sectors == 0)
return NULL;
p_stat = calloc(1, sizeof(iso9660_stat_t) + strlen(path));
if (!p_stat) {
cdio_warn("Couldn't calloc(1, %d)", (int)sizeof(iso9660_stat_t));
return NULL;
}
p_stat->lsn = p_iso->boot_img[index].lsn;
p_stat->total_size = p_iso->boot_img[index].num_sectors * VIRTUAL_SECTORSIZE;
p_stat->type = _STAT_FILE;
strcpy(p_stat->filename, path);
return p_stat;
}
}
return fs_stat_translate(p_iso, (stat_root_t *) _ifs_stat_root,
(stat_traverse_t *) _fs_iso_stat_traverse,
psz_path);
@ -1576,6 +1661,7 @@ iso9660_fs_readdir (CdIo_t *p_cdio, const char psz_path[])
CdioISO9660FileList_t *
iso9660_ifs_readdir (iso9660_t *p_iso, const char psz_path[])
{
int i;
iso9660_dir_t *p_iso9660_dir;
iso9660_stat_t *p_iso9660_stat = NULL;
iso9660_stat_t *p_stat;
@ -1583,6 +1669,30 @@ iso9660_ifs_readdir (iso9660_t *p_iso, const char psz_path[])
if (!p_iso) return NULL;
if (!psz_path) return NULL;
/* List the virtual El-Torito images */
if (p_iso->boot_img[0].lsn != 0) {
const char* path = (psz_path[0] == '/') ? &psz_path[1] : psz_path;
if (_cdio_strnicmp(path, "[BOOT]", 6) == 0 && (path[6] == '\0' || path[6] == '/')) {
CdioList_t* retval = _cdio_list_new();
for (i = 0; i < MAX_BOOT_IMAGES && p_iso->boot_img[i].lsn != 0; i++) {
p_iso9660_stat = calloc(1, sizeof(iso9660_stat_t) + 18);
if (!p_iso9660_stat) {
cdio_warn("Couldn't calloc(1, %d)", (int)sizeof(iso9660_stat_t) + 18);
break;
}
strcpy(p_iso9660_stat->filename, "#-Boot-NoEmul.img");
p_iso9660_stat->filename[0] = '0' + i;
p_iso9660_stat->type = _STAT_FILE;
p_iso9660_stat->lsn = p_iso->boot_img[i].lsn;
p_iso9660_stat->total_size = p_iso->boot_img[i].num_sectors * VIRTUAL_SECTORSIZE;
iso9660_get_ltime(&p_iso->pvd.creation_date, &p_iso9660_stat->tm);
_cdio_list_append(retval, p_iso9660_stat);
p_iso9660_stat = NULL;
}
return retval;
}
}
p_stat = iso9660_ifs_stat (p_iso, psz_path);
if (!p_stat) return NULL;
@ -1600,6 +1710,21 @@ iso9660_ifs_readdir (iso9660_t *p_iso, const char psz_path[])
const size_t dirbuf_len = blocks * ISO_BLOCKSIZE;
bool skip_following_extents = false;
/* Add the virtual El-Torito "[BOOT]" directory to root */
if (p_iso->boot_img[0].lsn != 0) {
if (psz_path[0] == '\0' || (psz_path[0] == '/' && psz_path[1] == '\0')) {
p_iso9660_stat = calloc(1, sizeof(iso9660_stat_t) + 7);
if (p_iso9660_stat) {
strcpy(p_iso9660_stat->filename, "[BOOT]");
p_iso9660_stat->type = _STAT_DIR;
p_iso9660_stat->lsn = ISO_PVD_SECTOR + 1;
iso9660_get_ltime(&p_iso->pvd.creation_date, &p_iso9660_stat->tm);
_cdio_list_append(retval, p_iso9660_stat);
p_iso9660_stat = NULL;
}
}
}
if (!dirbuf_len)
{
cdio_warn("Invalid directory buffer sector size %u", blocks);

Some files were not shown because too many files have changed in this diff Show More