Skip to content

Instantly share code, notes, and snippets.

@kmeaw
Created May 16, 2017 12:10
Show Gist options
  • Save kmeaw/bf6703543421abb68e0c524c1f48026f to your computer and use it in GitHub Desktop.
Save kmeaw/bf6703543421abb68e0c524c1f48026f to your computer and use it in GitHub Desktop.
diff -urN ClickHouse-1.1.54231-stable.orig/contrib/liblz4/CMakeLists.txt ClickHouse-1.1.54231-stable/contrib/liblz4/CMakeLists.txt
--- ClickHouse-1.1.54231-stable.orig/contrib/liblz4/CMakeLists.txt 2017-05-16 14:07:59.632657802 +0300
+++ ClickHouse-1.1.54231-stable/contrib/liblz4/CMakeLists.txt 2017-05-16 14:37:34.273458882 +0300
@@ -5,4 +5,5 @@
src/lz4hc.c
include/lz4/lz4.h
- include/lz4/lz4hc.h)
+ include/lz4/lz4hc.h
+ include/lz4/lz4opt.h)
diff -urN ClickHouse-1.1.54231-stable.orig/contrib/liblz4/include/lz4/lz4.h ClickHouse-1.1.54231-stable/contrib/liblz4/include/lz4/lz4.h
--- ClickHouse-1.1.54231-stable.orig/contrib/liblz4/include/lz4/lz4.h 2017-05-16 14:07:59.632657802 +0300
+++ ClickHouse-1.1.54231-stable/contrib/liblz4/include/lz4/lz4.h 2017-05-16 14:36:44.860167982 +0300
@@ -1,360 +1,3964 @@
-/*
- LZ4 - Fast LZ compression algorithm
- Header File
- Copyright (C) 2011-2015, Yann Collet.
-
- BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following disclaimer
- in the documentation and/or other materials provided with the
- distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- You can contact the author at :
- - LZ4 source repository : https://github.com/Cyan4973/lz4
- - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c
-*/
-#pragma once
-
-#if defined (__cplusplus)
-extern "C" {
-#endif
-
-/*
- * lz4.h provides block compression functions, and gives full buffer control to programmer.
- * If you need to generate inter-operable compressed data (respecting LZ4 frame specification),
- * and can let the library handle its own memory, please use lz4frame.h instead.
-*/
-
-/**************************************
-* Version
-**************************************/
-#define LZ4_VERSION_MAJOR 1 /* for breaking interface changes */
-#define LZ4_VERSION_MINOR 7 /* for new (non-breaking) interface capabilities */
-#define LZ4_VERSION_RELEASE 1 /* for tweaks, bug-fixes, or development */
-#define LZ4_VERSION_NUMBER (LZ4_VERSION_MAJOR *100*100 + LZ4_VERSION_MINOR *100 + LZ4_VERSION_RELEASE)
-int LZ4_versionNumber (void);
-
-/**************************************
-* Tuning parameter
-**************************************/
-/*
- * LZ4_MEMORY_USAGE :
- * Memory usage formula : N->2^N Bytes (examples : 10 -> 1KB; 12 -> 4KB ; 16 -> 64KB; 20 -> 1MB; etc.)
- * Increasing memory usage improves compression ratio
- * Reduced memory usage can improve speed, due to cache effect
- * Default value is 14, for 16KB, which nicely fits into Intel x86 L1 cache
- */
-#define LZ4_MEMORY_USAGE 14
-
-
-/**************************************
-* Simple Functions
-**************************************/
-
-int LZ4_compress_default(const char* source, char* dest, int sourceSize, int maxDestSize);
-int LZ4_decompress_safe (const char* source, char* dest, int compressedSize, int maxDecompressedSize);
-
-/*
-LZ4_compress_default() :
- Compresses 'sourceSize' bytes from buffer 'source'
- into already allocated 'dest' buffer of size 'maxDestSize'.
- Compression is guaranteed to succeed if 'maxDestSize' >= LZ4_compressBound(sourceSize).
- It also runs faster, so it's a recommended setting.
- If the function cannot compress 'source' into a more limited 'dest' budget,
- compression stops *immediately*, and the function result is zero.
- As a consequence, 'dest' content is not valid.
- This function never writes outside 'dest' buffer, nor read outside 'source' buffer.
- sourceSize : Max supported value is LZ4_MAX_INPUT_VALUE
- maxDestSize : full or partial size of buffer 'dest' (which must be already allocated)
- return : the number of bytes written into buffer 'dest' (necessarily <= maxOutputSize)
- or 0 if compression fails
-
-LZ4_decompress_safe() :
- compressedSize : is the precise full size of the compressed block.
- maxDecompressedSize : is the size of destination buffer, which must be already allocated.
- return : the number of bytes decompressed into destination buffer (necessarily <= maxDecompressedSize)
- If destination buffer is not large enough, decoding will stop and output an error code (<0).
- If the source stream is detected malformed, the function will stop decoding and return a negative result.
- This function is protected against buffer overflow exploits, including malicious data packets.
- It never writes outside output buffer, nor reads outside input buffer.
-*/
-
-
-/**************************************
-* Advanced Functions
-**************************************/
-#define LZ4_MAX_INPUT_SIZE 0x7E000000 /* 2 113 929 216 bytes */
-#define LZ4_COMPRESSBOUND(isize) ((unsigned)(isize) > (unsigned)LZ4_MAX_INPUT_SIZE ? 0 : (isize) + ((isize)/255) + 16)
-
-/*
-LZ4_compressBound() :
- Provides the maximum size that LZ4 compression may output in a "worst case" scenario (input data not compressible)
- This function is primarily useful for memory allocation purposes (destination buffer size).
- Macro LZ4_COMPRESSBOUND() is also provided for compilation-time evaluation (stack memory allocation for example).
- Note that LZ4_compress_default() compress faster when dest buffer size is >= LZ4_compressBound(srcSize)
- inputSize : max supported value is LZ4_MAX_INPUT_SIZE
- return : maximum output size in a "worst case" scenario
- or 0, if input size is too large ( > LZ4_MAX_INPUT_SIZE)
-*/
-int LZ4_compressBound(int inputSize);
-
-/*
-LZ4_compress_fast() :
- Same as LZ4_compress_default(), but allows to select an "acceleration" factor.
- The larger the acceleration value, the faster the algorithm, but also the lesser the compression.
- It's a trade-off. It can be fine tuned, with each successive value providing roughly +~3% to speed.
- An acceleration value of "1" is the same as regular LZ4_compress_default()
- Values <= 0 will be replaced by ACCELERATION_DEFAULT (see lz4.c), which is 1.
-*/
-int LZ4_compress_fast (const char* source, char* dest, int sourceSize, int maxDestSize, int acceleration);
-
-
-/*
-LZ4_compress_fast_extState() :
- Same compression function, just using an externally allocated memory space to store compression state.
- Use LZ4_sizeofState() to know how much memory must be allocated,
- and allocate it on 8-bytes boundaries (using malloc() typically).
- Then, provide it as 'void* state' to compression function.
-*/
-int LZ4_sizeofState(void);
-int LZ4_compress_fast_extState (void* state, const char* source, char* dest, int inputSize, int maxDestSize, int acceleration);
-
-
-/*
-LZ4_compress_destSize() :
- Reverse the logic, by compressing as much data as possible from 'source' buffer
- into already allocated buffer 'dest' of size 'targetDestSize'.
- This function either compresses the entire 'source' content into 'dest' if it's large enough,
- or fill 'dest' buffer completely with as much data as possible from 'source'.
- *sourceSizePtr : will be modified to indicate how many bytes where read from 'source' to fill 'dest'.
- New value is necessarily <= old value.
- return : Nb bytes written into 'dest' (necessarily <= targetDestSize)
- or 0 if compression fails
-*/
-int LZ4_compress_destSize (const char* source, char* dest, int* sourceSizePtr, int targetDestSize);
-
-
-/*
-LZ4_decompress_fast() :
- originalSize : is the original and therefore uncompressed size
- return : the number of bytes read from the source buffer (in other words, the compressed size)
- If the source stream is detected malformed, the function will stop decoding and return a negative result.
- Destination buffer must be already allocated. Its size must be a minimum of 'originalSize' bytes.
- note : This function fully respect memory boundaries for properly formed compressed data.
- It is a bit faster than LZ4_decompress_safe().
- However, it does not provide any protection against intentionally modified data stream (malicious input).
- Use this function in trusted environment only (data to decode comes from a trusted source).
-*/
-int LZ4_decompress_fast (const char* source, char* dest, int originalSize);
-
-/*
-LZ4_decompress_safe_partial() :
- This function decompress a compressed block of size 'compressedSize' at position 'source'
- into destination buffer 'dest' of size 'maxDecompressedSize'.
- The function tries to stop decompressing operation as soon as 'targetOutputSize' has been reached,
- reducing decompression time.
- return : the number of bytes decoded in the destination buffer (necessarily <= maxDecompressedSize)
- Note : this number can be < 'targetOutputSize' should the compressed block to decode be smaller.
- Always control how many bytes were decoded.
- If the source stream is detected malformed, the function will stop decoding and return a negative result.
- This function never writes outside of output buffer, and never reads outside of input buffer. It is therefore protected against malicious data packets
-*/
-int LZ4_decompress_safe_partial (const char* source, char* dest, int compressedSize, int targetOutputSize, int maxDecompressedSize);
-
-
-/***********************************************
-* Streaming Compression Functions
-***********************************************/
-#define LZ4_STREAMSIZE_U64 ((1 << (LZ4_MEMORY_USAGE-3)) + 4)
-#define LZ4_STREAMSIZE (LZ4_STREAMSIZE_U64 * sizeof(long long))
-/*
- * LZ4_stream_t
- * information structure to track an LZ4 stream.
- * important : init this structure content before first use !
- * note : only allocated directly the structure if you are statically linking LZ4
- * If you are using liblz4 as a DLL, please use below construction methods instead.
- */
-typedef struct { long long table[LZ4_STREAMSIZE_U64]; } LZ4_stream_t;
-
-/*
- * LZ4_resetStream
- * Use this function to init an allocated LZ4_stream_t structure
- */
-void LZ4_resetStream (LZ4_stream_t* streamPtr);
-
-/*
- * LZ4_createStream will allocate and initialize an LZ4_stream_t structure
- * LZ4_freeStream releases its memory.
- * In the context of a DLL (liblz4), please use these methods rather than the static struct.
- * They are more future proof, in case of a change of LZ4_stream_t size.
- */
-LZ4_stream_t* LZ4_createStream(void);
-int LZ4_freeStream (LZ4_stream_t* streamPtr);
-
-/*
- * LZ4_loadDict
- * Use this function to load a static dictionary into LZ4_stream.
- * Any previous data will be forgotten, only 'dictionary' will remain in memory.
- * Loading a size of 0 is allowed.
- * Return : dictionary size, in bytes (necessarily <= 64 KB)
- */
-int LZ4_loadDict (LZ4_stream_t* streamPtr, const char* dictionary, int dictSize);
-
-/*
- * LZ4_compress_fast_continue
- * Compress buffer content 'src', using data from previously compressed blocks as dictionary to improve compression ratio.
- * Important : Previous data blocks are assumed to still be present and unmodified !
- * 'dst' buffer must be already allocated.
- * If maxDstSize >= LZ4_compressBound(srcSize), compression is guaranteed to succeed, and runs faster.
- * If not, and if compressed data cannot fit into 'dst' buffer size, compression stops, and function returns a zero.
- */
-int LZ4_compress_fast_continue (LZ4_stream_t* streamPtr, const char* src, char* dst, int srcSize, int maxDstSize, int acceleration);
-
-/*
- * LZ4_saveDict
- * If previously compressed data block is not guaranteed to remain available at its memory location
- * save it into a safer place (char* safeBuffer)
- * Note : you don't need to call LZ4_loadDict() afterwards,
- * dictionary is immediately usable, you can therefore call LZ4_compress_fast_continue()
- * Return : saved dictionary size in bytes (necessarily <= dictSize), or 0 if error
- */
-int LZ4_saveDict (LZ4_stream_t* streamPtr, char* safeBuffer, int dictSize);
-
-
-/************************************************
-* Streaming Decompression Functions
-************************************************/
-
-#define LZ4_STREAMDECODESIZE_U64 4
-#define LZ4_STREAMDECODESIZE (LZ4_STREAMDECODESIZE_U64 * sizeof(unsigned long long))
-typedef struct { unsigned long long table[LZ4_STREAMDECODESIZE_U64]; } LZ4_streamDecode_t;
-/*
- * LZ4_streamDecode_t
- * information structure to track an LZ4 stream.
- * init this structure content using LZ4_setStreamDecode or memset() before first use !
- *
- * In the context of a DLL (liblz4) please prefer usage of construction methods below.
- * They are more future proof, in case of a change of LZ4_streamDecode_t size in the future.
- * LZ4_createStreamDecode will allocate and initialize an LZ4_streamDecode_t structure
- * LZ4_freeStreamDecode releases its memory.
- */
-LZ4_streamDecode_t* LZ4_createStreamDecode(void);
-int LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_stream);
-
-/*
- * LZ4_setStreamDecode
- * Use this function to instruct where to find the dictionary.
- * Setting a size of 0 is allowed (same effect as reset).
- * Return : 1 if OK, 0 if error
- */
-int LZ4_setStreamDecode (LZ4_streamDecode_t* LZ4_streamDecode, const char* dictionary, int dictSize);
-
-/*
-*_continue() :
- These decoding functions allow decompression of multiple blocks in "streaming" mode.
- Previously decoded blocks *must* remain available at the memory position where they were decoded (up to 64 KB)
- In the case of a ring buffers, decoding buffer must be either :
- - Exactly same size as encoding buffer, with same update rule (block boundaries at same positions)
- In which case, the decoding & encoding ring buffer can have any size, including very small ones ( < 64 KB).
- - Larger than encoding buffer, by a minimum of maxBlockSize more bytes.
- maxBlockSize is implementation dependent. It's the maximum size you intend to compress into a single block.
- In which case, encoding and decoding buffers do not need to be synchronized,
- and encoding ring buffer can have any size, including small ones ( < 64 KB).
- - _At least_ 64 KB + 8 bytes + maxBlockSize.
- In which case, encoding and decoding buffers do not need to be synchronized,
- and encoding ring buffer can have any size, including larger than decoding buffer.
- Whenever these conditions are not possible, save the last 64KB of decoded data into a safe buffer,
- and indicate where it is saved using LZ4_setStreamDecode()
-*/
-int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int compressedSize, int maxDecompressedSize);
-int LZ4_decompress_fast_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int originalSize);
-
-
-/*
-Advanced decoding functions :
-*_usingDict() :
- These decoding functions work the same as
- a combination of LZ4_setStreamDecode() followed by LZ4_decompress_x_continue()
- They are stand-alone. They don't need nor update an LZ4_streamDecode_t structure.
-*/
-int LZ4_decompress_safe_usingDict (const char* source, char* dest, int compressedSize, int maxDecompressedSize, const char* dictStart, int dictSize);
-int LZ4_decompress_fast_usingDict (const char* source, char* dest, int originalSize, const char* dictStart, int dictSize);
-
-
-
-/**************************************
-* Obsolete Functions
-**************************************/
-/* Deprecate Warnings */
-/* Should these warnings messages be a problem,
- it is generally possible to disable them,
- with -Wno-deprecated-declarations for gcc
- or _CRT_SECURE_NO_WARNINGS in Visual for example.
- You can also define LZ4_DEPRECATE_WARNING_DEFBLOCK. */
-#ifndef LZ4_DEPRECATE_WARNING_DEFBLOCK
-# define LZ4_DEPRECATE_WARNING_DEFBLOCK
-# define LZ4_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
-# if (LZ4_GCC_VERSION >= 405) || defined(__clang__)
-# define LZ4_DEPRECATED(message) __attribute__((deprecated(message)))
-# elif (LZ4_GCC_VERSION >= 301)
-# define LZ4_DEPRECATED(message) __attribute__((deprecated))
-# elif defined(_MSC_VER)
-# define LZ4_DEPRECATED(message) __declspec(deprecated(message))
-# else
-# pragma message("WARNING: You need to implement LZ4_DEPRECATED for this compiler")
-# define LZ4_DEPRECATED(message)
-# endif
-#endif /* LZ4_DEPRECATE_WARNING_DEFBLOCK */
-
-/* Obsolete compression functions */
-/* These functions are planned to start generate warnings by r131 approximately */
-int LZ4_compress (const char* source, char* dest, int sourceSize);
-int LZ4_compress_limitedOutput (const char* source, char* dest, int sourceSize, int maxOutputSize);
-int LZ4_compress_withState (void* state, const char* source, char* dest, int inputSize);
-int LZ4_compress_limitedOutput_withState (void* state, const char* source, char* dest, int inputSize, int maxOutputSize);
-int LZ4_compress_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize);
-int LZ4_compress_limitedOutput_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize, int maxOutputSize);
-
-/* Obsolete decompression functions */
-/* These function names are completely deprecated and must no longer be used.
- They are only provided here for compatibility with older programs.
- - LZ4_uncompress is the same as LZ4_decompress_fast
- - LZ4_uncompress_unknownOutputSize is the same as LZ4_decompress_safe
- These function prototypes are now disabled; uncomment them only if you really need them.
- It is highly recommended to stop using these prototypes and migrate to maintained ones */
-/* int LZ4_uncompress (const char* source, char* dest, int outputSize); */
-/* int LZ4_uncompress_unknownOutputSize (const char* source, char* dest, int isize, int maxOutputSize); */
-
-/* Obsolete streaming functions; use new streaming interface whenever possible */
-LZ4_DEPRECATED("use LZ4_createStream() instead") void* LZ4_create (char* inputBuffer);
-LZ4_DEPRECATED("use LZ4_createStream() instead") int LZ4_sizeofStreamState(void);
-LZ4_DEPRECATED("use LZ4_resetStream() instead") int LZ4_resetStreamState(void* state, char* inputBuffer);
-LZ4_DEPRECATED("use LZ4_saveDict() instead") char* LZ4_slideInputBuffer (void* state);
-
-/* Obsolete streaming decoding functions */
-LZ4_DEPRECATED("use LZ4_decompress_safe_usingDict() instead") int LZ4_decompress_safe_withPrefix64k (const char* src, char* dst, int compressedSize, int maxDstSize);
-LZ4_DEPRECATED("use LZ4_decompress_fast_usingDict() instead") int LZ4_decompress_fast_withPrefix64k (const char* src, char* dst, int originalSize);
-
-
-#if defined (__cplusplus)
-}
-#endif
+
+
+
+
+
+
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+
+
+
+ <link crossorigin="anonymous" href="https://assets-cdn.github.com/assets/frameworks-81a59bf26d881d29286674f6deefe779c444382fff322085b50ba455460ccae5.css" media="all" rel="stylesheet" />
+ <link crossorigin="anonymous" href="https://assets-cdn.github.com/assets/github-f09eadfa6bc10db3f2203de09e1e4850ee95a6e8c2b8ec976dc71f94d21ab73e.css" media="all" rel="stylesheet" />
+
+
+ <link crossorigin="anonymous" href="https://assets-cdn.github.com/assets/site-2c92bc76698d4d5460eb289b4a8317610376595a748d05563eb0080165d26b26.css" media="all" rel="stylesheet" />
+
+
+ <meta name="viewport" content="width=device-width">
+
+ <title>ClickHouse/lz4.h at c9cb48196b32a9d0505f5626bf81604e1b08b5ba · kmeaw/ClickHouse · GitHub</title>
+ <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">
+ <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
+ <meta property="fb:app_id" content="1401488693436528">
+
+
+ <meta content="https://avatars1.githubusercontent.com/u/94270?v=3&amp;s=400" property="og:image" /><meta content="GitHub" property="og:site_name" /><meta content="object" property="og:type" /><meta content="kmeaw/ClickHouse" property="og:title" /><meta content="https://github.com/kmeaw/ClickHouse" property="og:url" /><meta content="ClickHouse is a free analytic DBMS for big data." property="og:description" />
+
+ <link rel="assets" href="https://assets-cdn.github.com/">
+
+ <meta name="pjax-timeout" content="1000">
+
+ <meta name="request-id" content="B0F0:7F2E:5F7973:97004E:591AE44B" data-pjax-transient>
+
+
+ <meta name="selected-link" value="repo_source" data-pjax-transient>
+
+ <meta name="google-site-verification" content="KT5gs8h0wvaagLKAVWq8bbeNwnZZK1r1XQysX3xurLU">
+<meta name="google-site-verification" content="ZzhVyEFwb7w3e0-uOTltm8Jsck2F5StVihD0exw2fsA">
+ <meta name="google-analytics" content="UA-3769691-2">
+
+<meta content="collector.githubapp.com" name="octolytics-host" /><meta content="github" name="octolytics-app-id" /><meta content="https://collector.githubapp.com/github-external/browser_event" name="octolytics-event-url" /><meta content="B0F0:7F2E:5F7973:97004E:591AE44B" name="octolytics-dimension-request_id" />
+<meta content="/&lt;user-name&gt;/&lt;repo-name&gt;/blob/show" data-pjax-transient="true" name="analytics-location" />
+
+
+
+
+ <meta class="js-ga-set" name="dimension1" content="Logged Out">
+
+
+
+
+ <meta name="hostname" content="github.com">
+ <meta name="user-login" content="">
+
+ <meta name="expected-hostname" content="github.com">
+ <meta name="js-proxy-site-detection-payload" content="ZjdjMDFhNTNiZmZjZDYzNGY3ZGViNTYxMDVlNTQ1ODcwNmZjMjVlMDVmZGMwOTAxOTNkZmFkNWQ0NjM1OTFmYnx7InJlbW90ZV9hZGRyZXNzIjoiMTI4LjcyLjE0Ny4yMzMiLCJyZXF1ZXN0X2lkIjoiQjBGMDo3RjJFOjVGNzk3Mzo5NzAwNEU6NTkxQUU0NEIiLCJ0aW1lc3RhbXAiOjE0OTQ5MzQ2MDQsImhvc3QiOiJnaXRodWIuY29tIn0=">
+
+
+ <meta name="html-safe-nonce" content="4fc5e4b459fce4042bbc9f8b4eba74a2e95b5f11">
+
+ <meta http-equiv="x-pjax-version" content="63128f18e0384b37391e5f21c7210502">
+
+
+
+ <meta name="description" content="ClickHouse is a free analytic DBMS for big data.">
+ <meta name="go-import" content="github.com/kmeaw/ClickHouse git https://github.com/kmeaw/ClickHouse.git">
+
+ <meta content="94270" name="octolytics-dimension-user_id" /><meta content="kmeaw" name="octolytics-dimension-user_login" /><meta content="76474071" name="octolytics-dimension-repository_id" /><meta content="kmeaw/ClickHouse" name="octolytics-dimension-repository_nwo" /><meta content="true" name="octolytics-dimension-repository_public" /><meta content="true" name="octolytics-dimension-repository_is_fork" /><meta content="60246359" name="octolytics-dimension-repository_parent_id" /><meta content="yandex/ClickHouse" name="octolytics-dimension-repository_parent_nwo" /><meta content="60246359" name="octolytics-dimension-repository_network_root_id" /><meta content="yandex/ClickHouse" name="octolytics-dimension-repository_network_root_nwo" />
+ <link href="https://github.com/kmeaw/ClickHouse/commits/c9cb48196b32a9d0505f5626bf81604e1b08b5ba.atom" rel="alternate" title="Recent Commits to ClickHouse:c9cb48196b32a9d0505f5626bf81604e1b08b5ba" type="application/atom+xml">
+
+
+ <link rel="canonical" href="https://github.com/kmeaw/ClickHouse/blob/c9cb48196b32a9d0505f5626bf81604e1b08b5ba/contrib/liblz4/include/lz4/lz4.h" data-pjax-transient>
+
+
+ <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats">
+
+ <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors">
+
+ <link rel="mask-icon" href="https://assets-cdn.github.com/pinned-octocat.svg" color="#000000">
+ <link rel="icon" type="image/x-icon" href="https://assets-cdn.github.com/favicon.ico">
+
+<meta name="theme-color" content="#1e2327">
+
+
+
+ </head>
+
+ <body class="logged-out env-production page-blob">
+
+
+
+
+ <div class="position-relative js-header-wrapper ">
+ <a href="#start-of-content" tabindex="1" class="accessibility-aid js-skip-to-content">Skip to content</a>
+ <div id="js-pjax-loader-bar" class="pjax-loader-bar"><div class="progress"></div></div>
+
+
+
+
+
+
+
+ <header class="site-header js-details-container Details" role="banner">
+ <div class="container-responsive">
+ <a class="header-logo-invertocat" href="https://github.com/" aria-label="Homepage" data-ga-click="(Logged out) Header, go to homepage, icon:logo-wordmark">
+ <svg aria-hidden="true" class="octicon octicon-mark-github" height="32" version="1.1" viewBox="0 0 16 16" width="32"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>
+ </a>
+
+ <button class="btn-link float-right site-header-toggle js-details-target" type="button" aria-label="Toggle navigation">
+ <svg aria-hidden="true" class="octicon octicon-three-bars" height="24" version="1.1" viewBox="0 0 12 16" width="18"><path fill-rule="evenodd" d="M11.41 9H.59C0 9 0 8.59 0 8c0-.59 0-1 .59-1H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1h.01zm0-4H.59C0 5 0 4.59 0 4c0-.59 0-1 .59-1H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1h.01zM.59 11H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1H.59C0 13 0 12.59 0 12c0-.59 0-1 .59-1z"/></svg>
+ </button>
+
+ <div class="site-header-menu">
+ <nav class="site-header-nav">
+ <a href="/features" class="js-selected-navigation-item nav-item" data-ga-click="Header, click, Nav menu - item:features" data-selected-links="/features /features">
+ Features
+</a> <a href="/business" class="js-selected-navigation-item nav-item" data-ga-click="Header, click, Nav menu - item:business" data-selected-links="/business /business/security /business/customers /business">
+ Business
+</a> <a href="/explore" class="js-selected-navigation-item nav-item" data-ga-click="Header, click, Nav menu - item:explore" data-selected-links="/explore /trending /trending/developers /integrations /integrations/feature/code /integrations/feature/collaborate /integrations/feature/ship /showcases /explore">
+ Explore
+</a> <a href="/pricing" class="js-selected-navigation-item nav-item" data-ga-click="Header, click, Nav menu - item:pricing" data-selected-links="/pricing /pricing/developer /pricing/team /pricing/business-hosted /pricing/business-enterprise /pricing">
+ Pricing
+</a> </nav>
+
+ <div class="site-header-actions">
+ <div class="header-search scoped-search site-scoped-search js-site-search" role="search">
+ <!-- '"` --><!-- </textarea></xmp> --></option></form><form accept-charset="UTF-8" action="/kmeaw/ClickHouse/search" class="js-site-search-form" data-scoped-search-url="/kmeaw/ClickHouse/search" data-unscoped-search-url="/search" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /></div>
+ <label class="form-control header-search-wrapper js-chromeless-input-container">
+ <a href="/kmeaw/ClickHouse/blob/c9cb48196b32a9d0505f5626bf81604e1b08b5ba/contrib/liblz4/include/lz4/lz4.h" class="header-search-scope no-underline">This repository</a>
+ <input type="text"
+ class="form-control header-search-input js-site-search-focus js-site-search-field is-clearable"
+ data-hotkey="s"
+ name="q"
+ value=""
+ placeholder="Search"
+ aria-label="Search this repository"
+ data-unscoped-placeholder="Search GitHub"
+ data-scoped-placeholder="Search"
+ autocapitalize="off">
+ <input type="hidden" class="js-site-search-type-field" name="type" >
+ </label>
+</form></div>
+
+
+ <a class="text-bold site-header-link" href="/login?return_to=%2Fkmeaw%2FClickHouse%2Fblob%2Fc9cb48196b32a9d0505f5626bf81604e1b08b5ba%2Fcontrib%2Fliblz4%2Finclude%2Flz4%2Flz4.h" data-ga-click="(Logged out) Header, clicked Sign in, text:sign-in">Sign in</a>
+ <span class="text-gray">or</span>
+ <a class="text-bold site-header-link" href="/join?source=header-repo" data-ga-click="(Logged out) Header, clicked Sign up, text:sign-up">Sign up</a>
+ </div>
+ </div>
+ </div>
+</header>
+
+
+ </div>
+
+ <div id="start-of-content" class="accessibility-aid"></div>
+
+ <div id="js-flash-container">
+</div>
+
+
+
+ <div role="main">
+ <div itemscope itemtype="http://schema.org/SoftwareSourceCode">
+ <div id="js-repo-pjax-container" data-pjax-container>
+
+
+
+
+ <div class="pagehead repohead instapaper_ignore readability-menu experiment-repo-nav">
+ <div class="container repohead-details-container">
+
+ <ul class="pagehead-actions">
+ <li>
+ <a href="/login?return_to=%2Fkmeaw%2FClickHouse"
+ class="btn btn-sm btn-with-count tooltipped tooltipped-n"
+ aria-label="You must be signed in to watch a repository" rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-eye" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M8.06 2C3 2 0 8 0 8s3 6 8.06 6C13 14 16 8 16 8s-3-6-7.94-6zM8 12c-2.2 0-4-1.78-4-4 0-2.2 1.8-4 4-4 2.22 0 4 1.8 4 4 0 2.22-1.78 4-4 4zm2-4c0 1.11-.89 2-2 2-1.11 0-2-.89-2-2 0-1.11.89-2 2-2 1.11 0 2 .89 2 2z"/></svg>
+ Watch
+ </a>
+ <a class="social-count" href="/kmeaw/ClickHouse/watchers"
+ aria-label="1 user is watching this repository">
+ 1
+ </a>
+
+ </li>
+
+ <li>
+ <a href="/login?return_to=%2Fkmeaw%2FClickHouse"
+ class="btn btn-sm btn-with-count tooltipped tooltipped-n"
+ aria-label="You must be signed in to star a repository" rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-star" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path fill-rule="evenodd" d="M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14 7 11.67 11.33 14l-.93-4.74z"/></svg>
+ Star
+ </a>
+
+ <a class="social-count js-social-count" href="/kmeaw/ClickHouse/stargazers"
+ aria-label="0 users starred this repository">
+ 0
+ </a>
+
+ </li>
+
+ <li>
+ <a href="/login?return_to=%2Fkmeaw%2FClickHouse"
+ class="btn btn-sm btn-with-count tooltipped tooltipped-n"
+ aria-label="You must be signed in to fork a repository" rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-repo-forked" height="16" version="1.1" viewBox="0 0 10 16" width="10"><path fill-rule="evenodd" d="M8 1a1.993 1.993 0 0 0-1 3.72V6L5 8 3 6V4.72A1.993 1.993 0 0 0 2 1a1.993 1.993 0 0 0-1 3.72V6.5l3 3v1.78A1.993 1.993 0 0 0 5 15a1.993 1.993 0 0 0 1-3.72V9.5l3-3V4.72A1.993 1.993 0 0 0 8 1zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3 10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3-10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg>
+ Fork
+ </a>
+
+ <a href="/kmeaw/ClickHouse/network" class="social-count"
+ aria-label="303 users forked this repository">
+ 303
+ </a>
+ </li>
+</ul>
+
+ <h1 class="public ">
+ <svg aria-hidden="true" class="octicon octicon-repo-forked" height="16" version="1.1" viewBox="0 0 10 16" width="10"><path fill-rule="evenodd" d="M8 1a1.993 1.993 0 0 0-1 3.72V6L5 8 3 6V4.72A1.993 1.993 0 0 0 2 1a1.993 1.993 0 0 0-1 3.72V6.5l3 3v1.78A1.993 1.993 0 0 0 5 15a1.993 1.993 0 0 0 1-3.72V9.5l3-3V4.72A1.993 1.993 0 0 0 8 1zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3 10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3-10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg>
+ <span class="author" itemprop="author"><a href="/kmeaw" class="url fn" rel="author">kmeaw</a></span><!--
+--><span class="path-divider">/</span><!--
+--><strong itemprop="name"><a href="/kmeaw/ClickHouse" data-pjax="#js-repo-pjax-container">ClickHouse</a></strong>
+
+ <span class="fork-flag">
+ <span class="text">forked from <a href="/yandex/ClickHouse">yandex/ClickHouse</a></span>
+ </span>
+</h1>
+
+ </div>
+ <div class="container">
+
+<nav class="reponav js-repo-nav js-sidenav-container-pjax"
+ itemscope
+ itemtype="http://schema.org/BreadcrumbList"
+ role="navigation"
+ data-pjax="#js-repo-pjax-container">
+
+ <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
+ <a href="/kmeaw/ClickHouse" class="js-selected-navigation-item selected reponav-item" data-hotkey="g c" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches /kmeaw/ClickHouse" itemprop="url">
+ <svg aria-hidden="true" class="octicon octicon-code" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path fill-rule="evenodd" d="M9.5 3L8 4.5 11.5 8 8 11.5 9.5 13 14 8 9.5 3zm-5 0L0 8l4.5 5L6 11.5 2.5 8 6 4.5 4.5 3z"/></svg>
+ <span itemprop="name">Code</span>
+ <meta itemprop="position" content="1">
+</a> </span>
+
+
+ <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
+ <a href="/kmeaw/ClickHouse/pulls" class="js-selected-navigation-item reponav-item" data-hotkey="g p" data-selected-links="repo_pulls /kmeaw/ClickHouse/pulls" itemprop="url">
+ <svg aria-hidden="true" class="octicon octicon-git-pull-request" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M11 11.28V5c-.03-.78-.34-1.47-.94-2.06C9.46 2.35 8.78 2.03 8 2H7V0L4 3l3 3V4h1c.27.02.48.11.69.31.21.2.3.42.31.69v6.28A1.993 1.993 0 0 0 10 15a1.993 1.993 0 0 0 1-3.72zm-1 2.92c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zM4 3c0-1.11-.89-2-2-2a1.993 1.993 0 0 0-1 3.72v6.56A1.993 1.993 0 0 0 2 15a1.993 1.993 0 0 0 1-3.72V4.72c.59-.34 1-.98 1-1.72zm-.8 10c0 .66-.55 1.2-1.2 1.2-.65 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg>
+ <span itemprop="name">Pull requests</span>
+ <span class="Counter">0</span>
+ <meta itemprop="position" content="3">
+</a> </span>
+
+ <a href="/kmeaw/ClickHouse/projects" class="js-selected-navigation-item reponav-item" data-selected-links="repo_projects new_repo_project repo_project /kmeaw/ClickHouse/projects">
+ <svg aria-hidden="true" class="octicon octicon-project" height="16" version="1.1" viewBox="0 0 15 16" width="15"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1z"/></svg>
+ Projects
+ <span class="Counter" >0</span>
+</a>
+
+
+
+ <a href="/kmeaw/ClickHouse/pulse" class="js-selected-navigation-item reponav-item" data-selected-links="pulse /kmeaw/ClickHouse/pulse">
+ <svg aria-hidden="true" class="octicon octicon-pulse" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path fill-rule="evenodd" d="M11.5 8L8.8 5.4 6.6 8.5 5.5 1.6 2.38 8H0v2h3.6l.9-1.8.9 5.4L9 8.5l1.6 1.5H14V8z"/></svg>
+ Pulse
+</a>
+ <a href="/kmeaw/ClickHouse/graphs" class="js-selected-navigation-item reponav-item" data-selected-links="repo_graphs repo_contributors /kmeaw/ClickHouse/graphs">
+ <svg aria-hidden="true" class="octicon octicon-graph" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M16 14v1H0V0h1v14h15zM5 13H3V8h2v5zm4 0H7V3h2v10zm4 0h-2V6h2v7z"/></svg>
+ Graphs
+</a>
+
+</nav>
+
+ </div>
+ </div>
+
+<div class="container new-discussion-timeline experiment-repo-nav">
+ <div class="repository-content">
+
+
+
+
+<a href="/kmeaw/ClickHouse/blob/c9cb48196b32a9d0505f5626bf81604e1b08b5ba/contrib/liblz4/include/lz4/lz4.h" class="d-none js-permalink-shortcut" data-hotkey="y">Permalink</a>
+
+<!-- blob contrib key: blob_contributors:v21:ba7e9a6d5d64fb991483352803920a5a -->
+
+<div class="file-navigation js-zeroclipboard-container">
+
+<div class="select-menu branch-select-menu js-menu-container js-select-menu float-left">
+ <button class=" btn btn-sm select-menu-button js-menu-target css-truncate" data-hotkey="w"
+
+ type="button" aria-label="Switch branches or tags" tabindex="0" aria-haspopup="true">
+ <i>Tree:</i>
+ <span class="js-select-button css-truncate-target">c9cb48196b</span>
+ </button>
+
+ <div class="select-menu-modal-holder js-menu-content js-navigation-container" data-pjax>
+
+ <div class="select-menu-modal">
+ <div class="select-menu-header">
+ <svg aria-label="Close" class="octicon octicon-x js-menu-close" height="16" role="img" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48z"/></svg>
+ <span class="select-menu-title">Switch branches/tags</span>
+ </div>
+
+ <div class="select-menu-filters">
+ <div class="select-menu-text-filter">
+ <input type="text" aria-label="Filter branches/tags" id="context-commitish-filter-field" class="form-control js-filterable-field js-navigation-enable" placeholder="Filter branches/tags">
+ </div>
+ <div class="select-menu-tabs">
+ <ul>
+ <li class="select-menu-tab">
+ <a href="#" data-tab-filter="branches" data-filter-placeholder="Filter branches/tags" class="js-select-menu-tab" role="tab">Branches</a>
+ </li>
+ <li class="select-menu-tab">
+ <a href="#" data-tab-filter="tags" data-filter-placeholder="Find a tag…" class="js-select-menu-tab" role="tab">Tags</a>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="branches" role="menu">
+
+ <div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
+
+
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/54032-hotfix/contrib/liblz4/include/lz4/lz4.h"
+ data-name="54032-hotfix"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ 54032-hotfix
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/54046-investigate-instersecting-parts/contrib/liblz4/include/lz4/lz4.h"
+ data-name="54046-investigate-instersecting-parts"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ 54046-investigate-instersecting-parts
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/METR-18510/contrib/liblz4/include/lz4/lz4.h"
+ data-name="METR-18510"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ METR-18510
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/METR-18844/contrib/liblz4/include/lz4/lz4.h"
+ data-name="METR-18844"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ METR-18844
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/METR-19266/contrib/liblz4/include/lz4/lz4.h"
+ data-name="METR-19266"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ METR-19266
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/METR-22842/contrib/liblz4/include/lz4/lz4.h"
+ data-name="METR-22842"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ METR-22842
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/METR-22935/contrib/liblz4/include/lz4/lz4.h"
+ data-name="METR-22935"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ METR-22935
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/METR-23305/contrib/liblz4/include/lz4/lz4.h"
+ data-name="METR-23305"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ METR-23305
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/always-return-single-row-when-aggregate-without-key/contrib/liblz4/include/lz4/lz4.h"
+ data-name="always-return-single-row-when-aggregate-without-key"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ always-return-single-row-when-aggregate-without-key
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/aprudaev-patch-1/contrib/liblz4/include/lz4/lz4.h"
+ data-name="aprudaev-patch-1"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ aprudaev-patch-1
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/asan-fix-linkage/contrib/liblz4/include/lz4/lz4.h"
+ data-name="asan-fix-linkage"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ asan-fix-linkage
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/bark-on-multi-statements/contrib/liblz4/include/lz4/lz4.h"
+ data-name="bark-on-multi-statements"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ bark-on-multi-statements
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/basedaemon-fix/contrib/liblz4/include/lz4/lz4.h"
+ data-name="basedaemon-fix"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ basedaemon-fix
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/block-simplification/contrib/liblz4/include/lz4/lz4.h"
+ data-name="block-simplification"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ block-simplification
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/change-signal/contrib/liblz4/include/lz4/lz4.h"
+ data-name="change-signal"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ change-signal
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/chebotarev-cmake-2/contrib/liblz4/include/lz4/lz4.h"
+ data-name="chebotarev-cmake-2"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ chebotarev-cmake-2
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/client-info/contrib/liblz4/include/lz4/lz4.h"
+ data-name="client-info"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ client-info
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/cmake-magic/contrib/liblz4/include/lz4/lz4.h"
+ data-name="cmake-magic"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ cmake-magic
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/convert_charset_function/contrib/liblz4/include/lz4/lz4.h"
+ data-name="convert_charset_function"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ convert_charset_function
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/dev-vludv/contrib/liblz4/include/lz4/lz4.h"
+ data-name="dev-vludv"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ dev-vludv
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/doc-telegram-chat/contrib/liblz4/include/lz4/lz4.h"
+ data-name="doc-telegram-chat"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ doc-telegram-chat
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/fix-external-aggregation-stuck-at-more-4bn-keys/contrib/liblz4/include/lz4/lz4.h"
+ data-name="fix-external-aggregation-stuck-at-more-4bn-keys"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ fix-external-aggregation-stuck-at-more-4bn-keys
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/force_restore_data_flag_in_filesystem/contrib/liblz4/include/lz4/lz4.h"
+ data-name="force_restore_data_flag_in_filesystem"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ force_restore_data_flag_in_filesystem
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/glibc-compatibility/contrib/liblz4/include/lz4/lz4.h"
+ data-name="glibc-compatibility"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ glibc-compatibility
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/has-column-in-table/contrib/liblz4/include/lz4/lz4.h"
+ data-name="has-column-in-table"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ has-column-in-table
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/hierarchical-dictionaries-performance/contrib/liblz4/include/lz4/lz4.h"
+ data-name="hierarchical-dictionaries-performance"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ hierarchical-dictionaries-performance
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/if_with_const_condition/contrib/liblz4/include/lz4/lz4.h"
+ data-name="if_with_const_condition"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ if_with_const_condition
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/in-tree-boost/contrib/liblz4/include/lz4/lz4.h"
+ data-name="in-tree-boost"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ in-tree-boost
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/issue-219/contrib/liblz4/include/lz4/lz4.h"
+ data-name="issue-219"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ issue-219
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/joins_rectification/contrib/liblz4/include/lz4/lz4.h"
+ data-name="joins_rectification"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ joins_rectification
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/lz4/contrib/liblz4/include/lz4/lz4.h"
+ data-name="lz4"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ lz4
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/master/contrib/liblz4/include/lz4/lz4.h"
+ data-name="master"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ master
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/merge-selector-attempt-to-make-sense/contrib/liblz4/include/lz4/lz4.h"
+ data-name="merge-selector-attempt-to-make-sense"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ merge-selector-attempt-to-make-sense
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/merge-selector/contrib/liblz4/include/lz4/lz4.h"
+ data-name="merge-selector"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ merge-selector
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/metrica-sync2/contrib/liblz4/include/lz4/lz4.h"
+ data-name="metrica-sync2"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ metrica-sync2
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/metrica-sync3/contrib/liblz4/include/lz4/lz4.h"
+ data-name="metrica-sync3"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ metrica-sync3
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/metrics_refinement/contrib/liblz4/include/lz4/lz4.h"
+ data-name="metrics_refinement"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ metrics_refinement
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/metrika-sync-3/contrib/liblz4/include/lz4/lz4.h"
+ data-name="metrika-sync-3"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ metrika-sync-3
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/metrika-sync/contrib/liblz4/include/lz4/lz4.h"
+ data-name="metrika-sync"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ metrika-sync
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/more-verbose-error-message-on-conversion-fail/contrib/liblz4/include/lz4/lz4.h"
+ data-name="more-verbose-error-message-on-conversion-fail"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ more-verbose-error-message-on-conversion-fail
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/olap-query-converter/contrib/liblz4/include/lz4/lz4.h"
+ data-name="olap-query-converter"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ olap-query-converter
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/parse-java-style-floating-point-denormals/contrib/liblz4/include/lz4/lz4.h"
+ data-name="parse-java-style-floating-point-denormals"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ parse-java-style-floating-point-denormals
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/patching-mysqlclient/contrib/liblz4/include/lz4/lz4.h"
+ data-name="patching-mysqlclient"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ patching-mysqlclient
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/random-test-data-generator/contrib/liblz4/include/lz4/lz4.h"
+ data-name="random-test-data-generator"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ random-test-data-generator
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/repair-subtree2/contrib/liblz4/include/lz4/lz4.h"
+ data-name="repair-subtree2"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ repair-subtree2
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/revert-39-METR-18844/contrib/liblz4/include/lz4/lz4.h"
+ data-name="revert-39-METR-18844"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ revert-39-METR-18844
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/revert-90-master/contrib/liblz4/include/lz4/lz4.h"
+ data-name="revert-90-master"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ revert-90-master
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/revert-171-METR-23305/contrib/liblz4/include/lz4/lz4.h"
+ data-name="revert-171-METR-23305"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ revert-171-METR-23305
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/squashing-blocks/contrib/liblz4/include/lz4/lz4.h"
+ data-name="squashing-blocks"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ squashing-blocks
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/stable/contrib/liblz4/include/lz4/lz4.h"
+ data-name="stable"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ stable
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/statistics-in-json-format/contrib/liblz4/include/lz4/lz4.h"
+ data-name="statistics-in-json-format"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ statistics-in-json-format
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/try-to-improve-performance-of-column-string-insert-into/contrib/liblz4/include/lz4/lz4.h"
+ data-name="try-to-improve-performance-of-column-string-insert-into"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ try-to-improve-performance-of-column-string-insert-into
+ </span>
+ </a>
+ </div>
+
+ <div class="select-menu-no-results">Nothing to show</div>
+ </div>
+
+ <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="tags">
+ <div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
+
+
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54121-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54121-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54121-testing">
+ v1.1.54121-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54120-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54120-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54120-testing">
+ v1.1.54120-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54119-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54119-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54119-testing">
+ v1.1.54119-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54118-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54118-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54118-testing">
+ v1.1.54118-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54117-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54117-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54117-testing">
+ v1.1.54117-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54116-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54116-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54116-testing">
+ v1.1.54116-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54115-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54115-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54115-testing">
+ v1.1.54115-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54114-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54114-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54114-testing">
+ v1.1.54114-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54113-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54113-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54113-testing">
+ v1.1.54113-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54112-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54112-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54112-testing">
+ v1.1.54112-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54112-stable/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54112-stable"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54112-stable">
+ v1.1.54112-stable
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54111-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54111-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54111-testing">
+ v1.1.54111-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54110-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54110-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54110-testing">
+ v1.1.54110-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54109-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54109-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54109-testing">
+ v1.1.54109-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54108-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54108-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54108-testing">
+ v1.1.54108-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54107-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54107-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54107-testing">
+ v1.1.54107-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54106-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54106-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54106-testing">
+ v1.1.54106-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54105-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54105-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54105-testing">
+ v1.1.54105-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54104-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54104-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54104-testing">
+ v1.1.54104-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54103-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54103-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54103-testing">
+ v1.1.54103-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54102-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54102-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54102-testing">
+ v1.1.54102-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54101-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54101-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54101-testing">
+ v1.1.54101-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54100-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54100-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54100-testing">
+ v1.1.54100-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54099-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54099-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54099-testing">
+ v1.1.54099-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54098-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54098-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54098-testing">
+ v1.1.54098-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54097-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54097-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54097-testing">
+ v1.1.54097-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54096-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54096-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54096-testing">
+ v1.1.54096-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54095-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54095-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54095-testing">
+ v1.1.54095-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54094-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54094-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54094-testing">
+ v1.1.54094-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54093-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54093-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54093-testing">
+ v1.1.54093-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54092-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54092-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54092-testing">
+ v1.1.54092-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54091-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54091-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54091-testing">
+ v1.1.54091-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54090-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54090-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54090-testing">
+ v1.1.54090-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54089-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54089-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54089-testing">
+ v1.1.54089-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54088-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54088-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54088-testing">
+ v1.1.54088-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54087-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54087-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54087-testing">
+ v1.1.54087-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54086-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54086-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54086-testing">
+ v1.1.54086-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54085-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54085-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54085-testing">
+ v1.1.54085-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54084-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54084-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54084-testing">
+ v1.1.54084-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54083-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54083-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54083-testing">
+ v1.1.54083-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54083-stable/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54083-stable"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54083-stable">
+ v1.1.54083-stable
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54082-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54082-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54082-testing">
+ v1.1.54082-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54081-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54081-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54081-testing">
+ v1.1.54081-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54080-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54080-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54080-testing">
+ v1.1.54080-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54080-stable/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54080-stable"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54080-stable">
+ v1.1.54080-stable
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54079-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54079-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54079-testing">
+ v1.1.54079-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54078-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54078-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54078-testing">
+ v1.1.54078-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54077-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54077-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54077-testing">
+ v1.1.54077-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54076-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54076-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54076-testing">
+ v1.1.54076-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54075-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54075-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54075-testing">
+ v1.1.54075-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54074-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54074-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54074-testing">
+ v1.1.54074-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54074-stable/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54074-stable"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54074-stable">
+ v1.1.54074-stable
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54073-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54073-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54073-testing">
+ v1.1.54073-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54072-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54072-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54072-testing">
+ v1.1.54072-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54071-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54071-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54071-testing">
+ v1.1.54071-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54070-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54070-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54070-testing">
+ v1.1.54070-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54069-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54069-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54069-testing">
+ v1.1.54069-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54068-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54068-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54068-testing">
+ v1.1.54068-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54067-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54067-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54067-testing">
+ v1.1.54067-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54066-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54066-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54066-testing">
+ v1.1.54066-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54065-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54065-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54065-testing">
+ v1.1.54065-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54064-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54064-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54064-testing">
+ v1.1.54064-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54063-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54063-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54063-testing">
+ v1.1.54063-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54062-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54062-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54062-testing">
+ v1.1.54062-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54061-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54061-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54061-testing">
+ v1.1.54061-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54060-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54060-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54060-testing">
+ v1.1.54060-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54059-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54059-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54059-testing">
+ v1.1.54059-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54058-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54058-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54058-testing">
+ v1.1.54058-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54057-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54057-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54057-testing">
+ v1.1.54057-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54056-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54056-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54056-testing">
+ v1.1.54056-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54055-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54055-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54055-testing">
+ v1.1.54055-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54054-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54054-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54054-testing">
+ v1.1.54054-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54053-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54053-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54053-testing">
+ v1.1.54053-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54052-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54052-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54052-testing">
+ v1.1.54052-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54051-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54051-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54051-testing">
+ v1.1.54051-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54050-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54050-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54050-testing">
+ v1.1.54050-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54049-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54049-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54049-testing">
+ v1.1.54049-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54048-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54048-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54048-testing">
+ v1.1.54048-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54047-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54047-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54047-testing">
+ v1.1.54047-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54046-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54046-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54046-testing">
+ v1.1.54046-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54046-stable/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54046-stable"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54046-stable">
+ v1.1.54046-stable
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54045-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54045-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54045-testing">
+ v1.1.54045-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54044-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54044-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54044-testing">
+ v1.1.54044-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54043-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54043-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54043-testing">
+ v1.1.54043-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54042-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54042-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54042-testing">
+ v1.1.54042-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54041-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54041-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54041-testing">
+ v1.1.54041-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54040-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54040-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54040-testing">
+ v1.1.54040-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54039-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54039-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54039-testing">
+ v1.1.54039-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54038-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54038-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54038-testing">
+ v1.1.54038-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54037-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54037-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54037-testing">
+ v1.1.54037-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54036-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54036-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54036-testing">
+ v1.1.54036-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54035-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54035-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54035-testing">
+ v1.1.54035-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54034-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54034-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54034-testing">
+ v1.1.54034-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54033-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54033-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54033-testing">
+ v1.1.54033-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54032-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54032-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54032-testing">
+ v1.1.54032-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54031-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54031-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54031-testing">
+ v1.1.54031-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54030-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54030-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54030-testing">
+ v1.1.54030-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54030-stable/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54030-stable"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54030-stable">
+ v1.1.54030-stable
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54029-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54029-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54029-testing">
+ v1.1.54029-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54028-testing/contrib/liblz4/include/lz4/lz4.h"
+ data-name="v1.1.54028-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54028-testing">
+ v1.1.54028-testing
+ </span>
+ </a>
+ </div>
+
+ <div class="select-menu-no-results">Nothing to show</div>
+ </div>
+
+ </div>
+ </div>
+</div>
+
+ <div class="BtnGroup float-right">
+ <a href="/kmeaw/ClickHouse/find/c9cb48196b32a9d0505f5626bf81604e1b08b5ba"
+ class="js-pjax-capture-input btn btn-sm BtnGroup-item"
+ data-pjax
+ data-hotkey="t">
+ Find file
+ </a>
+ <button aria-label="Copy file path to clipboard" class="js-zeroclipboard btn btn-sm BtnGroup-item tooltipped tooltipped-s" data-copied-hint="Copied!" type="button">Copy path</button>
+ </div>
+ <div class="breadcrumb js-zeroclipboard-target">
+ <span class="repo-root js-repo-root"><span class="js-path-segment"><a href="/kmeaw/ClickHouse/tree/c9cb48196b32a9d0505f5626bf81604e1b08b5ba"><span>ClickHouse</span></a></span></span><span class="separator">/</span><span class="js-path-segment"><a href="/kmeaw/ClickHouse/tree/c9cb48196b32a9d0505f5626bf81604e1b08b5ba/contrib"><span>contrib</span></a></span><span class="separator">/</span><span class="js-path-segment"><a href="/kmeaw/ClickHouse/tree/c9cb48196b32a9d0505f5626bf81604e1b08b5ba/contrib/liblz4"><span>liblz4</span></a></span><span class="separator">/</span><span class="js-path-segment"><a href="/kmeaw/ClickHouse/tree/c9cb48196b32a9d0505f5626bf81604e1b08b5ba/contrib/liblz4/include"><span>include</span></a></span><span class="separator">/</span><span class="js-path-segment"><a href="/kmeaw/ClickHouse/tree/c9cb48196b32a9d0505f5626bf81604e1b08b5ba/contrib/liblz4/include/lz4"><span>lz4</span></a></span><span class="separator">/</span><strong class="final-path">lz4.h</strong>
+ </div>
+</div>
+
+
+
+ <div class="commit-tease">
+ <span class="float-right">
+ <a class="commit-tease-sha" href="/kmeaw/ClickHouse/commit/c9cb48196b32a9d0505f5626bf81604e1b08b5ba" data-pjax>
+ c9cb481
+ </a>
+ <relative-time datetime="2017-05-06T08:29:08Z">May 6, 2017</relative-time>
+ </span>
+ <div>
+ <img alt="@kmeaw" class="avatar" height="20" src="https://avatars0.githubusercontent.com/u/94270?v=3&amp;s=40" width="20" />
+ <a href="/kmeaw" class="user-mention" rel="author">kmeaw</a>
+ <a href="/kmeaw/ClickHouse/commit/c9cb48196b32a9d0505f5626bf81604e1b08b5ba" class="message" data-pjax="true" title="Update lz4 library to the latest stable version (1.7.5, 2016-11-28)">Update lz4 library to the latest stable version (1.7.5, 2016-11-28)</a>
+ </div>
+
+ <div class="commit-tease-contributors">
+ <button type="button" class="btn-link muted-link contributors-toggle" data-facebox="#blob_contributors_box">
+ <strong>2</strong>
+ contributors
+ </button>
+ <a class="avatar-link tooltipped tooltipped-s" aria-label="alexey-milovidov" href="/kmeaw/ClickHouse/commits/c9cb48196b32a9d0505f5626bf81604e1b08b5ba/contrib/liblz4/include/lz4/lz4.h?author=alexey-milovidov"><img alt="@alexey-milovidov" class="avatar" height="20" src="https://avatars0.githubusercontent.com/u/18581488?v=3&amp;s=40" width="20" /> </a>
+ <a class="avatar-link tooltipped tooltipped-s" aria-label="kmeaw" href="/kmeaw/ClickHouse/commits/c9cb48196b32a9d0505f5626bf81604e1b08b5ba/contrib/liblz4/include/lz4/lz4.h?author=kmeaw"><img alt="@kmeaw" class="avatar" height="20" src="https://avatars0.githubusercontent.com/u/94270?v=3&amp;s=40" width="20" /> </a>
+
+
+ </div>
+
+ <div id="blob_contributors_box" style="display:none">
+ <h2 class="facebox-header" data-facebox-id="facebox-header">Users who have contributed to this file</h2>
+ <ul class="facebox-user-list" data-facebox-id="facebox-description">
+ <li class="facebox-user-list-item">
+ <img alt="@alexey-milovidov" height="24" src="https://avatars2.githubusercontent.com/u/18581488?v=3&amp;s=48" width="24" />
+ <a href="/alexey-milovidov">alexey-milovidov</a>
+ </li>
+ <li class="facebox-user-list-item">
+ <img alt="@kmeaw" height="24" src="https://avatars2.githubusercontent.com/u/94270?v=3&amp;s=48" width="24" />
+ <a href="/kmeaw">kmeaw</a>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+<div class="file">
+ <div class="file-header">
+ <div class="file-actions">
+
+ <div class="BtnGroup">
+ <a href="/kmeaw/ClickHouse/raw/c9cb48196b32a9d0505f5626bf81604e1b08b5ba/contrib/liblz4/include/lz4/lz4.h" class="btn btn-sm BtnGroup-item" id="raw-url">Raw</a>
+ <a href="/kmeaw/ClickHouse/blame/c9cb48196b32a9d0505f5626bf81604e1b08b5ba/contrib/liblz4/include/lz4/lz4.h" class="btn btn-sm js-update-url-with-hash BtnGroup-item" data-hotkey="b">Blame</a>
+ <a href="/kmeaw/ClickHouse/commits/c9cb48196b32a9d0505f5626bf81604e1b08b5ba/contrib/liblz4/include/lz4/lz4.h" class="btn btn-sm BtnGroup-item" rel="nofollow">History</a>
+ </div>
+
+
+ <button type="button" class="btn-octicon disabled tooltipped tooltipped-nw"
+ aria-label="You must be signed in to make or propose changes">
+ <svg aria-hidden="true" class="octicon octicon-pencil" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path fill-rule="evenodd" d="M0 12v3h3l8-8-3-3-8 8zm3 2H1v-2h1v1h1v1zm10.3-9.3L12 6 9 3l1.3-1.3a.996.996 0 0 1 1.41 0l1.59 1.59c.39.39.39 1.02 0 1.41z"/></svg>
+ </button>
+ <button type="button" class="btn-octicon btn-octicon-danger disabled tooltipped tooltipped-nw"
+ aria-label="You must be signed in to make or propose changes">
+ <svg aria-hidden="true" class="octicon octicon-trashcan" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M11 2H9c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1H2c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1v9c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V5c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm-1 12H3V5h1v8h1V5h1v8h1V5h1v8h1V5h1v9zm1-10H2V3h9v1z"/></svg>
+ </button>
+ </div>
+
+ <div class="file-info">
+ 464 lines (393 sloc)
+ <span class="file-info-divider"></span>
+ 22.8 KB
+ </div>
+</div>
+
+
+
+ <div itemprop="text" class="blob-wrapper data type-c">
+ <table class="highlight tab-size js-file-line-container" data-tab-size="4">
+ <tr>
+ <td id="L1" class="blob-num js-line-number" data-line-number="1"></td>
+ <td id="LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span></span></td>
+ </tr>
+ <tr>
+ <td id="L2" class="blob-num js-line-number" data-line-number="2"></td>
+ <td id="LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * LZ4 - Fast LZ compression algorithm</span></td>
+ </tr>
+ <tr>
+ <td id="L3" class="blob-num js-line-number" data-line-number="3"></td>
+ <td id="LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Header File</span></td>
+ </tr>
+ <tr>
+ <td id="L4" class="blob-num js-line-number" data-line-number="4"></td>
+ <td id="LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright (C) 2011-2016, Yann Collet.</span></td>
+ </tr>
+ <tr>
+ <td id="L5" class="blob-num js-line-number" data-line-number="5"></td>
+ <td id="LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
+ </tr>
+ <tr>
+ <td id="L6" class="blob-num js-line-number" data-line-number="6"></td>
+ <td id="LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)</span></td>
+ </tr>
+ <tr>
+ <td id="L7" class="blob-num js-line-number" data-line-number="7"></td>
+ <td id="LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
+ </tr>
+ <tr>
+ <td id="L8" class="blob-num js-line-number" data-line-number="8"></td>
+ <td id="LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Redistribution and use in source and binary forms, with or without</span></td>
+ </tr>
+ <tr>
+ <td id="L9" class="blob-num js-line-number" data-line-number="9"></td>
+ <td id="LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> modification, are permitted provided that the following conditions are</span></td>
+ </tr>
+ <tr>
+ <td id="L10" class="blob-num js-line-number" data-line-number="10"></td>
+ <td id="LC10" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> met:</span></td>
+ </tr>
+ <tr>
+ <td id="L11" class="blob-num js-line-number" data-line-number="11"></td>
+ <td id="LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
+ </tr>
+ <tr>
+ <td id="L12" class="blob-num js-line-number" data-line-number="12"></td>
+ <td id="LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Redistributions of source code must retain the above copyright</span></td>
+ </tr>
+ <tr>
+ <td id="L13" class="blob-num js-line-number" data-line-number="13"></td>
+ <td id="LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> notice, this list of conditions and the following disclaimer.</span></td>
+ </tr>
+ <tr>
+ <td id="L14" class="blob-num js-line-number" data-line-number="14"></td>
+ <td id="LC14" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Redistributions in binary form must reproduce the above</span></td>
+ </tr>
+ <tr>
+ <td id="L15" class="blob-num js-line-number" data-line-number="15"></td>
+ <td id="LC15" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> copyright notice, this list of conditions and the following disclaimer</span></td>
+ </tr>
+ <tr>
+ <td id="L16" class="blob-num js-line-number" data-line-number="16"></td>
+ <td id="LC16" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> in the documentation and/or other materials provided with the</span></td>
+ </tr>
+ <tr>
+ <td id="L17" class="blob-num js-line-number" data-line-number="17"></td>
+ <td id="LC17" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> distribution.</span></td>
+ </tr>
+ <tr>
+ <td id="L18" class="blob-num js-line-number" data-line-number="18"></td>
+ <td id="LC18" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
+ </tr>
+ <tr>
+ <td id="L19" class="blob-num js-line-number" data-line-number="19"></td>
+ <td id="LC19" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS</span></td>
+ </tr>
+ <tr>
+ <td id="L20" class="blob-num js-line-number" data-line-number="20"></td>
+ <td id="LC20" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT</span></td>
+ </tr>
+ <tr>
+ <td id="L21" class="blob-num js-line-number" data-line-number="21"></td>
+ <td id="LC21" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR</span></td>
+ </tr>
+ <tr>
+ <td id="L22" class="blob-num js-line-number" data-line-number="22"></td>
+ <td id="LC22" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT</span></td>
+ </tr>
+ <tr>
+ <td id="L23" class="blob-num js-line-number" data-line-number="23"></td>
+ <td id="LC23" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span></td>
+ </tr>
+ <tr>
+ <td id="L24" class="blob-num js-line-number" data-line-number="24"></td>
+ <td id="LC24" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT</span></td>
+ </tr>
+ <tr>
+ <td id="L25" class="blob-num js-line-number" data-line-number="25"></td>
+ <td id="LC25" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,</span></td>
+ </tr>
+ <tr>
+ <td id="L26" class="blob-num js-line-number" data-line-number="26"></td>
+ <td id="LC26" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY</span></td>
+ </tr>
+ <tr>
+ <td id="L27" class="blob-num js-line-number" data-line-number="27"></td>
+ <td id="LC27" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span></td>
+ </tr>
+ <tr>
+ <td id="L28" class="blob-num js-line-number" data-line-number="28"></td>
+ <td id="LC28" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE</span></td>
+ </tr>
+ <tr>
+ <td id="L29" class="blob-num js-line-number" data-line-number="29"></td>
+ <td id="LC29" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span></td>
+ </tr>
+ <tr>
+ <td id="L30" class="blob-num js-line-number" data-line-number="30"></td>
+ <td id="LC30" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
+ </tr>
+ <tr>
+ <td id="L31" class="blob-num js-line-number" data-line-number="31"></td>
+ <td id="LC31" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> You can contact the author at :</span></td>
+ </tr>
+ <tr>
+ <td id="L32" class="blob-num js-line-number" data-line-number="32"></td>
+ <td id="LC32" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> - LZ4 homepage : http://www.lz4.org</span></td>
+ </tr>
+ <tr>
+ <td id="L33" class="blob-num js-line-number" data-line-number="33"></td>
+ <td id="LC33" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> - LZ4 source repository : https://github.com/lz4/lz4</span></td>
+ </tr>
+ <tr>
+ <td id="L34" class="blob-num js-line-number" data-line-number="34"></td>
+ <td id="LC34" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L35" class="blob-num js-line-number" data-line-number="35"></td>
+ <td id="LC35" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">ifndef</span> LZ4_H_2983827168210</td>
+ </tr>
+ <tr>
+ <td id="L36" class="blob-num js-line-number" data-line-number="36"></td>
+ <td id="LC36" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4_H_2983827168210</span></td>
+ </tr>
+ <tr>
+ <td id="L37" class="blob-num js-line-number" data-line-number="37"></td>
+ <td id="LC37" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L38" class="blob-num js-line-number" data-line-number="38"></td>
+ <td id="LC38" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">if</span> defined (__cplusplus)</td>
+ </tr>
+ <tr>
+ <td id="L39" class="blob-num js-line-number" data-line-number="39"></td>
+ <td id="LC39" class="blob-code blob-code-inner js-file-line"><span class="pl-k">extern</span> <span class="pl-s"><span class="pl-pds">&quot;</span>C<span class="pl-pds">&quot;</span></span> {</td>
+ </tr>
+ <tr>
+ <td id="L40" class="blob-num js-line-number" data-line-number="40"></td>
+ <td id="LC40" class="blob-code blob-code-inner js-file-line">#endif</td>
+ </tr>
+ <tr>
+ <td id="L41" class="blob-num js-line-number" data-line-number="41"></td>
+ <td id="LC41" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L42" class="blob-num js-line-number" data-line-number="42"></td>
+ <td id="LC42" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span> --- Dependency --- <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L43" class="blob-num js-line-number" data-line-number="43"></td>
+ <td id="LC43" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds">&lt;</span>stddef.h<span class="pl-pds">&gt;</span></span> <span class="pl-c"><span class="pl-c">/*</span> size_t <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L44" class="blob-num js-line-number" data-line-number="44"></td>
+ <td id="LC44" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L45" class="blob-num js-line-number" data-line-number="45"></td>
+ <td id="LC45" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L46" class="blob-num js-line-number" data-line-number="46"></td>
+ <td id="LC46" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>*</span></td>
+ </tr>
+ <tr>
+ <td id="L47" class="blob-num js-line-number" data-line-number="47"></td>
+ <td id="LC47" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Introduction</span></td>
+ </tr>
+ <tr>
+ <td id="L48" class="blob-num js-line-number" data-line-number="48"></td>
+ <td id="LC48" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
+ </tr>
+ <tr>
+ <td id="L49" class="blob-num js-line-number" data-line-number="49"></td>
+ <td id="LC49" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> LZ4 is lossless compression algorithm, providing compression speed at 400 MB/s per core,</span></td>
+ </tr>
+ <tr>
+ <td id="L50" class="blob-num js-line-number" data-line-number="50"></td>
+ <td id="LC50" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> scalable with multi-cores CPU. It features an extremely fast decoder, with speed in</span></td>
+ </tr>
+ <tr>
+ <td id="L51" class="blob-num js-line-number" data-line-number="51"></td>
+ <td id="LC51" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> multiple GB/s per core, typically reaching RAM speed limits on multi-core systems.</span></td>
+ </tr>
+ <tr>
+ <td id="L52" class="blob-num js-line-number" data-line-number="52"></td>
+ <td id="LC52" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
+ </tr>
+ <tr>
+ <td id="L53" class="blob-num js-line-number" data-line-number="53"></td>
+ <td id="LC53" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> The LZ4 compression library provides in-memory compression and decompression functions.</span></td>
+ </tr>
+ <tr>
+ <td id="L54" class="blob-num js-line-number" data-line-number="54"></td>
+ <td id="LC54" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Compression can be done in:</span></td>
+ </tr>
+ <tr>
+ <td id="L55" class="blob-num js-line-number" data-line-number="55"></td>
+ <td id="LC55" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> - a single step (described as Simple Functions)</span></td>
+ </tr>
+ <tr>
+ <td id="L56" class="blob-num js-line-number" data-line-number="56"></td>
+ <td id="LC56" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> - a single step, reusing a context (described in Advanced Functions)</span></td>
+ </tr>
+ <tr>
+ <td id="L57" class="blob-num js-line-number" data-line-number="57"></td>
+ <td id="LC57" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> - unbounded multiple steps (described as Streaming compression)</span></td>
+ </tr>
+ <tr>
+ <td id="L58" class="blob-num js-line-number" data-line-number="58"></td>
+ <td id="LC58" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
+ </tr>
+ <tr>
+ <td id="L59" class="blob-num js-line-number" data-line-number="59"></td>
+ <td id="LC59" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> lz4.h provides block compression functions. It gives full buffer control to user.</span></td>
+ </tr>
+ <tr>
+ <td id="L60" class="blob-num js-line-number" data-line-number="60"></td>
+ <td id="LC60" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Decompressing an lz4-compressed block also requires metadata (such as compressed size).</span></td>
+ </tr>
+ <tr>
+ <td id="L61" class="blob-num js-line-number" data-line-number="61"></td>
+ <td id="LC61" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Each application is free to encode such metadata in whichever way it wants.</span></td>
+ </tr>
+ <tr>
+ <td id="L62" class="blob-num js-line-number" data-line-number="62"></td>
+ <td id="LC62" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
+ </tr>
+ <tr>
+ <td id="L63" class="blob-num js-line-number" data-line-number="63"></td>
+ <td id="LC63" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> An additional format, called LZ4 frame specification (doc/lz4_Frame_format.md),</span></td>
+ </tr>
+ <tr>
+ <td id="L64" class="blob-num js-line-number" data-line-number="64"></td>
+ <td id="LC64" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> take care of encoding standard metadata alongside LZ4-compressed blocks.</span></td>
+ </tr>
+ <tr>
+ <td id="L65" class="blob-num js-line-number" data-line-number="65"></td>
+ <td id="LC65" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> If your application requires interoperability, it&#39;s recommended to use it.</span></td>
+ </tr>
+ <tr>
+ <td id="L66" class="blob-num js-line-number" data-line-number="66"></td>
+ <td id="LC66" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> A library is provided to take care of it, see lz4frame.h.</span></td>
+ </tr>
+ <tr>
+ <td id="L67" class="blob-num js-line-number" data-line-number="67"></td>
+ <td id="LC67" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L68" class="blob-num js-line-number" data-line-number="68"></td>
+ <td id="LC68" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L69" class="blob-num js-line-number" data-line-number="69"></td>
+ <td id="LC69" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>^***************************************************************</span></td>
+ </tr>
+ <tr>
+ <td id="L70" class="blob-num js-line-number" data-line-number="70"></td>
+ <td id="LC70" class="blob-code blob-code-inner js-file-line"><span class="pl-c">* Export parameters</span></td>
+ </tr>
+ <tr>
+ <td id="L71" class="blob-num js-line-number" data-line-number="71"></td>
+ <td id="LC71" class="blob-code blob-code-inner js-file-line"><span class="pl-c">****************************************************************<span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L72" class="blob-num js-line-number" data-line-number="72"></td>
+ <td id="LC72" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span></span></td>
+ </tr>
+ <tr>
+ <td id="L73" class="blob-num js-line-number" data-line-number="73"></td>
+ <td id="LC73" class="blob-code blob-code-inner js-file-line"><span class="pl-c">* LZ4_DLL_EXPORT :</span></td>
+ </tr>
+ <tr>
+ <td id="L74" class="blob-num js-line-number" data-line-number="74"></td>
+ <td id="LC74" class="blob-code blob-code-inner js-file-line"><span class="pl-c">* Enable exporting of functions when building a Windows DLL</span></td>
+ </tr>
+ <tr>
+ <td id="L75" class="blob-num js-line-number" data-line-number="75"></td>
+ <td id="LC75" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L76" class="blob-num js-line-number" data-line-number="76"></td>
+ <td id="LC76" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">if</span> defined(LZ4_DLL_EXPORT) &amp;&amp; (LZ4_DLL_EXPORT==1)</td>
+ </tr>
+ <tr>
+ <td id="L77" class="blob-num js-line-number" data-line-number="77"></td>
+ <td id="LC77" class="blob-code blob-code-inner js-file-line"># <span class="pl-k">define</span> <span class="pl-en">LZ4LIB_API</span> <span class="pl-en">__declspec</span>(dllexport)</td>
+ </tr>
+ <tr>
+ <td id="L78" class="blob-num js-line-number" data-line-number="78"></td>
+ <td id="LC78" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">elif</span> defined(LZ4_DLL_IMPORT) &amp;&amp; (LZ4_DLL_IMPORT==1)</td>
+ </tr>
+ <tr>
+ <td id="L79" class="blob-num js-line-number" data-line-number="79"></td>
+ <td id="LC79" class="blob-code blob-code-inner js-file-line"># <span class="pl-k">define</span> <span class="pl-en">LZ4LIB_API</span> <span class="pl-en">__declspec</span>(dllimport) <span class="pl-c"><span class="pl-c">/*</span> It isn&#39;t required but allows to generate better code, saving a function pointer load from the IAT and an indirect jump.<span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L80" class="blob-num js-line-number" data-line-number="80"></td>
+ <td id="LC80" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">else</span></td>
+ </tr>
+ <tr>
+ <td id="L81" class="blob-num js-line-number" data-line-number="81"></td>
+ <td id="LC81" class="blob-code blob-code-inner js-file-line"># <span class="pl-k">define</span> <span class="pl-en">LZ4LIB_API</span></td>
+ </tr>
+ <tr>
+ <td id="L82" class="blob-num js-line-number" data-line-number="82"></td>
+ <td id="LC82" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">endif</span></td>
+ </tr>
+ <tr>
+ <td id="L83" class="blob-num js-line-number" data-line-number="83"></td>
+ <td id="LC83" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L84" class="blob-num js-line-number" data-line-number="84"></td>
+ <td id="LC84" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L85" class="blob-num js-line-number" data-line-number="85"></td>
+ <td id="LC85" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>========== Version =========== <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L86" class="blob-num js-line-number" data-line-number="86"></td>
+ <td id="LC86" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4_VERSION_MAJOR</span> <span class="pl-c1">1</span> <span class="pl-c"><span class="pl-c">/*</span> for breaking interface changes <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L87" class="blob-num js-line-number" data-line-number="87"></td>
+ <td id="LC87" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4_VERSION_MINOR</span> <span class="pl-c1">7</span> <span class="pl-c"><span class="pl-c">/*</span> for new (non-breaking) interface capabilities <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L88" class="blob-num js-line-number" data-line-number="88"></td>
+ <td id="LC88" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4_VERSION_RELEASE</span> <span class="pl-c1">5</span> <span class="pl-c"><span class="pl-c">/*</span> for tweaks, bug-fixes, or development <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L89" class="blob-num js-line-number" data-line-number="89"></td>
+ <td id="LC89" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L90" class="blob-num js-line-number" data-line-number="90"></td>
+ <td id="LC90" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4_VERSION_NUMBER</span> (LZ4_VERSION_MAJOR *<span class="pl-c1">100</span>*<span class="pl-c1">100</span> + LZ4_VERSION_MINOR *<span class="pl-c1">100</span> + LZ4_VERSION_RELEASE)</td>
+ </tr>
+ <tr>
+ <td id="L91" class="blob-num js-line-number" data-line-number="91"></td>
+ <td id="LC91" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L92" class="blob-num js-line-number" data-line-number="92"></td>
+ <td id="LC92" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4_LIB_VERSION</span> LZ4_VERSION_MAJOR.LZ4_VERSION_MINOR.LZ4_VERSION_RELEASE</td>
+ </tr>
+ <tr>
+ <td id="L93" class="blob-num js-line-number" data-line-number="93"></td>
+ <td id="LC93" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4_QUOTE</span>(<span class="pl-v">str</span>) #str</td>
+ </tr>
+ <tr>
+ <td id="L94" class="blob-num js-line-number" data-line-number="94"></td>
+ <td id="LC94" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4_EXPAND_AND_QUOTE</span>(<span class="pl-v">str</span>) LZ4_QUOTE(str)</td>
+ </tr>
+ <tr>
+ <td id="L95" class="blob-num js-line-number" data-line-number="95"></td>
+ <td id="LC95" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4_VERSION_STRING</span> <span class="pl-en">LZ4_EXPAND_AND_QUOTE</span>(LZ4_LIB_VERSION)</td>
+ </tr>
+ <tr>
+ <td id="L96" class="blob-num js-line-number" data-line-number="96"></td>
+ <td id="LC96" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L97" class="blob-num js-line-number" data-line-number="97"></td>
+ <td id="LC97" class="blob-code blob-code-inner js-file-line">LZ4LIB_API int LZ4_versionNumber (<span class="pl-k">void</span>);</td>
+ </tr>
+ <tr>
+ <td id="L98" class="blob-num js-line-number" data-line-number="98"></td>
+ <td id="LC98" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">const</span> <span class="pl-k">char</span>* <span class="pl-c1">LZ4_versionString</span> (<span class="pl-k">void</span>);</td>
+ </tr>
+ <tr>
+ <td id="L99" class="blob-num js-line-number" data-line-number="99"></td>
+ <td id="LC99" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L100" class="blob-num js-line-number" data-line-number="100"></td>
+ <td id="LC100" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L101" class="blob-num js-line-number" data-line-number="101"></td>
+ <td id="LC101" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>-************************************</span></td>
+ </tr>
+ <tr>
+ <td id="L102" class="blob-num js-line-number" data-line-number="102"></td>
+ <td id="LC102" class="blob-code blob-code-inner js-file-line"><span class="pl-c">* Tuning parameter</span></td>
+ </tr>
+ <tr>
+ <td id="L103" class="blob-num js-line-number" data-line-number="103"></td>
+ <td id="LC103" class="blob-code blob-code-inner js-file-line"><span class="pl-c">*************************************<span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L104" class="blob-num js-line-number" data-line-number="104"></td>
+ <td id="LC104" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>!</span></td>
+ </tr>
+ <tr>
+ <td id="L105" class="blob-num js-line-number" data-line-number="105"></td>
+ <td id="LC105" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * LZ4_MEMORY_USAGE :</span></td>
+ </tr>
+ <tr>
+ <td id="L106" class="blob-num js-line-number" data-line-number="106"></td>
+ <td id="LC106" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Memory usage formula : N-&gt;2^N Bytes (examples : 10 -&gt; 1KB; 12 -&gt; 4KB ; 16 -&gt; 64KB; 20 -&gt; 1MB; etc.)</span></td>
+ </tr>
+ <tr>
+ <td id="L107" class="blob-num js-line-number" data-line-number="107"></td>
+ <td id="LC107" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Increasing memory usage improves compression ratio</span></td>
+ </tr>
+ <tr>
+ <td id="L108" class="blob-num js-line-number" data-line-number="108"></td>
+ <td id="LC108" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Reduced memory usage can improve speed, due to cache effect</span></td>
+ </tr>
+ <tr>
+ <td id="L109" class="blob-num js-line-number" data-line-number="109"></td>
+ <td id="LC109" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Default value is 14, for 16KB, which nicely fits into Intel x86 L1 cache</span></td>
+ </tr>
+ <tr>
+ <td id="L110" class="blob-num js-line-number" data-line-number="110"></td>
+ <td id="LC110" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L111" class="blob-num js-line-number" data-line-number="111"></td>
+ <td id="LC111" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4_MEMORY_USAGE</span> <span class="pl-c1">14</span></td>
+ </tr>
+ <tr>
+ <td id="L112" class="blob-num js-line-number" data-line-number="112"></td>
+ <td id="LC112" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L113" class="blob-num js-line-number" data-line-number="113"></td>
+ <td id="LC113" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L114" class="blob-num js-line-number" data-line-number="114"></td>
+ <td id="LC114" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>-************************************</span></td>
+ </tr>
+ <tr>
+ <td id="L115" class="blob-num js-line-number" data-line-number="115"></td>
+ <td id="LC115" class="blob-code blob-code-inner js-file-line"><span class="pl-c">* Simple Functions</span></td>
+ </tr>
+ <tr>
+ <td id="L116" class="blob-num js-line-number" data-line-number="116"></td>
+ <td id="LC116" class="blob-code blob-code-inner js-file-line"><span class="pl-c">*************************************<span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L117" class="blob-num js-line-number" data-line-number="117"></td>
+ <td id="LC117" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>! LZ4_compress_default() :</span></td>
+ </tr>
+ <tr>
+ <td id="L118" class="blob-num js-line-number" data-line-number="118"></td>
+ <td id="LC118" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Compresses &#39;sourceSize&#39; bytes from buffer &#39;source&#39;</span></td>
+ </tr>
+ <tr>
+ <td id="L119" class="blob-num js-line-number" data-line-number="119"></td>
+ <td id="LC119" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> into already allocated &#39;dest&#39; buffer of size &#39;maxDestSize&#39;.</span></td>
+ </tr>
+ <tr>
+ <td id="L120" class="blob-num js-line-number" data-line-number="120"></td>
+ <td id="LC120" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Compression is guaranteed to succeed if &#39;maxDestSize&#39; &gt;= LZ4_compressBound(sourceSize).</span></td>
+ </tr>
+ <tr>
+ <td id="L121" class="blob-num js-line-number" data-line-number="121"></td>
+ <td id="LC121" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> It also runs faster, so it&#39;s a recommended setting.</span></td>
+ </tr>
+ <tr>
+ <td id="L122" class="blob-num js-line-number" data-line-number="122"></td>
+ <td id="LC122" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> If the function cannot compress &#39;source&#39; into a more limited &#39;dest&#39; budget,</span></td>
+ </tr>
+ <tr>
+ <td id="L123" class="blob-num js-line-number" data-line-number="123"></td>
+ <td id="LC123" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> compression stops *immediately*, and the function result is zero.</span></td>
+ </tr>
+ <tr>
+ <td id="L124" class="blob-num js-line-number" data-line-number="124"></td>
+ <td id="LC124" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> As a consequence, &#39;dest&#39; content is not valid.</span></td>
+ </tr>
+ <tr>
+ <td id="L125" class="blob-num js-line-number" data-line-number="125"></td>
+ <td id="LC125" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> This function never writes outside &#39;dest&#39; buffer, nor read outside &#39;source&#39; buffer.</span></td>
+ </tr>
+ <tr>
+ <td id="L126" class="blob-num js-line-number" data-line-number="126"></td>
+ <td id="LC126" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> sourceSize : Max supported value is LZ4_MAX_INPUT_VALUE</span></td>
+ </tr>
+ <tr>
+ <td id="L127" class="blob-num js-line-number" data-line-number="127"></td>
+ <td id="LC127" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> maxDestSize : full or partial size of buffer &#39;dest&#39; (which must be already allocated)</span></td>
+ </tr>
+ <tr>
+ <td id="L128" class="blob-num js-line-number" data-line-number="128"></td>
+ <td id="LC128" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> return : the number of bytes written into buffer &#39;dest&#39; (necessarily &lt;= maxOutputSize)</span></td>
+ </tr>
+ <tr>
+ <td id="L129" class="blob-num js-line-number" data-line-number="129"></td>
+ <td id="LC129" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> or 0 if compression fails <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L130" class="blob-num js-line-number" data-line-number="130"></td>
+ <td id="LC130" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-smi">LZ4_compress_default</span>(<span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> sourceSize, <span class="pl-k">int</span> maxDestSize);</td>
+ </tr>
+ <tr>
+ <td id="L131" class="blob-num js-line-number" data-line-number="131"></td>
+ <td id="LC131" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L132" class="blob-num js-line-number" data-line-number="132"></td>
+ <td id="LC132" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>! LZ4_decompress_safe() :</span></td>
+ </tr>
+ <tr>
+ <td id="L133" class="blob-num js-line-number" data-line-number="133"></td>
+ <td id="LC133" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> compressedSize : is the precise full size of the compressed block.</span></td>
+ </tr>
+ <tr>
+ <td id="L134" class="blob-num js-line-number" data-line-number="134"></td>
+ <td id="LC134" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> maxDecompressedSize : is the size of destination buffer, which must be already allocated.</span></td>
+ </tr>
+ <tr>
+ <td id="L135" class="blob-num js-line-number" data-line-number="135"></td>
+ <td id="LC135" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> return : the number of bytes decompressed into destination buffer (necessarily &lt;= maxDecompressedSize)</span></td>
+ </tr>
+ <tr>
+ <td id="L136" class="blob-num js-line-number" data-line-number="136"></td>
+ <td id="LC136" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> If destination buffer is not large enough, decoding will stop and output an error code (&lt;0).</span></td>
+ </tr>
+ <tr>
+ <td id="L137" class="blob-num js-line-number" data-line-number="137"></td>
+ <td id="LC137" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> If the source stream is detected malformed, the function will stop decoding and return a negative result.</span></td>
+ </tr>
+ <tr>
+ <td id="L138" class="blob-num js-line-number" data-line-number="138"></td>
+ <td id="LC138" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> This function is protected against buffer overflow exploits, including malicious data packets.</span></td>
+ </tr>
+ <tr>
+ <td id="L139" class="blob-num js-line-number" data-line-number="139"></td>
+ <td id="LC139" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> It never writes outside output buffer, nor reads outside input buffer.</span></td>
+ </tr>
+ <tr>
+ <td id="L140" class="blob-num js-line-number" data-line-number="140"></td>
+ <td id="LC140" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L141" class="blob-num js-line-number" data-line-number="141"></td>
+ <td id="LC141" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-smi">LZ4_decompress_safe</span> (<span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> compressedSize, <span class="pl-k">int</span> maxDecompressedSize);</td>
+ </tr>
+ <tr>
+ <td id="L142" class="blob-num js-line-number" data-line-number="142"></td>
+ <td id="LC142" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L143" class="blob-num js-line-number" data-line-number="143"></td>
+ <td id="LC143" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L144" class="blob-num js-line-number" data-line-number="144"></td>
+ <td id="LC144" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>-************************************</span></td>
+ </tr>
+ <tr>
+ <td id="L145" class="blob-num js-line-number" data-line-number="145"></td>
+ <td id="LC145" class="blob-code blob-code-inner js-file-line"><span class="pl-c">* Advanced Functions</span></td>
+ </tr>
+ <tr>
+ <td id="L146" class="blob-num js-line-number" data-line-number="146"></td>
+ <td id="LC146" class="blob-code blob-code-inner js-file-line"><span class="pl-c">*************************************<span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L147" class="blob-num js-line-number" data-line-number="147"></td>
+ <td id="LC147" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4_MAX_INPUT_SIZE</span> 0x7E000000 <span class="pl-c"><span class="pl-c">/*</span> 2 113 929 216 bytes <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L148" class="blob-num js-line-number" data-line-number="148"></td>
+ <td id="LC148" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4_COMPRESSBOUND</span>(<span class="pl-v">isize</span>) ((<span class="pl-k">unsigned</span>)(isize) &gt; (<span class="pl-k">unsigned</span>)LZ4_MAX_INPUT_SIZE ? <span class="pl-c1">0</span> : (isize) + ((isize)/<span class="pl-c1">255</span>) + <span class="pl-c1">16</span>)</td>
+ </tr>
+ <tr>
+ <td id="L149" class="blob-num js-line-number" data-line-number="149"></td>
+ <td id="LC149" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L150" class="blob-num js-line-number" data-line-number="150"></td>
+ <td id="LC150" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>!</span></td>
+ </tr>
+ <tr>
+ <td id="L151" class="blob-num js-line-number" data-line-number="151"></td>
+ <td id="LC151" class="blob-code blob-code-inner js-file-line"><span class="pl-c">LZ4_compressBound() :</span></td>
+ </tr>
+ <tr>
+ <td id="L152" class="blob-num js-line-number" data-line-number="152"></td>
+ <td id="LC152" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Provides the maximum size that LZ4 compression may output in a &quot;worst case&quot; scenario (input data not compressible)</span></td>
+ </tr>
+ <tr>
+ <td id="L153" class="blob-num js-line-number" data-line-number="153"></td>
+ <td id="LC153" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> This function is primarily useful for memory allocation purposes (destination buffer size).</span></td>
+ </tr>
+ <tr>
+ <td id="L154" class="blob-num js-line-number" data-line-number="154"></td>
+ <td id="LC154" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Macro LZ4_COMPRESSBOUND() is also provided for compilation-time evaluation (stack memory allocation for example).</span></td>
+ </tr>
+ <tr>
+ <td id="L155" class="blob-num js-line-number" data-line-number="155"></td>
+ <td id="LC155" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Note that LZ4_compress_default() compress faster when dest buffer size is &gt;= LZ4_compressBound(srcSize)</span></td>
+ </tr>
+ <tr>
+ <td id="L156" class="blob-num js-line-number" data-line-number="156"></td>
+ <td id="LC156" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> inputSize : max supported value is LZ4_MAX_INPUT_SIZE</span></td>
+ </tr>
+ <tr>
+ <td id="L157" class="blob-num js-line-number" data-line-number="157"></td>
+ <td id="LC157" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> return : maximum output size in a &quot;worst case&quot; scenario</span></td>
+ </tr>
+ <tr>
+ <td id="L158" class="blob-num js-line-number" data-line-number="158"></td>
+ <td id="LC158" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> or 0, if input size is too large ( &gt; LZ4_MAX_INPUT_SIZE)</span></td>
+ </tr>
+ <tr>
+ <td id="L159" class="blob-num js-line-number" data-line-number="159"></td>
+ <td id="LC159" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L160" class="blob-num js-line-number" data-line-number="160"></td>
+ <td id="LC160" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-smi">LZ4_compressBound</span>(<span class="pl-k">int</span> inputSize);</td>
+ </tr>
+ <tr>
+ <td id="L161" class="blob-num js-line-number" data-line-number="161"></td>
+ <td id="LC161" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L162" class="blob-num js-line-number" data-line-number="162"></td>
+ <td id="LC162" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>!</span></td>
+ </tr>
+ <tr>
+ <td id="L163" class="blob-num js-line-number" data-line-number="163"></td>
+ <td id="LC163" class="blob-code blob-code-inner js-file-line"><span class="pl-c">LZ4_compress_fast() :</span></td>
+ </tr>
+ <tr>
+ <td id="L164" class="blob-num js-line-number" data-line-number="164"></td>
+ <td id="LC164" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Same as LZ4_compress_default(), but allows to select an &quot;acceleration&quot; factor.</span></td>
+ </tr>
+ <tr>
+ <td id="L165" class="blob-num js-line-number" data-line-number="165"></td>
+ <td id="LC165" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> The larger the acceleration value, the faster the algorithm, but also the lesser the compression.</span></td>
+ </tr>
+ <tr>
+ <td id="L166" class="blob-num js-line-number" data-line-number="166"></td>
+ <td id="LC166" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> It&#39;s a trade-off. It can be fine tuned, with each successive value providing roughly +~3% to speed.</span></td>
+ </tr>
+ <tr>
+ <td id="L167" class="blob-num js-line-number" data-line-number="167"></td>
+ <td id="LC167" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> An acceleration value of &quot;1&quot; is the same as regular LZ4_compress_default()</span></td>
+ </tr>
+ <tr>
+ <td id="L168" class="blob-num js-line-number" data-line-number="168"></td>
+ <td id="LC168" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Values &lt;= 0 will be replaced by ACCELERATION_DEFAULT (see lz4.c), which is 1.</span></td>
+ </tr>
+ <tr>
+ <td id="L169" class="blob-num js-line-number" data-line-number="169"></td>
+ <td id="LC169" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L170" class="blob-num js-line-number" data-line-number="170"></td>
+ <td id="LC170" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-smi">LZ4_compress_fast</span> (<span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> sourceSize, <span class="pl-k">int</span> maxDestSize, <span class="pl-k">int</span> acceleration);</td>
+ </tr>
+ <tr>
+ <td id="L171" class="blob-num js-line-number" data-line-number="171"></td>
+ <td id="LC171" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L172" class="blob-num js-line-number" data-line-number="172"></td>
+ <td id="LC172" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L173" class="blob-num js-line-number" data-line-number="173"></td>
+ <td id="LC173" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>!</span></td>
+ </tr>
+ <tr>
+ <td id="L174" class="blob-num js-line-number" data-line-number="174"></td>
+ <td id="LC174" class="blob-code blob-code-inner js-file-line"><span class="pl-c">LZ4_compress_fast_extState() :</span></td>
+ </tr>
+ <tr>
+ <td id="L175" class="blob-num js-line-number" data-line-number="175"></td>
+ <td id="LC175" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Same compression function, just using an externally allocated memory space to store compression state.</span></td>
+ </tr>
+ <tr>
+ <td id="L176" class="blob-num js-line-number" data-line-number="176"></td>
+ <td id="LC176" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Use LZ4_sizeofState() to know how much memory must be allocated,</span></td>
+ </tr>
+ <tr>
+ <td id="L177" class="blob-num js-line-number" data-line-number="177"></td>
+ <td id="LC177" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> and allocate it on 8-bytes boundaries (using malloc() typically).</span></td>
+ </tr>
+ <tr>
+ <td id="L178" class="blob-num js-line-number" data-line-number="178"></td>
+ <td id="LC178" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Then, provide it as &#39;void* state&#39; to compression function.</span></td>
+ </tr>
+ <tr>
+ <td id="L179" class="blob-num js-line-number" data-line-number="179"></td>
+ <td id="LC179" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L180" class="blob-num js-line-number" data-line-number="180"></td>
+ <td id="LC180" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-smi">LZ4_sizeofState</span>(<span class="pl-k">void</span>);</td>
+ </tr>
+ <tr>
+ <td id="L181" class="blob-num js-line-number" data-line-number="181"></td>
+ <td id="LC181" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-smi">LZ4_compress_fast_extState</span> (<span class="pl-k">void</span>* state, <span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> inputSize, <span class="pl-k">int</span> maxDestSize, <span class="pl-k">int</span> acceleration);</td>
+ </tr>
+ <tr>
+ <td id="L182" class="blob-num js-line-number" data-line-number="182"></td>
+ <td id="LC182" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L183" class="blob-num js-line-number" data-line-number="183"></td>
+ <td id="LC183" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L184" class="blob-num js-line-number" data-line-number="184"></td>
+ <td id="LC184" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>!</span></td>
+ </tr>
+ <tr>
+ <td id="L185" class="blob-num js-line-number" data-line-number="185"></td>
+ <td id="LC185" class="blob-code blob-code-inner js-file-line"><span class="pl-c">LZ4_compress_destSize() :</span></td>
+ </tr>
+ <tr>
+ <td id="L186" class="blob-num js-line-number" data-line-number="186"></td>
+ <td id="LC186" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Reverse the logic, by compressing as much data as possible from &#39;source&#39; buffer</span></td>
+ </tr>
+ <tr>
+ <td id="L187" class="blob-num js-line-number" data-line-number="187"></td>
+ <td id="LC187" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> into already allocated buffer &#39;dest&#39; of size &#39;targetDestSize&#39;.</span></td>
+ </tr>
+ <tr>
+ <td id="L188" class="blob-num js-line-number" data-line-number="188"></td>
+ <td id="LC188" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> This function either compresses the entire &#39;source&#39; content into &#39;dest&#39; if it&#39;s large enough,</span></td>
+ </tr>
+ <tr>
+ <td id="L189" class="blob-num js-line-number" data-line-number="189"></td>
+ <td id="LC189" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> or fill &#39;dest&#39; buffer completely with as much data as possible from &#39;source&#39;.</span></td>
+ </tr>
+ <tr>
+ <td id="L190" class="blob-num js-line-number" data-line-number="190"></td>
+ <td id="LC190" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *sourceSizePtr : will be modified to indicate how many bytes where read from &#39;source&#39; to fill &#39;dest&#39;.</span></td>
+ </tr>
+ <tr>
+ <td id="L191" class="blob-num js-line-number" data-line-number="191"></td>
+ <td id="LC191" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> New value is necessarily &lt;= old value.</span></td>
+ </tr>
+ <tr>
+ <td id="L192" class="blob-num js-line-number" data-line-number="192"></td>
+ <td id="LC192" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> return : Nb bytes written into &#39;dest&#39; (necessarily &lt;= targetDestSize)</span></td>
+ </tr>
+ <tr>
+ <td id="L193" class="blob-num js-line-number" data-line-number="193"></td>
+ <td id="LC193" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> or 0 if compression fails</span></td>
+ </tr>
+ <tr>
+ <td id="L194" class="blob-num js-line-number" data-line-number="194"></td>
+ <td id="LC194" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L195" class="blob-num js-line-number" data-line-number="195"></td>
+ <td id="LC195" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-smi">LZ4_compress_destSize</span> (<span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span>* sourceSizePtr, <span class="pl-k">int</span> targetDestSize);</td>
+ </tr>
+ <tr>
+ <td id="L196" class="blob-num js-line-number" data-line-number="196"></td>
+ <td id="LC196" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L197" class="blob-num js-line-number" data-line-number="197"></td>
+ <td id="LC197" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L198" class="blob-num js-line-number" data-line-number="198"></td>
+ <td id="LC198" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>!</span></td>
+ </tr>
+ <tr>
+ <td id="L199" class="blob-num js-line-number" data-line-number="199"></td>
+ <td id="LC199" class="blob-code blob-code-inner js-file-line"><span class="pl-c">LZ4_decompress_fast() :</span></td>
+ </tr>
+ <tr>
+ <td id="L200" class="blob-num js-line-number" data-line-number="200"></td>
+ <td id="LC200" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> originalSize : is the original and therefore uncompressed size</span></td>
+ </tr>
+ <tr>
+ <td id="L201" class="blob-num js-line-number" data-line-number="201"></td>
+ <td id="LC201" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> return : the number of bytes read from the source buffer (in other words, the compressed size)</span></td>
+ </tr>
+ <tr>
+ <td id="L202" class="blob-num js-line-number" data-line-number="202"></td>
+ <td id="LC202" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> If the source stream is detected malformed, the function will stop decoding and return a negative result.</span></td>
+ </tr>
+ <tr>
+ <td id="L203" class="blob-num js-line-number" data-line-number="203"></td>
+ <td id="LC203" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Destination buffer must be already allocated. Its size must be a minimum of &#39;originalSize&#39; bytes.</span></td>
+ </tr>
+ <tr>
+ <td id="L204" class="blob-num js-line-number" data-line-number="204"></td>
+ <td id="LC204" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> note : This function fully respect memory boundaries for properly formed compressed data.</span></td>
+ </tr>
+ <tr>
+ <td id="L205" class="blob-num js-line-number" data-line-number="205"></td>
+ <td id="LC205" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> It is a bit faster than LZ4_decompress_safe().</span></td>
+ </tr>
+ <tr>
+ <td id="L206" class="blob-num js-line-number" data-line-number="206"></td>
+ <td id="LC206" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> However, it does not provide any protection against intentionally modified data stream (malicious input).</span></td>
+ </tr>
+ <tr>
+ <td id="L207" class="blob-num js-line-number" data-line-number="207"></td>
+ <td id="LC207" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Use this function in trusted environment only (data to decode comes from a trusted source).</span></td>
+ </tr>
+ <tr>
+ <td id="L208" class="blob-num js-line-number" data-line-number="208"></td>
+ <td id="LC208" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L209" class="blob-num js-line-number" data-line-number="209"></td>
+ <td id="LC209" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-smi">LZ4_decompress_fast</span> (<span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> originalSize);</td>
+ </tr>
+ <tr>
+ <td id="L210" class="blob-num js-line-number" data-line-number="210"></td>
+ <td id="LC210" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L211" class="blob-num js-line-number" data-line-number="211"></td>
+ <td id="LC211" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>!</span></td>
+ </tr>
+ <tr>
+ <td id="L212" class="blob-num js-line-number" data-line-number="212"></td>
+ <td id="LC212" class="blob-code blob-code-inner js-file-line"><span class="pl-c">LZ4_decompress_safe_partial() :</span></td>
+ </tr>
+ <tr>
+ <td id="L213" class="blob-num js-line-number" data-line-number="213"></td>
+ <td id="LC213" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> This function decompress a compressed block of size &#39;compressedSize&#39; at position &#39;source&#39;</span></td>
+ </tr>
+ <tr>
+ <td id="L214" class="blob-num js-line-number" data-line-number="214"></td>
+ <td id="LC214" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> into destination buffer &#39;dest&#39; of size &#39;maxDecompressedSize&#39;.</span></td>
+ </tr>
+ <tr>
+ <td id="L215" class="blob-num js-line-number" data-line-number="215"></td>
+ <td id="LC215" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> The function tries to stop decompressing operation as soon as &#39;targetOutputSize&#39; has been reached,</span></td>
+ </tr>
+ <tr>
+ <td id="L216" class="blob-num js-line-number" data-line-number="216"></td>
+ <td id="LC216" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> reducing decompression time.</span></td>
+ </tr>
+ <tr>
+ <td id="L217" class="blob-num js-line-number" data-line-number="217"></td>
+ <td id="LC217" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> return : the number of bytes decoded in the destination buffer (necessarily &lt;= maxDecompressedSize)</span></td>
+ </tr>
+ <tr>
+ <td id="L218" class="blob-num js-line-number" data-line-number="218"></td>
+ <td id="LC218" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Note : this number can be &lt; &#39;targetOutputSize&#39; should the compressed block to decode be smaller.</span></td>
+ </tr>
+ <tr>
+ <td id="L219" class="blob-num js-line-number" data-line-number="219"></td>
+ <td id="LC219" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Always control how many bytes were decoded.</span></td>
+ </tr>
+ <tr>
+ <td id="L220" class="blob-num js-line-number" data-line-number="220"></td>
+ <td id="LC220" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> If the source stream is detected malformed, the function will stop decoding and return a negative result.</span></td>
+ </tr>
+ <tr>
+ <td id="L221" class="blob-num js-line-number" data-line-number="221"></td>
+ <td id="LC221" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> This function never writes outside of output buffer, and never reads outside of input buffer. It is therefore protected against malicious data packets</span></td>
+ </tr>
+ <tr>
+ <td id="L222" class="blob-num js-line-number" data-line-number="222"></td>
+ <td id="LC222" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L223" class="blob-num js-line-number" data-line-number="223"></td>
+ <td id="LC223" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-smi">LZ4_decompress_safe_partial</span> (<span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> compressedSize, <span class="pl-k">int</span> targetOutputSize, <span class="pl-k">int</span> maxDecompressedSize);</td>
+ </tr>
+ <tr>
+ <td id="L224" class="blob-num js-line-number" data-line-number="224"></td>
+ <td id="LC224" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L225" class="blob-num js-line-number" data-line-number="225"></td>
+ <td id="LC225" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L226" class="blob-num js-line-number" data-line-number="226"></td>
+ <td id="LC226" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>-*********************************************</span></td>
+ </tr>
+ <tr>
+ <td id="L227" class="blob-num js-line-number" data-line-number="227"></td>
+ <td id="LC227" class="blob-code blob-code-inner js-file-line"><span class="pl-c">* Streaming Compression Functions</span></td>
+ </tr>
+ <tr>
+ <td id="L228" class="blob-num js-line-number" data-line-number="228"></td>
+ <td id="LC228" class="blob-code blob-code-inner js-file-line"><span class="pl-c">**********************************************<span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L229" class="blob-num js-line-number" data-line-number="229"></td>
+ <td id="LC229" class="blob-code blob-code-inner js-file-line"><span class="pl-k">typedef</span> <span class="pl-k">union</span> LZ4_stream_u LZ4_stream_t; <span class="pl-c"><span class="pl-c">/*</span> incomplete type (defined later) <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L230" class="blob-num js-line-number" data-line-number="230"></td>
+ <td id="LC230" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L231" class="blob-num js-line-number" data-line-number="231"></td>
+ <td id="LC231" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>! LZ4_createStream() and LZ4_freeStream() :</span></td>
+ </tr>
+ <tr>
+ <td id="L232" class="blob-num js-line-number" data-line-number="232"></td>
+ <td id="LC232" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * LZ4_createStream() will allocate and initialize an `LZ4_stream_t` structure.</span></td>
+ </tr>
+ <tr>
+ <td id="L233" class="blob-num js-line-number" data-line-number="233"></td>
+ <td id="LC233" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * LZ4_freeStream() releases its memory.</span></td>
+ </tr>
+ <tr>
+ <td id="L234" class="blob-num js-line-number" data-line-number="234"></td>
+ <td id="LC234" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L235" class="blob-num js-line-number" data-line-number="235"></td>
+ <td id="LC235" class="blob-code blob-code-inner js-file-line">LZ4LIB_API LZ4_stream_t* <span class="pl-c1">LZ4_createStream</span>(<span class="pl-k">void</span>);</td>
+ </tr>
+ <tr>
+ <td id="L236" class="blob-num js-line-number" data-line-number="236"></td>
+ <td id="LC236" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-smi">LZ4_freeStream</span> (LZ4_stream_t* streamPtr);</td>
+ </tr>
+ <tr>
+ <td id="L237" class="blob-num js-line-number" data-line-number="237"></td>
+ <td id="LC237" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L238" class="blob-num js-line-number" data-line-number="238"></td>
+ <td id="LC238" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>! LZ4_resetStream() :</span></td>
+ </tr>
+ <tr>
+ <td id="L239" class="blob-num js-line-number" data-line-number="239"></td>
+ <td id="LC239" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * An LZ4_stream_t structure can be allocated once and re-used multiple times.</span></td>
+ </tr>
+ <tr>
+ <td id="L240" class="blob-num js-line-number" data-line-number="240"></td>
+ <td id="LC240" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Use this function to init an allocated `LZ4_stream_t` structure and start a new compression.</span></td>
+ </tr>
+ <tr>
+ <td id="L241" class="blob-num js-line-number" data-line-number="241"></td>
+ <td id="LC241" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L242" class="blob-num js-line-number" data-line-number="242"></td>
+ <td id="LC242" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">void</span> <span class="pl-smi">LZ4_resetStream</span> (LZ4_stream_t* streamPtr);</td>
+ </tr>
+ <tr>
+ <td id="L243" class="blob-num js-line-number" data-line-number="243"></td>
+ <td id="LC243" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L244" class="blob-num js-line-number" data-line-number="244"></td>
+ <td id="LC244" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>! LZ4_loadDict() :</span></td>
+ </tr>
+ <tr>
+ <td id="L245" class="blob-num js-line-number" data-line-number="245"></td>
+ <td id="LC245" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Use this function to load a static dictionary into LZ4_stream.</span></td>
+ </tr>
+ <tr>
+ <td id="L246" class="blob-num js-line-number" data-line-number="246"></td>
+ <td id="LC246" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Any previous data will be forgotten, only &#39;dictionary&#39; will remain in memory.</span></td>
+ </tr>
+ <tr>
+ <td id="L247" class="blob-num js-line-number" data-line-number="247"></td>
+ <td id="LC247" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Loading a size of 0 is allowed.</span></td>
+ </tr>
+ <tr>
+ <td id="L248" class="blob-num js-line-number" data-line-number="248"></td>
+ <td id="LC248" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Return : dictionary size, in bytes (necessarily &lt;= 64 KB)</span></td>
+ </tr>
+ <tr>
+ <td id="L249" class="blob-num js-line-number" data-line-number="249"></td>
+ <td id="LC249" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L250" class="blob-num js-line-number" data-line-number="250"></td>
+ <td id="LC250" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-smi">LZ4_loadDict</span> (LZ4_stream_t* streamPtr, <span class="pl-k">const</span> <span class="pl-k">char</span>* dictionary, <span class="pl-k">int</span> dictSize);</td>
+ </tr>
+ <tr>
+ <td id="L251" class="blob-num js-line-number" data-line-number="251"></td>
+ <td id="LC251" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L252" class="blob-num js-line-number" data-line-number="252"></td>
+ <td id="LC252" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>! LZ4_compress_fast_continue() :</span></td>
+ </tr>
+ <tr>
+ <td id="L253" class="blob-num js-line-number" data-line-number="253"></td>
+ <td id="LC253" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Compress buffer content &#39;src&#39;, using data from previously compressed blocks as dictionary to improve compression ratio.</span></td>
+ </tr>
+ <tr>
+ <td id="L254" class="blob-num js-line-number" data-line-number="254"></td>
+ <td id="LC254" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Important : Previous data blocks are assumed to still be present and unmodified !</span></td>
+ </tr>
+ <tr>
+ <td id="L255" class="blob-num js-line-number" data-line-number="255"></td>
+ <td id="LC255" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * &#39;dst&#39; buffer must be already allocated.</span></td>
+ </tr>
+ <tr>
+ <td id="L256" class="blob-num js-line-number" data-line-number="256"></td>
+ <td id="LC256" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * If maxDstSize &gt;= LZ4_compressBound(srcSize), compression is guaranteed to succeed, and runs faster.</span></td>
+ </tr>
+ <tr>
+ <td id="L257" class="blob-num js-line-number" data-line-number="257"></td>
+ <td id="LC257" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * If not, and if compressed data cannot fit into &#39;dst&#39; buffer size, compression stops, and function returns a zero.</span></td>
+ </tr>
+ <tr>
+ <td id="L258" class="blob-num js-line-number" data-line-number="258"></td>
+ <td id="LC258" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L259" class="blob-num js-line-number" data-line-number="259"></td>
+ <td id="LC259" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-smi">LZ4_compress_fast_continue</span> (LZ4_stream_t* streamPtr, <span class="pl-k">const</span> <span class="pl-k">char</span>* src, <span class="pl-k">char</span>* dst, <span class="pl-k">int</span> srcSize, <span class="pl-k">int</span> maxDstSize, <span class="pl-k">int</span> acceleration);</td>
+ </tr>
+ <tr>
+ <td id="L260" class="blob-num js-line-number" data-line-number="260"></td>
+ <td id="LC260" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L261" class="blob-num js-line-number" data-line-number="261"></td>
+ <td id="LC261" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>! LZ4_saveDict() :</span></td>
+ </tr>
+ <tr>
+ <td id="L262" class="blob-num js-line-number" data-line-number="262"></td>
+ <td id="LC262" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * If previously compressed data block is not guaranteed to remain available at its memory location,</span></td>
+ </tr>
+ <tr>
+ <td id="L263" class="blob-num js-line-number" data-line-number="263"></td>
+ <td id="LC263" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * save it into a safer place (char* safeBuffer).</span></td>
+ </tr>
+ <tr>
+ <td id="L264" class="blob-num js-line-number" data-line-number="264"></td>
+ <td id="LC264" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Note : you don&#39;t need to call LZ4_loadDict() afterwards,</span></td>
+ </tr>
+ <tr>
+ <td id="L265" class="blob-num js-line-number" data-line-number="265"></td>
+ <td id="LC265" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * dictionary is immediately usable, you can therefore call LZ4_compress_fast_continue().</span></td>
+ </tr>
+ <tr>
+ <td id="L266" class="blob-num js-line-number" data-line-number="266"></td>
+ <td id="LC266" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Return : saved dictionary size in bytes (necessarily &lt;= dictSize), or 0 if error.</span></td>
+ </tr>
+ <tr>
+ <td id="L267" class="blob-num js-line-number" data-line-number="267"></td>
+ <td id="LC267" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L268" class="blob-num js-line-number" data-line-number="268"></td>
+ <td id="LC268" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-smi">LZ4_saveDict</span> (LZ4_stream_t* streamPtr, <span class="pl-k">char</span>* safeBuffer, <span class="pl-k">int</span> dictSize);</td>
+ </tr>
+ <tr>
+ <td id="L269" class="blob-num js-line-number" data-line-number="269"></td>
+ <td id="LC269" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L270" class="blob-num js-line-number" data-line-number="270"></td>
+ <td id="LC270" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L271" class="blob-num js-line-number" data-line-number="271"></td>
+ <td id="LC271" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>-**********************************************</span></td>
+ </tr>
+ <tr>
+ <td id="L272" class="blob-num js-line-number" data-line-number="272"></td>
+ <td id="LC272" class="blob-code blob-code-inner js-file-line"><span class="pl-c">* Streaming Decompression Functions</span></td>
+ </tr>
+ <tr>
+ <td id="L273" class="blob-num js-line-number" data-line-number="273"></td>
+ <td id="LC273" class="blob-code blob-code-inner js-file-line"><span class="pl-c">* Bufferless synchronous API</span></td>
+ </tr>
+ <tr>
+ <td id="L274" class="blob-num js-line-number" data-line-number="274"></td>
+ <td id="LC274" class="blob-code blob-code-inner js-file-line"><span class="pl-c">***********************************************<span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L275" class="blob-num js-line-number" data-line-number="275"></td>
+ <td id="LC275" class="blob-code blob-code-inner js-file-line"><span class="pl-k">typedef</span> <span class="pl-k">union</span> LZ4_streamDecode_u LZ4_streamDecode_t; <span class="pl-c"><span class="pl-c">/*</span> incomplete type (defined later) <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L276" class="blob-num js-line-number" data-line-number="276"></td>
+ <td id="LC276" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L277" class="blob-num js-line-number" data-line-number="277"></td>
+ <td id="LC277" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span> creation / destruction of streaming decompression tracking structure <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L278" class="blob-num js-line-number" data-line-number="278"></td>
+ <td id="LC278" class="blob-code blob-code-inner js-file-line">LZ4LIB_API LZ4_streamDecode_t* <span class="pl-c1">LZ4_createStreamDecode</span>(<span class="pl-k">void</span>);</td>
+ </tr>
+ <tr>
+ <td id="L279" class="blob-num js-line-number" data-line-number="279"></td>
+ <td id="LC279" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-smi">LZ4_freeStreamDecode</span> (LZ4_streamDecode_t* LZ4_stream);</td>
+ </tr>
+ <tr>
+ <td id="L280" class="blob-num js-line-number" data-line-number="280"></td>
+ <td id="LC280" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L281" class="blob-num js-line-number" data-line-number="281"></td>
+ <td id="LC281" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>! LZ4_setStreamDecode() :</span></td>
+ </tr>
+ <tr>
+ <td id="L282" class="blob-num js-line-number" data-line-number="282"></td>
+ <td id="LC282" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Use this function to instruct where to find the dictionary.</span></td>
+ </tr>
+ <tr>
+ <td id="L283" class="blob-num js-line-number" data-line-number="283"></td>
+ <td id="LC283" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Setting a size of 0 is allowed (same effect as reset).</span></td>
+ </tr>
+ <tr>
+ <td id="L284" class="blob-num js-line-number" data-line-number="284"></td>
+ <td id="LC284" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * @return : 1 if OK, 0 if error</span></td>
+ </tr>
+ <tr>
+ <td id="L285" class="blob-num js-line-number" data-line-number="285"></td>
+ <td id="LC285" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L286" class="blob-num js-line-number" data-line-number="286"></td>
+ <td id="LC286" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-smi">LZ4_setStreamDecode</span> (LZ4_streamDecode_t* LZ4_streamDecode, <span class="pl-k">const</span> <span class="pl-k">char</span>* dictionary, <span class="pl-k">int</span> dictSize);</td>
+ </tr>
+ <tr>
+ <td id="L287" class="blob-num js-line-number" data-line-number="287"></td>
+ <td id="LC287" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L288" class="blob-num js-line-number" data-line-number="288"></td>
+ <td id="LC288" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>!</span></td>
+ </tr>
+ <tr>
+ <td id="L289" class="blob-num js-line-number" data-line-number="289"></td>
+ <td id="LC289" class="blob-code blob-code-inner js-file-line"><span class="pl-c">LZ4_decompress_*_continue() :</span></td>
+ </tr>
+ <tr>
+ <td id="L290" class="blob-num js-line-number" data-line-number="290"></td>
+ <td id="LC290" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> These decoding functions allow decompression of multiple blocks in &quot;streaming&quot; mode.</span></td>
+ </tr>
+ <tr>
+ <td id="L291" class="blob-num js-line-number" data-line-number="291"></td>
+ <td id="LC291" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Previously decoded blocks *must* remain available at the memory position where they were decoded (up to 64 KB)</span></td>
+ </tr>
+ <tr>
+ <td id="L292" class="blob-num js-line-number" data-line-number="292"></td>
+ <td id="LC292" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> In the case of a ring buffers, decoding buffer must be either :</span></td>
+ </tr>
+ <tr>
+ <td id="L293" class="blob-num js-line-number" data-line-number="293"></td>
+ <td id="LC293" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> - Exactly same size as encoding buffer, with same update rule (block boundaries at same positions)</span></td>
+ </tr>
+ <tr>
+ <td id="L294" class="blob-num js-line-number" data-line-number="294"></td>
+ <td id="LC294" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> In which case, the decoding &amp; encoding ring buffer can have any size, including very small ones ( &lt; 64 KB).</span></td>
+ </tr>
+ <tr>
+ <td id="L295" class="blob-num js-line-number" data-line-number="295"></td>
+ <td id="LC295" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> - Larger than encoding buffer, by a minimum of maxBlockSize more bytes.</span></td>
+ </tr>
+ <tr>
+ <td id="L296" class="blob-num js-line-number" data-line-number="296"></td>
+ <td id="LC296" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> maxBlockSize is implementation dependent. It&#39;s the maximum size you intend to compress into a single block.</span></td>
+ </tr>
+ <tr>
+ <td id="L297" class="blob-num js-line-number" data-line-number="297"></td>
+ <td id="LC297" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> In which case, encoding and decoding buffers do not need to be synchronized,</span></td>
+ </tr>
+ <tr>
+ <td id="L298" class="blob-num js-line-number" data-line-number="298"></td>
+ <td id="LC298" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> and encoding ring buffer can have any size, including small ones ( &lt; 64 KB).</span></td>
+ </tr>
+ <tr>
+ <td id="L299" class="blob-num js-line-number" data-line-number="299"></td>
+ <td id="LC299" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> - _At least_ 64 KB + 8 bytes + maxBlockSize.</span></td>
+ </tr>
+ <tr>
+ <td id="L300" class="blob-num js-line-number" data-line-number="300"></td>
+ <td id="LC300" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> In which case, encoding and decoding buffers do not need to be synchronized,</span></td>
+ </tr>
+ <tr>
+ <td id="L301" class="blob-num js-line-number" data-line-number="301"></td>
+ <td id="LC301" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> and encoding ring buffer can have any size, including larger than decoding buffer.</span></td>
+ </tr>
+ <tr>
+ <td id="L302" class="blob-num js-line-number" data-line-number="302"></td>
+ <td id="LC302" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Whenever these conditions are not possible, save the last 64KB of decoded data into a safe buffer,</span></td>
+ </tr>
+ <tr>
+ <td id="L303" class="blob-num js-line-number" data-line-number="303"></td>
+ <td id="LC303" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> and indicate where it is saved using LZ4_setStreamDecode()</span></td>
+ </tr>
+ <tr>
+ <td id="L304" class="blob-num js-line-number" data-line-number="304"></td>
+ <td id="LC304" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L305" class="blob-num js-line-number" data-line-number="305"></td>
+ <td id="LC305" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-smi">LZ4_decompress_safe_continue</span> (LZ4_streamDecode_t* LZ4_streamDecode, <span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> compressedSize, <span class="pl-k">int</span> maxDecompressedSize);</td>
+ </tr>
+ <tr>
+ <td id="L306" class="blob-num js-line-number" data-line-number="306"></td>
+ <td id="LC306" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-smi">LZ4_decompress_fast_continue</span> (LZ4_streamDecode_t* LZ4_streamDecode, <span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> originalSize);</td>
+ </tr>
+ <tr>
+ <td id="L307" class="blob-num js-line-number" data-line-number="307"></td>
+ <td id="LC307" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L308" class="blob-num js-line-number" data-line-number="308"></td>
+ <td id="LC308" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L309" class="blob-num js-line-number" data-line-number="309"></td>
+ <td id="LC309" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>! LZ4_decompress_*_usingDict() :</span></td>
+ </tr>
+ <tr>
+ <td id="L310" class="blob-num js-line-number" data-line-number="310"></td>
+ <td id="LC310" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * These decoding functions work the same as</span></td>
+ </tr>
+ <tr>
+ <td id="L311" class="blob-num js-line-number" data-line-number="311"></td>
+ <td id="LC311" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * a combination of LZ4_setStreamDecode() followed by LZ4_decompress_*_continue()</span></td>
+ </tr>
+ <tr>
+ <td id="L312" class="blob-num js-line-number" data-line-number="312"></td>
+ <td id="LC312" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * They are stand-alone, and don&#39;t need an LZ4_streamDecode_t structure.</span></td>
+ </tr>
+ <tr>
+ <td id="L313" class="blob-num js-line-number" data-line-number="313"></td>
+ <td id="LC313" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L314" class="blob-num js-line-number" data-line-number="314"></td>
+ <td id="LC314" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-smi">LZ4_decompress_safe_usingDict</span> (<span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> compressedSize, <span class="pl-k">int</span> maxDecompressedSize, <span class="pl-k">const</span> <span class="pl-k">char</span>* dictStart, <span class="pl-k">int</span> dictSize);</td>
+ </tr>
+ <tr>
+ <td id="L315" class="blob-num js-line-number" data-line-number="315"></td>
+ <td id="LC315" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-smi">LZ4_decompress_fast_usingDict</span> (<span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> originalSize, <span class="pl-k">const</span> <span class="pl-k">char</span>* dictStart, <span class="pl-k">int</span> dictSize);</td>
+ </tr>
+ <tr>
+ <td id="L316" class="blob-num js-line-number" data-line-number="316"></td>
+ <td id="LC316" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L317" class="blob-num js-line-number" data-line-number="317"></td>
+ <td id="LC317" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L318" class="blob-num js-line-number" data-line-number="318"></td>
+ <td id="LC318" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>^**********************************************</span></td>
+ </tr>
+ <tr>
+ <td id="L319" class="blob-num js-line-number" data-line-number="319"></td>
+ <td id="LC319" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * !!!!!! STATIC LINKING ONLY !!!!!!</span></td>
+ </tr>
+ <tr>
+ <td id="L320" class="blob-num js-line-number" data-line-number="320"></td>
+ <td id="LC320" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> **********************************************<span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L321" class="blob-num js-line-number" data-line-number="321"></td>
+ <td id="LC321" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>-************************************</span></td>
+ </tr>
+ <tr>
+ <td id="L322" class="blob-num js-line-number" data-line-number="322"></td>
+ <td id="LC322" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Private definitions</span></td>
+ </tr>
+ <tr>
+ <td id="L323" class="blob-num js-line-number" data-line-number="323"></td>
+ <td id="LC323" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> **************************************</span></td>
+ </tr>
+ <tr>
+ <td id="L324" class="blob-num js-line-number" data-line-number="324"></td>
+ <td id="LC324" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Do not use these definitions.</span></td>
+ </tr>
+ <tr>
+ <td id="L325" class="blob-num js-line-number" data-line-number="325"></td>
+ <td id="LC325" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * They are exposed to allow static allocation of `LZ4_stream_t` and `LZ4_streamDecode_t`.</span></td>
+ </tr>
+ <tr>
+ <td id="L326" class="blob-num js-line-number" data-line-number="326"></td>
+ <td id="LC326" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Using these definitions will expose code to API and/or ABI break in future versions of the library.</span></td>
+ </tr>
+ <tr>
+ <td id="L327" class="blob-num js-line-number" data-line-number="327"></td>
+ <td id="LC327" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *************************************<span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L328" class="blob-num js-line-number" data-line-number="328"></td>
+ <td id="LC328" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4_HASHLOG</span> (LZ4_MEMORY_USAGE-<span class="pl-c1">2</span>)</td>
+ </tr>
+ <tr>
+ <td id="L329" class="blob-num js-line-number" data-line-number="329"></td>
+ <td id="LC329" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4_HASHTABLESIZE</span> (<span class="pl-c1">1</span> &lt;&lt; LZ4_MEMORY_USAGE)</td>
+ </tr>
+ <tr>
+ <td id="L330" class="blob-num js-line-number" data-line-number="330"></td>
+ <td id="LC330" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4_HASH_SIZE_U32</span> (<span class="pl-c1">1</span> &lt;&lt; LZ4_HASHLOG) <span class="pl-c"><span class="pl-c">/*</span> required as macro for static allocation <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L331" class="blob-num js-line-number" data-line-number="331"></td>
+ <td id="LC331" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L332" class="blob-num js-line-number" data-line-number="332"></td>
+ <td id="LC332" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">if</span> defined(__cplusplus) || (defined (__STDC_VERSION__) &amp;&amp; (__STDC_VERSION__ &gt;= 199901L) <span class="pl-c"><span class="pl-c">/*</span> C99 <span class="pl-c">*/</span></span>)</td>
+ </tr>
+ <tr>
+ <td id="L333" class="blob-num js-line-number" data-line-number="333"></td>
+ <td id="LC333" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds">&lt;</span>stdint.h<span class="pl-pds">&gt;</span></span></td>
+ </tr>
+ <tr>
+ <td id="L334" class="blob-num js-line-number" data-line-number="334"></td>
+ <td id="LC334" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L335" class="blob-num js-line-number" data-line-number="335"></td>
+ <td id="LC335" class="blob-code blob-code-inner js-file-line"><span class="pl-k">typedef</span> <span class="pl-k">struct</span> {</td>
+ </tr>
+ <tr>
+ <td id="L336" class="blob-num js-line-number" data-line-number="336"></td>
+ <td id="LC336" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">uint32_t</span> hashTable[LZ4_HASH_SIZE_U32];</td>
+ </tr>
+ <tr>
+ <td id="L337" class="blob-num js-line-number" data-line-number="337"></td>
+ <td id="LC337" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">uint32_t</span> currentOffset;</td>
+ </tr>
+ <tr>
+ <td id="L338" class="blob-num js-line-number" data-line-number="338"></td>
+ <td id="LC338" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">uint32_t</span> initCheck;</td>
+ </tr>
+ <tr>
+ <td id="L339" class="blob-num js-line-number" data-line-number="339"></td>
+ <td id="LC339" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">const</span> <span class="pl-c1">uint8_t</span>* dictionary;</td>
+ </tr>
+ <tr>
+ <td id="L340" class="blob-num js-line-number" data-line-number="340"></td>
+ <td id="LC340" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">uint8_t</span>* bufferStart; <span class="pl-c"><span class="pl-c">/*</span> obsolete, used for slideInputBuffer <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L341" class="blob-num js-line-number" data-line-number="341"></td>
+ <td id="LC341" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">uint32_t</span> dictSize;</td>
+ </tr>
+ <tr>
+ <td id="L342" class="blob-num js-line-number" data-line-number="342"></td>
+ <td id="LC342" class="blob-code blob-code-inner js-file-line">} LZ4_stream_t_internal;</td>
+ </tr>
+ <tr>
+ <td id="L343" class="blob-num js-line-number" data-line-number="343"></td>
+ <td id="LC343" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L344" class="blob-num js-line-number" data-line-number="344"></td>
+ <td id="LC344" class="blob-code blob-code-inner js-file-line"><span class="pl-k">typedef</span> <span class="pl-k">struct</span> {</td>
+ </tr>
+ <tr>
+ <td id="L345" class="blob-num js-line-number" data-line-number="345"></td>
+ <td id="LC345" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">const</span> <span class="pl-c1">uint8_t</span>* externalDict;</td>
+ </tr>
+ <tr>
+ <td id="L346" class="blob-num js-line-number" data-line-number="346"></td>
+ <td id="LC346" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">size_t</span> extDictSize;</td>
+ </tr>
+ <tr>
+ <td id="L347" class="blob-num js-line-number" data-line-number="347"></td>
+ <td id="LC347" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">const</span> <span class="pl-c1">uint8_t</span>* prefixEnd;</td>
+ </tr>
+ <tr>
+ <td id="L348" class="blob-num js-line-number" data-line-number="348"></td>
+ <td id="LC348" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">size_t</span> prefixSize;</td>
+ </tr>
+ <tr>
+ <td id="L349" class="blob-num js-line-number" data-line-number="349"></td>
+ <td id="LC349" class="blob-code blob-code-inner js-file-line">} LZ4_streamDecode_t_internal;</td>
+ </tr>
+ <tr>
+ <td id="L350" class="blob-num js-line-number" data-line-number="350"></td>
+ <td id="LC350" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L351" class="blob-num js-line-number" data-line-number="351"></td>
+ <td id="LC351" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">else</span></td>
+ </tr>
+ <tr>
+ <td id="L352" class="blob-num js-line-number" data-line-number="352"></td>
+ <td id="LC352" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L353" class="blob-num js-line-number" data-line-number="353"></td>
+ <td id="LC353" class="blob-code blob-code-inner js-file-line"><span class="pl-k">typedef</span> <span class="pl-k">struct</span> {</td>
+ </tr>
+ <tr>
+ <td id="L354" class="blob-num js-line-number" data-line-number="354"></td>
+ <td id="LC354" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">unsigned</span> <span class="pl-k">int</span> hashTable[LZ4_HASH_SIZE_U32];</td>
+ </tr>
+ <tr>
+ <td id="L355" class="blob-num js-line-number" data-line-number="355"></td>
+ <td id="LC355" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">unsigned</span> <span class="pl-k">int</span> currentOffset;</td>
+ </tr>
+ <tr>
+ <td id="L356" class="blob-num js-line-number" data-line-number="356"></td>
+ <td id="LC356" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">unsigned</span> <span class="pl-k">int</span> initCheck;</td>
+ </tr>
+ <tr>
+ <td id="L357" class="blob-num js-line-number" data-line-number="357"></td>
+ <td id="LC357" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">const</span> <span class="pl-k">unsigned</span> <span class="pl-k">char</span>* dictionary;</td>
+ </tr>
+ <tr>
+ <td id="L358" class="blob-num js-line-number" data-line-number="358"></td>
+ <td id="LC358" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">unsigned</span> <span class="pl-k">char</span>* bufferStart; <span class="pl-c"><span class="pl-c">/*</span> obsolete, used for slideInputBuffer <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L359" class="blob-num js-line-number" data-line-number="359"></td>
+ <td id="LC359" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">unsigned</span> <span class="pl-k">int</span> dictSize;</td>
+ </tr>
+ <tr>
+ <td id="L360" class="blob-num js-line-number" data-line-number="360"></td>
+ <td id="LC360" class="blob-code blob-code-inner js-file-line">} LZ4_stream_t_internal;</td>
+ </tr>
+ <tr>
+ <td id="L361" class="blob-num js-line-number" data-line-number="361"></td>
+ <td id="LC361" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L362" class="blob-num js-line-number" data-line-number="362"></td>
+ <td id="LC362" class="blob-code blob-code-inner js-file-line"><span class="pl-k">typedef</span> <span class="pl-k">struct</span> {</td>
+ </tr>
+ <tr>
+ <td id="L363" class="blob-num js-line-number" data-line-number="363"></td>
+ <td id="LC363" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">const</span> <span class="pl-k">unsigned</span> <span class="pl-k">char</span>* externalDict;</td>
+ </tr>
+ <tr>
+ <td id="L364" class="blob-num js-line-number" data-line-number="364"></td>
+ <td id="LC364" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">size_t</span> extDictSize;</td>
+ </tr>
+ <tr>
+ <td id="L365" class="blob-num js-line-number" data-line-number="365"></td>
+ <td id="LC365" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">const</span> <span class="pl-k">unsigned</span> <span class="pl-k">char</span>* prefixEnd;</td>
+ </tr>
+ <tr>
+ <td id="L366" class="blob-num js-line-number" data-line-number="366"></td>
+ <td id="LC366" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">size_t</span> prefixSize;</td>
+ </tr>
+ <tr>
+ <td id="L367" class="blob-num js-line-number" data-line-number="367"></td>
+ <td id="LC367" class="blob-code blob-code-inner js-file-line">} LZ4_streamDecode_t_internal;</td>
+ </tr>
+ <tr>
+ <td id="L368" class="blob-num js-line-number" data-line-number="368"></td>
+ <td id="LC368" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L369" class="blob-num js-line-number" data-line-number="369"></td>
+ <td id="LC369" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">endif</span></td>
+ </tr>
+ <tr>
+ <td id="L370" class="blob-num js-line-number" data-line-number="370"></td>
+ <td id="LC370" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L371" class="blob-num js-line-number" data-line-number="371"></td>
+ <td id="LC371" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>!</span></td>
+ </tr>
+ <tr>
+ <td id="L372" class="blob-num js-line-number" data-line-number="372"></td>
+ <td id="LC372" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * LZ4_stream_t :</span></td>
+ </tr>
+ <tr>
+ <td id="L373" class="blob-num js-line-number" data-line-number="373"></td>
+ <td id="LC373" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * information structure to track an LZ4 stream.</span></td>
+ </tr>
+ <tr>
+ <td id="L374" class="blob-num js-line-number" data-line-number="374"></td>
+ <td id="LC374" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * init this structure before first use.</span></td>
+ </tr>
+ <tr>
+ <td id="L375" class="blob-num js-line-number" data-line-number="375"></td>
+ <td id="LC375" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * note : only use in association with static linking !</span></td>
+ </tr>
+ <tr>
+ <td id="L376" class="blob-num js-line-number" data-line-number="376"></td>
+ <td id="LC376" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * this definition is not API/ABI safe,</span></td>
+ </tr>
+ <tr>
+ <td id="L377" class="blob-num js-line-number" data-line-number="377"></td>
+ <td id="LC377" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * and may change in a future version !</span></td>
+ </tr>
+ <tr>
+ <td id="L378" class="blob-num js-line-number" data-line-number="378"></td>
+ <td id="LC378" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L379" class="blob-num js-line-number" data-line-number="379"></td>
+ <td id="LC379" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4_STREAMSIZE_U64</span> ((<span class="pl-c1">1</span> &lt;&lt; (LZ4_MEMORY_USAGE-<span class="pl-c1">3</span>)) + <span class="pl-c1">4</span>)</td>
+ </tr>
+ <tr>
+ <td id="L380" class="blob-num js-line-number" data-line-number="380"></td>
+ <td id="LC380" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4_STREAMSIZE</span> (LZ4_STREAMSIZE_U64 * <span class="pl-k">sizeof</span>(<span class="pl-k">unsigned</span> <span class="pl-k">long</span> <span class="pl-k">long</span>))</td>
+ </tr>
+ <tr>
+ <td id="L381" class="blob-num js-line-number" data-line-number="381"></td>
+ <td id="LC381" class="blob-code blob-code-inner js-file-line"><span class="pl-k">union</span> LZ4_stream_u {</td>
+ </tr>
+ <tr>
+ <td id="L382" class="blob-num js-line-number" data-line-number="382"></td>
+ <td id="LC382" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">unsigned</span> <span class="pl-k">long</span> <span class="pl-k">long</span> table[LZ4_STREAMSIZE_U64];</td>
+ </tr>
+ <tr>
+ <td id="L383" class="blob-num js-line-number" data-line-number="383"></td>
+ <td id="LC383" class="blob-code blob-code-inner js-file-line"> LZ4_stream_t_internal internal_donotuse;</td>
+ </tr>
+ <tr>
+ <td id="L384" class="blob-num js-line-number" data-line-number="384"></td>
+ <td id="LC384" class="blob-code blob-code-inner js-file-line">} ; <span class="pl-c"><span class="pl-c">/*</span> previously typedef&#39;d to LZ4_stream_t <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L385" class="blob-num js-line-number" data-line-number="385"></td>
+ <td id="LC385" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L386" class="blob-num js-line-number" data-line-number="386"></td>
+ <td id="LC386" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L387" class="blob-num js-line-number" data-line-number="387"></td>
+ <td id="LC387" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>!</span></td>
+ </tr>
+ <tr>
+ <td id="L388" class="blob-num js-line-number" data-line-number="388"></td>
+ <td id="LC388" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * LZ4_streamDecode_t :</span></td>
+ </tr>
+ <tr>
+ <td id="L389" class="blob-num js-line-number" data-line-number="389"></td>
+ <td id="LC389" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * information structure to track an LZ4 stream during decompression.</span></td>
+ </tr>
+ <tr>
+ <td id="L390" class="blob-num js-line-number" data-line-number="390"></td>
+ <td id="LC390" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * init this structure using LZ4_setStreamDecode (or memset()) before first use</span></td>
+ </tr>
+ <tr>
+ <td id="L391" class="blob-num js-line-number" data-line-number="391"></td>
+ <td id="LC391" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * note : only use in association with static linking !</span></td>
+ </tr>
+ <tr>
+ <td id="L392" class="blob-num js-line-number" data-line-number="392"></td>
+ <td id="LC392" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * this definition is not API/ABI safe,</span></td>
+ </tr>
+ <tr>
+ <td id="L393" class="blob-num js-line-number" data-line-number="393"></td>
+ <td id="LC393" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * and may change in a future version !</span></td>
+ </tr>
+ <tr>
+ <td id="L394" class="blob-num js-line-number" data-line-number="394"></td>
+ <td id="LC394" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L395" class="blob-num js-line-number" data-line-number="395"></td>
+ <td id="LC395" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4_STREAMDECODESIZE_U64</span> <span class="pl-c1">4</span></td>
+ </tr>
+ <tr>
+ <td id="L396" class="blob-num js-line-number" data-line-number="396"></td>
+ <td id="LC396" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4_STREAMDECODESIZE</span> (LZ4_STREAMDECODESIZE_U64 * <span class="pl-k">sizeof</span>(<span class="pl-k">unsigned</span> <span class="pl-k">long</span> <span class="pl-k">long</span>))</td>
+ </tr>
+ <tr>
+ <td id="L397" class="blob-num js-line-number" data-line-number="397"></td>
+ <td id="LC397" class="blob-code blob-code-inner js-file-line"><span class="pl-k">union</span> LZ4_streamDecode_u {</td>
+ </tr>
+ <tr>
+ <td id="L398" class="blob-num js-line-number" data-line-number="398"></td>
+ <td id="LC398" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">unsigned</span> <span class="pl-k">long</span> <span class="pl-k">long</span> table[LZ4_STREAMDECODESIZE_U64];</td>
+ </tr>
+ <tr>
+ <td id="L399" class="blob-num js-line-number" data-line-number="399"></td>
+ <td id="LC399" class="blob-code blob-code-inner js-file-line"> LZ4_streamDecode_t_internal internal_donotuse;</td>
+ </tr>
+ <tr>
+ <td id="L400" class="blob-num js-line-number" data-line-number="400"></td>
+ <td id="LC400" class="blob-code blob-code-inner js-file-line">} ; <span class="pl-c"><span class="pl-c">/*</span> previously typedef&#39;d to LZ4_streamDecode_t <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L401" class="blob-num js-line-number" data-line-number="401"></td>
+ <td id="LC401" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L402" class="blob-num js-line-number" data-line-number="402"></td>
+ <td id="LC402" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L403" class="blob-num js-line-number" data-line-number="403"></td>
+ <td id="LC403" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>=************************************</span></td>
+ </tr>
+ <tr>
+ <td id="L404" class="blob-num js-line-number" data-line-number="404"></td>
+ <td id="LC404" class="blob-code blob-code-inner js-file-line"><span class="pl-c">* Obsolete Functions</span></td>
+ </tr>
+ <tr>
+ <td id="L405" class="blob-num js-line-number" data-line-number="405"></td>
+ <td id="LC405" class="blob-code blob-code-inner js-file-line"><span class="pl-c">*************************************<span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L406" class="blob-num js-line-number" data-line-number="406"></td>
+ <td id="LC406" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span> Deprecation warnings <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L407" class="blob-num js-line-number" data-line-number="407"></td>
+ <td id="LC407" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span> Should these warnings be a problem,</span></td>
+ </tr>
+ <tr>
+ <td id="L408" class="blob-num js-line-number" data-line-number="408"></td>
+ <td id="LC408" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> it is generally possible to disable them,</span></td>
+ </tr>
+ <tr>
+ <td id="L409" class="blob-num js-line-number" data-line-number="409"></td>
+ <td id="LC409" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> typically with -Wno-deprecated-declarations for gcc</span></td>
+ </tr>
+ <tr>
+ <td id="L410" class="blob-num js-line-number" data-line-number="410"></td>
+ <td id="LC410" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> or _CRT_SECURE_NO_WARNINGS in Visual.</span></td>
+ </tr>
+ <tr>
+ <td id="L411" class="blob-num js-line-number" data-line-number="411"></td>
+ <td id="LC411" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Otherwise, it&#39;s also possible to define LZ4_DISABLE_DEPRECATE_WARNINGS <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L412" class="blob-num js-line-number" data-line-number="412"></td>
+ <td id="LC412" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">ifdef</span> LZ4_DISABLE_DEPRECATE_WARNINGS</td>
+ </tr>
+ <tr>
+ <td id="L413" class="blob-num js-line-number" data-line-number="413"></td>
+ <td id="LC413" class="blob-code blob-code-inner js-file-line"># <span class="pl-k">define</span> <span class="pl-en">LZ4_DEPRECATED</span>(<span class="pl-v">message</span>) <span class="pl-c"><span class="pl-c">/*</span> disable deprecation warnings <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L414" class="blob-num js-line-number" data-line-number="414"></td>
+ <td id="LC414" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">else</span></td>
+ </tr>
+ <tr>
+ <td id="L415" class="blob-num js-line-number" data-line-number="415"></td>
+ <td id="LC415" class="blob-code blob-code-inner js-file-line"># <span class="pl-k">define</span> <span class="pl-en">LZ4_GCC_VERSION</span> (__GNUC__ * <span class="pl-c1">100</span> + __GNUC_MINOR__)</td>
+ </tr>
+ <tr>
+ <td id="L416" class="blob-num js-line-number" data-line-number="416"></td>
+ <td id="LC416" class="blob-code blob-code-inner js-file-line"># <span class="pl-k">if</span> defined (__cplusplus) &amp;&amp; (__cplusplus &gt;= 201402) <span class="pl-c"><span class="pl-c">/*</span> C++14 or greater <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L417" class="blob-num js-line-number" data-line-number="417"></td>
+ <td id="LC417" class="blob-code blob-code-inner js-file-line"># <span class="pl-k">define</span> <span class="pl-en">LZ4_DEPRECATED</span>(<span class="pl-v">message</span>) [[deprecated(message)]]</td>
+ </tr>
+ <tr>
+ <td id="L418" class="blob-num js-line-number" data-line-number="418"></td>
+ <td id="LC418" class="blob-code blob-code-inner js-file-line"># <span class="pl-k">elif</span> (LZ4_GCC_VERSION &gt;= 405) || defined(__clang__)</td>
+ </tr>
+ <tr>
+ <td id="L419" class="blob-num js-line-number" data-line-number="419"></td>
+ <td id="LC419" class="blob-code blob-code-inner js-file-line"># <span class="pl-k">define</span> <span class="pl-en">LZ4_DEPRECATED</span>(<span class="pl-v">message</span>) __attribute__((deprecated(message)))</td>
+ </tr>
+ <tr>
+ <td id="L420" class="blob-num js-line-number" data-line-number="420"></td>
+ <td id="LC420" class="blob-code blob-code-inner js-file-line"># <span class="pl-k">elif</span> (LZ4_GCC_VERSION &gt;= 301)</td>
+ </tr>
+ <tr>
+ <td id="L421" class="blob-num js-line-number" data-line-number="421"></td>
+ <td id="LC421" class="blob-code blob-code-inner js-file-line"># <span class="pl-k">define</span> <span class="pl-en">LZ4_DEPRECATED</span>(<span class="pl-v">message</span>) __attribute__((deprecated))</td>
+ </tr>
+ <tr>
+ <td id="L422" class="blob-num js-line-number" data-line-number="422"></td>
+ <td id="LC422" class="blob-code blob-code-inner js-file-line"># <span class="pl-k">elif</span> defined(_MSC_VER)</td>
+ </tr>
+ <tr>
+ <td id="L423" class="blob-num js-line-number" data-line-number="423"></td>
+ <td id="LC423" class="blob-code blob-code-inner js-file-line"># <span class="pl-k">define</span> <span class="pl-en">LZ4_DEPRECATED</span>(<span class="pl-v">message</span>) __declspec(deprecated(message))</td>
+ </tr>
+ <tr>
+ <td id="L424" class="blob-num js-line-number" data-line-number="424"></td>
+ <td id="LC424" class="blob-code blob-code-inner js-file-line"># <span class="pl-k">else</span></td>
+ </tr>
+ <tr>
+ <td id="L425" class="blob-num js-line-number" data-line-number="425"></td>
+ <td id="LC425" class="blob-code blob-code-inner js-file-line"># <span class="pl-k">pragma</span> message(&quot;WARNING: You need to implement LZ4_DEPRECATED for this compiler&quot;)</td>
+ </tr>
+ <tr>
+ <td id="L426" class="blob-num js-line-number" data-line-number="426"></td>
+ <td id="LC426" class="blob-code blob-code-inner js-file-line"># <span class="pl-k">define</span> <span class="pl-en">LZ4_DEPRECATED</span>(<span class="pl-v">message</span>)</td>
+ </tr>
+ <tr>
+ <td id="L427" class="blob-num js-line-number" data-line-number="427"></td>
+ <td id="LC427" class="blob-code blob-code-inner js-file-line"># <span class="pl-k">endif</span></td>
+ </tr>
+ <tr>
+ <td id="L428" class="blob-num js-line-number" data-line-number="428"></td>
+ <td id="LC428" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">endif</span> <span class="pl-c"><span class="pl-c">/*</span> LZ4_DISABLE_DEPRECATE_WARNINGS <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L429" class="blob-num js-line-number" data-line-number="429"></td>
+ <td id="LC429" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L430" class="blob-num js-line-number" data-line-number="430"></td>
+ <td id="LC430" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span> Obsolete compression functions <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L431" class="blob-num js-line-number" data-line-number="431"></td>
+ <td id="LC431" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_compress_default() instead<span class="pl-pds">&quot;</span></span>) <span class="pl-k">int</span> <span class="pl-smi">LZ4_compress</span> (<span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> sourceSize);</td>
+ </tr>
+ <tr>
+ <td id="L432" class="blob-num js-line-number" data-line-number="432"></td>
+ <td id="LC432" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_compress_default() instead<span class="pl-pds">&quot;</span></span>) <span class="pl-k">int</span> <span class="pl-smi">LZ4_compress_limitedOutput</span> (<span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> sourceSize, <span class="pl-k">int</span> maxOutputSize);</td>
+ </tr>
+ <tr>
+ <td id="L433" class="blob-num js-line-number" data-line-number="433"></td>
+ <td id="LC433" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_compress_fast_extState() instead<span class="pl-pds">&quot;</span></span>) <span class="pl-k">int</span> <span class="pl-smi">LZ4_compress_withState</span> (<span class="pl-k">void</span>* state, <span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> inputSize);</td>
+ </tr>
+ <tr>
+ <td id="L434" class="blob-num js-line-number" data-line-number="434"></td>
+ <td id="LC434" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_compress_fast_extState() instead<span class="pl-pds">&quot;</span></span>) <span class="pl-k">int</span> <span class="pl-smi">LZ4_compress_limitedOutput_withState</span> (<span class="pl-k">void</span>* state, <span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> inputSize, <span class="pl-k">int</span> maxOutputSize);</td>
+ </tr>
+ <tr>
+ <td id="L435" class="blob-num js-line-number" data-line-number="435"></td>
+ <td id="LC435" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_compress_fast_continue() instead<span class="pl-pds">&quot;</span></span>) <span class="pl-k">int</span> <span class="pl-smi">LZ4_compress_continue</span> (LZ4_stream_t* LZ4_streamPtr, <span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> inputSize);</td>
+ </tr>
+ <tr>
+ <td id="L436" class="blob-num js-line-number" data-line-number="436"></td>
+ <td id="LC436" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_compress_fast_continue() instead<span class="pl-pds">&quot;</span></span>) <span class="pl-k">int</span> <span class="pl-smi">LZ4_compress_limitedOutput_continue</span> (LZ4_stream_t* LZ4_streamPtr, <span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> inputSize, <span class="pl-k">int</span> maxOutputSize);</td>
+ </tr>
+ <tr>
+ <td id="L437" class="blob-num js-line-number" data-line-number="437"></td>
+ <td id="LC437" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L438" class="blob-num js-line-number" data-line-number="438"></td>
+ <td id="LC438" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span> Obsolete decompression functions <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L439" class="blob-num js-line-number" data-line-number="439"></td>
+ <td id="LC439" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span> These function names are completely deprecated and must no longer be used.</span></td>
+ </tr>
+ <tr>
+ <td id="L440" class="blob-num js-line-number" data-line-number="440"></td>
+ <td id="LC440" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> They are only provided in lz4.c for compatibility with older programs.</span></td>
+ </tr>
+ <tr>
+ <td id="L441" class="blob-num js-line-number" data-line-number="441"></td>
+ <td id="LC441" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> - LZ4_uncompress is the same as LZ4_decompress_fast</span></td>
+ </tr>
+ <tr>
+ <td id="L442" class="blob-num js-line-number" data-line-number="442"></td>
+ <td id="LC442" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> - LZ4_uncompress_unknownOutputSize is the same as LZ4_decompress_safe</span></td>
+ </tr>
+ <tr>
+ <td id="L443" class="blob-num js-line-number" data-line-number="443"></td>
+ <td id="LC443" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> These function prototypes are now disabled; uncomment them only if you really need them.</span></td>
+ </tr>
+ <tr>
+ <td id="L444" class="blob-num js-line-number" data-line-number="444"></td>
+ <td id="LC444" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> It is highly recommended to stop using these prototypes and migrate to maintained ones <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L445" class="blob-num js-line-number" data-line-number="445"></td>
+ <td id="LC445" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span> int LZ4_uncompress (const char* source, char* dest, int outputSize); <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L446" class="blob-num js-line-number" data-line-number="446"></td>
+ <td id="LC446" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span> int LZ4_uncompress_unknownOutputSize (const char* source, char* dest, int isize, int maxOutputSize); <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L447" class="blob-num js-line-number" data-line-number="447"></td>
+ <td id="LC447" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L448" class="blob-num js-line-number" data-line-number="448"></td>
+ <td id="LC448" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span> Obsolete streaming functions; use new streaming interface whenever possible <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L449" class="blob-num js-line-number" data-line-number="449"></td>
+ <td id="LC449" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_createStream() instead<span class="pl-pds">&quot;</span></span>) <span class="pl-k">void</span>* <span class="pl-c1">LZ4_create</span> (<span class="pl-k">char</span>* inputBuffer);</td>
+ </tr>
+ <tr>
+ <td id="L450" class="blob-num js-line-number" data-line-number="450"></td>
+ <td id="LC450" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_createStream() instead<span class="pl-pds">&quot;</span></span>) <span class="pl-k">int</span> <span class="pl-smi">LZ4_sizeofStreamState</span>(<span class="pl-k">void</span>);</td>
+ </tr>
+ <tr>
+ <td id="L451" class="blob-num js-line-number" data-line-number="451"></td>
+ <td id="LC451" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_resetStream() instead<span class="pl-pds">&quot;</span></span>) <span class="pl-k">int</span> <span class="pl-smi">LZ4_resetStreamState</span>(<span class="pl-k">void</span>* state, <span class="pl-k">char</span>* inputBuffer);</td>
+ </tr>
+ <tr>
+ <td id="L452" class="blob-num js-line-number" data-line-number="452"></td>
+ <td id="LC452" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_saveDict() instead<span class="pl-pds">&quot;</span></span>) <span class="pl-k">char</span>* <span class="pl-c1">LZ4_slideInputBuffer</span> (<span class="pl-k">void</span>* state);</td>
+ </tr>
+ <tr>
+ <td id="L453" class="blob-num js-line-number" data-line-number="453"></td>
+ <td id="LC453" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L454" class="blob-num js-line-number" data-line-number="454"></td>
+ <td id="LC454" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span> Obsolete streaming decoding functions <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L455" class="blob-num js-line-number" data-line-number="455"></td>
+ <td id="LC455" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_decompress_safe_usingDict() instead<span class="pl-pds">&quot;</span></span>) <span class="pl-k">int</span> <span class="pl-smi">LZ4_decompress_safe_withPrefix64k</span> (<span class="pl-k">const</span> <span class="pl-k">char</span>* src, <span class="pl-k">char</span>* dst, <span class="pl-k">int</span> compressedSize, <span class="pl-k">int</span> maxDstSize);</td>
+ </tr>
+ <tr>
+ <td id="L456" class="blob-num js-line-number" data-line-number="456"></td>
+ <td id="LC456" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_decompress_fast_usingDict() instead<span class="pl-pds">&quot;</span></span>) <span class="pl-k">int</span> <span class="pl-smi">LZ4_decompress_fast_withPrefix64k</span> (<span class="pl-k">const</span> <span class="pl-k">char</span>* src, <span class="pl-k">char</span>* dst, <span class="pl-k">int</span> originalSize);</td>
+ </tr>
+ <tr>
+ <td id="L457" class="blob-num js-line-number" data-line-number="457"></td>
+ <td id="LC457" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L458" class="blob-num js-line-number" data-line-number="458"></td>
+ <td id="LC458" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L459" class="blob-num js-line-number" data-line-number="459"></td>
+ <td id="LC459" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">if</span> defined (__cplusplus)</td>
+ </tr>
+ <tr>
+ <td id="L460" class="blob-num js-line-number" data-line-number="460"></td>
+ <td id="LC460" class="blob-code blob-code-inner js-file-line">}</td>
+ </tr>
+ <tr>
+ <td id="L461" class="blob-num js-line-number" data-line-number="461"></td>
+ <td id="LC461" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">endif</span></td>
+ </tr>
+ <tr>
+ <td id="L462" class="blob-num js-line-number" data-line-number="462"></td>
+ <td id="LC462" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L463" class="blob-num js-line-number" data-line-number="463"></td>
+ <td id="LC463" class="blob-code blob-code-inner js-file-line">#endif <span class="pl-c"><span class="pl-c">/*</span> LZ4_H_2983827168210 <span class="pl-c">*/</span></span></td>
+ </tr>
+</table>
+
+ </div>
+
+</div>
+
+<button type="button" data-facebox="#jump-to-line" data-facebox-class="linejump" data-hotkey="l" class="d-none">Jump to Line</button>
+<div id="jump-to-line" style="display:none">
+ <!-- '"` --><!-- </textarea></xmp> --></option></form><form accept-charset="UTF-8" action="" class="js-jump-to-line-form" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /></div>
+ <input class="form-control linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line&hellip;" aria-label="Jump to line" autofocus>
+ <button type="submit" class="btn">Go</button>
+</form></div>
+
+
+ </div>
+ <div class="modal-backdrop js-touch-events"></div>
+</div>
+
+ </div>
+ </div>
+
+ </div>
+
+
+<div class="container site-footer-container">
+ <div class="site-footer " role="contentinfo">
+ <ul class="site-footer-links float-right">
+ <li><a href="https://github.com/contact" data-ga-click="Footer, go to contact, text:contact">Contact GitHub</a></li>
+ <li><a href="https://developer.github.com" data-ga-click="Footer, go to api, text:api">API</a></li>
+ <li><a href="https://training.github.com" data-ga-click="Footer, go to training, text:training">Training</a></li>
+ <li><a href="https://shop.github.com" data-ga-click="Footer, go to shop, text:shop">Shop</a></li>
+ <li><a href="https://github.com/blog" data-ga-click="Footer, go to blog, text:blog">Blog</a></li>
+ <li><a href="https://github.com/about" data-ga-click="Footer, go to about, text:about">About</a></li>
+
+ </ul>
+
+ <a href="https://github.com" aria-label="Homepage" class="site-footer-mark" title="GitHub">
+ <svg aria-hidden="true" class="octicon octicon-mark-github" height="24" version="1.1" viewBox="0 0 16 16" width="24"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>
+</a>
+ <ul class="site-footer-links">
+ <li>&copy; 2017 <span title="0.10662s from github-fe-f06f8d5.cp1-iad.github.net">GitHub</span>, Inc.</li>
+ <li><a href="https://github.com/site/terms" data-ga-click="Footer, go to terms, text:terms">Terms</a></li>
+ <li><a href="https://github.com/site/privacy" data-ga-click="Footer, go to privacy, text:privacy">Privacy</a></li>
+ <li><a href="https://github.com/security" data-ga-click="Footer, go to security, text:security">Security</a></li>
+ <li><a href="https://status.github.com/" data-ga-click="Footer, go to status, text:status">Status</a></li>
+ <li><a href="https://help.github.com" data-ga-click="Footer, go to help, text:help">Help</a></li>
+ </ul>
+ </div>
+</div>
+
+
+
+
+
+ <div id="ajax-error-message" class="ajax-error-message flash flash-error">
+ <svg aria-hidden="true" class="octicon octicon-alert" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M8.865 1.52c-.18-.31-.51-.5-.87-.5s-.69.19-.87.5L.275 13.5c-.18.31-.18.69 0 1 .19.31.52.5.87.5h13.7c.36 0 .69-.19.86-.5.17-.31.18-.69.01-1L8.865 1.52zM8.995 13h-2v-2h2v2zm0-3h-2V6h2v4z"/></svg>
+ <button type="button" class="flash-close js-flash-close js-ajax-error-dismiss" aria-label="Dismiss error">
+ <svg aria-hidden="true" class="octicon octicon-x" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48z"/></svg>
+ </button>
+ You can't perform that action at this time.
+ </div>
+
+
+ <script crossorigin="anonymous" src="https://assets-cdn.github.com/assets/compat-8a4318ffea09a0cdb8214b76cf2926b9f6a0ced318a317bed419db19214c690d.js"></script>
+ <script crossorigin="anonymous" src="https://assets-cdn.github.com/assets/frameworks-5fe43fc6a9e5120c427334a38e9a7601418682a33981c073851434a7e1005049.js"></script>
+ <script async="async" crossorigin="anonymous" src="https://assets-cdn.github.com/assets/github-387e440057863502901f8fc65f30ab4d8850d60481166da4c5d1983e9e8a4feb.js"></script>
+
+
+
+
+ <div class="js-stale-session-flash stale-session-flash flash flash-warn flash-banner d-none">
+ <svg aria-hidden="true" class="octicon octicon-alert" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M8.865 1.52c-.18-.31-.51-.5-.87-.5s-.69.19-.87.5L.275 13.5c-.18.31-.18.69 0 1 .19.31.52.5.87.5h13.7c.36 0 .69-.19.86-.5.17-.31.18-.69.01-1L8.865 1.52zM8.995 13h-2v-2h2v2zm0-3h-2V6h2v4z"/></svg>
+ <span class="signed-in-tab-flash">You signed in with another tab or window. <a href="">Reload</a> to refresh your session.</span>
+ <span class="signed-out-tab-flash">You signed out in another tab or window. <a href="">Reload</a> to refresh your session.</span>
+ </div>
+ <div class="facebox" id="facebox" style="display:none;">
+ <div class="facebox-popup">
+ <div class="facebox-content" role="dialog" aria-labelledby="facebox-header" aria-describedby="facebox-description">
+ </div>
+ <button type="button" class="facebox-close js-facebox-close" aria-label="Close modal">
+ <svg aria-hidden="true" class="octicon octicon-x" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48z"/></svg>
+ </button>
+ </div>
+</div>
+
+
+ </body>
+</html>
+
diff -urN ClickHouse-1.1.54231-stable.orig/contrib/liblz4/include/lz4/lz4hc.h ClickHouse-1.1.54231-stable/contrib/liblz4/include/lz4/lz4hc.h
--- ClickHouse-1.1.54231-stable.orig/contrib/liblz4/include/lz4/lz4hc.h 2017-05-16 14:07:59.632657802 +0300
+++ ClickHouse-1.1.54231-stable/contrib/liblz4/include/lz4/lz4hc.h 2017-05-16 14:36:47.523498794 +0300
@@ -1,189 +1,2998 @@
-/*
- LZ4 HC - High Compression Mode of LZ4
- Header File
- Copyright (C) 2011-2015, Yann Collet.
- BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following disclaimer
- in the documentation and/or other materials provided with the
- distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- You can contact the author at :
- - LZ4 source repository : https://github.com/Cyan4973/lz4
- - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c
-*/
-#pragma once
-
-
-#if defined (__cplusplus)
-extern "C" {
-#endif
-
-/*****************************
-* Includes
-*****************************/
-#include <stddef.h> /* size_t */
-
-
-/**************************************
-* Block Compression
-**************************************/
-int LZ4_compress_HC (const char* src, char* dst, int srcSize, int maxDstSize, int compressionLevel);
-/*
-LZ4_compress_HC :
- Destination buffer 'dst' must be already allocated.
- Compression completion is guaranteed if 'dst' buffer is sized to handle worst circumstances (data not compressible)
- Worst size evaluation is provided by function LZ4_compressBound() (see "lz4.h")
- srcSize : Max supported value is LZ4_MAX_INPUT_SIZE (see "lz4.h")
- compressionLevel : Recommended values are between 4 and 9, although any value between 0 and 16 will work.
- 0 means "use default value" (see lz4hc.c).
- Values >16 behave the same as 16.
- return : the number of bytes written into buffer 'dst'
- or 0 if compression fails.
-*/
-
-
-/* Note :
- Decompression functions are provided within LZ4 source code (see "lz4.h") (BSD license)
-*/
-
-
-int LZ4_sizeofStateHC(void);
-int LZ4_compress_HC_extStateHC(void* state, const char* src, char* dst, int srcSize, int maxDstSize, int compressionLevel);
-/*
-LZ4_compress_HC_extStateHC() :
- Use this function if you prefer to manually allocate memory for compression tables.
- To know how much memory must be allocated for the compression tables, use :
- int LZ4_sizeofStateHC();
-
- Allocated memory must be aligned on 8-bytes boundaries (which a normal malloc() will do properly).
-
- The allocated memory can then be provided to the compression functions using 'void* state' parameter.
- LZ4_compress_HC_extStateHC() is equivalent to previously described function.
- It just uses externally allocated memory for stateHC.
-*/
-
-
-/**************************************
-* Streaming Compression
-**************************************/
-#define LZ4_STREAMHCSIZE 262192
-#define LZ4_STREAMHCSIZE_SIZET (LZ4_STREAMHCSIZE / sizeof(size_t))
-typedef struct { size_t table[LZ4_STREAMHCSIZE_SIZET]; } LZ4_streamHC_t;
-/*
- LZ4_streamHC_t
- This structure allows static allocation of LZ4 HC streaming state.
- State must then be initialized using LZ4_resetStreamHC() before first use.
-
- Static allocation should only be used in combination with static linking.
- If you want to use LZ4 as a DLL, please use construction functions below, which are future-proof.
-*/
-
-
-LZ4_streamHC_t* LZ4_createStreamHC(void);
-int LZ4_freeStreamHC (LZ4_streamHC_t* streamHCPtr);
-/*
- These functions create and release memory for LZ4 HC streaming state.
- Newly created states are already initialized.
- Existing state space can be re-used anytime using LZ4_resetStreamHC().
- If you use LZ4 as a DLL, use these functions instead of static structure allocation,
- to avoid size mismatch between different versions.
-*/
-
-void LZ4_resetStreamHC (LZ4_streamHC_t* streamHCPtr, int compressionLevel);
-int LZ4_loadDictHC (LZ4_streamHC_t* streamHCPtr, const char* dictionary, int dictSize);
-
-int LZ4_compress_HC_continue (LZ4_streamHC_t* streamHCPtr, const char* src, char* dst, int srcSize, int maxDstSize);
-
-int LZ4_saveDictHC (LZ4_streamHC_t* streamHCPtr, char* safeBuffer, int maxDictSize);
-
-/*
- These functions compress data in successive blocks of any size, using previous blocks as dictionary.
- One key assumption is that previous blocks (up to 64 KB) remain read-accessible while compressing next blocks.
- There is an exception for ring buffers, which can be smaller 64 KB.
- Such case is automatically detected and correctly handled by LZ4_compress_HC_continue().
-
- Before starting compression, state must be properly initialized, using LZ4_resetStreamHC().
- A first "fictional block" can then be designated as initial dictionary, using LZ4_loadDictHC() (Optional).
-
- Then, use LZ4_compress_HC_continue() to compress each successive block.
- It works like LZ4_compress_HC(), but use previous memory blocks as dictionary to improve compression.
- Previous memory blocks (including initial dictionary when present) must remain accessible and unmodified during compression.
- As a reminder, size 'dst' buffer to handle worst cases, using LZ4_compressBound(), to ensure success of compression operation.
-
- If, for any reason, previous data blocks can't be preserved unmodified in memory during next compression block,
- you must save it to a safer memory space, using LZ4_saveDictHC().
- Return value of LZ4_saveDictHC() is the size of dictionary effectively saved into 'safeBuffer'.
-*/
-
-
-
-/**************************************
-* Deprecated Functions
-**************************************/
-/* Deprecate Warnings */
-/* Should these warnings messages be a problem,
- it is generally possible to disable them,
- with -Wno-deprecated-declarations for gcc
- or _CRT_SECURE_NO_WARNINGS in Visual for example.
- You can also define LZ4_DEPRECATE_WARNING_DEFBLOCK. */
-#ifndef LZ4_DEPRECATE_WARNING_DEFBLOCK
-# define LZ4_DEPRECATE_WARNING_DEFBLOCK
-# define LZ4_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
-# if (LZ4_GCC_VERSION >= 405) || defined(__clang__)
-# define LZ4_DEPRECATED(message) __attribute__((deprecated(message)))
-# elif (LZ4_GCC_VERSION >= 301)
-# define LZ4_DEPRECATED(message) __attribute__((deprecated))
-# elif defined(_MSC_VER)
-# define LZ4_DEPRECATED(message) __declspec(deprecated(message))
-# else
-# pragma message("WARNING: You need to implement LZ4_DEPRECATED for this compiler")
-# define LZ4_DEPRECATED(message)
-# endif
-#endif // LZ4_DEPRECATE_WARNING_DEFBLOCK
-
-/* compression functions */
-/* these functions are planned to trigger warning messages by r131 approximately */
-int LZ4_compressHC (const char* source, char* dest, int inputSize);
-int LZ4_compressHC_limitedOutput (const char* source, char* dest, int inputSize, int maxOutputSize);
-int LZ4_compressHC2 (const char* source, char* dest, int inputSize, int compressionLevel);
-int LZ4_compressHC2_limitedOutput (const char* source, char* dest, int inputSize, int maxOutputSize, int compressionLevel);
-int LZ4_compressHC_withStateHC (void* state, const char* source, char* dest, int inputSize);
-int LZ4_compressHC_limitedOutput_withStateHC (void* state, const char* source, char* dest, int inputSize, int maxOutputSize);
-int LZ4_compressHC2_withStateHC (void* state, const char* source, char* dest, int inputSize, int compressionLevel);
-int LZ4_compressHC2_limitedOutput_withStateHC(void* state, const char* source, char* dest, int inputSize, int maxOutputSize, int compressionLevel);
-int LZ4_compressHC_continue (LZ4_streamHC_t* LZ4_streamHCPtr, const char* source, char* dest, int inputSize);
-int LZ4_compressHC_limitedOutput_continue (LZ4_streamHC_t* LZ4_streamHCPtr, const char* source, char* dest, int inputSize, int maxOutputSize);
-
-/* Streaming functions following the older model; should no longer be used */
-LZ4_DEPRECATED("use LZ4_createStreamHC() instead") void* LZ4_createHC (char* inputBuffer);
-LZ4_DEPRECATED("use LZ4_saveDictHC() instead") char* LZ4_slideInputBufferHC (void* LZ4HC_Data);
-LZ4_DEPRECATED("use LZ4_freeStreamHC() instead") int LZ4_freeHC (void* LZ4HC_Data);
-LZ4_DEPRECATED("use LZ4_compress_HC_continue() instead") int LZ4_compressHC2_continue (void* LZ4HC_Data, const char* source, char* dest, int inputSize, int compressionLevel);
-LZ4_DEPRECATED("use LZ4_compress_HC_continue() instead") int LZ4_compressHC2_limitedOutput_continue (void* LZ4HC_Data, const char* source, char* dest, int inputSize, int maxOutputSize, int compressionLevel);
-LZ4_DEPRECATED("use LZ4_createStreamHC() instead") int LZ4_sizeofStreamStateHC(void);
-LZ4_DEPRECATED("use LZ4_resetStreamHC() instead") int LZ4_resetStreamStateHC(void* state, char* inputBuffer);
-
-
-#if defined (__cplusplus)
-}
-#endif
+
+
+
+
+
+
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+
+
+
+ <link crossorigin="anonymous" href="https://assets-cdn.github.com/assets/frameworks-81a59bf26d881d29286674f6deefe779c444382fff322085b50ba455460ccae5.css" media="all" rel="stylesheet" />
+ <link crossorigin="anonymous" href="https://assets-cdn.github.com/assets/github-f09eadfa6bc10db3f2203de09e1e4850ee95a6e8c2b8ec976dc71f94d21ab73e.css" media="all" rel="stylesheet" />
+
+
+ <link crossorigin="anonymous" href="https://assets-cdn.github.com/assets/site-2c92bc76698d4d5460eb289b4a8317610376595a748d05563eb0080165d26b26.css" media="all" rel="stylesheet" />
+
+
+ <meta name="viewport" content="width=device-width">
+
+ <title>ClickHouse/lz4hc.h at c9cb48196b32a9d0505f5626bf81604e1b08b5ba · kmeaw/ClickHouse · GitHub</title>
+ <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">
+ <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
+ <meta property="fb:app_id" content="1401488693436528">
+
+
+ <meta content="https://avatars1.githubusercontent.com/u/94270?v=3&amp;s=400" property="og:image" /><meta content="GitHub" property="og:site_name" /><meta content="object" property="og:type" /><meta content="kmeaw/ClickHouse" property="og:title" /><meta content="https://github.com/kmeaw/ClickHouse" property="og:url" /><meta content="ClickHouse is a free analytic DBMS for big data." property="og:description" />
+
+ <link rel="assets" href="https://assets-cdn.github.com/">
+
+ <meta name="pjax-timeout" content="1000">
+
+ <meta name="request-id" content="C9CA:7F33:A98DA9:10BF330:591AE44E" data-pjax-transient>
+
+
+ <meta name="selected-link" value="repo_source" data-pjax-transient>
+
+ <meta name="google-site-verification" content="KT5gs8h0wvaagLKAVWq8bbeNwnZZK1r1XQysX3xurLU">
+<meta name="google-site-verification" content="ZzhVyEFwb7w3e0-uOTltm8Jsck2F5StVihD0exw2fsA">
+ <meta name="google-analytics" content="UA-3769691-2">
+
+<meta content="collector.githubapp.com" name="octolytics-host" /><meta content="github" name="octolytics-app-id" /><meta content="https://collector.githubapp.com/github-external/browser_event" name="octolytics-event-url" /><meta content="C9CA:7F33:A98DA9:10BF330:591AE44E" name="octolytics-dimension-request_id" />
+<meta content="/&lt;user-name&gt;/&lt;repo-name&gt;/blob/show" data-pjax-transient="true" name="analytics-location" />
+
+
+
+
+ <meta class="js-ga-set" name="dimension1" content="Logged Out">
+
+
+
+
+ <meta name="hostname" content="github.com">
+ <meta name="user-login" content="">
+
+ <meta name="expected-hostname" content="github.com">
+ <meta name="js-proxy-site-detection-payload" content="OTQxOWYwNjk3ZGE2ZjEwMzRhN2Y1ZTU2OWQ2YzY4ZTgwM2JhZDZiMWY4N2E4ODFlZDc2NTY1MDVjOTFkODQ1N3x7InJlbW90ZV9hZGRyZXNzIjoiMTI4LjcyLjE0Ny4yMzMiLCJyZXF1ZXN0X2lkIjoiQzlDQTo3RjMzOkE5OERBOToxMEJGMzMwOjU5MUFFNDRFIiwidGltZXN0YW1wIjoxNDk0OTM0NjA2LCJob3N0IjoiZ2l0aHViLmNvbSJ9">
+
+
+ <meta name="html-safe-nonce" content="ce9bccdf7202db6538ad8455842b5a84b35b4e0d">
+
+ <meta http-equiv="x-pjax-version" content="63128f18e0384b37391e5f21c7210502">
+
+
+
+ <meta name="description" content="ClickHouse is a free analytic DBMS for big data.">
+ <meta name="go-import" content="github.com/kmeaw/ClickHouse git https://github.com/kmeaw/ClickHouse.git">
+
+ <meta content="94270" name="octolytics-dimension-user_id" /><meta content="kmeaw" name="octolytics-dimension-user_login" /><meta content="76474071" name="octolytics-dimension-repository_id" /><meta content="kmeaw/ClickHouse" name="octolytics-dimension-repository_nwo" /><meta content="true" name="octolytics-dimension-repository_public" /><meta content="true" name="octolytics-dimension-repository_is_fork" /><meta content="60246359" name="octolytics-dimension-repository_parent_id" /><meta content="yandex/ClickHouse" name="octolytics-dimension-repository_parent_nwo" /><meta content="60246359" name="octolytics-dimension-repository_network_root_id" /><meta content="yandex/ClickHouse" name="octolytics-dimension-repository_network_root_nwo" />
+ <link href="https://github.com/kmeaw/ClickHouse/commits/c9cb48196b32a9d0505f5626bf81604e1b08b5ba.atom" rel="alternate" title="Recent Commits to ClickHouse:c9cb48196b32a9d0505f5626bf81604e1b08b5ba" type="application/atom+xml">
+
+
+ <link rel="canonical" href="https://github.com/kmeaw/ClickHouse/blob/c9cb48196b32a9d0505f5626bf81604e1b08b5ba/contrib/liblz4/include/lz4/lz4hc.h" data-pjax-transient>
+
+
+ <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats">
+
+ <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors">
+
+ <link rel="mask-icon" href="https://assets-cdn.github.com/pinned-octocat.svg" color="#000000">
+ <link rel="icon" type="image/x-icon" href="https://assets-cdn.github.com/favicon.ico">
+
+<meta name="theme-color" content="#1e2327">
+
+
+
+ </head>
+
+ <body class="logged-out env-production page-blob">
+
+
+
+
+ <div class="position-relative js-header-wrapper ">
+ <a href="#start-of-content" tabindex="1" class="accessibility-aid js-skip-to-content">Skip to content</a>
+ <div id="js-pjax-loader-bar" class="pjax-loader-bar"><div class="progress"></div></div>
+
+
+
+
+
+
+
+ <header class="site-header js-details-container Details" role="banner">
+ <div class="container-responsive">
+ <a class="header-logo-invertocat" href="https://github.com/" aria-label="Homepage" data-ga-click="(Logged out) Header, go to homepage, icon:logo-wordmark">
+ <svg aria-hidden="true" class="octicon octicon-mark-github" height="32" version="1.1" viewBox="0 0 16 16" width="32"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>
+ </a>
+
+ <button class="btn-link float-right site-header-toggle js-details-target" type="button" aria-label="Toggle navigation">
+ <svg aria-hidden="true" class="octicon octicon-three-bars" height="24" version="1.1" viewBox="0 0 12 16" width="18"><path fill-rule="evenodd" d="M11.41 9H.59C0 9 0 8.59 0 8c0-.59 0-1 .59-1H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1h.01zm0-4H.59C0 5 0 4.59 0 4c0-.59 0-1 .59-1H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1h.01zM.59 11H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1H.59C0 13 0 12.59 0 12c0-.59 0-1 .59-1z"/></svg>
+ </button>
+
+ <div class="site-header-menu">
+ <nav class="site-header-nav">
+ <a href="/features" class="js-selected-navigation-item nav-item" data-ga-click="Header, click, Nav menu - item:features" data-selected-links="/features /features">
+ Features
+</a> <a href="/business" class="js-selected-navigation-item nav-item" data-ga-click="Header, click, Nav menu - item:business" data-selected-links="/business /business/security /business/customers /business">
+ Business
+</a> <a href="/explore" class="js-selected-navigation-item nav-item" data-ga-click="Header, click, Nav menu - item:explore" data-selected-links="/explore /trending /trending/developers /integrations /integrations/feature/code /integrations/feature/collaborate /integrations/feature/ship /showcases /explore">
+ Explore
+</a> <a href="/pricing" class="js-selected-navigation-item nav-item" data-ga-click="Header, click, Nav menu - item:pricing" data-selected-links="/pricing /pricing/developer /pricing/team /pricing/business-hosted /pricing/business-enterprise /pricing">
+ Pricing
+</a> </nav>
+
+ <div class="site-header-actions">
+ <div class="header-search scoped-search site-scoped-search js-site-search" role="search">
+ <!-- '"` --><!-- </textarea></xmp> --></option></form><form accept-charset="UTF-8" action="/kmeaw/ClickHouse/search" class="js-site-search-form" data-scoped-search-url="/kmeaw/ClickHouse/search" data-unscoped-search-url="/search" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /></div>
+ <label class="form-control header-search-wrapper js-chromeless-input-container">
+ <a href="/kmeaw/ClickHouse/blob/c9cb48196b32a9d0505f5626bf81604e1b08b5ba/contrib/liblz4/include/lz4/lz4hc.h" class="header-search-scope no-underline">This repository</a>
+ <input type="text"
+ class="form-control header-search-input js-site-search-focus js-site-search-field is-clearable"
+ data-hotkey="s"
+ name="q"
+ value=""
+ placeholder="Search"
+ aria-label="Search this repository"
+ data-unscoped-placeholder="Search GitHub"
+ data-scoped-placeholder="Search"
+ autocapitalize="off">
+ <input type="hidden" class="js-site-search-type-field" name="type" >
+ </label>
+</form></div>
+
+
+ <a class="text-bold site-header-link" href="/login?return_to=%2Fkmeaw%2FClickHouse%2Fblob%2Fc9cb48196b32a9d0505f5626bf81604e1b08b5ba%2Fcontrib%2Fliblz4%2Finclude%2Flz4%2Flz4hc.h" data-ga-click="(Logged out) Header, clicked Sign in, text:sign-in">Sign in</a>
+ <span class="text-gray">or</span>
+ <a class="text-bold site-header-link" href="/join?source=header-repo" data-ga-click="(Logged out) Header, clicked Sign up, text:sign-up">Sign up</a>
+ </div>
+ </div>
+ </div>
+</header>
+
+
+ </div>
+
+ <div id="start-of-content" class="accessibility-aid"></div>
+
+ <div id="js-flash-container">
+</div>
+
+
+
+ <div role="main">
+ <div itemscope itemtype="http://schema.org/SoftwareSourceCode">
+ <div id="js-repo-pjax-container" data-pjax-container>
+
+
+
+
+ <div class="pagehead repohead instapaper_ignore readability-menu experiment-repo-nav">
+ <div class="container repohead-details-container">
+
+ <ul class="pagehead-actions">
+ <li>
+ <a href="/login?return_to=%2Fkmeaw%2FClickHouse"
+ class="btn btn-sm btn-with-count tooltipped tooltipped-n"
+ aria-label="You must be signed in to watch a repository" rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-eye" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M8.06 2C3 2 0 8 0 8s3 6 8.06 6C13 14 16 8 16 8s-3-6-7.94-6zM8 12c-2.2 0-4-1.78-4-4 0-2.2 1.8-4 4-4 2.22 0 4 1.8 4 4 0 2.22-1.78 4-4 4zm2-4c0 1.11-.89 2-2 2-1.11 0-2-.89-2-2 0-1.11.89-2 2-2 1.11 0 2 .89 2 2z"/></svg>
+ Watch
+ </a>
+ <a class="social-count" href="/kmeaw/ClickHouse/watchers"
+ aria-label="1 user is watching this repository">
+ 1
+ </a>
+
+ </li>
+
+ <li>
+ <a href="/login?return_to=%2Fkmeaw%2FClickHouse"
+ class="btn btn-sm btn-with-count tooltipped tooltipped-n"
+ aria-label="You must be signed in to star a repository" rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-star" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path fill-rule="evenodd" d="M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14 7 11.67 11.33 14l-.93-4.74z"/></svg>
+ Star
+ </a>
+
+ <a class="social-count js-social-count" href="/kmeaw/ClickHouse/stargazers"
+ aria-label="0 users starred this repository">
+ 0
+ </a>
+
+ </li>
+
+ <li>
+ <a href="/login?return_to=%2Fkmeaw%2FClickHouse"
+ class="btn btn-sm btn-with-count tooltipped tooltipped-n"
+ aria-label="You must be signed in to fork a repository" rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-repo-forked" height="16" version="1.1" viewBox="0 0 10 16" width="10"><path fill-rule="evenodd" d="M8 1a1.993 1.993 0 0 0-1 3.72V6L5 8 3 6V4.72A1.993 1.993 0 0 0 2 1a1.993 1.993 0 0 0-1 3.72V6.5l3 3v1.78A1.993 1.993 0 0 0 5 15a1.993 1.993 0 0 0 1-3.72V9.5l3-3V4.72A1.993 1.993 0 0 0 8 1zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3 10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3-10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg>
+ Fork
+ </a>
+
+ <a href="/kmeaw/ClickHouse/network" class="social-count"
+ aria-label="303 users forked this repository">
+ 303
+ </a>
+ </li>
+</ul>
+
+ <h1 class="public ">
+ <svg aria-hidden="true" class="octicon octicon-repo-forked" height="16" version="1.1" viewBox="0 0 10 16" width="10"><path fill-rule="evenodd" d="M8 1a1.993 1.993 0 0 0-1 3.72V6L5 8 3 6V4.72A1.993 1.993 0 0 0 2 1a1.993 1.993 0 0 0-1 3.72V6.5l3 3v1.78A1.993 1.993 0 0 0 5 15a1.993 1.993 0 0 0 1-3.72V9.5l3-3V4.72A1.993 1.993 0 0 0 8 1zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3 10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3-10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg>
+ <span class="author" itemprop="author"><a href="/kmeaw" class="url fn" rel="author">kmeaw</a></span><!--
+--><span class="path-divider">/</span><!--
+--><strong itemprop="name"><a href="/kmeaw/ClickHouse" data-pjax="#js-repo-pjax-container">ClickHouse</a></strong>
+
+ <span class="fork-flag">
+ <span class="text">forked from <a href="/yandex/ClickHouse">yandex/ClickHouse</a></span>
+ </span>
+</h1>
+
+ </div>
+ <div class="container">
+
+<nav class="reponav js-repo-nav js-sidenav-container-pjax"
+ itemscope
+ itemtype="http://schema.org/BreadcrumbList"
+ role="navigation"
+ data-pjax="#js-repo-pjax-container">
+
+ <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
+ <a href="/kmeaw/ClickHouse" class="js-selected-navigation-item selected reponav-item" data-hotkey="g c" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches /kmeaw/ClickHouse" itemprop="url">
+ <svg aria-hidden="true" class="octicon octicon-code" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path fill-rule="evenodd" d="M9.5 3L8 4.5 11.5 8 8 11.5 9.5 13 14 8 9.5 3zm-5 0L0 8l4.5 5L6 11.5 2.5 8 6 4.5 4.5 3z"/></svg>
+ <span itemprop="name">Code</span>
+ <meta itemprop="position" content="1">
+</a> </span>
+
+
+ <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
+ <a href="/kmeaw/ClickHouse/pulls" class="js-selected-navigation-item reponav-item" data-hotkey="g p" data-selected-links="repo_pulls /kmeaw/ClickHouse/pulls" itemprop="url">
+ <svg aria-hidden="true" class="octicon octicon-git-pull-request" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M11 11.28V5c-.03-.78-.34-1.47-.94-2.06C9.46 2.35 8.78 2.03 8 2H7V0L4 3l3 3V4h1c.27.02.48.11.69.31.21.2.3.42.31.69v6.28A1.993 1.993 0 0 0 10 15a1.993 1.993 0 0 0 1-3.72zm-1 2.92c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zM4 3c0-1.11-.89-2-2-2a1.993 1.993 0 0 0-1 3.72v6.56A1.993 1.993 0 0 0 2 15a1.993 1.993 0 0 0 1-3.72V4.72c.59-.34 1-.98 1-1.72zm-.8 10c0 .66-.55 1.2-1.2 1.2-.65 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg>
+ <span itemprop="name">Pull requests</span>
+ <span class="Counter">0</span>
+ <meta itemprop="position" content="3">
+</a> </span>
+
+ <a href="/kmeaw/ClickHouse/projects" class="js-selected-navigation-item reponav-item" data-selected-links="repo_projects new_repo_project repo_project /kmeaw/ClickHouse/projects">
+ <svg aria-hidden="true" class="octicon octicon-project" height="16" version="1.1" viewBox="0 0 15 16" width="15"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1z"/></svg>
+ Projects
+ <span class="Counter" >0</span>
+</a>
+
+
+
+ <a href="/kmeaw/ClickHouse/pulse" class="js-selected-navigation-item reponav-item" data-selected-links="pulse /kmeaw/ClickHouse/pulse">
+ <svg aria-hidden="true" class="octicon octicon-pulse" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path fill-rule="evenodd" d="M11.5 8L8.8 5.4 6.6 8.5 5.5 1.6 2.38 8H0v2h3.6l.9-1.8.9 5.4L9 8.5l1.6 1.5H14V8z"/></svg>
+ Pulse
+</a>
+ <a href="/kmeaw/ClickHouse/graphs" class="js-selected-navigation-item reponav-item" data-selected-links="repo_graphs repo_contributors /kmeaw/ClickHouse/graphs">
+ <svg aria-hidden="true" class="octicon octicon-graph" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M16 14v1H0V0h1v14h15zM5 13H3V8h2v5zm4 0H7V3h2v10zm4 0h-2V6h2v7z"/></svg>
+ Graphs
+</a>
+
+</nav>
+
+ </div>
+ </div>
+
+<div class="container new-discussion-timeline experiment-repo-nav">
+ <div class="repository-content">
+
+
+
+
+<a href="/kmeaw/ClickHouse/blob/c9cb48196b32a9d0505f5626bf81604e1b08b5ba/contrib/liblz4/include/lz4/lz4hc.h" class="d-none js-permalink-shortcut" data-hotkey="y">Permalink</a>
+
+<!-- blob contrib key: blob_contributors:v21:16b21630e62982634ef1b80c39031934 -->
+
+<div class="file-navigation js-zeroclipboard-container">
+
+<div class="select-menu branch-select-menu js-menu-container js-select-menu float-left">
+ <button class=" btn btn-sm select-menu-button js-menu-target css-truncate" data-hotkey="w"
+
+ type="button" aria-label="Switch branches or tags" tabindex="0" aria-haspopup="true">
+ <i>Tree:</i>
+ <span class="js-select-button css-truncate-target">c9cb48196b</span>
+ </button>
+
+ <div class="select-menu-modal-holder js-menu-content js-navigation-container" data-pjax>
+
+ <div class="select-menu-modal">
+ <div class="select-menu-header">
+ <svg aria-label="Close" class="octicon octicon-x js-menu-close" height="16" role="img" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48z"/></svg>
+ <span class="select-menu-title">Switch branches/tags</span>
+ </div>
+
+ <div class="select-menu-filters">
+ <div class="select-menu-text-filter">
+ <input type="text" aria-label="Filter branches/tags" id="context-commitish-filter-field" class="form-control js-filterable-field js-navigation-enable" placeholder="Filter branches/tags">
+ </div>
+ <div class="select-menu-tabs">
+ <ul>
+ <li class="select-menu-tab">
+ <a href="#" data-tab-filter="branches" data-filter-placeholder="Filter branches/tags" class="js-select-menu-tab" role="tab">Branches</a>
+ </li>
+ <li class="select-menu-tab">
+ <a href="#" data-tab-filter="tags" data-filter-placeholder="Find a tag…" class="js-select-menu-tab" role="tab">Tags</a>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="branches" role="menu">
+
+ <div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
+
+
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/54032-hotfix/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="54032-hotfix"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ 54032-hotfix
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/54046-investigate-instersecting-parts/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="54046-investigate-instersecting-parts"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ 54046-investigate-instersecting-parts
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/METR-18510/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="METR-18510"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ METR-18510
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/METR-18844/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="METR-18844"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ METR-18844
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/METR-19266/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="METR-19266"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ METR-19266
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/METR-22842/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="METR-22842"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ METR-22842
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/METR-22935/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="METR-22935"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ METR-22935
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/METR-23305/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="METR-23305"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ METR-23305
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/always-return-single-row-when-aggregate-without-key/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="always-return-single-row-when-aggregate-without-key"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ always-return-single-row-when-aggregate-without-key
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/aprudaev-patch-1/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="aprudaev-patch-1"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ aprudaev-patch-1
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/asan-fix-linkage/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="asan-fix-linkage"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ asan-fix-linkage
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/bark-on-multi-statements/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="bark-on-multi-statements"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ bark-on-multi-statements
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/basedaemon-fix/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="basedaemon-fix"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ basedaemon-fix
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/block-simplification/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="block-simplification"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ block-simplification
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/change-signal/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="change-signal"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ change-signal
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/chebotarev-cmake-2/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="chebotarev-cmake-2"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ chebotarev-cmake-2
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/client-info/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="client-info"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ client-info
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/cmake-magic/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="cmake-magic"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ cmake-magic
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/convert_charset_function/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="convert_charset_function"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ convert_charset_function
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/dev-vludv/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="dev-vludv"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ dev-vludv
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/doc-telegram-chat/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="doc-telegram-chat"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ doc-telegram-chat
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/fix-external-aggregation-stuck-at-more-4bn-keys/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="fix-external-aggregation-stuck-at-more-4bn-keys"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ fix-external-aggregation-stuck-at-more-4bn-keys
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/force_restore_data_flag_in_filesystem/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="force_restore_data_flag_in_filesystem"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ force_restore_data_flag_in_filesystem
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/glibc-compatibility/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="glibc-compatibility"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ glibc-compatibility
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/has-column-in-table/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="has-column-in-table"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ has-column-in-table
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/hierarchical-dictionaries-performance/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="hierarchical-dictionaries-performance"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ hierarchical-dictionaries-performance
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/if_with_const_condition/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="if_with_const_condition"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ if_with_const_condition
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/in-tree-boost/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="in-tree-boost"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ in-tree-boost
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/issue-219/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="issue-219"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ issue-219
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/joins_rectification/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="joins_rectification"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ joins_rectification
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/lz4/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="lz4"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ lz4
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/master/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="master"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ master
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/merge-selector-attempt-to-make-sense/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="merge-selector-attempt-to-make-sense"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ merge-selector-attempt-to-make-sense
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/merge-selector/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="merge-selector"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ merge-selector
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/metrica-sync2/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="metrica-sync2"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ metrica-sync2
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/metrica-sync3/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="metrica-sync3"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ metrica-sync3
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/metrics_refinement/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="metrics_refinement"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ metrics_refinement
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/metrika-sync-3/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="metrika-sync-3"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ metrika-sync-3
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/metrika-sync/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="metrika-sync"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ metrika-sync
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/more-verbose-error-message-on-conversion-fail/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="more-verbose-error-message-on-conversion-fail"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ more-verbose-error-message-on-conversion-fail
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/olap-query-converter/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="olap-query-converter"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ olap-query-converter
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/parse-java-style-floating-point-denormals/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="parse-java-style-floating-point-denormals"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ parse-java-style-floating-point-denormals
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/patching-mysqlclient/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="patching-mysqlclient"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ patching-mysqlclient
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/random-test-data-generator/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="random-test-data-generator"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ random-test-data-generator
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/repair-subtree2/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="repair-subtree2"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ repair-subtree2
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/revert-39-METR-18844/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="revert-39-METR-18844"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ revert-39-METR-18844
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/revert-90-master/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="revert-90-master"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ revert-90-master
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/revert-171-METR-23305/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="revert-171-METR-23305"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ revert-171-METR-23305
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/squashing-blocks/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="squashing-blocks"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ squashing-blocks
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/stable/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="stable"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ stable
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/statistics-in-json-format/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="statistics-in-json-format"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ statistics-in-json-format
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/blob/try-to-improve-performance-of-column-string-insert-into/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="try-to-improve-performance-of-column-string-insert-into"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
+ try-to-improve-performance-of-column-string-insert-into
+ </span>
+ </a>
+ </div>
+
+ <div class="select-menu-no-results">Nothing to show</div>
+ </div>
+
+ <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="tags">
+ <div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
+
+
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54121-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54121-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54121-testing">
+ v1.1.54121-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54120-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54120-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54120-testing">
+ v1.1.54120-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54119-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54119-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54119-testing">
+ v1.1.54119-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54118-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54118-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54118-testing">
+ v1.1.54118-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54117-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54117-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54117-testing">
+ v1.1.54117-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54116-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54116-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54116-testing">
+ v1.1.54116-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54115-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54115-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54115-testing">
+ v1.1.54115-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54114-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54114-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54114-testing">
+ v1.1.54114-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54113-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54113-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54113-testing">
+ v1.1.54113-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54112-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54112-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54112-testing">
+ v1.1.54112-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54112-stable/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54112-stable"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54112-stable">
+ v1.1.54112-stable
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54111-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54111-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54111-testing">
+ v1.1.54111-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54110-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54110-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54110-testing">
+ v1.1.54110-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54109-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54109-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54109-testing">
+ v1.1.54109-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54108-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54108-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54108-testing">
+ v1.1.54108-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54107-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54107-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54107-testing">
+ v1.1.54107-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54106-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54106-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54106-testing">
+ v1.1.54106-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54105-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54105-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54105-testing">
+ v1.1.54105-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54104-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54104-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54104-testing">
+ v1.1.54104-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54103-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54103-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54103-testing">
+ v1.1.54103-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54102-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54102-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54102-testing">
+ v1.1.54102-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54101-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54101-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54101-testing">
+ v1.1.54101-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54100-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54100-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54100-testing">
+ v1.1.54100-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54099-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54099-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54099-testing">
+ v1.1.54099-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54098-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54098-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54098-testing">
+ v1.1.54098-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54097-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54097-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54097-testing">
+ v1.1.54097-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54096-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54096-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54096-testing">
+ v1.1.54096-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54095-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54095-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54095-testing">
+ v1.1.54095-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54094-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54094-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54094-testing">
+ v1.1.54094-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54093-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54093-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54093-testing">
+ v1.1.54093-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54092-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54092-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54092-testing">
+ v1.1.54092-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54091-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54091-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54091-testing">
+ v1.1.54091-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54090-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54090-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54090-testing">
+ v1.1.54090-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54089-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54089-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54089-testing">
+ v1.1.54089-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54088-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54088-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54088-testing">
+ v1.1.54088-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54087-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54087-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54087-testing">
+ v1.1.54087-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54086-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54086-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54086-testing">
+ v1.1.54086-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54085-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54085-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54085-testing">
+ v1.1.54085-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54084-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54084-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54084-testing">
+ v1.1.54084-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54083-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54083-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54083-testing">
+ v1.1.54083-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54083-stable/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54083-stable"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54083-stable">
+ v1.1.54083-stable
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54082-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54082-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54082-testing">
+ v1.1.54082-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54081-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54081-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54081-testing">
+ v1.1.54081-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54080-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54080-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54080-testing">
+ v1.1.54080-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54080-stable/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54080-stable"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54080-stable">
+ v1.1.54080-stable
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54079-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54079-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54079-testing">
+ v1.1.54079-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54078-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54078-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54078-testing">
+ v1.1.54078-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54077-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54077-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54077-testing">
+ v1.1.54077-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54076-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54076-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54076-testing">
+ v1.1.54076-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54075-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54075-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54075-testing">
+ v1.1.54075-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54074-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54074-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54074-testing">
+ v1.1.54074-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54074-stable/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54074-stable"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54074-stable">
+ v1.1.54074-stable
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54073-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54073-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54073-testing">
+ v1.1.54073-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54072-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54072-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54072-testing">
+ v1.1.54072-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54071-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54071-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54071-testing">
+ v1.1.54071-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54070-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54070-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54070-testing">
+ v1.1.54070-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54069-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54069-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54069-testing">
+ v1.1.54069-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54068-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54068-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54068-testing">
+ v1.1.54068-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54067-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54067-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54067-testing">
+ v1.1.54067-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54066-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54066-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54066-testing">
+ v1.1.54066-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54065-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54065-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54065-testing">
+ v1.1.54065-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54064-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54064-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54064-testing">
+ v1.1.54064-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54063-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54063-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54063-testing">
+ v1.1.54063-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54062-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54062-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54062-testing">
+ v1.1.54062-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54061-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54061-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54061-testing">
+ v1.1.54061-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54060-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54060-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54060-testing">
+ v1.1.54060-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54059-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54059-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54059-testing">
+ v1.1.54059-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54058-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54058-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54058-testing">
+ v1.1.54058-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54057-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54057-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54057-testing">
+ v1.1.54057-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54056-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54056-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54056-testing">
+ v1.1.54056-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54055-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54055-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54055-testing">
+ v1.1.54055-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54054-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54054-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54054-testing">
+ v1.1.54054-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54053-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54053-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54053-testing">
+ v1.1.54053-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54052-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54052-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54052-testing">
+ v1.1.54052-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54051-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54051-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54051-testing">
+ v1.1.54051-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54050-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54050-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54050-testing">
+ v1.1.54050-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54049-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54049-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54049-testing">
+ v1.1.54049-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54048-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54048-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54048-testing">
+ v1.1.54048-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54047-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54047-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54047-testing">
+ v1.1.54047-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54046-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54046-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54046-testing">
+ v1.1.54046-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54046-stable/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54046-stable"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54046-stable">
+ v1.1.54046-stable
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54045-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54045-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54045-testing">
+ v1.1.54045-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54044-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54044-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54044-testing">
+ v1.1.54044-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54043-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54043-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54043-testing">
+ v1.1.54043-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54042-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54042-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54042-testing">
+ v1.1.54042-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54041-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54041-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54041-testing">
+ v1.1.54041-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54040-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54040-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54040-testing">
+ v1.1.54040-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54039-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54039-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54039-testing">
+ v1.1.54039-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54038-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54038-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54038-testing">
+ v1.1.54038-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54037-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54037-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54037-testing">
+ v1.1.54037-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54036-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54036-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54036-testing">
+ v1.1.54036-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54035-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54035-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54035-testing">
+ v1.1.54035-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54034-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54034-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54034-testing">
+ v1.1.54034-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54033-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54033-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54033-testing">
+ v1.1.54033-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54032-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54032-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54032-testing">
+ v1.1.54032-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54031-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54031-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54031-testing">
+ v1.1.54031-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54030-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54030-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54030-testing">
+ v1.1.54030-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54030-stable/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54030-stable"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54030-stable">
+ v1.1.54030-stable
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54029-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54029-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54029-testing">
+ v1.1.54029-testing
+ </span>
+ </a>
+ <a class="select-menu-item js-navigation-item js-navigation-open "
+ href="/kmeaw/ClickHouse/tree/v1.1.54028-testing/contrib/liblz4/include/lz4/lz4hc.h"
+ data-name="v1.1.54028-testing"
+ data-skip-pjax="true"
+ rel="nofollow">
+ <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
+ <span class="select-menu-item-text css-truncate-target" title="v1.1.54028-testing">
+ v1.1.54028-testing
+ </span>
+ </a>
+ </div>
+
+ <div class="select-menu-no-results">Nothing to show</div>
+ </div>
+
+ </div>
+ </div>
+</div>
+
+ <div class="BtnGroup float-right">
+ <a href="/kmeaw/ClickHouse/find/c9cb48196b32a9d0505f5626bf81604e1b08b5ba"
+ class="js-pjax-capture-input btn btn-sm BtnGroup-item"
+ data-pjax
+ data-hotkey="t">
+ Find file
+ </a>
+ <button aria-label="Copy file path to clipboard" class="js-zeroclipboard btn btn-sm BtnGroup-item tooltipped tooltipped-s" data-copied-hint="Copied!" type="button">Copy path</button>
+ </div>
+ <div class="breadcrumb js-zeroclipboard-target">
+ <span class="repo-root js-repo-root"><span class="js-path-segment"><a href="/kmeaw/ClickHouse/tree/c9cb48196b32a9d0505f5626bf81604e1b08b5ba"><span>ClickHouse</span></a></span></span><span class="separator">/</span><span class="js-path-segment"><a href="/kmeaw/ClickHouse/tree/c9cb48196b32a9d0505f5626bf81604e1b08b5ba/contrib"><span>contrib</span></a></span><span class="separator">/</span><span class="js-path-segment"><a href="/kmeaw/ClickHouse/tree/c9cb48196b32a9d0505f5626bf81604e1b08b5ba/contrib/liblz4"><span>liblz4</span></a></span><span class="separator">/</span><span class="js-path-segment"><a href="/kmeaw/ClickHouse/tree/c9cb48196b32a9d0505f5626bf81604e1b08b5ba/contrib/liblz4/include"><span>include</span></a></span><span class="separator">/</span><span class="js-path-segment"><a href="/kmeaw/ClickHouse/tree/c9cb48196b32a9d0505f5626bf81604e1b08b5ba/contrib/liblz4/include/lz4"><span>lz4</span></a></span><span class="separator">/</span><strong class="final-path">lz4hc.h</strong>
+ </div>
+</div>
+
+
+
+ <div class="commit-tease">
+ <span class="float-right">
+ <a class="commit-tease-sha" href="/kmeaw/ClickHouse/commit/c9cb48196b32a9d0505f5626bf81604e1b08b5ba" data-pjax>
+ c9cb481
+ </a>
+ <relative-time datetime="2017-05-06T08:29:08Z">May 6, 2017</relative-time>
+ </span>
+ <div>
+ <img alt="@kmeaw" class="avatar" height="20" src="https://avatars0.githubusercontent.com/u/94270?v=3&amp;s=40" width="20" />
+ <a href="/kmeaw" class="user-mention" rel="author">kmeaw</a>
+ <a href="/kmeaw/ClickHouse/commit/c9cb48196b32a9d0505f5626bf81604e1b08b5ba" class="message" data-pjax="true" title="Update lz4 library to the latest stable version (1.7.5, 2016-11-28)">Update lz4 library to the latest stable version (1.7.5, 2016-11-28)</a>
+ </div>
+
+ <div class="commit-tease-contributors">
+ <button type="button" class="btn-link muted-link contributors-toggle" data-facebox="#blob_contributors_box">
+ <strong>2</strong>
+ contributors
+ </button>
+ <a class="avatar-link tooltipped tooltipped-s" aria-label="alexey-milovidov" href="/kmeaw/ClickHouse/commits/c9cb48196b32a9d0505f5626bf81604e1b08b5ba/contrib/liblz4/include/lz4/lz4hc.h?author=alexey-milovidov"><img alt="@alexey-milovidov" class="avatar" height="20" src="https://avatars0.githubusercontent.com/u/18581488?v=3&amp;s=40" width="20" /> </a>
+ <a class="avatar-link tooltipped tooltipped-s" aria-label="kmeaw" href="/kmeaw/ClickHouse/commits/c9cb48196b32a9d0505f5626bf81604e1b08b5ba/contrib/liblz4/include/lz4/lz4hc.h?author=kmeaw"><img alt="@kmeaw" class="avatar" height="20" src="https://avatars0.githubusercontent.com/u/94270?v=3&amp;s=40" width="20" /> </a>
+
+
+ </div>
+
+ <div id="blob_contributors_box" style="display:none">
+ <h2 class="facebox-header" data-facebox-id="facebox-header">Users who have contributed to this file</h2>
+ <ul class="facebox-user-list" data-facebox-id="facebox-description">
+ <li class="facebox-user-list-item">
+ <img alt="@alexey-milovidov" height="24" src="https://avatars2.githubusercontent.com/u/18581488?v=3&amp;s=48" width="24" />
+ <a href="/alexey-milovidov">alexey-milovidov</a>
+ </li>
+ <li class="facebox-user-list-item">
+ <img alt="@kmeaw" height="24" src="https://avatars2.githubusercontent.com/u/94270?v=3&amp;s=48" width="24" />
+ <a href="/kmeaw">kmeaw</a>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+<div class="file">
+ <div class="file-header">
+ <div class="file-actions">
+
+ <div class="BtnGroup">
+ <a href="/kmeaw/ClickHouse/raw/c9cb48196b32a9d0505f5626bf81604e1b08b5ba/contrib/liblz4/include/lz4/lz4hc.h" class="btn btn-sm BtnGroup-item" id="raw-url">Raw</a>
+ <a href="/kmeaw/ClickHouse/blame/c9cb48196b32a9d0505f5626bf81604e1b08b5ba/contrib/liblz4/include/lz4/lz4hc.h" class="btn btn-sm js-update-url-with-hash BtnGroup-item" data-hotkey="b">Blame</a>
+ <a href="/kmeaw/ClickHouse/commits/c9cb48196b32a9d0505f5626bf81604e1b08b5ba/contrib/liblz4/include/lz4/lz4hc.h" class="btn btn-sm BtnGroup-item" rel="nofollow">History</a>
+ </div>
+
+
+ <button type="button" class="btn-octicon disabled tooltipped tooltipped-nw"
+ aria-label="You must be signed in to make or propose changes">
+ <svg aria-hidden="true" class="octicon octicon-pencil" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path fill-rule="evenodd" d="M0 12v3h3l8-8-3-3-8 8zm3 2H1v-2h1v1h1v1zm10.3-9.3L12 6 9 3l1.3-1.3a.996.996 0 0 1 1.41 0l1.59 1.59c.39.39.39 1.02 0 1.41z"/></svg>
+ </button>
+ <button type="button" class="btn-octicon btn-octicon-danger disabled tooltipped tooltipped-nw"
+ aria-label="You must be signed in to make or propose changes">
+ <svg aria-hidden="true" class="octicon octicon-trashcan" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M11 2H9c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1H2c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1v9c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V5c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm-1 12H3V5h1v8h1V5h1v8h1V5h1v8h1V5h1v9zm1-10H2V3h9v1z"/></svg>
+ </button>
+ </div>
+
+ <div class="file-info">
+ 229 lines (185 sloc)
+ <span class="file-info-divider"></span>
+ 11.5 KB
+ </div>
+</div>
+
+
+
+ <div itemprop="text" class="blob-wrapper data type-c">
+ <table class="highlight tab-size js-file-line-container" data-tab-size="4">
+ <tr>
+ <td id="L1" class="blob-num js-line-number" data-line-number="1"></td>
+ <td id="LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span></span></td>
+ </tr>
+ <tr>
+ <td id="L2" class="blob-num js-line-number" data-line-number="2"></td>
+ <td id="LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> LZ4 HC - High Compression Mode of LZ4</span></td>
+ </tr>
+ <tr>
+ <td id="L3" class="blob-num js-line-number" data-line-number="3"></td>
+ <td id="LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Header File</span></td>
+ </tr>
+ <tr>
+ <td id="L4" class="blob-num js-line-number" data-line-number="4"></td>
+ <td id="LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Copyright (C) 2011-2016, Yann Collet.</span></td>
+ </tr>
+ <tr>
+ <td id="L5" class="blob-num js-line-number" data-line-number="5"></td>
+ <td id="LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)</span></td>
+ </tr>
+ <tr>
+ <td id="L6" class="blob-num js-line-number" data-line-number="6"></td>
+ <td id="LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
+ </tr>
+ <tr>
+ <td id="L7" class="blob-num js-line-number" data-line-number="7"></td>
+ <td id="LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Redistribution and use in source and binary forms, with or without</span></td>
+ </tr>
+ <tr>
+ <td id="L8" class="blob-num js-line-number" data-line-number="8"></td>
+ <td id="LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> modification, are permitted provided that the following conditions are</span></td>
+ </tr>
+ <tr>
+ <td id="L9" class="blob-num js-line-number" data-line-number="9"></td>
+ <td id="LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> met:</span></td>
+ </tr>
+ <tr>
+ <td id="L10" class="blob-num js-line-number" data-line-number="10"></td>
+ <td id="LC10" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
+ </tr>
+ <tr>
+ <td id="L11" class="blob-num js-line-number" data-line-number="11"></td>
+ <td id="LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Redistributions of source code must retain the above copyright</span></td>
+ </tr>
+ <tr>
+ <td id="L12" class="blob-num js-line-number" data-line-number="12"></td>
+ <td id="LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> notice, this list of conditions and the following disclaimer.</span></td>
+ </tr>
+ <tr>
+ <td id="L13" class="blob-num js-line-number" data-line-number="13"></td>
+ <td id="LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Redistributions in binary form must reproduce the above</span></td>
+ </tr>
+ <tr>
+ <td id="L14" class="blob-num js-line-number" data-line-number="14"></td>
+ <td id="LC14" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> copyright notice, this list of conditions and the following disclaimer</span></td>
+ </tr>
+ <tr>
+ <td id="L15" class="blob-num js-line-number" data-line-number="15"></td>
+ <td id="LC15" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> in the documentation and/or other materials provided with the</span></td>
+ </tr>
+ <tr>
+ <td id="L16" class="blob-num js-line-number" data-line-number="16"></td>
+ <td id="LC16" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> distribution.</span></td>
+ </tr>
+ <tr>
+ <td id="L17" class="blob-num js-line-number" data-line-number="17"></td>
+ <td id="LC17" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
+ </tr>
+ <tr>
+ <td id="L18" class="blob-num js-line-number" data-line-number="18"></td>
+ <td id="LC18" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS</span></td>
+ </tr>
+ <tr>
+ <td id="L19" class="blob-num js-line-number" data-line-number="19"></td>
+ <td id="LC19" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT</span></td>
+ </tr>
+ <tr>
+ <td id="L20" class="blob-num js-line-number" data-line-number="20"></td>
+ <td id="LC20" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR</span></td>
+ </tr>
+ <tr>
+ <td id="L21" class="blob-num js-line-number" data-line-number="21"></td>
+ <td id="LC21" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT</span></td>
+ </tr>
+ <tr>
+ <td id="L22" class="blob-num js-line-number" data-line-number="22"></td>
+ <td id="LC22" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span></td>
+ </tr>
+ <tr>
+ <td id="L23" class="blob-num js-line-number" data-line-number="23"></td>
+ <td id="LC23" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT</span></td>
+ </tr>
+ <tr>
+ <td id="L24" class="blob-num js-line-number" data-line-number="24"></td>
+ <td id="LC24" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,</span></td>
+ </tr>
+ <tr>
+ <td id="L25" class="blob-num js-line-number" data-line-number="25"></td>
+ <td id="LC25" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY</span></td>
+ </tr>
+ <tr>
+ <td id="L26" class="blob-num js-line-number" data-line-number="26"></td>
+ <td id="LC26" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span></td>
+ </tr>
+ <tr>
+ <td id="L27" class="blob-num js-line-number" data-line-number="27"></td>
+ <td id="LC27" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE</span></td>
+ </tr>
+ <tr>
+ <td id="L28" class="blob-num js-line-number" data-line-number="28"></td>
+ <td id="LC28" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span></td>
+ </tr>
+ <tr>
+ <td id="L29" class="blob-num js-line-number" data-line-number="29"></td>
+ <td id="LC29" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
+ </tr>
+ <tr>
+ <td id="L30" class="blob-num js-line-number" data-line-number="30"></td>
+ <td id="LC30" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> You can contact the author at :</span></td>
+ </tr>
+ <tr>
+ <td id="L31" class="blob-num js-line-number" data-line-number="31"></td>
+ <td id="LC31" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> - LZ4 source repository : https://github.com/lz4/lz4</span></td>
+ </tr>
+ <tr>
+ <td id="L32" class="blob-num js-line-number" data-line-number="32"></td>
+ <td id="LC32" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c</span></td>
+ </tr>
+ <tr>
+ <td id="L33" class="blob-num js-line-number" data-line-number="33"></td>
+ <td id="LC33" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L34" class="blob-num js-line-number" data-line-number="34"></td>
+ <td id="LC34" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">ifndef</span> LZ4_HC_H_19834876238432</td>
+ </tr>
+ <tr>
+ <td id="L35" class="blob-num js-line-number" data-line-number="35"></td>
+ <td id="LC35" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4_HC_H_19834876238432</span></td>
+ </tr>
+ <tr>
+ <td id="L36" class="blob-num js-line-number" data-line-number="36"></td>
+ <td id="LC36" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L37" class="blob-num js-line-number" data-line-number="37"></td>
+ <td id="LC37" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">if</span> defined (__cplusplus)</td>
+ </tr>
+ <tr>
+ <td id="L38" class="blob-num js-line-number" data-line-number="38"></td>
+ <td id="LC38" class="blob-code blob-code-inner js-file-line"><span class="pl-k">extern</span> <span class="pl-s"><span class="pl-pds">&quot;</span>C<span class="pl-pds">&quot;</span></span> {</td>
+ </tr>
+ <tr>
+ <td id="L39" class="blob-num js-line-number" data-line-number="39"></td>
+ <td id="LC39" class="blob-code blob-code-inner js-file-line">#endif</td>
+ </tr>
+ <tr>
+ <td id="L40" class="blob-num js-line-number" data-line-number="40"></td>
+ <td id="LC40" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L41" class="blob-num js-line-number" data-line-number="41"></td>
+ <td id="LC41" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span> --- Dependency --- <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L42" class="blob-num js-line-number" data-line-number="42"></td>
+ <td id="LC42" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span> note : lz4hc is not an independent module, it requires lz4.h/lz4.c for proper compilation <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L43" class="blob-num js-line-number" data-line-number="43"></td>
+ <td id="LC43" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds">&quot;</span>lz4.h<span class="pl-pds">&quot;</span></span> <span class="pl-c"><span class="pl-c">/*</span> stddef, LZ4LIB_API, LZ4_DEPRECATED <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L44" class="blob-num js-line-number" data-line-number="44"></td>
+ <td id="LC44" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L45" class="blob-num js-line-number" data-line-number="45"></td>
+ <td id="LC45" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L46" class="blob-num js-line-number" data-line-number="46"></td>
+ <td id="LC46" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span> --- Useful constants --- <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L47" class="blob-num js-line-number" data-line-number="47"></td>
+ <td id="LC47" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4HC_CLEVEL_MIN</span> <span class="pl-c1">3</span></td>
+ </tr>
+ <tr>
+ <td id="L48" class="blob-num js-line-number" data-line-number="48"></td>
+ <td id="LC48" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4HC_CLEVEL_DEFAULT</span> <span class="pl-c1">9</span></td>
+ </tr>
+ <tr>
+ <td id="L49" class="blob-num js-line-number" data-line-number="49"></td>
+ <td id="LC49" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4HC_CLEVEL_OPT_MIN</span> <span class="pl-c1">11</span></td>
+ </tr>
+ <tr>
+ <td id="L50" class="blob-num js-line-number" data-line-number="50"></td>
+ <td id="LC50" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4HC_CLEVEL_MAX</span> <span class="pl-c1">12</span></td>
+ </tr>
+ <tr>
+ <td id="L51" class="blob-num js-line-number" data-line-number="51"></td>
+ <td id="LC51" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L52" class="blob-num js-line-number" data-line-number="52"></td>
+ <td id="LC52" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L53" class="blob-num js-line-number" data-line-number="53"></td>
+ <td id="LC53" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>-************************************</span></td>
+ </tr>
+ <tr>
+ <td id="L54" class="blob-num js-line-number" data-line-number="54"></td>
+ <td id="LC54" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Block Compression</span></td>
+ </tr>
+ <tr>
+ <td id="L55" class="blob-num js-line-number" data-line-number="55"></td>
+ <td id="LC55" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *************************************<span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L56" class="blob-num js-line-number" data-line-number="56"></td>
+ <td id="LC56" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>! LZ4_compress_HC() :</span></td>
+ </tr>
+ <tr>
+ <td id="L57" class="blob-num js-line-number" data-line-number="57"></td>
+ <td id="LC57" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Compress data from `src` into `dst`, using the more powerful but slower &quot;HC&quot; algorithm.</span></td>
+ </tr>
+ <tr>
+ <td id="L58" class="blob-num js-line-number" data-line-number="58"></td>
+ <td id="LC58" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * `dst` must be already allocated.</span></td>
+ </tr>
+ <tr>
+ <td id="L59" class="blob-num js-line-number" data-line-number="59"></td>
+ <td id="LC59" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Compression is guaranteed to succeed if `dstCapacity &gt;= LZ4_compressBound(srcSize)` (see &quot;lz4.h&quot;)</span></td>
+ </tr>
+ <tr>
+ <td id="L60" class="blob-num js-line-number" data-line-number="60"></td>
+ <td id="LC60" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Max supported `srcSize` value is LZ4_MAX_INPUT_SIZE (see &quot;lz4.h&quot;)</span></td>
+ </tr>
+ <tr>
+ <td id="L61" class="blob-num js-line-number" data-line-number="61"></td>
+ <td id="LC61" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * `compressionLevel` : Recommended values are between 4 and 9, although any value between 1 and LZ4HC_MAX_CLEVEL will work.</span></td>
+ </tr>
+ <tr>
+ <td id="L62" class="blob-num js-line-number" data-line-number="62"></td>
+ <td id="LC62" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Values &gt;LZ4HC_MAX_CLEVEL behave the same as LZ4HC_MAX_CLEVEL.</span></td>
+ </tr>
+ <tr>
+ <td id="L63" class="blob-num js-line-number" data-line-number="63"></td>
+ <td id="LC63" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * @return : the number of bytes written into &#39;dst&#39;</span></td>
+ </tr>
+ <tr>
+ <td id="L64" class="blob-num js-line-number" data-line-number="64"></td>
+ <td id="LC64" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * or 0 if compression fails.</span></td>
+ </tr>
+ <tr>
+ <td id="L65" class="blob-num js-line-number" data-line-number="65"></td>
+ <td id="LC65" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L66" class="blob-num js-line-number" data-line-number="66"></td>
+ <td id="LC66" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-en">LZ4_compress_HC</span> (<span class="pl-k">const</span> <span class="pl-k">char</span>* src, <span class="pl-k">char</span>* dst, <span class="pl-k">int</span> srcSize, <span class="pl-k">int</span> dstCapacity, <span class="pl-k">int</span> compressionLevel);</td>
+ </tr>
+ <tr>
+ <td id="L67" class="blob-num js-line-number" data-line-number="67"></td>
+ <td id="LC67" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L68" class="blob-num js-line-number" data-line-number="68"></td>
+ <td id="LC68" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L69" class="blob-num js-line-number" data-line-number="69"></td>
+ <td id="LC69" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span> Note :</span></td>
+ </tr>
+ <tr>
+ <td id="L70" class="blob-num js-line-number" data-line-number="70"></td>
+ <td id="LC70" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Decompression functions are provided within &quot;lz4.h&quot; (BSD license)</span></td>
+ </tr>
+ <tr>
+ <td id="L71" class="blob-num js-line-number" data-line-number="71"></td>
+ <td id="LC71" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L72" class="blob-num js-line-number" data-line-number="72"></td>
+ <td id="LC72" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L73" class="blob-num js-line-number" data-line-number="73"></td>
+ <td id="LC73" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L74" class="blob-num js-line-number" data-line-number="74"></td>
+ <td id="LC74" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>! LZ4_compress_HC_extStateHC() :</span></td>
+ </tr>
+ <tr>
+ <td id="L75" class="blob-num js-line-number" data-line-number="75"></td>
+ <td id="LC75" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Same as LZ4_compress_HC(), but using an externally allocated memory segment for `state`.</span></td>
+ </tr>
+ <tr>
+ <td id="L76" class="blob-num js-line-number" data-line-number="76"></td>
+ <td id="LC76" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * `state` size is provided by LZ4_sizeofStateHC().</span></td>
+ </tr>
+ <tr>
+ <td id="L77" class="blob-num js-line-number" data-line-number="77"></td>
+ <td id="LC77" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Memory segment must be aligned on 8-bytes boundaries (which a normal malloc() will do properly).</span></td>
+ </tr>
+ <tr>
+ <td id="L78" class="blob-num js-line-number" data-line-number="78"></td>
+ <td id="LC78" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L79" class="blob-num js-line-number" data-line-number="79"></td>
+ <td id="LC79" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-en">LZ4_compress_HC_extStateHC</span>(<span class="pl-k">void</span>* state, <span class="pl-k">const</span> <span class="pl-k">char</span>* src, <span class="pl-k">char</span>* dst, <span class="pl-k">int</span> srcSize, <span class="pl-k">int</span> maxDstSize, <span class="pl-k">int</span> compressionLevel);</td>
+ </tr>
+ <tr>
+ <td id="L80" class="blob-num js-line-number" data-line-number="80"></td>
+ <td id="LC80" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-en">LZ4_sizeofStateHC</span>(<span class="pl-k">void</span>);</td>
+ </tr>
+ <tr>
+ <td id="L81" class="blob-num js-line-number" data-line-number="81"></td>
+ <td id="LC81" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L82" class="blob-num js-line-number" data-line-number="82"></td>
+ <td id="LC82" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L83" class="blob-num js-line-number" data-line-number="83"></td>
+ <td id="LC83" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>-************************************</span></td>
+ </tr>
+ <tr>
+ <td id="L84" class="blob-num js-line-number" data-line-number="84"></td>
+ <td id="LC84" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Streaming Compression</span></td>
+ </tr>
+ <tr>
+ <td id="L85" class="blob-num js-line-number" data-line-number="85"></td>
+ <td id="LC85" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Bufferless synchronous API</span></td>
+ </tr>
+ <tr>
+ <td id="L86" class="blob-num js-line-number" data-line-number="86"></td>
+ <td id="LC86" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *************************************<span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L87" class="blob-num js-line-number" data-line-number="87"></td>
+ <td id="LC87" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">typedef</span> <span class="pl-k">union</span> LZ4_streamHC_u LZ4_streamHC_t; <span class="pl-c"><span class="pl-c">/*</span> incomplete type (defined later) <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L88" class="blob-num js-line-number" data-line-number="88"></td>
+ <td id="LC88" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L89" class="blob-num js-line-number" data-line-number="89"></td>
+ <td id="LC89" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>! LZ4_createStreamHC() and LZ4_freeStreamHC() :</span></td>
+ </tr>
+ <tr>
+ <td id="L90" class="blob-num js-line-number" data-line-number="90"></td>
+ <td id="LC90" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * These functions create and release memory for LZ4 HC streaming state.</span></td>
+ </tr>
+ <tr>
+ <td id="L91" class="blob-num js-line-number" data-line-number="91"></td>
+ <td id="LC91" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Newly created states are automatically initialized.</span></td>
+ </tr>
+ <tr>
+ <td id="L92" class="blob-num js-line-number" data-line-number="92"></td>
+ <td id="LC92" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Existing states can be re-used several times, using LZ4_resetStreamHC().</span></td>
+ </tr>
+ <tr>
+ <td id="L93" class="blob-num js-line-number" data-line-number="93"></td>
+ <td id="LC93" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * These methods are API and ABI stable, they can be used in combination with a DLL.</span></td>
+ </tr>
+ <tr>
+ <td id="L94" class="blob-num js-line-number" data-line-number="94"></td>
+ <td id="LC94" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L95" class="blob-num js-line-number" data-line-number="95"></td>
+ <td id="LC95" class="blob-code blob-code-inner js-file-line">LZ4LIB_API LZ4_streamHC_t* <span class="pl-en">LZ4_createStreamHC</span>(<span class="pl-k">void</span>);</td>
+ </tr>
+ <tr>
+ <td id="L96" class="blob-num js-line-number" data-line-number="96"></td>
+ <td id="LC96" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-en">LZ4_freeStreamHC</span> (LZ4_streamHC_t* streamHCPtr);</td>
+ </tr>
+ <tr>
+ <td id="L97" class="blob-num js-line-number" data-line-number="97"></td>
+ <td id="LC97" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L98" class="blob-num js-line-number" data-line-number="98"></td>
+ <td id="LC98" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">void</span> <span class="pl-en">LZ4_resetStreamHC</span> (LZ4_streamHC_t* streamHCPtr, <span class="pl-k">int</span> compressionLevel);</td>
+ </tr>
+ <tr>
+ <td id="L99" class="blob-num js-line-number" data-line-number="99"></td>
+ <td id="LC99" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-en">LZ4_loadDictHC</span> (LZ4_streamHC_t* streamHCPtr, <span class="pl-k">const</span> <span class="pl-k">char</span>* dictionary, <span class="pl-k">int</span> dictSize);</td>
+ </tr>
+ <tr>
+ <td id="L100" class="blob-num js-line-number" data-line-number="100"></td>
+ <td id="LC100" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L101" class="blob-num js-line-number" data-line-number="101"></td>
+ <td id="LC101" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-en">LZ4_compress_HC_continue</span> (LZ4_streamHC_t* streamHCPtr, <span class="pl-k">const</span> <span class="pl-k">char</span>* src, <span class="pl-k">char</span>* dst, <span class="pl-k">int</span> srcSize, <span class="pl-k">int</span> maxDstSize);</td>
+ </tr>
+ <tr>
+ <td id="L102" class="blob-num js-line-number" data-line-number="102"></td>
+ <td id="LC102" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L103" class="blob-num js-line-number" data-line-number="103"></td>
+ <td id="LC103" class="blob-code blob-code-inner js-file-line">LZ4LIB_API <span class="pl-k">int</span> <span class="pl-en">LZ4_saveDictHC</span> (LZ4_streamHC_t* streamHCPtr, <span class="pl-k">char</span>* safeBuffer, <span class="pl-k">int</span> maxDictSize);</td>
+ </tr>
+ <tr>
+ <td id="L104" class="blob-num js-line-number" data-line-number="104"></td>
+ <td id="LC104" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L105" class="blob-num js-line-number" data-line-number="105"></td>
+ <td id="LC105" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span></span></td>
+ </tr>
+ <tr>
+ <td id="L106" class="blob-num js-line-number" data-line-number="106"></td>
+ <td id="LC106" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> These functions compress data in successive blocks of any size, using previous blocks as dictionary.</span></td>
+ </tr>
+ <tr>
+ <td id="L107" class="blob-num js-line-number" data-line-number="107"></td>
+ <td id="LC107" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> One key assumption is that previous blocks (up to 64 KB) remain read-accessible while compressing next blocks.</span></td>
+ </tr>
+ <tr>
+ <td id="L108" class="blob-num js-line-number" data-line-number="108"></td>
+ <td id="LC108" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> There is an exception for ring buffers, which can be smaller than 64 KB.</span></td>
+ </tr>
+ <tr>
+ <td id="L109" class="blob-num js-line-number" data-line-number="109"></td>
+ <td id="LC109" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Ring buffers scenario is automatically detected and handled by LZ4_compress_HC_continue().</span></td>
+ </tr>
+ <tr>
+ <td id="L110" class="blob-num js-line-number" data-line-number="110"></td>
+ <td id="LC110" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
+ </tr>
+ <tr>
+ <td id="L111" class="blob-num js-line-number" data-line-number="111"></td>
+ <td id="LC111" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Before starting compression, state must be properly initialized, using LZ4_resetStreamHC().</span></td>
+ </tr>
+ <tr>
+ <td id="L112" class="blob-num js-line-number" data-line-number="112"></td>
+ <td id="LC112" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> A first &quot;fictional block&quot; can then be designated as initial dictionary, using LZ4_loadDictHC() (Optional).</span></td>
+ </tr>
+ <tr>
+ <td id="L113" class="blob-num js-line-number" data-line-number="113"></td>
+ <td id="LC113" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
+ </tr>
+ <tr>
+ <td id="L114" class="blob-num js-line-number" data-line-number="114"></td>
+ <td id="LC114" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Then, use LZ4_compress_HC_continue() to compress each successive block.</span></td>
+ </tr>
+ <tr>
+ <td id="L115" class="blob-num js-line-number" data-line-number="115"></td>
+ <td id="LC115" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Previous memory blocks (including initial dictionary when present) must remain accessible and unmodified during compression.</span></td>
+ </tr>
+ <tr>
+ <td id="L116" class="blob-num js-line-number" data-line-number="116"></td>
+ <td id="LC116" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> &#39;dst&#39; buffer should be sized to handle worst case scenarios, using LZ4_compressBound(), to ensure operation success.</span></td>
+ </tr>
+ <tr>
+ <td id="L117" class="blob-num js-line-number" data-line-number="117"></td>
+ <td id="LC117" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
+ </tr>
+ <tr>
+ <td id="L118" class="blob-num js-line-number" data-line-number="118"></td>
+ <td id="LC118" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> If, for any reason, previous data blocks can&#39;t be preserved unmodified in memory during next compression block,</span></td>
+ </tr>
+ <tr>
+ <td id="L119" class="blob-num js-line-number" data-line-number="119"></td>
+ <td id="LC119" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> you must save it to a safer memory space, using LZ4_saveDictHC().</span></td>
+ </tr>
+ <tr>
+ <td id="L120" class="blob-num js-line-number" data-line-number="120"></td>
+ <td id="LC120" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Return value of LZ4_saveDictHC() is the size of dictionary effectively saved into &#39;safeBuffer&#39;.</span></td>
+ </tr>
+ <tr>
+ <td id="L121" class="blob-num js-line-number" data-line-number="121"></td>
+ <td id="LC121" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L122" class="blob-num js-line-number" data-line-number="122"></td>
+ <td id="LC122" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L123" class="blob-num js-line-number" data-line-number="123"></td>
+ <td id="LC123" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L124" class="blob-num js-line-number" data-line-number="124"></td>
+ <td id="LC124" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>-******************************************</span></td>
+ </tr>
+ <tr>
+ <td id="L125" class="blob-num js-line-number" data-line-number="125"></td>
+ <td id="LC125" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * !!!!! STATIC LINKING ONLY !!!!!</span></td>
+ </tr>
+ <tr>
+ <td id="L126" class="blob-num js-line-number" data-line-number="126"></td>
+ <td id="LC126" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> ******************************************<span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L127" class="blob-num js-line-number" data-line-number="127"></td>
+ <td id="LC127" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L128" class="blob-num js-line-number" data-line-number="128"></td>
+ <td id="LC128" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/*</span>-*************************************</span></td>
+ </tr>
+ <tr>
+ <td id="L129" class="blob-num js-line-number" data-line-number="129"></td>
+ <td id="LC129" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * PRIVATE DEFINITIONS :</span></td>
+ </tr>
+ <tr>
+ <td id="L130" class="blob-num js-line-number" data-line-number="130"></td>
+ <td id="LC130" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Do not use these definitions.</span></td>
+ </tr>
+ <tr>
+ <td id="L131" class="blob-num js-line-number" data-line-number="131"></td>
+ <td id="LC131" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * They are exposed to allow static allocation of `LZ4_streamHC_t`.</span></td>
+ </tr>
+ <tr>
+ <td id="L132" class="blob-num js-line-number" data-line-number="132"></td>
+ <td id="LC132" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Using these definitions makes the code vulnerable to potential API break when upgrading LZ4</span></td>
+ </tr>
+ <tr>
+ <td id="L133" class="blob-num js-line-number" data-line-number="133"></td>
+ <td id="LC133" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *************************************<span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L134" class="blob-num js-line-number" data-line-number="134"></td>
+ <td id="LC134" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4HC_DICTIONARY_LOGSIZE</span> <span class="pl-c1">17</span></td>
+ </tr>
+ <tr>
+ <td id="L135" class="blob-num js-line-number" data-line-number="135"></td>
+ <td id="LC135" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4HC_MAXD</span> (<span class="pl-c1">1</span>&lt;&lt;LZ4HC_DICTIONARY_LOGSIZE)</td>
+ </tr>
+ <tr>
+ <td id="L136" class="blob-num js-line-number" data-line-number="136"></td>
+ <td id="LC136" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4HC_MAXD_MASK</span> (LZ4HC_MAXD - <span class="pl-c1">1</span>)</td>
+ </tr>
+ <tr>
+ <td id="L137" class="blob-num js-line-number" data-line-number="137"></td>
+ <td id="LC137" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L138" class="blob-num js-line-number" data-line-number="138"></td>
+ <td id="LC138" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4HC_HASH_LOG</span> <span class="pl-c1">15</span></td>
+ </tr>
+ <tr>
+ <td id="L139" class="blob-num js-line-number" data-line-number="139"></td>
+ <td id="LC139" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4HC_HASHTABLESIZE</span> (<span class="pl-c1">1</span> &lt;&lt; LZ4HC_HASH_LOG)</td>
+ </tr>
+ <tr>
+ <td id="L140" class="blob-num js-line-number" data-line-number="140"></td>
+ <td id="LC140" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4HC_HASH_MASK</span> (LZ4HC_HASHTABLESIZE - <span class="pl-c1">1</span>)</td>
+ </tr>
+ <tr>
+ <td id="L141" class="blob-num js-line-number" data-line-number="141"></td>
+ <td id="LC141" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L142" class="blob-num js-line-number" data-line-number="142"></td>
+ <td id="LC142" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L143" class="blob-num js-line-number" data-line-number="143"></td>
+ <td id="LC143" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">if</span> defined(__cplusplus) || (defined (__STDC_VERSION__) &amp;&amp; (__STDC_VERSION__ &gt;= 199901L) <span class="pl-c"><span class="pl-c">/*</span> C99 <span class="pl-c">*/</span></span>)</td>
+ </tr>
+ <tr>
+ <td id="L144" class="blob-num js-line-number" data-line-number="144"></td>
+ <td id="LC144" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds">&lt;</span>stdint.h<span class="pl-pds">&gt;</span></span></td>
+ </tr>
+ <tr>
+ <td id="L145" class="blob-num js-line-number" data-line-number="145"></td>
+ <td id="LC145" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L146" class="blob-num js-line-number" data-line-number="146"></td>
+ <td id="LC146" class="blob-code blob-code-inner js-file-line"><span class="pl-k">typedef</span> <span class="pl-k">struct</span></td>
+ </tr>
+ <tr>
+ <td id="L147" class="blob-num js-line-number" data-line-number="147"></td>
+ <td id="LC147" class="blob-code blob-code-inner js-file-line">{</td>
+ </tr>
+ <tr>
+ <td id="L148" class="blob-num js-line-number" data-line-number="148"></td>
+ <td id="LC148" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">uint32_t</span> hashTable[LZ4HC_HASHTABLESIZE];</td>
+ </tr>
+ <tr>
+ <td id="L149" class="blob-num js-line-number" data-line-number="149"></td>
+ <td id="LC149" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">uint16_t</span> chainTable[LZ4HC_MAXD];</td>
+ </tr>
+ <tr>
+ <td id="L150" class="blob-num js-line-number" data-line-number="150"></td>
+ <td id="LC150" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">const</span> <span class="pl-c1">uint8_t</span>* end; <span class="pl-c"><span class="pl-c">/*</span> next block here to continue on current prefix <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L151" class="blob-num js-line-number" data-line-number="151"></td>
+ <td id="LC151" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">const</span> <span class="pl-c1">uint8_t</span>* base; <span class="pl-c"><span class="pl-c">/*</span> All index relative to this position <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L152" class="blob-num js-line-number" data-line-number="152"></td>
+ <td id="LC152" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">const</span> <span class="pl-c1">uint8_t</span>* dictBase; <span class="pl-c"><span class="pl-c">/*</span> alternate base for extDict <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L153" class="blob-num js-line-number" data-line-number="153"></td>
+ <td id="LC153" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">uint8_t</span>* inputBuffer; <span class="pl-c"><span class="pl-c">/*</span> deprecated <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L154" class="blob-num js-line-number" data-line-number="154"></td>
+ <td id="LC154" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">uint32_t</span> dictLimit; <span class="pl-c"><span class="pl-c">/*</span> below that point, need extDict <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L155" class="blob-num js-line-number" data-line-number="155"></td>
+ <td id="LC155" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">uint32_t</span> lowLimit; <span class="pl-c"><span class="pl-c">/*</span> below that point, no more dict <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L156" class="blob-num js-line-number" data-line-number="156"></td>
+ <td id="LC156" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">uint32_t</span> nextToUpdate; <span class="pl-c"><span class="pl-c">/*</span> index from which to continue dictionary update <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L157" class="blob-num js-line-number" data-line-number="157"></td>
+ <td id="LC157" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">uint32_t</span> searchNum; <span class="pl-c"><span class="pl-c">/*</span> only for optimal parser <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L158" class="blob-num js-line-number" data-line-number="158"></td>
+ <td id="LC158" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">uint32_t</span> compressionLevel;</td>
+ </tr>
+ <tr>
+ <td id="L159" class="blob-num js-line-number" data-line-number="159"></td>
+ <td id="LC159" class="blob-code blob-code-inner js-file-line">} LZ4HC_CCtx_internal;</td>
+ </tr>
+ <tr>
+ <td id="L160" class="blob-num js-line-number" data-line-number="160"></td>
+ <td id="LC160" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L161" class="blob-num js-line-number" data-line-number="161"></td>
+ <td id="LC161" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">else</span></td>
+ </tr>
+ <tr>
+ <td id="L162" class="blob-num js-line-number" data-line-number="162"></td>
+ <td id="LC162" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L163" class="blob-num js-line-number" data-line-number="163"></td>
+ <td id="LC163" class="blob-code blob-code-inner js-file-line"><span class="pl-k">typedef</span> <span class="pl-k">struct</span></td>
+ </tr>
+ <tr>
+ <td id="L164" class="blob-num js-line-number" data-line-number="164"></td>
+ <td id="LC164" class="blob-code blob-code-inner js-file-line">{</td>
+ </tr>
+ <tr>
+ <td id="L165" class="blob-num js-line-number" data-line-number="165"></td>
+ <td id="LC165" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">unsigned</span> <span class="pl-k">int</span> hashTable[LZ4HC_HASHTABLESIZE];</td>
+ </tr>
+ <tr>
+ <td id="L166" class="blob-num js-line-number" data-line-number="166"></td>
+ <td id="LC166" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">unsigned</span> <span class="pl-k">short</span> chainTable[LZ4HC_MAXD];</td>
+ </tr>
+ <tr>
+ <td id="L167" class="blob-num js-line-number" data-line-number="167"></td>
+ <td id="LC167" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">const</span> <span class="pl-k">unsigned</span> <span class="pl-k">char</span>* end; <span class="pl-c"><span class="pl-c">/*</span> next block here to continue on current prefix <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L168" class="blob-num js-line-number" data-line-number="168"></td>
+ <td id="LC168" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">const</span> <span class="pl-k">unsigned</span> <span class="pl-k">char</span>* base; <span class="pl-c"><span class="pl-c">/*</span> All index relative to this position <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L169" class="blob-num js-line-number" data-line-number="169"></td>
+ <td id="LC169" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">const</span> <span class="pl-k">unsigned</span> <span class="pl-k">char</span>* dictBase; <span class="pl-c"><span class="pl-c">/*</span> alternate base for extDict <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L170" class="blob-num js-line-number" data-line-number="170"></td>
+ <td id="LC170" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">unsigned</span> <span class="pl-k">char</span>* inputBuffer; <span class="pl-c"><span class="pl-c">/*</span> deprecated <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L171" class="blob-num js-line-number" data-line-number="171"></td>
+ <td id="LC171" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">unsigned</span> <span class="pl-k">int</span> dictLimit; <span class="pl-c"><span class="pl-c">/*</span> below that point, need extDict <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L172" class="blob-num js-line-number" data-line-number="172"></td>
+ <td id="LC172" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">unsigned</span> <span class="pl-k">int</span> lowLimit; <span class="pl-c"><span class="pl-c">/*</span> below that point, no more dict <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L173" class="blob-num js-line-number" data-line-number="173"></td>
+ <td id="LC173" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">unsigned</span> <span class="pl-k">int</span> nextToUpdate; <span class="pl-c"><span class="pl-c">/*</span> index from which to continue dictionary update <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L174" class="blob-num js-line-number" data-line-number="174"></td>
+ <td id="LC174" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">unsigned</span> <span class="pl-k">int</span> searchNum; <span class="pl-c"><span class="pl-c">/*</span> only for optimal parser <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L175" class="blob-num js-line-number" data-line-number="175"></td>
+ <td id="LC175" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">unsigned</span> <span class="pl-k">int</span> compressionLevel;</td>
+ </tr>
+ <tr>
+ <td id="L176" class="blob-num js-line-number" data-line-number="176"></td>
+ <td id="LC176" class="blob-code blob-code-inner js-file-line">} LZ4HC_CCtx_internal;</td>
+ </tr>
+ <tr>
+ <td id="L177" class="blob-num js-line-number" data-line-number="177"></td>
+ <td id="LC177" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L178" class="blob-num js-line-number" data-line-number="178"></td>
+ <td id="LC178" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">endif</span></td>
+ </tr>
+ <tr>
+ <td id="L179" class="blob-num js-line-number" data-line-number="179"></td>
+ <td id="LC179" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L180" class="blob-num js-line-number" data-line-number="180"></td>
+ <td id="LC180" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4_STREAMHCSIZE</span> (<span class="pl-c1">4</span>*LZ4HC_HASHTABLESIZE + <span class="pl-c1">2</span>*LZ4HC_MAXD + <span class="pl-c1">56</span>) <span class="pl-c"><span class="pl-c">/*</span> 393268 <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L181" class="blob-num js-line-number" data-line-number="181"></td>
+ <td id="LC181" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">define</span> <span class="pl-en">LZ4_STREAMHCSIZE_SIZET</span> (LZ4_STREAMHCSIZE / <span class="pl-k">sizeof</span>(<span class="pl-c1">size_t</span>))</td>
+ </tr>
+ <tr>
+ <td id="L182" class="blob-num js-line-number" data-line-number="182"></td>
+ <td id="LC182" class="blob-code blob-code-inner js-file-line"><span class="pl-k">union</span> LZ4_streamHC_u {</td>
+ </tr>
+ <tr>
+ <td id="L183" class="blob-num js-line-number" data-line-number="183"></td>
+ <td id="LC183" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">size_t</span> table[LZ4_STREAMHCSIZE_SIZET];</td>
+ </tr>
+ <tr>
+ <td id="L184" class="blob-num js-line-number" data-line-number="184"></td>
+ <td id="LC184" class="blob-code blob-code-inner js-file-line"> LZ4HC_CCtx_internal internal_donotuse;</td>
+ </tr>
+ <tr>
+ <td id="L185" class="blob-num js-line-number" data-line-number="185"></td>
+ <td id="LC185" class="blob-code blob-code-inner js-file-line">}; <span class="pl-c"><span class="pl-c">/*</span> previously typedef&#39;d to LZ4_streamHC_t <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L186" class="blob-num js-line-number" data-line-number="186"></td>
+ <td id="LC186" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span></span></td>
+ </tr>
+ <tr>
+ <td id="L187" class="blob-num js-line-number" data-line-number="187"></td>
+ <td id="LC187" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> LZ4_streamHC_t :</span></td>
+ </tr>
+ <tr>
+ <td id="L188" class="blob-num js-line-number" data-line-number="188"></td>
+ <td id="LC188" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> This structure allows static allocation of LZ4 HC streaming state.</span></td>
+ </tr>
+ <tr>
+ <td id="L189" class="blob-num js-line-number" data-line-number="189"></td>
+ <td id="LC189" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> State must be initialized using LZ4_resetStreamHC() before first use.</span></td>
+ </tr>
+ <tr>
+ <td id="L190" class="blob-num js-line-number" data-line-number="190"></td>
+ <td id="LC190" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
+ </tr>
+ <tr>
+ <td id="L191" class="blob-num js-line-number" data-line-number="191"></td>
+ <td id="LC191" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Static allocation shall only be used in combination with static linking.</span></td>
+ </tr>
+ <tr>
+ <td id="L192" class="blob-num js-line-number" data-line-number="192"></td>
+ <td id="LC192" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> When invoking LZ4 from a DLL, use create/free functions instead, which are API and ABI stable.</span></td>
+ </tr>
+ <tr>
+ <td id="L193" class="blob-num js-line-number" data-line-number="193"></td>
+ <td id="LC193" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L194" class="blob-num js-line-number" data-line-number="194"></td>
+ <td id="LC194" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L195" class="blob-num js-line-number" data-line-number="195"></td>
+ <td id="LC195" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L196" class="blob-num js-line-number" data-line-number="196"></td>
+ <td id="LC196" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>-************************************</span></td>
+ </tr>
+ <tr>
+ <td id="L197" class="blob-num js-line-number" data-line-number="197"></td>
+ <td id="LC197" class="blob-code blob-code-inner js-file-line"><span class="pl-c">* Deprecated Functions</span></td>
+ </tr>
+ <tr>
+ <td id="L198" class="blob-num js-line-number" data-line-number="198"></td>
+ <td id="LC198" class="blob-code blob-code-inner js-file-line"><span class="pl-c">*************************************<span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L199" class="blob-num js-line-number" data-line-number="199"></td>
+ <td id="LC199" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span> see lz4.h LZ4_DISABLE_DEPRECATE_WARNINGS to turn off deprecation warnings <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L200" class="blob-num js-line-number" data-line-number="200"></td>
+ <td id="LC200" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L201" class="blob-num js-line-number" data-line-number="201"></td>
+ <td id="LC201" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span> deprecated compression functions <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L202" class="blob-num js-line-number" data-line-number="202"></td>
+ <td id="LC202" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span> these functions will trigger warning messages in future releases <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L203" class="blob-num js-line-number" data-line-number="203"></td>
+ <td id="LC203" class="blob-code blob-code-inner js-file-line"><span class="pl-en">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_compress_HC() instead<span class="pl-pds">&quot;</span></span>) int LZ4_compressHC (<span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> inputSize);</td>
+ </tr>
+ <tr>
+ <td id="L204" class="blob-num js-line-number" data-line-number="204"></td>
+ <td id="LC204" class="blob-code blob-code-inner js-file-line"><span class="pl-en">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_compress_HC() instead<span class="pl-pds">&quot;</span></span>) int LZ4_compressHC_limitedOutput (<span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> inputSize, <span class="pl-k">int</span> maxOutputSize);</td>
+ </tr>
+ <tr>
+ <td id="L205" class="blob-num js-line-number" data-line-number="205"></td>
+ <td id="LC205" class="blob-code blob-code-inner js-file-line"><span class="pl-en">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_compress_HC() instead<span class="pl-pds">&quot;</span></span>) int LZ4_compressHC2 (<span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> inputSize, <span class="pl-k">int</span> compressionLevel);</td>
+ </tr>
+ <tr>
+ <td id="L206" class="blob-num js-line-number" data-line-number="206"></td>
+ <td id="LC206" class="blob-code blob-code-inner js-file-line"><span class="pl-en">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_compress_HC() instead<span class="pl-pds">&quot;</span></span>) int LZ4_compressHC2_limitedOutput (<span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> inputSize, <span class="pl-k">int</span> maxOutputSize, <span class="pl-k">int</span> compressionLevel);</td>
+ </tr>
+ <tr>
+ <td id="L207" class="blob-num js-line-number" data-line-number="207"></td>
+ <td id="LC207" class="blob-code blob-code-inner js-file-line"><span class="pl-en">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_compress_HC_extStateHC() instead<span class="pl-pds">&quot;</span></span>) int LZ4_compressHC_withStateHC (<span class="pl-k">void</span>* state, <span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> inputSize);</td>
+ </tr>
+ <tr>
+ <td id="L208" class="blob-num js-line-number" data-line-number="208"></td>
+ <td id="LC208" class="blob-code blob-code-inner js-file-line"><span class="pl-en">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_compress_HC_extStateHC() instead<span class="pl-pds">&quot;</span></span>) int LZ4_compressHC_limitedOutput_withStateHC (<span class="pl-k">void</span>* state, <span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> inputSize, <span class="pl-k">int</span> maxOutputSize);</td>
+ </tr>
+ <tr>
+ <td id="L209" class="blob-num js-line-number" data-line-number="209"></td>
+ <td id="LC209" class="blob-code blob-code-inner js-file-line"><span class="pl-en">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_compress_HC_extStateHC() instead<span class="pl-pds">&quot;</span></span>) int LZ4_compressHC2_withStateHC (<span class="pl-k">void</span>* state, <span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> inputSize, <span class="pl-k">int</span> compressionLevel);</td>
+ </tr>
+ <tr>
+ <td id="L210" class="blob-num js-line-number" data-line-number="210"></td>
+ <td id="LC210" class="blob-code blob-code-inner js-file-line"><span class="pl-en">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_compress_HC_extStateHC() instead<span class="pl-pds">&quot;</span></span>) int LZ4_compressHC2_limitedOutput_withStateHC(<span class="pl-k">void</span>* state, <span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> inputSize, <span class="pl-k">int</span> maxOutputSize, <span class="pl-k">int</span> compressionLevel);</td>
+ </tr>
+ <tr>
+ <td id="L211" class="blob-num js-line-number" data-line-number="211"></td>
+ <td id="LC211" class="blob-code blob-code-inner js-file-line"><span class="pl-en">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_compress_HC_continue() instead<span class="pl-pds">&quot;</span></span>) int LZ4_compressHC_continue (LZ4_streamHC_t* LZ4_streamHCPtr, <span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> inputSize);</td>
+ </tr>
+ <tr>
+ <td id="L212" class="blob-num js-line-number" data-line-number="212"></td>
+ <td id="LC212" class="blob-code blob-code-inner js-file-line"><span class="pl-en">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_compress_HC_continue() instead<span class="pl-pds">&quot;</span></span>) int LZ4_compressHC_limitedOutput_continue (LZ4_streamHC_t* LZ4_streamHCPtr, <span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> inputSize, <span class="pl-k">int</span> maxOutputSize);</td>
+ </tr>
+ <tr>
+ <td id="L213" class="blob-num js-line-number" data-line-number="213"></td>
+ <td id="LC213" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L214" class="blob-num js-line-number" data-line-number="214"></td>
+ <td id="LC214" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span> Deprecated Streaming functions using older model; should no longer be used <span class="pl-c">*/</span></span></td>
+ </tr>
+ <tr>
+ <td id="L215" class="blob-num js-line-number" data-line-number="215"></td>
+ <td id="LC215" class="blob-code blob-code-inner js-file-line"><span class="pl-en">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_createStreamHC() instead<span class="pl-pds">&quot;</span></span>) void* LZ4_createHC (<span class="pl-k">char</span>* inputBuffer);</td>
+ </tr>
+ <tr>
+ <td id="L216" class="blob-num js-line-number" data-line-number="216"></td>
+ <td id="LC216" class="blob-code blob-code-inner js-file-line"><span class="pl-en">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_saveDictHC() instead<span class="pl-pds">&quot;</span></span>) char* LZ4_slideInputBufferHC (<span class="pl-k">void</span>* LZ4HC_Data);</td>
+ </tr>
+ <tr>
+ <td id="L217" class="blob-num js-line-number" data-line-number="217"></td>
+ <td id="LC217" class="blob-code blob-code-inner js-file-line"><span class="pl-en">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_freeStreamHC() instead<span class="pl-pds">&quot;</span></span>) int LZ4_freeHC (<span class="pl-k">void</span>* LZ4HC_Data);</td>
+ </tr>
+ <tr>
+ <td id="L218" class="blob-num js-line-number" data-line-number="218"></td>
+ <td id="LC218" class="blob-code blob-code-inner js-file-line"><span class="pl-en">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_compress_HC_continue() instead<span class="pl-pds">&quot;</span></span>) int LZ4_compressHC2_continue (<span class="pl-k">void</span>* LZ4HC_Data, <span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> inputSize, <span class="pl-k">int</span> compressionLevel);</td>
+ </tr>
+ <tr>
+ <td id="L219" class="blob-num js-line-number" data-line-number="219"></td>
+ <td id="LC219" class="blob-code blob-code-inner js-file-line"><span class="pl-en">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_compress_HC_continue() instead<span class="pl-pds">&quot;</span></span>) int LZ4_compressHC2_limitedOutput_continue (<span class="pl-k">void</span>* LZ4HC_Data, <span class="pl-k">const</span> <span class="pl-k">char</span>* source, <span class="pl-k">char</span>* dest, <span class="pl-k">int</span> inputSize, <span class="pl-k">int</span> maxOutputSize, <span class="pl-k">int</span> compressionLevel);</td>
+ </tr>
+ <tr>
+ <td id="L220" class="blob-num js-line-number" data-line-number="220"></td>
+ <td id="LC220" class="blob-code blob-code-inner js-file-line"><span class="pl-en">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_createStreamHC() instead<span class="pl-pds">&quot;</span></span>) int LZ4_sizeofStreamStateHC(<span class="pl-k">void</span>);</td>
+ </tr>
+ <tr>
+ <td id="L221" class="blob-num js-line-number" data-line-number="221"></td>
+ <td id="LC221" class="blob-code blob-code-inner js-file-line"><span class="pl-en">LZ4_DEPRECATED</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>use LZ4_resetStreamHC() instead<span class="pl-pds">&quot;</span></span>) int LZ4_resetStreamStateHC(<span class="pl-k">void</span>* state, <span class="pl-k">char</span>* inputBuffer);</td>
+ </tr>
+ <tr>
+ <td id="L222" class="blob-num js-line-number" data-line-number="222"></td>
+ <td id="LC222" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L223" class="blob-num js-line-number" data-line-number="223"></td>
+ <td id="LC223" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L224" class="blob-num js-line-number" data-line-number="224"></td>
+ <td id="LC224" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">if</span> defined (__cplusplus)</td>
+ </tr>
+ <tr>
+ <td id="L225" class="blob-num js-line-number" data-line-number="225"></td>
+ <td id="LC225" class="blob-code blob-code-inner js-file-line">}</td>
+ </tr>
+ <tr>
+ <td id="L226" class="blob-num js-line-number" data-line-number="226"></td>
+ <td id="LC226" class="blob-code blob-code-inner js-file-line">#<span class="pl-k">endif</span></td>
+ </tr>
+ <tr>
+ <td id="L227" class="blob-num js-line-number" data-line-number="227"></td>
+ <td id="LC227" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L228" class="blob-num js-line-number" data-line-number="228"></td>
+ <td id="LC228" class="blob-code blob-code-inner js-file-line">#endif <span class="pl-c"><span class="pl-c">/*</span> LZ4_HC_H_19834876238432 <span class="pl-c">*/</span></span></td>
+ </tr>
+</table>
+
+ </div>
+
+</div>
+
+<button type="button" data-facebox="#jump-to-line" data-facebox-class="linejump" data-hotkey="l" class="d-none">Jump to Line</button>
+<div id="jump-to-line" style="display:none">
+ <!-- '"` --><!-- </textarea></xmp> --></option></form><form accept-charset="UTF-8" action="" class="js-jump-to-line-form" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /></div>
+ <input class="form-control linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line&hellip;" aria-label="Jump to line" autofocus>
+ <button type="submit" class="btn">Go</button>
+</form></div>
+
+
+ </div>
+ <div class="modal-backdrop js-touch-events"></div>
+</div>
+
+ </div>
+ </div>
+
+ </div>
+
+
+<div class="container site-footer-container">
+ <div class="site-footer " role="contentinfo">
+ <ul class="site-footer-links float-right">
+ <li><a href="https://github.com/contact" data-ga-click="Footer, go to contact, text:contact">Contact GitHub</a></li>
+ <li><a href="https://developer.github.com" data-ga-click="Footer, go to api, text:api">API</a></li>
+ <li><a href="https://training.github.com" data-ga-click="Footer, go to training, text:training">Training</a></li>
+ <li><a href="https://shop.github.com" data-ga-click="Footer, go to shop, text:shop">Shop</a></li>
+ <li><a href="https://github.com/blog" data-ga-click="Footer, go to blog, text:blog">Blog</a></li>
+ <li><a href="https://github.com/about" data-ga-click="Footer, go to about, text:about">About</a></li>
+
+ </ul>
+
+ <a href="https://github.com" aria-label="Homepage" class="site-footer-mark" title="GitHub">
+ <svg aria-hidden="true" class="octicon octicon-mark-github" height="24" version="1.1" viewBox="0 0 16 16" width="24"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>
+</a>
+ <ul class="site-footer-links">
+ <li>&copy; 2017 <span title="0.15006s from github-fe140-cp1-prd.iad.github.net">GitHub</span>, Inc.</li>
+ <li><a href="https://github.com/site/terms" data-ga-click="Footer, go to terms, text:terms">Terms</a></li>
+ <li><a href="https://github.com/site/privacy" data-ga-click="Footer, go to privacy, text:privacy">Privacy</a></li>
+ <li><a href="https://github.com/security" data-ga-click="Footer, go to security, text:security">Security</a></li>
+ <li><a href="https://status.github.com/" data-ga-click="Footer, go to status, text:status">Status</a></li>
+ <li><a href="https://help.github.com" data-ga-click="Footer, go to help, text:help">Help</a></li>
+ </ul>
+ </div>
+</div>
+
+
+
+
+
+ <div id="ajax-error-message" class="ajax-error-message flash flash-error">
+ <svg aria-hidden="true" class="octicon octicon-alert" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M8.865 1.52c-.18-.31-.51-.5-.87-.5s-.69.19-.87.5L.275 13.5c-.18.31-.18.69 0 1 .19.31.52.5.87.5h13.7c.36 0 .69-.19.86-.5.17-.31.18-.69.01-1L8.865 1.52zM8.995 13h-2v-2h2v2zm0-3h-2V6h2v4z"/></svg>
+ <button type="button" class="flash-close js-flash-close js-ajax-error-dismiss" aria-label="Dismiss error">
+ <svg aria-hidden="true" class="octicon octicon-x" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48z"/></svg>
+ </button>
+ You can't perform that action at this time.
+ </div>
+
+
+ <script crossorigin="anonymous" src="https://assets-cdn.github.com/assets/compat-8a4318ffea09a0cdb8214b76cf2926b9f6a0ced318a317bed419db19214c690d.js"></script>
+ <script crossorigin="anonymous" src="https://assets-cdn.github.com/assets/frameworks-5fe43fc6a9e5120c427334a38e9a7601418682a33981c073851434a7e1005049.js"></script>
+ <script async="async" crossorigin="anonymous" src="https://assets-cdn.github.com/assets/github-387e440057863502901f8fc65f30ab4d8850d60481166da4c5d1983e9e8a4feb.js"></script>
+
+
+
+
+ <div class="js-stale-session-flash stale-session-flash flash flash-warn flash-banner d-none">
+ <svg aria-hidden="true" class="octicon octicon-alert" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M8.865 1.52c-.18-.31-.51-.5-.87-.5s-.69.19-.87.5L.275 13.5c-.18.31-.18.69 0 1 .19.31.52.5.87.5h13.7c.36 0 .69-.19.86-.5.17-.31.18-.69.01-1L8.865 1.52zM8.995 13h-2v-2h2v2zm0-3h-2V6h2v4z"/></svg>
+ <span class="signed-in-tab-flash">You signed in with another tab or window. <a href="">Reload</a> to refresh your session.</span>
+ <span class="signed-out-tab-flash">You signed out in another tab or window. <a href="">Reload</a> to refresh your session.</span>
+ </div>
+ <div class="facebox" id="facebox" style="display:none;">
+ <div class="facebox-popup">
+ <div class="facebox-content" role="dialog" aria-labelledby="facebox-header" aria-describedby="facebox-description">
+ </div>
+ <button type="button" class="facebox-close js-facebox-close" aria-label="Close modal">
+ <svg aria-hidden="true" class="octicon octicon-x" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48z"/></svg>
+ </button>
+ </div>
+</div>
+
+
+ </body>
+</html>
+
diff -urN ClickHouse-1.1.54231-stable.orig/contrib/liblz4/include/lz4/lz4opt.h ClickHouse-1.1.54231-stable/contrib/liblz4/include/lz4/lz4opt.h
--- ClickHouse-1.1.54231-stable.orig/contrib/liblz4/include/lz4/lz4opt.h 1970-01-01 03:00:00.000000000 +0300
+++ ClickHouse-1.1.54231-stable/contrib/liblz4/include/lz4/lz4opt.h 2017-05-16 14:37:49.333447707 +0300
@@ -0,0 +1,361 @@
+/*
+ lz4opt.h - Optimal Mode of LZ4
+ Copyright (C) 2015-2017, Przemyslaw Skibinski <inikep@gmail.com>
+ Note : this file is intended to be included within lz4hc.c
+
+ BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following disclaimer
+ in the documentation and/or other materials provided with the
+ distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ You can contact the author at :
+ - LZ4 source repository : https://github.com/lz4/lz4
+ - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c
+*/
+
+#define LZ4_OPT_NUM (1<<12)
+
+
+typedef struct {
+ int off;
+ int len;
+} LZ4HC_match_t;
+
+typedef struct {
+ int price;
+ int off;
+ int mlen;
+ int litlen;
+} LZ4HC_optimal_t;
+
+
+/* price in bytes */
+FORCE_INLINE size_t LZ4HC_literalsPrice(size_t litlen)
+{
+ size_t price = litlen;
+ if (litlen >= (size_t)RUN_MASK)
+ price += 1 + (litlen-RUN_MASK)/255;
+ return price;
+}
+
+
+/* requires mlen >= MINMATCH */
+FORCE_INLINE size_t LZ4HC_sequencePrice(size_t litlen, size_t mlen)
+{
+ size_t price = 2 + 1; /* 16-bit offset + token */
+
+ price += LZ4HC_literalsPrice(litlen);
+
+ if (mlen >= (size_t)(ML_MASK+MINMATCH))
+ price+= 1 + (mlen-(ML_MASK+MINMATCH))/255;
+
+ return price;
+}
+
+
+/*-*************************************
+* Binary Tree search
+***************************************/
+FORCE_INLINE int LZ4HC_BinTree_InsertAndGetAllMatches (
+ LZ4HC_CCtx_internal* ctx,
+ const BYTE* const ip,
+ const BYTE* const iHighLimit,
+ size_t best_mlen,
+ LZ4HC_match_t* matches,
+ int* matchNum)
+{
+ U16* const chainTable = ctx->chainTable;
+ U32* const HashTable = ctx->hashTable;
+ const BYTE* const base = ctx->base;
+ const U32 dictLimit = ctx->dictLimit;
+ const U32 current = (U32)(ip - base);
+ const U32 lowLimit = (ctx->lowLimit + MAX_DISTANCE > current) ? ctx->lowLimit : current - (MAX_DISTANCE - 1);
+ const BYTE* const dictBase = ctx->dictBase;
+ const BYTE* match;
+ int nbAttempts = ctx->searchNum;
+ int mnum = 0;
+ U16 *ptr0, *ptr1, delta0, delta1;
+ U32 matchIndex;
+ size_t matchLength = 0;
+ U32* HashPos;
+
+ if (ip + MINMATCH > iHighLimit) return 1;
+
+ /* HC4 match finder */
+ HashPos = &HashTable[LZ4HC_hashPtr(ip)];
+ matchIndex = *HashPos;
+ *HashPos = current;
+
+ ptr0 = &DELTANEXTMAXD(current*2+1);
+ ptr1 = &DELTANEXTMAXD(current*2);
+ delta0 = delta1 = (U16)(current - matchIndex);
+
+ while ((matchIndex < current) && (matchIndex>=lowLimit) && (nbAttempts)) {
+ nbAttempts--;
+ if (matchIndex >= dictLimit) {
+ match = base + matchIndex;
+ matchLength = LZ4_count(ip, match, iHighLimit);
+ } else {
+ const BYTE* vLimit = ip + (dictLimit - matchIndex);
+ match = dictBase + matchIndex;
+ if (vLimit > iHighLimit) vLimit = iHighLimit;
+ matchLength = LZ4_count(ip, match, vLimit);
+ if ((ip+matchLength == vLimit) && (vLimit < iHighLimit))
+ matchLength += LZ4_count(ip+matchLength, base+dictLimit, iHighLimit);
+ }
+
+ if (matchLength > best_mlen) {
+ best_mlen = matchLength;
+ if (matches) {
+ if (matchIndex >= dictLimit)
+ matches[mnum].off = (int)(ip - match);
+ else
+ matches[mnum].off = (int)(ip - (base + matchIndex)); /* virtual matchpos */
+ matches[mnum].len = (int)matchLength;
+ mnum++;
+ }
+ if (best_mlen > LZ4_OPT_NUM) break;
+ }
+
+ if (ip+matchLength >= iHighLimit) /* equal : no way to know if inf or sup */
+ break; /* drop , to guarantee consistency ; miss a bit of compression, but other solutions can corrupt the tree */
+
+ if (*(ip+matchLength) < *(match+matchLength)) {
+ *ptr0 = delta0;
+ ptr0 = &DELTANEXTMAXD(matchIndex*2);
+ if (*ptr0 == (U16)-1) break;
+ delta0 = *ptr0;
+ delta1 += delta0;
+ matchIndex -= delta0;
+ } else {
+ *ptr1 = delta1;
+ ptr1 = &DELTANEXTMAXD(matchIndex*2+1);
+ if (*ptr1 == (U16)-1) break;
+ delta1 = *ptr1;
+ delta0 += delta1;
+ matchIndex -= delta1;
+ }
+ }
+
+ *ptr0 = (U16)-1;
+ *ptr1 = (U16)-1;
+ if (matchNum) *matchNum = mnum;
+ /* if (best_mlen > 8) return best_mlen-8; */
+ if (!matchNum) return 1;
+ return 1;
+}
+
+
+FORCE_INLINE void LZ4HC_updateBinTree(LZ4HC_CCtx_internal* ctx, const BYTE* const ip, const BYTE* const iHighLimit)
+{
+ const BYTE* const base = ctx->base;
+ const U32 target = (U32)(ip - base);
+ U32 idx = ctx->nextToUpdate;
+ while(idx < target)
+ idx += LZ4HC_BinTree_InsertAndGetAllMatches(ctx, base+idx, iHighLimit, 8, NULL, NULL);
+}
+
+
+/** Tree updater, providing best match */
+FORCE_INLINE int LZ4HC_BinTree_GetAllMatches (
+ LZ4HC_CCtx_internal* ctx,
+ const BYTE* const ip, const BYTE* const iHighLimit,
+ size_t best_mlen, LZ4HC_match_t* matches, const int fullUpdate)
+{
+ int mnum = 0;
+ if (ip < ctx->base + ctx->nextToUpdate) return 0; /* skipped area */
+ if (fullUpdate) LZ4HC_updateBinTree(ctx, ip, iHighLimit);
+ best_mlen = LZ4HC_BinTree_InsertAndGetAllMatches(ctx, ip, iHighLimit, best_mlen, matches, &mnum);
+ ctx->nextToUpdate = (U32)(ip - ctx->base + best_mlen);
+ return mnum;
+}
+
+
+#define SET_PRICE(pos, ml, offset, ll, cost) \
+{ \
+ while (last_pos < pos) { opt[last_pos+1].price = 1<<30; last_pos++; } \
+ opt[pos].mlen = (int)ml; \
+ opt[pos].off = (int)offset; \
+ opt[pos].litlen = (int)ll; \
+ opt[pos].price = (int)cost; \
+}
+
+
+static int LZ4HC_compress_optimal (
+ LZ4HC_CCtx_internal* ctx,
+ const char* const source,
+ char* dest,
+ int inputSize,
+ int maxOutputSize,
+ limitedOutput_directive limit,
+ size_t sufficient_len,
+ const int fullUpdate
+ )
+{
+ LZ4HC_optimal_t opt[LZ4_OPT_NUM + 1]; /* this uses a bit too much stack memory to my taste ... */
+ LZ4HC_match_t matches[LZ4_OPT_NUM + 1];
+
+ const BYTE* ip = (const BYTE*) source;
+ const BYTE* anchor = ip;
+ const BYTE* const iend = ip + inputSize;
+ const BYTE* const mflimit = iend - MFLIMIT;
+ const BYTE* const matchlimit = (iend - LASTLITERALS);
+ BYTE* op = (BYTE*) dest;
+ BYTE* const oend = op + maxOutputSize;
+
+ /* init */
+ if (sufficient_len >= LZ4_OPT_NUM) sufficient_len = LZ4_OPT_NUM-1;
+ ctx->end += inputSize;
+ ip++;
+
+ /* Main Loop */
+ while (ip < mflimit) {
+ size_t const llen = ip - anchor;
+ size_t last_pos = 0;
+ size_t match_num, cur, best_mlen, best_off;
+ memset(opt, 0, sizeof(LZ4HC_optimal_t)); /* memset only the first one */
+
+ match_num = LZ4HC_BinTree_GetAllMatches(ctx, ip, matchlimit, MINMATCH-1, matches, fullUpdate);
+ if (!match_num) { ip++; continue; }
+
+ if ((size_t)matches[match_num-1].len > sufficient_len) {
+ /* good enough solution : immediate encoding */
+ best_mlen = matches[match_num-1].len;
+ best_off = matches[match_num-1].off;
+ cur = 0;
+ last_pos = 1;
+ goto encode;
+ }
+
+ /* set prices using matches at position = 0 */
+ { size_t matchNb;
+ for (matchNb = 0; matchNb < match_num; matchNb++) {
+ size_t mlen = (matchNb>0) ? (size_t)matches[matchNb-1].len+1 : MINMATCH;
+ best_mlen = matches[matchNb].len; /* necessarily < sufficient_len < LZ4_OPT_NUM */
+ for ( ; mlen <= best_mlen ; mlen++) {
+ size_t const cost = LZ4HC_sequencePrice(llen, mlen) - LZ4HC_literalsPrice(llen);
+ SET_PRICE(mlen, mlen, matches[matchNb].off, 0, cost); /* updates last_pos and opt[pos] */
+ } } }
+
+ if (last_pos < MINMATCH) { ip++; continue; } /* note : on clang at least, this test improves performance */
+
+ /* check further positions */
+ opt[0].mlen = opt[1].mlen = 1;
+ for (cur = 1; cur <= last_pos; cur++) {
+ const BYTE* const curPtr = ip + cur;
+
+ /* establish baseline price if cur is literal */
+ { size_t price, litlen;
+ if (opt[cur-1].mlen == 1) {
+ /* no match at previous position */
+ litlen = opt[cur-1].litlen + 1;
+ if (cur > litlen) {
+ price = opt[cur - litlen].price + LZ4HC_literalsPrice(litlen);
+ } else {
+ price = LZ4HC_literalsPrice(llen + litlen) - LZ4HC_literalsPrice(llen);
+ }
+ } else {
+ litlen = 1;
+ price = opt[cur - 1].price + LZ4HC_literalsPrice(1);
+ }
+
+ if (price < (size_t)opt[cur].price)
+ SET_PRICE(cur, 1 /*mlen*/, 0 /*off*/, litlen, price); /* note : increases last_pos */
+ }
+
+ if (cur == last_pos || curPtr >= mflimit) break;
+
+ match_num = LZ4HC_BinTree_GetAllMatches(ctx, curPtr, matchlimit, MINMATCH-1, matches, fullUpdate);
+ if ((match_num > 0) && (size_t)matches[match_num-1].len > sufficient_len) {
+ /* immediate encoding */
+ best_mlen = matches[match_num-1].len;
+ best_off = matches[match_num-1].off;
+ last_pos = cur + 1;
+ goto encode;
+ }
+
+ /* set prices using matches at position = cur */
+ { size_t matchNb;
+ for (matchNb = 0; matchNb < match_num; matchNb++) {
+ size_t ml = (matchNb>0) ? (size_t)matches[matchNb-1].len+1 : MINMATCH;
+ best_mlen = (cur + matches[matchNb].len < LZ4_OPT_NUM) ?
+ (size_t)matches[matchNb].len : LZ4_OPT_NUM - cur;
+
+ for ( ; ml <= best_mlen ; ml++) {
+ size_t ll, price;
+ if (opt[cur].mlen == 1) {
+ ll = opt[cur].litlen;
+ if (cur > ll)
+ price = opt[cur - ll].price + LZ4HC_sequencePrice(ll, ml);
+ else
+ price = LZ4HC_sequencePrice(llen + ll, ml) - LZ4HC_literalsPrice(llen);
+ } else {
+ ll = 0;
+ price = opt[cur].price + LZ4HC_sequencePrice(0, ml);
+ }
+
+ if (cur + ml > last_pos || price < (size_t)opt[cur + ml].price) {
+ SET_PRICE(cur + ml, ml, matches[matchNb].off, ll, price);
+ } } } }
+ } /* for (cur = 1; cur <= last_pos; cur++) */
+
+ best_mlen = opt[last_pos].mlen;
+ best_off = opt[last_pos].off;
+ cur = last_pos - best_mlen;
+
+encode: /* cur, last_pos, best_mlen, best_off must be set */
+ opt[0].mlen = 1;
+ while (1) { /* from end to beginning */
+ size_t const ml = opt[cur].mlen;
+ int const offset = opt[cur].off;
+ opt[cur].mlen = (int)best_mlen;
+ opt[cur].off = (int)best_off;
+ best_mlen = ml;
+ best_off = offset;
+ if (ml > cur) break; /* can this happen ? */
+ cur -= ml;
+ }
+
+ /* encode all recorded sequences */
+ cur = 0;
+ while (cur < last_pos) {
+ int const ml = opt[cur].mlen;
+ int const offset = opt[cur].off;
+ if (ml == 1) { ip++; cur++; continue; }
+ cur += ml;
+ if ( LZ4HC_encodeSequence(&ip, &op, &anchor, ml, ip - offset, limit, oend) ) return 0;
+ }
+ } /* while (ip < mflimit) */
+
+ /* Encode Last Literals */
+ { int lastRun = (int)(iend - anchor);
+ if ((limit) && (((char*)op - dest) + lastRun + 1 + ((lastRun+255-RUN_MASK)/255) > (U32)maxOutputSize)) return 0; /* Check output limit */
+ if (lastRun>=(int)RUN_MASK) { *op++=(RUN_MASK<<ML_BITS); lastRun-=RUN_MASK; for(; lastRun > 254 ; lastRun-=255) *op++ = 255; *op++ = (BYTE) lastRun; }
+ else *op++ = (BYTE)(lastRun<<ML_BITS);
+ memcpy(op, anchor, iend - anchor);
+ op += iend-anchor;
+ }
+
+ /* End */
+ return (int) ((char*)op-dest);
+}
diff -urN ClickHouse-1.1.54231-stable.orig/contrib/liblz4/src/lz4.c ClickHouse-1.1.54231-stable/contrib/liblz4/src/lz4.c
--- ClickHouse-1.1.54231-stable.orig/contrib/liblz4/src/lz4.c 2017-05-16 14:07:59.632657802 +0300
+++ ClickHouse-1.1.54231-stable/contrib/liblz4/src/lz4.c 2017-05-16 14:35:59.223548951 +0300
@@ -1,6 +1,6 @@
/*
LZ4 - Fast LZ compression algorithm
- Copyright (C) 2011-2015, Yann Collet.
+ Copyright (C) 2011-2016, Yann Collet.
BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
@@ -28,12 +28,12 @@
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
You can contact the author at :
- - LZ4 source repository : https://github.com/Cyan4973/lz4
- - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c
+ - LZ4 homepage : http://www.lz4.org
+ - LZ4 source repository : https://github.com/lz4/lz4
*/
-/**************************************
+/*-************************************
* Tuning parameters
**************************************/
/*
@@ -41,7 +41,9 @@
* Select how default compression functions will allocate memory for their hash table,
* in memory stack (0:default, fastest), or in memory heap (1:requires malloc()).
*/
-#define HEAPMODE 0
+#ifndef HEAPMODE
+# define HEAPMODE 0
+#endif
/*
* ACCELERATION_DEFAULT :
@@ -50,9 +52,31 @@
#define ACCELERATION_DEFAULT 1
-/**************************************
+/*-************************************
* CPU Feature Detection
**************************************/
+/* LZ4_FORCE_MEMORY_ACCESS
+ * By default, access to unaligned memory is controlled by `memcpy()`, which is safe and portable.
+ * Unfortunately, on some target/compiler combinations, the generated assembly is sub-optimal.
+ * The below switch allow to select different access method for improved performance.
+ * Method 0 (default) : use `memcpy()`. Safe and portable.
+ * Method 1 : `__packed` statement. It depends on compiler extension (ie, not portable).
+ * This method is safe if your compiler supports it, and *generally* as fast or faster than `memcpy`.
+ * Method 2 : direct access. This method is portable but violate C standard.
+ * It can generate buggy code on targets which generate assembly depending on alignment.
+ * But in some circumstances, it's the only known way to get the most performance (ie GCC + ARMv6)
+ * See https://fastcompression.blogspot.fr/2015/08/accessing-unaligned-memory.html for details.
+ * Prefer these methods in priority order (0 > 1 > 2)
+ */
+#ifndef LZ4_FORCE_MEMORY_ACCESS /* can be defined externally, on command line for example */
+# if defined(__GNUC__) && ( defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) )
+# define LZ4_FORCE_MEMORY_ACCESS 2
+# elif defined(__INTEL_COMPILER) || \
+ (defined(__GNUC__) && ( defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) ))
+# define LZ4_FORCE_MEMORY_ACCESS 1
+# endif
+#endif
+
/*
* LZ4_FORCE_SW_BITCOUNT
* Define this parameter if your target system or compiler does not support hardware bit count
@@ -62,13 +86,14 @@
#endif
-/**************************************
-* Includes
+/*-************************************
+* Dependency
**************************************/
-#include <lz4/lz4.h>
+#include "lz4.h"
+/* see also "memory routines" below */
-/**************************************
+/*-************************************
* Compiler Options
**************************************/
#ifdef _MSC_VER /* Visual Studio */
@@ -77,19 +102,16 @@
# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */
# pragma warning(disable : 4293) /* disable: C4293: too large shift (32-bits) */
#else
-# if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */
-# if defined(__GNUC__) || defined(__clang__)
-# define FORCE_INLINE static inline __attribute__((always_inline))
-# else
-# define FORCE_INLINE static inline
-# endif
+# if defined(__GNUC__) || defined(__clang__)
+# define FORCE_INLINE static inline __attribute__((always_inline))
+# elif defined(__cplusplus) || (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */)
+# define FORCE_INLINE static inline
# else
# define FORCE_INLINE static
-# endif /* __STDC_VERSION__ */
+# endif
#endif /* _MSC_VER */
-/* LZ4_GCC_VERSION is defined into lz4.h */
-#if (LZ4_GCC_VERSION >= 302) || (__INTEL_COMPILER >= 800) || defined(__clang__)
+#if (defined(__GNUC__) && (__GNUC__ >= 3)) || (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 800)) || defined(__clang__)
# define expect(expr,value) (__builtin_expect ((expr),(value)) )
#else
# define expect(expr,value) (expr)
@@ -99,7 +121,7 @@
#define unlikely(expr) expect((expr) != 0, 0)
-/**************************************
+/*-************************************
* Memory routines
**************************************/
#include <stdlib.h> /* malloc, calloc, free */
@@ -109,54 +131,100 @@
#define MEM_INIT memset
-/**************************************
+/*-************************************
* Basic Types
**************************************/
-#if defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */
+#if defined(__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */)
# include <stdint.h>
typedef uint8_t BYTE;
typedef uint16_t U16;
typedef uint32_t U32;
typedef int32_t S32;
typedef uint64_t U64;
+ typedef uintptr_t uptrval;
#else
typedef unsigned char BYTE;
typedef unsigned short U16;
typedef unsigned int U32;
typedef signed int S32;
typedef unsigned long long U64;
+ typedef size_t uptrval; /* generally true, except OpenVMS-64 */
#endif
+#if defined(__x86_64__)
+ typedef U64 reg_t; /* 64-bits in x32 mode */
+#else
+ typedef size_t reg_t; /* 32-bits in x32 mode */
+#endif
-/**************************************
+/*-************************************
* Reading and writing into memory
**************************************/
-#define STEPSIZE sizeof(size_t)
-
-static unsigned LZ4_64bits(void) { return sizeof(void*)==8; }
-
static unsigned LZ4_isLittleEndian(void)
{
- const union { U32 i; BYTE c[4]; } one = { 1 }; /* don't use static : performance detrimental */
+ const union { U32 u; BYTE c[4]; } one = { 1 }; /* don't use static : performance detrimental */
return one.c[0];
}
+#if defined(LZ4_FORCE_MEMORY_ACCESS) && (LZ4_FORCE_MEMORY_ACCESS==2)
+/* lie to the compiler about data alignment; use with caution */
+
+static U16 LZ4_read16(const void* memPtr) { return *(const U16*) memPtr; }
+static U32 LZ4_read32(const void* memPtr) { return *(const U32*) memPtr; }
+static reg_t LZ4_read_ARCH(const void* memPtr) { return *(const reg_t*) memPtr; }
+
+static void LZ4_write16(void* memPtr, U16 value) { *(U16*)memPtr = value; }
+static void LZ4_write32(void* memPtr, U32 value) { *(U32*)memPtr = value; }
+
+#elif defined(LZ4_FORCE_MEMORY_ACCESS) && (LZ4_FORCE_MEMORY_ACCESS==1)
+
+/* __pack instructions are safer, but compiler specific, hence potentially problematic for some compilers */
+/* currently only defined for gcc and icc */
+typedef union { U16 u16; U32 u32; reg_t uArch; } __attribute__((packed)) unalign;
+
+static U16 LZ4_read16(const void* ptr) { return ((const unalign*)ptr)->u16; }
+static U32 LZ4_read32(const void* ptr) { return ((const unalign*)ptr)->u32; }
+static reg_t LZ4_read_ARCH(const void* ptr) { return ((const unalign*)ptr)->uArch; }
+
+static void LZ4_write16(void* memPtr, U16 value) { ((unalign*)memPtr)->u16 = value; }
+static void LZ4_write32(void* memPtr, U32 value) { ((unalign*)memPtr)->u32 = value; }
+
+#else /* safe and portable access through memcpy() */
+
static U16 LZ4_read16(const void* memPtr)
{
- U16 val16;
- memcpy(&val16, memPtr, 2);
- return val16;
+ U16 val; memcpy(&val, memPtr, sizeof(val)); return val;
+}
+
+static U32 LZ4_read32(const void* memPtr)
+{
+ U32 val; memcpy(&val, memPtr, sizeof(val)); return val;
+}
+
+static reg_t LZ4_read_ARCH(const void* memPtr)
+{
+ reg_t val; memcpy(&val, memPtr, sizeof(val)); return val;
+}
+
+static void LZ4_write16(void* memPtr, U16 value)
+{
+ memcpy(memPtr, &value, sizeof(value));
}
+static void LZ4_write32(void* memPtr, U32 value)
+{
+ memcpy(memPtr, &value, sizeof(value));
+}
+
+#endif /* LZ4_FORCE_MEMORY_ACCESS */
+
+
static U16 LZ4_readLE16(const void* memPtr)
{
- if (LZ4_isLittleEndian())
- {
+ if (LZ4_isLittleEndian()) {
return LZ4_read16(memPtr);
- }
- else
- {
+ } else {
const BYTE* p = (const BYTE*)memPtr;
return (U16)((U16)p[0] + (p[1]<<8));
}
@@ -164,63 +232,39 @@
static void LZ4_writeLE16(void* memPtr, U16 value)
{
- if (LZ4_isLittleEndian())
- {
- memcpy(memPtr, &value, 2);
- }
- else
- {
+ if (LZ4_isLittleEndian()) {
+ LZ4_write16(memPtr, value);
+ } else {
BYTE* p = (BYTE*)memPtr;
p[0] = (BYTE) value;
p[1] = (BYTE)(value>>8);
}
}
-static U32 LZ4_read32(const void* memPtr)
+static void LZ4_copy8(void* dst, const void* src)
{
- U32 val32;
- memcpy(&val32, memPtr, 4);
- return val32;
+ memcpy(dst,src,8);
}
-static U64 LZ4_read64(const void* memPtr)
-{
- U64 val64;
- memcpy(&val64, memPtr, 8);
- return val64;
-}
-
-static size_t LZ4_read_ARCH(const void* p)
-{
- if (LZ4_64bits())
- return (size_t)LZ4_read64(p);
- else
- return (size_t)LZ4_read32(p);
-}
-
-
-static void LZ4_copy4(void* dstPtr, const void* srcPtr) { memcpy(dstPtr, srcPtr, 4); }
-
-static void LZ4_copy8(void* dstPtr, const void* srcPtr) { memcpy(dstPtr, srcPtr, 8); }
-
-/* customized version of memcpy, which may overwrite up to 7 bytes beyond dstEnd */
+/* customized variant of memcpy, which can overwrite up to 8 bytes beyond dstEnd */
static void LZ4_wildCopy(void* dstPtr, const void* srcPtr, void* dstEnd)
{
BYTE* d = (BYTE*)dstPtr;
const BYTE* s = (const BYTE*)srcPtr;
- BYTE* e = (BYTE*)dstEnd;
+ BYTE* const e = (BYTE*)dstEnd;
+
do { LZ4_copy8(d,s); d+=8; s+=8; } while (d<e);
}
-/**************************************
+/*-************************************
* Common Constants
**************************************/
#define MINMATCH 4
-#define COPYLENGTH 8
+#define WILDCOPYLENGTH 8
#define LASTLITERALS 5
-#define MFLIMIT (COPYLENGTH+MINMATCH)
+#define MFLIMIT (WILDCOPYLENGTH+MINMATCH)
static const int LZ4_minLength = (MFLIMIT+1);
#define KB *(1 <<10)
@@ -236,55 +280,48 @@
#define RUN_MASK ((1U<<RUN_BITS)-1)
-/**************************************
+/*-************************************
* Common Utils
**************************************/
#define LZ4_STATIC_ASSERT(c) { enum { LZ4_static_assert = 1/(int)(!!(c)) }; } /* use only *after* variable declarations */
-/**************************************
+/*-************************************
* Common functions
**************************************/
-static unsigned LZ4_NbCommonBytes (register size_t val)
+static unsigned LZ4_NbCommonBytes (register reg_t val)
{
- if (LZ4_isLittleEndian())
- {
- if (LZ4_64bits())
- {
+ if (LZ4_isLittleEndian()) {
+ if (sizeof(val)==8) {
# if defined(_MSC_VER) && defined(_WIN64) && !defined(LZ4_FORCE_SW_BITCOUNT)
unsigned long r = 0;
_BitScanForward64( &r, (U64)val );
return (int)(r>>3);
-# elif (defined(__clang__) || (LZ4_GCC_VERSION >= 304)) && !defined(LZ4_FORCE_SW_BITCOUNT)
+# elif (defined(__clang__) || (defined(__GNUC__) && (__GNUC__>=3))) && !defined(LZ4_FORCE_SW_BITCOUNT)
return (__builtin_ctzll((U64)val) >> 3);
# else
static const int DeBruijnBytePos[64] = { 0, 0, 0, 0, 0, 1, 1, 2, 0, 3, 1, 3, 1, 4, 2, 7, 0, 2, 3, 6, 1, 5, 3, 5, 1, 3, 4, 4, 2, 5, 6, 7, 7, 0, 1, 2, 3, 3, 4, 6, 2, 6, 5, 5, 3, 4, 5, 6, 7, 1, 2, 4, 6, 4, 4, 5, 7, 2, 6, 5, 7, 6, 7, 7 };
return DeBruijnBytePos[((U64)((val & -(long long)val) * 0x0218A392CDABBD3FULL)) >> 58];
# endif
- }
- else /* 32 bits */
- {
+ } else /* 32 bits */ {
# if defined(_MSC_VER) && !defined(LZ4_FORCE_SW_BITCOUNT)
unsigned long r;
_BitScanForward( &r, (U32)val );
return (int)(r>>3);
-# elif (defined(__clang__) || (LZ4_GCC_VERSION >= 304)) && !defined(LZ4_FORCE_SW_BITCOUNT)
+# elif (defined(__clang__) || (defined(__GNUC__) && (__GNUC__>=3))) && !defined(LZ4_FORCE_SW_BITCOUNT)
return (__builtin_ctz((U32)val) >> 3);
# else
static const int DeBruijnBytePos[32] = { 0, 0, 3, 0, 3, 1, 3, 0, 3, 2, 2, 1, 3, 2, 0, 1, 3, 3, 1, 2, 2, 2, 2, 0, 3, 1, 2, 0, 1, 0, 1, 1 };
return DeBruijnBytePos[((U32)((val & -(S32)val) * 0x077CB531U)) >> 27];
# endif
}
- }
- else /* Big Endian CPU */
- {
- if (LZ4_64bits())
- {
+ } else /* Big Endian CPU */ {
+ if (sizeof(val)==8) {
# if defined(_MSC_VER) && defined(_WIN64) && !defined(LZ4_FORCE_SW_BITCOUNT)
unsigned long r = 0;
_BitScanReverse64( &r, val );
return (unsigned)(r>>3);
-# elif (defined(__clang__) || (LZ4_GCC_VERSION >= 304)) && !defined(LZ4_FORCE_SW_BITCOUNT)
+# elif (defined(__clang__) || (defined(__GNUC__) && (__GNUC__>=3))) && !defined(LZ4_FORCE_SW_BITCOUNT)
return (__builtin_clzll((U64)val) >> 3);
# else
unsigned r;
@@ -293,14 +330,12 @@
r += (!val);
return r;
# endif
- }
- else /* 32 bits */
- {
+ } else /* 32 bits */ {
# if defined(_MSC_VER) && !defined(LZ4_FORCE_SW_BITCOUNT)
unsigned long r = 0;
_BitScanReverse( &r, (unsigned long)val );
return (unsigned)(r>>3);
-# elif (defined(__clang__) || (LZ4_GCC_VERSION >= 304)) && !defined(LZ4_FORCE_SW_BITCOUNT)
+# elif (defined(__clang__) || (defined(__GNUC__) && (__GNUC__>=3))) && !defined(LZ4_FORCE_SW_BITCOUNT)
return (__builtin_clz((U32)val) >> 3);
# else
unsigned r;
@@ -312,19 +347,19 @@
}
}
+#define STEPSIZE sizeof(reg_t)
static unsigned LZ4_count(const BYTE* pIn, const BYTE* pMatch, const BYTE* pInLimit)
{
const BYTE* const pStart = pIn;
- while (likely(pIn<pInLimit-(STEPSIZE-1)))
- {
- size_t diff = LZ4_read_ARCH(pMatch) ^ LZ4_read_ARCH(pIn);
+ while (likely(pIn<pInLimit-(STEPSIZE-1))) {
+ reg_t const diff = LZ4_read_ARCH(pMatch) ^ LZ4_read_ARCH(pIn);
if (!diff) { pIn+=STEPSIZE; pMatch+=STEPSIZE; continue; }
pIn += LZ4_NbCommonBytes(diff);
return (unsigned)(pIn - pStart);
}
- if (LZ4_64bits()) if ((pIn<(pInLimit-3)) && (LZ4_read32(pMatch) == LZ4_read32(pIn))) { pIn+=4; pMatch+=4; }
+ if ((STEPSIZE==8) && (pIn<(pInLimit-3)) && (LZ4_read32(pMatch) == LZ4_read32(pIn))) { pIn+=4; pMatch+=4; }
if ((pIn<(pInLimit-1)) && (LZ4_read16(pMatch) == LZ4_read16(pIn))) { pIn+=2; pMatch+=2; }
if ((pIn<pInLimit) && (*pMatch == *pIn)) pIn++;
return (unsigned)(pIn - pStart);
@@ -332,29 +367,16 @@
#ifndef LZ4_COMMONDEFS_ONLY
-/**************************************
+/*-************************************
* Local Constants
**************************************/
-#define LZ4_HASHLOG (LZ4_MEMORY_USAGE-2)
-#define HASHTABLESIZE (1 << LZ4_MEMORY_USAGE)
-#define HASH_SIZE_U32 (1 << LZ4_HASHLOG) /* required as macro for static allocation */
-
static const int LZ4_64Klimit = ((64 KB) + (MFLIMIT-1));
static const U32 LZ4_skipTrigger = 6; /* Increase this value ==> compression run slower on incompressible data */
-/**************************************
+/*-************************************
* Local Structures and types
**************************************/
-typedef struct {
- U32 hashTable[HASH_SIZE_U32];
- U32 currentOffset;
- U32 initCheck;
- const BYTE* dictionary;
- BYTE* bufferStart; /* obsolete, used for slideInputBuffer */
- U32 dictSize;
-} LZ4_stream_t_internal;
-
typedef enum { notLimited = 0, limitedOutput = 1 } limitedOutput_directive;
typedef enum { byPtr, byU32, byU16 } tableType_t;
@@ -365,44 +387,43 @@
typedef enum { full = 0, partial = 1 } earlyEnd_directive;
-/**************************************
+/*-************************************
* Local Utils
**************************************/
int LZ4_versionNumber (void) { return LZ4_VERSION_NUMBER; }
+const char* LZ4_versionString(void) { return LZ4_VERSION_STRING; }
int LZ4_compressBound(int isize) { return LZ4_COMPRESSBOUND(isize); }
int LZ4_sizeofState() { return LZ4_STREAMSIZE; }
-
-/********************************
+/*-******************************
* Compression functions
********************************/
-
-static U32 LZ4_hashSequence(U32 sequence, tableType_t const tableType)
+static U32 LZ4_hash4(U32 sequence, tableType_t const tableType)
{
if (tableType == byU16)
- return (((sequence) * 2654435761U) >> ((MINMATCH*8)-(LZ4_HASHLOG+1)));
+ return ((sequence * 2654435761U) >> ((MINMATCH*8)-(LZ4_HASHLOG+1)));
else
- return (((sequence) * 2654435761U) >> ((MINMATCH*8)-LZ4_HASHLOG));
+ return ((sequence * 2654435761U) >> ((MINMATCH*8)-LZ4_HASHLOG));
}
-static const U64 prime5bytes = 889523592379ULL;
-static U32 LZ4_hashSequence64(size_t sequence, tableType_t const tableType)
+static U32 LZ4_hash5(U64 sequence, tableType_t const tableType)
{
+ static const U64 prime5bytes = 889523592379ULL;
+ static const U64 prime8bytes = 11400714785074694791ULL;
const U32 hashLog = (tableType == byU16) ? LZ4_HASHLOG+1 : LZ4_HASHLOG;
- const U32 hashMask = (1<<hashLog) - 1;
- return ((sequence * prime5bytes) >> (40 - hashLog)) & hashMask;
+ if (LZ4_isLittleEndian())
+ return (U32)(((sequence << 24) * prime5bytes) >> (64 - hashLog));
+ else
+ return (U32)(((sequence >> 24) * prime8bytes) >> (64 - hashLog));
}
-static U32 LZ4_hashSequenceT(size_t sequence, tableType_t const tableType)
+FORCE_INLINE U32 LZ4_hashPosition(const void* const p, tableType_t const tableType)
{
- if (LZ4_64bits())
- return LZ4_hashSequence64(sequence, tableType);
- return LZ4_hashSequence((U32)sequence, tableType);
+ if ((sizeof(reg_t)==8) && (tableType != byU16)) return LZ4_hash5(LZ4_read_ARCH(p), tableType);
+ return LZ4_hash4(LZ4_read32(p), tableType);
}
-static U32 LZ4_hashPosition(const void* p, tableType_t tableType) { return LZ4_hashSequenceT(LZ4_read_ARCH(p), tableType); }
-
static void LZ4_putPositionOnHash(const BYTE* p, U32 h, void* tableBase, tableType_t const tableType, const BYTE* srcBase)
{
switch (tableType)
@@ -413,27 +434,30 @@
}
}
-static void LZ4_putPosition(const BYTE* p, void* tableBase, tableType_t tableType, const BYTE* srcBase)
+FORCE_INLINE void LZ4_putPosition(const BYTE* p, void* tableBase, tableType_t tableType, const BYTE* srcBase)
{
- U32 h = LZ4_hashPosition(p, tableType);
+ U32 const h = LZ4_hashPosition(p, tableType);
LZ4_putPositionOnHash(p, h, tableBase, tableType, srcBase);
}
static const BYTE* LZ4_getPositionOnHash(U32 h, void* tableBase, tableType_t tableType, const BYTE* srcBase)
{
if (tableType == byPtr) { const BYTE** hashTable = (const BYTE**) tableBase; return hashTable[h]; }
- if (tableType == byU32) { U32* hashTable = (U32*) tableBase; return hashTable[h] + srcBase; }
- { U16* hashTable = (U16*) tableBase; return hashTable[h] + srcBase; } /* default, to ensure a return */
+ if (tableType == byU32) { const U32* const hashTable = (U32*) tableBase; return hashTable[h] + srcBase; }
+ { const U16* const hashTable = (U16*) tableBase; return hashTable[h] + srcBase; } /* default, to ensure a return */
}
-static const BYTE* LZ4_getPosition(const BYTE* p, void* tableBase, tableType_t tableType, const BYTE* srcBase)
+FORCE_INLINE const BYTE* LZ4_getPosition(const BYTE* p, void* tableBase, tableType_t tableType, const BYTE* srcBase)
{
- U32 h = LZ4_hashPosition(p, tableType);
+ U32 const h = LZ4_hashPosition(p, tableType);
return LZ4_getPositionOnHash(h, tableBase, tableType, srcBase);
}
+
+/** LZ4_compress_generic() :
+ inlined, to ensure branches are decided at compilation time */
FORCE_INLINE int LZ4_compress_generic(
- void* const ctx,
+ LZ4_stream_t_internal* const cctx,
const char* const source,
char* const dest,
const int inputSize,
@@ -444,15 +468,13 @@
const dictIssue_directive dictIssue,
const U32 acceleration)
{
- LZ4_stream_t_internal* const dictPtr = (LZ4_stream_t_internal*)ctx;
-
const BYTE* ip = (const BYTE*) source;
const BYTE* base;
const BYTE* lowLimit;
- const BYTE* const lowRefLimit = ip - dictPtr->dictSize;
- const BYTE* const dictionary = dictPtr->dictionary;
- const BYTE* const dictEnd = dictionary + dictPtr->dictSize;
- const size_t dictDelta = dictEnd - (const BYTE*)source;
+ const BYTE* const lowRefLimit = ip - cctx->dictSize;
+ const BYTE* const dictionary = cctx->dictionary;
+ const BYTE* const dictEnd = dictionary + cctx->dictSize;
+ const ptrdiff_t dictDelta = dictEnd - (const BYTE*)source;
const BYTE* anchor = (const BYTE*) source;
const BYTE* const iend = ip + inputSize;
const BYTE* const mflimit = iend - MFLIMIT;
@@ -462,10 +484,9 @@
BYTE* const olimit = op + maxOutputSize;
U32 forwardH;
- size_t refDelta=0;
/* Init conditions */
- if ((U32)inputSize > (U32)LZ4_MAX_INPUT_SIZE) return 0; /* Unsupported input size, too large (or negative) */
+ if ((U32)inputSize > (U32)LZ4_MAX_INPUT_SIZE) return 0; /* Unsupported inputSize, too large (or negative) */
switch(dict)
{
case noDict:
@@ -474,11 +495,11 @@
lowLimit = (const BYTE*)source;
break;
case withPrefix64k:
- base = (const BYTE*)source - dictPtr->currentOffset;
- lowLimit = (const BYTE*)source - dictPtr->dictSize;
+ base = (const BYTE*)source - cctx->currentOffset;
+ lowLimit = (const BYTE*)source - cctx->dictSize;
break;
case usingExtDict:
- base = (const BYTE*)source - dictPtr->currentOffset;
+ base = (const BYTE*)source - cctx->currentOffset;
lowLimit = (const BYTE*)source;
break;
}
@@ -486,44 +507,38 @@
if (inputSize<LZ4_minLength) goto _last_literals; /* Input too small, no compression (all literals) */
/* First Byte */
- LZ4_putPosition(ip, ctx, tableType, base);
+ LZ4_putPosition(ip, cctx->hashTable, tableType, base);
ip++; forwardH = LZ4_hashPosition(ip, tableType);
/* Main Loop */
- for ( ; ; )
- {
+ for ( ; ; ) {
+ ptrdiff_t refDelta = 0;
const BYTE* match;
BYTE* token;
- {
- const BYTE* forwardIp = ip;
+
+ /* Find a match */
+ { const BYTE* forwardIp = ip;
unsigned step = 1;
unsigned searchMatchNb = acceleration << LZ4_skipTrigger;
-
- /* Find a match */
do {
- U32 h = forwardH;
+ U32 const h = forwardH;
ip = forwardIp;
forwardIp += step;
step = (searchMatchNb++ >> LZ4_skipTrigger);
if (unlikely(forwardIp > mflimit)) goto _last_literals;
- match = LZ4_getPositionOnHash(h, ctx, tableType, base);
- if (dict==usingExtDict)
- {
- if (match<(const BYTE*)source)
- {
+ match = LZ4_getPositionOnHash(h, cctx->hashTable, tableType, base);
+ if (dict==usingExtDict) {
+ if (match < (const BYTE*)source) {
refDelta = dictDelta;
lowLimit = dictionary;
- }
- else
- {
+ } else {
refDelta = 0;
lowLimit = (const BYTE*)source;
- }
- }
+ } }
forwardH = LZ4_hashPosition(forwardIp, tableType);
- LZ4_putPositionOnHash(ip, h, ctx, tableType, base);
+ LZ4_putPositionOnHash(ip, h, cctx->hashTable, tableType, base);
} while ( ((dictIssue==dictSmall) ? (match < lowRefLimit) : 0)
|| ((tableType==byU16) ? 0 : (match + MAX_DISTANCE < ip))
@@ -531,18 +546,17 @@
}
/* Catch up */
- while ((ip>anchor) && (match+refDelta > lowLimit) && (unlikely(ip[-1]==match[refDelta-1]))) { ip--; match--; }
+ while (((ip>anchor) & (match+refDelta > lowLimit)) && (unlikely(ip[-1]==match[refDelta-1]))) { ip--; match--; }
- {
- /* Encode Literal length */
- unsigned litLength = (unsigned)(ip - anchor);
+ /* Encode Literals */
+ { unsigned const litLength = (unsigned)(ip - anchor);
token = op++;
- if ((outputLimited) && (unlikely(op + litLength + (2 + 1 + LASTLITERALS) + (litLength/255) > olimit)))
- return 0; /* Check output limit */
- if (litLength>=RUN_MASK)
- {
+ if ((outputLimited) && /* Check output buffer overflow */
+ (unlikely(op + litLength + (2 + 1 + LASTLITERALS) + (litLength/255) > olimit)))
+ return 0;
+ if (litLength >= RUN_MASK) {
int len = (int)litLength-RUN_MASK;
- *token=(RUN_MASK<<ML_BITS);
+ *token = (RUN_MASK<<ML_BITS);
for(; len >= 255 ; len-=255) *op++ = 255;
*op++ = (BYTE)len;
}
@@ -558,41 +572,37 @@
LZ4_writeLE16(op, (U16)(ip-match)); op+=2;
/* Encode MatchLength */
- {
- unsigned matchLength;
+ { unsigned matchCode;
- if ((dict==usingExtDict) && (lowLimit==dictionary))
- {
+ if ((dict==usingExtDict) && (lowLimit==dictionary)) {
const BYTE* limit;
match += refDelta;
limit = ip + (dictEnd-match);
if (limit > matchlimit) limit = matchlimit;
- matchLength = LZ4_count(ip+MINMATCH, match+MINMATCH, limit);
- ip += MINMATCH + matchLength;
- if (ip==limit)
- {
- unsigned more = LZ4_count(ip, (const BYTE*)source, matchlimit);
- matchLength += more;
+ matchCode = LZ4_count(ip+MINMATCH, match+MINMATCH, limit);
+ ip += MINMATCH + matchCode;
+ if (ip==limit) {
+ unsigned const more = LZ4_count(ip, (const BYTE*)source, matchlimit);
+ matchCode += more;
ip += more;
}
- }
- else
- {
- matchLength = LZ4_count(ip+MINMATCH, match+MINMATCH, matchlimit);
- ip += MINMATCH + matchLength;
+ } else {
+ matchCode = LZ4_count(ip+MINMATCH, match+MINMATCH, matchlimit);
+ ip += MINMATCH + matchCode;
}
- if ((outputLimited) && (unlikely(op + (1 + LASTLITERALS) + (matchLength>>8) > olimit)))
- return 0; /* Check output limit */
- if (matchLength>=ML_MASK)
- {
+ if ( outputLimited && /* Check output buffer overflow */
+ (unlikely(op + (1 + LASTLITERALS) + (matchCode>>8) > olimit)) )
+ return 0;
+ if (matchCode >= ML_MASK) {
*token += ML_MASK;
- matchLength -= ML_MASK;
- for (; matchLength >= 510 ; matchLength-=510) { *op++ = 255; *op++ = 255; }
- if (matchLength >= 255) { matchLength-=255; *op++ = 255; }
- *op++ = (BYTE)matchLength;
- }
- else *token += (BYTE)(matchLength);
+ matchCode -= ML_MASK;
+ LZ4_write32(op, 0xFFFFFFFF);
+ while (matchCode >= 4*255) op+=4, LZ4_write32(op, 0xFFFFFFFF), matchCode -= 4*255;
+ op += matchCode / 255;
+ *op++ = (BYTE)(matchCode % 255);
+ } else
+ *token += (BYTE)(matchCode);
}
anchor = ip;
@@ -601,24 +611,19 @@
if (ip > mflimit) break;
/* Fill table */
- LZ4_putPosition(ip-2, ctx, tableType, base);
+ LZ4_putPosition(ip-2, cctx->hashTable, tableType, base);
/* Test next position */
- match = LZ4_getPosition(ip, ctx, tableType, base);
- if (dict==usingExtDict)
- {
- if (match<(const BYTE*)source)
- {
+ match = LZ4_getPosition(ip, cctx->hashTable, tableType, base);
+ if (dict==usingExtDict) {
+ if (match < (const BYTE*)source) {
refDelta = dictDelta;
lowLimit = dictionary;
- }
- else
- {
+ } else {
refDelta = 0;
lowLimit = (const BYTE*)source;
- }
- }
- LZ4_putPosition(ip, ctx, tableType, base);
+ } }
+ LZ4_putPosition(ip, cctx->hashTable, tableType, base);
if ( ((dictIssue==dictSmall) ? (match>=lowRefLimit) : 1)
&& (match+MAX_DISTANCE>=ip)
&& (LZ4_read32(match+refDelta)==LZ4_read32(ip)) )
@@ -630,19 +635,16 @@
_last_literals:
/* Encode Last Literals */
- {
- const size_t lastRun = (size_t)(iend - anchor);
- if ((outputLimited) && ((op - (BYTE*)dest) + lastRun + 1 + ((lastRun+255-RUN_MASK)/255) > (U32)maxOutputSize))
- return 0; /* Check output limit */
- if (lastRun >= RUN_MASK)
- {
+ { size_t const lastRun = (size_t)(iend - anchor);
+ if ( (outputLimited) && /* Check output buffer overflow */
+ ((op - (BYTE*)dest) + lastRun + 1 + ((lastRun+255-RUN_MASK)/255) > (U32)maxOutputSize) )
+ return 0;
+ if (lastRun >= RUN_MASK) {
size_t accumulator = lastRun - RUN_MASK;
*op++ = RUN_MASK << ML_BITS;
for(; accumulator >= 255 ; accumulator-=255) *op++ = 255;
*op++ = (BYTE) accumulator;
- }
- else
- {
+ } else {
*op++ = (BYTE)(lastRun<<ML_BITS);
}
memcpy(op, anchor, lastRun);
@@ -656,22 +658,20 @@
int LZ4_compress_fast_extState(void* state, const char* source, char* dest, int inputSize, int maxOutputSize, int acceleration)
{
+ LZ4_stream_t_internal* ctx = &((LZ4_stream_t*)state)->internal_donotuse;
LZ4_resetStream((LZ4_stream_t*)state);
if (acceleration < 1) acceleration = ACCELERATION_DEFAULT;
- if (maxOutputSize >= LZ4_compressBound(inputSize))
- {
+ if (maxOutputSize >= LZ4_compressBound(inputSize)) {
if (inputSize < LZ4_64Klimit)
- return LZ4_compress_generic(state, source, dest, inputSize, 0, notLimited, byU16, noDict, noDictIssue, acceleration);
+ return LZ4_compress_generic(ctx, source, dest, inputSize, 0, notLimited, byU16, noDict, noDictIssue, acceleration);
else
- return LZ4_compress_generic(state, source, dest, inputSize, 0, notLimited, LZ4_64bits() ? byU32 : byPtr, noDict, noDictIssue, acceleration);
- }
- else
- {
+ return LZ4_compress_generic(ctx, source, dest, inputSize, 0, notLimited, (sizeof(void*)==8) ? byU32 : byPtr, noDict, noDictIssue, acceleration);
+ } else {
if (inputSize < LZ4_64Klimit)
- return LZ4_compress_generic(state, source, dest, inputSize, maxOutputSize, limitedOutput, byU16, noDict, noDictIssue, acceleration);
+ return LZ4_compress_generic(ctx, source, dest, inputSize, maxOutputSize, limitedOutput, byU16, noDict, noDictIssue, acceleration);
else
- return LZ4_compress_generic(state, source, dest, inputSize, maxOutputSize, limitedOutput, LZ4_64bits() ? byU32 : byPtr, noDict, noDictIssue, acceleration);
+ return LZ4_compress_generic(ctx, source, dest, inputSize, maxOutputSize, limitedOutput, (sizeof(void*)==8) ? byU32 : byPtr, noDict, noDictIssue, acceleration);
}
}
@@ -682,10 +682,10 @@
void* ctxPtr = ALLOCATOR(1, sizeof(LZ4_stream_t)); /* malloc-calloc always properly aligned */
#else
LZ4_stream_t ctx;
- void* ctxPtr = &ctx;
+ void* const ctxPtr = &ctx;
#endif
- int result = LZ4_compress_fast_extState(ctxPtr, source, dest, inputSize, maxOutputSize, acceleration);
+ int const result = LZ4_compress_fast_extState(ctxPtr, source, dest, inputSize, maxOutputSize, acceleration);
#if (HEAPMODE)
FREEMEM(ctxPtr);
@@ -705,22 +705,21 @@
int LZ4_compress_fast_force(const char* source, char* dest, int inputSize, int maxOutputSize, int acceleration)
{
LZ4_stream_t ctx;
-
LZ4_resetStream(&ctx);
if (inputSize < LZ4_64Klimit)
- return LZ4_compress_generic(&ctx, source, dest, inputSize, maxOutputSize, limitedOutput, byU16, noDict, noDictIssue, acceleration);
+ return LZ4_compress_generic(&ctx.internal_donotuse, source, dest, inputSize, maxOutputSize, limitedOutput, byU16, noDict, noDictIssue, acceleration);
else
- return LZ4_compress_generic(&ctx, source, dest, inputSize, maxOutputSize, limitedOutput, LZ4_64bits() ? byU32 : byPtr, noDict, noDictIssue, acceleration);
+ return LZ4_compress_generic(&ctx.internal_donotuse, source, dest, inputSize, maxOutputSize, limitedOutput, sizeof(void*)==8 ? byU32 : byPtr, noDict, noDictIssue, acceleration);
}
-/********************************
-* destSize variant
+/*-******************************
+* *_destSize() variant
********************************/
static int LZ4_compress_destSize_generic(
- void* const ctx,
+ LZ4_stream_t_internal* const ctx,
const char* const src,
char* const dst,
int* const srcSizePtr,
@@ -752,32 +751,30 @@
/* First Byte */
*srcSizePtr = 0;
- LZ4_putPosition(ip, ctx, tableType, base);
+ LZ4_putPosition(ip, ctx->hashTable, tableType, base);
ip++; forwardH = LZ4_hashPosition(ip, tableType);
/* Main Loop */
- for ( ; ; )
- {
+ for ( ; ; ) {
const BYTE* match;
BYTE* token;
- {
- const BYTE* forwardIp = ip;
+
+ /* Find a match */
+ { const BYTE* forwardIp = ip;
unsigned step = 1;
unsigned searchMatchNb = 1 << LZ4_skipTrigger;
- /* Find a match */
do {
U32 h = forwardH;
ip = forwardIp;
forwardIp += step;
step = (searchMatchNb++ >> LZ4_skipTrigger);
- if (unlikely(forwardIp > mflimit))
- goto _last_literals;
+ if (unlikely(forwardIp > mflimit)) goto _last_literals;
- match = LZ4_getPositionOnHash(h, ctx, tableType, base);
+ match = LZ4_getPositionOnHash(h, ctx->hashTable, tableType, base);
forwardH = LZ4_hashPosition(forwardIp, tableType);
- LZ4_putPositionOnHash(ip, h, ctx, tableType, base);
+ LZ4_putPositionOnHash(ip, h, ctx->hashTable, tableType, base);
} while ( ((tableType==byU16) ? 0 : (match + MAX_DISTANCE < ip))
|| (LZ4_read32(match) != LZ4_read32(ip)) );
@@ -786,18 +783,15 @@
/* Catch up */
while ((ip>anchor) && (match > lowLimit) && (unlikely(ip[-1]==match[-1]))) { ip--; match--; }
- {
- /* Encode Literal length */
- unsigned litLength = (unsigned)(ip - anchor);
+ /* Encode Literal length */
+ { unsigned litLength = (unsigned)(ip - anchor);
token = op++;
- if (op + ((litLength+240)/255) + litLength > oMaxLit)
- {
+ if (op + ((litLength+240)/255) + litLength > oMaxLit) {
/* Not enough space for a last match */
op--;
goto _last_literals;
}
- if (litLength>=RUN_MASK)
- {
+ if (litLength>=RUN_MASK) {
unsigned len = litLength - RUN_MASK;
*token=(RUN_MASK<<ML_BITS);
for(; len >= 255 ; len-=255) *op++ = 255;
@@ -815,21 +809,15 @@
LZ4_writeLE16(op, (U16)(ip-match)); op+=2;
/* Encode MatchLength */
- {
- size_t matchLength;
+ { size_t matchLength = LZ4_count(ip+MINMATCH, match+MINMATCH, matchlimit);
- matchLength = LZ4_count(ip+MINMATCH, match+MINMATCH, matchlimit);
-
- if (op + ((matchLength+240)/255) > oMaxMatch)
- {
+ if (op + ((matchLength+240)/255) > oMaxMatch) {
/* Match description too long : reduce it */
matchLength = (15-1) + (oMaxMatch-op) * 255;
}
- //printf("offset %5i, matchLength%5i \n", (int)(ip-match), matchLength + MINMATCH);
ip += MINMATCH + matchLength;
- if (matchLength>=ML_MASK)
- {
+ if (matchLength>=ML_MASK) {
*token += ML_MASK;
matchLength -= ML_MASK;
while (matchLength >= 255) { matchLength-=255; *op++ = 255; }
@@ -845,11 +833,11 @@
if (op > oMaxSeq) break;
/* Fill table */
- LZ4_putPosition(ip-2, ctx, tableType, base);
+ LZ4_putPosition(ip-2, ctx->hashTable, tableType, base);
/* Test next position */
- match = LZ4_getPosition(ip, ctx, tableType, base);
- LZ4_putPosition(ip, ctx, tableType, base);
+ match = LZ4_getPosition(ip, ctx->hashTable, tableType, base);
+ LZ4_putPosition(ip, ctx->hashTable, tableType, base);
if ( (match+MAX_DISTANCE>=ip)
&& (LZ4_read32(match)==LZ4_read32(ip)) )
{ token=op++; *token=0; goto _next_match; }
@@ -860,25 +848,20 @@
_last_literals:
/* Encode Last Literals */
- {
- size_t lastRunSize = (size_t)(iend - anchor);
- if (op + 1 /* token */ + ((lastRunSize+240)/255) /* litLength */ + lastRunSize /* literals */ > oend)
- {
+ { size_t lastRunSize = (size_t)(iend - anchor);
+ if (op + 1 /* token */ + ((lastRunSize+240)/255) /* litLength */ + lastRunSize /* literals */ > oend) {
/* adapt lastRunSize to fill 'dst' */
lastRunSize = (oend-op) - 1;
lastRunSize -= (lastRunSize+240)/255;
}
ip = anchor + lastRunSize;
- if (lastRunSize >= RUN_MASK)
- {
+ if (lastRunSize >= RUN_MASK) {
size_t accumulator = lastRunSize - RUN_MASK;
*op++ = RUN_MASK << ML_BITS;
for(; accumulator >= 255 ; accumulator-=255) *op++ = 255;
*op++ = (BYTE) accumulator;
- }
- else
- {
+ } else {
*op++ = (BYTE)(lastRunSize<<ML_BITS);
}
memcpy(op, anchor, lastRunSize);
@@ -891,20 +874,17 @@
}
-static int LZ4_compress_destSize_extState (void* state, const char* src, char* dst, int* srcSizePtr, int targetDstSize)
+static int LZ4_compress_destSize_extState (LZ4_stream_t* state, const char* src, char* dst, int* srcSizePtr, int targetDstSize)
{
- LZ4_resetStream((LZ4_stream_t*)state);
+ LZ4_resetStream(state);
- if (targetDstSize >= LZ4_compressBound(*srcSizePtr)) /* compression success is guaranteed */
- {
+ if (targetDstSize >= LZ4_compressBound(*srcSizePtr)) { /* compression success is guaranteed */
return LZ4_compress_fast_extState(state, src, dst, *srcSizePtr, targetDstSize, 1);
- }
- else
- {
+ } else {
if (*srcSizePtr < LZ4_64Klimit)
- return LZ4_compress_destSize_generic(state, src, dst, srcSizePtr, targetDstSize, byU16);
+ return LZ4_compress_destSize_generic(&state->internal_donotuse, src, dst, srcSizePtr, targetDstSize, byU16);
else
- return LZ4_compress_destSize_generic(state, src, dst, srcSizePtr, targetDstSize, LZ4_64bits() ? byU32 : byPtr);
+ return LZ4_compress_destSize_generic(&state->internal_donotuse, src, dst, srcSizePtr, targetDstSize, sizeof(void*)==8 ? byU32 : byPtr);
}
}
@@ -912,10 +892,10 @@
int LZ4_compress_destSize(const char* src, char* dst, int* srcSizePtr, int targetDstSize)
{
#if (HEAPMODE)
- void* ctx = ALLOCATOR(1, sizeof(LZ4_stream_t)); /* malloc-calloc always properly aligned */
+ LZ4_stream_t* ctx = (LZ4_stream_t*)ALLOCATOR(1, sizeof(LZ4_stream_t)); /* malloc-calloc always properly aligned */
#else
LZ4_stream_t ctxBody;
- void* ctx = &ctxBody;
+ LZ4_stream_t* ctx = &ctxBody;
#endif
int result = LZ4_compress_destSize_extState(ctx, src, dst, srcSizePtr, targetDstSize);
@@ -928,7 +908,7 @@
-/********************************
+/*-******************************
* Streaming functions
********************************/
@@ -952,10 +932,10 @@
}
-#define HASH_UNIT sizeof(size_t)
+#define HASH_UNIT sizeof(reg_t)
int LZ4_loadDict (LZ4_stream_t* LZ4_dict, const char* dictionary, int dictSize)
{
- LZ4_stream_t_internal* dict = (LZ4_stream_t_internal*) LZ4_dict;
+ LZ4_stream_t_internal* dict = &LZ4_dict->internal_donotuse;
const BYTE* p = (const BYTE*)dictionary;
const BYTE* const dictEnd = p + dictSize;
const BYTE* base;
@@ -963,8 +943,7 @@
if ((dict->initCheck) || (dict->currentOffset > 1 GB)) /* Uninitialized structure, or reuse overflow */
LZ4_resetStream(LZ4_dict);
- if (dictSize < (int)HASH_UNIT)
- {
+ if (dictSize < (int)HASH_UNIT) {
dict->dictionary = NULL;
dict->dictSize = 0;
return 0;
@@ -977,8 +956,7 @@
dict->dictSize = (U32)(dictEnd - p);
dict->currentOffset += dict->dictSize;
- while (p <= dictEnd-HASH_UNIT)
- {
+ while (p <= dictEnd-HASH_UNIT) {
LZ4_putPosition(p, dict->hashTable, byU32, base);
p+=3;
}
@@ -990,14 +968,12 @@
static void LZ4_renormDictT(LZ4_stream_t_internal* LZ4_dict, const BYTE* src)
{
if ((LZ4_dict->currentOffset > 0x80000000) ||
- ((size_t)LZ4_dict->currentOffset > (size_t)src)) /* address space overflow */
- {
+ ((uptrval)LZ4_dict->currentOffset > (uptrval)src)) { /* address space overflow */
/* rescale hash table */
- U32 delta = LZ4_dict->currentOffset - 64 KB;
+ U32 const delta = LZ4_dict->currentOffset - 64 KB;
const BYTE* dictEnd = LZ4_dict->dictionary + LZ4_dict->dictSize;
int i;
- for (i=0; i<HASH_SIZE_U32; i++)
- {
+ for (i=0; i<LZ4_HASH_SIZE_U32; i++) {
if (LZ4_dict->hashTable[i] < delta) LZ4_dict->hashTable[i]=0;
else LZ4_dict->hashTable[i] -= delta;
}
@@ -1010,7 +986,7 @@
int LZ4_compress_fast_continue (LZ4_stream_t* LZ4_stream, const char* source, char* dest, int inputSize, int maxOutputSize, int acceleration)
{
- LZ4_stream_t_internal* streamPtr = (LZ4_stream_t_internal*)LZ4_stream;
+ LZ4_stream_t_internal* streamPtr = &LZ4_stream->internal_donotuse;
const BYTE* const dictEnd = streamPtr->dictionary + streamPtr->dictSize;
const BYTE* smallest = (const BYTE*) source;
@@ -1020,10 +996,8 @@
if (acceleration < 1) acceleration = ACCELERATION_DEFAULT;
/* Check overlapping input/dictionary space */
- {
- const BYTE* sourceEnd = (const BYTE*) source + inputSize;
- if ((sourceEnd > streamPtr->dictionary) && (sourceEnd < dictEnd))
- {
+ { const BYTE* sourceEnd = (const BYTE*) source + inputSize;
+ if ((sourceEnd > streamPtr->dictionary) && (sourceEnd < dictEnd)) {
streamPtr->dictSize = (U32)(dictEnd - sourceEnd);
if (streamPtr->dictSize > 64 KB) streamPtr->dictSize = 64 KB;
if (streamPtr->dictSize < 4) streamPtr->dictSize = 0;
@@ -1032,25 +1006,23 @@
}
/* prefix mode : source data follows dictionary */
- if (dictEnd == (const BYTE*)source)
- {
+ if (dictEnd == (const BYTE*)source) {
int result;
if ((streamPtr->dictSize < 64 KB) && (streamPtr->dictSize < streamPtr->currentOffset))
- result = LZ4_compress_generic(LZ4_stream, source, dest, inputSize, maxOutputSize, limitedOutput, byU32, withPrefix64k, dictSmall, acceleration);
+ result = LZ4_compress_generic(streamPtr, source, dest, inputSize, maxOutputSize, limitedOutput, byU32, withPrefix64k, dictSmall, acceleration);
else
- result = LZ4_compress_generic(LZ4_stream, source, dest, inputSize, maxOutputSize, limitedOutput, byU32, withPrefix64k, noDictIssue, acceleration);
+ result = LZ4_compress_generic(streamPtr, source, dest, inputSize, maxOutputSize, limitedOutput, byU32, withPrefix64k, noDictIssue, acceleration);
streamPtr->dictSize += (U32)inputSize;
streamPtr->currentOffset += (U32)inputSize;
return result;
}
/* external dictionary mode */
- {
- int result;
+ { int result;
if ((streamPtr->dictSize < 64 KB) && (streamPtr->dictSize < streamPtr->currentOffset))
- result = LZ4_compress_generic(LZ4_stream, source, dest, inputSize, maxOutputSize, limitedOutput, byU32, usingExtDict, dictSmall, acceleration);
+ result = LZ4_compress_generic(streamPtr, source, dest, inputSize, maxOutputSize, limitedOutput, byU32, usingExtDict, dictSmall, acceleration);
else
- result = LZ4_compress_generic(LZ4_stream, source, dest, inputSize, maxOutputSize, limitedOutput, byU32, usingExtDict, noDictIssue, acceleration);
+ result = LZ4_compress_generic(streamPtr, source, dest, inputSize, maxOutputSize, limitedOutput, byU32, usingExtDict, noDictIssue, acceleration);
streamPtr->dictionary = (const BYTE*)source;
streamPtr->dictSize = (U32)inputSize;
streamPtr->currentOffset += (U32)inputSize;
@@ -1062,15 +1034,15 @@
/* Hidden debug function, to force external dictionary mode */
int LZ4_compress_forceExtDict (LZ4_stream_t* LZ4_dict, const char* source, char* dest, int inputSize)
{
- LZ4_stream_t_internal* streamPtr = (LZ4_stream_t_internal*)LZ4_dict;
+ LZ4_stream_t_internal* streamPtr = &LZ4_dict->internal_donotuse;
int result;
const BYTE* const dictEnd = streamPtr->dictionary + streamPtr->dictSize;
const BYTE* smallest = dictEnd;
if (smallest > (const BYTE*) source) smallest = (const BYTE*) source;
- LZ4_renormDictT((LZ4_stream_t_internal*)LZ4_dict, smallest);
+ LZ4_renormDictT(streamPtr, smallest);
- result = LZ4_compress_generic(LZ4_dict, source, dest, inputSize, 0, notLimited, byU32, usingExtDict, noDictIssue, 1);
+ result = LZ4_compress_generic(streamPtr, source, dest, inputSize, 0, notLimited, byU32, usingExtDict, noDictIssue, 1);
streamPtr->dictionary = (const BYTE*)source;
streamPtr->dictSize = (U32)inputSize;
@@ -1080,10 +1052,17 @@
}
+/*! LZ4_saveDict() :
+ * If previously compressed data block is not guaranteed to remain available at its memory location,
+ * save it into a safer place (char* safeBuffer).
+ * Note : you don't need to call LZ4_loadDict() afterwards,
+ * dictionary is immediately usable, you can therefore call LZ4_compress_fast_continue().
+ * Return : saved dictionary size in bytes (necessarily <= dictSize), or 0 if error.
+ */
int LZ4_saveDict (LZ4_stream_t* LZ4_dict, char* safeBuffer, int dictSize)
{
- LZ4_stream_t_internal* dict = (LZ4_stream_t_internal*) LZ4_dict;
- const BYTE* previousDictEnd = dict->dictionary + dict->dictSize;
+ LZ4_stream_t_internal* const dict = &LZ4_dict->internal_donotuse;
+ const BYTE* const previousDictEnd = dict->dictionary + dict->dictSize;
if ((U32)dictSize > 64 KB) dictSize = 64 KB; /* useless to define a dictionary > 64 KB */
if ((U32)dictSize > dict->dictSize) dictSize = dict->dictSize;
@@ -1098,14 +1077,14 @@
-/*******************************
+/*-*****************************
* Decompression functions
*******************************/
-/*
- * This generic decompression function cover all use cases.
- * It shall be instantiated several times, using different sets of directives
- * Note that it is essential this generic function is really inlined,
- * in order to remove useless branches during compilation optimization.
+/*! LZ4_decompress_generic() :
+ * This generic decompression function cover all use cases.
+ * It shall be instantiated several times, using different sets of directives
+ * Note that it is important this generic function is really inlined,
+ * in order to remove useless branches during compilation optimization.
*/
FORCE_INLINE int LZ4_decompress_generic(
const char* const source,
@@ -1117,7 +1096,7 @@
int partialDecoding, /* full, partial */
int targetOutputSize, /* only used if partialDecoding==partial */
int dict, /* noDict, withPrefix64k, usingExtDict */
- const BYTE* const lowPrefix, /* == dest if dict == noDict */
+ const BYTE* const lowPrefix, /* == dest when no prefix */
const BYTE* const dictStart, /* only if dict==usingExtDict */
const size_t dictSize /* note : = 0 if noDict */
)
@@ -1133,53 +1112,45 @@
const BYTE* const lowLimit = lowPrefix - dictSize;
const BYTE* const dictEnd = (const BYTE*)dictStart + dictSize;
- const size_t dec32table[] = {4, 1, 2, 1, 4, 4, 4, 4};
- const size_t dec64table[] = {0, 0, 0, (size_t)-1, 0, 1, 2, 3};
+ const unsigned dec32table[] = {0, 1, 2, 1, 4, 4, 4, 4};
+ const int dec64table[] = {0, 0, 0, -1, 0, 1, 2, 3};
const int safeDecode = (endOnInput==endOnInputSize);
const int checkOffset = ((safeDecode) && (dictSize < (int)(64 KB)));
/* Special cases */
- if ((partialDecoding) && (oexit> oend-MFLIMIT)) oexit = oend-MFLIMIT; /* targetOutputSize too high => decode everything */
+ if ((partialDecoding) && (oexit > oend-MFLIMIT)) oexit = oend-MFLIMIT; /* targetOutputSize too high => decode everything */
if ((endOnInput) && (unlikely(outputSize==0))) return ((inputSize==1) && (*ip==0)) ? 0 : -1; /* Empty output buffer */
if ((!endOnInput) && (unlikely(outputSize==0))) return (*ip==0?1:-1);
-
- /* Main Loop */
- while (1)
- {
- unsigned token;
+ /* Main Loop : decode sequences */
+ while (1) {
size_t length;
const BYTE* match;
+ size_t offset;
/* get literal length */
- token = *ip++;
- if ((length=(token>>ML_BITS)) == RUN_MASK)
- {
+ unsigned const token = *ip++;
+ if ((length=(token>>ML_BITS)) == RUN_MASK) {
unsigned s;
- do
- {
+ do {
s = *ip++;
length += s;
- }
- while (likely((endOnInput)?ip<iend-RUN_MASK:1) && (s==255));
- if ((safeDecode) && unlikely((size_t)(op+length)<(size_t)(op))) goto _output_error; /* overflow detection */
- if ((safeDecode) && unlikely((size_t)(ip+length)<(size_t)(ip))) goto _output_error; /* overflow detection */
+ } while ( likely(endOnInput ? ip<iend-RUN_MASK : 1) & (s==255) );
+ if ((safeDecode) && unlikely((uptrval)(op)+length<(uptrval)(op))) goto _output_error; /* overflow detection */
+ if ((safeDecode) && unlikely((uptrval)(ip)+length<(uptrval)(ip))) goto _output_error; /* overflow detection */
}
/* copy literals */
cpy = op+length;
- if (((endOnInput) && ((cpy>(partialDecoding?oexit:oend-MFLIMIT)) || (ip+length>iend-(2+1+LASTLITERALS))) )
- || ((!endOnInput) && (cpy>oend-COPYLENGTH)))
+ if ( ((endOnInput) && ((cpy>(partialDecoding?oexit:oend-MFLIMIT)) || (ip+length>iend-(2+1+LASTLITERALS))) )
+ || ((!endOnInput) && (cpy>oend-WILDCOPYLENGTH)) )
{
- if (partialDecoding)
- {
+ if (partialDecoding) {
if (cpy > oend) goto _output_error; /* Error : write attempt beyond end of output buffer */
if ((endOnInput) && (ip+length > iend)) goto _output_error; /* Error : read attempt beyond end of input buffer */
- }
- else
- {
+ } else {
if ((!endOnInput) && (cpy != oend)) goto _output_error; /* Error : block decoding must stop exactly there */
if ((endOnInput) && ((ip+length != iend) || (cpy > oend))) goto _output_error; /* Error : input must be consumed */
}
@@ -1192,84 +1163,76 @@
ip += length; op = cpy;
/* get offset */
- match = cpy - LZ4_readLE16(ip); ip+=2;
- if ((checkOffset) && (unlikely(match < lowLimit))) goto _output_error; /* Error : offset outside destination buffer */
+ offset = LZ4_readLE16(ip); ip+=2;
+ match = op - offset;
+ if ((checkOffset) && (unlikely(match < lowLimit))) goto _output_error; /* Error : offset outside buffers */
+ LZ4_write32(op, (U32)offset); /* costs ~1%; silence an msan warning when offset==0 */
/* get matchlength */
length = token & ML_MASK;
- if (length == ML_MASK)
- {
+ if (length == ML_MASK) {
unsigned s;
- do
- {
- if ((endOnInput) && (ip > iend-LASTLITERALS)) goto _output_error;
+ do {
s = *ip++;
+ if ((endOnInput) && (ip > iend-LASTLITERALS)) goto _output_error;
length += s;
} while (s==255);
- if ((safeDecode) && unlikely((size_t)(op+length)<(size_t)op)) goto _output_error; /* overflow detection */
+ if ((safeDecode) && unlikely((uptrval)(op)+length<(uptrval)op)) goto _output_error; /* overflow detection */
}
length += MINMATCH;
/* check external dictionary */
- if ((dict==usingExtDict) && (match < lowPrefix))
- {
+ if ((dict==usingExtDict) && (match < lowPrefix)) {
if (unlikely(op+length > oend-LASTLITERALS)) goto _output_error; /* doesn't respect parsing restriction */
- if (length <= (size_t)(lowPrefix-match))
- {
+ if (length <= (size_t)(lowPrefix-match)) {
/* match can be copied as a single segment from external dictionary */
- match = dictEnd - (lowPrefix-match);
- memmove(op, match, length); op += length;
- }
- else
- {
- /* match encompass external dictionary and current segment */
- size_t copySize = (size_t)(lowPrefix-match);
+ memmove(op, dictEnd - (lowPrefix-match), length);
+ op += length;
+ } else {
+ /* match encompass external dictionary and current block */
+ size_t const copySize = (size_t)(lowPrefix-match);
+ size_t const restSize = length - copySize;
memcpy(op, dictEnd - copySize, copySize);
op += copySize;
- copySize = length - copySize;
- if (copySize > (size_t)(op-lowPrefix)) /* overlap within current segment */
- {
- BYTE* const endOfMatch = op + copySize;
+ if (restSize > (size_t)(op-lowPrefix)) { /* overlap copy */
+ BYTE* const endOfMatch = op + restSize;
const BYTE* copyFrom = lowPrefix;
while (op < endOfMatch) *op++ = *copyFrom++;
- }
- else
- {
- memcpy(op, lowPrefix, copySize);
- op += copySize;
- }
- }
+ } else {
+ memcpy(op, lowPrefix, restSize);
+ op += restSize;
+ } }
continue;
}
- /* copy repeated sequence */
+ /* copy match within block */
cpy = op + length;
- if (unlikely((op-match)<8))
- {
- const size_t dec64 = dec64table[op-match];
+ if (unlikely(offset<8)) {
+ const int dec64 = dec64table[offset];
op[0] = match[0];
op[1] = match[1];
op[2] = match[2];
op[3] = match[3];
- match += dec32table[op-match];
- LZ4_copy4(op+4, match);
- op += 8; match -= dec64;
- } else { LZ4_copy8(op, match); op+=8; match+=8; }
-
- if (unlikely(cpy>oend-12))
- {
- if (cpy > oend-LASTLITERALS) goto _output_error; /* Error : last LASTLITERALS bytes must be literals */
- if (op < oend-8)
- {
- LZ4_wildCopy(op, match, oend-8);
- match += (oend-8) - op;
- op = oend-8;
+ match += dec32table[offset];
+ memcpy(op+4, match, 4);
+ match -= dec64;
+ } else { LZ4_copy8(op, match); match+=8; }
+ op += 8;
+
+ if (unlikely(cpy>oend-12)) {
+ BYTE* const oCopyLimit = oend-(WILDCOPYLENGTH-1);
+ if (cpy > oend-LASTLITERALS) goto _output_error; /* Error : last LASTLITERALS bytes must be literals (uncompressed) */
+ if (op < oCopyLimit) {
+ LZ4_wildCopy(op, match, oCopyLimit);
+ match += oCopyLimit - op;
+ op = oCopyLimit;
}
while (op<cpy) *op++ = *match++;
+ } else {
+ LZ4_copy8(op, match);
+ if (length>16) LZ4_wildCopy(op+8, match+8, cpy);
}
- else
- LZ4_wildCopy(op, match, cpy);
op=cpy; /* correction */
}
@@ -1301,15 +1264,7 @@
}
-/* streaming decompression functions */
-
-typedef struct
-{
- const BYTE* externalDict;
- size_t extDictSize;
- const BYTE* prefixEnd;
- size_t prefixSize;
-} LZ4_streamDecode_t_internal;
+/*===== streaming decompression functions =====*/
/*
* If you prefer dynamic allocation methods,
@@ -1328,16 +1283,16 @@
return 0;
}
-/*
- * LZ4_setStreamDecode
- * Use this function to instruct where to find the dictionary
+/*!
+ * LZ4_setStreamDecode() :
+ * Use this function to instruct where to find the dictionary.
* This function is not necessary if previous data is still available where it was decoded.
* Loading a size of 0 is allowed (same effect as no dictionary).
* Return : 1 if OK, 0 if error
*/
int LZ4_setStreamDecode (LZ4_streamDecode_t* LZ4_streamDecode, const char* dictionary, int dictSize)
{
- LZ4_streamDecode_t_internal* lz4sd = (LZ4_streamDecode_t_internal*) LZ4_streamDecode;
+ LZ4_streamDecode_t_internal* lz4sd = &LZ4_streamDecode->internal_donotuse;
lz4sd->prefixSize = (size_t) dictSize;
lz4sd->prefixEnd = (const BYTE*) dictionary + dictSize;
lz4sd->externalDict = NULL;
@@ -1354,20 +1309,17 @@
*/
int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int compressedSize, int maxOutputSize)
{
- LZ4_streamDecode_t_internal* lz4sd = (LZ4_streamDecode_t_internal*) LZ4_streamDecode;
+ LZ4_streamDecode_t_internal* lz4sd = &LZ4_streamDecode->internal_donotuse;
int result;
- if (lz4sd->prefixEnd == (BYTE*)dest)
- {
+ if (lz4sd->prefixEnd == (BYTE*)dest) {
result = LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize,
endOnInputSize, full, 0,
usingExtDict, lz4sd->prefixEnd - lz4sd->prefixSize, lz4sd->externalDict, lz4sd->extDictSize);
if (result <= 0) return result;
lz4sd->prefixSize += result;
lz4sd->prefixEnd += result;
- }
- else
- {
+ } else {
lz4sd->extDictSize = lz4sd->prefixSize;
lz4sd->externalDict = lz4sd->prefixEnd - lz4sd->extDictSize;
result = LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize,
@@ -1383,22 +1335,19 @@
int LZ4_decompress_fast_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int originalSize)
{
- LZ4_streamDecode_t_internal* lz4sd = (LZ4_streamDecode_t_internal*) LZ4_streamDecode;
+ LZ4_streamDecode_t_internal* lz4sd = &LZ4_streamDecode->internal_donotuse;
int result;
- if (lz4sd->prefixEnd == (BYTE*)dest)
- {
+ if (lz4sd->prefixEnd == (BYTE*)dest) {
result = LZ4_decompress_generic(source, dest, 0, originalSize,
endOnOutputSize, full, 0,
usingExtDict, lz4sd->prefixEnd - lz4sd->prefixSize, lz4sd->externalDict, lz4sd->extDictSize);
if (result <= 0) return result;
lz4sd->prefixSize += originalSize;
lz4sd->prefixEnd += originalSize;
- }
- else
- {
+ } else {
lz4sd->extDictSize = lz4sd->prefixSize;
- lz4sd->externalDict = (BYTE*)dest - lz4sd->extDictSize;
+ lz4sd->externalDict = lz4sd->prefixEnd - lz4sd->extDictSize;
result = LZ4_decompress_generic(source, dest, 0, originalSize,
endOnOutputSize, full, 0,
usingExtDict, (BYTE*)dest, lz4sd->externalDict, lz4sd->extDictSize);
@@ -1422,8 +1371,7 @@
{
if (dictSize==0)
return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, safe, full, 0, noDict, (BYTE*)dest, NULL, 0);
- if (dictStart+dictSize == dest)
- {
+ if (dictStart+dictSize == dest) {
if (dictSize >= (int)(64 KB - 1))
return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, safe, full, 0, withPrefix64k, (BYTE*)dest-64 KB, NULL, 0);
return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, safe, full, 0, noDict, (BYTE*)dest-dictSize, NULL, 0);
@@ -1448,7 +1396,7 @@
}
-/***************************************************
+/*=*************************************************
* Obsolete Functions
***************************************************/
/* obsolete compression functions */
@@ -1473,29 +1421,29 @@
int LZ4_sizeofStreamState() { return LZ4_STREAMSIZE; }
-static void LZ4_init(LZ4_stream_t_internal* lz4ds, BYTE* base)
+static void LZ4_init(LZ4_stream_t* lz4ds, BYTE* base)
{
- MEM_INIT(lz4ds, 0, LZ4_STREAMSIZE);
- lz4ds->bufferStart = base;
+ MEM_INIT(lz4ds, 0, sizeof(LZ4_stream_t));
+ lz4ds->internal_donotuse.bufferStart = base;
}
int LZ4_resetStreamState(void* state, char* inputBuffer)
{
- if ((((size_t)state) & 3) != 0) return 1; /* Error : pointer is not aligned on 4-bytes boundary */
- LZ4_init((LZ4_stream_t_internal*)state, (BYTE*)inputBuffer);
+ if ((((uptrval)state) & 3) != 0) return 1; /* Error : pointer is not aligned on 4-bytes boundary */
+ LZ4_init((LZ4_stream_t*)state, (BYTE*)inputBuffer);
return 0;
}
void* LZ4_create (char* inputBuffer)
{
- void* lz4ds = ALLOCATOR(8, LZ4_STREAMSIZE_U64);
- LZ4_init ((LZ4_stream_t_internal*)lz4ds, (BYTE*)inputBuffer);
+ LZ4_stream_t* lz4ds = (LZ4_stream_t*)ALLOCATOR(8, sizeof(LZ4_stream_t));
+ LZ4_init (lz4ds, (BYTE*)inputBuffer);
return lz4ds;
}
char* LZ4_slideInputBuffer (void* LZ4_Data)
{
- LZ4_stream_t_internal* ctx = (LZ4_stream_t_internal*)LZ4_Data;
+ LZ4_stream_t_internal* ctx = &((LZ4_stream_t*)LZ4_Data)->internal_donotuse;
int dictSize = LZ4_saveDict((LZ4_stream_t*)LZ4_Data, (char*)ctx->bufferStart, 64 KB);
return (char*)(ctx->bufferStart + dictSize);
}
@@ -1513,4 +1461,3 @@
}
#endif /* LZ4_COMMONDEFS_ONLY */
-
diff -urN ClickHouse-1.1.54231-stable.orig/contrib/liblz4/src/lz4hc.c ClickHouse-1.1.54231-stable/contrib/liblz4/src/lz4hc.c
--- ClickHouse-1.1.54231-stable.orig/contrib/liblz4/src/lz4hc.c 2017-05-16 14:07:59.632657802 +0300
+++ ClickHouse-1.1.54231-stable/contrib/liblz4/src/lz4hc.c 2017-05-16 14:09:02.602670264 +0300
@@ -1,6 +1,6 @@
/*
LZ4 HC - High Compression Mode of LZ4
- Copyright (C) 2011-2015, Yann Collet.
+ Copyright (C) 2011-2016, Yann Collet.
BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
@@ -28,27 +28,36 @@
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
You can contact the author at :
- - LZ4 source repository : https://github.com/Cyan4973/lz4
+ - LZ4 source repository : https://github.com/lz4/lz4
- LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c
*/
+/* note : lz4hc is not an independent module, it requires lz4.h/lz4.c for proper compilation */
-
-/**************************************
+/* *************************************
* Tuning Parameter
-**************************************/
-static const int LZ4HC_compressionLevel_default = 9;
+***************************************/
+
+/*!
+ * HEAPMODE :
+ * Select how default compression function will allocate workplace memory,
+ * in stack (0:fastest), or in heap (1:requires malloc()).
+ * Since workplace is rather large, heap mode is recommended.
+ */
+#ifndef LZ4HC_HEAPMODE
+# define LZ4HC_HEAPMODE 1
+#endif
-/**************************************
-* Includes
-**************************************/
-#include <lz4/lz4hc.h>
+/* *************************************
+* Dependency
+***************************************/
+#include "lz4hc.h"
-/**************************************
+/* *************************************
* Local Compiler Options
-**************************************/
+***************************************/
#if defined(__GNUC__)
# pragma GCC diagnostic ignored "-Wunused-function"
#endif
@@ -58,52 +67,24 @@
#endif
-/**************************************
+/* *************************************
* Common LZ4 definition
-**************************************/
+***************************************/
#define LZ4_COMMONDEFS_ONLY
#include "lz4.c"
-/**************************************
+/* *************************************
* Local Constants
-**************************************/
-#define DICTIONARY_LOGSIZE 16
-#define MAXD (1<<DICTIONARY_LOGSIZE)
-#define MAXD_MASK (MAXD - 1)
-
-#define HASH_LOG (DICTIONARY_LOGSIZE-1)
-#define HASHTABLESIZE (1 << HASH_LOG)
-#define HASH_MASK (HASHTABLESIZE - 1)
-
+***************************************/
#define OPTIMAL_ML (int)((ML_MASK-1)+MINMATCH)
-static const int g_maxCompressionLevel = 16;
-
-
-/**************************************
-* Local Types
-**************************************/
-typedef struct
-{
- U32 hashTable[HASHTABLESIZE];
- U16 chainTable[MAXD];
- const BYTE* end; /* next block here to continue on current prefix */
- const BYTE* base; /* All index relative to this position */
- const BYTE* dictBase; /* alternate base for extDict */
- BYTE* inputBuffer; /* deprecated */
- U32 dictLimit; /* below that point, need extDict */
- U32 lowLimit; /* below that point, no more dict */
- U32 nextToUpdate; /* index from which to continue dictionary update */
- U32 compressionLevel;
-} LZ4HC_Data_Structure;
-
/**************************************
* Local Macros
**************************************/
-#define HASH_FUNCTION(i) (((i) * 2654435761U) >> ((MINMATCH*8)-HASH_LOG))
-//#define DELTANEXTU16(p) chainTable[(p) & MAXD_MASK] /* flexible, MAXD dependent */
+#define HASH_FUNCTION(i) (((i) * 2654435761U) >> ((MINMATCH*8)-LZ4HC_HASH_LOG))
+#define DELTANEXTMAXD(p) chainTable[(p) & LZ4HC_MAXD_MASK] /* flexible, LZ4HC_MAXD dependent */
#define DELTANEXTU16(p) chainTable[(U16)(p)] /* faster */
static U32 LZ4HC_hashPtr(const void* ptr) { return HASH_FUNCTION(LZ4_read32(ptr)); }
@@ -113,7 +94,7 @@
/**************************************
* HC Compression
**************************************/
-static void LZ4HC_init (LZ4HC_Data_Structure* hc4, const BYTE* start)
+static void LZ4HC_init (LZ4HC_CCtx_internal* hc4, const BYTE* start)
{
MEM_INIT((void*)hc4->hashTable, 0, sizeof(hc4->hashTable));
MEM_INIT(hc4->chainTable, 0xFF, sizeof(hc4->chainTable));
@@ -127,21 +108,20 @@
/* Update chains up to ip (excluded) */
-FORCE_INLINE void LZ4HC_Insert (LZ4HC_Data_Structure* hc4, const BYTE* ip)
+FORCE_INLINE void LZ4HC_Insert (LZ4HC_CCtx_internal* hc4, const BYTE* ip)
{
- U16* chainTable = hc4->chainTable;
- U32* HashTable = hc4->hashTable;
+ U16* const chainTable = hc4->chainTable;
+ U32* const hashTable = hc4->hashTable;
const BYTE* const base = hc4->base;
- const U32 target = (U32)(ip - base);
+ U32 const target = (U32)(ip - base);
U32 idx = hc4->nextToUpdate;
- while(idx < target)
- {
- U32 h = LZ4HC_hashPtr(base+idx);
- size_t delta = idx - HashTable[h];
+ while (idx < target) {
+ U32 const h = LZ4HC_hashPtr(base+idx);
+ size_t delta = idx - hashTable[h];
if (delta>MAX_DISTANCE) delta = MAX_DISTANCE;
DELTANEXTU16(idx) = (U16)delta;
- HashTable[h] = idx;
+ hashTable[h] = idx;
idx++;
}
@@ -149,7 +129,7 @@
}
-FORCE_INLINE int LZ4HC_InsertAndFindBestMatch (LZ4HC_Data_Structure* hc4, /* Index table will be updated */
+FORCE_INLINE int LZ4HC_InsertAndFindBestMatch (LZ4HC_CCtx_internal* hc4, /* Index table will be updated */
const BYTE* ip, const BYTE* const iLimit,
const BYTE** matchpos,
const int maxNbAttempts)
@@ -161,7 +141,6 @@
const U32 dictLimit = hc4->dictLimit;
const U32 lowLimit = (hc4->lowLimit + 64 KB > (U32)(ip-base)) ? hc4->lowLimit : (U32)(ip - base) - (64 KB - 1);
U32 matchIndex;
- const BYTE* match;
int nbAttempts=maxNbAttempts;
size_t ml=0;
@@ -169,24 +148,19 @@
LZ4HC_Insert(hc4, ip);
matchIndex = HashTable[LZ4HC_hashPtr(ip)];
- while ((matchIndex>=lowLimit) && (nbAttempts))
- {
+ while ((matchIndex>=lowLimit) && (nbAttempts)) {
nbAttempts--;
- if (matchIndex >= dictLimit)
- {
- match = base + matchIndex;
+ if (matchIndex >= dictLimit) {
+ const BYTE* const match = base + matchIndex;
if (*(match+ml) == *(ip+ml)
&& (LZ4_read32(match) == LZ4_read32(ip)))
{
- size_t mlt = LZ4_count(ip+MINMATCH, match+MINMATCH, iLimit) + MINMATCH;
+ size_t const mlt = LZ4_count(ip+MINMATCH, match+MINMATCH, iLimit) + MINMATCH;
if (mlt > ml) { ml = mlt; *matchpos = match; }
}
- }
- else
- {
- match = dictBase + matchIndex;
- if (LZ4_read32(match) == LZ4_read32(ip))
- {
+ } else {
+ const BYTE* const match = dictBase + matchIndex;
+ if (LZ4_read32(match) == LZ4_read32(ip)) {
size_t mlt;
const BYTE* vLimit = ip + (dictLimit - matchIndex);
if (vLimit > iLimit) vLimit = iLimit;
@@ -204,7 +178,7 @@
FORCE_INLINE int LZ4HC_InsertAndGetWiderMatch (
- LZ4HC_Data_Structure* hc4,
+ LZ4HC_CCtx_internal* hc4,
const BYTE* const ip,
const BYTE* const iLowLimit,
const BYTE* const iHighLimit,
@@ -229,38 +203,32 @@
LZ4HC_Insert(hc4, ip);
matchIndex = HashTable[LZ4HC_hashPtr(ip)];
- while ((matchIndex>=lowLimit) && (nbAttempts))
- {
+ while ((matchIndex>=lowLimit) && (nbAttempts)) {
nbAttempts--;
- if (matchIndex >= dictLimit)
- {
+ if (matchIndex >= dictLimit) {
const BYTE* matchPtr = base + matchIndex;
- if (*(iLowLimit + longest) == *(matchPtr - delta + longest))
- if (LZ4_read32(matchPtr) == LZ4_read32(ip))
- {
+ if (*(iLowLimit + longest) == *(matchPtr - delta + longest)) {
+ if (LZ4_read32(matchPtr) == LZ4_read32(ip)) {
int mlt = MINMATCH + LZ4_count(ip+MINMATCH, matchPtr+MINMATCH, iHighLimit);
int back = 0;
- while ((ip+back>iLowLimit)
+ while ((ip+back > iLowLimit)
&& (matchPtr+back > lowPrefixPtr)
&& (ip[back-1] == matchPtr[back-1]))
back--;
mlt -= back;
- if (mlt > longest)
- {
+ if (mlt > longest) {
longest = (int)mlt;
*matchpos = matchPtr+back;
*startpos = ip+back;
}
}
- }
- else
- {
- const BYTE* matchPtr = dictBase + matchIndex;
- if (LZ4_read32(matchPtr) == LZ4_read32(ip))
- {
+ }
+ } else {
+ const BYTE* const matchPtr = dictBase + matchIndex;
+ if (LZ4_read32(matchPtr) == LZ4_read32(ip)) {
size_t mlt;
int back=0;
const BYTE* vLimit = ip + (dictLimit - matchIndex);
@@ -320,8 +288,15 @@
/* Encode MatchLength */
length = (int)(matchLength-MINMATCH);
if ((limitedOutputBuffer) && (*op + (length>>8) + (1 + LASTLITERALS) > oend)) return 1; /* Check output limit */
- if (length>=(int)ML_MASK) { *token+=ML_MASK; length-=ML_MASK; for(; length > 509 ; length-=510) { *(*op)++ = 255; *(*op)++ = 255; } if (length > 254) { length-=255; *(*op)++ = 255; } *(*op)++ = (BYTE)length; }
- else *token += (BYTE)(length);
+ if (length>=(int)ML_MASK) {
+ *token += ML_MASK;
+ length -= ML_MASK;
+ for(; length > 509 ; length-=510) { *(*op)++ = 255; *(*op)++ = 255; }
+ if (length > 254) { length-=255; *(*op)++ = 255; }
+ *(*op)++ = (BYTE)length;
+ } else {
+ *token += (BYTE)(length);
+ }
/* Prepare next loop */
*ip += matchLength;
@@ -330,18 +305,18 @@
return 0;
}
+#include "lz4opt.h"
-static int LZ4HC_compress_generic (
- void* ctxvoid,
- const char* source,
- char* dest,
- int inputSize,
- int maxOutputSize,
- int compressionLevel,
+static int LZ4HC_compress_hashChain (
+ LZ4HC_CCtx_internal* const ctx,
+ const char* const source,
+ char* const dest,
+ int const inputSize,
+ int const maxOutputSize,
+ unsigned maxNbAttempts,
limitedOutput_directive limit
)
{
- LZ4HC_Data_Structure* ctx = (LZ4HC_Data_Structure*) ctxvoid;
const BYTE* ip = (const BYTE*) source;
const BYTE* anchor = ip;
const BYTE* const iend = ip + inputSize;
@@ -351,28 +326,22 @@
BYTE* op = (BYTE*) dest;
BYTE* const oend = op + maxOutputSize;
- unsigned maxNbAttempts;
int ml, ml2, ml3, ml0;
- const BYTE* ref=NULL;
- const BYTE* start2=NULL;
- const BYTE* ref2=NULL;
- const BYTE* start3=NULL;
- const BYTE* ref3=NULL;
+ const BYTE* ref = NULL;
+ const BYTE* start2 = NULL;
+ const BYTE* ref2 = NULL;
+ const BYTE* start3 = NULL;
+ const BYTE* ref3 = NULL;
const BYTE* start0;
const BYTE* ref0;
-
/* init */
- if (compressionLevel > g_maxCompressionLevel) compressionLevel = g_maxCompressionLevel;
- if (compressionLevel < 1) compressionLevel = LZ4HC_compressionLevel_default;
- maxNbAttempts = 1 << (compressionLevel-1);
ctx->end += inputSize;
ip++;
/* Main Loop */
- while (ip < mflimit)
- {
+ while (ip < mflimit) {
ml = LZ4HC_InsertAndFindBestMatch (ctx, ip, matchlimit, (&ref), maxNbAttempts);
if (!ml) { ip++; continue; }
@@ -383,19 +352,16 @@
_Search2:
if (ip+ml < mflimit)
- ml2 = LZ4HC_InsertAndGetWiderMatch(ctx, ip + ml - 2, ip + 1, matchlimit, ml, &ref2, &start2, maxNbAttempts);
+ ml2 = LZ4HC_InsertAndGetWiderMatch(ctx, ip + ml - 2, ip + 0, matchlimit, ml, &ref2, &start2, maxNbAttempts);
else ml2 = ml;
- if (ml2 == ml) /* No better match */
- {
+ if (ml2 == ml) { /* No better match */
if (LZ4HC_encodeSequence(&ip, &op, &anchor, ml, ref, limit, oend)) return 0;
continue;
}
- if (start0 < ip)
- {
- if (start2 < ip + ml0) /* empirical */
- {
+ if (start0 < ip) {
+ if (start2 < ip + ml0) { /* empirical */
ip = start0;
ref = ref0;
ml = ml0;
@@ -403,8 +369,7 @@
}
/* Here, start0==ip */
- if ((start2 - ip) < 3) /* First Match too small : removed */
- {
+ if ((start2 - ip) < 3) { /* First Match too small : removed */
ml = ml2;
ip = start2;
ref =ref2;
@@ -417,15 +382,13 @@
* ml2 > ml1, and
* ip1+3 <= ip2 (usually < ip1+ml1)
*/
- if ((start2 - ip) < OPTIMAL_ML)
- {
+ if ((start2 - ip) < OPTIMAL_ML) {
int correction;
int new_ml = ml;
if (new_ml > OPTIMAL_ML) new_ml = OPTIMAL_ML;
if (ip+new_ml > start2 + ml2 - MINMATCH) new_ml = (int)(start2 - ip) + ml2 - MINMATCH;
correction = new_ml - (int)(start2 - ip);
- if (correction > 0)
- {
+ if (correction > 0) {
start2 += correction;
ref2 += correction;
ml2 -= correction;
@@ -437,8 +400,7 @@
ml3 = LZ4HC_InsertAndGetWiderMatch(ctx, start2 + ml2 - 3, start2, matchlimit, ml2, &ref3, &start3, maxNbAttempts);
else ml3 = ml2;
- if (ml3 == ml2) /* No better match : 2 sequences to encode */
- {
+ if (ml3 == ml2) { /* No better match : 2 sequences to encode */
/* ip & ref are known; Now for ml */
if (start2 < ip+ml) ml = (int)(start2 - ip);
/* Now, encode 2 sequences */
@@ -448,18 +410,14 @@
continue;
}
- if (start3 < ip+ml+3) /* Not enough space for match 2 : remove it */
- {
- if (start3 >= (ip+ml)) /* can write Seq1 immediately ==> Seq2 is removed, so Seq3 becomes Seq1 */
- {
- if (start2 < ip+ml)
- {
+ if (start3 < ip+ml+3) { /* Not enough space for match 2 : remove it */
+ if (start3 >= (ip+ml)) { /* can write Seq1 immediately ==> Seq2 is removed, so Seq3 becomes Seq1 */
+ if (start2 < ip+ml) {
int correction = (int)(ip+ml - start2);
start2 += correction;
ref2 += correction;
ml2 -= correction;
- if (ml2 < MINMATCH)
- {
+ if (ml2 < MINMATCH) {
start2 = start3;
ref2 = ref3;
ml2 = ml3;
@@ -487,23 +445,18 @@
* OK, now we have 3 ascending matches; let's write at least the first one
* ip & ref are known; Now for ml
*/
- if (start2 < ip+ml)
- {
- if ((start2 - ip) < (int)ML_MASK)
- {
+ if (start2 < ip+ml) {
+ if ((start2 - ip) < (int)ML_MASK) {
int correction;
if (ml > OPTIMAL_ML) ml = OPTIMAL_ML;
if (ip + ml > start2 + ml2 - MINMATCH) ml = (int)(start2 - ip) + ml2 - MINMATCH;
correction = ml - (int)(start2 - ip);
- if (correction > 0)
- {
+ if (correction > 0) {
start2 += correction;
ref2 += correction;
ml2 -= correction;
}
- }
- else
- {
+ } else {
ml = (int)(start2 - ip);
}
}
@@ -521,8 +474,7 @@
}
/* Encode Last Literals */
- {
- int lastRun = (int)(iend - anchor);
+ { int lastRun = (int)(iend - anchor);
if ((limit) && (((char*)op - dest) + lastRun + 1 + ((lastRun+255-RUN_MASK)/255) > (U32)maxOutputSize)) return 0; /* Check output limit */
if (lastRun>=(int)RUN_MASK) { *op++=(RUN_MASK<<ML_BITS); lastRun-=RUN_MASK; for(; lastRun > 254 ; lastRun-=255) *op++ = 255; *op++ = (BYTE) lastRun; }
else *op++ = (BYTE)(lastRun<<ML_BITS);
@@ -534,23 +486,64 @@
return (int) (((char*)op)-dest);
}
+static int LZ4HC_getSearchNum(int compressionLevel)
+{
+ switch (compressionLevel) {
+ default: return 0; /* unused */
+ case 11: return 128;
+ case 12: return 1<<10;
+ }
+}
-int LZ4_sizeofStateHC(void) { return sizeof(LZ4HC_Data_Structure); }
+static int LZ4HC_compress_generic (
+ LZ4HC_CCtx_internal* const ctx,
+ const char* const source,
+ char* const dest,
+ int const inputSize,
+ int const maxOutputSize,
+ int compressionLevel,
+ limitedOutput_directive limit
+ )
+{
+ if (compressionLevel < 1) compressionLevel = LZ4HC_CLEVEL_DEFAULT;
+ if (compressionLevel > 9) {
+ switch (compressionLevel) {
+ case 10: return LZ4HC_compress_hashChain(ctx, source, dest, inputSize, maxOutputSize, 1 << (16-1), limit);
+ case 11: ctx->searchNum = LZ4HC_getSearchNum(compressionLevel); return LZ4HC_compress_optimal(ctx, source, dest, inputSize, maxOutputSize, limit, 128, 0);
+ default:
+ case 12: ctx->searchNum = LZ4HC_getSearchNum(compressionLevel); return LZ4HC_compress_optimal(ctx, source, dest, inputSize, maxOutputSize, limit, LZ4_OPT_NUM, 1);
+ }
+ }
+ return LZ4HC_compress_hashChain(ctx, source, dest, inputSize, maxOutputSize, 1 << (compressionLevel-1), limit);
+}
+
+
+int LZ4_sizeofStateHC(void) { return sizeof(LZ4_streamHC_t); }
int LZ4_compress_HC_extStateHC (void* state, const char* src, char* dst, int srcSize, int maxDstSize, int compressionLevel)
{
+ LZ4HC_CCtx_internal* ctx = &((LZ4_streamHC_t*)state)->internal_donotuse;
if (((size_t)(state)&(sizeof(void*)-1)) != 0) return 0; /* Error : state is not aligned for pointers (32 or 64 bits) */
- LZ4HC_init ((LZ4HC_Data_Structure*)state, (const BYTE*)src);
+ LZ4HC_init (ctx, (const BYTE*)src);
if (maxDstSize < LZ4_compressBound(srcSize))
- return LZ4HC_compress_generic (state, src, dst, srcSize, maxDstSize, compressionLevel, limitedOutput);
+ return LZ4HC_compress_generic (ctx, src, dst, srcSize, maxDstSize, compressionLevel, limitedOutput);
else
- return LZ4HC_compress_generic (state, src, dst, srcSize, maxDstSize, compressionLevel, noLimit);
+ return LZ4HC_compress_generic (ctx, src, dst, srcSize, maxDstSize, compressionLevel, noLimit);
}
int LZ4_compress_HC(const char* src, char* dst, int srcSize, int maxDstSize, int compressionLevel)
{
- LZ4HC_Data_Structure state;
- return LZ4_compress_HC_extStateHC(&state, src, dst, srcSize, maxDstSize, compressionLevel);
+#if defined(LZ4HC_HEAPMODE) && LZ4HC_HEAPMODE==1
+ LZ4_streamHC_t* const statePtr = (LZ4_streamHC_t*)malloc(sizeof(LZ4_streamHC_t));
+#else
+ LZ4_streamHC_t state;
+ LZ4_streamHC_t* const statePtr = &state;
+#endif
+ int const cSize = LZ4_compress_HC_extStateHC(statePtr, src, dst, srcSize, maxDstSize, compressionLevel);
+#if defined(LZ4HC_HEAPMODE) && LZ4HC_HEAPMODE==1
+ free(statePtr);
+#endif
+ return cSize;
}
@@ -566,32 +559,38 @@
/* initialization */
void LZ4_resetStreamHC (LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel)
{
- LZ4_STATIC_ASSERT(sizeof(LZ4HC_Data_Structure) <= sizeof(LZ4_streamHC_t)); /* if compilation fails here, LZ4_STREAMHCSIZE must be increased */
- ((LZ4HC_Data_Structure*)LZ4_streamHCPtr)->base = NULL;
- ((LZ4HC_Data_Structure*)LZ4_streamHCPtr)->compressionLevel = (unsigned)compressionLevel;
+ LZ4_STATIC_ASSERT(sizeof(LZ4HC_CCtx_internal) <= sizeof(size_t) * LZ4_STREAMHCSIZE_SIZET); /* if compilation fails here, LZ4_STREAMHCSIZE must be increased */
+ LZ4_streamHCPtr->internal_donotuse.base = NULL;
+ LZ4_streamHCPtr->internal_donotuse.compressionLevel = (unsigned)compressionLevel;
+ LZ4_streamHCPtr->internal_donotuse.searchNum = LZ4HC_getSearchNum(compressionLevel);
}
int LZ4_loadDictHC (LZ4_streamHC_t* LZ4_streamHCPtr, const char* dictionary, int dictSize)
{
- LZ4HC_Data_Structure* ctxPtr = (LZ4HC_Data_Structure*) LZ4_streamHCPtr;
- if (dictSize > 64 KB)
- {
+ LZ4HC_CCtx_internal* ctxPtr = &LZ4_streamHCPtr->internal_donotuse;
+ if (dictSize > 64 KB) {
dictionary += dictSize - 64 KB;
dictSize = 64 KB;
}
LZ4HC_init (ctxPtr, (const BYTE*)dictionary);
- if (dictSize >= 4) LZ4HC_Insert (ctxPtr, (const BYTE*)dictionary +(dictSize-3));
ctxPtr->end = (const BYTE*)dictionary + dictSize;
+ if (ctxPtr->compressionLevel >= LZ4HC_CLEVEL_OPT_MIN)
+ LZ4HC_updateBinTree(ctxPtr, ctxPtr->end - MFLIMIT, ctxPtr->end - LASTLITERALS);
+ else
+ if (dictSize >= 4) LZ4HC_Insert (ctxPtr, ctxPtr->end-3);
return dictSize;
}
/* compression */
-static void LZ4HC_setExternalDict(LZ4HC_Data_Structure* ctxPtr, const BYTE* newBlock)
+static void LZ4HC_setExternalDict(LZ4HC_CCtx_internal* ctxPtr, const BYTE* newBlock)
{
- if (ctxPtr->end >= ctxPtr->base + 4)
- LZ4HC_Insert (ctxPtr, ctxPtr->end-3); /* Referencing remaining dictionary content */
+ if (ctxPtr->compressionLevel >= LZ4HC_CLEVEL_OPT_MIN)
+ LZ4HC_updateBinTree(ctxPtr, ctxPtr->end - MFLIMIT, ctxPtr->end - LASTLITERALS);
+ else
+ if (ctxPtr->end >= ctxPtr->base + 4) LZ4HC_Insert (ctxPtr, ctxPtr->end-3); /* Referencing remaining dictionary content */
+
/* Only one memory segment for extDict, so any previous extDict is lost at this stage */
ctxPtr->lowLimit = ctxPtr->dictLimit;
ctxPtr->dictLimit = (U32)(ctxPtr->end - ctxPtr->base);
@@ -601,34 +600,29 @@
ctxPtr->nextToUpdate = ctxPtr->dictLimit; /* match referencing will resume from there */
}
-static int LZ4_compressHC_continue_generic (LZ4HC_Data_Structure* ctxPtr,
+static int LZ4_compressHC_continue_generic (LZ4_streamHC_t* LZ4_streamHCPtr,
const char* source, char* dest,
int inputSize, int maxOutputSize, limitedOutput_directive limit)
{
+ LZ4HC_CCtx_internal* ctxPtr = &LZ4_streamHCPtr->internal_donotuse;
/* auto-init if forgotten */
- if (ctxPtr->base == NULL)
- LZ4HC_init (ctxPtr, (const BYTE*) source);
+ if (ctxPtr->base == NULL) LZ4HC_init (ctxPtr, (const BYTE*) source);
/* Check overflow */
- if ((size_t)(ctxPtr->end - ctxPtr->base) > 2 GB)
- {
+ if ((size_t)(ctxPtr->end - ctxPtr->base) > 2 GB) {
size_t dictSize = (size_t)(ctxPtr->end - ctxPtr->base) - ctxPtr->dictLimit;
if (dictSize > 64 KB) dictSize = 64 KB;
-
- LZ4_loadDictHC((LZ4_streamHC_t*)ctxPtr, (const char*)(ctxPtr->end) - dictSize, (int)dictSize);
+ LZ4_loadDictHC(LZ4_streamHCPtr, (const char*)(ctxPtr->end) - dictSize, (int)dictSize);
}
/* Check if blocks follow each other */
- if ((const BYTE*)source != ctxPtr->end)
- LZ4HC_setExternalDict(ctxPtr, (const BYTE*)source);
+ if ((const BYTE*)source != ctxPtr->end) LZ4HC_setExternalDict(ctxPtr, (const BYTE*)source);
/* Check overlapping input/dictionary space */
- {
- const BYTE* sourceEnd = (const BYTE*) source + inputSize;
- const BYTE* dictBegin = ctxPtr->dictBase + ctxPtr->lowLimit;
- const BYTE* dictEnd = ctxPtr->dictBase + ctxPtr->dictLimit;
- if ((sourceEnd > dictBegin) && ((const BYTE*)source < dictEnd))
- {
+ { const BYTE* sourceEnd = (const BYTE*) source + inputSize;
+ const BYTE* const dictBegin = ctxPtr->dictBase + ctxPtr->lowLimit;
+ const BYTE* const dictEnd = ctxPtr->dictBase + ctxPtr->dictLimit;
+ if ((sourceEnd > dictBegin) && ((const BYTE*)source < dictEnd)) {
if (sourceEnd > dictEnd) sourceEnd = dictEnd;
ctxPtr->lowLimit = (U32)(sourceEnd - ctxPtr->dictBase);
if (ctxPtr->dictLimit - ctxPtr->lowLimit < 4) ctxPtr->lowLimit = ctxPtr->dictLimit;
@@ -641,9 +635,9 @@
int LZ4_compress_HC_continue (LZ4_streamHC_t* LZ4_streamHCPtr, const char* source, char* dest, int inputSize, int maxOutputSize)
{
if (maxOutputSize < LZ4_compressBound(inputSize))
- return LZ4_compressHC_continue_generic ((LZ4HC_Data_Structure*)LZ4_streamHCPtr, source, dest, inputSize, maxOutputSize, limitedOutput);
+ return LZ4_compressHC_continue_generic (LZ4_streamHCPtr, source, dest, inputSize, maxOutputSize, limitedOutput);
else
- return LZ4_compressHC_continue_generic ((LZ4HC_Data_Structure*)LZ4_streamHCPtr, source, dest, inputSize, maxOutputSize, noLimit);
+ return LZ4_compressHC_continue_generic (LZ4_streamHCPtr, source, dest, inputSize, maxOutputSize, noLimit);
}
@@ -651,14 +645,13 @@
int LZ4_saveDictHC (LZ4_streamHC_t* LZ4_streamHCPtr, char* safeBuffer, int dictSize)
{
- LZ4HC_Data_Structure* streamPtr = (LZ4HC_Data_Structure*)LZ4_streamHCPtr;
- int prefixSize = (int)(streamPtr->end - (streamPtr->base + streamPtr->dictLimit));
+ LZ4HC_CCtx_internal* const streamPtr = &LZ4_streamHCPtr->internal_donotuse;
+ int const prefixSize = (int)(streamPtr->end - (streamPtr->base + streamPtr->dictLimit));
if (dictSize > 64 KB) dictSize = 64 KB;
if (dictSize < 4) dictSize = 0;
if (dictSize > prefixSize) dictSize = prefixSize;
memmove(safeBuffer, streamPtr->end - dictSize, dictSize);
- {
- U32 endIndex = (U32)(streamPtr->end - streamPtr->base);
+ { U32 const endIndex = (U32)(streamPtr->end - streamPtr->base);
streamPtr->end = (const BYTE*)safeBuffer + dictSize;
streamPtr->base = streamPtr->end - endIndex;
streamPtr->dictLimit = endIndex - dictSize;
@@ -672,8 +665,8 @@
/***********************************
* Deprecated Functions
***********************************/
+/* These functions currently generate deprecation warnings */
/* Deprecated compression functions */
-/* These functions are planned to start generate warnings by r131 approximately */
int LZ4_compressHC(const char* src, char* dst, int srcSize) { return LZ4_compress_HC (src, dst, srcSize, LZ4_compressBound(srcSize), 0); }
int LZ4_compressHC_limitedOutput(const char* src, char* dst, int srcSize, int maxDstSize) { return LZ4_compress_HC(src, dst, srcSize, maxDstSize, 0); }
int LZ4_compressHC2(const char* src, char* dst, int srcSize, int cLevel) { return LZ4_compress_HC (src, dst, srcSize, LZ4_compressBound(srcSize), cLevel); }
@@ -687,45 +680,41 @@
/* Deprecated streaming functions */
-/* These functions currently generate deprecation warnings */
int LZ4_sizeofStreamStateHC(void) { return LZ4_STREAMHCSIZE; }
int LZ4_resetStreamStateHC(void* state, char* inputBuffer)
{
+ LZ4HC_CCtx_internal *ctx = &((LZ4_streamHC_t*)state)->internal_donotuse;
if ((((size_t)state) & (sizeof(void*)-1)) != 0) return 1; /* Error : pointer is not aligned for pointer (32 or 64 bits) */
- LZ4HC_init((LZ4HC_Data_Structure*)state, (const BYTE*)inputBuffer);
- ((LZ4HC_Data_Structure*)state)->inputBuffer = (BYTE*)inputBuffer;
+ LZ4HC_init(ctx, (const BYTE*)inputBuffer);
+ ctx->inputBuffer = (BYTE*)inputBuffer;
return 0;
}
void* LZ4_createHC (char* inputBuffer)
{
- void* hc4 = ALLOCATOR(1, sizeof(LZ4HC_Data_Structure));
+ LZ4_streamHC_t* hc4 = (LZ4_streamHC_t*)ALLOCATOR(1, sizeof(LZ4_streamHC_t));
if (hc4 == NULL) return NULL; /* not enough memory */
- LZ4HC_init ((LZ4HC_Data_Structure*)hc4, (const BYTE*)inputBuffer);
- ((LZ4HC_Data_Structure*)hc4)->inputBuffer = (BYTE*)inputBuffer;
+ LZ4HC_init (&hc4->internal_donotuse, (const BYTE*)inputBuffer);
+ hc4->internal_donotuse.inputBuffer = (BYTE*)inputBuffer;
return hc4;
}
-int LZ4_freeHC (void* LZ4HC_Data)
-{
- FREEMEM(LZ4HC_Data);
- return (0);
-}
+int LZ4_freeHC (void* LZ4HC_Data) { FREEMEM(LZ4HC_Data); return 0; }
int LZ4_compressHC2_continue (void* LZ4HC_Data, const char* source, char* dest, int inputSize, int compressionLevel)
{
- return LZ4HC_compress_generic (LZ4HC_Data, source, dest, inputSize, 0, compressionLevel, noLimit);
+ return LZ4HC_compress_generic (&((LZ4_streamHC_t*)LZ4HC_Data)->internal_donotuse, source, dest, inputSize, 0, compressionLevel, noLimit);
}
int LZ4_compressHC2_limitedOutput_continue (void* LZ4HC_Data, const char* source, char* dest, int inputSize, int maxOutputSize, int compressionLevel)
{
- return LZ4HC_compress_generic (LZ4HC_Data, source, dest, inputSize, maxOutputSize, compressionLevel, limitedOutput);
+ return LZ4HC_compress_generic (&((LZ4_streamHC_t*)LZ4HC_Data)->internal_donotuse, source, dest, inputSize, maxOutputSize, compressionLevel, limitedOutput);
}
char* LZ4_slideInputBufferHC(void* LZ4HC_Data)
{
- LZ4HC_Data_Structure* hc4 = (LZ4HC_Data_Structure*)LZ4HC_Data;
- int dictSize = LZ4_saveDictHC((LZ4_streamHC_t*)LZ4HC_Data, (char*)(hc4->inputBuffer), 64 KB);
+ LZ4HC_CCtx_internal* const hc4 = &((LZ4_streamHC_t*)LZ4HC_Data)->internal_donotuse;
+ int const dictSize = LZ4_saveDictHC((LZ4_streamHC_t*)LZ4HC_Data, (char*)(hc4->inputBuffer), 64 KB);
return (char*)(hc4->inputBuffer + dictSize);
}
diff -urN ClickHouse-1.1.54231-stable.orig/dbms/src/IO/CompressedWriteBuffer.cpp ClickHouse-1.1.54231-stable/dbms/src/IO/CompressedWriteBuffer.cpp
--- ClickHouse-1.1.54231-stable.orig/dbms/src/IO/CompressedWriteBuffer.cpp 2017-05-16 14:07:59.752657816 +0300
+++ ClickHouse-1.1.54231-stable/dbms/src/IO/CompressedWriteBuffer.cpp 2017-05-16 14:08:40.202664661 +0300
@@ -70,15 +70,18 @@
compressed_buffer[0] = static_cast<UInt8>(CompressionMethodByte::LZ4);
if (method == CompressionMethod::LZ4)
- compressed_size = header_size + LZ4_compress(
+ compressed_size = header_size + LZ4_compress_default(
working_buffer.begin(),
&compressed_buffer[header_size],
- uncompressed_size);
+ uncompressed_size,
+ LZ4_COMPRESSBOUND(uncompressed_size));
else
- compressed_size = header_size + LZ4_compressHC(
+ compressed_size = header_size + LZ4_compress_HC(
working_buffer.begin(),
&compressed_buffer[header_size],
- uncompressed_size);
+ uncompressed_size,
+ LZ4_COMPRESSBOUND(uncompressed_size),
+ 0);
UInt32 compressed_size_32 = compressed_size;
UInt32 uncompressed_size_32 = uncompressed_size;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment