The Wine development release 1.3.6 is now available.

What's new in this release (see below for details):
  - Support for GStreamer filters.
  - Mapping of standard cursors to native desktop cursors.
  - Improved support for installers with services.
  - Many MSXML improvements.
  - Decoder for TGA-format images.
  - Translation updates.
  - Various bug fixes.

The source is available from the following locations:

  http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.3.6.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-1.3.6.tar.bz2

Binary packages for various distributions will be available from:

  http://www.winehq.org/download

You will find documentation on http://www.winehq.org/documentation

You can also get the current source directly from the git
repository. Check http://www.winehq.org/git for details.

Wine is available thanks to the work of many people. See the file
AUTHORS in the distribution for the complete list.

----------------------------------------------------------------

Bugs fixed in 1.3.6:

   6437  CUPS Printer-Names are UTF-8, but we handle them as ANSI
   7195  ratDVD fails to start
  11744  Age of Empires III crashes at startup
  12291  Restarting Dark Crusade 1.20 kills sound
  12925  D3D8: Visual test fails
  12934  Fugawi - OLE error 80004002
  13095  MS Visio 2003 - Crashing after opening or creating a file.
  13595  Sprite borders are 1 pixel lower in Double Dragon Forever
  13670  Star Blaze: Page faults on startup
  13939  Paint Shop Pro 7 hangs when inserting text
  15212  ctSchedule.ocx: OleCreate returns E_INVALIDARG
  15502  Crysis Warhead Installer fails with msi errors
  15942  Printers can't print format largers than A4
  16239  Cake Poker installer requires native msxml3
  17090  Elite Force fails to set brightness at all,renders game dark and hard to play
  17436  mRemote does not work
  17713  EVE Online Apocrypha - Audio not supported on FreeBSD
  17875  GetTempFileName with unique != 0 broken
  17965  Graphical glitches in Orphelins of Baudelaire demo
  18339  Microsoft Visio 2007 crashes when Drag&Dropping some elements
  19590  Symantec LiveUpdate 1.5.2 uninstaller exits silently
  20103  Beyond the Sword patch 3.19 fails to install
  20195  PLSQLDeveloper shows OLE error 80004001 when trying to export object metadata to XML
  20887  Dragon Age: Origins: Fails to find the DVD
  21485  Kindle for PC Beta works, but 1.0 doesn't
  21522  DnaSP 5 crashes under wine if a "Tajima's test" is performed.
  21765  Age of Mythology fails to create the fonts with builtin msxml4
  21798  SEHException / GdipGetRegionScansCount opening AutoWikiBrowser
  21836  jscript: run tests fail on Ubuntu
  21913  Visio 2007 Professional Crashes Immediately
  22054  Assassin's Creed crashed after first level
  22055  Assassin's creed crashes on launch occasionally
  22394  Starcraft 2: Can't restart itself
  22860  Enterprise Architect fails to create a new project or loads an existing one
  23096  White box around cursor in Google SketchUp Pro 7
  23173  Several game have upside down picture
  23217  Runes of Magic client.exe needs unimplemented function msvcr80.dll._strlwr_s
  23355  Ring-Protech CD/DVD Protection fails
  23411  YoWindow: Fails to start
  23790  Cursors in City of Heroes draw incorrectly with ATI graphics
  23901  Civilization 4 Beyond the Sword 3.19 no longer starts
  23985  Wine doesn't use standard mouse cursor
  24096  08/19/2010 Steam client update wininet issue
  24105  VB6 crashes while trying to start simple sample program
  24117  Osmos main menu cursor is corrupt
  24154  GetFirefox image is not viewable in wine iexplore with Gecko 1.1.0
  24334  EarMaster 5.0 : black area instead of the sheet music in some exercises
  24381  Children of the nile 3 demo hangs because of built-in d3dx9
  24396  [ALSA driver bug] Windows applications crash on start up
  24470  winegcc: 32-bit libs are not found with -m32 on 64-bit host
  24619  Kitsu Saga Crashes
  24646  Utorrent menu's can be open but not working
  24668  Introduction screen in Melty Blood is drawn upside-down
  24759  SAFEARRAY bounds data is marshalled in reversed order
  24773  It is possible to click behind certain modal dialogs in Worms Armageddon, leading to loss of focus and crashes
  24831  Fallout:New Vegas Fails to launch gamebryo renderer
  24864  Windows Double Explorer complains "unable to find an entry point named 'IUnknown_SetSite' in DLL 'SHLWAPI.DLL'"
  24871  Floppy diskette label and serial number not reported
  24895  msxml4 installer crashes in 2nd dialog in msi_dialog_create_radiobutton
  24929  FreeBSD build broken

----------------------------------------------------------------

Changes since 1.3.5:

Adam Martinson (14):
      msxml3: Add a function to initialize xmlDoc->_private data.
      msxml3: IXMLDOMSchemaCollection/XMLSchemaCache backend.
      msxml3/tests: Internal schema doc storage tests.
      msxml3: Implement schema_cache_get_length().
      msxml3: Implement schema_cache_remove().
      msxml3: Implement schema_cache_addCollection().
      msxml3: Implement schema_cache_get_namespaceURI().
      msxml3: Implement schema_cache_get().
      msxml3: IXMLDOMSchemaCollection2 stubs.
      msxml3: Fix a regression bug in domdoc_loadXML().
      msxml3: libxml2 error/warning callback functions.
      msxml3/tests: Add namespace-related XSLPattern tests.
      msxml3: Fix XSLPattern namespace handling.
      msxml3/tests: Add XSLPattern collection method tests.

Akihiro Sagawa (1):
      cryptui: Update Japanese translation.

Aleksey Bragin (1):
      msi: Fix freed memory access and fix freeing of invalid pointer.

Alexandre Julliard (50):
      riched20: Use the correct resource id for the reverse arrow cursor.
      ole32: Use the correct resource ids for the drag&drop cursors.
      comctl32: Use the correct resource ids for cursors.
      winex11: Use GetIconInfoEx when creating cursors.
      winex11: Avoid creating a DC when not necessary.
      winex11: Add support for remapping standard Win32 cursors to the X11 system cursors.
      winex11: Allow specifying system cursor replacements through the registry.
      kernel32/tests: Add some tests for NtAreMappedFilesTheSame.
      ntdll: Get rid of the FILE_VIEW typedef.
      ntdll: More complete implementation of NtAreMappedFilesTheSame.
      server: Return an error in get_handle_unix_name for objects that don't have a file name.
      kernel32: Use RtlDosPathNameToNtPathName_U to validate the path in GetVolumeInformationW.
      kernel32: Use the NT name to open the device in GetVolumeInformationW.
      kernel32: Use the NT name to open the root directory in GetVolumeInformationW.
      kernel32: Use the NT name to retrieve label and serial in GetVolumeInformationW.
      kernel32: Fix last error code in GetVolumeInformationW when an explicit subdir is requested.
      ntdll: Avoid using the CONTEXT86 type.
      ntoskrnl.exe: Avoid using the CONTEXT86 type.
      ifsmgr.vxd: Avoid using the CONTEXT86 type.
      vwin32.vxd: Avoid using the CONTEXT86 type.
      vmm.vxd: Avoid using the CONTEXT86 type.
      user.exe: Avoid using the CONTEXT86 type.
      system.drv: Avoid using the CONTEXT86 type.
      windebug: Avoid using the CONTEXT86 type.
      krnl386.exe: Avoid using the CONTEXT86 type.
      include: Get rid of the non-standard CONTEXT86 type.
      include: The FLOATING_SAVE_AREA type is i386-specific.
      widl: Add some more attribute keywords.
      widl: Add support for some more typelib flags based on the added attributes.
      widl: Use get_size_procformatstring_func() for clients too instead of duplicating the code.
      widl: Output some comments for proc format strings.
      widl: Add a separate function to write the proc format string for a function.
      configure: Disable Fortify if it's enabled by default, it's too broken.
      widl: Duplicate all the proxy data tables between 32-bit and 64-bit.
      widl: Duplicate the exception handling code between 32-bit and 64-bit.
      widl: Output a format string table and server info structure for stubs.
      widl: Output a format string table and server info structure for servers.
      tools: Add some sanity checks in make_makefiles.
      winegstreamer: Fix module name and remove obsolete variables in makefile.
      mofcomp: Remove obsolete variables in makefile.
      kernel32: Fix a FAT format sanity check for floppies.
      comctl32: Make more functions available by name.
      shell32: Make more functions available by name.
      shlwapi: Make more functions available by name.
      winegcc: Detect the appropriate lib directory for 32/64 cross-builds.
      winedbg: Don't start another instance of the debugger when it crashes.
      qcap: Define a real DllGetClassObject function.
      winegstreamer: Define real DllCanUnloadNow and DllGetClassObject functions.
      winegcc: Fix the lib dir detection.
      configure: More aggressive disabling of Fortify.

