++THIS IS FREE AND UNENCUMBERED SOFTWARE EXPLICITLY AND OVERTLY RELEASED AND
++CONTRIBUTED TO THE PUBLIC DOMAIN, PERMANENTLY, IRREVOCABLY AND UNCONDITIONALLY
++WAIVING ANY AND ALL CLAIM OF COPYRIGHT, IN PERPETUITY ON SEPTEMBER 15, 2020.
+
+-Permission is hereby granted, free of charge, to any person obtaining a copy
+-of this software and associated documentation files (the "Software"), to deal
+-in the Software without restriction, including without limitation the rights
+-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+-copies of the Software, and to permit persons to whom the Software is
+-furnished to do so, subject to the following conditions:
++1. FALLBACK CLAUSES
+
+-The above copyright notice and this permission notice shall be included in all
+-copies or substantial portions of the Software.
++THIS SOFTWARE MAY BE FREELY USED, DERIVED FROM, EXECUTED, LINKED WITH, MODIFIED
++AND DISTRIBUTED FOR ANY PURPOSE, COMMERCIAL OR NON-COMMERCIAL, BY ANYONE, FOR
++ANY REASON, WITH NO ATTRIBUTION, IN PERPETUITY.
++
++THE AUTHOR OR AUTHORS OF THIS WORK HEREBY OVERTLY, FULLY, PERMANENTLY,
++IRREVOCABLY AND UNCONDITIONALLY FORFEITS AND WAIVES ALL CLAIM OF COPYRIGHT
++(ECONOMIC AND MORAL), ANY AND ALL RIGHTS OF INTEGRITY, AND ANY AND ALL RIGHTS OF
++ATTRIBUTION. ANYONE IS FREE TO COPY, MODIFY, ENHANCE, OPTIMIZE, PUBLISH, USE,
++COMPILE, DECOMPILE, ASSEMBLE, DISASSEMBLE, DOWNLOAD, UPLOAD, TRANSMIT, RECEIVE,
++SELL, FORK, DERIVE FROM, LINK, LINK TO, CALL, REFERENCE, WRAP, THUNK, ENCODE,
++ENCRYPT, TRANSFORM, STORE, RETRIEVE, DISTORT, DESTROY, RENAME, DELETE,
++BROADCAST, OR DISTRIBUTE THIS SOFTWARE, EITHER IN SOURCE CODE FORM, IN A
++TRANSLATED FORM, AS A LIBRARY, AS TEXT, IN PRINT, OR AS A COMPILED BINARY OR
++EXECUTABLE PROGRAM, OR IN DIGITAL FORM, OR IN ANALOG FORM, OR IN PHYSICAL FORM,
++OR IN ANY OTHER REPRESENTATION, FOR ANY PURPOSE, COMMERCIAL OR NON-COMMERCIAL,
++AND BY ANY MEANS, WITH NO ATTRIBUTION, IN PERPETUITY.
++
++2. ANTI-COPYRIGHT WAIVER AND STATEMENT OF INTENT
++
++IN JURISDICTIONS THAT RECOGNIZE COPYRIGHT LAWS, THE AUTHOR OR AUTHORS OF THIS
++SOFTWARE OVERTLY, FULLY, PERMANENTLY, IRREVOCABLY AND UNCONDITIONALLY DEDICATE,
++FORFEIT, AND WAIVE ANY AND ALL COPYRIGHT INTEREST IN THE SOFTWARE TO THE PUBLIC
++DOMAIN. WE MAKE THIS DEDICATION AND WAIVER FOR THE BENEFIT OF THE PUBLIC AT
++LARGE AND TO THE DETRIMENT OF OUR HEIRS AND SUCCESSORS. WE INTEND THIS
++DEDICATION AND WAIVER TO BE AN OVERT ACT OF RELINQUISHMENT IN PERPETUITY OF ALL
++PRESENT AND FUTURE RIGHTS TO THIS SOFTWARE UNDER COPYRIGHT LAW. WE INTEND THIS
++SOFTWARE TO BE FREELY USED, COMPILED, EXECUTED, MODIFIED, PUBLISHED, DERIVED
++FROM, OR DISTRIBUTED BY ANYONE, FOR ANY COMMERCIAL OR NON-COMMERCIAL USE, WITH
++NO ATTRIBUTION, IN PERPETUITY.
++
++3. NO WARRANTY CLAUSE
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+-SOFTWARE.
++IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
++FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR OR
++AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
++ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
++WITH THE SOFTWARE, OR DERIVING FROM THE SOFTWARE, OR LINKING WITH THE SOFTWARE,
++OR CALLING THE SOFTWARE, OR EXECUTING THE SOFTWARE, OR THE USE OR OTHER DEALINGS
++IN THE SOFTWARE.
++
++4. FINAL ANTI-COPYRIGHT AND INTENT FALLBACK CLAUSE
+
++SHOULD ANY PART OF THIS PUBLIC DOMAIN DECLARATION, OR THE FALLBACK CLAUSES, OR
++THE ANTI-COPYRIGHT WAIVER FOR ANY REASON BE JUDGED LEGALLY INVALID OR
++INEFFECTIVE UNDER APPLICABLE LAW, THEN THE PUBLIC DOMAIN DECLARATION, THE
++FALLBACK CLAUSES, AND ANTI-COPYRIGHT WAIVER SHALL BE PRESERVED TO THE MAXIMUM
++EXTENT PERMITTED BY LAW TAKING INTO ACCOUNT THE ABOVE STATEMENT OF INTENT.
+diff --git a/README.md b/README.md
+index 50a8d84..e465ef2 100644
+--- a/README.md
++++ b/README.md
+@@ -1,12 +1,14 @@
+ LZHAM - Lossless Data Compression Codec
+ =============
+
+-Copyright (c) 2009-2015 Richard Geldreich, Jr. - richgel99@gmail.com - MIT License
++Public Domain (see LICENSE)
+
+ LZHAM is a lossless data compression codec written in C/C++ (specifically C++03), with a compression ratio similar to LZMA but with 1.5x-8x faster decompression speed. It officially supports Linux x86/x64, Windows x86/x64,
+ OSX, and iOS, with Android support on the way.
+
+-Some slightly out of date API documentation is here (I'll be migrating this to github): https://code.google.com/p/lzham/wiki/API_Docs
++An improved version of LZHAM, with better compression, is [here](https://github.com/richgel999/lzham_codec_devel).
++
++The old alpha version of LZHAM (bitstream incompatible with the v1.x release) is here: https://github.com/richgel999/lzham_alpha
+
+ Introduction
+
+diff --git a/example4/cfile_stream.cpp b/example4/cfile_stream.cpp
+index b42a8bd..1b84e87 100644
+--- a/example4/cfile_stream.cpp
++++ b/example4/cfile_stream.cpp
+@@ -1,5 +1,5 @@
+ // File: cfile_stream.cpp
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #include "cfile_stream.h"
+
+ namespace lzham_ex
+diff --git a/example4/cfile_stream.h b/example4/cfile_stream.h
+index 4e206a1..c1eb7e0 100644
+--- a/example4/cfile_stream.h
++++ b/example4/cfile_stream.h
+@@ -1,5 +1,5 @@
+ // File: cfile_stream.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+ #include "data_stream.h"
+ #include
+diff --git a/example4/comp_stream.cpp b/example4/comp_stream.cpp
+index 42ce24a..77427c3 100644
+--- a/example4/comp_stream.cpp
++++ b/example4/comp_stream.cpp
+@@ -1,5 +1,5 @@
+ // File: comp_stream.cpp
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #include "comp_stream.h"
+
+ namespace lzham_ex
+@@ -95,8 +95,8 @@ namespace lzham_ex
+ if (!out_buf_size)
+ return true;
+
+- assert(out_buf_size <= UINT16_MAX);
+- assert(cBufSize <= UINT16_MAX);
++ assert(out_buf_size <= LZHAM_UINT16_MAX);
++ assert(cBufSize <= LZHAM_UINT16_MAX);
+
+ if (!m_pOutput_stream->is_seekable())
+ {
+@@ -385,7 +385,7 @@ namespace lzham_ex
+ }
+ }
+
+- m_buf.resize(UINT16_MAX);
++ m_buf.resize(LZHAM_UINT16_MAX);
+
+ m_opened = true;
+
+diff --git a/example4/comp_stream.h b/example4/comp_stream.h
+index fa9224f..5412beb 100644
+--- a/example4/comp_stream.h
++++ b/example4/comp_stream.h
+@@ -1,5 +1,5 @@
+ // File: comp_stream.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #include "data_stream.h"
+
+ #include "lzham.h"
+diff --git a/example4/data_stream.cpp b/example4/data_stream.cpp
+index 9d35945..b0e58f9 100644
+--- a/example4/data_stream.cpp
++++ b/example4/data_stream.cpp
+@@ -1,5 +1,5 @@
+ // File: data_stream.cpp
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #include "data_stream.h"
+ #include
+
+diff --git a/example4/data_stream.h b/example4/data_stream.h
+index b013b7e..89d2922 100644
+--- a/example4/data_stream.h
++++ b/example4/data_stream.h
+@@ -1,5 +1,5 @@
+ // File: data_stream.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+ #include "stream_common.h"
+
+@@ -12,8 +12,8 @@ namespace lzham_ex
+ cDataStreamSeekable = 4
+ };
+
+- const int64 DATA_STREAM_SIZE_UNKNOWN = INT64_MAX;
+- const int64 DATA_STREAM_SIZE_INFINITE = UINT64_MAX;
++ const int64 DATA_STREAM_SIZE_UNKNOWN = LZHAM_INT64_MAX;
++ const int64 DATA_STREAM_SIZE_INFINITE = LZHAM_UINT64_MAX;
+
+ class data_stream
+ {
+diff --git a/example4/data_stream_serializer.h b/example4/data_stream_serializer.h
+index 9408681..7be64db 100644
+--- a/example4/data_stream_serializer.h
++++ b/example4/data_stream_serializer.h
+@@ -1,5 +1,5 @@
+ // File: data_stream_serializer.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+ #include "data_stream.h"
+
+diff --git a/example4/dynamic_stream.cpp b/example4/dynamic_stream.cpp
+index 0f15170..0bd1286 100644
+--- a/example4/dynamic_stream.cpp
++++ b/example4/dynamic_stream.cpp
+@@ -1,5 +1,5 @@
+ // File: dynamic_stream.cpp
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #include "dynamic_stream.h"
+
+ namespace lzham_ex
+diff --git a/example4/dynamic_stream.h b/example4/dynamic_stream.h
+index 66c07c3..6160dfe 100644
+--- a/example4/dynamic_stream.h
++++ b/example4/dynamic_stream.h
+@@ -1,5 +1,5 @@
+ // File: dynamic_stream.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+ #include "data_stream.h"
+
+diff --git a/example4/mem_stream.cpp b/example4/mem_stream.cpp
+index 4e300b3..2ddb16d 100644
+--- a/example4/mem_stream.cpp
++++ b/example4/mem_stream.cpp
+@@ -1,5 +1,5 @@
+ // File: mem_stream.cpp
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #include "mem_stream.h"
+
+ namespace lzham_ex
+diff --git a/example4/mem_stream.h b/example4/mem_stream.h
+index d67ffe3..d8c67bc 100644
+--- a/example4/mem_stream.h
++++ b/example4/mem_stream.h
+@@ -1,5 +1,5 @@
+ // File: mem_stream.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+ #include "data_stream.h"
+
+diff --git a/example4/stream_common.h b/example4/stream_common.h
+index 54f4a3a..a5b0f2c 100644
+--- a/example4/stream_common.h
++++ b/example4/stream_common.h
+@@ -1,5 +1,5 @@
+ // File: stream_common.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+
+ #include
+@@ -32,12 +32,12 @@ namespace lzham_ex
+ typedef signed __int64 int64;
+ typedef unsigned __int64 uint64;
+
+- const uint16 UINT16_MIN = 0;
+- const uint16 UINT16_MAX = 0xFFFFU;
+- const uint64 UINT64_MIN = 0;
+- const uint64 UINT64_MAX = 0xFFFFFFFFFFFFFFFFULL; //0xFFFFFFFFFFFFFFFFui64;
+- const int64 INT64_MIN = (int64)0x8000000000000000ULL; //(-9223372036854775807i64 - 1);
+- const int64 INT64_MAX = (int64)0x7FFFFFFFFFFFFFFFULL; //9223372036854775807i64;
++ const uint16 LZHAM_UINT16_MIN = 0;
++ const uint16 LZHAM_UINT16_MAX = 0xFFFFU;
++ const uint64 LZHAM_UINT64_MIN = 0;
++ const uint64 LZHAM_UINT64_MAX = 0xFFFFFFFFFFFFFFFFULL; //0xFFFFFFFFFFFFFFFFui64;
++ const int64 LZHAM_INT64_MIN = (int64)0x8000000000000000ULL; //(-9223372036854775807i64 - 1);
++ const int64 LZHAM_INT64_MAX = (int64)0x7FFFFFFFFFFFFFFFULL; //9223372036854775807i64;
+
+ template inline void zero_object(T& obj) { memset(&obj, 0, sizeof(obj)); }
+ } // namespace lzham_ex
+diff --git a/include/lzham.h b/include/lzham.h
+index 2c2cf15..2030fc9 100644
+--- a/include/lzham.h
++++ b/include/lzham.h
+@@ -1,5 +1,5 @@
+ // File: lzham.h - Copyright (c) 2009-2012 Richard Geldreich, Jr.
+-// LZHAM uses the MIT License. See Copyright Notice and license at the end of this file.
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of this file.
+ //
+ // This is the main header file, includable from C or C++ files, which defines all the publically available API's, structs, and types used by the LZHAM codec.
+ //
+@@ -757,25 +757,61 @@ public:
+
+ #endif // #ifndef __LZHAM_H__
+
+-// Copyright (c) 2009-2012 Richard Geldreich, Jr.
+-//
+-// LZHAM uses the MIT License:
+-//
+-// Permission is hereby granted, free of charge, to any person obtaining a copy
+-// of this software and associated documentation files (the "Software"), to deal
+-// in the Software without restriction, including without limitation the rights
+-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+-// copies of the Software, and to permit persons to whom the Software is
+-// furnished to do so, subject to the following conditions:
+-//
+-// The above copyright notice and this permission notice shall be included in
+-// all copies or substantial portions of the Software.
+-//
+-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+-// THE SOFTWARE.
+-
++/*
++ THIS SOFTWARE IS IN THE PUBLIC DOMAIN
++
++ THIS IS FREE AND UNENCUMBERED SOFTWARE EXPLICITLY AND OVERTLY RELEASED AND
++ CONTRIBUTED TO THE PUBLIC DOMAIN, PERMANENTLY, IRREVOCABLY AND UNCONDITIONALLY
++ WAIVING ANY AND ALL CLAIM OF COPYRIGHT, IN PERPETUITY ON SEPTEMBER 15, 2020.
++
++ 1. FALLBACK CLAUSES
++
++ THIS SOFTWARE MAY BE FREELY USED, DERIVED FROM, EXECUTED, LINKED WITH, MODIFIED
++ AND DISTRIBUTED FOR ANY PURPOSE, COMMERCIAL OR NON-COMMERCIAL, BY ANYONE, FOR
++ ANY REASON, WITH NO ATTRIBUTION, IN PERPETUITY.
++
++ THE AUTHOR OR AUTHORS OF THIS WORK HEREBY OVERTLY, FULLY, PERMANENTLY,
++ IRREVOCABLY AND UNCONDITIONALLY FORFEITS AND WAIVES ALL CLAIM OF COPYRIGHT
++ (ECONOMIC AND MORAL), ANY AND ALL RIGHTS OF INTEGRITY, AND ANY AND ALL RIGHTS OF
++ ATTRIBUTION. ANYONE IS FREE TO COPY, MODIFY, ENHANCE, OPTIMIZE, PUBLISH, USE,
++ COMPILE, DECOMPILE, ASSEMBLE, DISASSEMBLE, DOWNLOAD, UPLOAD, TRANSMIT, RECEIVE,
++ SELL, FORK, DERIVE FROM, LINK, LINK TO, CALL, REFERENCE, WRAP, THUNK, ENCODE,
++ ENCRYPT, TRANSFORM, STORE, RETRIEVE, DISTORT, DESTROY, RENAME, DELETE,
++ BROADCAST, OR DISTRIBUTE THIS SOFTWARE, EITHER IN SOURCE CODE FORM, IN A
++ TRANSLATED FORM, AS A LIBRARY, AS TEXT, IN PRINT, OR AS A COMPILED BINARY OR
++ EXECUTABLE PROGRAM, OR IN DIGITAL FORM, OR IN ANALOG FORM, OR IN PHYSICAL FORM,
++ OR IN ANY OTHER REPRESENTATION, FOR ANY PURPOSE, COMMERCIAL OR NON-COMMERCIAL,
++ AND BY ANY MEANS, WITH NO ATTRIBUTION, IN PERPETUITY.
++
++ 2. ANTI-COPYRIGHT WAIVER AND STATEMENT OF INTENT
++
++ IN JURISDICTIONS THAT RECOGNIZE COPYRIGHT LAWS, THE AUTHOR OR AUTHORS OF THIS
++ SOFTWARE OVERTLY, FULLY, PERMANENTLY, IRREVOCABLY AND UNCONDITIONALLY DEDICATE,
++ FORFEIT, AND WAIVE ANY AND ALL COPYRIGHT INTEREST IN THE SOFTWARE TO THE PUBLIC
++ DOMAIN. WE MAKE THIS DEDICATION AND WAIVER FOR THE BENEFIT OF THE PUBLIC AT
++ LARGE AND TO THE DETRIMENT OF OUR HEIRS AND SUCCESSORS. WE INTEND THIS
++ DEDICATION AND WAIVER TO BE AN OVERT ACT OF RELINQUISHMENT IN PERPETUITY OF ALL
++ PRESENT AND FUTURE RIGHTS TO THIS SOFTWARE UNDER COPYRIGHT LAW. WE INTEND THIS
++ SOFTWARE TO BE FREELY USED, COMPILED, EXECUTED, MODIFIED, PUBLISHED, DERIVED
++ FROM, OR DISTRIBUTED BY ANYONE, FOR ANY COMMERCIAL OR NON-COMMERCIAL USE, WITH
++ NO ATTRIBUTION, IN PERPETUITY.
++
++ 3. NO WARRANTY CLAUSE
++
++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
++ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR OR
++ AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
++ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
++ WITH THE SOFTWARE, OR DERIVING FROM THE SOFTWARE, OR LINKING WITH THE SOFTWARE,
++ OR CALLING THE SOFTWARE, OR EXECUTING THE SOFTWARE, OR THE USE OR OTHER DEALINGS
++ IN THE SOFTWARE.
++
++ 4. FINAL ANTI-COPYRIGHT AND INTENT FALLBACK CLAUSE
++
++ SHOULD ANY PART OF THIS PUBLIC DOMAIN DECLARATION, OR THE FALLBACK CLAUSES, OR
++ THE ANTI-COPYRIGHT WAIVER FOR ANY REASON BE JUDGED LEGALLY INVALID OR
++ INEFFECTIVE UNDER APPLICABLE LAW, THEN THE PUBLIC DOMAIN DECLARATION, THE
++ FALLBACK CLAUSES, AND ANTI-COPYRIGHT WAIVER SHALL BE PRESERVED TO THE MAXIMUM
++ EXTENT PERMITTED BY LAW TAKING INTO ACCOUNT THE ABOVE STATEMENT OF INTENT.
++*/
+diff --git a/lzhamcomp/lzham_comp.h b/lzhamcomp/lzham_comp.h
+index 88652d9..50af743 100644
+--- a/lzhamcomp/lzham_comp.h
++++ b/lzhamcomp/lzham_comp.h
+@@ -1,5 +1,5 @@
+ // File: lzham_comp.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+ #include "lzham.h"
+
+diff --git a/lzhamcomp/lzham_lzbase.cpp b/lzhamcomp/lzham_lzbase.cpp
+index a43a318..afeeb7e 100644
+--- a/lzhamcomp/lzham_lzbase.cpp
++++ b/lzhamcomp/lzham_lzbase.cpp
+@@ -1,5 +1,5 @@
+ // File: lzham_lzbase.cpp
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #include "lzham_core.h"
+ #include "lzham_lzbase.h"
+
+diff --git a/lzhamcomp/lzham_lzbase.h b/lzhamcomp/lzham_lzbase.h
+index 073175d..73ac9ee 100644
+--- a/lzhamcomp/lzham_lzbase.h
++++ b/lzhamcomp/lzham_lzbase.h
+@@ -1,5 +1,5 @@
+ // File: lzham_lzbase.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+
+ #include "lzham_lzdecompbase.h"
+diff --git a/lzhamcomp/lzham_lzcomp.cpp b/lzhamcomp/lzham_lzcomp.cpp
+index 5081134..32170c5 100644
+--- a/lzhamcomp/lzham_lzcomp.cpp
++++ b/lzhamcomp/lzham_lzcomp.cpp
+@@ -1,5 +1,5 @@
+ // File: lzham_lzcomp.cpp
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #include "lzham_core.h"
+ #include "lzham.h"
+ #include "lzham_comp.h"
+@@ -315,7 +315,7 @@ namespace lzham
+
+ if (sizeof(size_t) > sizeof(uint32))
+ {
+- if (src_len > UINT32_MAX)
++ if (src_len > LZHAM_UINT32_MAX)
+ return LZHAM_COMP_STATUS_INVALID_PARAMETER;
+ }
+
+diff --git a/lzhamcomp/lzham_lzcomp_internal.cpp b/lzhamcomp/lzham_lzcomp_internal.cpp
+index 27df701..5f44c5b 100644
+--- a/lzhamcomp/lzham_lzcomp_internal.cpp
++++ b/lzhamcomp/lzham_lzcomp_internal.cpp
+@@ -1,5 +1,5 @@
+ // File: lzham_lzcomp_internal.cpp
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #include "lzham_core.h"
+ #include "lzham_lzcomp_internal.h"
+ #include "lzham_checksum.h"
+diff --git a/lzhamcomp/lzham_lzcomp_internal.h b/lzhamcomp/lzham_lzcomp_internal.h
+index 8036b26..01b3ba3 100644
+--- a/lzhamcomp/lzham_lzcomp_internal.h
++++ b/lzhamcomp/lzham_lzcomp_internal.h
+@@ -1,5 +1,5 @@
+ // File: lzham_lzcomp_internal.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+ #include "lzham_match_accel.h"
+ #include "lzham_symbol_codec.h"
+diff --git a/lzhamcomp/lzham_lzcomp_state.cpp b/lzhamcomp/lzham_lzcomp_state.cpp
+index e989b62..39013e6 100644
+--- a/lzhamcomp/lzham_lzcomp_state.cpp
++++ b/lzhamcomp/lzham_lzcomp_state.cpp
+@@ -1,5 +1,5 @@
+ // File: lzham_lzcomp_state.cpp
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #include "lzham_core.h"
+ #include "lzham_lzcomp_internal.h"
+
+diff --git a/lzhamcomp/lzham_match_accel.cpp b/lzhamcomp/lzham_match_accel.cpp
+index 8554653..da5ed33 100644
+--- a/lzhamcomp/lzham_match_accel.cpp
++++ b/lzhamcomp/lzham_match_accel.cpp
+@@ -1,5 +1,5 @@
+ // File: lzham_match_accel.cpp
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #include "lzham_core.h"
+ #include "lzham_match_accel.h"
+ #include "lzham_timer.h"
+@@ -153,7 +153,7 @@ namespace lzham
+ c0 = c1;
+ c1 = c2;
+
+- LZHAM_ASSERT(!m_hash_thread_index.size() || (m_hash_thread_index[h] != UINT8_MAX));
++ LZHAM_ASSERT(!m_hash_thread_index.size() || (m_hash_thread_index[h] != LZHAM_UINT8_MAX));
+
+ // Only process those strings that this worker thread was assigned to - this allows us to manipulate multiple trees in parallel with no worries about synchronization.
+ if (m_hash_thread_index.size() && (m_hash_thread_index[h] != thread_index))
+@@ -449,7 +449,7 @@ namespace lzham
+
+ pDict++;
+
+- if (m_hash_thread_index[t] == UINT8_MAX)
++ if (m_hash_thread_index[t] == LZHAM_UINT8_MAX)
+ {
+ num_unique_trigrams++;
+
+diff --git a/lzhamcomp/lzham_match_accel.h b/lzhamcomp/lzham_match_accel.h
+index 384ea7d..bb54dea 100644
+--- a/lzhamcomp/lzham_match_accel.h
++++ b/lzhamcomp/lzham_match_accel.h
+@@ -1,5 +1,5 @@
+ // File: lzham_match_accel.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+ #include "lzham_lzbase.h"
+ #include "lzham_threading.h"
+diff --git a/lzhamcomp/lzham_null_threading.h b/lzhamcomp/lzham_null_threading.h
+index a7f7467..1239d26 100644
+--- a/lzhamcomp/lzham_null_threading.h
++++ b/lzhamcomp/lzham_null_threading.h
+@@ -1,5 +1,5 @@
+ // File: lzham_task_pool_null.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+
+ namespace lzham
+@@ -23,7 +23,7 @@ namespace lzham
+ (void)releaseCount, (void)pPreviousCount;
+ }
+
+- inline bool wait(uint32 milliseconds = UINT32_MAX)
++ inline bool wait(uint32 milliseconds = LZHAM_UINT32_MAX)
+ {
+ (void)milliseconds;
+ return true;
+diff --git a/lzhamcomp/lzham_pthreads_threading.cpp b/lzhamcomp/lzham_pthreads_threading.cpp
+index bb2c565..da5c3f5 100644
+--- a/lzhamcomp/lzham_pthreads_threading.cpp
++++ b/lzhamcomp/lzham_pthreads_threading.cpp
+@@ -1,24 +1,7 @@
+ // File: lzham_task_pool_pthreads.cpp
+ //
+-// Copyright (c) 2009-2010 Richard Geldreich, Jr.
+-//
+-// Permission is hereby granted, free of charge, to any person obtaining a copy
+-// of this software and associated documentation files (the "Software"), to deal
+-// in the Software without restriction, including without limitation the rights
+-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+-// copies of the Software, and to permit persons to whom the Software is
+-// furnished to do so, subject to the following conditions:
+-//
+-// The above copyright notice and this permission notice shall be included in
+-// all copies or substantial portions of the Software.
+-//
+-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+-// THE SOFTWARE.
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
++
+ #include "lzham_core.h"
+ #include "lzham_pthreads_threading.h"
+ #include "lzham_timer.h"
+diff --git a/lzhamcomp/lzham_pthreads_threading.h b/lzhamcomp/lzham_pthreads_threading.h
+index 671387e..a76dfd8 100644
+--- a/lzhamcomp/lzham_pthreads_threading.h
++++ b/lzhamcomp/lzham_pthreads_threading.h
+@@ -1,5 +1,5 @@
+ // File: lzham_task_pool_pthreads.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+
+ #if LZHAM_USE_PTHREADS_API
+@@ -160,10 +160,10 @@ namespace lzham
+ }
+ }
+
+- inline bool wait(uint32 milliseconds = UINT32_MAX)
++ inline bool wait(uint32 milliseconds = LZHAM_UINT32_MAX)
+ {
+ int status;
+- if (milliseconds == UINT32_MAX)
++ if (milliseconds == LZHAM_UINT32_MAX)
+ {
+ status = sem_wait(&m_sem);
+ }
+diff --git a/lzhamcomp/lzham_threading.h b/lzhamcomp/lzham_threading.h
+index b8a1dbe..2b0e8d7 100644
+--- a/lzhamcomp/lzham_threading.h
++++ b/lzhamcomp/lzham_threading.h
+@@ -1,5 +1,5 @@
+ // File: lzham_threading.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+
+ #if LZHAM_USE_WIN32_API
+ #include "lzham_win32_threading.h"
+diff --git a/lzhamcomp/lzham_win32_threading.cpp b/lzhamcomp/lzham_win32_threading.cpp
+index 63a7e51..3580282 100644
+--- a/lzhamcomp/lzham_win32_threading.cpp
++++ b/lzhamcomp/lzham_win32_threading.cpp
+@@ -1,5 +1,5 @@
+ // File: lzham_task_pool_win32.cpp
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #include "lzham_core.h"
+ #include "lzham_win32_threading.h"
+ #include "lzham_timer.h"
+diff --git a/lzhamcomp/lzham_win32_threading.h b/lzhamcomp/lzham_win32_threading.h
+index 64125ac..0e1d16b 100644
+--- a/lzhamcomp/lzham_win32_threading.h
++++ b/lzhamcomp/lzham_win32_threading.h
+@@ -1,5 +1,5 @@
+ // File: lzham_task_pool_win32.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+
+ #if LZHAM_USE_WIN32_API
+diff --git a/lzhamdecomp/lzham_assert.cpp b/lzhamdecomp/lzham_assert.cpp
+index 7d27ed6..d4088be 100644
+--- a/lzhamdecomp/lzham_assert.cpp
++++ b/lzhamdecomp/lzham_assert.cpp
+@@ -1,5 +1,5 @@
+ // File: lzham_assert.cpp
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #include "lzham_core.h"
+
+ static bool g_fail_exceptions;
+diff --git a/lzhamdecomp/lzham_assert.h b/lzhamdecomp/lzham_assert.h
+index d8a6851..d49949f 100644
+--- a/lzhamdecomp/lzham_assert.h
++++ b/lzhamdecomp/lzham_assert.h
+@@ -1,5 +1,5 @@
+ // File: lzham_assert.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+
+ const unsigned int LZHAM_FAIL_EXCEPTION_CODE = 256U;
+diff --git a/lzhamdecomp/lzham_checksum.h b/lzhamdecomp/lzham_checksum.h
+index 515f338..3369806 100644
+--- a/lzhamdecomp/lzham_checksum.h
++++ b/lzhamdecomp/lzham_checksum.h
+@@ -1,5 +1,5 @@
+ // File: lzham_checksum.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+
+ namespace lzham
+diff --git a/lzhamdecomp/lzham_config.h b/lzhamdecomp/lzham_config.h
+index 3681d8e..1d8c768 100644
+--- a/lzhamdecomp/lzham_config.h
++++ b/lzhamdecomp/lzham_config.h
+@@ -1,5 +1,5 @@
+ // File: lzham_config.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+
+ #if defined(_DEBUG) || defined(DEBUG)
+@@ -20,4 +20,4 @@
+ #endif
+ #endif
+ #define LZHAM_BUFFERED_PRINTF 0
+-#define LZHAM_PERF_SECTIONS 0
+\ No newline at end of file
++#define LZHAM_PERF_SECTIONS 0
+diff --git a/lzhamdecomp/lzham_core.h b/lzhamdecomp/lzham_core.h
+index f4e2d4f..2e55362 100644
+--- a/lzhamdecomp/lzham_core.h
++++ b/lzhamdecomp/lzham_core.h
+@@ -1,5 +1,5 @@
+ // File: lzham_core.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+
+ #if defined(_MSC_VER)
+diff --git a/lzhamdecomp/lzham_decomp.h b/lzhamdecomp/lzham_decomp.h
+index 32b2f9a..8bb7691 100644
+--- a/lzhamdecomp/lzham_decomp.h
++++ b/lzhamdecomp/lzham_decomp.h
+@@ -1,5 +1,5 @@
+ // File: lzham_decomp.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+ #include "lzham.h"
+
+diff --git a/lzhamdecomp/lzham_helpers.h b/lzhamdecomp/lzham_helpers.h
+index 11e0a11..7b8bb15 100644
+--- a/lzhamdecomp/lzham_helpers.h
++++ b/lzhamdecomp/lzham_helpers.h
+@@ -1,5 +1,5 @@
+ // File: lzham_helpers.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+
+ #define LZHAM_NO_COPY_OR_ASSIGNMENT_OP(c) c(const c&); c& operator= (const c&);
+diff --git a/lzhamdecomp/lzham_huffman_codes.cpp b/lzhamdecomp/lzham_huffman_codes.cpp
+index 10bc494..11bdbd4 100644
+--- a/lzhamdecomp/lzham_huffman_codes.cpp
++++ b/lzhamdecomp/lzham_huffman_codes.cpp
+@@ -1,5 +1,5 @@
+ // File: huffman_codes.cpp
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #include "lzham_core.h"
+ #include "lzham_huffman_codes.h"
+
+diff --git a/lzhamdecomp/lzham_huffman_codes.h b/lzhamdecomp/lzham_huffman_codes.h
+index caab1a6..09bfc04 100644
+--- a/lzhamdecomp/lzham_huffman_codes.h
++++ b/lzhamdecomp/lzham_huffman_codes.h
+@@ -1,5 +1,5 @@
+ // File: lzham_huffman_codes.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+
+ namespace lzham
+diff --git a/lzhamdecomp/lzham_lzdecomp.cpp b/lzhamdecomp/lzham_lzdecomp.cpp
+index f6183f4..6f4f371 100644
+--- a/lzhamdecomp/lzham_lzdecomp.cpp
++++ b/lzhamdecomp/lzham_lzdecomp.cpp
+@@ -1,5 +1,5 @@
+ // File: lzham_lzdecomp.cpp
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ //
+ // See "Coroutines in C":
+ // http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html
+diff --git a/lzhamdecomp/lzham_lzdecompbase.cpp b/lzhamdecomp/lzham_lzdecompbase.cpp
+index 42bc9e4..cb56cc6 100644
+--- a/lzhamdecomp/lzham_lzdecompbase.cpp
++++ b/lzhamdecomp/lzham_lzdecompbase.cpp
+@@ -1,5 +1,5 @@
+ // File: lzham_lzdecompbase.cpp
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #include "lzham_core.h"
+ #include "lzham_lzdecompbase.h"
+
+diff --git a/lzhamdecomp/lzham_lzdecompbase.h b/lzhamdecomp/lzham_lzdecompbase.h
+index 40d941a..f92cfa8 100644
+--- a/lzhamdecomp/lzham_lzdecompbase.h
++++ b/lzhamdecomp/lzham_lzdecompbase.h
+@@ -1,5 +1,5 @@
+ // File: lzham_lzdecompbase.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+
+ //#define LZHAM_LZDEBUG
+diff --git a/lzhamdecomp/lzham_math.h b/lzhamdecomp/lzham_math.h
+index 6c8fbfc..1ff0d51 100644
+--- a/lzhamdecomp/lzham_math.h
++++ b/lzhamdecomp/lzham_math.h
+@@ -1,5 +1,5 @@
+ // File: lzham_math.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+
+ #if defined(LZHAM_USE_MSVC_INTRINSICS) && !defined(__MINGW32__)
+diff --git a/lzhamdecomp/lzham_mem.cpp b/lzhamdecomp/lzham_mem.cpp
+index 02f2324..e8163fa 100644
+--- a/lzhamdecomp/lzham_mem.cpp
++++ b/lzhamdecomp/lzham_mem.cpp
+@@ -1,5 +1,5 @@
+ // File: lzham_mem.cpp
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #include "lzham_core.h"
+
+ #ifdef __APPLE__
+diff --git a/lzhamdecomp/lzham_mem.h b/lzhamdecomp/lzham_mem.h
+index d258eff..9eeb8af 100644
+--- a/lzhamdecomp/lzham_mem.h
++++ b/lzhamdecomp/lzham_mem.h
+@@ -1,5 +1,5 @@
+ // File: lzham_mem.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+
+ namespace lzham
+diff --git a/lzhamdecomp/lzham_platform.cpp b/lzhamdecomp/lzham_platform.cpp
+index cd4f9dd..cfc85c1 100644
+--- a/lzhamdecomp/lzham_platform.cpp
++++ b/lzhamdecomp/lzham_platform.cpp
+@@ -1,5 +1,5 @@
+ // File: platform.cpp
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #include "lzham_core.h"
+ #include "lzham_timer.h"
+ #include
+diff --git a/lzhamdecomp/lzham_platform.h b/lzhamdecomp/lzham_platform.h
+index 0cc58be..01704be 100644
+--- a/lzhamdecomp/lzham_platform.h
++++ b/lzhamdecomp/lzham_platform.h
+@@ -1,5 +1,5 @@
+ // File: lzham_platform.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+
+ bool lzham_is_debugger_present(void);
+diff --git a/lzhamdecomp/lzham_prefix_coding.cpp b/lzhamdecomp/lzham_prefix_coding.cpp
+index 8286697..e9ada15 100644
+--- a/lzhamdecomp/lzham_prefix_coding.cpp
++++ b/lzhamdecomp/lzham_prefix_coding.cpp
+@@ -1,5 +1,5 @@
+ // File: lzham_prefix_coding.cpp
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #include "lzham_core.h"
+ #include "lzham_prefix_coding.h"
+
+diff --git a/lzhamdecomp/lzham_prefix_coding.h b/lzhamdecomp/lzham_prefix_coding.h
+index 4e13569..cc538f0 100644
+--- a/lzhamdecomp/lzham_prefix_coding.h
++++ b/lzhamdecomp/lzham_prefix_coding.h
+@@ -1,5 +1,5 @@
+ // File: lzham_prefix_coding.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+
+ namespace lzham
+diff --git a/lzhamdecomp/lzham_symbol_codec.cpp b/lzhamdecomp/lzham_symbol_codec.cpp
+index 72c370b..5623584 100644
+--- a/lzhamdecomp/lzham_symbol_codec.cpp
++++ b/lzhamdecomp/lzham_symbol_codec.cpp
+@@ -1,5 +1,5 @@
+ // File: lzham_symbol_codec.cpp
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #include "lzham_core.h"
+ #include "lzham_symbol_codec.h"
+ #include "lzham_huffman_codes.h"
+diff --git a/lzhamdecomp/lzham_symbol_codec.h b/lzhamdecomp/lzham_symbol_codec.h
+index e6aa33a..306d59b 100644
+--- a/lzhamdecomp/lzham_symbol_codec.h
++++ b/lzhamdecomp/lzham_symbol_codec.h
+@@ -1,5 +1,5 @@
+ // File: lzham_symbol_codec.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+ #include "lzham_prefix_coding.h"
+
+diff --git a/lzhamdecomp/lzham_timer.cpp b/lzhamdecomp/lzham_timer.cpp
+index 4079353..10910e1 100644
+--- a/lzhamdecomp/lzham_timer.cpp
++++ b/lzhamdecomp/lzham_timer.cpp
+@@ -1,5 +1,5 @@
+ // File: lzham_timer.cpp
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #include "lzham_core.h"
+ #include "lzham_timer.h"
+
+@@ -144,4 +144,4 @@ namespace lzham
+ return ticks * g_inv_freq;
+ }
+
+-} // namespace lzham
+\ No newline at end of file
++} // namespace lzham
+diff --git a/lzhamdecomp/lzham_timer.h b/lzhamdecomp/lzham_timer.h
+index a522430..e0c3cf2 100644
+--- a/lzhamdecomp/lzham_timer.h
++++ b/lzhamdecomp/lzham_timer.h
+@@ -1,5 +1,5 @@
+ // File: lzham_timer.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+
+ namespace lzham
+diff --git a/lzhamdecomp/lzham_traits.h b/lzhamdecomp/lzham_traits.h
+index 950c3fd..ea7214f 100644
+--- a/lzhamdecomp/lzham_traits.h
++++ b/lzhamdecomp/lzham_traits.h
+@@ -1,5 +1,5 @@
+ // File: lzham_traits.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+
+ namespace lzham
+diff --git a/lzhamdecomp/lzham_types.h b/lzhamdecomp/lzham_types.h
+index 47f68a3..2ea6a10 100644
+--- a/lzhamdecomp/lzham_types.h
++++ b/lzhamdecomp/lzham_types.h
+@@ -1,30 +1,7 @@
+ // File: types.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+
+-// TODO
+-#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__)
+- #undef INT8_MIN
+- #undef INT8_MAX
+- #undef UINT8_MIN
+- #undef UINT8_MAX
+-
+- #undef INT16_MIN
+- #undef INT16_MAX
+- #undef UINT16_MIN
+- #undef UINT16_MAX
+-
+- #undef INT32_MIN
+- #undef INT32_MAX
+- #undef UINT32_MIN
+- #undef UINT32_MAX
+-
+- #undef INT64_MIN
+- #undef INT64_MAX
+- #undef UINT64_MIN
+- #undef UINT64_MAX
+-#endif
+-
+ namespace lzham
+ {
+ typedef unsigned char uint8;
+@@ -44,23 +21,23 @@ namespace lzham
+ typedef long long int64;
+ #endif
+
+- const uint8 UINT8_MIN = 0;
+- const uint8 UINT8_MAX = 0xFFU;
+- const uint16 UINT16_MIN = 0;
+- const uint16 UINT16_MAX = 0xFFFFU;
+- const uint32 UINT32_MIN = 0;
+- const uint32 UINT32_MAX = 0xFFFFFFFFU;
+- const uint64 UINT64_MIN = 0;
+- const uint64 UINT64_MAX = 0xFFFFFFFFFFFFFFFFULL; //0xFFFFFFFFFFFFFFFFui64;
++ const uint8 LZHAM_UINT8_MIN = 0;
++ const uint8 LZHAM_UINT8_MAX = 0xFFU;
++ const uint16 LZHAM_UINT16_MIN = 0;
++ const uint16 LZHAM_UINT16_MAX = 0xFFFFU;
++ const uint32 LZHAM_UINT32_MIN = 0;
++ const uint32 LZHAM_UINT32_MAX = 0xFFFFFFFFU;
++ const uint64 LZHAM_UINT64_MIN = 0;
++ const uint64 LZHAM_UINT64_MAX = 0xFFFFFFFFFFFFFFFFULL; //0xFFFFFFFFFFFFFFFFui64;
+
+- const int8 INT8_MIN = -128;
+- const int8 INT8_MAX = 127;
+- const int16 INT16_MIN = -32768;
+- const int16 INT16_MAX = 32767;
+- const int32 INT32_MIN = (-2147483647 - 1);
+- const int32 INT32_MAX = 2147483647;
+- const int64 INT64_MIN = (int64)0x8000000000000000ULL; //(-9223372036854775807i64 - 1);
+- const int64 INT64_MAX = (int64)0x7FFFFFFFFFFFFFFFULL; //9223372036854775807i64;
++ const int8 LZHAM_INT8_MIN = -128;
++ const int8 LZHAM_INT8_MAX = 127;
++ const int16 LZHAM_INT16_MIN = -32768;
++ const int16 LZHAM_INT16_MAX = 32767;
++ const int32 LZHAM_INT32_MIN = (-2147483647 - 1);
++ const int32 LZHAM_INT32_MAX = 2147483647;
++ const int64 LZHAM_INT64_MIN = (int64)0x8000000000000000ULL; //(-9223372036854775807i64 - 1);
++ const int64 LZHAM_INT64_MAX = (int64)0x7FFFFFFFFFFFFFFFULL; //9223372036854775807i64;
+
+ #if LZHAM_64BIT_POINTERS
+ typedef uint64 uint_ptr;
+@@ -84,13 +61,13 @@ namespace lzham
+ const uint cIntBits = sizeof(uint) * CHAR_BIT;
+
+ template struct int_traits { enum { cMin = INT_MIN, cMax = INT_MAX, cSigned = true }; };
+- template<> struct int_traits { enum { cMin = INT8_MIN, cMax = INT8_MAX, cSigned = true }; };
+- template<> struct int_traits { enum { cMin = INT16_MIN, cMax = INT16_MAX, cSigned = true }; };
+- template<> struct int_traits { enum { cMin = INT32_MIN, cMax = INT32_MAX, cSigned = true }; };
++ template<> struct int_traits { enum { cMin = LZHAM_INT8_MIN, cMax = LZHAM_INT8_MAX, cSigned = true }; };
++ template<> struct int_traits { enum { cMin = LZHAM_INT16_MIN, cMax = LZHAM_INT16_MAX, cSigned = true }; };
++ template<> struct int_traits { enum { cMin = LZHAM_INT32_MIN, cMax = LZHAM_INT32_MAX, cSigned = true }; };
+
+ template<> struct int_traits { enum { cMin = 0, cMax = UINT_MAX, cSigned = false }; };
+- template<> struct int_traits { enum { cMin = 0, cMax = UINT8_MAX, cSigned = false }; };
+- template<> struct int_traits { enum { cMin = 0, cMax = UINT16_MAX, cSigned = false }; };
++ template<> struct int_traits { enum { cMin = 0, cMax = LZHAM_UINT8_MAX, cSigned = false }; };
++ template<> struct int_traits { enum { cMin = 0, cMax = LZHAM_UINT16_MAX, cSigned = false }; };
+
+ struct empty_type { };
+
+diff --git a/lzhamdecomp/lzham_utils.h b/lzhamdecomp/lzham_utils.h
+index 0e8f5e8..b157c9d 100644
+--- a/lzhamdecomp/lzham_utils.h
++++ b/lzhamdecomp/lzham_utils.h
+@@ -1,5 +1,5 @@
+ // File: lzham_utils.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+
+ #define LZHAM_GET_ALIGNMENT(v) ((!sizeof(v)) ? 1 : (__alignof(v) ? __alignof(v) : sizeof(uint32)))
+diff --git a/lzhamdecomp/lzham_vector.cpp b/lzhamdecomp/lzham_vector.cpp
+index e8a33bd..4a66dac 100644
+--- a/lzhamdecomp/lzham_vector.cpp
++++ b/lzhamdecomp/lzham_vector.cpp
+@@ -1,5 +1,5 @@
+ // File: lzham_vector.cpp
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #include "lzham_core.h"
+ #include "lzham_vector.h"
+
+diff --git a/lzhamdecomp/lzham_vector.h b/lzhamdecomp/lzham_vector.h
+index 90f3236..badc540 100644
+--- a/lzhamdecomp/lzham_vector.h
++++ b/lzhamdecomp/lzham_vector.h
+@@ -1,5 +1,5 @@
+ // File: lzham_vector.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #pragma once
+
+ namespace lzham
+diff --git a/lzhamdll/lzham_api.cpp b/lzhamdll/lzham_api.cpp
+index 6e473b1..cfdbb87 100644
+--- a/lzhamdll/lzham_api.cpp
++++ b/lzhamdll/lzham_api.cpp
+@@ -1,5 +1,5 @@
+ // File: lzham_api.cpp - Dynamic DLL entrypoints.
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #include "lzham_core.h"
+ #include "lzham_decomp.h"
+ #include "lzham_comp.h"
+diff --git a/lzhamdll/lzham_dll_main.cpp b/lzhamdll/lzham_dll_main.cpp
+index ad8a3ce..fa6280f 100644
+--- a/lzhamdll/lzham_dll_main.cpp
++++ b/lzhamdll/lzham_dll_main.cpp
+@@ -1,5 +1,5 @@
+ // File: lzham_dll_main.cpp
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #include "lzham_core.h"
+
+ BOOL APIENTRY DllMain(HANDLE hModule, DWORD fdwReason, LPVOID lpReserved)
+diff --git a/lzhamlib/lzham_lib.cpp b/lzhamlib/lzham_lib.cpp
+index 946a4b4..11f5481 100644
+--- a/lzhamlib/lzham_lib.cpp
++++ b/lzhamlib/lzham_lib.cpp
+@@ -1,5 +1,5 @@
+ // File: lzham_lib.cpp - Static library entrypoints.
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #include "lzham_core.h"
+ #include "lzham_decomp.h"
+ #include "lzham_comp.h"
+diff --git a/lzhamtest/lzhamtest.cpp b/lzhamtest/lzhamtest.cpp
+index 14bb3d1..01bca51 100644
+--- a/lzhamtest/lzhamtest.cpp
++++ b/lzhamtest/lzhamtest.cpp
+@@ -4,7 +4,7 @@
+ // See the decompress_file() function to see how to use the decompression API, and the compress_file() function for the compression API.
+ // See include/lzham.h for documentation on the public LZHAM API.
+ // Tested on Windows, Linux, and OSX. On iOS, I use a small "Hello World" test app to test the codec.
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #if defined(__GNUC__)
+ #define _FILE_OFFSET_BITS 64
+ #endif
+diff --git a/lzhamtest/timer.cpp b/lzhamtest/timer.cpp
+index affd260..bf5844a 100644
+--- a/lzhamtest/timer.cpp
++++ b/lzhamtest/timer.cpp
+@@ -1,5 +1,5 @@
+ // File: timer.cpp
+-// See Copyright Notice and license at the end of include/lzham.h
++// LZHAM is in the Public Domain. Please see the Public Domain declaration at the end of include/lzham.h
+ #include
+ #include
+ #include
+diff --git a/lzhamtest/timer.h b/lzhamtest/timer.h
+index 6852933..2499d66 100644
+--- a/lzhamtest/timer.h
++++ b/lzhamtest/timer.h
+@@ -1,5 +1,5 @@
+ // File: timer.h
+-// See Copyright Notice and license at the end of include/lzham.h
++// This software is in the Public Domain. Please see the end of include/lzham.h
+ #pragma once
+
+ typedef unsigned long long timer_ticks;
diff --git a/recipes/lzham/all/patches/fix-osx-1.0.0.patch b/recipes/lzham/all/patches/fix-osx-1.0.0.patch
new file mode 100644
index 00000000000000..156502e3464437
--- /dev/null
+++ b/recipes/lzham/all/patches/fix-osx-1.0.0.patch
@@ -0,0 +1,28 @@
+diff --git a/lzhamdecomp/lzham_platform.cpp b/lzhamdecomp/lzham_platform.cpp
+index cfc85c1..599a847 100644
+--- a/lzhamdecomp/lzham_platform.cpp
++++ b/lzhamdecomp/lzham_platform.cpp
+@@ -61,7 +61,7 @@ void lzham_debug_break(void)
+ {
+ #if LZHAM_USE_WIN32_API
+ DebugBreak();
+-#elif (TARGET_OS_MAC == 1) && (TARGET_IPHONE_SIMULATOR == 0) && (TARGET_OS_IPHONE == 0)
++#elif (TARGET_OS_MAC == 1) && (TARGET_IPHONE_SIMULATOR == 0) && (TARGET_OS_IPHONE == 0) && !defined(__clang__)
+ __asm {int 3}
+ #else
+ assert(0);
+diff --git a/lzhamdecomp/lzham_traits.h b/lzhamdecomp/lzham_traits.h
+index ea7214f..e103bad 100644
+--- a/lzhamdecomp/lzham_traits.h
++++ b/lzhamdecomp/lzham_traits.h
+@@ -67,7 +67,9 @@ namespace lzham
+ // Defines type Q as bitwise copyable.
+ #define LZHAM_DEFINE_BITWISE_COPYABLE(Q) template<> struct bitwise_copyable { enum { cFlag = true }; };
+
+-#if defined(__APPLE__) || defined(__NetBSD__)
++#if defined(__APPLE__)
++ #define LZHAM_IS_POD(T) std::is_pod::value
++#elif defined(__NetBSD__)
+ #define LZHAM_IS_POD(T) std::__is_pod::__value
+ #else
+ #define LZHAM_IS_POD(T) __is_pod(T)
diff --git a/recipes/lzham/all/patches/use-lzham-types-1.0.0.patch b/recipes/lzham/all/patches/use-lzham-types-1.0.0.patch
new file mode 100644
index 00000000000000..db6f4925fa490c
--- /dev/null
+++ b/recipes/lzham/all/patches/use-lzham-types-1.0.0.patch
@@ -0,0 +1,142 @@
+diff --git a/lzhamcomp/lzham_win32_threading.h b/lzhamcomp/lzham_win32_threading.h
+index 0e1d16b..4aaff8c 100644
+--- a/lzhamcomp/lzham_win32_threading.h
++++ b/lzhamcomp/lzham_win32_threading.h
+@@ -43,9 +43,9 @@ namespace lzham
+ }
+ }
+
+- bool wait(uint32 milliseconds = UINT32_MAX)
++ bool wait(uint32 milliseconds = LZHAM_UINT32_MAX)
+ {
+- LZHAM_ASSUME(INFINITE == UINT32_MAX);
++ LZHAM_ASSUME(INFINITE == LZHAM_UINT32_MAX);
+
+ DWORD result = WaitForSingleObject(m_handle, milliseconds);
+
+diff --git a/lzhamdecomp/lzham_huffman_codes.cpp b/lzhamdecomp/lzham_huffman_codes.cpp
+index 11bdbd4..788414a 100644
+--- a/lzhamdecomp/lzham_huffman_codes.cpp
++++ b/lzhamdecomp/lzham_huffman_codes.cpp
+@@ -224,7 +224,7 @@ namespace lzham
+
+ sym_freq& sf = state.syms0[num_used_syms];
+ sf.m_left = (uint16)i;
+- sf.m_right = UINT16_MAX;
++ sf.m_right = LZHAM_UINT16_MAX;
+ sf.m_freq = freq;
+ num_used_syms++;
+ }
+diff --git a/lzhamdecomp/lzham_prefix_coding.cpp b/lzhamdecomp/lzham_prefix_coding.cpp
+index e9ada15..52377c9 100644
+--- a/lzhamdecomp/lzham_prefix_coding.cpp
++++ b/lzhamdecomp/lzham_prefix_coding.cpp
+@@ -149,7 +149,7 @@ namespace lzham
+ {
+ uint c = pCodesizes[i];
+
+- LZHAM_ASSERT(!c || (next_code[c] <= UINT16_MAX));
++ LZHAM_ASSERT(!c || (next_code[c] <= LZHAM_UINT16_MAX));
+
+ pCodes[i] = static_cast(next_code[c]++);
+
+@@ -296,7 +296,7 @@ namespace lzham
+
+ LZHAM_ASSERT(t < (1U << table_bits));
+
+- LZHAM_ASSERT(pTables->m_lookup[t] == UINT32_MAX);
++ LZHAM_ASSERT(pTables->m_lookup[t] == LZHAM_UINT32_MAX);
+
+ pTables->m_lookup[t] = sym_index | (codesize << 16U);
+ }
+diff --git a/lzhamdecomp/lzham_symbol_codec.cpp b/lzhamdecomp/lzham_symbol_codec.cpp
+index 5623584..b2ea7ee 100644
+--- a/lzhamdecomp/lzham_symbol_codec.cpp
++++ b/lzhamdecomp/lzham_symbol_codec.cpp
+@@ -581,7 +581,7 @@ namespace lzham
+ freq++;
+ m_sym_freq[sym] = static_cast(freq);
+
+- LZHAM_ASSERT(freq <= UINT16_MAX);
++ LZHAM_ASSERT(freq <= LZHAM_UINT16_MAX);
+
+ if (--m_symbols_until_update == 0)
+ {
+@@ -828,7 +828,7 @@ namespace lzham
+ freq++;
+ model.m_sym_freq[sym] = static_cast(freq);
+
+- LZHAM_ASSERT(freq <= UINT16_MAX);
++ LZHAM_ASSERT(freq <= LZHAM_UINT16_MAX);
+
+ if (--model.m_symbols_until_update == 0)
+ {
+@@ -1265,8 +1265,8 @@ namespace lzham
+ {
+ uint32 t = pTables->m_lookup[m_bit_buf >> (cBitBufSize - pTables->m_table_bits)];
+
+- LZHAM_ASSERT(t != UINT32_MAX);
+- sym = t & UINT16_MAX;
++ LZHAM_ASSERT(t != LZHAM_UINT32_MAX);
++ sym = t & LZHAM_UINT16_MAX;
+ len = t >> 16;
+
+ LZHAM_ASSERT(model.m_code_sizes[sym] == len);
+@@ -1301,7 +1301,7 @@ namespace lzham
+ freq++;
+ model.m_sym_freq[sym] = static_cast(freq);
+
+- LZHAM_ASSERT(freq <= UINT16_MAX);
++ LZHAM_ASSERT(freq <= LZHAM_UINT16_MAX);
+
+ if (--model.m_symbols_until_update == 0)
+ {
+diff --git a/lzhamdecomp/lzham_symbol_codec.h b/lzhamdecomp/lzham_symbol_codec.h
+index 306d59b..b231530 100644
+--- a/lzhamdecomp/lzham_symbol_codec.h
++++ b/lzhamdecomp/lzham_symbol_codec.h
+@@ -19,7 +19,7 @@ namespace lzham
+ typedef uint64 bit_cost_t;
+ const uint32 cBitCostScaleShift = 24;
+ const uint32 cBitCostScale = (1U << cBitCostScaleShift);
+- const bit_cost_t cBitCostMax = UINT64_MAX;
++ const bit_cost_t cBitCostMax = LZHAM_UINT64_MAX;
+
+ inline bit_cost_t convert_to_scaled_bitcost(uint bits) { LZHAM_ASSERT(bits <= 255); uint32 scaled_bits = bits << cBitCostScaleShift; return static_cast(scaled_bits); }
+
+@@ -444,7 +444,7 @@ namespace lzham
+ if (LZHAM_BUILTIN_EXPECT(k <= pTables->m_table_max_code, 1)) \
+ { \
+ uint32 t = pTables->m_lookup[bit_buf >> (symbol_codec::cBitBufSize - pTables->m_table_bits)]; \
+- result = t & UINT16_MAX; \
++ result = t & LZHAM_UINT16_MAX; \
+ len = t >> 16; \
+ } \
+ else \
+@@ -465,7 +465,7 @@ namespace lzham
+ uint freq = pModel->m_sym_freq[result]; \
+ freq++; \
+ pModel->m_sym_freq[result] = static_cast(freq); \
+- LZHAM_ASSERT(freq <= UINT16_MAX); \
++ LZHAM_ASSERT(freq <= LZHAM_UINT16_MAX); \
+ if (LZHAM_BUILTIN_EXPECT(--pModel->m_symbols_until_update == 0, 0)) \
+ { \
+ pModel->update_tables(); \
+@@ -501,7 +501,7 @@ namespace lzham
+ if (LZHAM_BUILTIN_EXPECT(k <= pTables->m_table_max_code, 1)) \
+ { \
+ uint32 t = pTables->m_lookup[bit_buf >> (symbol_codec::cBitBufSize - pTables->m_table_bits)]; \
+- result = t & UINT16_MAX; \
++ result = t & LZHAM_UINT16_MAX; \
+ len = t >> 16; \
+ } \
+ else \
+@@ -522,7 +522,7 @@ namespace lzham
+ uint freq = pModel->m_sym_freq[result]; \
+ freq++; \
+ pModel->m_sym_freq[result] = static_cast(freq); \
+- LZHAM_ASSERT(freq <= UINT16_MAX); \
++ LZHAM_ASSERT(freq <= LZHAM_UINT16_MAX); \
+ if (LZHAM_BUILTIN_EXPECT(--pModel->m_symbols_until_update == 0, 0)) \
+ { \
+ pModel->update_tables(); \
diff --git a/recipes/lzham/all/test_package/CMakeLists.txt b/recipes/lzham/all/test_package/CMakeLists.txt
new file mode 100644
index 00000000000000..c4780ae45756cc
--- /dev/null
+++ b/recipes/lzham/all/test_package/CMakeLists.txt
@@ -0,0 +1,7 @@
+cmake_minimum_required(VERSION 3.1)
+project(test_package CXX)
+
+find_package(lzham REQUIRED CONFIG)
+
+add_executable(${PROJECT_NAME} test_package.cpp)
+target_link_libraries(${PROJECT_NAME} PUBLIC lzham::lzham)
diff --git a/recipes/lzham/all/test_package/conanfile.py b/recipes/lzham/all/test_package/conanfile.py
new file mode 100644
index 00000000000000..eea09bfb32ab12
--- /dev/null
+++ b/recipes/lzham/all/test_package/conanfile.py
@@ -0,0 +1,27 @@
+import os
+
+from conan import ConanFile
+from conan.tools.build import can_run
+from conan.tools.cmake import cmake_layout, CMake
+
+
+class TestPackageConan(ConanFile):
+ settings = "os", "arch", "compiler", "build_type"
+ generators = "CMakeDeps", "CMakeToolchain", "VirtualRunEnv"
+ test_type = "explicit"
+
+ def requirements(self):
+ self.requires(self.tested_reference_str)
+
+ def layout(self):
+ cmake_layout(self)
+
+ def build(self):
+ cmake = CMake(self)
+ cmake.configure()
+ cmake.build()
+
+ def test(self):
+ if can_run(self):
+ bin_path = os.path.join(self.cpp.build.bindirs[0], "test_package")
+ self.run(bin_path, env="conanrun")
diff --git a/recipes/lzham/all/test_package/test_package.cpp b/recipes/lzham/all/test_package/test_package.cpp
new file mode 100644
index 00000000000000..c588215577f5f2
--- /dev/null
+++ b/recipes/lzham/all/test_package/test_package.cpp
@@ -0,0 +1,23 @@
+#include
+#include
+
+#include
+
+int main() {
+ unsigned char in[] = "Hello Conan Center!";
+ unsigned char out[sizeof(in)];
+
+ lzham_z_stream stream;
+ std::memset(&stream, 0, sizeof(stream));
+ stream.next_in = in;
+ stream.avail_in = sizeof(in);
+ stream.next_out = out;
+ stream.avail_out = sizeof(out);
+ if (lzham_z_deflateInit(&stream, LZHAM_Z_BEST_COMPRESSION) != LZHAM_Z_OK)
+ return EXIT_FAILURE;
+
+ if (lzham_z_deflate(&stream, LZHAM_Z_FULL_FLUSH) != LZHAM_Z_OK)
+ return EXIT_FAILURE;
+
+ return EXIT_SUCCESS;
+}
diff --git a/recipes/lzham/all/test_v1_package/CMakeLists.txt b/recipes/lzham/all/test_v1_package/CMakeLists.txt
new file mode 100644
index 00000000000000..231cec51e4ab95
--- /dev/null
+++ b/recipes/lzham/all/test_v1_package/CMakeLists.txt
@@ -0,0 +1,10 @@
+cmake_minimum_required(VERSION 3.1)
+project(test_package CXX)
+
+include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
+conan_basic_setup(TARGETS)
+
+find_package(lzham REQUIRED CONFIG)
+
+add_executable(${PROJECT_NAME} ../test_package/test_package.cpp)
+target_link_libraries(${PROJECT_NAME} PUBLIC lzham::lzham)
diff --git a/recipes/lzham/all/test_v1_package/conanfile.py b/recipes/lzham/all/test_v1_package/conanfile.py
new file mode 100644
index 00000000000000..0f735b51a26422
--- /dev/null
+++ b/recipes/lzham/all/test_v1_package/conanfile.py
@@ -0,0 +1,17 @@
+from conans import ConanFile, CMake, tools
+import os
+
+
+class TestPackageV1Conan(ConanFile):
+ settings = "os", "arch", "compiler", "build_type"
+ generators = "cmake", "cmake_find_package_multi"
+
+ def build(self):
+ cmake = CMake(self)
+ cmake.configure()
+ cmake.build()
+
+ def test(self):
+ if not tools.cross_building(self):
+ bin_path = os.path.join("bin", "test_package")
+ self.run(bin_path, run_environment=True)
diff --git a/recipes/lzham/config.yml b/recipes/lzham/config.yml
new file mode 100644
index 00000000000000..40341aa3db6cd3
--- /dev/null
+++ b/recipes/lzham/config.yml
@@ -0,0 +1,3 @@
+versions:
+ "1.0.0":
+ folder: all