Amine Khaldi (2):
      comdlg32: Fix translations.
      widl: Do not define MIDL_user_allocate and MIDL_user_free as it's already in the psdk.

Anders Jonsson (7):
      crypt32: Update Swedish translation.
      jscript: Update Swedish translation.
      net: Add Swedish translation.
      progman: Fix typos in Swedish translation.
      cryptui: Fix typo in Swedish translation.
      kernel32: Add Swedish translation.
      taskmgr: Update Swedish translation.

Andrew Nguyen (7):
      msvcrt: Implement _mbsnbcat_s.
      msvcrt: Implement _ultoa_s.
      winhttp: Fix const qualifier warning for OpenSSL 1.0.0.
      wininet: Fix const qualifier warning when compiling with OpenSSL 1.0.0.
      winhttp: Fix misleading OpenSSL version number check.
      wininet: Fix misleading OpenSSL version number check.
      configure: Check for GStreamer functionality present in 0.10.26.

André Hentschel (7):
      jscript: Update German translation.
      winedump: Fix typo in code generation.
      winedump: Ignore case when detecting void.
      winemaker: Let winebuild use the default specfile name.
      winedump: Add ARM Thumb detection.
      include: Define PROCESSOR_ARCHITECTURE_IA32_ON_WIN64.
      kernel32: Update function docs for GetBinayType.

Aric Stewart (17):
      strmbase: Begin implementations of AMovieDllRegisterServer2 and AMovieSetupRegisterFilter2.
      strmbase: Define STRMBASE_DllMain.
      strmbase: Implement OLE registration in AMovieDllRegisterServer2.
      strmbase: Implement STRMBASE_DllGetClassObject and STRMBASE_DllCanUnloadNow.
      winegstreamer: Add wine GStreamer parser filter framework.
      qcap: Make use of a few more strmbase implementations.
      winegstreamer: Add glib threading overrides.
      winegstreamer: Add gstreamer splitter filter.
      winegstreamer: Add splitter output pin with video format.
      winegstreamer: Add output pin with audio format.
      winegstreamer: Add SourceSeeking implementation to the Splitter.
      winegstreamer: Handle active push of data in Splitter.
      winegstreamer: Add structure for gstreamer transform filters.
      winegstreamer: Add gstreamer YUV->RGB transform filter.
      usp10/tests: Update test_ScriptStringXtoCP_CPtoX to test both rtl and ltr characters.
      winegstreamer: Add gstreamer mp3 transform filter.
      winegstreamer: Add gstreamer audio convert transform filter.

Aurimas Fišeras (1):
      jscript: Update Lithuanian translation.

Austin Lund (6):
      advapi32/tests: Fix test for WoW64 handle size differences.
      user32/tests: Fix some combo box tests for different font sizes.
      kernel32/tests: Increase timeouts to avoid test failures in CreateRemoteThread.
      gdiplus/tests: Fix GetLogFont charset tests for Asian platforms.
      user32/tests: Fixed WM_SETFONT combo box tests.
      comdlg32/tests: Fixed up handling of temporary file in printdlg tests.

Carl Raffaele (1):
      comdlg32: Removed 16 bit dependency.

Charles Davis (2):
      kernel32/tests: Add a test for opening short paths of differing case.
      kernel32/tests: Fix the mixed-case short path test to actually test something.

Damjan Jovanovic (5):
      msvcrt: Implement wcsncat_s.
      msvcrt: Define STRUNCATE.
      msvcrt: Improve wcsncat_s.
      include: Define WINCODEC_SDK_VERSION.
      windowscodecs: Add COM proxies and stubs.

Dan Kegel (1):
      ws2_32: Null select() should fail with WSAEINVAL.

David Adam (3):
      ddraw: Remove a useless function.
      ddraw: SETFOCUSWINDOW lives independently of other flags.
      d3d8: ApplyStateBlock with a zero token returns D3D_OK.

David Hedberg (6):
      ole32: OleLoad should not fail even if IOleObject::GetMiscStatus fails.
      ole32: Pass failures from delegate object's ::QueryInterface in default handler.
      shell32: Handle INameSpaceTreeControlEvents::OnSelectionChanged.
      shell32: Replace bitwise XOR with a contextually more proper operator.
      shlwapi: Fix UrlGetPart to also return unknown schemes.
      shlwapi: Add room for null terminator in local SHGetShellKey buffer.

Davide Pizzetti (1):
      net: Italian translation update.

Detlef Riekenberg (10):
      shell32: We have a Unicode parameter when launching a CPL.
      winspool: Set devices and printerports in AddPrinterW.
      winspool: Use Unicode to add a driver entry for a unix printer.
      winspool: Use Unicode for CUPS printer names.
      shdocvw: Add a stub for ImportPrivacySettings.
      advapi32: Add a stub for EventEnabled.
      faultrep/tests: Add tests for AddERExcludedApplicationA.
      wer: Add a stub for WerRemoveExcludedApplication.
      wer/tests: Add initial tests.
      include: Add WerReportCreate + WerReportCloseHandle.

Dmitry Timoshkov (2):
      user32: FindWindow() should treat an empty title same way as NULL.
      gdi32: Make AddFontToList skip adding a face into global lists if the font is not supposed to be enumerated, and return a pointer to first loaded face.

Eric Pouech (1):
      oleaut32: Fix invalid cast.

Frédéric Delanoy (1):
      jscript: Update French translation.

Gustavo Henrique Milaré (3):
      shell32: Update Portuguese translation.
      mshtml: Update Portuguese translation.
      jscript: Update Portuguese translation.

Hans Leidekker (19):
      mscms: Fix a memory leak in TranslateColors.
      msi: Compare strings without depending on thread locale.
      services: Save service dependencies.
      services: Support setting and changing service dependencies.
      msi: Don't inline msi_feature_set_state and msi_component_set_state.
      msi/tests: Add tests for msidbFeatureAttributesUIDisallowAbsent.
      msi: Register the service description in the InstallServices action.
      msi: The LoadOrderGroup, StartName and Password fields from the ServiceInstall table are formatted strings.
      msi: Register service dependencies in the InstallServices action.
      msi: Register service arguments in the InstallServices action.
      include: Add rendering intent defines.
      gdi32: Move EnumICMProfiles to the driver.
      winex11: Implement EnumICMProfiles.
      gdi32: Fix invalid parameter handling in EnumICMProfiles and SetICMProfile.
      msi: Open the log file in shared write mode.
      msi: Open the log file once per package.
      msi: An inactive dialog control does not require a property.
      advapi32: Implement EnumServicesStatusA/W.
      advapi32: Implement EnumServicesStatusExA/W.

Henri Verbeet (40):
      d3dcompiler: Make some variables static.
      d3dcompiler: Move some bytecode output functions to bytecodewriter.c.
      d3dcompiler: Merge asmutils.c into utils.c.
      d3dcompiler: Mark some internal symbols hidden.
      wined3d: Allow FBO blits again between surfaces with fixups if they have the same format.
      wined3d: Always pass a valid rectangle to surface_get_blt_info().
      wined3d: Properly flip in surface_blt_to_drawable().
      wined3d: Remove a FIXME in context_apply_blit_state().
      wined3d: Handle WINED3DFMT_R10G10B10A2_UNORM in getColorBits().
      wined3d: Recognize the SM4 sqrt opcode.
      d3d10core: Implement ID3D10Texture3D::Unmap().
      d3d10core: Implement ID3D10Texture3D::Map().
      wined3d: Flip destination coordinates when blitting to an offscreen target in arbfp_blit_surface().
      wined3d: Check if we can do the blit before messing with surface flags in IWineD3DSurfaceImpl_BltOverride().
      wined3d: Use surface_blt_to_drawable() in IWineD3DSurfaceImpl_BltOverride().
      wined3d: Pass a sub-resource index instead of a miplevel to volume texture methods.
      wined3d: Pass a sub-resource index instead of a miplevel to 2D texture methods.
      wined3d: Pass a sub-resource index instead of a face + miplevel to cube texture methods.
      wined3d: Explicitly pass parameters to shader_load_np2fixup_constants().
      d3d10core: Try to create a software adapter when no regular adapters are found as well.
      dxgi: Try to create a software adapter when no regular adapters are found as well.
      wined3d: Get rid of the posFixup field from the device.
      wined3d: Explicitly pass parameters to shader_arb_vs_local_constants().
      wined3d: Explicitly pass parameters to shader_arb_ps_local_constants().
      wined3d: Read transform flags from the compile args in pshader_hw_texm3x2tex().
      wined3d: Read transform flags from the compile args in pshader_hw_texm3x3tex().
      wined3d: Read transform flags from the compile args in pshader_hw_texm3x3vspec().
      wined3d: Read transform flags from the compile args in pshader_hw_texm3x3spec().
      d3d9: Partially implement IDirect3D9Ex::CreateDeviceEx().
      d3d9: Use more reasonable return values for unimplemented functions.
      wined3d: Access reg_maps though ins->ctx in shader_glsl_get_register_name().
      wined3d: Access reg_maps though ins->ctx in shader_arb_get_register_name().
      wined3d: Access reg_maps though ins->ctx in shader_hw_mov().
      wined3d: Access reg_maps though ins->ctx in get_bool_const().
      wined3d: Access reg_maps though ins->ctx in get_loop_control_const().
      wined3d: Move "parse_state" to wined3d_shader_context.
      wined3d: Move loop state to wined3d_shader_context.
      wined3d: Only complain about unsupported filtering if we have a reason to.
      wined3d: Don't flip the coordinate system in set_blit_dimension().
      wined3d: Remove some redundant state save/restore code from flush_to_framebuffer_drawpixels().

Hwang YunSong (3):
      taskmgr: Update Korean resource.
      uninstaller: Update Korean resource.
      winhlp32: Update Korean resource.

Igor Paliychuk (4):
      inetcpl.cpl: Updated Ukrainian translation.
      ipconfig: Updated Ukrainian translation.
      taskkill: Updated Ukrainian translation.
      jscript: Updated Ukrainian translation.

Jacek Caban (13):
      wininet: Skip more tests on IE older than 6.0.
      mshtml: Use IUri in nsIURI::Equals implementation.
      jscript: Pass script_ctx_t instead of exec_ctx_t to eval functions.
      msxml3: Remove unused xmlnode_* functions.
      msxml3: Don't use xmlnode's IXMLDOMNode iface for a few stub functions.
      mshtml.idl: Added IHTMLObjectElement declaration.
      mshtml.idl: Added DispHTMLObjectElement declaration.
      mshtml: Added IHTMLObjectElement stub implementation.
      mshtml: Get rid of no longer needed parse_post_data.
      mshtml: Added IDispatchEx support to HTMLObjectElement object.
      mshtml.idl: Added IHTMLEmbedElement and DispHTMLEmbedElement declarations.
      mshtml: Added IHTMLEmbedElement stub implementation.
      msxml3: Don't use xmlnode's IXMLDOMNode iface in get_xml implementations.

Juan Lang (17):
      crypt32: Test encoding more quoted strings.
      crypt32: Test more encoded string to string conversions.
      crypt32: Implement quoting of simple string types.
      crypt32: Implement quoting of BMP strings.
      crypt32: Remove broken UTF-8 string decoding support.
      crypt32: Trace certificate chain verification parameters.
      crypt32/tests: Add more tests of the authenticode policy.
      crypt32: Remove unneeded comments.
      crypt32/tests: Test more Unicode encoded string to string conversions.
      crypt32/tests: Show expected values in ok output.
      crypt32: Correct Unicode quoting of BMP strings.
      crypt32: The newline character must also be quoted.
      crypt32: Implement CertRDNValueToStr for UTF8 strings.
      crypt32/tests: Fix test failures on Win98/NT4.
      secur32: Trace flags as hex values.
      crypt32: Pass additional store to CertVerifyRevocation.
      crypt32: Check revocation status of chain element-by-element.

Jörg Höhle (1):
      winmm/tests: Fix one mcicda test failure on VMware.

Konstantin Kondratyuk (1):
      jscript: Update Russian translation.

Krzysztof Nowicki (3):
      windowscodecs: Fix *_CopyPixels functions to properly handle a NULL rectangle.
      windowscodecs/tests: Add test cases for *_CopyPixels calls with NULL rectangle.
      windowscodecs: Optimise copy_pixels in case the whole bitmap is copied.

Louis Lenders (6):
      kernel32/tests: Add some more tests for GetTempFileName.
      kernel32: Fix GetTempFileName with invalid path.
      dwmapi: Add stubbed DwmGetWindowAttribute.
      winscard: Add stub for SCardReleaseStartedEvent.
      rpcrt4: Add stub for NdrMesTypeEncode2.
      ws2_32: Return SOCKET_ERROR in stubbed WSALookupServiceNext, to prevent apps from looping forever.

Luca Bennati (1):
      jscript: Update Italian translation.

Marcus Meissner (6):
      comdlg32: Fixed bad size to GetModuleFilenameW.
      shell32: Pass correct size to MultiByteToWideChar.
      ipconfig: Fixed buffer size to MultiByteToWideChar.
      wineboot: Fixed 2 buffer sizes.
      regedit: Fixed a wrong buffer size.
      winspool.drv: Check return value of EnumPrintersA.

Martin Wilck (2):
      xcopy: Move command line parsing code into separate function.
      xcopy: Fix command line parsing logic.

Matteo Bruni (5):
      d3dx9: Search for a compatible pixel format in D3DXCheckTextureRequirements.
      d3dx9: Fix D3DXFilterTexture return value.
      d3dx9: Store transform matrix per-sprite.
      d3dx9: Report usage of unsupported sprite flags.
      d3dx9: Initialize a variable in ID3DXSpriteImpl_Flush.

Michael Stefaniuc (4):
      mscms: Don't produce unreachable code with #ifdef (Smatch).
      ddraw: Add missing unlock (Smatch).
      msxml3: Remove returns after returns (Smatch).
      msxml3/tests: Remove superfluous NULL check before free (Smatch).

Nikolay Sivov (27):
      msxml3: Get rid of ::get_dataType() forward to IXMLDOMNode interface.
      msxml3: Get rid of ::put_text() forward to IXMLDOMNode interface.
      oleaut32: Fix multidimensional SAFEARRAY marshalling.
      msxml3: Add support for IStream destination in save().
      msxml3: Silence urlmon query failures for IXMLDocument.
      msxml3: Partially implement ::setAttributeNode().
      mshtml: Remove useless initialization.
      comctl32/treeview: Accept null item handle as a root for TVM_DELETEITEM.
      comctl32/treeview: Fix TVN_DELETEITEM to use item that is about to be deleted.
      shlwapi: Allow IUnknown_SetSite() to be requested by name.
      oleaut32: Remove some useless null checks.
      oleaut32: Fix properties type conversion on property bag load.
      msxml3: Add stub connection container support.
      msxml3: Add stub IConnectionPoint, return points for supported IIDs.
      msxml3: Add ::GetConnectionInterface().
      msxml3: Add ::GetConnectionPointContainer().
      msxml3: Add ::Unadvise().
      msxml3: Use proper naming and types for IObject* interfaces.
      msxml3: Handle passed BSTR argument as a WCHAR string in ::createProcessingInstruction().
      msxml3: Make line endings fix helper faster using BSTR stored length.
      msxml3: Fix a leak of error message BSTR.
      msxml3: Output error message for fatal errors.
      msxml3: Actually try to use IPersistStream if it's available.
      msxml3/tests: Some encoding switching tests.
      msxml3: Add a helper to check for error handler being set.
      msxml3: Build qualified name using libxml2 helper.
      msxml3: Trace backend error even when user error handler is not set.

Paul Vriens (19):
      clock: Add the Serbian (Latin and Cyrillic) translation.
      ipconfig: Add the Serbian (Latin and Cyrillic) translation.
      notepad: Add the Serbian (Latin and Cyrillic) translation.
      uninstaller: Add the Serbian (Latin and Cyrillic) translation.
      wineboot: Add the Serbian Cyrillic and fix the Latin translation.
      avifil32: Add the Serbian (Latin and Cyrillic) translation.
      ipconfig: Update the Serbian (Latin and Cyrillic) translation.
      browseui: Add the Serbian (Latin and Cyrillic) translation.
      mshtml: Add the Serbian (Latin and Cyrillic) translation.
      shdocvw: Add the Serbian (Latin and Cyrillic) translation.
      comdlg32: Fix Serbian (Latin) translations.
      comdlg32: Add the Serbian (Cyrillic) translation.
      winspool.drv: Add the Serbian (Latin and Cyrillic) translation.
      inetcpl.cpl: Add the Serbian (Latin and Cyrillic) translation.
      write: Add the Serbian (Latin and Cyrillic) translation.
      wldap32: Add the Serbian (Latin and Cyrillic) translation.
      credui: Add the Serbian (Latin and Cyrillic) translation.
      oleacc: Add the Serbian (Latin and Cyrillic) translation.
      hhctrl.ocx: Add the Serbian (Latin and Cyrillic) translation.

Piotr Caban (20):
      jscript: Added VBArray stub.
      jscript: Implement VBArray constructor.
      jscrpt: Added VBScript.lbound() implementation.
      jscript: Added VBArray.ubound() implementation.
      jscript: Added VBArray.dimensions() implementation.
      jscript: Added VBArray.getItem() implementation.
      jscript: Added VBArray.toArray() implementation.
      jscript: Added VBArray handling to to_object().
      jscript: Improved error handling in VBArray functions.
      jscript: Improved VBArray related tests.
      jscript: Add index, input and lastIndex properties to regexp functions results.
      jscript: Added DISPATCH_PROPERTYGET flag to some calls.
      jscript: Added invocation flag tests.
      msvcr90/tests: Make some tests fail if invalid_parameter_handler was not invoked.
      urlmon: Improved url canonicalize when Uri_CREATE_FILE_USE_DOS_PATH is specified.
      mshtml/test: Fix some memory leaks.
      mshtml: Added IHTMLFormElement_{get/put}_method implementation.
      mshtml: Added IHTMLFormElement_{get/put}_name implementation.
      mshtml: Added IHTMLFormElement_{get/put}_encoding implementation.
      mshtml: Added IHTMLTextAreaElement_get_type implementation.

Rico Schüller (10):
      include: Move D3D_SHADER_VARIABLE_CLASS to d3dcommon.h.
      include: Move D3D_CBUFFER_TYPE to d3dcommon.h.
      include: Move D3D_SRV_DIMENSION to d3dcommon.h.
      include: Move D3D_REGISTER_COMPONENT_TYPE to d3dcommon.h.
      include: Move D3D_RESOURCE_RETURN_TYPE to d3dcommon.h.
      include: Move D3D_NAME to d3dcommon.h.
      include: Move D3D_SHADER_INPUT_TYPE to d3dcommon.h.
      include: Move D3D_SHADER_VARIABLE_TYPE to d3dcommon.h.
      include: Move D3D_PRIMITIVE_TOPOLOGY to d3dcommon.h.
      include: Move D3D_PRIMITIVE to d3dcommon.h.

Ričardas Barkauskas (7):
      wer: Stub WerAddExcludedApplication.
      wlanapi: New stub dll.
      wlanapi: Stub WlanOpenHandle.
      ddraw/tests: Test if surface with DDSCAPS_ZBUFFER can be render target.
      ddraw/tests: Test some more caps combinations.
      ddraw: Fix DDSCAPS_3DDEVICE surfaces always setting DDSCAPS_VISIBLE.
      ddraw: Surfaces with DDSCAPS_3DDEVICE and DDSCAPS_ZBUFFER can't be render targets.

Sven Baars (2):
      jscript: Update the Dutch translation.
      taskkill: Update the Dutch translation.

Travis Athougies (4):
      d3dcompiler_43/tests: Added HLSL test suite.
      d3dcompiler_43/tests: Added order of operations test to HLSL test suite.
      d3dcompiler_43/tests: Added tests for conditional expressions to HLSL test suite.
      d3dcompiler_43/tests: Added float vector tests to HLSL test suite.

Trygve Vea (5):
      msi: Updated Norwegian translation.
      wineconsole: Updated Norwegian translation.
      shell32: Updated Norwegian translation.
      oledlg: Updated Norwegian translation.
      oleaut32: Updated Norwegian translation.

Vincent Povirk (25):
      windowscodecs: Implement TiffFrameDecode_CopyPalette.
      windowscodecs: Support TIFF images with alpha data.
      windowscodecs: Add stub TGA decoder.
      windowscodecs: Implement Initialize for the TGA decoder.
      windowscodecs: Implement GetFrame for the TGA decoder.
      windowscodecs: Implement GetPixelFormat for the TGA decoder.
      windowscodecs: Implement GetSize for the TGA decoder.
      windowscodecs: Seek to start of stream when opening TIFF files.
      include: Add definition for IWICColorTransform.
      include: Add definition for IWICFastMetadataEncoder.
      include: Add definition for IWICMetadataQueryReader.
      include: Add definition for IWICMetadataQueryWriter.
      windowscodecs: Implement CopyPixels for the TGA decoder.
      d3dx9_36: Check for the TGA container format.
      windowscodecs: Handle TGA attribute bits.
      windowscodecs: Add support for 32-bit TGA images.
      windowscodecs: Support Run-length encoded TGA images.
      windowscodecs: Implement CopyPalette for the TGA decoder.
      windowscodecs: Implement conversion from 16bppBGRA to 32bppBGRA.
      gdiplus: Implement GdipGetRegionScans.
      gdiplus: Make get_path_hrgn work with HDC-less graphics objects.
      gdiplus: Reject linear gradients where the start and end points are equal.
      mscoree: Add tests for LoadLibraryShim.
      wine.inf: Add some .NET-related fakedlls.
      mscoree: Implement LoadLibraryShim.

Vladimir Panteleev (1):
      user32: Update last active popup for all parents.

Yaron Shahrabani (20):
      oledlg: Added Hebrew translation.
      cmdlgtst: Added Hebrew translation.
      wineps: Added Hebrew translation.
      write: Added Hebrew translation.
      wineconsole: Added Hebrew translation.
      wordpad: Added Hebrew translation.
      mshtml: Added Hebrew translation.
      winefile: Added Hebrew translation.
      mapi32: Added Hebrew translation.
      comdlg32: Added Hebrew translation.
      shdoclc: Added Hebrew translation.
      winedbg: Added Hebrew translation.
      oleview: Added Hebrew translation.
      msvfw32: Added Hebrew translation.
      msacm32: Added Hebrew translation.
      avifile32: Added Hebrew translation.
      mpr: Added Hebrew translation.
      localspl: Added Hebrew translation.
      iccvid: Added Hebrew translation.
      user32: Added Hebrew translation.

Łukasz Wojniłowicz (4):
      inetcpl: Update the Polish translation.
      jscript: Update the Polish translation.
      taskkill: Add the Polish translation.
      ipconfig: Update the Polish translation.

--
Alexandre Julliard
julliard@winehq.org
