mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-01 02:38:12 +00:00 
			
		
		
		
	update to v1.22.0-rc.0
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
This commit is contained in:
		
							
								
								
									
										308
									
								
								LICENSES/vendor/github.com/klauspost/compress/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										308
									
								
								LICENSES/vendor/github.com/klauspost/compress/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,308 +0,0 @@ | ||||
| = vendor/github.com/klauspost/compress licensed under: = | ||||
|  | ||||
| Copyright (c) 2012 The Go Authors. All rights reserved. | ||||
| Copyright (c) 2019 Klaus Post. All rights reserved. | ||||
|  | ||||
| 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. | ||||
|    * Neither the name of Google Inc. nor the names of its | ||||
| contributors may be used to endorse or promote products derived from | ||||
| this software without specific prior written permission. | ||||
|  | ||||
| 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. | ||||
|  | ||||
| ------------------ | ||||
|  | ||||
| Files: gzhttp/* | ||||
|  | ||||
|                                  Apache License | ||||
|                            Version 2.0, January 2004 | ||||
|                         http://www.apache.org/licenses/ | ||||
|  | ||||
|    TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | ||||
|  | ||||
|    1. Definitions. | ||||
|  | ||||
|       "License" shall mean the terms and conditions for use, reproduction, | ||||
|       and distribution as defined by Sections 1 through 9 of this document. | ||||
|  | ||||
|       "Licensor" shall mean the copyright owner or entity authorized by | ||||
|       the copyright owner that is granting the License. | ||||
|  | ||||
|       "Legal Entity" shall mean the union of the acting entity and all | ||||
|       other entities that control, are controlled by, or are under common | ||||
|       control with that entity. For the purposes of this definition, | ||||
|       "control" means (i) the power, direct or indirect, to cause the | ||||
|       direction or management of such entity, whether by contract or | ||||
|       otherwise, or (ii) ownership of fifty percent (50%) or more of the | ||||
|       outstanding shares, or (iii) beneficial ownership of such entity. | ||||
|  | ||||
|       "You" (or "Your") shall mean an individual or Legal Entity | ||||
|       exercising permissions granted by this License. | ||||
|  | ||||
|       "Source" form shall mean the preferred form for making modifications, | ||||
|       including but not limited to software source code, documentation | ||||
|       source, and configuration files. | ||||
|  | ||||
|       "Object" form shall mean any form resulting from mechanical | ||||
|       transformation or translation of a Source form, including but | ||||
|       not limited to compiled object code, generated documentation, | ||||
|       and conversions to other media types. | ||||
|  | ||||
|       "Work" shall mean the work of authorship, whether in Source or | ||||
|       Object form, made available under the License, as indicated by a | ||||
|       copyright notice that is included in or attached to the work | ||||
|       (an example is provided in the Appendix below). | ||||
|  | ||||
|       "Derivative Works" shall mean any work, whether in Source or Object | ||||
|       form, that is based on (or derived from) the Work and for which the | ||||
|       editorial revisions, annotations, elaborations, or other modifications | ||||
|       represent, as a whole, an original work of authorship. For the purposes | ||||
|       of this License, Derivative Works shall not include works that remain | ||||
|       separable from, or merely link (or bind by name) to the interfaces of, | ||||
|       the Work and Derivative Works thereof. | ||||
|  | ||||
|       "Contribution" shall mean any work of authorship, including | ||||
|       the original version of the Work and any modifications or additions | ||||
|       to that Work or Derivative Works thereof, that is intentionally | ||||
|       submitted to Licensor for inclusion in the Work by the copyright owner | ||||
|       or by an individual or Legal Entity authorized to submit on behalf of | ||||
|       the copyright owner. For the purposes of this definition, "submitted" | ||||
|       means any form of electronic, verbal, or written communication sent | ||||
|       to the Licensor or its representatives, including but not limited to | ||||
|       communication on electronic mailing lists, source code control systems, | ||||
|       and issue tracking systems that are managed by, or on behalf of, the | ||||
|       Licensor for the purpose of discussing and improving the Work, but | ||||
|       excluding communication that is conspicuously marked or otherwise | ||||
|       designated in writing by the copyright owner as "Not a Contribution." | ||||
|  | ||||
|       "Contributor" shall mean Licensor and any individual or Legal Entity | ||||
|       on behalf of whom a Contribution has been received by Licensor and | ||||
|       subsequently incorporated within the Work. | ||||
|  | ||||
|    2. Grant of Copyright License. Subject to the terms and conditions of | ||||
|       this License, each Contributor hereby grants to You a perpetual, | ||||
|       worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||
|       copyright license to reproduce, prepare Derivative Works of, | ||||
|       publicly display, publicly perform, sublicense, and distribute the | ||||
|       Work and such Derivative Works in Source or Object form. | ||||
|  | ||||
|    3. Grant of Patent License. Subject to the terms and conditions of | ||||
|       this License, each Contributor hereby grants to You a perpetual, | ||||
|       worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||
|       (except as stated in this section) patent license to make, have made, | ||||
|       use, offer to sell, sell, import, and otherwise transfer the Work, | ||||
|       where such license applies only to those patent claims licensable | ||||
|       by such Contributor that are necessarily infringed by their | ||||
|       Contribution(s) alone or by combination of their Contribution(s) | ||||
|       with the Work to which such Contribution(s) was submitted. If You | ||||
|       institute patent litigation against any entity (including a | ||||
|       cross-claim or counterclaim in a lawsuit) alleging that the Work | ||||
|       or a Contribution incorporated within the Work constitutes direct | ||||
|       or contributory patent infringement, then any patent licenses | ||||
|       granted to You under this License for that Work shall terminate | ||||
|       as of the date such litigation is filed. | ||||
|  | ||||
|    4. Redistribution. You may reproduce and distribute copies of the | ||||
|       Work or Derivative Works thereof in any medium, with or without | ||||
|       modifications, and in Source or Object form, provided that You | ||||
|       meet the following conditions: | ||||
|  | ||||
|       (a) You must give any other recipients of the Work or | ||||
|           Derivative Works a copy of this License; and | ||||
|  | ||||
|       (b) You must cause any modified files to carry prominent notices | ||||
|           stating that You changed the files; and | ||||
|  | ||||
|       (c) You must retain, in the Source form of any Derivative Works | ||||
|           that You distribute, all copyright, patent, trademark, and | ||||
|           attribution notices from the Source form of the Work, | ||||
|           excluding those notices that do not pertain to any part of | ||||
|           the Derivative Works; and | ||||
|  | ||||
|       (d) If the Work includes a "NOTICE" text file as part of its | ||||
|           distribution, then any Derivative Works that You distribute must | ||||
|           include a readable copy of the attribution notices contained | ||||
|           within such NOTICE file, excluding those notices that do not | ||||
|           pertain to any part of the Derivative Works, in at least one | ||||
|           of the following places: within a NOTICE text file distributed | ||||
|           as part of the Derivative Works; within the Source form or | ||||
|           documentation, if provided along with the Derivative Works; or, | ||||
|           within a display generated by the Derivative Works, if and | ||||
|           wherever such third-party notices normally appear. The contents | ||||
|           of the NOTICE file are for informational purposes only and | ||||
|           do not modify the License. You may add Your own attribution | ||||
|           notices within Derivative Works that You distribute, alongside | ||||
|           or as an addendum to the NOTICE text from the Work, provided | ||||
|           that such additional attribution notices cannot be construed | ||||
|           as modifying the License. | ||||
|  | ||||
|       You may add Your own copyright statement to Your modifications and | ||||
|       may provide additional or different license terms and conditions | ||||
|       for use, reproduction, or distribution of Your modifications, or | ||||
|       for any such Derivative Works as a whole, provided Your use, | ||||
|       reproduction, and distribution of the Work otherwise complies with | ||||
|       the conditions stated in this License. | ||||
|  | ||||
|    5. Submission of Contributions. Unless You explicitly state otherwise, | ||||
|       any Contribution intentionally submitted for inclusion in the Work | ||||
|       by You to the Licensor shall be under the terms and conditions of | ||||
|       this License, without any additional terms or conditions. | ||||
|       Notwithstanding the above, nothing herein shall supersede or modify | ||||
|       the terms of any separate license agreement you may have executed | ||||
|       with Licensor regarding such Contributions. | ||||
|  | ||||
|    6. Trademarks. This License does not grant permission to use the trade | ||||
|       names, trademarks, service marks, or product names of the Licensor, | ||||
|       except as required for reasonable and customary use in describing the | ||||
|       origin of the Work and reproducing the content of the NOTICE file. | ||||
|  | ||||
|    7. Disclaimer of Warranty. Unless required by applicable law or | ||||
|       agreed to in writing, Licensor provides the Work (and each | ||||
|       Contributor provides its Contributions) on an "AS IS" BASIS, | ||||
|       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||||
|       implied, including, without limitation, any warranties or conditions | ||||
|       of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A | ||||
|       PARTICULAR PURPOSE. You are solely responsible for determining the | ||||
|       appropriateness of using or redistributing the Work and assume any | ||||
|       risks associated with Your exercise of permissions under this License. | ||||
|  | ||||
|    8. Limitation of Liability. In no event and under no legal theory, | ||||
|       whether in tort (including negligence), contract, or otherwise, | ||||
|       unless required by applicable law (such as deliberate and grossly | ||||
|       negligent acts) or agreed to in writing, shall any Contributor be | ||||
|       liable to You for damages, including any direct, indirect, special, | ||||
|       incidental, or consequential damages of any character arising as a | ||||
|       result of this License or out of the use or inability to use the | ||||
|       Work (including but not limited to damages for loss of goodwill, | ||||
|       work stoppage, computer failure or malfunction, or any and all | ||||
|       other commercial damages or losses), even if such Contributor | ||||
|       has been advised of the possibility of such damages. | ||||
|  | ||||
|    9. Accepting Warranty or Additional Liability. While redistributing | ||||
|       the Work or Derivative Works thereof, You may choose to offer, | ||||
|       and charge a fee for, acceptance of support, warranty, indemnity, | ||||
|       or other liability obligations and/or rights consistent with this | ||||
|       License. However, in accepting such obligations, You may act only | ||||
|       on Your own behalf and on Your sole responsibility, not on behalf | ||||
|       of any other Contributor, and only if You agree to indemnify, | ||||
|       defend, and hold each Contributor harmless for any liability | ||||
|       incurred by, or claims asserted against, such Contributor by reason | ||||
|       of your accepting any such warranty or additional liability. | ||||
|  | ||||
|    END OF TERMS AND CONDITIONS | ||||
|  | ||||
|    APPENDIX: How to apply the Apache License to your work. | ||||
|  | ||||
|       To apply the Apache License to your work, attach the following | ||||
|       boilerplate notice, with the fields enclosed by brackets "[]" | ||||
|       replaced with your own identifying information. (Don't include | ||||
|       the brackets!)  The text should be enclosed in the appropriate | ||||
|       comment syntax for the file format. We also recommend that a | ||||
|       file or class name and description of purpose be included on the | ||||
|       same "printed page" as the copyright notice for easier | ||||
|       identification within third-party archives. | ||||
|  | ||||
|    Copyright 2016-2017 The New York Times Company | ||||
|  | ||||
|    Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|    you may not use this file except in compliance with the License. | ||||
|    You may obtain a copy of the License at | ||||
|  | ||||
|        http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  | ||||
|    Unless required by applicable law or agreed to in writing, software | ||||
|    distributed under the License is distributed on an "AS IS" BASIS, | ||||
|    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|    See the License for the specific language governing permissions and | ||||
|    limitations under the License. | ||||
|  | ||||
| ------------------ | ||||
|  | ||||
| Files: s2/cmd/internal/readahead/* | ||||
|  | ||||
| The MIT License (MIT) | ||||
|  | ||||
| Copyright (c) 2015 Klaus Post | ||||
|  | ||||
| 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. | ||||
|  | ||||
| --------------------- | ||||
| Files: snappy/* | ||||
| Files: internal/snapref/* | ||||
|  | ||||
| Copyright (c) 2011 The Snappy-Go Authors. All rights reserved. | ||||
|  | ||||
| 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. | ||||
|    * Neither the name of Google Inc. nor the names of its | ||||
| contributors may be used to endorse or promote products derived from | ||||
| this software without specific prior written permission. | ||||
|  | ||||
| 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. | ||||
|  | ||||
| ----------------- | ||||
|  | ||||
| Files: s2/cmd/internal/filepathx/* | ||||
|  | ||||
| Copyright 2016 The filepathx Authors | ||||
|  | ||||
| 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. | ||||
|  | ||||
| = vendor/github.com/klauspost/compress/LICENSE d0fd9ebda39468b51ff4539c9fbb13a8 | ||||
							
								
								
									
										7
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								go.mod
									
									
									
									
									
								
							| @@ -35,7 +35,7 @@ require ( | ||||
| 	github.com/google/cadvisor v0.52.1 | ||||
| 	github.com/google/cel-go v0.23.2 | ||||
| 	github.com/google/gnostic-models v0.6.9 | ||||
| 	github.com/google/go-cmp v0.6.0 | ||||
| 	github.com/google/go-cmp v0.7.0 | ||||
| 	github.com/google/gofuzz v1.2.0 | ||||
| 	github.com/google/uuid v1.6.0 | ||||
| 	github.com/ishidawataru/sctp v0.0.0-20230406120618-7ff4192f6ff2 | ||||
| @@ -51,7 +51,7 @@ require ( | ||||
| 	github.com/opencontainers/selinux v1.11.1 | ||||
| 	github.com/pkg/errors v0.9.1 | ||||
| 	github.com/pmezard/go-difflib v1.0.0 | ||||
| 	github.com/prometheus/client_golang v1.20.5 | ||||
| 	github.com/prometheus/client_golang v1.22.0-rc.0 | ||||
| 	github.com/prometheus/client_model v0.6.1 | ||||
| 	github.com/prometheus/common v0.62.0 | ||||
| 	github.com/robfig/cron/v3 v3.0.1 | ||||
| @@ -82,7 +82,7 @@ require ( | ||||
| 	golang.org/x/tools v0.26.0 | ||||
| 	google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 | ||||
| 	google.golang.org/grpc v1.68.1 | ||||
| 	google.golang.org/protobuf v1.36.1 | ||||
| 	google.golang.org/protobuf v1.36.5 | ||||
| 	gopkg.in/evanphx/json-patch.v4 v4.12.0 | ||||
| 	gopkg.in/go-jose/go-jose.v2 v2.6.3 | ||||
| 	k8s.io/api v0.0.0 | ||||
| @@ -170,7 +170,6 @@ require ( | ||||
| 	github.com/josharian/intern v1.0.0 // indirect | ||||
| 	github.com/json-iterator/go v1.1.12 // indirect | ||||
| 	github.com/karrick/godirwalk v1.17.0 // indirect | ||||
| 	github.com/klauspost/compress v1.17.9 // indirect | ||||
| 	github.com/kylelemons/godebug v1.1.0 // indirect | ||||
| 	github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect | ||||
| 	github.com/mailru/easyjson v0.7.7 // indirect | ||||
|   | ||||
							
								
								
									
										16
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								go.sum
									
									
									
									
									
								
							| @@ -290,8 +290,8 @@ github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcb | ||||
| github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= | ||||
| github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -333,8 +333,8 @@ github.com/karrick/godirwalk v1.17.0 h1:b4kY7nqDdioR/6qnbHQyDvmA17u5G1cZ6J+CZXwS | ||||
| github.com/karrick/godirwalk v1.17.0/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= | ||||
| github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= | ||||
| github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | ||||
| github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= | ||||
| github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= | ||||
| github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= | ||||
| github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= | ||||
| github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= | ||||
| github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= | ||||
| github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= | ||||
| @@ -414,8 +414,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/pquerna/cachecontrol v0.1.0 h1:yJMy84ti9h/+OEWa752kBTKv4XC30OtVVHYv/8cTqKc= | ||||
| github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI= | ||||
| github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= | ||||
| github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0 h1:meoqLyZIVEIiQxZmyVTOnzk/bA+n2pN2MXN8pSzX2ws= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= | ||||
| github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= | ||||
| github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= | ||||
| github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= | ||||
| @@ -632,8 +632,8 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji | ||||
| google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= | ||||
| google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= | ||||
| google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -290,7 +290,6 @@ | ||||
|       "github.com/grpc-ecosystem/go-grpc-prometheus", | ||||
|       "github.com/grpc-ecosystem/grpc-gateway", | ||||
|       "github.com/json-iterator/go", | ||||
|       "github.com/klauspost/compress", | ||||
|       "github.com/mailru/easyjson", | ||||
|       "github.com/modern-go/concurrent", | ||||
|       "github.com/modern-go/reflect2", | ||||
|   | ||||
| @@ -15,7 +15,7 @@ require ( | ||||
| 	github.com/davecgh/go-spew v1.1.1 // indirect | ||||
| 	github.com/fxamacker/cbor/v2 v2.7.0 // indirect | ||||
| 	github.com/go-logr/logr v1.4.2 // indirect | ||||
| 	github.com/google/go-cmp v0.6.0 // indirect | ||||
| 	github.com/google/go-cmp v0.7.0 // indirect | ||||
| 	github.com/google/gofuzz v1.2.0 // indirect | ||||
| 	github.com/json-iterator/go v1.1.12 // indirect | ||||
| 	github.com/kr/pretty v0.3.1 // indirect | ||||
|   | ||||
							
								
								
									
										6
									
								
								staging/src/k8s.io/api/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								staging/src/k8s.io/api/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -14,8 +14,8 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= | ||||
| github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -95,7 +95,7 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T | ||||
| golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -12,7 +12,7 @@ require ( | ||||
| 	github.com/gogo/protobuf v1.3.2 | ||||
| 	github.com/google/cel-go v0.23.2 | ||||
| 	github.com/google/gnostic-models v0.6.9 | ||||
| 	github.com/google/go-cmp v0.6.0 | ||||
| 	github.com/google/go-cmp v0.7.0 | ||||
| 	github.com/google/gofuzz v1.2.0 | ||||
| 	github.com/google/uuid v1.6.0 | ||||
| 	github.com/spf13/cobra v1.8.1 | ||||
| @@ -23,7 +23,7 @@ require ( | ||||
| 	go.opentelemetry.io/otel v1.33.0 | ||||
| 	go.opentelemetry.io/otel/trace v1.33.0 | ||||
| 	google.golang.org/grpc v1.68.1 | ||||
| 	google.golang.org/protobuf v1.36.1 | ||||
| 	google.golang.org/protobuf v1.36.5 | ||||
| 	gopkg.in/evanphx/json-patch.v4 v4.12.0 | ||||
| 	k8s.io/api v0.0.0 | ||||
| 	k8s.io/apimachinery v0.0.0 | ||||
| @@ -70,7 +70,6 @@ require ( | ||||
| 	github.com/jonboulle/clockwork v0.4.0 // indirect | ||||
| 	github.com/josharian/intern v1.0.0 // indirect | ||||
| 	github.com/json-iterator/go v1.1.12 // indirect | ||||
| 	github.com/klauspost/compress v1.17.9 // indirect | ||||
| 	github.com/kylelemons/godebug v1.1.0 // indirect | ||||
| 	github.com/mailru/easyjson v0.7.7 // indirect | ||||
| 	github.com/moby/spdystream v0.5.0 // indirect | ||||
| @@ -80,7 +79,7 @@ require ( | ||||
| 	github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect | ||||
| 	github.com/pkg/errors v0.9.1 // indirect | ||||
| 	github.com/pmezard/go-difflib v1.0.0 // indirect | ||||
| 	github.com/prometheus/client_golang v1.20.5 // indirect | ||||
| 	github.com/prometheus/client_golang v1.22.0-rc.0 // indirect | ||||
| 	github.com/prometheus/client_model v0.6.1 // indirect | ||||
| 	github.com/prometheus/common v0.62.0 // indirect | ||||
| 	github.com/prometheus/procfs v0.15.1 // indirect | ||||
|   | ||||
							
								
								
									
										16
									
								
								staging/src/k8s.io/apiextensions-apiserver/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										16
									
								
								staging/src/k8s.io/apiextensions-apiserver/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -216,8 +216,8 @@ github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcb | ||||
| github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= | ||||
| github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -250,8 +250,8 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm | ||||
| github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= | ||||
| github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= | ||||
| github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | ||||
| github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= | ||||
| github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= | ||||
| github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= | ||||
| github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= | ||||
| github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= | ||||
| github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= | ||||
| github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= | ||||
| @@ -292,8 +292,8 @@ github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1 | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI= | ||||
| github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= | ||||
| github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0 h1:meoqLyZIVEIiQxZmyVTOnzk/bA+n2pN2MXN8pSzX2ws= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= | ||||
| github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= | ||||
| github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= | ||||
| github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= | ||||
| @@ -488,8 +488,8 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji | ||||
| google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= | ||||
| google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= | ||||
| google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -12,7 +12,7 @@ require ( | ||||
| 	github.com/fxamacker/cbor/v2 v2.7.0 | ||||
| 	github.com/gogo/protobuf v1.3.2 | ||||
| 	github.com/google/gnostic-models v0.6.9 | ||||
| 	github.com/google/go-cmp v0.6.0 | ||||
| 	github.com/google/go-cmp v0.7.0 | ||||
| 	github.com/google/gofuzz v1.2.0 | ||||
| 	github.com/google/uuid v1.6.0 | ||||
| 	github.com/moby/spdystream v0.5.0 | ||||
| @@ -49,6 +49,6 @@ require ( | ||||
| 	github.com/x448/float16 v0.8.4 // indirect | ||||
| 	golang.org/x/sys v0.30.0 // indirect | ||||
| 	golang.org/x/text v0.22.0 // indirect | ||||
| 	google.golang.org/protobuf v1.36.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.5 // indirect | ||||
| 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||
| ) | ||||
|   | ||||
							
								
								
									
										8
									
								
								staging/src/k8s.io/apimachinery/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								staging/src/k8s.io/apimachinery/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -26,8 +26,8 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS | ||||
| github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -125,8 +125,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T | ||||
| golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -17,7 +17,7 @@ require ( | ||||
| 	github.com/google/btree v1.1.3 | ||||
| 	github.com/google/cel-go v0.23.2 | ||||
| 	github.com/google/gnostic-models v0.6.9 | ||||
| 	github.com/google/go-cmp v0.6.0 | ||||
| 	github.com/google/go-cmp v0.7.0 | ||||
| 	github.com/google/gofuzz v1.2.0 | ||||
| 	github.com/google/uuid v1.6.0 | ||||
| 	github.com/gorilla/websocket v1.5.3 | ||||
| @@ -45,7 +45,7 @@ require ( | ||||
| 	golang.org/x/time v0.9.0 | ||||
| 	google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 | ||||
| 	google.golang.org/grpc v1.68.1 | ||||
| 	google.golang.org/protobuf v1.36.1 | ||||
| 	google.golang.org/protobuf v1.36.5 | ||||
| 	gopkg.in/evanphx/json-patch.v4 v4.12.0 | ||||
| 	gopkg.in/go-jose/go-jose.v2 v2.6.3 | ||||
| 	gopkg.in/natefinch/lumberjack.v2 v2.2.1 | ||||
| @@ -88,7 +88,6 @@ require ( | ||||
| 	github.com/jonboulle/clockwork v0.4.0 // indirect | ||||
| 	github.com/josharian/intern v1.0.0 // indirect | ||||
| 	github.com/json-iterator/go v1.1.12 // indirect | ||||
| 	github.com/klauspost/compress v1.17.9 // indirect | ||||
| 	github.com/kylelemons/godebug v1.1.0 // indirect | ||||
| 	github.com/mailru/easyjson v0.7.7 // indirect | ||||
| 	github.com/moby/spdystream v0.5.0 // indirect | ||||
| @@ -97,7 +96,7 @@ require ( | ||||
| 	github.com/pkg/errors v0.9.1 // indirect | ||||
| 	github.com/pmezard/go-difflib v1.0.0 // indirect | ||||
| 	github.com/pquerna/cachecontrol v0.1.0 // indirect | ||||
| 	github.com/prometheus/client_golang v1.20.5 // indirect | ||||
| 	github.com/prometheus/client_golang v1.22.0-rc.0 // indirect | ||||
| 	github.com/prometheus/client_model v0.6.1 // indirect | ||||
| 	github.com/prometheus/common v0.62.0 // indirect | ||||
| 	github.com/prometheus/procfs v0.15.1 // indirect | ||||
|   | ||||
							
								
								
									
										16
									
								
								staging/src/k8s.io/apiserver/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										16
									
								
								staging/src/k8s.io/apiserver/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -217,8 +217,8 @@ github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcb | ||||
| github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= | ||||
| github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -251,8 +251,8 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm | ||||
| github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= | ||||
| github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= | ||||
| github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | ||||
| github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= | ||||
| github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= | ||||
| github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= | ||||
| github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= | ||||
| github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= | ||||
| github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= | ||||
| github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= | ||||
| @@ -294,8 +294,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/pquerna/cachecontrol v0.1.0 h1:yJMy84ti9h/+OEWa752kBTKv4XC30OtVVHYv/8cTqKc= | ||||
| github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI= | ||||
| github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= | ||||
| github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0 h1:meoqLyZIVEIiQxZmyVTOnzk/bA+n2pN2MXN8pSzX2ws= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= | ||||
| github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= | ||||
| github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= | ||||
| github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= | ||||
| @@ -488,8 +488,8 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji | ||||
| google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= | ||||
| google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= | ||||
| google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -8,7 +8,7 @@ godebug default=go1.24 | ||||
|  | ||||
| require ( | ||||
| 	github.com/google/gnostic-models v0.6.9 | ||||
| 	github.com/google/go-cmp v0.6.0 | ||||
| 	github.com/google/go-cmp v0.7.0 | ||||
| 	github.com/google/uuid v1.6.0 | ||||
| 	github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de | ||||
| 	github.com/moby/term v0.5.0 | ||||
| @@ -63,7 +63,7 @@ require ( | ||||
| 	golang.org/x/sys v0.30.0 // indirect | ||||
| 	golang.org/x/term v0.29.0 // indirect | ||||
| 	golang.org/x/time v0.9.0 // indirect | ||||
| 	google.golang.org/protobuf v1.36.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.5 // indirect | ||||
| 	gopkg.in/inf.v0 v0.9.1 // indirect | ||||
| 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||
| 	sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect | ||||
|   | ||||
							
								
								
									
										8
									
								
								staging/src/k8s.io/cli-runtime/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								staging/src/k8s.io/cli-runtime/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -38,8 +38,8 @@ github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl76 | ||||
| github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -167,8 +167,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T | ||||
| golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -10,7 +10,7 @@ require ( | ||||
| 	github.com/go-logr/logr v1.4.2 | ||||
| 	github.com/gogo/protobuf v1.3.2 | ||||
| 	github.com/google/gnostic-models v0.6.9 | ||||
| 	github.com/google/go-cmp v0.6.0 | ||||
| 	github.com/google/go-cmp v0.7.0 | ||||
| 	github.com/google/gofuzz v1.2.0 | ||||
| 	github.com/google/uuid v1.6.0 | ||||
| 	github.com/gorilla/websocket v1.5.3 | ||||
| @@ -24,7 +24,7 @@ require ( | ||||
| 	golang.org/x/oauth2 v0.27.0 | ||||
| 	golang.org/x/term v0.29.0 | ||||
| 	golang.org/x/time v0.9.0 | ||||
| 	google.golang.org/protobuf v1.36.1 | ||||
| 	google.golang.org/protobuf v1.36.5 | ||||
| 	gopkg.in/evanphx/json-patch.v4 v4.12.0 | ||||
| 	k8s.io/api v0.0.0 | ||||
| 	k8s.io/apimachinery v0.0.0 | ||||
|   | ||||
							
								
								
									
										8
									
								
								staging/src/k8s.io/client-go/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								staging/src/k8s.io/client-go/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -31,8 +31,8 @@ github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl76 | ||||
| github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -146,8 +146,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T | ||||
| golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -7,7 +7,7 @@ go 1.24.0 | ||||
| godebug default=go1.24 | ||||
|  | ||||
| require ( | ||||
| 	github.com/google/go-cmp v0.6.0 | ||||
| 	github.com/google/go-cmp v0.7.0 | ||||
| 	github.com/spf13/cobra v1.8.1 | ||||
| 	github.com/spf13/pflag v1.0.5 | ||||
| 	github.com/stretchr/testify v1.10.0 | ||||
| @@ -56,7 +56,6 @@ require ( | ||||
| 	github.com/inconshreveable/mousetrap v1.1.0 // indirect | ||||
| 	github.com/josharian/intern v1.0.0 // indirect | ||||
| 	github.com/json-iterator/go v1.1.12 // indirect | ||||
| 	github.com/klauspost/compress v1.17.9 // indirect | ||||
| 	github.com/kylelemons/godebug v1.1.0 // indirect | ||||
| 	github.com/mailru/easyjson v0.7.7 // indirect | ||||
| 	github.com/moby/term v0.5.0 // indirect | ||||
| @@ -65,7 +64,7 @@ require ( | ||||
| 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect | ||||
| 	github.com/pkg/errors v0.9.1 // indirect | ||||
| 	github.com/pmezard/go-difflib v1.0.0 // indirect | ||||
| 	github.com/prometheus/client_golang v1.20.5 // indirect | ||||
| 	github.com/prometheus/client_golang v1.22.0-rc.0 // indirect | ||||
| 	github.com/prometheus/client_model v0.6.1 // indirect | ||||
| 	github.com/prometheus/common v0.62.0 // indirect | ||||
| 	github.com/prometheus/procfs v0.15.1 // indirect | ||||
| @@ -98,7 +97,7 @@ require ( | ||||
| 	google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 // indirect | ||||
| 	google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 // indirect | ||||
| 	google.golang.org/grpc v1.68.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.5 // indirect | ||||
| 	gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect | ||||
| 	gopkg.in/inf.v0 v0.9.1 // indirect | ||||
| 	gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect | ||||
|   | ||||
							
								
								
									
										16
									
								
								staging/src/k8s.io/cloud-provider/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										16
									
								
								staging/src/k8s.io/cloud-provider/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -77,8 +77,8 @@ github.com/google/cel-go v0.23.2/go.mod h1:52Pb6QsDbC5kvgxvZhiL9QX1oZEkcUF/ZqaPx | ||||
| github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -109,8 +109,8 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm | ||||
| github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= | ||||
| github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= | ||||
| github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | ||||
| github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= | ||||
| github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= | ||||
| github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= | ||||
| github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= | ||||
| github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= | ||||
| github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= | ||||
| github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= | ||||
| @@ -146,8 +146,8 @@ github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1 | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI= | ||||
| github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= | ||||
| github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0 h1:meoqLyZIVEIiQxZmyVTOnzk/bA+n2pN2MXN8pSzX2ws= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= | ||||
| github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= | ||||
| github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= | ||||
| github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= | ||||
| @@ -286,8 +286,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 h1: | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= | ||||
| google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= | ||||
| google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
							
								
								
									
										6
									
								
								staging/src/k8s.io/cluster-bootstrap/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								staging/src/k8s.io/cluster-bootstrap/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -14,8 +14,8 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= | ||||
| github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -92,7 +92,7 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T | ||||
| golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -25,7 +25,7 @@ require ( | ||||
| 	github.com/go-openapi/swag v0.23.0 // indirect | ||||
| 	github.com/gogo/protobuf v1.3.2 // indirect | ||||
| 	github.com/google/gnostic-models v0.6.9 // indirect | ||||
| 	github.com/google/go-cmp v0.6.0 // indirect | ||||
| 	github.com/google/go-cmp v0.7.0 // indirect | ||||
| 	github.com/google/gofuzz v1.2.0 // indirect | ||||
| 	github.com/google/uuid v1.6.0 // indirect | ||||
| 	github.com/josharian/intern v1.0.0 // indirect | ||||
| @@ -42,7 +42,7 @@ require ( | ||||
| 	golang.org/x/term v0.29.0 // indirect | ||||
| 	golang.org/x/text v0.22.0 // indirect | ||||
| 	golang.org/x/time v0.9.0 // indirect | ||||
| 	google.golang.org/protobuf v1.36.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.5 // indirect | ||||
| 	gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect | ||||
| 	gopkg.in/inf.v0 v0.9.1 // indirect | ||||
| 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||
|   | ||||
| @@ -24,8 +24,8 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 | ||||
| github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -123,8 +123,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T | ||||
| golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -9,7 +9,7 @@ godebug default=go1.24 | ||||
| require ( | ||||
| 	github.com/gogo/protobuf v1.3.2 | ||||
| 	github.com/google/gnostic-models v0.6.9 | ||||
| 	github.com/google/go-cmp v0.6.0 | ||||
| 	github.com/google/go-cmp v0.7.0 | ||||
| 	github.com/google/gofuzz v1.2.0 | ||||
| 	github.com/spf13/pflag v1.0.5 | ||||
| 	golang.org/x/text v0.22.0 | ||||
| @@ -40,7 +40,7 @@ require ( | ||||
| 	golang.org/x/net v0.33.0 // indirect | ||||
| 	golang.org/x/sync v0.11.0 // indirect | ||||
| 	golang.org/x/tools v0.26.0 // indirect | ||||
| 	google.golang.org/protobuf v1.36.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.5 // indirect | ||||
| 	gopkg.in/inf.v0 v0.9.1 // indirect | ||||
| 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||
| 	sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect | ||||
|   | ||||
							
								
								
									
										8
									
								
								staging/src/k8s.io/code-generator/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								staging/src/k8s.io/code-generator/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -27,8 +27,8 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS | ||||
| github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -125,8 +125,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T | ||||
| golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -10,10 +10,10 @@ require ( | ||||
| 	github.com/blang/semver/v4 v4.0.0 | ||||
| 	github.com/go-logr/logr v1.4.2 | ||||
| 	github.com/go-logr/zapr v1.3.0 | ||||
| 	github.com/google/go-cmp v0.6.0 | ||||
| 	github.com/google/go-cmp v0.7.0 | ||||
| 	github.com/moby/term v0.5.0 | ||||
| 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 | ||||
| 	github.com/prometheus/client_golang v1.20.5 | ||||
| 	github.com/prometheus/client_golang v1.22.0-rc.0 | ||||
| 	github.com/prometheus/client_model v0.6.1 | ||||
| 	github.com/prometheus/common v0.62.0 | ||||
| 	github.com/prometheus/procfs v0.15.1 | ||||
| @@ -56,7 +56,6 @@ require ( | ||||
| 	github.com/inconshreveable/mousetrap v1.1.0 // indirect | ||||
| 	github.com/josharian/intern v1.0.0 // indirect | ||||
| 	github.com/json-iterator/go v1.1.12 // indirect | ||||
| 	github.com/klauspost/compress v1.17.9 // indirect | ||||
| 	github.com/kylelemons/godebug v1.1.0 // indirect | ||||
| 	github.com/mailru/easyjson v0.7.7 // indirect | ||||
| 	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect | ||||
| @@ -77,7 +76,7 @@ require ( | ||||
| 	google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 // indirect | ||||
| 	google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 // indirect | ||||
| 	google.golang.org/grpc v1.68.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.5 // indirect | ||||
| 	gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect | ||||
| 	gopkg.in/inf.v0 v0.9.1 // indirect | ||||
| 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||
|   | ||||
							
								
								
									
										16
									
								
								staging/src/k8s.io/component-base/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										16
									
								
								staging/src/k8s.io/component-base/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -58,8 +58,8 @@ github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl76 | ||||
| github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -81,8 +81,8 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm | ||||
| github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= | ||||
| github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= | ||||
| github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | ||||
| github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= | ||||
| github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= | ||||
| github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= | ||||
| github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= | ||||
| github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= | ||||
| github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= | ||||
| github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= | ||||
| @@ -116,8 +116,8 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE | ||||
| github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= | ||||
| github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0 h1:meoqLyZIVEIiQxZmyVTOnzk/bA+n2pN2MXN8pSzX2ws= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= | ||||
| github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= | ||||
| github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= | ||||
| github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= | ||||
| @@ -221,8 +221,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 h1: | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= | ||||
| google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= | ||||
| google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -7,7 +7,7 @@ go 1.24.0 | ||||
| godebug default=go1.24 | ||||
|  | ||||
| require ( | ||||
| 	github.com/google/go-cmp v0.6.0 | ||||
| 	github.com/google/go-cmp v0.7.0 | ||||
| 	github.com/stretchr/testify v1.10.0 | ||||
| 	k8s.io/api v0.0.0 | ||||
| 	k8s.io/apimachinery v0.0.0 | ||||
| @@ -43,7 +43,7 @@ require ( | ||||
| 	golang.org/x/term v0.29.0 // indirect | ||||
| 	golang.org/x/text v0.22.0 // indirect | ||||
| 	golang.org/x/time v0.9.0 // indirect | ||||
| 	google.golang.org/protobuf v1.36.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.5 // indirect | ||||
| 	gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect | ||||
| 	gopkg.in/inf.v0 v0.9.1 // indirect | ||||
| 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||
|   | ||||
							
								
								
									
										8
									
								
								staging/src/k8s.io/component-helpers/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								staging/src/k8s.io/component-helpers/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -28,8 +28,8 @@ github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl76 | ||||
| github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -135,8 +135,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T | ||||
| golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -43,7 +43,7 @@ require ( | ||||
| 	github.com/golang/protobuf v1.5.4 // indirect | ||||
| 	github.com/google/cel-go v0.23.2 // indirect | ||||
| 	github.com/google/gnostic-models v0.6.9 // indirect | ||||
| 	github.com/google/go-cmp v0.6.0 // indirect | ||||
| 	github.com/google/go-cmp v0.7.0 // indirect | ||||
| 	github.com/google/gofuzz v1.2.0 // indirect | ||||
| 	github.com/google/uuid v1.6.0 // indirect | ||||
| 	github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect | ||||
| @@ -51,7 +51,6 @@ require ( | ||||
| 	github.com/inconshreveable/mousetrap v1.1.0 // indirect | ||||
| 	github.com/josharian/intern v1.0.0 // indirect | ||||
| 	github.com/json-iterator/go v1.1.12 // indirect | ||||
| 	github.com/klauspost/compress v1.17.9 // indirect | ||||
| 	github.com/kylelemons/godebug v1.1.0 // indirect | ||||
| 	github.com/mailru/easyjson v0.7.7 // indirect | ||||
| 	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect | ||||
| @@ -59,7 +58,7 @@ require ( | ||||
| 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect | ||||
| 	github.com/pkg/errors v0.9.1 // indirect | ||||
| 	github.com/pmezard/go-difflib v1.0.0 // indirect | ||||
| 	github.com/prometheus/client_golang v1.20.5 // indirect | ||||
| 	github.com/prometheus/client_golang v1.22.0-rc.0 // indirect | ||||
| 	github.com/prometheus/client_model v0.6.1 // indirect | ||||
| 	github.com/prometheus/common v0.62.0 // indirect | ||||
| 	github.com/prometheus/procfs v0.15.1 // indirect | ||||
| @@ -92,7 +91,7 @@ require ( | ||||
| 	google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 // indirect | ||||
| 	google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 // indirect | ||||
| 	google.golang.org/grpc v1.68.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.5 // indirect | ||||
| 	gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect | ||||
| 	gopkg.in/inf.v0 v0.9.1 // indirect | ||||
| 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||
|   | ||||
							
								
								
									
										16
									
								
								staging/src/k8s.io/controller-manager/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										16
									
								
								staging/src/k8s.io/controller-manager/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -74,8 +74,8 @@ github.com/google/cel-go v0.23.2/go.mod h1:52Pb6QsDbC5kvgxvZhiL9QX1oZEkcUF/ZqaPx | ||||
| github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -106,8 +106,8 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm | ||||
| github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= | ||||
| github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= | ||||
| github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | ||||
| github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= | ||||
| github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= | ||||
| github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= | ||||
| github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= | ||||
| github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= | ||||
| github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= | ||||
| github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= | ||||
| @@ -142,8 +142,8 @@ github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1 | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI= | ||||
| github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= | ||||
| github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0 h1:meoqLyZIVEIiQxZmyVTOnzk/bA+n2pN2MXN8pSzX2ws= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= | ||||
| github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= | ||||
| github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= | ||||
| github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= | ||||
| @@ -281,8 +281,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 h1: | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= | ||||
| google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= | ||||
| google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -14,6 +14,7 @@ require ( | ||||
|  | ||||
| require ( | ||||
| 	github.com/davecgh/go-spew v1.1.1 // indirect | ||||
| 	github.com/google/go-cmp v0.7.0 // indirect | ||||
| 	github.com/kr/pretty v0.3.1 // indirect | ||||
| 	github.com/pmezard/go-difflib v1.0.0 // indirect | ||||
| 	github.com/rogpeppe/go-internal v1.13.1 // indirect | ||||
| @@ -21,7 +22,7 @@ require ( | ||||
| 	golang.org/x/sys v0.30.0 // indirect | ||||
| 	golang.org/x/text v0.22.0 // indirect | ||||
| 	google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 // indirect | ||||
| 	google.golang.org/protobuf v1.36.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.5 // indirect | ||||
| 	gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect | ||||
| 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||
| ) | ||||
|   | ||||
							
								
								
									
										8
									
								
								staging/src/k8s.io/cri-api/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								staging/src/k8s.io/cri-api/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -13,8 +13,8 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 | ||||
| github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= | ||||
| github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= | ||||
| github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | ||||
| github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= | ||||
| github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | ||||
| @@ -79,8 +79,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 h1: | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= | ||||
| google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= | ||||
| google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -45,13 +45,12 @@ require ( | ||||
| 	github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0 // indirect | ||||
| 	github.com/josharian/intern v1.0.0 // indirect | ||||
| 	github.com/json-iterator/go v1.1.12 // indirect | ||||
| 	github.com/klauspost/compress v1.17.9 // indirect | ||||
| 	github.com/mailru/easyjson v0.7.7 // indirect | ||||
| 	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect | ||||
| 	github.com/modern-go/reflect2 v1.0.2 // indirect | ||||
| 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect | ||||
| 	github.com/pmezard/go-difflib v1.0.0 // indirect | ||||
| 	github.com/prometheus/client_golang v1.20.5 // indirect | ||||
| 	github.com/prometheus/client_golang v1.22.0-rc.0 // indirect | ||||
| 	github.com/prometheus/client_model v0.6.1 // indirect | ||||
| 	github.com/prometheus/common v0.62.0 // indirect | ||||
| 	github.com/prometheus/procfs v0.15.1 // indirect | ||||
| @@ -70,7 +69,7 @@ require ( | ||||
| 	golang.org/x/time v0.9.0 // indirect | ||||
| 	google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 // indirect | ||||
| 	google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 // indirect | ||||
| 	google.golang.org/protobuf v1.36.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.5 // indirect | ||||
| 	gopkg.in/inf.v0 v0.9.1 // indirect | ||||
| 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||
| 	k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 // indirect | ||||
|   | ||||
							
								
								
									
										16
									
								
								staging/src/k8s.io/cri-client/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										16
									
								
								staging/src/k8s.io/cri-client/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -56,8 +56,8 @@ github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl76 | ||||
| github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -77,8 +77,8 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm | ||||
| github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= | ||||
| github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= | ||||
| github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | ||||
| github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= | ||||
| github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= | ||||
| github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= | ||||
| github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= | ||||
| github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= | ||||
| github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= | ||||
| github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= | ||||
| @@ -108,8 +108,8 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE | ||||
| github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= | ||||
| github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0 h1:meoqLyZIVEIiQxZmyVTOnzk/bA+n2pN2MXN8pSzX2ws= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= | ||||
| github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= | ||||
| github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= | ||||
| github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= | ||||
| @@ -208,8 +208,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 h1: | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= | ||||
| google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= | ||||
| google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
							
								
								
									
										6
									
								
								staging/src/k8s.io/csi-translation-lib/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								staging/src/k8s.io/csi-translation-lib/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -14,8 +14,8 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= | ||||
| github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -92,7 +92,7 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T | ||||
| golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -9,7 +9,7 @@ godebug default=go1.24 | ||||
| require ( | ||||
| 	github.com/blang/semver/v4 v4.0.0 | ||||
| 	github.com/google/cel-go v0.23.2 | ||||
| 	github.com/google/go-cmp v0.6.0 | ||||
| 	github.com/google/go-cmp v0.7.0 | ||||
| 	github.com/onsi/gomega v1.35.1 | ||||
| 	github.com/stretchr/testify v1.10.0 | ||||
| 	google.golang.org/grpc v1.68.1 | ||||
| @@ -42,14 +42,13 @@ require ( | ||||
| 	github.com/inconshreveable/mousetrap v1.1.0 // indirect | ||||
| 	github.com/josharian/intern v1.0.0 // indirect | ||||
| 	github.com/json-iterator/go v1.1.12 // indirect | ||||
| 	github.com/klauspost/compress v1.17.9 // indirect | ||||
| 	github.com/mailru/easyjson v0.7.7 // indirect | ||||
| 	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect | ||||
| 	github.com/modern-go/reflect2 v1.0.2 // indirect | ||||
| 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect | ||||
| 	github.com/pkg/errors v0.9.1 // indirect | ||||
| 	github.com/pmezard/go-difflib v1.0.0 // indirect | ||||
| 	github.com/prometheus/client_golang v1.20.5 // indirect | ||||
| 	github.com/prometheus/client_golang v1.22.0-rc.0 // indirect | ||||
| 	github.com/prometheus/client_model v0.6.1 // indirect | ||||
| 	github.com/prometheus/common v0.62.0 // indirect | ||||
| 	github.com/prometheus/procfs v0.15.1 // indirect | ||||
| @@ -69,7 +68,7 @@ require ( | ||||
| 	golang.org/x/time v0.9.0 // indirect | ||||
| 	google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 // indirect | ||||
| 	google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 // indirect | ||||
| 	google.golang.org/protobuf v1.36.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.5 // indirect | ||||
| 	gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect | ||||
| 	gopkg.in/inf.v0 v0.9.1 // indirect | ||||
| 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||
|   | ||||
| @@ -60,8 +60,8 @@ github.com/google/cel-go v0.23.2/go.mod h1:52Pb6QsDbC5kvgxvZhiL9QX1oZEkcUF/ZqaPx | ||||
| github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -86,8 +86,8 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm | ||||
| github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= | ||||
| github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= | ||||
| github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | ||||
| github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= | ||||
| github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= | ||||
| github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= | ||||
| github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= | ||||
| github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= | ||||
| github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= | ||||
| github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= | ||||
| @@ -121,8 +121,8 @@ github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1 | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI= | ||||
| github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= | ||||
| github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0 h1:meoqLyZIVEIiQxZmyVTOnzk/bA+n2pN2MXN8pSzX2ws= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= | ||||
| github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= | ||||
| github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= | ||||
| github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= | ||||
| @@ -234,8 +234,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 h1: | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= | ||||
| google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= | ||||
| google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -7,7 +7,7 @@ go 1.24.0 | ||||
| godebug default=go1.24 | ||||
|  | ||||
| require ( | ||||
| 	github.com/google/go-cmp v0.6.0 | ||||
| 	github.com/google/go-cmp v0.7.0 | ||||
| 	github.com/stretchr/testify v1.10.0 | ||||
| 	k8s.io/api v0.0.0 | ||||
| 	k8s.io/apimachinery v0.0.0 | ||||
| @@ -34,7 +34,6 @@ require ( | ||||
| 	github.com/google/uuid v1.6.0 // indirect | ||||
| 	github.com/josharian/intern v1.0.0 // indirect | ||||
| 	github.com/json-iterator/go v1.1.12 // indirect | ||||
| 	github.com/klauspost/compress v1.17.9 // indirect | ||||
| 	github.com/kylelemons/godebug v1.1.0 // indirect | ||||
| 	github.com/mailru/easyjson v0.7.7 // indirect | ||||
| 	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect | ||||
| @@ -42,7 +41,7 @@ require ( | ||||
| 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect | ||||
| 	github.com/pkg/errors v0.9.1 // indirect | ||||
| 	github.com/pmezard/go-difflib v1.0.0 // indirect | ||||
| 	github.com/prometheus/client_golang v1.20.5 // indirect | ||||
| 	github.com/prometheus/client_golang v1.22.0-rc.0 // indirect | ||||
| 	github.com/prometheus/client_model v0.6.1 // indirect | ||||
| 	github.com/prometheus/common v0.62.0 // indirect | ||||
| 	github.com/prometheus/procfs v0.15.1 // indirect | ||||
| @@ -56,7 +55,7 @@ require ( | ||||
| 	golang.org/x/term v0.29.0 // indirect | ||||
| 	golang.org/x/text v0.22.0 // indirect | ||||
| 	golang.org/x/time v0.9.0 // indirect | ||||
| 	google.golang.org/protobuf v1.36.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.5 // indirect | ||||
| 	gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect | ||||
| 	gopkg.in/inf.v0 v0.9.1 // indirect | ||||
| 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||
|   | ||||
							
								
								
									
										16
									
								
								staging/src/k8s.io/endpointslice/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										16
									
								
								staging/src/k8s.io/endpointslice/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -41,8 +41,8 @@ github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl76 | ||||
| github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -62,8 +62,8 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm | ||||
| github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= | ||||
| github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= | ||||
| github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | ||||
| github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= | ||||
| github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= | ||||
| github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= | ||||
| github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= | ||||
| github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= | ||||
| github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= | ||||
| github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= | ||||
| @@ -95,8 +95,8 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= | ||||
| github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= | ||||
| github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0 h1:meoqLyZIVEIiQxZmyVTOnzk/bA+n2pN2MXN8pSzX2ws= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= | ||||
| github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= | ||||
| github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= | ||||
| github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= | ||||
| @@ -184,8 +184,8 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T | ||||
| google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576/go.mod h1:1R3kvZ1dtP3+4p4d3G8uJ8rFk/fWlScl38vanWACI08= | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= | ||||
| google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -9,10 +9,11 @@ godebug default=go1.24 | ||||
| require ( | ||||
| 	github.com/gogo/protobuf v1.3.2 | ||||
| 	google.golang.org/grpc v1.68.1 | ||||
| 	google.golang.org/protobuf v1.36.1 | ||||
| 	google.golang.org/protobuf v1.36.5 | ||||
| ) | ||||
|  | ||||
| require ( | ||||
| 	github.com/google/go-cmp v0.7.0 // indirect | ||||
| 	golang.org/x/net v0.33.0 // indirect | ||||
| 	golang.org/x/sys v0.30.0 // indirect | ||||
| 	golang.org/x/text v0.22.0 // indirect | ||||
|   | ||||
							
								
								
									
										8
									
								
								staging/src/k8s.io/externaljwt/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								staging/src/k8s.io/externaljwt/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -10,8 +10,8 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 | ||||
| github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= | ||||
| github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= | ||||
| github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | ||||
| github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= | ||||
| github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | ||||
| @@ -60,5 +60,5 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 h1: | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= | ||||
| google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= | ||||
| google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
|   | ||||
| @@ -12,9 +12,10 @@ require ( | ||||
| ) | ||||
|  | ||||
| require ( | ||||
| 	github.com/google/go-cmp v0.7.0 // indirect | ||||
| 	golang.org/x/net v0.33.0 // indirect | ||||
| 	golang.org/x/sys v0.30.0 // indirect | ||||
| 	golang.org/x/text v0.22.0 // indirect | ||||
| 	google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 // indirect | ||||
| 	google.golang.org/protobuf v1.36.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.5 // indirect | ||||
| ) | ||||
|   | ||||
							
								
								
									
										8
									
								
								staging/src/k8s.io/kms/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								staging/src/k8s.io/kms/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -10,8 +10,8 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 | ||||
| github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= | ||||
| github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= | ||||
| github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | ||||
| github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= | ||||
| github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | ||||
| @@ -60,5 +60,5 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 h1: | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= | ||||
| google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= | ||||
| google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
|   | ||||
| @@ -19,7 +19,7 @@ require ( | ||||
| 	golang.org/x/text v0.22.0 // indirect | ||||
| 	google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 // indirect | ||||
| 	google.golang.org/grpc v1.68.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.5 // indirect | ||||
| ) | ||||
|  | ||||
| replace k8s.io/kms => ../../../../kms | ||||
|   | ||||
| @@ -6,8 +6,8 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= | ||||
| github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= | ||||
| github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= | ||||
| github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= | ||||
| github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | ||||
| github.com/miekg/pkcs11 v1.0.3-0.20190429190417-a667d056470f h1:eVB9ELsoq5ouItQBr5Tj334bhPJG/MX+m7rTchmzVUQ= | ||||
| @@ -59,5 +59,5 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 h1: | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= | ||||
| google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= | ||||
| google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
|   | ||||
| @@ -9,7 +9,7 @@ godebug default=go1.24 | ||||
| require ( | ||||
| 	github.com/emicklei/go-restful/v3 v3.11.0 | ||||
| 	github.com/gogo/protobuf v1.3.2 | ||||
| 	github.com/google/go-cmp v0.6.0 | ||||
| 	github.com/google/go-cmp v0.7.0 | ||||
| 	github.com/google/gofuzz v1.2.0 | ||||
| 	github.com/spf13/cobra v1.8.1 | ||||
| 	github.com/spf13/pflag v1.0.5 | ||||
| @@ -60,7 +60,6 @@ require ( | ||||
| 	github.com/inconshreveable/mousetrap v1.1.0 // indirect | ||||
| 	github.com/josharian/intern v1.0.0 // indirect | ||||
| 	github.com/json-iterator/go v1.1.12 // indirect | ||||
| 	github.com/klauspost/compress v1.17.9 // indirect | ||||
| 	github.com/kylelemons/godebug v1.1.0 // indirect | ||||
| 	github.com/mailru/easyjson v0.7.7 // indirect | ||||
| 	github.com/moby/spdystream v0.5.0 // indirect | ||||
| @@ -70,7 +69,7 @@ require ( | ||||
| 	github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect | ||||
| 	github.com/pkg/errors v0.9.1 // indirect | ||||
| 	github.com/pmezard/go-difflib v1.0.0 // indirect | ||||
| 	github.com/prometheus/client_golang v1.20.5 // indirect | ||||
| 	github.com/prometheus/client_golang v1.22.0-rc.0 // indirect | ||||
| 	github.com/prometheus/client_model v0.6.1 // indirect | ||||
| 	github.com/prometheus/common v0.62.0 // indirect | ||||
| 	github.com/prometheus/procfs v0.15.1 // indirect | ||||
| @@ -101,7 +100,7 @@ require ( | ||||
| 	google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 // indirect | ||||
| 	google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 // indirect | ||||
| 	google.golang.org/grpc v1.68.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.5 // indirect | ||||
| 	gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect | ||||
| 	gopkg.in/inf.v0 v0.9.1 // indirect | ||||
| 	gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect | ||||
|   | ||||
							
								
								
									
										16
									
								
								staging/src/k8s.io/kube-aggregator/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										16
									
								
								staging/src/k8s.io/kube-aggregator/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -75,8 +75,8 @@ github.com/google/cel-go v0.23.2/go.mod h1:52Pb6QsDbC5kvgxvZhiL9QX1oZEkcUF/ZqaPx | ||||
| github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -107,8 +107,8 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm | ||||
| github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= | ||||
| github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= | ||||
| github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | ||||
| github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= | ||||
| github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= | ||||
| github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= | ||||
| github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= | ||||
| github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= | ||||
| github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= | ||||
| github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= | ||||
| @@ -145,8 +145,8 @@ github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1 | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI= | ||||
| github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= | ||||
| github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0 h1:meoqLyZIVEIiQxZmyVTOnzk/bA+n2pN2MXN8pSzX2ws= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= | ||||
| github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= | ||||
| github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= | ||||
| github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= | ||||
| @@ -287,8 +287,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 h1: | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= | ||||
| google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= | ||||
| google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -32,8 +32,8 @@ github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl76 | ||||
| github.com/google/cel-go v0.23.2/go.mod h1:52Pb6QsDbC5kvgxvZhiL9QX1oZEkcUF/ZqaPx1J5Wwo= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -46,7 +46,6 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr | ||||
| github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= | ||||
| github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= | ||||
| github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | ||||
| github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= | ||||
| github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= | ||||
| github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= | ||||
| github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= | ||||
| @@ -71,7 +70,7 @@ github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsK | ||||
| github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= | ||||
| github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= | ||||
| github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= | ||||
| github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= | ||||
| @@ -146,7 +145,7 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T | ||||
| google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576/go.mod h1:1R3kvZ1dtP3+4p4d3G8uJ8rFk/fWlScl38vanWACI08= | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= | ||||
| google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -18,15 +18,14 @@ require ( | ||||
| 	github.com/fxamacker/cbor/v2 v2.7.0 // indirect | ||||
| 	github.com/go-logr/logr v1.4.2 // indirect | ||||
| 	github.com/gogo/protobuf v1.3.2 // indirect | ||||
| 	github.com/google/go-cmp v0.6.0 // indirect | ||||
| 	github.com/google/go-cmp v0.7.0 // indirect | ||||
| 	github.com/google/gofuzz v1.2.0 // indirect | ||||
| 	github.com/inconshreveable/mousetrap v1.1.0 // indirect | ||||
| 	github.com/json-iterator/go v1.1.12 // indirect | ||||
| 	github.com/klauspost/compress v1.17.9 // indirect | ||||
| 	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect | ||||
| 	github.com/modern-go/reflect2 v1.0.2 // indirect | ||||
| 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect | ||||
| 	github.com/prometheus/client_golang v1.20.5 // indirect | ||||
| 	github.com/prometheus/client_golang v1.22.0-rc.0 // indirect | ||||
| 	github.com/prometheus/client_model v0.6.1 // indirect | ||||
| 	github.com/prometheus/common v0.62.0 // indirect | ||||
| 	github.com/prometheus/procfs v0.15.1 // indirect | ||||
| @@ -38,7 +37,7 @@ require ( | ||||
| 	golang.org/x/net v0.33.0 // indirect | ||||
| 	golang.org/x/sys v0.30.0 // indirect | ||||
| 	golang.org/x/text v0.22.0 // indirect | ||||
| 	google.golang.org/protobuf v1.36.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.5 // indirect | ||||
| 	gopkg.in/inf.v0 v0.9.1 // indirect | ||||
| 	k8s.io/klog/v2 v2.130.1 // indirect | ||||
| 	k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect | ||||
|   | ||||
							
								
								
									
										16
									
								
								staging/src/k8s.io/kube-proxy/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										16
									
								
								staging/src/k8s.io/kube-proxy/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -29,8 +29,8 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 | ||||
| github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -45,8 +45,8 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm | ||||
| github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= | ||||
| github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= | ||||
| github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | ||||
| github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= | ||||
| github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= | ||||
| github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= | ||||
| github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= | ||||
| github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= | ||||
| github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= | ||||
| github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= | ||||
| @@ -70,8 +70,8 @@ github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7y | ||||
| github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= | ||||
| github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0 h1:meoqLyZIVEIiQxZmyVTOnzk/bA+n2pN2MXN8pSzX2ws= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= | ||||
| github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= | ||||
| github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= | ||||
| github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= | ||||
| @@ -148,8 +148,8 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T | ||||
| google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576/go.mod h1:1R3kvZ1dtP3+4p4d3G8uJ8rFk/fWlScl38vanWACI08= | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= | ||||
| google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -7,7 +7,7 @@ go 1.24.0 | ||||
| godebug default=go1.24 | ||||
|  | ||||
| require ( | ||||
| 	github.com/google/go-cmp v0.6.0 | ||||
| 	github.com/google/go-cmp v0.7.0 | ||||
| 	k8s.io/api v0.0.0 | ||||
| 	k8s.io/apimachinery v0.0.0 | ||||
| 	k8s.io/component-base v0.0.0 | ||||
|   | ||||
							
								
								
									
										9
									
								
								staging/src/k8s.io/kube-scheduler/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										9
									
								
								staging/src/k8s.io/kube-scheduler/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -23,8 +23,8 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= | ||||
| github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -36,7 +36,6 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr | ||||
| github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= | ||||
| github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= | ||||
| github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | ||||
| github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= | ||||
| github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= | ||||
| github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= | ||||
| github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= | ||||
| @@ -57,7 +56,7 @@ github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7y | ||||
| github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= | ||||
| github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= | ||||
| github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= | ||||
| github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= | ||||
| @@ -125,7 +124,7 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T | ||||
| google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576/go.mod h1:1R3kvZ1dtP3+4p4d3G8uJ8rFk/fWlScl38vanWACI08= | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= | ||||
| google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -14,7 +14,7 @@ require ( | ||||
| 	github.com/fatih/camelcase v1.0.0 | ||||
| 	github.com/go-openapi/jsonreference v0.20.2 | ||||
| 	github.com/google/gnostic-models v0.6.9 | ||||
| 	github.com/google/go-cmp v0.6.0 | ||||
| 	github.com/google/go-cmp v0.7.0 | ||||
| 	github.com/jonboulle/clockwork v0.4.0 | ||||
| 	github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de | ||||
| 	github.com/lithammer/dedent v1.1.0 | ||||
| @@ -87,7 +87,7 @@ require ( | ||||
| 	golang.org/x/text v0.22.0 // indirect | ||||
| 	golang.org/x/time v0.9.0 // indirect | ||||
| 	golang.org/x/tools v0.26.0 // indirect | ||||
| 	google.golang.org/protobuf v1.36.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.5 // indirect | ||||
| 	gopkg.in/inf.v0 v0.9.1 // indirect | ||||
| 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||
| 	sigs.k8s.io/kustomize/api v0.19.0 // indirect | ||||
|   | ||||
							
								
								
									
										11
									
								
								staging/src/k8s.io/kubectl/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										11
									
								
								staging/src/k8s.io/kubectl/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -56,8 +56,8 @@ github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl76 | ||||
| github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -83,7 +83,6 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr | ||||
| github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= | ||||
| github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= | ||||
| github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | ||||
| github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= | ||||
| github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= | ||||
| github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= | ||||
| github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= | ||||
| @@ -127,7 +126,7 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= | ||||
| github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= | ||||
| github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= | ||||
| github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= | ||||
| github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= | ||||
| @@ -222,8 +221,8 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T | ||||
| google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576/go.mod h1:1R3kvZ1dtP3+4p4d3G8uJ8rFk/fWlScl38vanWACI08= | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= | ||||
| google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -28,19 +28,18 @@ require ( | ||||
| 	github.com/davecgh/go-spew v1.1.1 // indirect | ||||
| 	github.com/fxamacker/cbor/v2 v2.7.0 // indirect | ||||
| 	github.com/go-logr/logr v1.4.2 // indirect | ||||
| 	github.com/google/go-cmp v0.6.0 // indirect | ||||
| 	github.com/google/go-cmp v0.7.0 // indirect | ||||
| 	github.com/google/gofuzz v1.2.0 // indirect | ||||
| 	github.com/gorilla/websocket v1.5.3 // indirect | ||||
| 	github.com/inconshreveable/mousetrap v1.1.0 // indirect | ||||
| 	github.com/json-iterator/go v1.1.12 // indirect | ||||
| 	github.com/klauspost/compress v1.17.9 // indirect | ||||
| 	github.com/moby/spdystream v0.5.0 // indirect | ||||
| 	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect | ||||
| 	github.com/modern-go/reflect2 v1.0.2 // indirect | ||||
| 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect | ||||
| 	github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect | ||||
| 	github.com/pmezard/go-difflib v1.0.0 // indirect | ||||
| 	github.com/prometheus/client_golang v1.20.5 // indirect | ||||
| 	github.com/prometheus/client_golang v1.22.0-rc.0 // indirect | ||||
| 	github.com/prometheus/client_model v0.6.1 // indirect | ||||
| 	github.com/prometheus/common v0.62.0 // indirect | ||||
| 	github.com/prometheus/procfs v0.15.1 // indirect | ||||
| @@ -56,7 +55,7 @@ require ( | ||||
| 	golang.org/x/text v0.22.0 // indirect | ||||
| 	golang.org/x/time v0.9.0 // indirect | ||||
| 	google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 // indirect | ||||
| 	google.golang.org/protobuf v1.36.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.5 // indirect | ||||
| 	gopkg.in/inf.v0 v0.9.1 // indirect | ||||
| 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||
| 	sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect | ||||
|   | ||||
							
								
								
									
										16
									
								
								staging/src/k8s.io/kubelet/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										16
									
								
								staging/src/k8s.io/kubelet/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -53,8 +53,8 @@ github.com/google/cel-go v0.23.2/go.mod h1:52Pb6QsDbC5kvgxvZhiL9QX1oZEkcUF/ZqaPx | ||||
| github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -79,8 +79,8 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm | ||||
| github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= | ||||
| github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= | ||||
| github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | ||||
| github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= | ||||
| github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= | ||||
| github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= | ||||
| github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= | ||||
| github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= | ||||
| github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= | ||||
| github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= | ||||
| @@ -111,8 +111,8 @@ github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1 | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI= | ||||
| github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= | ||||
| github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0 h1:meoqLyZIVEIiQxZmyVTOnzk/bA+n2pN2MXN8pSzX2ws= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= | ||||
| github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= | ||||
| github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= | ||||
| github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= | ||||
| @@ -213,8 +213,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 h1: | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= | ||||
| google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= | ||||
| google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -24,7 +24,7 @@ require ( | ||||
| 	github.com/go-openapi/jsonreference v0.20.2 // indirect | ||||
| 	github.com/go-openapi/swag v0.23.0 // indirect | ||||
| 	github.com/google/gnostic-models v0.6.9 // indirect | ||||
| 	github.com/google/go-cmp v0.6.0 // indirect | ||||
| 	github.com/google/go-cmp v0.7.0 // indirect | ||||
| 	github.com/google/gofuzz v1.2.0 // indirect | ||||
| 	github.com/google/uuid v1.6.0 // indirect | ||||
| 	github.com/josharian/intern v1.0.0 // indirect | ||||
| @@ -46,7 +46,7 @@ require ( | ||||
| 	golang.org/x/text v0.22.0 // indirect | ||||
| 	golang.org/x/time v0.9.0 // indirect | ||||
| 	golang.org/x/tools v0.26.0 // indirect | ||||
| 	google.golang.org/protobuf v1.36.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.5 // indirect | ||||
| 	gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect | ||||
| 	gopkg.in/inf.v0 v0.9.1 // indirect | ||||
| 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||
|   | ||||
							
								
								
									
										8
									
								
								staging/src/k8s.io/metrics/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								staging/src/k8s.io/metrics/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -28,8 +28,8 @@ github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl76 | ||||
| github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -138,8 +138,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T | ||||
| golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -8,7 +8,7 @@ godebug default=go1.24 | ||||
|  | ||||
| require ( | ||||
| 	github.com/blang/semver/v4 v4.0.0 | ||||
| 	github.com/google/go-cmp v0.6.0 | ||||
| 	github.com/google/go-cmp v0.7.0 | ||||
| 	github.com/spf13/cobra v1.8.1 | ||||
| 	github.com/spf13/pflag v1.0.5 | ||||
| 	github.com/stretchr/testify v1.10.0 | ||||
| @@ -54,7 +54,6 @@ require ( | ||||
| 	github.com/inconshreveable/mousetrap v1.1.0 // indirect | ||||
| 	github.com/josharian/intern v1.0.0 // indirect | ||||
| 	github.com/json-iterator/go v1.1.12 // indirect | ||||
| 	github.com/klauspost/compress v1.17.9 // indirect | ||||
| 	github.com/kylelemons/godebug v1.1.0 // indirect | ||||
| 	github.com/mailru/easyjson v0.7.7 // indirect | ||||
| 	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect | ||||
| @@ -62,7 +61,7 @@ require ( | ||||
| 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect | ||||
| 	github.com/pkg/errors v0.9.1 // indirect | ||||
| 	github.com/pmezard/go-difflib v1.0.0 // indirect | ||||
| 	github.com/prometheus/client_golang v1.20.5 // indirect | ||||
| 	github.com/prometheus/client_golang v1.22.0-rc.0 // indirect | ||||
| 	github.com/prometheus/client_model v0.6.1 // indirect | ||||
| 	github.com/prometheus/common v0.62.0 // indirect | ||||
| 	github.com/prometheus/procfs v0.15.1 // indirect | ||||
| @@ -95,7 +94,7 @@ require ( | ||||
| 	google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 // indirect | ||||
| 	google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 // indirect | ||||
| 	google.golang.org/grpc v1.68.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.5 // indirect | ||||
| 	gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect | ||||
| 	gopkg.in/inf.v0 v0.9.1 // indirect | ||||
| 	gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect | ||||
|   | ||||
							
								
								
									
										16
									
								
								staging/src/k8s.io/pod-security-admission/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										16
									
								
								staging/src/k8s.io/pod-security-admission/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -74,8 +74,8 @@ github.com/google/cel-go v0.23.2/go.mod h1:52Pb6QsDbC5kvgxvZhiL9QX1oZEkcUF/ZqaPx | ||||
| github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -106,8 +106,8 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm | ||||
| github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= | ||||
| github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= | ||||
| github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | ||||
| github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= | ||||
| github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= | ||||
| github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= | ||||
| github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= | ||||
| github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= | ||||
| github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= | ||||
| github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= | ||||
| @@ -142,8 +142,8 @@ github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1 | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI= | ||||
| github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= | ||||
| github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0 h1:meoqLyZIVEIiQxZmyVTOnzk/bA+n2pN2MXN8pSzX2ws= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= | ||||
| github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= | ||||
| github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= | ||||
| github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= | ||||
| @@ -281,8 +281,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 h1: | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= | ||||
| google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= | ||||
| google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -45,14 +45,13 @@ require ( | ||||
| 	github.com/google/btree v1.1.3 // indirect | ||||
| 	github.com/google/cel-go v0.23.2 // indirect | ||||
| 	github.com/google/gnostic-models v0.6.9 // indirect | ||||
| 	github.com/google/go-cmp v0.6.0 // indirect | ||||
| 	github.com/google/go-cmp v0.7.0 // indirect | ||||
| 	github.com/google/uuid v1.6.0 // indirect | ||||
| 	github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect | ||||
| 	github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0 // indirect | ||||
| 	github.com/inconshreveable/mousetrap v1.1.0 // indirect | ||||
| 	github.com/josharian/intern v1.0.0 // indirect | ||||
| 	github.com/json-iterator/go v1.1.12 // indirect | ||||
| 	github.com/klauspost/compress v1.17.9 // indirect | ||||
| 	github.com/kylelemons/godebug v1.1.0 // indirect | ||||
| 	github.com/mailru/easyjson v0.7.7 // indirect | ||||
| 	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect | ||||
| @@ -60,7 +59,7 @@ require ( | ||||
| 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect | ||||
| 	github.com/pkg/errors v0.9.1 // indirect | ||||
| 	github.com/pmezard/go-difflib v1.0.0 // indirect | ||||
| 	github.com/prometheus/client_golang v1.20.5 // indirect | ||||
| 	github.com/prometheus/client_golang v1.22.0-rc.0 // indirect | ||||
| 	github.com/prometheus/client_model v0.6.1 // indirect | ||||
| 	github.com/prometheus/common v0.62.0 // indirect | ||||
| 	github.com/prometheus/procfs v0.15.1 // indirect | ||||
| @@ -96,7 +95,7 @@ require ( | ||||
| 	google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 // indirect | ||||
| 	google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 // indirect | ||||
| 	google.golang.org/grpc v1.68.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.5 // indirect | ||||
| 	gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect | ||||
| 	gopkg.in/inf.v0 v0.9.1 // indirect | ||||
| 	gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect | ||||
|   | ||||
							
								
								
									
										16
									
								
								staging/src/k8s.io/sample-apiserver/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										16
									
								
								staging/src/k8s.io/sample-apiserver/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -74,8 +74,8 @@ github.com/google/cel-go v0.23.2/go.mod h1:52Pb6QsDbC5kvgxvZhiL9QX1oZEkcUF/ZqaPx | ||||
| github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -106,8 +106,8 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm | ||||
| github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= | ||||
| github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= | ||||
| github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | ||||
| github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= | ||||
| github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= | ||||
| github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= | ||||
| github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= | ||||
| github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= | ||||
| github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= | ||||
| github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= | ||||
| @@ -142,8 +142,8 @@ github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1 | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI= | ||||
| github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= | ||||
| github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0 h1:meoqLyZIVEIiQxZmyVTOnzk/bA+n2pN2MXN8pSzX2ws= | ||||
| github.com/prometheus/client_golang v1.22.0-rc.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= | ||||
| github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= | ||||
| github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= | ||||
| github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= | ||||
| @@ -284,8 +284,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 h1: | ||||
| google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= | ||||
| google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= | ||||
| google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -27,7 +27,7 @@ require ( | ||||
| 	github.com/gogo/protobuf v1.3.2 // indirect | ||||
| 	github.com/google/btree v1.1.3 // indirect | ||||
| 	github.com/google/gnostic-models v0.6.9 // indirect | ||||
| 	github.com/google/go-cmp v0.6.0 // indirect | ||||
| 	github.com/google/go-cmp v0.7.0 // indirect | ||||
| 	github.com/google/gofuzz v1.2.0 // indirect | ||||
| 	github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect | ||||
| 	github.com/google/uuid v1.6.0 // indirect | ||||
| @@ -53,7 +53,7 @@ require ( | ||||
| 	golang.org/x/term v0.29.0 // indirect | ||||
| 	golang.org/x/text v0.22.0 // indirect | ||||
| 	golang.org/x/time v0.9.0 // indirect | ||||
| 	google.golang.org/protobuf v1.36.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.5 // indirect | ||||
| 	gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect | ||||
| 	gopkg.in/inf.v0 v0.9.1 // indirect | ||||
| 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||
|   | ||||
							
								
								
									
										8
									
								
								staging/src/k8s.io/sample-cli-plugin/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								staging/src/k8s.io/sample-cli-plugin/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -38,8 +38,8 @@ github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl76 | ||||
| github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -167,8 +167,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T | ||||
| golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
| @@ -25,7 +25,7 @@ require ( | ||||
| 	github.com/go-openapi/swag v0.23.0 // indirect | ||||
| 	github.com/gogo/protobuf v1.3.2 // indirect | ||||
| 	github.com/google/gnostic-models v0.6.9 // indirect | ||||
| 	github.com/google/go-cmp v0.6.0 // indirect | ||||
| 	github.com/google/go-cmp v0.7.0 // indirect | ||||
| 	github.com/google/gofuzz v1.2.0 // indirect | ||||
| 	github.com/google/uuid v1.6.0 // indirect | ||||
| 	github.com/josharian/intern v1.0.0 // indirect | ||||
| @@ -45,7 +45,7 @@ require ( | ||||
| 	golang.org/x/term v0.29.0 // indirect | ||||
| 	golang.org/x/text v0.22.0 // indirect | ||||
| 	golang.org/x/tools v0.26.0 // indirect | ||||
| 	google.golang.org/protobuf v1.36.1 // indirect | ||||
| 	google.golang.org/protobuf v1.36.5 // indirect | ||||
| 	gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect | ||||
| 	gopkg.in/inf.v0 v0.9.1 // indirect | ||||
| 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||
|   | ||||
							
								
								
									
										8
									
								
								staging/src/k8s.io/sample-controller/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								staging/src/k8s.io/sample-controller/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -28,8 +28,8 @@ github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl76 | ||||
| github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= | ||||
| github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= | ||||
| github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= | ||||
| github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= | ||||
| github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= | ||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= | ||||
| github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||
| @@ -139,8 +139,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T | ||||
| golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= | ||||
| google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= | ||||
| google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||||
| gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||||
|   | ||||
							
								
								
									
										64
									
								
								vendor/github.com/google/go-cmp/cmp/cmpopts/sort.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										64
									
								
								vendor/github.com/google/go-cmp/cmp/cmpopts/sort.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -14,22 +14,29 @@ import ( | ||||
| ) | ||||
|  | ||||
| // SortSlices returns a [cmp.Transformer] option that sorts all []V. | ||||
| // The less function must be of the form "func(T, T) bool" which is used to | ||||
| // sort any slice with element type V that is assignable to T. | ||||
| // The lessOrCompareFunc function must be either | ||||
| // a less function of the form "func(T, T) bool" or | ||||
| // a compare function of the format "func(T, T) int" | ||||
| // which is used to sort any slice with element type V that is assignable to T. | ||||
| // | ||||
| // The less function must be: | ||||
| // A less function must be: | ||||
| //   - Deterministic: less(x, y) == less(x, y) | ||||
| //   - Irreflexive: !less(x, x) | ||||
| //   - Transitive: if !less(x, y) and !less(y, z), then !less(x, z) | ||||
| // | ||||
| // The less function does not have to be "total". That is, if !less(x, y) and | ||||
| // !less(y, x) for two elements x and y, their relative order is maintained. | ||||
| // A compare function must be: | ||||
| //   - Deterministic: compare(x, y) == compare(x, y) | ||||
| //   - Irreflexive: compare(x, x) == 0 | ||||
| //   - Transitive: if !less(x, y) and !less(y, z), then !less(x, z) | ||||
| // | ||||
| // The function does not have to be "total". That is, if x != y, but | ||||
| // less or compare report inequality, their relative order is maintained. | ||||
| // | ||||
| // SortSlices can be used in conjunction with [EquateEmpty]. | ||||
| func SortSlices(lessFunc interface{}) cmp.Option { | ||||
| 	vf := reflect.ValueOf(lessFunc) | ||||
| 	if !function.IsType(vf.Type(), function.Less) || vf.IsNil() { | ||||
| 		panic(fmt.Sprintf("invalid less function: %T", lessFunc)) | ||||
| func SortSlices(lessOrCompareFunc interface{}) cmp.Option { | ||||
| 	vf := reflect.ValueOf(lessOrCompareFunc) | ||||
| 	if (!function.IsType(vf.Type(), function.Less) && !function.IsType(vf.Type(), function.Compare)) || vf.IsNil() { | ||||
| 		panic(fmt.Sprintf("invalid less or compare function: %T", lessOrCompareFunc)) | ||||
| 	} | ||||
| 	ss := sliceSorter{vf.Type().In(0), vf} | ||||
| 	return cmp.FilterValues(ss.filter, cmp.Transformer("cmpopts.SortSlices", ss.sort)) | ||||
| @@ -79,28 +86,40 @@ func (ss sliceSorter) checkSort(v reflect.Value) { | ||||
| } | ||||
| func (ss sliceSorter) less(v reflect.Value, i, j int) bool { | ||||
| 	vx, vy := v.Index(i), v.Index(j) | ||||
| 	return ss.fnc.Call([]reflect.Value{vx, vy})[0].Bool() | ||||
| 	vo := ss.fnc.Call([]reflect.Value{vx, vy})[0] | ||||
| 	if vo.Kind() == reflect.Bool { | ||||
| 		return vo.Bool() | ||||
| 	} else { | ||||
| 		return vo.Int() < 0 | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // SortMaps returns a [cmp.Transformer] option that flattens map[K]V types to be a | ||||
| // sorted []struct{K, V}. The less function must be of the form | ||||
| // "func(T, T) bool" which is used to sort any map with key K that is | ||||
| // assignable to T. | ||||
| // SortMaps returns a [cmp.Transformer] option that flattens map[K]V types to be | ||||
| // a sorted []struct{K, V}. The lessOrCompareFunc function must be either | ||||
| // a less function of the form "func(T, T) bool" or | ||||
| // a compare function of the format "func(T, T) int" | ||||
| // which is used to sort any map with key K that is assignable to T. | ||||
| // | ||||
| // Flattening the map into a slice has the property that [cmp.Equal] is able to | ||||
| // use [cmp.Comparer] options on K or the K.Equal method if it exists. | ||||
| // | ||||
| // The less function must be: | ||||
| // A less function must be: | ||||
| //   - Deterministic: less(x, y) == less(x, y) | ||||
| //   - Irreflexive: !less(x, x) | ||||
| //   - Transitive: if !less(x, y) and !less(y, z), then !less(x, z) | ||||
| //   - Total: if x != y, then either less(x, y) or less(y, x) | ||||
| // | ||||
| // A compare function must be: | ||||
| //   - Deterministic: compare(x, y) == compare(x, y) | ||||
| //   - Irreflexive: compare(x, x) == 0 | ||||
| //   - Transitive: if compare(x, y) < 0 and compare(y, z) < 0, then compare(x, z) < 0 | ||||
| //   - Total: if x != y, then compare(x, y) != 0 | ||||
| // | ||||
| // SortMaps can be used in conjunction with [EquateEmpty]. | ||||
| func SortMaps(lessFunc interface{}) cmp.Option { | ||||
| 	vf := reflect.ValueOf(lessFunc) | ||||
| 	if !function.IsType(vf.Type(), function.Less) || vf.IsNil() { | ||||
| 		panic(fmt.Sprintf("invalid less function: %T", lessFunc)) | ||||
| func SortMaps(lessOrCompareFunc interface{}) cmp.Option { | ||||
| 	vf := reflect.ValueOf(lessOrCompareFunc) | ||||
| 	if (!function.IsType(vf.Type(), function.Less) && !function.IsType(vf.Type(), function.Compare)) || vf.IsNil() { | ||||
| 		panic(fmt.Sprintf("invalid less or compare function: %T", lessOrCompareFunc)) | ||||
| 	} | ||||
| 	ms := mapSorter{vf.Type().In(0), vf} | ||||
| 	return cmp.FilterValues(ms.filter, cmp.Transformer("cmpopts.SortMaps", ms.sort)) | ||||
| @@ -143,5 +162,10 @@ func (ms mapSorter) checkSort(v reflect.Value) { | ||||
| } | ||||
| func (ms mapSorter) less(v reflect.Value, i, j int) bool { | ||||
| 	vx, vy := v.Index(i).Field(0), v.Index(j).Field(0) | ||||
| 	return ms.fnc.Call([]reflect.Value{vx, vy})[0].Bool() | ||||
| 	vo := ms.fnc.Call([]reflect.Value{vx, vy})[0] | ||||
| 	if vo.Kind() == reflect.Bool { | ||||
| 		return vo.Bool() | ||||
| 	} else { | ||||
| 		return vo.Int() < 0 | ||||
| 	} | ||||
| } | ||||
|   | ||||
							
								
								
									
										7
									
								
								vendor/github.com/google/go-cmp/cmp/internal/function/func.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								vendor/github.com/google/go-cmp/cmp/internal/function/func.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -19,6 +19,7 @@ const ( | ||||
|  | ||||
| 	tbFunc  // func(T) bool | ||||
| 	ttbFunc // func(T, T) bool | ||||
| 	ttiFunc // func(T, T) int | ||||
| 	trbFunc // func(T, R) bool | ||||
| 	tibFunc // func(T, I) bool | ||||
| 	trFunc  // func(T) R | ||||
| @@ -28,11 +29,13 @@ const ( | ||||
| 	Transformer       = trFunc  // func(T) R | ||||
| 	ValueFilter       = ttbFunc // func(T, T) bool | ||||
| 	Less              = ttbFunc // func(T, T) bool | ||||
| 	Compare           = ttiFunc // func(T, T) int | ||||
| 	ValuePredicate    = tbFunc  // func(T) bool | ||||
| 	KeyValuePredicate = trbFunc // func(T, R) bool | ||||
| ) | ||||
|  | ||||
| var boolType = reflect.TypeOf(true) | ||||
| var intType = reflect.TypeOf(0) | ||||
|  | ||||
| // IsType reports whether the reflect.Type is of the specified function type. | ||||
| func IsType(t reflect.Type, ft funcType) bool { | ||||
| @@ -49,6 +52,10 @@ func IsType(t reflect.Type, ft funcType) bool { | ||||
| 		if ni == 2 && no == 1 && t.In(0) == t.In(1) && t.Out(0) == boolType { | ||||
| 			return true | ||||
| 		} | ||||
| 	case ttiFunc: // func(T, T) int | ||||
| 		if ni == 2 && no == 1 && t.In(0) == t.In(1) && t.Out(0) == intType { | ||||
| 			return true | ||||
| 		} | ||||
| 	case trbFunc: // func(T, R) bool | ||||
| 		if ni == 2 && no == 1 && t.Out(0) == boolType { | ||||
| 			return true | ||||
|   | ||||
							
								
								
									
										10
									
								
								vendor/github.com/google/go-cmp/cmp/options.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								vendor/github.com/google/go-cmp/cmp/options.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -232,7 +232,15 @@ func (validator) apply(s *state, vx, vy reflect.Value) { | ||||
| 		if t := s.curPath.Index(-2).Type(); t.Name() != "" { | ||||
| 			// Named type with unexported fields. | ||||
| 			name = fmt.Sprintf("%q.%v", t.PkgPath(), t.Name()) // e.g., "path/to/package".MyType | ||||
| 			if _, ok := reflect.New(t).Interface().(error); ok { | ||||
| 			isProtoMessage := func(t reflect.Type) bool { | ||||
| 				m, ok := reflect.PointerTo(t).MethodByName("ProtoReflect") | ||||
| 				return ok && m.Type.NumIn() == 1 && m.Type.NumOut() == 1 && | ||||
| 					m.Type.Out(0).PkgPath() == "google.golang.org/protobuf/reflect/protoreflect" && | ||||
| 					m.Type.Out(0).Name() == "Message" | ||||
| 			} | ||||
| 			if isProtoMessage(t) { | ||||
| 				help = `consider using "google.golang.org/protobuf/testing/protocmp".Transform to compare proto.Message types` | ||||
| 			} else if _, ok := reflect.New(t).Interface().(error); ok { | ||||
| 				help = "consider using cmpopts.EquateErrors to compare error values" | ||||
| 			} else if t.Comparable() { | ||||
| 				help = "consider using cmpopts.EquateComparable to compare comparable Go types" | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/github.com/klauspost/compress/.gitattributes
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/klauspost/compress/.gitattributes
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,2 +0,0 @@ | ||||
| * -text | ||||
| *.bin -text -diff | ||||
							
								
								
									
										32
									
								
								vendor/github.com/klauspost/compress/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										32
									
								
								vendor/github.com/klauspost/compress/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,32 +0,0 @@ | ||||
| # Compiled Object files, Static and Dynamic libs (Shared Objects) | ||||
| *.o | ||||
| *.a | ||||
| *.so | ||||
|  | ||||
| # Folders | ||||
| _obj | ||||
| _test | ||||
|  | ||||
| # Architecture specific extensions/prefixes | ||||
| *.[568vq] | ||||
| [568vq].out | ||||
|  | ||||
| *.cgo1.go | ||||
| *.cgo2.c | ||||
| _cgo_defun.c | ||||
| _cgo_gotypes.go | ||||
| _cgo_export.* | ||||
|  | ||||
| _testmain.go | ||||
|  | ||||
| *.exe | ||||
| *.test | ||||
| *.prof | ||||
| /s2/cmd/_s2sx/sfx-exe | ||||
|  | ||||
| # Linux perf files | ||||
| perf.data | ||||
| perf.data.old | ||||
|  | ||||
| # gdb history | ||||
| .gdb_history | ||||
							
								
								
									
										123
									
								
								vendor/github.com/klauspost/compress/.goreleaser.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										123
									
								
								vendor/github.com/klauspost/compress/.goreleaser.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,123 +0,0 @@ | ||||
| # This is an example goreleaser.yaml file with some sane defaults. | ||||
| # Make sure to check the documentation at http://goreleaser.com | ||||
| before: | ||||
|   hooks: | ||||
|     - ./gen.sh | ||||
|  | ||||
| builds: | ||||
|   - | ||||
|     id: "s2c" | ||||
|     binary: s2c | ||||
|     main: ./s2/cmd/s2c/main.go | ||||
|     flags: | ||||
|       - -trimpath | ||||
|     env: | ||||
|       - CGO_ENABLED=0 | ||||
|     goos: | ||||
|       - aix | ||||
|       - linux | ||||
|       - freebsd | ||||
|       - netbsd | ||||
|       - windows | ||||
|       - darwin | ||||
|     goarch: | ||||
|       - 386 | ||||
|       - amd64 | ||||
|       - arm | ||||
|       - arm64 | ||||
|       - ppc64 | ||||
|       - ppc64le | ||||
|       - mips64 | ||||
|       - mips64le | ||||
|     goarm: | ||||
|       - 7 | ||||
|   - | ||||
|     id: "s2d" | ||||
|     binary: s2d | ||||
|     main: ./s2/cmd/s2d/main.go | ||||
|     flags: | ||||
|       - -trimpath | ||||
|     env: | ||||
|       - CGO_ENABLED=0 | ||||
|     goos: | ||||
|       - aix | ||||
|       - linux | ||||
|       - freebsd | ||||
|       - netbsd | ||||
|       - windows | ||||
|       - darwin | ||||
|     goarch: | ||||
|       - 386 | ||||
|       - amd64 | ||||
|       - arm | ||||
|       - arm64 | ||||
|       - ppc64 | ||||
|       - ppc64le | ||||
|       - mips64 | ||||
|       - mips64le | ||||
|     goarm: | ||||
|       - 7 | ||||
|   - | ||||
|     id: "s2sx" | ||||
|     binary: s2sx | ||||
|     main: ./s2/cmd/_s2sx/main.go | ||||
|     flags: | ||||
|       - -modfile=s2sx.mod | ||||
|       - -trimpath | ||||
|     env: | ||||
|       - CGO_ENABLED=0 | ||||
|     goos: | ||||
|       - aix | ||||
|       - linux | ||||
|       - freebsd | ||||
|       - netbsd | ||||
|       - windows | ||||
|       - darwin | ||||
|     goarch: | ||||
|       - 386 | ||||
|       - amd64 | ||||
|       - arm | ||||
|       - arm64 | ||||
|       - ppc64 | ||||
|       - ppc64le | ||||
|       - mips64 | ||||
|       - mips64le | ||||
|     goarm: | ||||
|       - 7 | ||||
|  | ||||
| archives: | ||||
|   - | ||||
|     id: s2-binaries | ||||
|     name_template: "s2-{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}" | ||||
|     format_overrides: | ||||
|       - goos: windows | ||||
|         format: zip | ||||
|     files: | ||||
|       - unpack/* | ||||
|       - s2/LICENSE | ||||
|       - s2/README.md | ||||
| checksum: | ||||
|   name_template: 'checksums.txt' | ||||
| snapshot: | ||||
|   name_template: "{{ .Tag }}-next" | ||||
| changelog: | ||||
|   sort: asc | ||||
|   filters: | ||||
|     exclude: | ||||
|     - '^doc:' | ||||
|     - '^docs:' | ||||
|     - '^test:' | ||||
|     - '^tests:' | ||||
|     - '^Update\sREADME.md' | ||||
|  | ||||
| nfpms: | ||||
|   - | ||||
|     file_name_template: "s2_package__{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}" | ||||
|     vendor: Klaus Post | ||||
|     homepage: https://github.com/klauspost/compress | ||||
|     maintainer: Klaus Post <klauspost@gmail.com> | ||||
|     description: S2 Compression Tool | ||||
|     license: BSD 3-Clause | ||||
|     formats: | ||||
|       - deb | ||||
|       - rpm | ||||
							
								
								
									
										304
									
								
								vendor/github.com/klauspost/compress/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										304
									
								
								vendor/github.com/klauspost/compress/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,304 +0,0 @@ | ||||
| Copyright (c) 2012 The Go Authors. All rights reserved. | ||||
| Copyright (c) 2019 Klaus Post. All rights reserved. | ||||
|  | ||||
| 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. | ||||
|    * Neither the name of Google Inc. nor the names of its | ||||
| contributors may be used to endorse or promote products derived from | ||||
| this software without specific prior written permission. | ||||
|  | ||||
| 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. | ||||
|  | ||||
| ------------------ | ||||
|  | ||||
| Files: gzhttp/* | ||||
|  | ||||
|                                  Apache License | ||||
|                            Version 2.0, January 2004 | ||||
|                         http://www.apache.org/licenses/ | ||||
|  | ||||
|    TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | ||||
|  | ||||
|    1. Definitions. | ||||
|  | ||||
|       "License" shall mean the terms and conditions for use, reproduction, | ||||
|       and distribution as defined by Sections 1 through 9 of this document. | ||||
|  | ||||
|       "Licensor" shall mean the copyright owner or entity authorized by | ||||
|       the copyright owner that is granting the License. | ||||
|  | ||||
|       "Legal Entity" shall mean the union of the acting entity and all | ||||
|       other entities that control, are controlled by, or are under common | ||||
|       control with that entity. For the purposes of this definition, | ||||
|       "control" means (i) the power, direct or indirect, to cause the | ||||
|       direction or management of such entity, whether by contract or | ||||
|       otherwise, or (ii) ownership of fifty percent (50%) or more of the | ||||
|       outstanding shares, or (iii) beneficial ownership of such entity. | ||||
|  | ||||
|       "You" (or "Your") shall mean an individual or Legal Entity | ||||
|       exercising permissions granted by this License. | ||||
|  | ||||
|       "Source" form shall mean the preferred form for making modifications, | ||||
|       including but not limited to software source code, documentation | ||||
|       source, and configuration files. | ||||
|  | ||||
|       "Object" form shall mean any form resulting from mechanical | ||||
|       transformation or translation of a Source form, including but | ||||
|       not limited to compiled object code, generated documentation, | ||||
|       and conversions to other media types. | ||||
|  | ||||
|       "Work" shall mean the work of authorship, whether in Source or | ||||
|       Object form, made available under the License, as indicated by a | ||||
|       copyright notice that is included in or attached to the work | ||||
|       (an example is provided in the Appendix below). | ||||
|  | ||||
|       "Derivative Works" shall mean any work, whether in Source or Object | ||||
|       form, that is based on (or derived from) the Work and for which the | ||||
|       editorial revisions, annotations, elaborations, or other modifications | ||||
|       represent, as a whole, an original work of authorship. For the purposes | ||||
|       of this License, Derivative Works shall not include works that remain | ||||
|       separable from, or merely link (or bind by name) to the interfaces of, | ||||
|       the Work and Derivative Works thereof. | ||||
|  | ||||
|       "Contribution" shall mean any work of authorship, including | ||||
|       the original version of the Work and any modifications or additions | ||||
|       to that Work or Derivative Works thereof, that is intentionally | ||||
|       submitted to Licensor for inclusion in the Work by the copyright owner | ||||
|       or by an individual or Legal Entity authorized to submit on behalf of | ||||
|       the copyright owner. For the purposes of this definition, "submitted" | ||||
|       means any form of electronic, verbal, or written communication sent | ||||
|       to the Licensor or its representatives, including but not limited to | ||||
|       communication on electronic mailing lists, source code control systems, | ||||
|       and issue tracking systems that are managed by, or on behalf of, the | ||||
|       Licensor for the purpose of discussing and improving the Work, but | ||||
|       excluding communication that is conspicuously marked or otherwise | ||||
|       designated in writing by the copyright owner as "Not a Contribution." | ||||
|  | ||||
|       "Contributor" shall mean Licensor and any individual or Legal Entity | ||||
|       on behalf of whom a Contribution has been received by Licensor and | ||||
|       subsequently incorporated within the Work. | ||||
|  | ||||
|    2. Grant of Copyright License. Subject to the terms and conditions of | ||||
|       this License, each Contributor hereby grants to You a perpetual, | ||||
|       worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||
|       copyright license to reproduce, prepare Derivative Works of, | ||||
|       publicly display, publicly perform, sublicense, and distribute the | ||||
|       Work and such Derivative Works in Source or Object form. | ||||
|  | ||||
|    3. Grant of Patent License. Subject to the terms and conditions of | ||||
|       this License, each Contributor hereby grants to You a perpetual, | ||||
|       worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||
|       (except as stated in this section) patent license to make, have made, | ||||
|       use, offer to sell, sell, import, and otherwise transfer the Work, | ||||
|       where such license applies only to those patent claims licensable | ||||
|       by such Contributor that are necessarily infringed by their | ||||
|       Contribution(s) alone or by combination of their Contribution(s) | ||||
|       with the Work to which such Contribution(s) was submitted. If You | ||||
|       institute patent litigation against any entity (including a | ||||
|       cross-claim or counterclaim in a lawsuit) alleging that the Work | ||||
|       or a Contribution incorporated within the Work constitutes direct | ||||
|       or contributory patent infringement, then any patent licenses | ||||
|       granted to You under this License for that Work shall terminate | ||||
|       as of the date such litigation is filed. | ||||
|  | ||||
|    4. Redistribution. You may reproduce and distribute copies of the | ||||
|       Work or Derivative Works thereof in any medium, with or without | ||||
|       modifications, and in Source or Object form, provided that You | ||||
|       meet the following conditions: | ||||
|  | ||||
|       (a) You must give any other recipients of the Work or | ||||
|           Derivative Works a copy of this License; and | ||||
|  | ||||
|       (b) You must cause any modified files to carry prominent notices | ||||
|           stating that You changed the files; and | ||||
|  | ||||
|       (c) You must retain, in the Source form of any Derivative Works | ||||
|           that You distribute, all copyright, patent, trademark, and | ||||
|           attribution notices from the Source form of the Work, | ||||
|           excluding those notices that do not pertain to any part of | ||||
|           the Derivative Works; and | ||||
|  | ||||
|       (d) If the Work includes a "NOTICE" text file as part of its | ||||
|           distribution, then any Derivative Works that You distribute must | ||||
|           include a readable copy of the attribution notices contained | ||||
|           within such NOTICE file, excluding those notices that do not | ||||
|           pertain to any part of the Derivative Works, in at least one | ||||
|           of the following places: within a NOTICE text file distributed | ||||
|           as part of the Derivative Works; within the Source form or | ||||
|           documentation, if provided along with the Derivative Works; or, | ||||
|           within a display generated by the Derivative Works, if and | ||||
|           wherever such third-party notices normally appear. The contents | ||||
|           of the NOTICE file are for informational purposes only and | ||||
|           do not modify the License. You may add Your own attribution | ||||
|           notices within Derivative Works that You distribute, alongside | ||||
|           or as an addendum to the NOTICE text from the Work, provided | ||||
|           that such additional attribution notices cannot be construed | ||||
|           as modifying the License. | ||||
|  | ||||
|       You may add Your own copyright statement to Your modifications and | ||||
|       may provide additional or different license terms and conditions | ||||
|       for use, reproduction, or distribution of Your modifications, or | ||||
|       for any such Derivative Works as a whole, provided Your use, | ||||
|       reproduction, and distribution of the Work otherwise complies with | ||||
|       the conditions stated in this License. | ||||
|  | ||||
|    5. Submission of Contributions. Unless You explicitly state otherwise, | ||||
|       any Contribution intentionally submitted for inclusion in the Work | ||||
|       by You to the Licensor shall be under the terms and conditions of | ||||
|       this License, without any additional terms or conditions. | ||||
|       Notwithstanding the above, nothing herein shall supersede or modify | ||||
|       the terms of any separate license agreement you may have executed | ||||
|       with Licensor regarding such Contributions. | ||||
|  | ||||
|    6. Trademarks. This License does not grant permission to use the trade | ||||
|       names, trademarks, service marks, or product names of the Licensor, | ||||
|       except as required for reasonable and customary use in describing the | ||||
|       origin of the Work and reproducing the content of the NOTICE file. | ||||
|  | ||||
|    7. Disclaimer of Warranty. Unless required by applicable law or | ||||
|       agreed to in writing, Licensor provides the Work (and each | ||||
|       Contributor provides its Contributions) on an "AS IS" BASIS, | ||||
|       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||||
|       implied, including, without limitation, any warranties or conditions | ||||
|       of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A | ||||
|       PARTICULAR PURPOSE. You are solely responsible for determining the | ||||
|       appropriateness of using or redistributing the Work and assume any | ||||
|       risks associated with Your exercise of permissions under this License. | ||||
|  | ||||
|    8. Limitation of Liability. In no event and under no legal theory, | ||||
|       whether in tort (including negligence), contract, or otherwise, | ||||
|       unless required by applicable law (such as deliberate and grossly | ||||
|       negligent acts) or agreed to in writing, shall any Contributor be | ||||
|       liable to You for damages, including any direct, indirect, special, | ||||
|       incidental, or consequential damages of any character arising as a | ||||
|       result of this License or out of the use or inability to use the | ||||
|       Work (including but not limited to damages for loss of goodwill, | ||||
|       work stoppage, computer failure or malfunction, or any and all | ||||
|       other commercial damages or losses), even if such Contributor | ||||
|       has been advised of the possibility of such damages. | ||||
|  | ||||
|    9. Accepting Warranty or Additional Liability. While redistributing | ||||
|       the Work or Derivative Works thereof, You may choose to offer, | ||||
|       and charge a fee for, acceptance of support, warranty, indemnity, | ||||
|       or other liability obligations and/or rights consistent with this | ||||
|       License. However, in accepting such obligations, You may act only | ||||
|       on Your own behalf and on Your sole responsibility, not on behalf | ||||
|       of any other Contributor, and only if You agree to indemnify, | ||||
|       defend, and hold each Contributor harmless for any liability | ||||
|       incurred by, or claims asserted against, such Contributor by reason | ||||
|       of your accepting any such warranty or additional liability. | ||||
|  | ||||
|    END OF TERMS AND CONDITIONS | ||||
|  | ||||
|    APPENDIX: How to apply the Apache License to your work. | ||||
|  | ||||
|       To apply the Apache License to your work, attach the following | ||||
|       boilerplate notice, with the fields enclosed by brackets "[]" | ||||
|       replaced with your own identifying information. (Don't include | ||||
|       the brackets!)  The text should be enclosed in the appropriate | ||||
|       comment syntax for the file format. We also recommend that a | ||||
|       file or class name and description of purpose be included on the | ||||
|       same "printed page" as the copyright notice for easier | ||||
|       identification within third-party archives. | ||||
|  | ||||
|    Copyright 2016-2017 The New York Times Company | ||||
|  | ||||
|    Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|    you may not use this file except in compliance with the License. | ||||
|    You may obtain a copy of the License at | ||||
|  | ||||
|        http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  | ||||
|    Unless required by applicable law or agreed to in writing, software | ||||
|    distributed under the License is distributed on an "AS IS" BASIS, | ||||
|    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|    See the License for the specific language governing permissions and | ||||
|    limitations under the License. | ||||
|  | ||||
| ------------------ | ||||
|  | ||||
| Files: s2/cmd/internal/readahead/* | ||||
|  | ||||
| The MIT License (MIT) | ||||
|  | ||||
| Copyright (c) 2015 Klaus Post | ||||
|  | ||||
| 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. | ||||
|  | ||||
| --------------------- | ||||
| Files: snappy/* | ||||
| Files: internal/snapref/* | ||||
|  | ||||
| Copyright (c) 2011 The Snappy-Go Authors. All rights reserved. | ||||
|  | ||||
| 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. | ||||
|    * Neither the name of Google Inc. nor the names of its | ||||
| contributors may be used to endorse or promote products derived from | ||||
| this software without specific prior written permission. | ||||
|  | ||||
| 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. | ||||
|  | ||||
| ----------------- | ||||
|  | ||||
| Files: s2/cmd/internal/filepathx/* | ||||
|  | ||||
| Copyright 2016 The filepathx Authors | ||||
|  | ||||
| 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. | ||||
							
								
								
									
										700
									
								
								vendor/github.com/klauspost/compress/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										700
									
								
								vendor/github.com/klauspost/compress/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,700 +0,0 @@ | ||||
| # compress | ||||
|  | ||||
| This package provides various compression algorithms. | ||||
|  | ||||
| * [zstandard](https://github.com/klauspost/compress/tree/master/zstd#zstd) compression and decompression in pure Go. | ||||
| * [S2](https://github.com/klauspost/compress/tree/master/s2#s2-compression) is a high performance replacement for Snappy. | ||||
| * Optimized [deflate](https://godoc.org/github.com/klauspost/compress/flate) packages which can be used as a dropin replacement for [gzip](https://godoc.org/github.com/klauspost/compress/gzip), [zip](https://godoc.org/github.com/klauspost/compress/zip) and [zlib](https://godoc.org/github.com/klauspost/compress/zlib). | ||||
| * [snappy](https://github.com/klauspost/compress/tree/master/snappy) is a drop-in replacement for `github.com/golang/snappy` offering better compression and concurrent streams. | ||||
| * [huff0](https://github.com/klauspost/compress/tree/master/huff0) and [FSE](https://github.com/klauspost/compress/tree/master/fse) implementations for raw entropy encoding. | ||||
| * [gzhttp](https://github.com/klauspost/compress/tree/master/gzhttp) Provides client and server wrappers for handling gzipped requests efficiently. | ||||
| * [pgzip](https://github.com/klauspost/pgzip) is a separate package that provides a very fast parallel gzip implementation. | ||||
|  | ||||
| [](https://pkg.go.dev/github.com/klauspost/compress?tab=subdirectories) | ||||
| [](https://github.com/klauspost/compress/actions/workflows/go.yml) | ||||
| [](https://sourcegraph.com/github.com/klauspost/compress?badge) | ||||
|  | ||||
| # changelog | ||||
|  | ||||
| * Feb 5th, 2024 - [1.17.6](https://github.com/klauspost/compress/releases/tag/v1.17.6) | ||||
| 	* zstd: Fix incorrect repeat coding in best mode https://github.com/klauspost/compress/pull/923 | ||||
| 	* s2: Fix DecodeConcurrent deadlock on errors https://github.com/klauspost/compress/pull/925 | ||||
|    | ||||
| * Jan 26th, 2024 - [v1.17.5](https://github.com/klauspost/compress/releases/tag/v1.17.5) | ||||
| 	* flate: Fix reset with dictionary on custom window encodes https://github.com/klauspost/compress/pull/912 | ||||
| 	* zstd: Add Frame header encoding and stripping https://github.com/klauspost/compress/pull/908 | ||||
| 	* zstd: Limit better/best default window to 8MB https://github.com/klauspost/compress/pull/913 | ||||
| 	* zstd: Speed improvements by @greatroar in https://github.com/klauspost/compress/pull/896 https://github.com/klauspost/compress/pull/910 | ||||
| 	* s2: Fix callbacks for skippable blocks and disallow 0xfe (Padding) by @Jille in https://github.com/klauspost/compress/pull/916 https://github.com/klauspost/compress/pull/917 | ||||
| https://github.com/klauspost/compress/pull/919 https://github.com/klauspost/compress/pull/918 | ||||
|  | ||||
| * Dec 1st, 2023 - [v1.17.4](https://github.com/klauspost/compress/releases/tag/v1.17.4) | ||||
| 	* huff0: Speed up symbol counting by @greatroar in https://github.com/klauspost/compress/pull/887 | ||||
| 	* huff0: Remove byteReader by @greatroar in https://github.com/klauspost/compress/pull/886 | ||||
| 	* gzhttp: Allow overriding decompression on transport https://github.com/klauspost/compress/pull/892 | ||||
| 	* gzhttp: Clamp compression level https://github.com/klauspost/compress/pull/890 | ||||
| 	* gzip: Error out if reserved bits are set https://github.com/klauspost/compress/pull/891 | ||||
|  | ||||
| * Nov 15th, 2023 - [v1.17.3](https://github.com/klauspost/compress/releases/tag/v1.17.3) | ||||
| 	* fse: Fix max header size https://github.com/klauspost/compress/pull/881 | ||||
| 	* zstd: Improve better/best compression https://github.com/klauspost/compress/pull/877 | ||||
| 	* gzhttp: Fix missing content type on Close https://github.com/klauspost/compress/pull/883 | ||||
|  | ||||
| * Oct 22nd, 2023 - [v1.17.2](https://github.com/klauspost/compress/releases/tag/v1.17.2) | ||||
| 	* zstd: Fix rare *CORRUPTION* output in "best" mode. See https://github.com/klauspost/compress/pull/876 | ||||
|  | ||||
| * Oct 14th, 2023 - [v1.17.1](https://github.com/klauspost/compress/releases/tag/v1.17.1) | ||||
| 	* s2: Fix S2 "best" dictionary wrong encoding by @klauspost in https://github.com/klauspost/compress/pull/871 | ||||
| 	* flate: Reduce allocations in decompressor and minor code improvements by @fakefloordiv in https://github.com/klauspost/compress/pull/869 | ||||
| 	* s2: Fix EstimateBlockSize on 6&7 length input by @klauspost in https://github.com/klauspost/compress/pull/867 | ||||
|  | ||||
| * Sept 19th, 2023 - [v1.17.0](https://github.com/klauspost/compress/releases/tag/v1.17.0) | ||||
| 	* Add experimental dictionary builder  https://github.com/klauspost/compress/pull/853 | ||||
| 	* Add xerial snappy read/writer https://github.com/klauspost/compress/pull/838 | ||||
| 	* flate: Add limited window compression https://github.com/klauspost/compress/pull/843 | ||||
| 	* s2: Do 2 overlapping match checks https://github.com/klauspost/compress/pull/839 | ||||
| 	* flate: Add amd64 assembly matchlen https://github.com/klauspost/compress/pull/837 | ||||
| 	* gzip: Copy bufio.Reader on Reset by @thatguystone in https://github.com/klauspost/compress/pull/860 | ||||
|  | ||||
| <details> | ||||
| 	<summary>See changes to v1.16.x</summary> | ||||
|  | ||||
|     | ||||
| * July 1st, 2023 - [v1.16.7](https://github.com/klauspost/compress/releases/tag/v1.16.7) | ||||
| 	* zstd: Fix default level first dictionary encode https://github.com/klauspost/compress/pull/829 | ||||
| 	* s2: add GetBufferCapacity() method by @GiedriusS in https://github.com/klauspost/compress/pull/832 | ||||
|  | ||||
| * June 13, 2023 - [v1.16.6](https://github.com/klauspost/compress/releases/tag/v1.16.6) | ||||
| 	* zstd: correctly ignore WithEncoderPadding(1) by @ianlancetaylor in https://github.com/klauspost/compress/pull/806 | ||||
| 	* zstd: Add amd64 match length assembly https://github.com/klauspost/compress/pull/824 | ||||
| 	* gzhttp: Handle informational headers by @rtribotte in https://github.com/klauspost/compress/pull/815 | ||||
| 	* s2: Improve Better compression slightly https://github.com/klauspost/compress/pull/663 | ||||
|  | ||||
| * Apr 16, 2023 - [v1.16.5](https://github.com/klauspost/compress/releases/tag/v1.16.5) | ||||
| 	* zstd: readByte needs to use io.ReadFull by @jnoxon in https://github.com/klauspost/compress/pull/802 | ||||
| 	* gzip: Fix WriterTo after initial read https://github.com/klauspost/compress/pull/804 | ||||
|  | ||||
| * Apr 5, 2023 - [v1.16.4](https://github.com/klauspost/compress/releases/tag/v1.16.4) | ||||
| 	* zstd: Improve zstd best efficiency by @greatroar and @klauspost in https://github.com/klauspost/compress/pull/784 | ||||
| 	* zstd: Respect WithAllLitEntropyCompression https://github.com/klauspost/compress/pull/792 | ||||
| 	* zstd: Fix amd64 not always detecting corrupt data https://github.com/klauspost/compress/pull/785 | ||||
| 	* zstd: Various minor improvements by @greatroar in https://github.com/klauspost/compress/pull/788 https://github.com/klauspost/compress/pull/794 https://github.com/klauspost/compress/pull/795 | ||||
| 	* s2: Fix huge block overflow https://github.com/klauspost/compress/pull/779 | ||||
| 	* s2: Allow CustomEncoder fallback https://github.com/klauspost/compress/pull/780 | ||||
| 	* gzhttp: Suppport ResponseWriter Unwrap() in gzhttp handler by @jgimenez in https://github.com/klauspost/compress/pull/799 | ||||
|  | ||||
| * Mar 13, 2023 - [v1.16.1](https://github.com/klauspost/compress/releases/tag/v1.16.1) | ||||
| 	* zstd: Speed up + improve best encoder by @greatroar in https://github.com/klauspost/compress/pull/776 | ||||
| 	* gzhttp: Add optional [BREACH mitigation](https://github.com/klauspost/compress/tree/master/gzhttp#breach-mitigation). https://github.com/klauspost/compress/pull/762 https://github.com/klauspost/compress/pull/768 https://github.com/klauspost/compress/pull/769 https://github.com/klauspost/compress/pull/770 https://github.com/klauspost/compress/pull/767 | ||||
| 	* s2: Add Intel LZ4s converter https://github.com/klauspost/compress/pull/766 | ||||
| 	* zstd: Minor bug fixes https://github.com/klauspost/compress/pull/771 https://github.com/klauspost/compress/pull/772 https://github.com/klauspost/compress/pull/773 | ||||
| 	* huff0: Speed up compress1xDo by @greatroar in https://github.com/klauspost/compress/pull/774 | ||||
|  | ||||
| * Feb 26, 2023 - [v1.16.0](https://github.com/klauspost/compress/releases/tag/v1.16.0) | ||||
| 	* s2: Add [Dictionary](https://github.com/klauspost/compress/tree/master/s2#dictionaries) support.  https://github.com/klauspost/compress/pull/685 | ||||
| 	* s2: Add Compression Size Estimate.  https://github.com/klauspost/compress/pull/752 | ||||
| 	* s2: Add support for custom stream encoder. https://github.com/klauspost/compress/pull/755 | ||||
| 	* s2: Add LZ4 block converter. https://github.com/klauspost/compress/pull/748 | ||||
| 	* s2: Support io.ReaderAt in ReadSeeker. https://github.com/klauspost/compress/pull/747 | ||||
| 	* s2c/s2sx: Use concurrent decoding. https://github.com/klauspost/compress/pull/746 | ||||
| </details> | ||||
|  | ||||
| <details> | ||||
| 	<summary>See changes to v1.15.x</summary> | ||||
| 	 | ||||
| * Jan 21st, 2023 (v1.15.15) | ||||
| 	* deflate: Improve level 7-9 by @klauspost in https://github.com/klauspost/compress/pull/739 | ||||
| 	* zstd: Add delta encoding support by @greatroar in https://github.com/klauspost/compress/pull/728 | ||||
| 	* zstd: Various speed improvements by @greatroar https://github.com/klauspost/compress/pull/741 https://github.com/klauspost/compress/pull/734 https://github.com/klauspost/compress/pull/736 https://github.com/klauspost/compress/pull/744 https://github.com/klauspost/compress/pull/743 https://github.com/klauspost/compress/pull/745 | ||||
| 	* gzhttp: Add SuffixETag() and DropETag() options to prevent ETag collisions on compressed responses by @willbicks in https://github.com/klauspost/compress/pull/740 | ||||
|  | ||||
| * Jan 3rd, 2023 (v1.15.14) | ||||
|  | ||||
| 	* flate: Improve speed in big stateless blocks https://github.com/klauspost/compress/pull/718 | ||||
| 	* zstd: Minor speed tweaks by @greatroar in https://github.com/klauspost/compress/pull/716 https://github.com/klauspost/compress/pull/720 | ||||
| 	* export NoGzipResponseWriter for custom ResponseWriter wrappers by @harshavardhana in https://github.com/klauspost/compress/pull/722 | ||||
| 	* s2: Add example for indexing and existing stream https://github.com/klauspost/compress/pull/723 | ||||
|  | ||||
| * Dec 11, 2022 (v1.15.13) | ||||
| 	* zstd: Add [MaxEncodedSize](https://pkg.go.dev/github.com/klauspost/compress@v1.15.13/zstd#Encoder.MaxEncodedSize) to encoder  https://github.com/klauspost/compress/pull/691 | ||||
| 	* zstd: Various tweaks and improvements https://github.com/klauspost/compress/pull/693 https://github.com/klauspost/compress/pull/695 https://github.com/klauspost/compress/pull/696 https://github.com/klauspost/compress/pull/701 https://github.com/klauspost/compress/pull/702 https://github.com/klauspost/compress/pull/703 https://github.com/klauspost/compress/pull/704 https://github.com/klauspost/compress/pull/705 https://github.com/klauspost/compress/pull/706 https://github.com/klauspost/compress/pull/707 https://github.com/klauspost/compress/pull/708 | ||||
|  | ||||
| * Oct 26, 2022 (v1.15.12) | ||||
|  | ||||
| 	* zstd: Tweak decoder allocs. https://github.com/klauspost/compress/pull/680 | ||||
| 	* gzhttp: Always delete `HeaderNoCompression` https://github.com/klauspost/compress/pull/683 | ||||
|  | ||||
| * Sept 26, 2022 (v1.15.11) | ||||
|  | ||||
| 	* flate: Improve level 1-3 compression  https://github.com/klauspost/compress/pull/678 | ||||
| 	* zstd: Improve "best" compression by @nightwolfz in https://github.com/klauspost/compress/pull/677 | ||||
| 	* zstd: Fix+reduce decompression allocations https://github.com/klauspost/compress/pull/668 | ||||
| 	* zstd: Fix non-effective noescape tag https://github.com/klauspost/compress/pull/667 | ||||
|  | ||||
| * Sept 16, 2022 (v1.15.10) | ||||
|  | ||||
| 	* zstd: Add [WithDecodeAllCapLimit](https://pkg.go.dev/github.com/klauspost/compress@v1.15.10/zstd#WithDecodeAllCapLimit) https://github.com/klauspost/compress/pull/649 | ||||
| 	* Add Go 1.19 - deprecate Go 1.16  https://github.com/klauspost/compress/pull/651 | ||||
| 	* flate: Improve level 5+6 compression https://github.com/klauspost/compress/pull/656 | ||||
| 	* zstd: Improve "better" compresssion  https://github.com/klauspost/compress/pull/657 | ||||
| 	* s2: Improve "best" compression https://github.com/klauspost/compress/pull/658 | ||||
| 	* s2: Improve "better" compression. https://github.com/klauspost/compress/pull/635 | ||||
| 	* s2: Slightly faster non-assembly decompression https://github.com/klauspost/compress/pull/646 | ||||
| 	* Use arrays for constant size copies https://github.com/klauspost/compress/pull/659 | ||||
|  | ||||
| * July 21, 2022 (v1.15.9) | ||||
|  | ||||
| 	* zstd: Fix decoder crash on amd64 (no BMI) on invalid input https://github.com/klauspost/compress/pull/645 | ||||
| 	* zstd: Disable decoder extended memory copies (amd64) due to possible crashes https://github.com/klauspost/compress/pull/644 | ||||
| 	* zstd: Allow single segments up to "max decoded size" by @klauspost in https://github.com/klauspost/compress/pull/643 | ||||
|  | ||||
| * July 13, 2022 (v1.15.8) | ||||
|  | ||||
| 	* gzip: fix stack exhaustion bug in Reader.Read https://github.com/klauspost/compress/pull/641 | ||||
| 	* s2: Add Index header trim/restore https://github.com/klauspost/compress/pull/638 | ||||
| 	* zstd: Optimize seqdeq amd64 asm by @greatroar in https://github.com/klauspost/compress/pull/636 | ||||
| 	* zstd: Improve decoder memcopy https://github.com/klauspost/compress/pull/637 | ||||
| 	* huff0: Pass a single bitReader pointer to asm by @greatroar in https://github.com/klauspost/compress/pull/634 | ||||
| 	* zstd: Branchless getBits for amd64 w/o BMI2 by @greatroar in https://github.com/klauspost/compress/pull/640 | ||||
| 	* gzhttp: Remove header before writing https://github.com/klauspost/compress/pull/639 | ||||
|  | ||||
| * June 29, 2022 (v1.15.7) | ||||
|  | ||||
| 	* s2: Fix absolute forward seeks  https://github.com/klauspost/compress/pull/633 | ||||
| 	* zip: Merge upstream  https://github.com/klauspost/compress/pull/631 | ||||
| 	* zip: Re-add zip64 fix https://github.com/klauspost/compress/pull/624 | ||||
| 	* zstd: translate fseDecoder.buildDtable into asm by @WojciechMula in https://github.com/klauspost/compress/pull/598 | ||||
| 	* flate: Faster histograms  https://github.com/klauspost/compress/pull/620 | ||||
| 	* deflate: Use compound hcode  https://github.com/klauspost/compress/pull/622 | ||||
|  | ||||
| * June 3, 2022 (v1.15.6) | ||||
| 	* s2: Improve coding for long, close matches https://github.com/klauspost/compress/pull/613 | ||||
| 	* s2c: Add Snappy/S2 stream recompression https://github.com/klauspost/compress/pull/611 | ||||
| 	* zstd: Always use configured block size https://github.com/klauspost/compress/pull/605 | ||||
| 	* zstd: Fix incorrect hash table placement for dict encoding in default https://github.com/klauspost/compress/pull/606 | ||||
| 	* zstd: Apply default config to ZipDecompressor without options https://github.com/klauspost/compress/pull/608 | ||||
| 	* gzhttp: Exclude more common archive formats https://github.com/klauspost/compress/pull/612 | ||||
| 	* s2: Add ReaderIgnoreCRC https://github.com/klauspost/compress/pull/609 | ||||
| 	* s2: Remove sanity load on index creation https://github.com/klauspost/compress/pull/607 | ||||
| 	* snappy: Use dedicated function for scoring https://github.com/klauspost/compress/pull/614 | ||||
| 	* s2c+s2d: Use official snappy framed extension https://github.com/klauspost/compress/pull/610 | ||||
|  | ||||
| * May 25, 2022 (v1.15.5) | ||||
| 	* s2: Add concurrent stream decompression https://github.com/klauspost/compress/pull/602 | ||||
| 	* s2: Fix final emit oob read crash on amd64 https://github.com/klauspost/compress/pull/601 | ||||
| 	* huff0: asm implementation of Decompress1X by @WojciechMula https://github.com/klauspost/compress/pull/596 | ||||
| 	* zstd: Use 1 less goroutine for stream decoding https://github.com/klauspost/compress/pull/588 | ||||
| 	* zstd: Copy literal in 16 byte blocks when possible https://github.com/klauspost/compress/pull/592 | ||||
| 	* zstd: Speed up when WithDecoderLowmem(false) https://github.com/klauspost/compress/pull/599 | ||||
| 	* zstd: faster next state update in BMI2 version of decode by @WojciechMula in https://github.com/klauspost/compress/pull/593 | ||||
| 	* huff0: Do not check max size when reading table. https://github.com/klauspost/compress/pull/586 | ||||
| 	* flate: Inplace hashing for level 7-9 by @klauspost in https://github.com/klauspost/compress/pull/590 | ||||
|  | ||||
|  | ||||
| * May 11, 2022 (v1.15.4) | ||||
| 	* huff0: decompress directly into output by @WojciechMula in [#577](https://github.com/klauspost/compress/pull/577) | ||||
| 	* inflate: Keep dict on stack [#581](https://github.com/klauspost/compress/pull/581) | ||||
| 	* zstd: Faster decoding memcopy in asm [#583](https://github.com/klauspost/compress/pull/583) | ||||
| 	* zstd: Fix ignored crc [#580](https://github.com/klauspost/compress/pull/580) | ||||
|  | ||||
| * May 5, 2022 (v1.15.3) | ||||
| 	* zstd: Allow to ignore checksum checking by @WojciechMula [#572](https://github.com/klauspost/compress/pull/572) | ||||
| 	* s2: Fix incorrect seek for io.SeekEnd in [#575](https://github.com/klauspost/compress/pull/575) | ||||
|  | ||||
| * Apr 26, 2022 (v1.15.2) | ||||
| 	* zstd: Add x86-64 assembly for decompression on streams and blocks. Contributed by [@WojciechMula](https://github.com/WojciechMula). Typically 2x faster.  [#528](https://github.com/klauspost/compress/pull/528) [#531](https://github.com/klauspost/compress/pull/531) [#545](https://github.com/klauspost/compress/pull/545) [#537](https://github.com/klauspost/compress/pull/537) | ||||
| 	* zstd: Add options to ZipDecompressor and fixes [#539](https://github.com/klauspost/compress/pull/539) | ||||
| 	* s2: Use sorted search for index [#555](https://github.com/klauspost/compress/pull/555) | ||||
| 	* Minimum version is Go 1.16, added CI test on 1.18. | ||||
|  | ||||
| * Mar 11, 2022 (v1.15.1) | ||||
| 	* huff0: Add x86 assembly of Decode4X by @WojciechMula in [#512](https://github.com/klauspost/compress/pull/512) | ||||
| 	* zstd: Reuse zip decoders in [#514](https://github.com/klauspost/compress/pull/514) | ||||
| 	* zstd: Detect extra block data and report as corrupted in [#520](https://github.com/klauspost/compress/pull/520) | ||||
| 	* zstd: Handle zero sized frame content size stricter in [#521](https://github.com/klauspost/compress/pull/521) | ||||
| 	* zstd: Add stricter block size checks in [#523](https://github.com/klauspost/compress/pull/523) | ||||
|  | ||||
| * Mar 3, 2022 (v1.15.0) | ||||
| 	* zstd: Refactor decoder by @klauspost in [#498](https://github.com/klauspost/compress/pull/498) | ||||
| 	* zstd: Add stream encoding without goroutines by @klauspost in [#505](https://github.com/klauspost/compress/pull/505) | ||||
| 	* huff0: Prevent single blocks exceeding 16 bits by @klauspost in[#507](https://github.com/klauspost/compress/pull/507) | ||||
| 	* flate: Inline literal emission by @klauspost in [#509](https://github.com/klauspost/compress/pull/509) | ||||
| 	* gzhttp: Add zstd to transport by @klauspost in [#400](https://github.com/klauspost/compress/pull/400) | ||||
| 	* gzhttp: Make content-type optional by @klauspost in [#510](https://github.com/klauspost/compress/pull/510) | ||||
|  | ||||
| Both compression and decompression now supports "synchronous" stream operations. This means that whenever "concurrency" is set to 1, they will operate without spawning goroutines. | ||||
|  | ||||
| Stream decompression is now faster on asynchronous, since the goroutine allocation much more effectively splits the workload. On typical streams this will typically use 2 cores fully for decompression. When a stream has finished decoding no goroutines will be left over, so decoders can now safely be pooled and still be garbage collected. | ||||
|  | ||||
| While the release has been extensively tested, it is recommended to testing when upgrading. | ||||
|  | ||||
| </details> | ||||
|  | ||||
| <details> | ||||
| 	<summary>See changes to v1.14.x</summary> | ||||
| 	 | ||||
| * Feb 22, 2022 (v1.14.4) | ||||
| 	* flate: Fix rare huffman only (-2) corruption. [#503](https://github.com/klauspost/compress/pull/503) | ||||
| 	* zip: Update deprecated CreateHeaderRaw to correctly call CreateRaw by @saracen in [#502](https://github.com/klauspost/compress/pull/502) | ||||
| 	* zip: don't read data descriptor early by @saracen in [#501](https://github.com/klauspost/compress/pull/501)  #501 | ||||
| 	* huff0: Use static decompression buffer up to 30% faster by @klauspost in [#499](https://github.com/klauspost/compress/pull/499) [#500](https://github.com/klauspost/compress/pull/500) | ||||
|  | ||||
| * Feb 17, 2022 (v1.14.3) | ||||
| 	* flate: Improve fastest levels compression speed ~10% more throughput. [#482](https://github.com/klauspost/compress/pull/482) [#489](https://github.com/klauspost/compress/pull/489) [#490](https://github.com/klauspost/compress/pull/490) [#491](https://github.com/klauspost/compress/pull/491) [#494](https://github.com/klauspost/compress/pull/494)  [#478](https://github.com/klauspost/compress/pull/478) | ||||
| 	* flate: Faster decompression speed, ~5-10%. [#483](https://github.com/klauspost/compress/pull/483) | ||||
| 	* s2: Faster compression with Go v1.18 and amd64 microarch level 3+. [#484](https://github.com/klauspost/compress/pull/484) [#486](https://github.com/klauspost/compress/pull/486) | ||||
|  | ||||
| * Jan 25, 2022 (v1.14.2) | ||||
| 	* zstd: improve header decoder by @dsnet  [#476](https://github.com/klauspost/compress/pull/476) | ||||
| 	* zstd: Add bigger default blocks  [#469](https://github.com/klauspost/compress/pull/469) | ||||
| 	* zstd: Remove unused decompression buffer [#470](https://github.com/klauspost/compress/pull/470) | ||||
| 	* zstd: Fix logically dead code by @ningmingxiao [#472](https://github.com/klauspost/compress/pull/472) | ||||
| 	* flate: Improve level 7-9 [#471](https://github.com/klauspost/compress/pull/471) [#473](https://github.com/klauspost/compress/pull/473) | ||||
| 	* zstd: Add noasm tag for xxhash [#475](https://github.com/klauspost/compress/pull/475) | ||||
|  | ||||
| * Jan 11, 2022 (v1.14.1) | ||||
| 	* s2: Add stream index in [#462](https://github.com/klauspost/compress/pull/462) | ||||
| 	* flate: Speed and efficiency improvements in [#439](https://github.com/klauspost/compress/pull/439) [#461](https://github.com/klauspost/compress/pull/461) [#455](https://github.com/klauspost/compress/pull/455) [#452](https://github.com/klauspost/compress/pull/452) [#458](https://github.com/klauspost/compress/pull/458) | ||||
| 	* zstd: Performance improvement in [#420]( https://github.com/klauspost/compress/pull/420) [#456](https://github.com/klauspost/compress/pull/456) [#437](https://github.com/klauspost/compress/pull/437) [#467](https://github.com/klauspost/compress/pull/467) [#468](https://github.com/klauspost/compress/pull/468) | ||||
| 	* zstd: add arm64 xxhash assembly in [#464](https://github.com/klauspost/compress/pull/464) | ||||
| 	* Add garbled for binaries for s2 in [#445](https://github.com/klauspost/compress/pull/445) | ||||
| </details> | ||||
|  | ||||
| <details> | ||||
| 	<summary>See changes to v1.13.x</summary> | ||||
| 	 | ||||
| * Aug 30, 2021 (v1.13.5) | ||||
| 	* gz/zlib/flate: Alias stdlib errors [#425](https://github.com/klauspost/compress/pull/425) | ||||
| 	* s2: Add block support to commandline tools [#413](https://github.com/klauspost/compress/pull/413) | ||||
| 	* zstd: pooledZipWriter should return Writers to the same pool [#426](https://github.com/klauspost/compress/pull/426) | ||||
| 	* Removed golang/snappy as external dependency for tests [#421](https://github.com/klauspost/compress/pull/421) | ||||
|  | ||||
| * Aug 12, 2021 (v1.13.4) | ||||
| 	* Add [snappy replacement package](https://github.com/klauspost/compress/tree/master/snappy). | ||||
| 	* zstd: Fix incorrect encoding in "best" mode [#415](https://github.com/klauspost/compress/pull/415) | ||||
|  | ||||
| * Aug 3, 2021 (v1.13.3)  | ||||
| 	* zstd: Improve Best compression [#404](https://github.com/klauspost/compress/pull/404) | ||||
| 	* zstd: Fix WriteTo error forwarding [#411](https://github.com/klauspost/compress/pull/411) | ||||
| 	* gzhttp: Return http.HandlerFunc instead of http.Handler. Unlikely breaking change. [#406](https://github.com/klauspost/compress/pull/406) | ||||
| 	* s2sx: Fix max size error [#399](https://github.com/klauspost/compress/pull/399) | ||||
| 	* zstd: Add optional stream content size on reset [#401](https://github.com/klauspost/compress/pull/401) | ||||
| 	* zstd: use SpeedBestCompression for level >= 10 [#410](https://github.com/klauspost/compress/pull/410) | ||||
|  | ||||
| * Jun 14, 2021 (v1.13.1) | ||||
| 	* s2: Add full Snappy output support  [#396](https://github.com/klauspost/compress/pull/396) | ||||
| 	* zstd: Add configurable [Decoder window](https://pkg.go.dev/github.com/klauspost/compress/zstd#WithDecoderMaxWindow) size [#394](https://github.com/klauspost/compress/pull/394) | ||||
| 	* gzhttp: Add header to skip compression  [#389](https://github.com/klauspost/compress/pull/389) | ||||
| 	* s2: Improve speed with bigger output margin  [#395](https://github.com/klauspost/compress/pull/395) | ||||
|  | ||||
| * Jun 3, 2021 (v1.13.0) | ||||
| 	* Added [gzhttp](https://github.com/klauspost/compress/tree/master/gzhttp#gzip-handler) which allows wrapping HTTP servers and clients with GZIP compressors. | ||||
| 	* zstd: Detect short invalid signatures [#382](https://github.com/klauspost/compress/pull/382) | ||||
| 	* zstd: Spawn decoder goroutine only if needed. [#380](https://github.com/klauspost/compress/pull/380) | ||||
| </details> | ||||
|  | ||||
|  | ||||
| <details> | ||||
| 	<summary>See changes to v1.12.x</summary> | ||||
| 	 | ||||
| * May 25, 2021 (v1.12.3) | ||||
| 	* deflate: Better/faster Huffman encoding [#374](https://github.com/klauspost/compress/pull/374) | ||||
| 	* deflate: Allocate less for history. [#375](https://github.com/klauspost/compress/pull/375) | ||||
| 	* zstd: Forward read errors [#373](https://github.com/klauspost/compress/pull/373)  | ||||
|  | ||||
| * Apr 27, 2021 (v1.12.2) | ||||
| 	* zstd: Improve better/best compression [#360](https://github.com/klauspost/compress/pull/360) [#364](https://github.com/klauspost/compress/pull/364) [#365](https://github.com/klauspost/compress/pull/365) | ||||
| 	* zstd: Add helpers to compress/decompress zstd inside zip files [#363](https://github.com/klauspost/compress/pull/363) | ||||
| 	* deflate: Improve level 5+6 compression [#367](https://github.com/klauspost/compress/pull/367) | ||||
| 	* s2: Improve better/best compression [#358](https://github.com/klauspost/compress/pull/358) [#359](https://github.com/klauspost/compress/pull/358) | ||||
| 	* s2: Load after checking src limit on amd64. [#362](https://github.com/klauspost/compress/pull/362) | ||||
| 	* s2sx: Limit max executable size [#368](https://github.com/klauspost/compress/pull/368)  | ||||
|  | ||||
| * Apr 14, 2021 (v1.12.1) | ||||
| 	* snappy package removed. Upstream added as dependency. | ||||
| 	* s2: Better compression in "best" mode [#353](https://github.com/klauspost/compress/pull/353) | ||||
| 	* s2sx: Add stdin input and detect pre-compressed from signature [#352](https://github.com/klauspost/compress/pull/352) | ||||
| 	* s2c/s2d: Add http as possible input [#348](https://github.com/klauspost/compress/pull/348) | ||||
| 	* s2c/s2d/s2sx: Always truncate when writing files [#352](https://github.com/klauspost/compress/pull/352) | ||||
| 	* zstd: Reduce memory usage further when using [WithLowerEncoderMem](https://pkg.go.dev/github.com/klauspost/compress/zstd#WithLowerEncoderMem) [#346](https://github.com/klauspost/compress/pull/346) | ||||
| 	* s2: Fix potential problem with amd64 assembly and profilers [#349](https://github.com/klauspost/compress/pull/349) | ||||
| </details> | ||||
|  | ||||
| <details> | ||||
| 	<summary>See changes to v1.11.x</summary> | ||||
| 	 | ||||
| * Mar 26, 2021 (v1.11.13) | ||||
| 	* zstd: Big speedup on small dictionary encodes [#344](https://github.com/klauspost/compress/pull/344) [#345](https://github.com/klauspost/compress/pull/345) | ||||
| 	* zstd: Add [WithLowerEncoderMem](https://pkg.go.dev/github.com/klauspost/compress/zstd#WithLowerEncoderMem) encoder option [#336](https://github.com/klauspost/compress/pull/336) | ||||
| 	* deflate: Improve entropy compression [#338](https://github.com/klauspost/compress/pull/338) | ||||
| 	* s2: Clean up and minor performance improvement in best [#341](https://github.com/klauspost/compress/pull/341) | ||||
|  | ||||
| * Mar 5, 2021 (v1.11.12) | ||||
| 	* s2: Add `s2sx` binary that creates [self extracting archives](https://github.com/klauspost/compress/tree/master/s2#s2sx-self-extracting-archives). | ||||
| 	* s2: Speed up decompression on non-assembly platforms [#328](https://github.com/klauspost/compress/pull/328) | ||||
|  | ||||
| * Mar 1, 2021 (v1.11.9) | ||||
| 	* s2: Add ARM64 decompression assembly. Around 2x output speed. [#324](https://github.com/klauspost/compress/pull/324) | ||||
| 	* s2: Improve "better" speed and efficiency. [#325](https://github.com/klauspost/compress/pull/325) | ||||
| 	* s2: Fix binaries. | ||||
|  | ||||
| * Feb 25, 2021 (v1.11.8) | ||||
| 	* s2: Fixed occational out-of-bounds write on amd64. Upgrade recommended. | ||||
| 	* s2: Add AMD64 assembly for better mode. 25-50% faster. [#315](https://github.com/klauspost/compress/pull/315) | ||||
| 	* s2: Less upfront decoder allocation. [#322](https://github.com/klauspost/compress/pull/322) | ||||
| 	* zstd: Faster "compression" of incompressible data. [#314](https://github.com/klauspost/compress/pull/314) | ||||
| 	* zip: Fix zip64 headers. [#313](https://github.com/klauspost/compress/pull/313) | ||||
|    | ||||
| * Jan 14, 2021 (v1.11.7) | ||||
| 	* Use Bytes() interface to get bytes across packages. [#309](https://github.com/klauspost/compress/pull/309) | ||||
| 	* s2: Add 'best' compression option.  [#310](https://github.com/klauspost/compress/pull/310) | ||||
| 	* s2: Add ReaderMaxBlockSize, changes `s2.NewReader` signature to include varargs. [#311](https://github.com/klauspost/compress/pull/311) | ||||
| 	* s2: Fix crash on small better buffers. [#308](https://github.com/klauspost/compress/pull/308) | ||||
| 	* s2: Clean up decoder. [#312](https://github.com/klauspost/compress/pull/312) | ||||
|  | ||||
| * Jan 7, 2021 (v1.11.6) | ||||
| 	* zstd: Make decoder allocations smaller [#306](https://github.com/klauspost/compress/pull/306) | ||||
| 	* zstd: Free Decoder resources when Reset is called with a nil io.Reader  [#305](https://github.com/klauspost/compress/pull/305) | ||||
|  | ||||
| * Dec 20, 2020 (v1.11.4) | ||||
| 	* zstd: Add Best compression mode [#304](https://github.com/klauspost/compress/pull/304) | ||||
| 	* Add header decoder [#299](https://github.com/klauspost/compress/pull/299) | ||||
| 	* s2: Add uncompressed stream option [#297](https://github.com/klauspost/compress/pull/297) | ||||
| 	* Simplify/speed up small blocks with known max size. [#300](https://github.com/klauspost/compress/pull/300) | ||||
| 	* zstd: Always reset literal dict encoder [#303](https://github.com/klauspost/compress/pull/303) | ||||
|  | ||||
| * Nov 15, 2020 (v1.11.3) | ||||
| 	* inflate: 10-15% faster decompression  [#293](https://github.com/klauspost/compress/pull/293) | ||||
| 	* zstd: Tweak DecodeAll default allocation [#295](https://github.com/klauspost/compress/pull/295) | ||||
|  | ||||
| * Oct 11, 2020 (v1.11.2) | ||||
| 	* s2: Fix out of bounds read in "better" block compression [#291](https://github.com/klauspost/compress/pull/291) | ||||
|  | ||||
| * Oct 1, 2020 (v1.11.1) | ||||
| 	* zstd: Set allLitEntropy true in default configuration [#286](https://github.com/klauspost/compress/pull/286) | ||||
|  | ||||
| * Sept 8, 2020 (v1.11.0) | ||||
| 	* zstd: Add experimental compression [dictionaries](https://github.com/klauspost/compress/tree/master/zstd#dictionaries) [#281](https://github.com/klauspost/compress/pull/281) | ||||
| 	* zstd: Fix mixed Write and ReadFrom calls [#282](https://github.com/klauspost/compress/pull/282) | ||||
| 	* inflate/gz: Limit variable shifts, ~5% faster decompression [#274](https://github.com/klauspost/compress/pull/274) | ||||
| </details> | ||||
|  | ||||
| <details> | ||||
| 	<summary>See changes to v1.10.x</summary> | ||||
|   | ||||
| * July 8, 2020 (v1.10.11)  | ||||
| 	* zstd: Fix extra block when compressing with ReadFrom. [#278](https://github.com/klauspost/compress/pull/278) | ||||
| 	* huff0: Also populate compression table when reading decoding table. [#275](https://github.com/klauspost/compress/pull/275) | ||||
| 	 | ||||
| * June 23, 2020 (v1.10.10)  | ||||
| 	* zstd: Skip entropy compression in fastest mode when no matches. [#270](https://github.com/klauspost/compress/pull/270) | ||||
| 	 | ||||
| * June 16, 2020 (v1.10.9):  | ||||
| 	* zstd: API change for specifying dictionaries. See [#268](https://github.com/klauspost/compress/pull/268) | ||||
| 	* zip: update CreateHeaderRaw to handle zip64 fields. [#266](https://github.com/klauspost/compress/pull/266) | ||||
| 	* Fuzzit tests removed. The service has been purchased and is no longer available. | ||||
| 	 | ||||
| * June 5, 2020 (v1.10.8):  | ||||
| 	* 1.15x faster zstd block decompression. [#265](https://github.com/klauspost/compress/pull/265) | ||||
| 	 | ||||
| * June 1, 2020 (v1.10.7):  | ||||
| 	* Added zstd decompression [dictionary support](https://github.com/klauspost/compress/tree/master/zstd#dictionaries) | ||||
| 	* Increase zstd decompression speed up to 1.19x.  [#259](https://github.com/klauspost/compress/pull/259) | ||||
| 	* Remove internal reset call in zstd compression and reduce allocations. [#263](https://github.com/klauspost/compress/pull/263) | ||||
| 	 | ||||
| * May 21, 2020: (v1.10.6)  | ||||
| 	* zstd: Reduce allocations while decoding. [#258](https://github.com/klauspost/compress/pull/258), [#252](https://github.com/klauspost/compress/pull/252) | ||||
| 	* zstd: Stricter decompression checks. | ||||
| 	 | ||||
| * April 12, 2020: (v1.10.5) | ||||
| 	* s2-commands: Flush output when receiving SIGINT. [#239](https://github.com/klauspost/compress/pull/239) | ||||
| 	 | ||||
| * Apr 8, 2020: (v1.10.4)  | ||||
| 	* zstd: Minor/special case optimizations. [#251](https://github.com/klauspost/compress/pull/251),  [#250](https://github.com/klauspost/compress/pull/250),  [#249](https://github.com/klauspost/compress/pull/249),  [#247](https://github.com/klauspost/compress/pull/247) | ||||
| * Mar 11, 2020: (v1.10.3)  | ||||
| 	* s2: Use S2 encoder in pure Go mode for Snappy output as well. [#245](https://github.com/klauspost/compress/pull/245) | ||||
| 	* s2: Fix pure Go block encoder. [#244](https://github.com/klauspost/compress/pull/244) | ||||
| 	* zstd: Added "better compression" mode. [#240](https://github.com/klauspost/compress/pull/240) | ||||
| 	* zstd: Improve speed of fastest compression mode by 5-10% [#241](https://github.com/klauspost/compress/pull/241) | ||||
| 	* zstd: Skip creating encoders when not needed. [#238](https://github.com/klauspost/compress/pull/238) | ||||
| 	 | ||||
| * Feb 27, 2020: (v1.10.2)  | ||||
| 	* Close to 50% speedup in inflate (gzip/zip decompression). [#236](https://github.com/klauspost/compress/pull/236) [#234](https://github.com/klauspost/compress/pull/234) [#232](https://github.com/klauspost/compress/pull/232) | ||||
| 	* Reduce deflate level 1-6 memory usage up to 59%. [#227](https://github.com/klauspost/compress/pull/227) | ||||
| 	 | ||||
| * Feb 18, 2020: (v1.10.1) | ||||
| 	* Fix zstd crash when resetting multiple times without sending data. [#226](https://github.com/klauspost/compress/pull/226) | ||||
| 	* deflate: Fix dictionary use on level 1-6. [#224](https://github.com/klauspost/compress/pull/224) | ||||
| 	* Remove deflate writer reference when closing. [#224](https://github.com/klauspost/compress/pull/224) | ||||
| 	 | ||||
| * Feb 4, 2020: (v1.10.0)  | ||||
| 	* Add optional dictionary to [stateless deflate](https://pkg.go.dev/github.com/klauspost/compress/flate?tab=doc#StatelessDeflate). Breaking change, send `nil` for previous behaviour. [#216](https://github.com/klauspost/compress/pull/216) | ||||
| 	* Fix buffer overflow on repeated small block deflate.  [#218](https://github.com/klauspost/compress/pull/218) | ||||
| 	* Allow copying content from an existing ZIP file without decompressing+compressing. [#214](https://github.com/klauspost/compress/pull/214) | ||||
| 	* Added [S2](https://github.com/klauspost/compress/tree/master/s2#s2-compression) AMD64 assembler and various optimizations. Stream speed >10GB/s.  [#186](https://github.com/klauspost/compress/pull/186) | ||||
|  | ||||
| </details> | ||||
|  | ||||
| <details> | ||||
| 	<summary>See changes prior to v1.10.0</summary> | ||||
|  | ||||
| * Jan 20,2020 (v1.9.8) Optimize gzip/deflate with better size estimates and faster table generation. [#207](https://github.com/klauspost/compress/pull/207) by [luyu6056](https://github.com/luyu6056),  [#206](https://github.com/klauspost/compress/pull/206). | ||||
| * Jan 11, 2020: S2 Encode/Decode will use provided buffer if capacity is big enough. [#204](https://github.com/klauspost/compress/pull/204)  | ||||
| * Jan 5, 2020: (v1.9.7) Fix another zstd regression in v1.9.5 - v1.9.6 removed. | ||||
| * Jan 4, 2020: (v1.9.6) Regression in v1.9.5 fixed causing corrupt zstd encodes in rare cases. | ||||
| * Jan 4, 2020: Faster IO in [s2c + s2d commandline tools](https://github.com/klauspost/compress/tree/master/s2#commandline-tools) compression/decompression. [#192](https://github.com/klauspost/compress/pull/192) | ||||
| * Dec 29, 2019: Removed v1.9.5 since fuzz tests showed a compatibility problem with the reference zstandard decoder. | ||||
| * Dec 29, 2019: (v1.9.5) zstd: 10-20% faster block compression. [#199](https://github.com/klauspost/compress/pull/199) | ||||
| * Dec 29, 2019: [zip](https://godoc.org/github.com/klauspost/compress/zip) package updated with latest Go features | ||||
| * Dec 29, 2019: zstd: Single segment flag condintions tweaked. [#197](https://github.com/klauspost/compress/pull/197) | ||||
| * Dec 18, 2019: s2: Faster compression when ReadFrom is used. [#198](https://github.com/klauspost/compress/pull/198) | ||||
| * Dec 10, 2019: s2: Fix repeat length output when just above at 16MB limit. | ||||
| * Dec 10, 2019: zstd: Add function to get decoder as io.ReadCloser. [#191](https://github.com/klauspost/compress/pull/191) | ||||
| * Dec 3, 2019: (v1.9.4) S2: limit max repeat length. [#188](https://github.com/klauspost/compress/pull/188) | ||||
| * Dec 3, 2019: Add [WithNoEntropyCompression](https://godoc.org/github.com/klauspost/compress/zstd#WithNoEntropyCompression) to zstd [#187](https://github.com/klauspost/compress/pull/187) | ||||
| * Dec 3, 2019: Reduce memory use for tests. Check for leaked goroutines. | ||||
| * Nov 28, 2019 (v1.9.3) Less allocations in stateless deflate. | ||||
| * Nov 28, 2019: 5-20% Faster huff0 decode. Impacts zstd as well. [#184](https://github.com/klauspost/compress/pull/184) | ||||
| * Nov 12, 2019 (v1.9.2) Added [Stateless Compression](#stateless-compression) for gzip/deflate. | ||||
| * Nov 12, 2019: Fixed zstd decompression of large single blocks. [#180](https://github.com/klauspost/compress/pull/180) | ||||
| * Nov 11, 2019: Set default  [s2c](https://github.com/klauspost/compress/tree/master/s2#commandline-tools) block size to 4MB. | ||||
| * Nov 11, 2019: Reduce inflate memory use by 1KB. | ||||
| * Nov 10, 2019: Less allocations in deflate bit writer. | ||||
| * Nov 10, 2019: Fix inconsistent error returned by zstd decoder. | ||||
| * Oct 28, 2019 (v1.9.1) ztsd: Fix crash when compressing blocks. [#174](https://github.com/klauspost/compress/pull/174) | ||||
| * Oct 24, 2019 (v1.9.0) zstd: Fix rare data corruption [#173](https://github.com/klauspost/compress/pull/173) | ||||
| * Oct 24, 2019 zstd: Fix huff0 out of buffer write [#171](https://github.com/klauspost/compress/pull/171) and always return errors [#172](https://github.com/klauspost/compress/pull/172)  | ||||
| * Oct 10, 2019: Big deflate rewrite, 30-40% faster with better compression [#105](https://github.com/klauspost/compress/pull/105) | ||||
|  | ||||
| </details> | ||||
|  | ||||
| <details> | ||||
| 	<summary>See changes prior to v1.9.0</summary> | ||||
|  | ||||
| * Oct 10, 2019: (v1.8.6) zstd: Allow partial reads to get flushed data. [#169](https://github.com/klauspost/compress/pull/169) | ||||
| * Oct 3, 2019: Fix inconsistent results on broken zstd streams. | ||||
| * Sep 25, 2019: Added `-rm` (remove source files) and `-q` (no output except errors) to `s2c` and `s2d` [commands](https://github.com/klauspost/compress/tree/master/s2#commandline-tools) | ||||
| * Sep 16, 2019: (v1.8.4) Add `s2c` and `s2d` [commandline tools](https://github.com/klauspost/compress/tree/master/s2#commandline-tools). | ||||
| * Sep 10, 2019: (v1.8.3) Fix s2 decoder [Skip](https://godoc.org/github.com/klauspost/compress/s2#Reader.Skip). | ||||
| * Sep 7, 2019: zstd: Added [WithWindowSize](https://godoc.org/github.com/klauspost/compress/zstd#WithWindowSize), contributed by [ianwilkes](https://github.com/ianwilkes). | ||||
| * Sep 5, 2019: (v1.8.2) Add [WithZeroFrames](https://godoc.org/github.com/klauspost/compress/zstd#WithZeroFrames) which adds full zero payload block encoding option. | ||||
| * Sep 5, 2019: Lazy initialization of zstandard predefined en/decoder tables. | ||||
| * Aug 26, 2019: (v1.8.1) S2: 1-2% compression increase in "better" compression mode. | ||||
| * Aug 26, 2019: zstd: Check maximum size of Huffman 1X compressed literals while decoding. | ||||
| * Aug 24, 2019: (v1.8.0) Added [S2 compression](https://github.com/klauspost/compress/tree/master/s2#s2-compression), a high performance replacement for Snappy.  | ||||
| * Aug 21, 2019: (v1.7.6) Fixed minor issues found by fuzzer. One could lead to zstd not decompressing. | ||||
| * Aug 18, 2019: Add [fuzzit](https://fuzzit.dev/) continuous fuzzing. | ||||
| * Aug 14, 2019: zstd: Skip incompressible data 2x faster.  [#147](https://github.com/klauspost/compress/pull/147) | ||||
| * Aug 4, 2019 (v1.7.5): Better literal compression. [#146](https://github.com/klauspost/compress/pull/146) | ||||
| * Aug 4, 2019: Faster zstd compression. [#143](https://github.com/klauspost/compress/pull/143) [#144](https://github.com/klauspost/compress/pull/144) | ||||
| * Aug 4, 2019: Faster zstd decompression. [#145](https://github.com/klauspost/compress/pull/145) [#143](https://github.com/klauspost/compress/pull/143) [#142](https://github.com/klauspost/compress/pull/142) | ||||
| * July 15, 2019 (v1.7.4): Fix double EOF block in rare cases on zstd encoder. | ||||
| * July 15, 2019 (v1.7.3): Minor speedup/compression increase in default zstd encoder. | ||||
| * July 14, 2019: zstd decoder: Fix decompression error on multiple uses with mixed content. | ||||
| * July 7, 2019 (v1.7.2): Snappy update, zstd decoder potential race fix. | ||||
| * June 17, 2019: zstd decompression bugfix. | ||||
| * June 17, 2019: fix 32 bit builds. | ||||
| * June 17, 2019: Easier use in modules (less dependencies). | ||||
| * June 9, 2019: New stronger "default" [zstd](https://github.com/klauspost/compress/tree/master/zstd#zstd) compression mode. Matches zstd default compression ratio. | ||||
| * June 5, 2019: 20-40% throughput in [zstandard](https://github.com/klauspost/compress/tree/master/zstd#zstd) compression and better compression. | ||||
| * June 5, 2019: deflate/gzip compression: Reduce memory usage of lower compression levels. | ||||
| * June 2, 2019: Added [zstandard](https://github.com/klauspost/compress/tree/master/zstd#zstd) compression! | ||||
| * May 25, 2019: deflate/gzip: 10% faster bit writer, mostly visible in lower levels. | ||||
| * Apr 22, 2019: [zstd](https://github.com/klauspost/compress/tree/master/zstd#zstd) decompression added. | ||||
| * Aug 1, 2018: Added [huff0 README](https://github.com/klauspost/compress/tree/master/huff0#huff0-entropy-compression). | ||||
| * Jul 8, 2018: Added [Performance Update 2018](#performance-update-2018) below. | ||||
| * Jun 23, 2018: Merged [Go 1.11 inflate optimizations](https://go-review.googlesource.com/c/go/+/102235). Go 1.9 is now required. Backwards compatible version tagged with [v1.3.0](https://github.com/klauspost/compress/releases/tag/v1.3.0). | ||||
| * Apr 2, 2018: Added [huff0](https://godoc.org/github.com/klauspost/compress/huff0) en/decoder. Experimental for now, API may change. | ||||
| * Mar 4, 2018: Added [FSE Entropy](https://godoc.org/github.com/klauspost/compress/fse) en/decoder. Experimental for now, API may change. | ||||
| * Nov 3, 2017: Add compression [Estimate](https://godoc.org/github.com/klauspost/compress#Estimate) function. | ||||
| * May 28, 2017: Reduce allocations when resetting decoder. | ||||
| * Apr 02, 2017: Change back to official crc32, since changes were merged in Go 1.7. | ||||
| * Jan 14, 2017: Reduce stack pressure due to array copies. See [Issue #18625](https://github.com/golang/go/issues/18625). | ||||
| * Oct 25, 2016: Level 2-4 have been rewritten and now offers significantly better performance than before. | ||||
| * Oct 20, 2016: Port zlib changes from Go 1.7 to fix zlib writer issue. Please update. | ||||
| * Oct 16, 2016: Go 1.7 changes merged. Apples to apples this package is a few percent faster, but has a significantly better balance between speed and compression per level.  | ||||
| * Mar 24, 2016: Always attempt Huffman encoding on level 4-7. This improves base 64 encoded data compression. | ||||
| * Mar 24, 2016: Small speedup for level 1-3. | ||||
| * Feb 19, 2016: Faster bit writer, level -2 is 15% faster, level 1 is 4% faster. | ||||
| * Feb 19, 2016: Handle small payloads faster in level 1-3. | ||||
| * Feb 19, 2016: Added faster level 2 + 3 compression modes. | ||||
| * Feb 19, 2016: [Rebalanced compression levels](https://blog.klauspost.com/rebalancing-deflate-compression-levels/), so there is a more even progresssion in terms of compression. New default level is 5. | ||||
| * Feb 14, 2016: Snappy: Merge upstream changes.  | ||||
| * Feb 14, 2016: Snappy: Fix aggressive skipping. | ||||
| * Feb 14, 2016: Snappy: Update benchmark. | ||||
| * Feb 13, 2016: Deflate: Fixed assembler problem that could lead to sub-optimal compression. | ||||
| * Feb 12, 2016: Snappy: Added AMD64 SSE 4.2 optimizations to matching, which makes easy to compress material run faster. Typical speedup is around 25%. | ||||
| * Feb 9, 2016: Added Snappy package fork. This version is 5-7% faster, much more on hard to compress content. | ||||
| * Jan 30, 2016: Optimize level 1 to 3 by not considering static dictionary or storing uncompressed. ~4-5% speedup. | ||||
| * Jan 16, 2016: Optimization on deflate level 1,2,3 compression. | ||||
| * Jan 8 2016: Merge [CL 18317](https://go-review.googlesource.com/#/c/18317): fix reading, writing of zip64 archives. | ||||
| * Dec 8 2015: Make level 1 and -2 deterministic even if write size differs. | ||||
| * Dec 8 2015: Split encoding functions, so hashing and matching can potentially be inlined. 1-3% faster on AMD64. 5% faster on other platforms. | ||||
| * Dec 8 2015: Fixed rare [one byte out-of bounds read](https://github.com/klauspost/compress/issues/20). Please update! | ||||
| * Nov 23 2015: Optimization on token writer. ~2-4% faster. Contributed by [@dsnet](https://github.com/dsnet). | ||||
| * Nov 20 2015: Small optimization to bit writer on 64 bit systems. | ||||
| * Nov 17 2015: Fixed out-of-bound errors if the underlying Writer returned an error. See [#15](https://github.com/klauspost/compress/issues/15). | ||||
| * Nov 12 2015: Added [io.WriterTo](https://golang.org/pkg/io/#WriterTo) support to gzip/inflate. | ||||
| * Nov 11 2015: Merged [CL 16669](https://go-review.googlesource.com/#/c/16669/4): archive/zip: enable overriding (de)compressors per file | ||||
| * Oct 15 2015: Added skipping on uncompressible data. Random data speed up >5x. | ||||
|  | ||||
| </details> | ||||
|  | ||||
| # deflate usage | ||||
|  | ||||
| The packages are drop-in replacements for standard libraries. Simply replace the import path to use them: | ||||
|  | ||||
| | old import         | new import                              | Documentation | ||||
| |--------------------|-----------------------------------------|--------------------| | ||||
| | `compress/gzip`    | `github.com/klauspost/compress/gzip`    | [gzip](https://pkg.go.dev/github.com/klauspost/compress/gzip?tab=doc) | ||||
| | `compress/zlib`    | `github.com/klauspost/compress/zlib`    | [zlib](https://pkg.go.dev/github.com/klauspost/compress/zlib?tab=doc) | ||||
| | `archive/zip`      | `github.com/klauspost/compress/zip`     | [zip](https://pkg.go.dev/github.com/klauspost/compress/zip?tab=doc) | ||||
| | `compress/flate`   | `github.com/klauspost/compress/flate`   | [flate](https://pkg.go.dev/github.com/klauspost/compress/flate?tab=doc) | ||||
|  | ||||
| * Optimized [deflate](https://godoc.org/github.com/klauspost/compress/flate) packages which can be used as a dropin replacement for [gzip](https://godoc.org/github.com/klauspost/compress/gzip), [zip](https://godoc.org/github.com/klauspost/compress/zip) and [zlib](https://godoc.org/github.com/klauspost/compress/zlib). | ||||
|  | ||||
| You may also be interested in [pgzip](https://github.com/klauspost/pgzip), which is a drop in replacement for gzip, which support multithreaded compression on big files and the optimized [crc32](https://github.com/klauspost/crc32) package used by these packages. | ||||
|  | ||||
| The packages contains the same as the standard library, so you can use the godoc for that: [gzip](http://golang.org/pkg/compress/gzip/), [zip](http://golang.org/pkg/archive/zip/),  [zlib](http://golang.org/pkg/compress/zlib/), [flate](http://golang.org/pkg/compress/flate/). | ||||
|  | ||||
| Currently there is only minor speedup on decompression (mostly CRC32 calculation). | ||||
|  | ||||
| Memory usage is typically 1MB for a Writer. stdlib is in the same range.  | ||||
| If you expect to have a lot of concurrently allocated Writers consider using  | ||||
| the stateless compress described below. | ||||
|  | ||||
| For compression performance, see: [this spreadsheet](https://docs.google.com/spreadsheets/d/1nuNE2nPfuINCZJRMt6wFWhKpToF95I47XjSsc-1rbPQ/edit?usp=sharing). | ||||
|  | ||||
| To disable all assembly add `-tags=noasm`. This works across all packages. | ||||
|  | ||||
| # Stateless compression | ||||
|  | ||||
| This package offers stateless compression as a special option for gzip/deflate.  | ||||
| It will do compression but without maintaining any state between Write calls. | ||||
|  | ||||
| This means there will be no memory kept between Write calls, but compression and speed will be suboptimal. | ||||
|  | ||||
| This is only relevant in cases where you expect to run many thousands of compressors concurrently,  | ||||
| but with very little activity. This is *not* intended for regular web servers serving individual requests.   | ||||
|  | ||||
| Because of this, the size of actual Write calls will affect output size. | ||||
|  | ||||
| In gzip, specify level `-3` / `gzip.StatelessCompression` to enable. | ||||
|  | ||||
| For direct deflate use, NewStatelessWriter and StatelessDeflate are available. See [documentation](https://godoc.org/github.com/klauspost/compress/flate#NewStatelessWriter) | ||||
|  | ||||
| A `bufio.Writer` can of course be used to control write sizes. For example, to use a 4KB buffer: | ||||
|  | ||||
| ```go | ||||
| 	// replace 'ioutil.Discard' with your output. | ||||
| 	gzw, err := gzip.NewWriterLevel(ioutil.Discard, gzip.StatelessCompression) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	defer gzw.Close() | ||||
|  | ||||
| 	w := bufio.NewWriterSize(gzw, 4096) | ||||
| 	defer w.Flush() | ||||
| 	 | ||||
| 	// Write to 'w'  | ||||
| ``` | ||||
|  | ||||
| This will only use up to 4KB in memory when the writer is idle.  | ||||
|  | ||||
| Compression is almost always worse than the fastest compression level  | ||||
| and each write will allocate (a little) memory.  | ||||
|  | ||||
| # Performance Update 2018 | ||||
|  | ||||
| It has been a while since we have been looking at the speed of this package compared to the standard library, so I thought I would re-do my tests and give some overall recommendations based on the current state. All benchmarks have been performed with Go 1.10 on my Desktop Intel(R) Core(TM) i7-2600 CPU @3.40GHz. Since I last ran the tests, I have gotten more RAM, which means tests with big files are no longer limited by my SSD. | ||||
|  | ||||
| The raw results are in my [updated spreadsheet](https://docs.google.com/spreadsheets/d/1nuNE2nPfuINCZJRMt6wFWhKpToF95I47XjSsc-1rbPQ/edit?usp=sharing). Due to cgo changes and upstream updates i could not get the cgo version of gzip to compile. Instead I included the [zstd](https://github.com/datadog/zstd) cgo implementation. If I get cgo gzip to work again, I might replace the results in the sheet. | ||||
|  | ||||
| The columns to take note of are: *MB/s* - the throughput. *Reduction* - the data size reduction in percent of the original. *Rel Speed* relative speed compared to the standard library at the same level. *Smaller* - how many percent smaller is the compressed output compared to stdlib. Negative means the output was bigger. *Loss* means the loss (or gain) in compression as a percentage difference of the input. | ||||
|  | ||||
| The `gzstd` (standard library gzip) and `gzkp` (this package gzip) only uses one CPU core. [`pgzip`](https://github.com/klauspost/pgzip), [`bgzf`](https://github.com/biogo/hts/tree/master/bgzf) uses all 4 cores. [`zstd`](https://github.com/DataDog/zstd) uses one core, and is a beast (but not Go, yet). | ||||
|  | ||||
|  | ||||
| ## Overall differences. | ||||
|  | ||||
| There appears to be a roughly 5-10% speed advantage over the standard library when comparing at similar compression levels. | ||||
|  | ||||
| The biggest difference you will see is the result of [re-balancing](https://blog.klauspost.com/rebalancing-deflate-compression-levels/) the compression levels. I wanted by library to give a smoother transition between the compression levels than the standard library. | ||||
|  | ||||
| This package attempts to provide a more smooth transition, where "1" is taking a lot of shortcuts, "5" is the reasonable trade-off and "9" is the "give me the best compression", and the values in between gives something reasonable in between. The standard library has big differences in levels 1-4, but levels 5-9 having no significant gains - often spending a lot more time than can be justified by the achieved compression. | ||||
|  | ||||
| There are links to all the test data in the [spreadsheet](https://docs.google.com/spreadsheets/d/1nuNE2nPfuINCZJRMt6wFWhKpToF95I47XjSsc-1rbPQ/edit?usp=sharing) in the top left field on each tab. | ||||
|  | ||||
| ## Web Content | ||||
|  | ||||
| This test set aims to emulate typical use in a web server. The test-set is 4GB data in 53k files, and is a mixture of (mostly) HTML, JS, CSS. | ||||
|  | ||||
| Since level 1 and 9 are close to being the same code, they are quite close. But looking at the levels in-between the differences are quite big. | ||||
|  | ||||
| Looking at level 6, this package is 88% faster, but will output about 6% more data. For a web server, this means you can serve 88% more data, but have to pay for 6% more bandwidth. You can draw your own conclusions on what would be the most expensive for your case. | ||||
|  | ||||
| ## Object files | ||||
|  | ||||
| This test is for typical data files stored on a server. In this case it is a collection of Go precompiled objects. They are very compressible. | ||||
|  | ||||
| The picture is similar to the web content, but with small differences since this is very compressible. Levels 2-3 offer good speed, but is sacrificing quite a bit of compression.  | ||||
|  | ||||
| The standard library seems suboptimal on level 3 and 4 - offering both worse compression and speed than level 6 & 7 of this package respectively. | ||||
|  | ||||
| ## Highly Compressible File | ||||
|  | ||||
| This is a JSON file with very high redundancy. The reduction starts at 95% on level 1, so in real life terms we are dealing with something like a highly redundant stream of data, etc. | ||||
|  | ||||
| It is definitely visible that we are dealing with specialized content here, so the results are very scattered. This package does not do very well at levels 1-4, but picks up significantly at level 5 and levels 7 and 8 offering great speed for the achieved compression. | ||||
|  | ||||
| So if you know you content is extremely compressible you might want to go slightly higher than the defaults. The standard library has a huge gap between levels 3 and 4 in terms of speed (2.75x slowdown), so it offers little "middle ground". | ||||
|  | ||||
| ## Medium-High Compressible | ||||
|  | ||||
| This is a pretty common test corpus: [enwik9](http://mattmahoney.net/dc/textdata.html). It contains the first 10^9 bytes of the English Wikipedia dump on Mar. 3, 2006. This is a very good test of typical text based compression and more data heavy streams. | ||||
|  | ||||
| We see a similar picture here as in "Web Content". On equal levels some compression is sacrificed for more speed. Level 5 seems to be the best trade-off between speed and size, beating stdlib level 3 in both. | ||||
|  | ||||
| ## Medium Compressible | ||||
|  | ||||
| I will combine two test sets, one [10GB file set](http://mattmahoney.net/dc/10gb.html) and a VM disk image (~8GB). Both contain different data types and represent a typical backup scenario. | ||||
|  | ||||
| The most notable thing is how quickly the standard library drops to very low compression speeds around level 5-6 without any big gains in compression. Since this type of data is fairly common, this does not seem like good behavior. | ||||
|  | ||||
|  | ||||
| ## Un-compressible Content | ||||
|  | ||||
| This is mainly a test of how good the algorithms are at detecting un-compressible input. The standard library only offers this feature with very conservative settings at level 1. Obviously there is no reason for the algorithms to try to compress input that cannot be compressed.  The only downside is that it might skip some compressible data on false detections. | ||||
|  | ||||
|  | ||||
| ## Huffman only compression | ||||
|  | ||||
| This compression library adds a special compression level, named `HuffmanOnly`, which allows near linear time compression. This is done by completely disabling matching of previous data, and only reduce the number of bits to represent each character.  | ||||
|  | ||||
| This means that often used characters, like 'e' and ' ' (space) in text use the fewest bits to represent, and rare characters like '¤' takes more bits to represent. For more information see [wikipedia](https://en.wikipedia.org/wiki/Huffman_coding) or this nice [video](https://youtu.be/ZdooBTdW5bM). | ||||
|  | ||||
| Since this type of compression has much less variance, the compression speed is mostly unaffected by the input data, and is usually more than *180MB/s* for a single core. | ||||
|  | ||||
| The downside is that the compression ratio is usually considerably worse than even the fastest conventional compression. The compression ratio can never be better than 8:1 (12.5%).  | ||||
|  | ||||
| The linear time compression can be used as a "better than nothing" mode, where you cannot risk the encoder to slow down on some content. For comparison, the size of the "Twain" text is *233460 bytes* (+29% vs. level 1) and encode speed is 144MB/s (4.5x level 1). So in this case you trade a 30% size increase for a 4 times speedup. | ||||
|  | ||||
| For more information see my blog post on [Fast Linear Time Compression](http://blog.klauspost.com/constant-time-gzipzip-compression/). | ||||
|  | ||||
| This is implemented on Go 1.7 as "Huffman Only" mode, though not exposed for gzip. | ||||
|  | ||||
| # Other packages | ||||
|  | ||||
| Here are other packages of good quality and pure Go (no cgo wrappers or autoconverted code): | ||||
|  | ||||
| * [github.com/pierrec/lz4](https://github.com/pierrec/lz4) - strong multithreaded LZ4 compression. | ||||
| * [github.com/cosnicolaou/pbzip2](https://github.com/cosnicolaou/pbzip2) - multithreaded bzip2 decompression. | ||||
| * [github.com/dsnet/compress](https://github.com/dsnet/compress) - brotli decompression, bzip2 writer. | ||||
| * [github.com/ronanh/intcomp](https://github.com/ronanh/intcomp) - Integer compression. | ||||
| * [github.com/spenczar/fpc](https://github.com/spenczar/fpc) - Float compression. | ||||
| * [github.com/minio/zipindex](https://github.com/minio/zipindex) - External ZIP directory index. | ||||
| * [github.com/ybirader/pzip](https://github.com/ybirader/pzip) - Fast concurrent zip archiver and extractor. | ||||
|  | ||||
| # license | ||||
|  | ||||
| This code is licensed under the same conditions as the original Go code. See LICENSE file. | ||||
							
								
								
									
										25
									
								
								vendor/github.com/klauspost/compress/SECURITY.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										25
									
								
								vendor/github.com/klauspost/compress/SECURITY.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,25 +0,0 @@ | ||||
| # Security Policy | ||||
|  | ||||
| ## Supported Versions | ||||
|  | ||||
| Security updates are applied only to the latest release. | ||||
|  | ||||
| ## Vulnerability Definition | ||||
|  | ||||
| A security vulnerability is a bug that with certain input triggers a crash or an infinite loop. Most calls will have varying execution time and only in rare cases will slow operation be considered a security vulnerability. | ||||
|  | ||||
| Corrupted output generally is not considered a security vulnerability, unless independent operations are able to affect each other. Note that not all functionality is re-entrant and safe to use concurrently. | ||||
|  | ||||
| Out-of-memory crashes only applies if the en/decoder uses an abnormal amount of memory, with appropriate options applied, to limit maximum window size, concurrency, etc. However, if you are in doubt you are welcome to file a security issue. | ||||
|  | ||||
| It is assumed that all callers are trusted, meaning internal data exposed through reflection or inspection of returned data structures is not considered a vulnerability. | ||||
|  | ||||
| Vulnerabilities resulting from compiler/assembler errors should be reported upstream. Depending on the severity this package may or may not implement a workaround. | ||||
|  | ||||
| ## Reporting a Vulnerability | ||||
|  | ||||
| If you have discovered a security vulnerability in this project, please report it privately. **Do not disclose it as a public issue.** This gives us time to work with you to fix the issue before public exposure, reducing the chance that the exploit will be used before a patch is released. | ||||
|  | ||||
| Please disclose it at [security advisory](https://github.com/klauspost/compress/security/advisories/new). If possible please provide a minimal reproducer. If the issue only applies to a single platform, it would be helpful to provide access to that. | ||||
|  | ||||
| This project is maintained by a team of volunteers on a reasonable-effort basis. As such, vulnerabilities will be disclosed in a best effort base. | ||||
							
								
								
									
										85
									
								
								vendor/github.com/klauspost/compress/compressible.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										85
									
								
								vendor/github.com/klauspost/compress/compressible.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,85 +0,0 @@ | ||||
| package compress | ||||
|  | ||||
| import "math" | ||||
|  | ||||
| // Estimate returns a normalized compressibility estimate of block b. | ||||
| // Values close to zero are likely uncompressible. | ||||
| // Values above 0.1 are likely to be compressible. | ||||
| // Values above 0.5 are very compressible. | ||||
| // Very small lengths will return 0. | ||||
| func Estimate(b []byte) float64 { | ||||
| 	if len(b) < 16 { | ||||
| 		return 0 | ||||
| 	} | ||||
|  | ||||
| 	// Correctly predicted order 1 | ||||
| 	hits := 0 | ||||
| 	lastMatch := false | ||||
| 	var o1 [256]byte | ||||
| 	var hist [256]int | ||||
| 	c1 := byte(0) | ||||
| 	for _, c := range b { | ||||
| 		if c == o1[c1] { | ||||
| 			// We only count a hit if there was two correct predictions in a row. | ||||
| 			if lastMatch { | ||||
| 				hits++ | ||||
| 			} | ||||
| 			lastMatch = true | ||||
| 		} else { | ||||
| 			lastMatch = false | ||||
| 		} | ||||
| 		o1[c1] = c | ||||
| 		c1 = c | ||||
| 		hist[c]++ | ||||
| 	} | ||||
|  | ||||
| 	// Use x^0.6 to give better spread | ||||
| 	prediction := math.Pow(float64(hits)/float64(len(b)), 0.6) | ||||
|  | ||||
| 	// Calculate histogram distribution | ||||
| 	variance := float64(0) | ||||
| 	avg := float64(len(b)) / 256 | ||||
|  | ||||
| 	for _, v := range hist { | ||||
| 		Δ := float64(v) - avg | ||||
| 		variance += Δ * Δ | ||||
| 	} | ||||
|  | ||||
| 	stddev := math.Sqrt(float64(variance)) / float64(len(b)) | ||||
| 	exp := math.Sqrt(1 / float64(len(b))) | ||||
|  | ||||
| 	// Subtract expected stddev | ||||
| 	stddev -= exp | ||||
| 	if stddev < 0 { | ||||
| 		stddev = 0 | ||||
| 	} | ||||
| 	stddev *= 1 + exp | ||||
|  | ||||
| 	// Use x^0.4 to give better spread | ||||
| 	entropy := math.Pow(stddev, 0.4) | ||||
|  | ||||
| 	// 50/50 weight between prediction and histogram distribution | ||||
| 	return math.Pow((prediction+entropy)/2, 0.9) | ||||
| } | ||||
|  | ||||
| // ShannonEntropyBits returns the number of bits minimum required to represent | ||||
| // an entropy encoding of the input bytes. | ||||
| // https://en.wiktionary.org/wiki/Shannon_entropy | ||||
| func ShannonEntropyBits(b []byte) int { | ||||
| 	if len(b) == 0 { | ||||
| 		return 0 | ||||
| 	} | ||||
| 	var hist [256]int | ||||
| 	for _, c := range b { | ||||
| 		hist[c]++ | ||||
| 	} | ||||
| 	shannon := float64(0) | ||||
| 	invTotal := 1.0 / float64(len(b)) | ||||
| 	for _, v := range hist[:] { | ||||
| 		if v > 0 { | ||||
| 			n := float64(v) | ||||
| 			shannon += math.Ceil(-math.Log2(n*invTotal) * n) | ||||
| 		} | ||||
| 	} | ||||
| 	return int(math.Ceil(shannon)) | ||||
| } | ||||
							
								
								
									
										79
									
								
								vendor/github.com/klauspost/compress/fse/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										79
									
								
								vendor/github.com/klauspost/compress/fse/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,79 +0,0 @@ | ||||
| # Finite State Entropy | ||||
|  | ||||
| This package provides Finite State Entropy encoding and decoding. | ||||
|              | ||||
| Finite State Entropy (also referenced as [tANS](https://en.wikipedia.org/wiki/Asymmetric_numeral_systems#tANS))  | ||||
| encoding provides a fast near-optimal symbol encoding/decoding | ||||
| for byte blocks as implemented in [zstandard](https://github.com/facebook/zstd). | ||||
|  | ||||
| This can be used for compressing input with a lot of similar input values to the smallest number of bytes. | ||||
| This does not perform any multi-byte [dictionary coding](https://en.wikipedia.org/wiki/Dictionary_coder) as LZ coders, | ||||
| but it can be used as a secondary step to compressors (like Snappy) that does not do entropy encoding.  | ||||
|  | ||||
| * [Godoc documentation](https://godoc.org/github.com/klauspost/compress/fse) | ||||
|  | ||||
| ## News | ||||
|  | ||||
|  * Feb 2018: First implementation released. Consider this beta software for now. | ||||
|  | ||||
| # Usage | ||||
|  | ||||
| This package provides a low level interface that allows to compress single independent blocks.  | ||||
|  | ||||
| Each block is separate, and there is no built in integrity checks.  | ||||
| This means that the caller should keep track of block sizes and also do checksums if needed.   | ||||
|  | ||||
| Compressing a block is done via the [`Compress`](https://godoc.org/github.com/klauspost/compress/fse#Compress) function. | ||||
| You must provide input and will receive the output and maybe an error. | ||||
|  | ||||
| These error values can be returned: | ||||
|  | ||||
| | Error               | Description                                                                 | | ||||
| |---------------------|-----------------------------------------------------------------------------| | ||||
| | `<nil>`             | Everything ok, output is returned                                           | | ||||
| | `ErrIncompressible` | Returned when input is judged to be too hard to compress                    | | ||||
| | `ErrUseRLE`         | Returned from the compressor when the input is a single byte value repeated | | ||||
| | `(error)`           | An internal error occurred.                                                 | | ||||
|  | ||||
| As can be seen above there are errors that will be returned even under normal operation so it is important to handle these. | ||||
|  | ||||
| To reduce allocations you can provide a [`Scratch`](https://godoc.org/github.com/klauspost/compress/fse#Scratch) object  | ||||
| that can be re-used for successive calls. Both compression and decompression accepts a `Scratch` object, and the same  | ||||
| object can be used for both.    | ||||
|  | ||||
| Be aware, that when re-using a `Scratch` object that the *output* buffer is also re-used, so if you are still using this | ||||
| you must set the `Out` field in the scratch to nil. The same buffer is used for compression and decompression output. | ||||
|  | ||||
| Decompressing is done by calling the [`Decompress`](https://godoc.org/github.com/klauspost/compress/fse#Decompress) function. | ||||
| You must provide the output from the compression stage, at exactly the size you got back. If you receive an error back | ||||
| your input was likely corrupted.  | ||||
|  | ||||
| It is important to note that a successful decoding does *not* mean your output matches your original input.  | ||||
| There are no integrity checks, so relying on errors from the decompressor does not assure your data is valid. | ||||
|  | ||||
| For more detailed usage, see examples in the [godoc documentation](https://godoc.org/github.com/klauspost/compress/fse#pkg-examples). | ||||
|  | ||||
| # Performance | ||||
|  | ||||
| A lot of factors are affecting speed. Block sizes and compressibility of the material are primary factors.   | ||||
| All compression functions are currently only running on the calling goroutine so only one core will be used per block.   | ||||
|  | ||||
| The compressor is significantly faster if symbols are kept as small as possible. The highest byte value of the input | ||||
| is used to reduce some of the processing, so if all your input is above byte value 64 for instance, it may be  | ||||
| beneficial to transpose all your input values down by 64.    | ||||
|  | ||||
| With moderate block sizes around 64k speed are typically 200MB/s per core for compression and  | ||||
| around 300MB/s decompression speed.  | ||||
|  | ||||
| The same hardware typically does Huffman (deflate) encoding at 125MB/s and decompression at 100MB/s.  | ||||
|  | ||||
| # Plans | ||||
|  | ||||
| At one point, more internals will be exposed to facilitate more "expert" usage of the components.  | ||||
|  | ||||
| A streaming interface is also likely to be implemented. Likely compatible with [FSE stream format](https://github.com/Cyan4973/FiniteStateEntropy/blob/dev/programs/fileio.c#L261).   | ||||
|  | ||||
| # Contributing | ||||
|  | ||||
| Contributions are always welcome. Be aware that adding public functions will require good justification and breaking  | ||||
| changes will likely not be accepted. If in doubt open an issue before writing the PR.   | ||||
							
								
								
									
										122
									
								
								vendor/github.com/klauspost/compress/fse/bitreader.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										122
									
								
								vendor/github.com/klauspost/compress/fse/bitreader.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,122 +0,0 @@ | ||||
| // Copyright 2018 Klaus Post. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| // Based on work Copyright (c) 2013, Yann Collet, released under BSD License. | ||||
|  | ||||
| package fse | ||||
|  | ||||
| import ( | ||||
| 	"encoding/binary" | ||||
| 	"errors" | ||||
| 	"io" | ||||
| ) | ||||
|  | ||||
| // bitReader reads a bitstream in reverse. | ||||
| // The last set bit indicates the start of the stream and is used | ||||
| // for aligning the input. | ||||
| type bitReader struct { | ||||
| 	in       []byte | ||||
| 	off      uint // next byte to read is at in[off - 1] | ||||
| 	value    uint64 | ||||
| 	bitsRead uint8 | ||||
| } | ||||
|  | ||||
| // init initializes and resets the bit reader. | ||||
| func (b *bitReader) init(in []byte) error { | ||||
| 	if len(in) < 1 { | ||||
| 		return errors.New("corrupt stream: too short") | ||||
| 	} | ||||
| 	b.in = in | ||||
| 	b.off = uint(len(in)) | ||||
| 	// The highest bit of the last byte indicates where to start | ||||
| 	v := in[len(in)-1] | ||||
| 	if v == 0 { | ||||
| 		return errors.New("corrupt stream, did not find end of stream") | ||||
| 	} | ||||
| 	b.bitsRead = 64 | ||||
| 	b.value = 0 | ||||
| 	if len(in) >= 8 { | ||||
| 		b.fillFastStart() | ||||
| 	} else { | ||||
| 		b.fill() | ||||
| 		b.fill() | ||||
| 	} | ||||
| 	b.bitsRead += 8 - uint8(highBits(uint32(v))) | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // getBits will return n bits. n can be 0. | ||||
| func (b *bitReader) getBits(n uint8) uint16 { | ||||
| 	if n == 0 || b.bitsRead >= 64 { | ||||
| 		return 0 | ||||
| 	} | ||||
| 	return b.getBitsFast(n) | ||||
| } | ||||
|  | ||||
| // getBitsFast requires that at least one bit is requested every time. | ||||
| // There are no checks if the buffer is filled. | ||||
| func (b *bitReader) getBitsFast(n uint8) uint16 { | ||||
| 	const regMask = 64 - 1 | ||||
| 	v := uint16((b.value << (b.bitsRead & regMask)) >> ((regMask + 1 - n) & regMask)) | ||||
| 	b.bitsRead += n | ||||
| 	return v | ||||
| } | ||||
|  | ||||
| // fillFast() will make sure at least 32 bits are available. | ||||
| // There must be at least 4 bytes available. | ||||
| func (b *bitReader) fillFast() { | ||||
| 	if b.bitsRead < 32 { | ||||
| 		return | ||||
| 	} | ||||
| 	// 2 bounds checks. | ||||
| 	v := b.in[b.off-4:] | ||||
| 	v = v[:4] | ||||
| 	low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) | ||||
| 	b.value = (b.value << 32) | uint64(low) | ||||
| 	b.bitsRead -= 32 | ||||
| 	b.off -= 4 | ||||
| } | ||||
|  | ||||
| // fill() will make sure at least 32 bits are available. | ||||
| func (b *bitReader) fill() { | ||||
| 	if b.bitsRead < 32 { | ||||
| 		return | ||||
| 	} | ||||
| 	if b.off > 4 { | ||||
| 		v := b.in[b.off-4:] | ||||
| 		v = v[:4] | ||||
| 		low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) | ||||
| 		b.value = (b.value << 32) | uint64(low) | ||||
| 		b.bitsRead -= 32 | ||||
| 		b.off -= 4 | ||||
| 		return | ||||
| 	} | ||||
| 	for b.off > 0 { | ||||
| 		b.value = (b.value << 8) | uint64(b.in[b.off-1]) | ||||
| 		b.bitsRead -= 8 | ||||
| 		b.off-- | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // fillFastStart() assumes the bitreader is empty and there is at least 8 bytes to read. | ||||
| func (b *bitReader) fillFastStart() { | ||||
| 	// Do single re-slice to avoid bounds checks. | ||||
| 	b.value = binary.LittleEndian.Uint64(b.in[b.off-8:]) | ||||
| 	b.bitsRead = 0 | ||||
| 	b.off -= 8 | ||||
| } | ||||
|  | ||||
| // finished returns true if all bits have been read from the bit stream. | ||||
| func (b *bitReader) finished() bool { | ||||
| 	return b.bitsRead >= 64 && b.off == 0 | ||||
| } | ||||
|  | ||||
| // close the bitstream and returns an error if out-of-buffer reads occurred. | ||||
| func (b *bitReader) close() error { | ||||
| 	// Release reference. | ||||
| 	b.in = nil | ||||
| 	if b.bitsRead > 64 { | ||||
| 		return io.ErrUnexpectedEOF | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										167
									
								
								vendor/github.com/klauspost/compress/fse/bitwriter.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										167
									
								
								vendor/github.com/klauspost/compress/fse/bitwriter.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,167 +0,0 @@ | ||||
| // Copyright 2018 Klaus Post. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| // Based on work Copyright (c) 2013, Yann Collet, released under BSD License. | ||||
|  | ||||
| package fse | ||||
|  | ||||
| import "fmt" | ||||
|  | ||||
| // bitWriter will write bits. | ||||
| // First bit will be LSB of the first byte of output. | ||||
| type bitWriter struct { | ||||
| 	bitContainer uint64 | ||||
| 	nBits        uint8 | ||||
| 	out          []byte | ||||
| } | ||||
|  | ||||
| // bitMask16 is bitmasks. Has extra to avoid bounds check. | ||||
| var bitMask16 = [32]uint16{ | ||||
| 	0, 1, 3, 7, 0xF, 0x1F, | ||||
| 	0x3F, 0x7F, 0xFF, 0x1FF, 0x3FF, 0x7FF, | ||||
| 	0xFFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF, 0xFFFF, | ||||
| 	0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, | ||||
| 	0xFFFF, 0xFFFF} /* up to 16 bits */ | ||||
|  | ||||
| // addBits16NC will add up to 16 bits. | ||||
| // It will not check if there is space for them, | ||||
| // so the caller must ensure that it has flushed recently. | ||||
| func (b *bitWriter) addBits16NC(value uint16, bits uint8) { | ||||
| 	b.bitContainer |= uint64(value&bitMask16[bits&31]) << (b.nBits & 63) | ||||
| 	b.nBits += bits | ||||
| } | ||||
|  | ||||
| // addBits16Clean will add up to 16 bits. value may not contain more set bits than indicated. | ||||
| // It will not check if there is space for them, so the caller must ensure that it has flushed recently. | ||||
| func (b *bitWriter) addBits16Clean(value uint16, bits uint8) { | ||||
| 	b.bitContainer |= uint64(value) << (b.nBits & 63) | ||||
| 	b.nBits += bits | ||||
| } | ||||
|  | ||||
| // addBits16ZeroNC will add up to 16 bits. | ||||
| // It will not check if there is space for them, | ||||
| // so the caller must ensure that it has flushed recently. | ||||
| // This is fastest if bits can be zero. | ||||
| func (b *bitWriter) addBits16ZeroNC(value uint16, bits uint8) { | ||||
| 	if bits == 0 { | ||||
| 		return | ||||
| 	} | ||||
| 	value <<= (16 - bits) & 15 | ||||
| 	value >>= (16 - bits) & 15 | ||||
| 	b.bitContainer |= uint64(value) << (b.nBits & 63) | ||||
| 	b.nBits += bits | ||||
| } | ||||
|  | ||||
| // flush will flush all pending full bytes. | ||||
| // There will be at least 56 bits available for writing when this has been called. | ||||
| // Using flush32 is faster, but leaves less space for writing. | ||||
| func (b *bitWriter) flush() { | ||||
| 	v := b.nBits >> 3 | ||||
| 	switch v { | ||||
| 	case 0: | ||||
| 	case 1: | ||||
| 		b.out = append(b.out, | ||||
| 			byte(b.bitContainer), | ||||
| 		) | ||||
| 	case 2: | ||||
| 		b.out = append(b.out, | ||||
| 			byte(b.bitContainer), | ||||
| 			byte(b.bitContainer>>8), | ||||
| 		) | ||||
| 	case 3: | ||||
| 		b.out = append(b.out, | ||||
| 			byte(b.bitContainer), | ||||
| 			byte(b.bitContainer>>8), | ||||
| 			byte(b.bitContainer>>16), | ||||
| 		) | ||||
| 	case 4: | ||||
| 		b.out = append(b.out, | ||||
| 			byte(b.bitContainer), | ||||
| 			byte(b.bitContainer>>8), | ||||
| 			byte(b.bitContainer>>16), | ||||
| 			byte(b.bitContainer>>24), | ||||
| 		) | ||||
| 	case 5: | ||||
| 		b.out = append(b.out, | ||||
| 			byte(b.bitContainer), | ||||
| 			byte(b.bitContainer>>8), | ||||
| 			byte(b.bitContainer>>16), | ||||
| 			byte(b.bitContainer>>24), | ||||
| 			byte(b.bitContainer>>32), | ||||
| 		) | ||||
| 	case 6: | ||||
| 		b.out = append(b.out, | ||||
| 			byte(b.bitContainer), | ||||
| 			byte(b.bitContainer>>8), | ||||
| 			byte(b.bitContainer>>16), | ||||
| 			byte(b.bitContainer>>24), | ||||
| 			byte(b.bitContainer>>32), | ||||
| 			byte(b.bitContainer>>40), | ||||
| 		) | ||||
| 	case 7: | ||||
| 		b.out = append(b.out, | ||||
| 			byte(b.bitContainer), | ||||
| 			byte(b.bitContainer>>8), | ||||
| 			byte(b.bitContainer>>16), | ||||
| 			byte(b.bitContainer>>24), | ||||
| 			byte(b.bitContainer>>32), | ||||
| 			byte(b.bitContainer>>40), | ||||
| 			byte(b.bitContainer>>48), | ||||
| 		) | ||||
| 	case 8: | ||||
| 		b.out = append(b.out, | ||||
| 			byte(b.bitContainer), | ||||
| 			byte(b.bitContainer>>8), | ||||
| 			byte(b.bitContainer>>16), | ||||
| 			byte(b.bitContainer>>24), | ||||
| 			byte(b.bitContainer>>32), | ||||
| 			byte(b.bitContainer>>40), | ||||
| 			byte(b.bitContainer>>48), | ||||
| 			byte(b.bitContainer>>56), | ||||
| 		) | ||||
| 	default: | ||||
| 		panic(fmt.Errorf("bits (%d) > 64", b.nBits)) | ||||
| 	} | ||||
| 	b.bitContainer >>= v << 3 | ||||
| 	b.nBits &= 7 | ||||
| } | ||||
|  | ||||
| // flush32 will flush out, so there are at least 32 bits available for writing. | ||||
| func (b *bitWriter) flush32() { | ||||
| 	if b.nBits < 32 { | ||||
| 		return | ||||
| 	} | ||||
| 	b.out = append(b.out, | ||||
| 		byte(b.bitContainer), | ||||
| 		byte(b.bitContainer>>8), | ||||
| 		byte(b.bitContainer>>16), | ||||
| 		byte(b.bitContainer>>24)) | ||||
| 	b.nBits -= 32 | ||||
| 	b.bitContainer >>= 32 | ||||
| } | ||||
|  | ||||
| // flushAlign will flush remaining full bytes and align to next byte boundary. | ||||
| func (b *bitWriter) flushAlign() { | ||||
| 	nbBytes := (b.nBits + 7) >> 3 | ||||
| 	for i := uint8(0); i < nbBytes; i++ { | ||||
| 		b.out = append(b.out, byte(b.bitContainer>>(i*8))) | ||||
| 	} | ||||
| 	b.nBits = 0 | ||||
| 	b.bitContainer = 0 | ||||
| } | ||||
|  | ||||
| // close will write the alignment bit and write the final byte(s) | ||||
| // to the output. | ||||
| func (b *bitWriter) close() { | ||||
| 	// End mark | ||||
| 	b.addBits16Clean(1, 1) | ||||
| 	// flush until next byte. | ||||
| 	b.flushAlign() | ||||
| } | ||||
|  | ||||
| // reset and continue writing by appending to out. | ||||
| func (b *bitWriter) reset(out []byte) { | ||||
| 	b.bitContainer = 0 | ||||
| 	b.nBits = 0 | ||||
| 	b.out = out | ||||
| } | ||||
							
								
								
									
										47
									
								
								vendor/github.com/klauspost/compress/fse/bytereader.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										47
									
								
								vendor/github.com/klauspost/compress/fse/bytereader.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,47 +0,0 @@ | ||||
| // Copyright 2018 Klaus Post. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| // Based on work Copyright (c) 2013, Yann Collet, released under BSD License. | ||||
|  | ||||
| package fse | ||||
|  | ||||
| // byteReader provides a byte reader that reads | ||||
| // little endian values from a byte stream. | ||||
| // The input stream is manually advanced. | ||||
| // The reader performs no bounds checks. | ||||
| type byteReader struct { | ||||
| 	b   []byte | ||||
| 	off int | ||||
| } | ||||
|  | ||||
| // init will initialize the reader and set the input. | ||||
| func (b *byteReader) init(in []byte) { | ||||
| 	b.b = in | ||||
| 	b.off = 0 | ||||
| } | ||||
|  | ||||
| // advance the stream b n bytes. | ||||
| func (b *byteReader) advance(n uint) { | ||||
| 	b.off += int(n) | ||||
| } | ||||
|  | ||||
| // Uint32 returns a little endian uint32 starting at current offset. | ||||
| func (b byteReader) Uint32() uint32 { | ||||
| 	b2 := b.b[b.off:] | ||||
| 	b2 = b2[:4] | ||||
| 	v3 := uint32(b2[3]) | ||||
| 	v2 := uint32(b2[2]) | ||||
| 	v1 := uint32(b2[1]) | ||||
| 	v0 := uint32(b2[0]) | ||||
| 	return v0 | (v1 << 8) | (v2 << 16) | (v3 << 24) | ||||
| } | ||||
|  | ||||
| // unread returns the unread portion of the input. | ||||
| func (b byteReader) unread() []byte { | ||||
| 	return b.b[b.off:] | ||||
| } | ||||
|  | ||||
| // remain will return the number of bytes remaining. | ||||
| func (b byteReader) remain() int { | ||||
| 	return len(b.b) - b.off | ||||
| } | ||||
							
								
								
									
										683
									
								
								vendor/github.com/klauspost/compress/fse/compress.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										683
									
								
								vendor/github.com/klauspost/compress/fse/compress.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,683 +0,0 @@ | ||||
| // Copyright 2018 Klaus Post. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| // Based on work Copyright (c) 2013, Yann Collet, released under BSD License. | ||||
|  | ||||
| package fse | ||||
|  | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| ) | ||||
|  | ||||
| // Compress the input bytes. Input must be < 2GB. | ||||
| // Provide a Scratch buffer to avoid memory allocations. | ||||
| // Note that the output is also kept in the scratch buffer. | ||||
| // If input is too hard to compress, ErrIncompressible is returned. | ||||
| // If input is a single byte value repeated ErrUseRLE is returned. | ||||
| func Compress(in []byte, s *Scratch) ([]byte, error) { | ||||
| 	if len(in) <= 1 { | ||||
| 		return nil, ErrIncompressible | ||||
| 	} | ||||
| 	if len(in) > (2<<30)-1 { | ||||
| 		return nil, errors.New("input too big, must be < 2GB") | ||||
| 	} | ||||
| 	s, err := s.prepare(in) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	// Create histogram, if none was provided. | ||||
| 	maxCount := s.maxCount | ||||
| 	if maxCount == 0 { | ||||
| 		maxCount = s.countSimple(in) | ||||
| 	} | ||||
| 	// Reset for next run. | ||||
| 	s.clearCount = true | ||||
| 	s.maxCount = 0 | ||||
| 	if maxCount == len(in) { | ||||
| 		// One symbol, use RLE | ||||
| 		return nil, ErrUseRLE | ||||
| 	} | ||||
| 	if maxCount == 1 || maxCount < (len(in)>>7) { | ||||
| 		// Each symbol present maximum once or too well distributed. | ||||
| 		return nil, ErrIncompressible | ||||
| 	} | ||||
| 	s.optimalTableLog() | ||||
| 	err = s.normalizeCount() | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	err = s.writeCount() | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	if false { | ||||
| 		err = s.validateNorm() | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	err = s.buildCTable() | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	err = s.compress(in) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	s.Out = s.bw.out | ||||
| 	// Check if we compressed. | ||||
| 	if len(s.Out) >= len(in) { | ||||
| 		return nil, ErrIncompressible | ||||
| 	} | ||||
| 	return s.Out, nil | ||||
| } | ||||
|  | ||||
| // cState contains the compression state of a stream. | ||||
| type cState struct { | ||||
| 	bw         *bitWriter | ||||
| 	stateTable []uint16 | ||||
| 	state      uint16 | ||||
| } | ||||
|  | ||||
| // init will initialize the compression state to the first symbol of the stream. | ||||
| func (c *cState) init(bw *bitWriter, ct *cTable, tableLog uint8, first symbolTransform) { | ||||
| 	c.bw = bw | ||||
| 	c.stateTable = ct.stateTable | ||||
|  | ||||
| 	nbBitsOut := (first.deltaNbBits + (1 << 15)) >> 16 | ||||
| 	im := int32((nbBitsOut << 16) - first.deltaNbBits) | ||||
| 	lu := (im >> nbBitsOut) + first.deltaFindState | ||||
| 	c.state = c.stateTable[lu] | ||||
| } | ||||
|  | ||||
| // encode the output symbol provided and write it to the bitstream. | ||||
| func (c *cState) encode(symbolTT symbolTransform) { | ||||
| 	nbBitsOut := (uint32(c.state) + symbolTT.deltaNbBits) >> 16 | ||||
| 	dstState := int32(c.state>>(nbBitsOut&15)) + symbolTT.deltaFindState | ||||
| 	c.bw.addBits16NC(c.state, uint8(nbBitsOut)) | ||||
| 	c.state = c.stateTable[dstState] | ||||
| } | ||||
|  | ||||
| // encode the output symbol provided and write it to the bitstream. | ||||
| func (c *cState) encodeZero(symbolTT symbolTransform) { | ||||
| 	nbBitsOut := (uint32(c.state) + symbolTT.deltaNbBits) >> 16 | ||||
| 	dstState := int32(c.state>>(nbBitsOut&15)) + symbolTT.deltaFindState | ||||
| 	c.bw.addBits16ZeroNC(c.state, uint8(nbBitsOut)) | ||||
| 	c.state = c.stateTable[dstState] | ||||
| } | ||||
|  | ||||
| // flush will write the tablelog to the output and flush the remaining full bytes. | ||||
| func (c *cState) flush(tableLog uint8) { | ||||
| 	c.bw.flush32() | ||||
| 	c.bw.addBits16NC(c.state, tableLog) | ||||
| 	c.bw.flush() | ||||
| } | ||||
|  | ||||
| // compress is the main compression loop that will encode the input from the last byte to the first. | ||||
| func (s *Scratch) compress(src []byte) error { | ||||
| 	if len(src) <= 2 { | ||||
| 		return errors.New("compress: src too small") | ||||
| 	} | ||||
| 	tt := s.ct.symbolTT[:256] | ||||
| 	s.bw.reset(s.Out) | ||||
|  | ||||
| 	// Our two states each encodes every second byte. | ||||
| 	// Last byte encoded (first byte decoded) will always be encoded by c1. | ||||
| 	var c1, c2 cState | ||||
|  | ||||
| 	// Encode so remaining size is divisible by 4. | ||||
| 	ip := len(src) | ||||
| 	if ip&1 == 1 { | ||||
| 		c1.init(&s.bw, &s.ct, s.actualTableLog, tt[src[ip-1]]) | ||||
| 		c2.init(&s.bw, &s.ct, s.actualTableLog, tt[src[ip-2]]) | ||||
| 		c1.encodeZero(tt[src[ip-3]]) | ||||
| 		ip -= 3 | ||||
| 	} else { | ||||
| 		c2.init(&s.bw, &s.ct, s.actualTableLog, tt[src[ip-1]]) | ||||
| 		c1.init(&s.bw, &s.ct, s.actualTableLog, tt[src[ip-2]]) | ||||
| 		ip -= 2 | ||||
| 	} | ||||
| 	if ip&2 != 0 { | ||||
| 		c2.encodeZero(tt[src[ip-1]]) | ||||
| 		c1.encodeZero(tt[src[ip-2]]) | ||||
| 		ip -= 2 | ||||
| 	} | ||||
| 	src = src[:ip] | ||||
|  | ||||
| 	// Main compression loop. | ||||
| 	switch { | ||||
| 	case !s.zeroBits && s.actualTableLog <= 8: | ||||
| 		// We can encode 4 symbols without requiring a flush. | ||||
| 		// We do not need to check if any output is 0 bits. | ||||
| 		for ; len(src) >= 4; src = src[:len(src)-4] { | ||||
| 			s.bw.flush32() | ||||
| 			v3, v2, v1, v0 := src[len(src)-4], src[len(src)-3], src[len(src)-2], src[len(src)-1] | ||||
| 			c2.encode(tt[v0]) | ||||
| 			c1.encode(tt[v1]) | ||||
| 			c2.encode(tt[v2]) | ||||
| 			c1.encode(tt[v3]) | ||||
| 		} | ||||
| 	case !s.zeroBits: | ||||
| 		// We do not need to check if any output is 0 bits. | ||||
| 		for ; len(src) >= 4; src = src[:len(src)-4] { | ||||
| 			s.bw.flush32() | ||||
| 			v3, v2, v1, v0 := src[len(src)-4], src[len(src)-3], src[len(src)-2], src[len(src)-1] | ||||
| 			c2.encode(tt[v0]) | ||||
| 			c1.encode(tt[v1]) | ||||
| 			s.bw.flush32() | ||||
| 			c2.encode(tt[v2]) | ||||
| 			c1.encode(tt[v3]) | ||||
| 		} | ||||
| 	case s.actualTableLog <= 8: | ||||
| 		// We can encode 4 symbols without requiring a flush | ||||
| 		for ; len(src) >= 4; src = src[:len(src)-4] { | ||||
| 			s.bw.flush32() | ||||
| 			v3, v2, v1, v0 := src[len(src)-4], src[len(src)-3], src[len(src)-2], src[len(src)-1] | ||||
| 			c2.encodeZero(tt[v0]) | ||||
| 			c1.encodeZero(tt[v1]) | ||||
| 			c2.encodeZero(tt[v2]) | ||||
| 			c1.encodeZero(tt[v3]) | ||||
| 		} | ||||
| 	default: | ||||
| 		for ; len(src) >= 4; src = src[:len(src)-4] { | ||||
| 			s.bw.flush32() | ||||
| 			v3, v2, v1, v0 := src[len(src)-4], src[len(src)-3], src[len(src)-2], src[len(src)-1] | ||||
| 			c2.encodeZero(tt[v0]) | ||||
| 			c1.encodeZero(tt[v1]) | ||||
| 			s.bw.flush32() | ||||
| 			c2.encodeZero(tt[v2]) | ||||
| 			c1.encodeZero(tt[v3]) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// Flush final state. | ||||
| 	// Used to initialize state when decoding. | ||||
| 	c2.flush(s.actualTableLog) | ||||
| 	c1.flush(s.actualTableLog) | ||||
|  | ||||
| 	s.bw.close() | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // writeCount will write the normalized histogram count to header. | ||||
| // This is read back by readNCount. | ||||
| func (s *Scratch) writeCount() error { | ||||
| 	var ( | ||||
| 		tableLog  = s.actualTableLog | ||||
| 		tableSize = 1 << tableLog | ||||
| 		previous0 bool | ||||
| 		charnum   uint16 | ||||
|  | ||||
| 		maxHeaderSize = ((int(s.symbolLen)*int(tableLog) + 4 + 2) >> 3) + 3 | ||||
|  | ||||
| 		// Write Table Size | ||||
| 		bitStream = uint32(tableLog - minTablelog) | ||||
| 		bitCount  = uint(4) | ||||
| 		remaining = int16(tableSize + 1) /* +1 for extra accuracy */ | ||||
| 		threshold = int16(tableSize) | ||||
| 		nbBits    = uint(tableLog + 1) | ||||
| 	) | ||||
| 	if cap(s.Out) < maxHeaderSize { | ||||
| 		s.Out = make([]byte, 0, s.br.remain()+maxHeaderSize) | ||||
| 	} | ||||
| 	outP := uint(0) | ||||
| 	out := s.Out[:maxHeaderSize] | ||||
|  | ||||
| 	// stops at 1 | ||||
| 	for remaining > 1 { | ||||
| 		if previous0 { | ||||
| 			start := charnum | ||||
| 			for s.norm[charnum] == 0 { | ||||
| 				charnum++ | ||||
| 			} | ||||
| 			for charnum >= start+24 { | ||||
| 				start += 24 | ||||
| 				bitStream += uint32(0xFFFF) << bitCount | ||||
| 				out[outP] = byte(bitStream) | ||||
| 				out[outP+1] = byte(bitStream >> 8) | ||||
| 				outP += 2 | ||||
| 				bitStream >>= 16 | ||||
| 			} | ||||
| 			for charnum >= start+3 { | ||||
| 				start += 3 | ||||
| 				bitStream += 3 << bitCount | ||||
| 				bitCount += 2 | ||||
| 			} | ||||
| 			bitStream += uint32(charnum-start) << bitCount | ||||
| 			bitCount += 2 | ||||
| 			if bitCount > 16 { | ||||
| 				out[outP] = byte(bitStream) | ||||
| 				out[outP+1] = byte(bitStream >> 8) | ||||
| 				outP += 2 | ||||
| 				bitStream >>= 16 | ||||
| 				bitCount -= 16 | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		count := s.norm[charnum] | ||||
| 		charnum++ | ||||
| 		max := (2*threshold - 1) - remaining | ||||
| 		if count < 0 { | ||||
| 			remaining += count | ||||
| 		} else { | ||||
| 			remaining -= count | ||||
| 		} | ||||
| 		count++ // +1 for extra accuracy | ||||
| 		if count >= threshold { | ||||
| 			count += max // [0..max[ [max..threshold[ (...) [threshold+max 2*threshold[ | ||||
| 		} | ||||
| 		bitStream += uint32(count) << bitCount | ||||
| 		bitCount += nbBits | ||||
| 		if count < max { | ||||
| 			bitCount-- | ||||
| 		} | ||||
|  | ||||
| 		previous0 = count == 1 | ||||
| 		if remaining < 1 { | ||||
| 			return errors.New("internal error: remaining<1") | ||||
| 		} | ||||
| 		for remaining < threshold { | ||||
| 			nbBits-- | ||||
| 			threshold >>= 1 | ||||
| 		} | ||||
|  | ||||
| 		if bitCount > 16 { | ||||
| 			out[outP] = byte(bitStream) | ||||
| 			out[outP+1] = byte(bitStream >> 8) | ||||
| 			outP += 2 | ||||
| 			bitStream >>= 16 | ||||
| 			bitCount -= 16 | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	out[outP] = byte(bitStream) | ||||
| 	out[outP+1] = byte(bitStream >> 8) | ||||
| 	outP += (bitCount + 7) / 8 | ||||
|  | ||||
| 	if charnum > s.symbolLen { | ||||
| 		return errors.New("internal error: charnum > s.symbolLen") | ||||
| 	} | ||||
| 	s.Out = out[:outP] | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // symbolTransform contains the state transform for a symbol. | ||||
| type symbolTransform struct { | ||||
| 	deltaFindState int32 | ||||
| 	deltaNbBits    uint32 | ||||
| } | ||||
|  | ||||
| // String prints values as a human readable string. | ||||
| func (s symbolTransform) String() string { | ||||
| 	return fmt.Sprintf("dnbits: %08x, fs:%d", s.deltaNbBits, s.deltaFindState) | ||||
| } | ||||
|  | ||||
| // cTable contains tables used for compression. | ||||
| type cTable struct { | ||||
| 	tableSymbol []byte | ||||
| 	stateTable  []uint16 | ||||
| 	symbolTT    []symbolTransform | ||||
| } | ||||
|  | ||||
| // allocCtable will allocate tables needed for compression. | ||||
| // If existing tables a re big enough, they are simply re-used. | ||||
| func (s *Scratch) allocCtable() { | ||||
| 	tableSize := 1 << s.actualTableLog | ||||
| 	// get tableSymbol that is big enough. | ||||
| 	if cap(s.ct.tableSymbol) < tableSize { | ||||
| 		s.ct.tableSymbol = make([]byte, tableSize) | ||||
| 	} | ||||
| 	s.ct.tableSymbol = s.ct.tableSymbol[:tableSize] | ||||
|  | ||||
| 	ctSize := tableSize | ||||
| 	if cap(s.ct.stateTable) < ctSize { | ||||
| 		s.ct.stateTable = make([]uint16, ctSize) | ||||
| 	} | ||||
| 	s.ct.stateTable = s.ct.stateTable[:ctSize] | ||||
|  | ||||
| 	if cap(s.ct.symbolTT) < 256 { | ||||
| 		s.ct.symbolTT = make([]symbolTransform, 256) | ||||
| 	} | ||||
| 	s.ct.symbolTT = s.ct.symbolTT[:256] | ||||
| } | ||||
|  | ||||
| // buildCTable will populate the compression table so it is ready to be used. | ||||
| func (s *Scratch) buildCTable() error { | ||||
| 	tableSize := uint32(1 << s.actualTableLog) | ||||
| 	highThreshold := tableSize - 1 | ||||
| 	var cumul [maxSymbolValue + 2]int16 | ||||
|  | ||||
| 	s.allocCtable() | ||||
| 	tableSymbol := s.ct.tableSymbol[:tableSize] | ||||
| 	// symbol start positions | ||||
| 	{ | ||||
| 		cumul[0] = 0 | ||||
| 		for ui, v := range s.norm[:s.symbolLen-1] { | ||||
| 			u := byte(ui) // one less than reference | ||||
| 			if v == -1 { | ||||
| 				// Low proba symbol | ||||
| 				cumul[u+1] = cumul[u] + 1 | ||||
| 				tableSymbol[highThreshold] = u | ||||
| 				highThreshold-- | ||||
| 			} else { | ||||
| 				cumul[u+1] = cumul[u] + v | ||||
| 			} | ||||
| 		} | ||||
| 		// Encode last symbol separately to avoid overflowing u | ||||
| 		u := int(s.symbolLen - 1) | ||||
| 		v := s.norm[s.symbolLen-1] | ||||
| 		if v == -1 { | ||||
| 			// Low proba symbol | ||||
| 			cumul[u+1] = cumul[u] + 1 | ||||
| 			tableSymbol[highThreshold] = byte(u) | ||||
| 			highThreshold-- | ||||
| 		} else { | ||||
| 			cumul[u+1] = cumul[u] + v | ||||
| 		} | ||||
| 		if uint32(cumul[s.symbolLen]) != tableSize { | ||||
| 			return fmt.Errorf("internal error: expected cumul[s.symbolLen] (%d) == tableSize (%d)", cumul[s.symbolLen], tableSize) | ||||
| 		} | ||||
| 		cumul[s.symbolLen] = int16(tableSize) + 1 | ||||
| 	} | ||||
| 	// Spread symbols | ||||
| 	s.zeroBits = false | ||||
| 	{ | ||||
| 		step := tableStep(tableSize) | ||||
| 		tableMask := tableSize - 1 | ||||
| 		var position uint32 | ||||
| 		// if any symbol > largeLimit, we may have 0 bits output. | ||||
| 		largeLimit := int16(1 << (s.actualTableLog - 1)) | ||||
| 		for ui, v := range s.norm[:s.symbolLen] { | ||||
| 			symbol := byte(ui) | ||||
| 			if v > largeLimit { | ||||
| 				s.zeroBits = true | ||||
| 			} | ||||
| 			for nbOccurrences := int16(0); nbOccurrences < v; nbOccurrences++ { | ||||
| 				tableSymbol[position] = symbol | ||||
| 				position = (position + step) & tableMask | ||||
| 				for position > highThreshold { | ||||
| 					position = (position + step) & tableMask | ||||
| 				} /* Low proba area */ | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		// Check if we have gone through all positions | ||||
| 		if position != 0 { | ||||
| 			return errors.New("position!=0") | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// Build table | ||||
| 	table := s.ct.stateTable | ||||
| 	{ | ||||
| 		tsi := int(tableSize) | ||||
| 		for u, v := range tableSymbol { | ||||
| 			// TableU16 : sorted by symbol order; gives next state value | ||||
| 			table[cumul[v]] = uint16(tsi + u) | ||||
| 			cumul[v]++ | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// Build Symbol Transformation Table | ||||
| 	{ | ||||
| 		total := int16(0) | ||||
| 		symbolTT := s.ct.symbolTT[:s.symbolLen] | ||||
| 		tableLog := s.actualTableLog | ||||
| 		tl := (uint32(tableLog) << 16) - (1 << tableLog) | ||||
| 		for i, v := range s.norm[:s.symbolLen] { | ||||
| 			switch v { | ||||
| 			case 0: | ||||
| 			case -1, 1: | ||||
| 				symbolTT[i].deltaNbBits = tl | ||||
| 				symbolTT[i].deltaFindState = int32(total - 1) | ||||
| 				total++ | ||||
| 			default: | ||||
| 				maxBitsOut := uint32(tableLog) - highBits(uint32(v-1)) | ||||
| 				minStatePlus := uint32(v) << maxBitsOut | ||||
| 				symbolTT[i].deltaNbBits = (maxBitsOut << 16) - minStatePlus | ||||
| 				symbolTT[i].deltaFindState = int32(total - v) | ||||
| 				total += v | ||||
| 			} | ||||
| 		} | ||||
| 		if total != int16(tableSize) { | ||||
| 			return fmt.Errorf("total mismatch %d (got) != %d (want)", total, tableSize) | ||||
| 		} | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // countSimple will create a simple histogram in s.count. | ||||
| // Returns the biggest count. | ||||
| // Does not update s.clearCount. | ||||
| func (s *Scratch) countSimple(in []byte) (max int) { | ||||
| 	for _, v := range in { | ||||
| 		s.count[v]++ | ||||
| 	} | ||||
| 	m, symlen := uint32(0), s.symbolLen | ||||
| 	for i, v := range s.count[:] { | ||||
| 		if v == 0 { | ||||
| 			continue | ||||
| 		} | ||||
| 		if v > m { | ||||
| 			m = v | ||||
| 		} | ||||
| 		symlen = uint16(i) + 1 | ||||
| 	} | ||||
| 	s.symbolLen = symlen | ||||
| 	return int(m) | ||||
| } | ||||
|  | ||||
| // minTableLog provides the minimum logSize to safely represent a distribution. | ||||
| func (s *Scratch) minTableLog() uint8 { | ||||
| 	minBitsSrc := highBits(uint32(s.br.remain()-1)) + 1 | ||||
| 	minBitsSymbols := highBits(uint32(s.symbolLen-1)) + 2 | ||||
| 	if minBitsSrc < minBitsSymbols { | ||||
| 		return uint8(minBitsSrc) | ||||
| 	} | ||||
| 	return uint8(minBitsSymbols) | ||||
| } | ||||
|  | ||||
| // optimalTableLog calculates and sets the optimal tableLog in s.actualTableLog | ||||
| func (s *Scratch) optimalTableLog() { | ||||
| 	tableLog := s.TableLog | ||||
| 	minBits := s.minTableLog() | ||||
| 	maxBitsSrc := uint8(highBits(uint32(s.br.remain()-1))) - 2 | ||||
| 	if maxBitsSrc < tableLog { | ||||
| 		// Accuracy can be reduced | ||||
| 		tableLog = maxBitsSrc | ||||
| 	} | ||||
| 	if minBits > tableLog { | ||||
| 		tableLog = minBits | ||||
| 	} | ||||
| 	// Need a minimum to safely represent all symbol values | ||||
| 	if tableLog < minTablelog { | ||||
| 		tableLog = minTablelog | ||||
| 	} | ||||
| 	if tableLog > maxTableLog { | ||||
| 		tableLog = maxTableLog | ||||
| 	} | ||||
| 	s.actualTableLog = tableLog | ||||
| } | ||||
|  | ||||
| var rtbTable = [...]uint32{0, 473195, 504333, 520860, 550000, 700000, 750000, 830000} | ||||
|  | ||||
| // normalizeCount will normalize the count of the symbols so | ||||
| // the total is equal to the table size. | ||||
| func (s *Scratch) normalizeCount() error { | ||||
| 	var ( | ||||
| 		tableLog          = s.actualTableLog | ||||
| 		scale             = 62 - uint64(tableLog) | ||||
| 		step              = (1 << 62) / uint64(s.br.remain()) | ||||
| 		vStep             = uint64(1) << (scale - 20) | ||||
| 		stillToDistribute = int16(1 << tableLog) | ||||
| 		largest           int | ||||
| 		largestP          int16 | ||||
| 		lowThreshold      = (uint32)(s.br.remain() >> tableLog) | ||||
| 	) | ||||
|  | ||||
| 	for i, cnt := range s.count[:s.symbolLen] { | ||||
| 		// already handled | ||||
| 		// if (count[s] == s.length) return 0;   /* rle special case */ | ||||
|  | ||||
| 		if cnt == 0 { | ||||
| 			s.norm[i] = 0 | ||||
| 			continue | ||||
| 		} | ||||
| 		if cnt <= lowThreshold { | ||||
| 			s.norm[i] = -1 | ||||
| 			stillToDistribute-- | ||||
| 		} else { | ||||
| 			proba := (int16)((uint64(cnt) * step) >> scale) | ||||
| 			if proba < 8 { | ||||
| 				restToBeat := vStep * uint64(rtbTable[proba]) | ||||
| 				v := uint64(cnt)*step - (uint64(proba) << scale) | ||||
| 				if v > restToBeat { | ||||
| 					proba++ | ||||
| 				} | ||||
| 			} | ||||
| 			if proba > largestP { | ||||
| 				largestP = proba | ||||
| 				largest = i | ||||
| 			} | ||||
| 			s.norm[i] = proba | ||||
| 			stillToDistribute -= proba | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if -stillToDistribute >= (s.norm[largest] >> 1) { | ||||
| 		// corner case, need another normalization method | ||||
| 		return s.normalizeCount2() | ||||
| 	} | ||||
| 	s.norm[largest] += stillToDistribute | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // Secondary normalization method. | ||||
| // To be used when primary method fails. | ||||
| func (s *Scratch) normalizeCount2() error { | ||||
| 	const notYetAssigned = -2 | ||||
| 	var ( | ||||
| 		distributed  uint32 | ||||
| 		total        = uint32(s.br.remain()) | ||||
| 		tableLog     = s.actualTableLog | ||||
| 		lowThreshold = total >> tableLog | ||||
| 		lowOne       = (total * 3) >> (tableLog + 1) | ||||
| 	) | ||||
| 	for i, cnt := range s.count[:s.symbolLen] { | ||||
| 		if cnt == 0 { | ||||
| 			s.norm[i] = 0 | ||||
| 			continue | ||||
| 		} | ||||
| 		if cnt <= lowThreshold { | ||||
| 			s.norm[i] = -1 | ||||
| 			distributed++ | ||||
| 			total -= cnt | ||||
| 			continue | ||||
| 		} | ||||
| 		if cnt <= lowOne { | ||||
| 			s.norm[i] = 1 | ||||
| 			distributed++ | ||||
| 			total -= cnt | ||||
| 			continue | ||||
| 		} | ||||
| 		s.norm[i] = notYetAssigned | ||||
| 	} | ||||
| 	toDistribute := (1 << tableLog) - distributed | ||||
|  | ||||
| 	if (total / toDistribute) > lowOne { | ||||
| 		// risk of rounding to zero | ||||
| 		lowOne = (total * 3) / (toDistribute * 2) | ||||
| 		for i, cnt := range s.count[:s.symbolLen] { | ||||
| 			if (s.norm[i] == notYetAssigned) && (cnt <= lowOne) { | ||||
| 				s.norm[i] = 1 | ||||
| 				distributed++ | ||||
| 				total -= cnt | ||||
| 				continue | ||||
| 			} | ||||
| 		} | ||||
| 		toDistribute = (1 << tableLog) - distributed | ||||
| 	} | ||||
| 	if distributed == uint32(s.symbolLen)+1 { | ||||
| 		// all values are pretty poor; | ||||
| 		//   probably incompressible data (should have already been detected); | ||||
| 		//   find max, then give all remaining points to max | ||||
| 		var maxV int | ||||
| 		var maxC uint32 | ||||
| 		for i, cnt := range s.count[:s.symbolLen] { | ||||
| 			if cnt > maxC { | ||||
| 				maxV = i | ||||
| 				maxC = cnt | ||||
| 			} | ||||
| 		} | ||||
| 		s.norm[maxV] += int16(toDistribute) | ||||
| 		return nil | ||||
| 	} | ||||
|  | ||||
| 	if total == 0 { | ||||
| 		// all of the symbols were low enough for the lowOne or lowThreshold | ||||
| 		for i := uint32(0); toDistribute > 0; i = (i + 1) % (uint32(s.symbolLen)) { | ||||
| 			if s.norm[i] > 0 { | ||||
| 				toDistribute-- | ||||
| 				s.norm[i]++ | ||||
| 			} | ||||
| 		} | ||||
| 		return nil | ||||
| 	} | ||||
|  | ||||
| 	var ( | ||||
| 		vStepLog = 62 - uint64(tableLog) | ||||
| 		mid      = uint64((1 << (vStepLog - 1)) - 1) | ||||
| 		rStep    = (((1 << vStepLog) * uint64(toDistribute)) + mid) / uint64(total) // scale on remaining | ||||
| 		tmpTotal = mid | ||||
| 	) | ||||
| 	for i, cnt := range s.count[:s.symbolLen] { | ||||
| 		if s.norm[i] == notYetAssigned { | ||||
| 			var ( | ||||
| 				end    = tmpTotal + uint64(cnt)*rStep | ||||
| 				sStart = uint32(tmpTotal >> vStepLog) | ||||
| 				sEnd   = uint32(end >> vStepLog) | ||||
| 				weight = sEnd - sStart | ||||
| 			) | ||||
| 			if weight < 1 { | ||||
| 				return errors.New("weight < 1") | ||||
| 			} | ||||
| 			s.norm[i] = int16(weight) | ||||
| 			tmpTotal = end | ||||
| 		} | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // validateNorm validates the normalized histogram table. | ||||
| func (s *Scratch) validateNorm() (err error) { | ||||
| 	var total int | ||||
| 	for _, v := range s.norm[:s.symbolLen] { | ||||
| 		if v >= 0 { | ||||
| 			total += int(v) | ||||
| 		} else { | ||||
| 			total -= int(v) | ||||
| 		} | ||||
| 	} | ||||
| 	defer func() { | ||||
| 		if err == nil { | ||||
| 			return | ||||
| 		} | ||||
| 		fmt.Printf("selected TableLog: %d, Symbol length: %d\n", s.actualTableLog, s.symbolLen) | ||||
| 		for i, v := range s.norm[:s.symbolLen] { | ||||
| 			fmt.Printf("%3d: %5d -> %4d \n", i, s.count[i], v) | ||||
| 		} | ||||
| 	}() | ||||
| 	if total != (1 << s.actualTableLog) { | ||||
| 		return fmt.Errorf("warning: Total == %d != %d", total, 1<<s.actualTableLog) | ||||
| 	} | ||||
| 	for i, v := range s.count[s.symbolLen:] { | ||||
| 		if v != 0 { | ||||
| 			return fmt.Errorf("warning: Found symbol out of range, %d after cut", i) | ||||
| 		} | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										376
									
								
								vendor/github.com/klauspost/compress/fse/decompress.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										376
									
								
								vendor/github.com/klauspost/compress/fse/decompress.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,376 +0,0 @@ | ||||
| package fse | ||||
|  | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| 	tablelogAbsoluteMax = 15 | ||||
| ) | ||||
|  | ||||
| // Decompress a block of data. | ||||
| // You can provide a scratch buffer to avoid allocations. | ||||
| // If nil is provided a temporary one will be allocated. | ||||
| // It is possible, but by no way guaranteed that corrupt data will | ||||
| // return an error. | ||||
| // It is up to the caller to verify integrity of the returned data. | ||||
| // Use a predefined Scrach to set maximum acceptable output size. | ||||
| func Decompress(b []byte, s *Scratch) ([]byte, error) { | ||||
| 	s, err := s.prepare(b) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	s.Out = s.Out[:0] | ||||
| 	err = s.readNCount() | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	err = s.buildDtable() | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	err = s.decompress() | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	return s.Out, nil | ||||
| } | ||||
|  | ||||
| // readNCount will read the symbol distribution so decoding tables can be constructed. | ||||
| func (s *Scratch) readNCount() error { | ||||
| 	var ( | ||||
| 		charnum   uint16 | ||||
| 		previous0 bool | ||||
| 		b         = &s.br | ||||
| 	) | ||||
| 	iend := b.remain() | ||||
| 	if iend < 4 { | ||||
| 		return errors.New("input too small") | ||||
| 	} | ||||
| 	bitStream := b.Uint32() | ||||
| 	nbBits := uint((bitStream & 0xF) + minTablelog) // extract tableLog | ||||
| 	if nbBits > tablelogAbsoluteMax { | ||||
| 		return errors.New("tableLog too large") | ||||
| 	} | ||||
| 	bitStream >>= 4 | ||||
| 	bitCount := uint(4) | ||||
|  | ||||
| 	s.actualTableLog = uint8(nbBits) | ||||
| 	remaining := int32((1 << nbBits) + 1) | ||||
| 	threshold := int32(1 << nbBits) | ||||
| 	gotTotal := int32(0) | ||||
| 	nbBits++ | ||||
|  | ||||
| 	for remaining > 1 { | ||||
| 		if previous0 { | ||||
| 			n0 := charnum | ||||
| 			for (bitStream & 0xFFFF) == 0xFFFF { | ||||
| 				n0 += 24 | ||||
| 				if b.off < iend-5 { | ||||
| 					b.advance(2) | ||||
| 					bitStream = b.Uint32() >> bitCount | ||||
| 				} else { | ||||
| 					bitStream >>= 16 | ||||
| 					bitCount += 16 | ||||
| 				} | ||||
| 			} | ||||
| 			for (bitStream & 3) == 3 { | ||||
| 				n0 += 3 | ||||
| 				bitStream >>= 2 | ||||
| 				bitCount += 2 | ||||
| 			} | ||||
| 			n0 += uint16(bitStream & 3) | ||||
| 			bitCount += 2 | ||||
| 			if n0 > maxSymbolValue { | ||||
| 				return errors.New("maxSymbolValue too small") | ||||
| 			} | ||||
| 			for charnum < n0 { | ||||
| 				s.norm[charnum&0xff] = 0 | ||||
| 				charnum++ | ||||
| 			} | ||||
|  | ||||
| 			if b.off <= iend-7 || b.off+int(bitCount>>3) <= iend-4 { | ||||
| 				b.advance(bitCount >> 3) | ||||
| 				bitCount &= 7 | ||||
| 				bitStream = b.Uint32() >> bitCount | ||||
| 			} else { | ||||
| 				bitStream >>= 2 | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		max := (2*(threshold) - 1) - (remaining) | ||||
| 		var count int32 | ||||
|  | ||||
| 		if (int32(bitStream) & (threshold - 1)) < max { | ||||
| 			count = int32(bitStream) & (threshold - 1) | ||||
| 			bitCount += nbBits - 1 | ||||
| 		} else { | ||||
| 			count = int32(bitStream) & (2*threshold - 1) | ||||
| 			if count >= threshold { | ||||
| 				count -= max | ||||
| 			} | ||||
| 			bitCount += nbBits | ||||
| 		} | ||||
|  | ||||
| 		count-- // extra accuracy | ||||
| 		if count < 0 { | ||||
| 			// -1 means +1 | ||||
| 			remaining += count | ||||
| 			gotTotal -= count | ||||
| 		} else { | ||||
| 			remaining -= count | ||||
| 			gotTotal += count | ||||
| 		} | ||||
| 		s.norm[charnum&0xff] = int16(count) | ||||
| 		charnum++ | ||||
| 		previous0 = count == 0 | ||||
| 		for remaining < threshold { | ||||
| 			nbBits-- | ||||
| 			threshold >>= 1 | ||||
| 		} | ||||
| 		if b.off <= iend-7 || b.off+int(bitCount>>3) <= iend-4 { | ||||
| 			b.advance(bitCount >> 3) | ||||
| 			bitCount &= 7 | ||||
| 		} else { | ||||
| 			bitCount -= (uint)(8 * (len(b.b) - 4 - b.off)) | ||||
| 			b.off = len(b.b) - 4 | ||||
| 		} | ||||
| 		bitStream = b.Uint32() >> (bitCount & 31) | ||||
| 	} | ||||
| 	s.symbolLen = charnum | ||||
|  | ||||
| 	if s.symbolLen <= 1 { | ||||
| 		return fmt.Errorf("symbolLen (%d) too small", s.symbolLen) | ||||
| 	} | ||||
| 	if s.symbolLen > maxSymbolValue+1 { | ||||
| 		return fmt.Errorf("symbolLen (%d) too big", s.symbolLen) | ||||
| 	} | ||||
| 	if remaining != 1 { | ||||
| 		return fmt.Errorf("corruption detected (remaining %d != 1)", remaining) | ||||
| 	} | ||||
| 	if bitCount > 32 { | ||||
| 		return fmt.Errorf("corruption detected (bitCount %d > 32)", bitCount) | ||||
| 	} | ||||
| 	if gotTotal != 1<<s.actualTableLog { | ||||
| 		return fmt.Errorf("corruption detected (total %d != %d)", gotTotal, 1<<s.actualTableLog) | ||||
| 	} | ||||
| 	b.advance((bitCount + 7) >> 3) | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // decSymbol contains information about a state entry, | ||||
| // Including the state offset base, the output symbol and | ||||
| // the number of bits to read for the low part of the destination state. | ||||
| type decSymbol struct { | ||||
| 	newState uint16 | ||||
| 	symbol   uint8 | ||||
| 	nbBits   uint8 | ||||
| } | ||||
|  | ||||
| // allocDtable will allocate decoding tables if they are not big enough. | ||||
| func (s *Scratch) allocDtable() { | ||||
| 	tableSize := 1 << s.actualTableLog | ||||
| 	if cap(s.decTable) < tableSize { | ||||
| 		s.decTable = make([]decSymbol, tableSize) | ||||
| 	} | ||||
| 	s.decTable = s.decTable[:tableSize] | ||||
|  | ||||
| 	if cap(s.ct.tableSymbol) < 256 { | ||||
| 		s.ct.tableSymbol = make([]byte, 256) | ||||
| 	} | ||||
| 	s.ct.tableSymbol = s.ct.tableSymbol[:256] | ||||
|  | ||||
| 	if cap(s.ct.stateTable) < 256 { | ||||
| 		s.ct.stateTable = make([]uint16, 256) | ||||
| 	} | ||||
| 	s.ct.stateTable = s.ct.stateTable[:256] | ||||
| } | ||||
|  | ||||
| // buildDtable will build the decoding table. | ||||
| func (s *Scratch) buildDtable() error { | ||||
| 	tableSize := uint32(1 << s.actualTableLog) | ||||
| 	highThreshold := tableSize - 1 | ||||
| 	s.allocDtable() | ||||
| 	symbolNext := s.ct.stateTable[:256] | ||||
|  | ||||
| 	// Init, lay down lowprob symbols | ||||
| 	s.zeroBits = false | ||||
| 	{ | ||||
| 		largeLimit := int16(1 << (s.actualTableLog - 1)) | ||||
| 		for i, v := range s.norm[:s.symbolLen] { | ||||
| 			if v == -1 { | ||||
| 				s.decTable[highThreshold].symbol = uint8(i) | ||||
| 				highThreshold-- | ||||
| 				symbolNext[i] = 1 | ||||
| 			} else { | ||||
| 				if v >= largeLimit { | ||||
| 					s.zeroBits = true | ||||
| 				} | ||||
| 				symbolNext[i] = uint16(v) | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	// Spread symbols | ||||
| 	{ | ||||
| 		tableMask := tableSize - 1 | ||||
| 		step := tableStep(tableSize) | ||||
| 		position := uint32(0) | ||||
| 		for ss, v := range s.norm[:s.symbolLen] { | ||||
| 			for i := 0; i < int(v); i++ { | ||||
| 				s.decTable[position].symbol = uint8(ss) | ||||
| 				position = (position + step) & tableMask | ||||
| 				for position > highThreshold { | ||||
| 					// lowprob area | ||||
| 					position = (position + step) & tableMask | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		if position != 0 { | ||||
| 			// position must reach all cells once, otherwise normalizedCounter is incorrect | ||||
| 			return errors.New("corrupted input (position != 0)") | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// Build Decoding table | ||||
| 	{ | ||||
| 		tableSize := uint16(1 << s.actualTableLog) | ||||
| 		for u, v := range s.decTable { | ||||
| 			symbol := v.symbol | ||||
| 			nextState := symbolNext[symbol] | ||||
| 			symbolNext[symbol] = nextState + 1 | ||||
| 			nBits := s.actualTableLog - byte(highBits(uint32(nextState))) | ||||
| 			s.decTable[u].nbBits = nBits | ||||
| 			newState := (nextState << nBits) - tableSize | ||||
| 			if newState >= tableSize { | ||||
| 				return fmt.Errorf("newState (%d) outside table size (%d)", newState, tableSize) | ||||
| 			} | ||||
| 			if newState == uint16(u) && nBits == 0 { | ||||
| 				// Seems weird that this is possible with nbits > 0. | ||||
| 				return fmt.Errorf("newState (%d) == oldState (%d) and no bits", newState, u) | ||||
| 			} | ||||
| 			s.decTable[u].newState = newState | ||||
| 		} | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // decompress will decompress the bitstream. | ||||
| // If the buffer is over-read an error is returned. | ||||
| func (s *Scratch) decompress() error { | ||||
| 	br := &s.bits | ||||
| 	if err := br.init(s.br.unread()); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	var s1, s2 decoder | ||||
| 	// Initialize and decode first state and symbol. | ||||
| 	s1.init(br, s.decTable, s.actualTableLog) | ||||
| 	s2.init(br, s.decTable, s.actualTableLog) | ||||
|  | ||||
| 	// Use temp table to avoid bound checks/append penalty. | ||||
| 	var tmp = s.ct.tableSymbol[:256] | ||||
| 	var off uint8 | ||||
|  | ||||
| 	// Main part | ||||
| 	if !s.zeroBits { | ||||
| 		for br.off >= 8 { | ||||
| 			br.fillFast() | ||||
| 			tmp[off+0] = s1.nextFast() | ||||
| 			tmp[off+1] = s2.nextFast() | ||||
| 			br.fillFast() | ||||
| 			tmp[off+2] = s1.nextFast() | ||||
| 			tmp[off+3] = s2.nextFast() | ||||
| 			off += 4 | ||||
| 			// When off is 0, we have overflowed and should write. | ||||
| 			if off == 0 { | ||||
| 				s.Out = append(s.Out, tmp...) | ||||
| 				if len(s.Out) >= s.DecompressLimit { | ||||
| 					return fmt.Errorf("output size (%d) > DecompressLimit (%d)", len(s.Out), s.DecompressLimit) | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 	} else { | ||||
| 		for br.off >= 8 { | ||||
| 			br.fillFast() | ||||
| 			tmp[off+0] = s1.next() | ||||
| 			tmp[off+1] = s2.next() | ||||
| 			br.fillFast() | ||||
| 			tmp[off+2] = s1.next() | ||||
| 			tmp[off+3] = s2.next() | ||||
| 			off += 4 | ||||
| 			if off == 0 { | ||||
| 				s.Out = append(s.Out, tmp...) | ||||
| 				// When off is 0, we have overflowed and should write. | ||||
| 				if len(s.Out) >= s.DecompressLimit { | ||||
| 					return fmt.Errorf("output size (%d) > DecompressLimit (%d)", len(s.Out), s.DecompressLimit) | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	s.Out = append(s.Out, tmp[:off]...) | ||||
|  | ||||
| 	// Final bits, a bit more expensive check | ||||
| 	for { | ||||
| 		if s1.finished() { | ||||
| 			s.Out = append(s.Out, s1.final(), s2.final()) | ||||
| 			break | ||||
| 		} | ||||
| 		br.fill() | ||||
| 		s.Out = append(s.Out, s1.next()) | ||||
| 		if s2.finished() { | ||||
| 			s.Out = append(s.Out, s2.final(), s1.final()) | ||||
| 			break | ||||
| 		} | ||||
| 		s.Out = append(s.Out, s2.next()) | ||||
| 		if len(s.Out) >= s.DecompressLimit { | ||||
| 			return fmt.Errorf("output size (%d) > DecompressLimit (%d)", len(s.Out), s.DecompressLimit) | ||||
| 		} | ||||
| 	} | ||||
| 	return br.close() | ||||
| } | ||||
|  | ||||
| // decoder keeps track of the current state and updates it from the bitstream. | ||||
| type decoder struct { | ||||
| 	state uint16 | ||||
| 	br    *bitReader | ||||
| 	dt    []decSymbol | ||||
| } | ||||
|  | ||||
| // init will initialize the decoder and read the first state from the stream. | ||||
| func (d *decoder) init(in *bitReader, dt []decSymbol, tableLog uint8) { | ||||
| 	d.dt = dt | ||||
| 	d.br = in | ||||
| 	d.state = in.getBits(tableLog) | ||||
| } | ||||
|  | ||||
| // next returns the next symbol and sets the next state. | ||||
| // At least tablelog bits must be available in the bit reader. | ||||
| func (d *decoder) next() uint8 { | ||||
| 	n := &d.dt[d.state] | ||||
| 	lowBits := d.br.getBits(n.nbBits) | ||||
| 	d.state = n.newState + lowBits | ||||
| 	return n.symbol | ||||
| } | ||||
|  | ||||
| // finished returns true if all bits have been read from the bitstream | ||||
| // and the next state would require reading bits from the input. | ||||
| func (d *decoder) finished() bool { | ||||
| 	return d.br.finished() && d.dt[d.state].nbBits > 0 | ||||
| } | ||||
|  | ||||
| // final returns the current state symbol without decoding the next. | ||||
| func (d *decoder) final() uint8 { | ||||
| 	return d.dt[d.state].symbol | ||||
| } | ||||
|  | ||||
| // nextFast returns the next symbol and sets the next state. | ||||
| // This can only be used if no symbols are 0 bits. | ||||
| // At least tablelog bits must be available in the bit reader. | ||||
| func (d *decoder) nextFast() uint8 { | ||||
| 	n := d.dt[d.state] | ||||
| 	lowBits := d.br.getBitsFast(n.nbBits) | ||||
| 	d.state = n.newState + lowBits | ||||
| 	return n.symbol | ||||
| } | ||||
							
								
								
									
										144
									
								
								vendor/github.com/klauspost/compress/fse/fse.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										144
									
								
								vendor/github.com/klauspost/compress/fse/fse.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,144 +0,0 @@ | ||||
| // Copyright 2018 Klaus Post. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| // Based on work Copyright (c) 2013, Yann Collet, released under BSD License. | ||||
|  | ||||
| // Package fse provides Finite State Entropy encoding and decoding. | ||||
| // | ||||
| // Finite State Entropy encoding provides a fast near-optimal symbol encoding/decoding | ||||
| // for byte blocks as implemented in zstd. | ||||
| // | ||||
| // See https://github.com/klauspost/compress/tree/master/fse for more information. | ||||
| package fse | ||||
|  | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"math/bits" | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| 	/*!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 | ||||
| 	 *  Recommended max value is 14, for 16KB, which nicely fits into Intel x86 L1 cache */ | ||||
| 	maxMemoryUsage     = 14 | ||||
| 	defaultMemoryUsage = 13 | ||||
|  | ||||
| 	maxTableLog     = maxMemoryUsage - 2 | ||||
| 	maxTablesize    = 1 << maxTableLog | ||||
| 	defaultTablelog = defaultMemoryUsage - 2 | ||||
| 	minTablelog     = 5 | ||||
| 	maxSymbolValue  = 255 | ||||
| ) | ||||
|  | ||||
| var ( | ||||
| 	// ErrIncompressible is returned when input is judged to be too hard to compress. | ||||
| 	ErrIncompressible = errors.New("input is not compressible") | ||||
|  | ||||
| 	// ErrUseRLE is returned from the compressor when the input is a single byte value repeated. | ||||
| 	ErrUseRLE = errors.New("input is single value repeated") | ||||
| ) | ||||
|  | ||||
| // Scratch provides temporary storage for compression and decompression. | ||||
| type Scratch struct { | ||||
| 	// Private | ||||
| 	count    [maxSymbolValue + 1]uint32 | ||||
| 	norm     [maxSymbolValue + 1]int16 | ||||
| 	br       byteReader | ||||
| 	bits     bitReader | ||||
| 	bw       bitWriter | ||||
| 	ct       cTable      // Compression tables. | ||||
| 	decTable []decSymbol // Decompression table. | ||||
| 	maxCount int         // count of the most probable symbol | ||||
|  | ||||
| 	// Per block parameters. | ||||
| 	// These can be used to override compression parameters of the block. | ||||
| 	// Do not touch, unless you know what you are doing. | ||||
|  | ||||
| 	// Out is output buffer. | ||||
| 	// If the scratch is re-used before the caller is done processing the output, | ||||
| 	// set this field to nil. | ||||
| 	// Otherwise the output buffer will be re-used for next Compression/Decompression step | ||||
| 	// and allocation will be avoided. | ||||
| 	Out []byte | ||||
|  | ||||
| 	// DecompressLimit limits the maximum decoded size acceptable. | ||||
| 	// If > 0 decompression will stop when approximately this many bytes | ||||
| 	// has been decoded. | ||||
| 	// If 0, maximum size will be 2GB. | ||||
| 	DecompressLimit int | ||||
|  | ||||
| 	symbolLen      uint16 // Length of active part of the symbol table. | ||||
| 	actualTableLog uint8  // Selected tablelog. | ||||
| 	zeroBits       bool   // no bits has prob > 50%. | ||||
| 	clearCount     bool   // clear count | ||||
|  | ||||
| 	// MaxSymbolValue will override the maximum symbol value of the next block. | ||||
| 	MaxSymbolValue uint8 | ||||
|  | ||||
| 	// TableLog will attempt to override the tablelog for the next block. | ||||
| 	TableLog uint8 | ||||
| } | ||||
|  | ||||
| // Histogram allows to populate the histogram and skip that step in the compression, | ||||
| // It otherwise allows to inspect the histogram when compression is done. | ||||
| // To indicate that you have populated the histogram call HistogramFinished | ||||
| // with the value of the highest populated symbol, as well as the number of entries | ||||
| // in the most populated entry. These are accepted at face value. | ||||
| // The returned slice will always be length 256. | ||||
| func (s *Scratch) Histogram() []uint32 { | ||||
| 	return s.count[:] | ||||
| } | ||||
|  | ||||
| // HistogramFinished can be called to indicate that the histogram has been populated. | ||||
| // maxSymbol is the index of the highest set symbol of the next data segment. | ||||
| // maxCount is the number of entries in the most populated entry. | ||||
| // These are accepted at face value. | ||||
| func (s *Scratch) HistogramFinished(maxSymbol uint8, maxCount int) { | ||||
| 	s.maxCount = maxCount | ||||
| 	s.symbolLen = uint16(maxSymbol) + 1 | ||||
| 	s.clearCount = maxCount != 0 | ||||
| } | ||||
|  | ||||
| // prepare will prepare and allocate scratch tables used for both compression and decompression. | ||||
| func (s *Scratch) prepare(in []byte) (*Scratch, error) { | ||||
| 	if s == nil { | ||||
| 		s = &Scratch{} | ||||
| 	} | ||||
| 	if s.MaxSymbolValue == 0 { | ||||
| 		s.MaxSymbolValue = 255 | ||||
| 	} | ||||
| 	if s.TableLog == 0 { | ||||
| 		s.TableLog = defaultTablelog | ||||
| 	} | ||||
| 	if s.TableLog > maxTableLog { | ||||
| 		return nil, fmt.Errorf("tableLog (%d) > maxTableLog (%d)", s.TableLog, maxTableLog) | ||||
| 	} | ||||
| 	if cap(s.Out) == 0 { | ||||
| 		s.Out = make([]byte, 0, len(in)) | ||||
| 	} | ||||
| 	if s.clearCount && s.maxCount == 0 { | ||||
| 		for i := range s.count { | ||||
| 			s.count[i] = 0 | ||||
| 		} | ||||
| 		s.clearCount = false | ||||
| 	} | ||||
| 	s.br.init(in) | ||||
| 	if s.DecompressLimit == 0 { | ||||
| 		// Max size 2GB. | ||||
| 		s.DecompressLimit = (2 << 30) - 1 | ||||
| 	} | ||||
|  | ||||
| 	return s, nil | ||||
| } | ||||
|  | ||||
| // tableStep returns the next table index. | ||||
| func tableStep(tableSize uint32) uint32 { | ||||
| 	return (tableSize >> 1) + (tableSize >> 3) + 3 | ||||
| } | ||||
|  | ||||
| func highBits(val uint32) (n uint32) { | ||||
| 	return uint32(bits.Len32(val) - 1) | ||||
| } | ||||
							
								
								
									
										4
									
								
								vendor/github.com/klauspost/compress/gen.sh
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/klauspost/compress/gen.sh
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,4 +0,0 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| cd s2/cmd/_s2sx/ || exit 1 | ||||
| go generate . | ||||
							
								
								
									
										1
									
								
								vendor/github.com/klauspost/compress/huff0/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/klauspost/compress/huff0/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1 +0,0 @@ | ||||
| /huff0-fuzz.zip | ||||
							
								
								
									
										89
									
								
								vendor/github.com/klauspost/compress/huff0/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										89
									
								
								vendor/github.com/klauspost/compress/huff0/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,89 +0,0 @@ | ||||
| # Huff0 entropy compression | ||||
|  | ||||
| This package provides Huff0 encoding and decoding as used in zstd. | ||||
|              | ||||
| [Huff0](https://github.com/Cyan4973/FiniteStateEntropy#new-generation-entropy-coders),  | ||||
| a Huffman codec designed for modern CPU, featuring OoO (Out of Order) operations on multiple ALU  | ||||
| (Arithmetic Logic Unit), achieving extremely fast compression and decompression speeds. | ||||
|  | ||||
| This can be used for compressing input with a lot of similar input values to the smallest number of bytes. | ||||
| This does not perform any multi-byte [dictionary coding](https://en.wikipedia.org/wiki/Dictionary_coder) as LZ coders, | ||||
| but it can be used as a secondary step to compressors (like Snappy) that does not do entropy encoding.  | ||||
|  | ||||
| * [Godoc documentation](https://godoc.org/github.com/klauspost/compress/huff0) | ||||
|  | ||||
| ## News | ||||
|  | ||||
| This is used as part of the [zstandard](https://github.com/klauspost/compress/tree/master/zstd#zstd) compression and decompression package. | ||||
|  | ||||
| This ensures that most functionality is well tested. | ||||
|  | ||||
| # Usage | ||||
|  | ||||
| This package provides a low level interface that allows to compress single independent blocks.  | ||||
|  | ||||
| Each block is separate, and there is no built in integrity checks.  | ||||
| This means that the caller should keep track of block sizes and also do checksums if needed.   | ||||
|  | ||||
| Compressing a block is done via the [`Compress1X`](https://godoc.org/github.com/klauspost/compress/huff0#Compress1X) and  | ||||
| [`Compress4X`](https://godoc.org/github.com/klauspost/compress/huff0#Compress4X) functions. | ||||
| You must provide input and will receive the output and maybe an error. | ||||
|  | ||||
| These error values can be returned: | ||||
|  | ||||
| | Error               | Description                                                                 | | ||||
| |---------------------|-----------------------------------------------------------------------------| | ||||
| | `<nil>`             | Everything ok, output is returned                                           | | ||||
| | `ErrIncompressible` | Returned when input is judged to be too hard to compress                    | | ||||
| | `ErrUseRLE`         | Returned from the compressor when the input is a single byte value repeated | | ||||
| | `ErrTooBig`         | Returned if the input block exceeds the maximum allowed size (128 Kib)      | | ||||
| | `(error)`           | An internal error occurred.                                                 | | ||||
|  | ||||
|  | ||||
| As can be seen above some of there are errors that will be returned even under normal operation so it is important to handle these. | ||||
|  | ||||
| To reduce allocations you can provide a [`Scratch`](https://godoc.org/github.com/klauspost/compress/huff0#Scratch) object  | ||||
| that can be re-used for successive calls. Both compression and decompression accepts a `Scratch` object, and the same  | ||||
| object can be used for both.    | ||||
|  | ||||
| Be aware, that when re-using a `Scratch` object that the *output* buffer is also re-used, so if you are still using this | ||||
| you must set the `Out` field in the scratch to nil. The same buffer is used for compression and decompression output. | ||||
|  | ||||
| The `Scratch` object will retain state that allows to re-use previous tables for encoding and decoding.   | ||||
|  | ||||
| ## Tables and re-use | ||||
|  | ||||
| Huff0 allows for reusing tables from the previous block to save space if that is expected to give better/faster results.  | ||||
|  | ||||
| The Scratch object allows you to set a [`ReusePolicy`](https://godoc.org/github.com/klauspost/compress/huff0#ReusePolicy)  | ||||
| that controls this behaviour. See the documentation for details. This can be altered between each block. | ||||
|  | ||||
| Do however note that this information is *not* stored in the output block and it is up to the users of the package to | ||||
| record whether [`ReadTable`](https://godoc.org/github.com/klauspost/compress/huff0#ReadTable) should be called, | ||||
| based on the boolean reported back from the CompressXX call.  | ||||
|  | ||||
| If you want to store the table separate from the data, you can access them as `OutData` and `OutTable` on the  | ||||
| [`Scratch`](https://godoc.org/github.com/klauspost/compress/huff0#Scratch) object. | ||||
|  | ||||
| ## Decompressing | ||||
|  | ||||
| The first part of decoding is to initialize the decoding table through [`ReadTable`](https://godoc.org/github.com/klauspost/compress/huff0#ReadTable). | ||||
| This will initialize the decoding tables.  | ||||
| You can supply the complete block to `ReadTable` and it will return the data part of the block  | ||||
| which can be given to the decompressor.  | ||||
|  | ||||
| Decompressing is done by calling the [`Decompress1X`](https://godoc.org/github.com/klauspost/compress/huff0#Scratch.Decompress1X)  | ||||
| or [`Decompress4X`](https://godoc.org/github.com/klauspost/compress/huff0#Scratch.Decompress4X) function. | ||||
|  | ||||
| For concurrently decompressing content with a fixed table a stateless [`Decoder`](https://godoc.org/github.com/klauspost/compress/huff0#Decoder) can be requested which will remain correct as long as the scratch is unchanged. The capacity of the provided slice indicates the expected output size. | ||||
|  | ||||
| You must provide the output from the compression stage, at exactly the size you got back. If you receive an error back | ||||
| your input was likely corrupted.  | ||||
|  | ||||
| It is important to note that a successful decoding does *not* mean your output matches your original input.  | ||||
| There are no integrity checks, so relying on errors from the decompressor does not assure your data is valid. | ||||
|  | ||||
| # Contributing | ||||
|  | ||||
| Contributions are always welcome. Be aware that adding public functions will require good justification and breaking  | ||||
| changes will likely not be accepted. If in doubt open an issue before writing the PR. | ||||
							
								
								
									
										229
									
								
								vendor/github.com/klauspost/compress/huff0/bitreader.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										229
									
								
								vendor/github.com/klauspost/compress/huff0/bitreader.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,229 +0,0 @@ | ||||
| // Copyright 2018 Klaus Post. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| // Based on work Copyright (c) 2013, Yann Collet, released under BSD License. | ||||
|  | ||||
| package huff0 | ||||
|  | ||||
| import ( | ||||
| 	"encoding/binary" | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"io" | ||||
| ) | ||||
|  | ||||
| // bitReader reads a bitstream in reverse. | ||||
| // The last set bit indicates the start of the stream and is used | ||||
| // for aligning the input. | ||||
| type bitReaderBytes struct { | ||||
| 	in       []byte | ||||
| 	off      uint // next byte to read is at in[off - 1] | ||||
| 	value    uint64 | ||||
| 	bitsRead uint8 | ||||
| } | ||||
|  | ||||
| // init initializes and resets the bit reader. | ||||
| func (b *bitReaderBytes) init(in []byte) error { | ||||
| 	if len(in) < 1 { | ||||
| 		return errors.New("corrupt stream: too short") | ||||
| 	} | ||||
| 	b.in = in | ||||
| 	b.off = uint(len(in)) | ||||
| 	// The highest bit of the last byte indicates where to start | ||||
| 	v := in[len(in)-1] | ||||
| 	if v == 0 { | ||||
| 		return errors.New("corrupt stream, did not find end of stream") | ||||
| 	} | ||||
| 	b.bitsRead = 64 | ||||
| 	b.value = 0 | ||||
| 	if len(in) >= 8 { | ||||
| 		b.fillFastStart() | ||||
| 	} else { | ||||
| 		b.fill() | ||||
| 		b.fill() | ||||
| 	} | ||||
| 	b.advance(8 - uint8(highBit32(uint32(v)))) | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // peekBitsFast requires that at least one bit is requested every time. | ||||
| // There are no checks if the buffer is filled. | ||||
| func (b *bitReaderBytes) peekByteFast() uint8 { | ||||
| 	got := uint8(b.value >> 56) | ||||
| 	return got | ||||
| } | ||||
|  | ||||
| func (b *bitReaderBytes) advance(n uint8) { | ||||
| 	b.bitsRead += n | ||||
| 	b.value <<= n & 63 | ||||
| } | ||||
|  | ||||
| // fillFast() will make sure at least 32 bits are available. | ||||
| // There must be at least 4 bytes available. | ||||
| func (b *bitReaderBytes) fillFast() { | ||||
| 	if b.bitsRead < 32 { | ||||
| 		return | ||||
| 	} | ||||
|  | ||||
| 	// 2 bounds checks. | ||||
| 	v := b.in[b.off-4 : b.off] | ||||
| 	low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) | ||||
| 	b.value |= uint64(low) << (b.bitsRead - 32) | ||||
| 	b.bitsRead -= 32 | ||||
| 	b.off -= 4 | ||||
| } | ||||
|  | ||||
| // fillFastStart() assumes the bitReaderBytes is empty and there is at least 8 bytes to read. | ||||
| func (b *bitReaderBytes) fillFastStart() { | ||||
| 	// Do single re-slice to avoid bounds checks. | ||||
| 	b.value = binary.LittleEndian.Uint64(b.in[b.off-8:]) | ||||
| 	b.bitsRead = 0 | ||||
| 	b.off -= 8 | ||||
| } | ||||
|  | ||||
| // fill() will make sure at least 32 bits are available. | ||||
| func (b *bitReaderBytes) fill() { | ||||
| 	if b.bitsRead < 32 { | ||||
| 		return | ||||
| 	} | ||||
| 	if b.off > 4 { | ||||
| 		v := b.in[b.off-4 : b.off] | ||||
| 		low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) | ||||
| 		b.value |= uint64(low) << (b.bitsRead - 32) | ||||
| 		b.bitsRead -= 32 | ||||
| 		b.off -= 4 | ||||
| 		return | ||||
| 	} | ||||
| 	for b.off > 0 { | ||||
| 		b.value |= uint64(b.in[b.off-1]) << (b.bitsRead - 8) | ||||
| 		b.bitsRead -= 8 | ||||
| 		b.off-- | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // finished returns true if all bits have been read from the bit stream. | ||||
| func (b *bitReaderBytes) finished() bool { | ||||
| 	return b.off == 0 && b.bitsRead >= 64 | ||||
| } | ||||
|  | ||||
| func (b *bitReaderBytes) remaining() uint { | ||||
| 	return b.off*8 + uint(64-b.bitsRead) | ||||
| } | ||||
|  | ||||
| // close the bitstream and returns an error if out-of-buffer reads occurred. | ||||
| func (b *bitReaderBytes) close() error { | ||||
| 	// Release reference. | ||||
| 	b.in = nil | ||||
| 	if b.remaining() > 0 { | ||||
| 		return fmt.Errorf("corrupt input: %d bits remain on stream", b.remaining()) | ||||
| 	} | ||||
| 	if b.bitsRead > 64 { | ||||
| 		return io.ErrUnexpectedEOF | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // bitReaderShifted reads a bitstream in reverse. | ||||
| // The last set bit indicates the start of the stream and is used | ||||
| // for aligning the input. | ||||
| type bitReaderShifted struct { | ||||
| 	in       []byte | ||||
| 	off      uint // next byte to read is at in[off - 1] | ||||
| 	value    uint64 | ||||
| 	bitsRead uint8 | ||||
| } | ||||
|  | ||||
| // init initializes and resets the bit reader. | ||||
| func (b *bitReaderShifted) init(in []byte) error { | ||||
| 	if len(in) < 1 { | ||||
| 		return errors.New("corrupt stream: too short") | ||||
| 	} | ||||
| 	b.in = in | ||||
| 	b.off = uint(len(in)) | ||||
| 	// The highest bit of the last byte indicates where to start | ||||
| 	v := in[len(in)-1] | ||||
| 	if v == 0 { | ||||
| 		return errors.New("corrupt stream, did not find end of stream") | ||||
| 	} | ||||
| 	b.bitsRead = 64 | ||||
| 	b.value = 0 | ||||
| 	if len(in) >= 8 { | ||||
| 		b.fillFastStart() | ||||
| 	} else { | ||||
| 		b.fill() | ||||
| 		b.fill() | ||||
| 	} | ||||
| 	b.advance(8 - uint8(highBit32(uint32(v)))) | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // peekBitsFast requires that at least one bit is requested every time. | ||||
| // There are no checks if the buffer is filled. | ||||
| func (b *bitReaderShifted) peekBitsFast(n uint8) uint16 { | ||||
| 	return uint16(b.value >> ((64 - n) & 63)) | ||||
| } | ||||
|  | ||||
| func (b *bitReaderShifted) advance(n uint8) { | ||||
| 	b.bitsRead += n | ||||
| 	b.value <<= n & 63 | ||||
| } | ||||
|  | ||||
| // fillFast() will make sure at least 32 bits are available. | ||||
| // There must be at least 4 bytes available. | ||||
| func (b *bitReaderShifted) fillFast() { | ||||
| 	if b.bitsRead < 32 { | ||||
| 		return | ||||
| 	} | ||||
|  | ||||
| 	// 2 bounds checks. | ||||
| 	v := b.in[b.off-4 : b.off] | ||||
| 	low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) | ||||
| 	b.value |= uint64(low) << ((b.bitsRead - 32) & 63) | ||||
| 	b.bitsRead -= 32 | ||||
| 	b.off -= 4 | ||||
| } | ||||
|  | ||||
| // fillFastStart() assumes the bitReaderShifted is empty and there is at least 8 bytes to read. | ||||
| func (b *bitReaderShifted) fillFastStart() { | ||||
| 	// Do single re-slice to avoid bounds checks. | ||||
| 	b.value = binary.LittleEndian.Uint64(b.in[b.off-8:]) | ||||
| 	b.bitsRead = 0 | ||||
| 	b.off -= 8 | ||||
| } | ||||
|  | ||||
| // fill() will make sure at least 32 bits are available. | ||||
| func (b *bitReaderShifted) fill() { | ||||
| 	if b.bitsRead < 32 { | ||||
| 		return | ||||
| 	} | ||||
| 	if b.off > 4 { | ||||
| 		v := b.in[b.off-4 : b.off] | ||||
| 		low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) | ||||
| 		b.value |= uint64(low) << ((b.bitsRead - 32) & 63) | ||||
| 		b.bitsRead -= 32 | ||||
| 		b.off -= 4 | ||||
| 		return | ||||
| 	} | ||||
| 	for b.off > 0 { | ||||
| 		b.value |= uint64(b.in[b.off-1]) << ((b.bitsRead - 8) & 63) | ||||
| 		b.bitsRead -= 8 | ||||
| 		b.off-- | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func (b *bitReaderShifted) remaining() uint { | ||||
| 	return b.off*8 + uint(64-b.bitsRead) | ||||
| } | ||||
|  | ||||
| // close the bitstream and returns an error if out-of-buffer reads occurred. | ||||
| func (b *bitReaderShifted) close() error { | ||||
| 	// Release reference. | ||||
| 	b.in = nil | ||||
| 	if b.remaining() > 0 { | ||||
| 		return fmt.Errorf("corrupt input: %d bits remain on stream", b.remaining()) | ||||
| 	} | ||||
| 	if b.bitsRead > 64 { | ||||
| 		return io.ErrUnexpectedEOF | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										102
									
								
								vendor/github.com/klauspost/compress/huff0/bitwriter.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										102
									
								
								vendor/github.com/klauspost/compress/huff0/bitwriter.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,102 +0,0 @@ | ||||
| // Copyright 2018 Klaus Post. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| // Based on work Copyright (c) 2013, Yann Collet, released under BSD License. | ||||
|  | ||||
| package huff0 | ||||
|  | ||||
| // bitWriter will write bits. | ||||
| // First bit will be LSB of the first byte of output. | ||||
| type bitWriter struct { | ||||
| 	bitContainer uint64 | ||||
| 	nBits        uint8 | ||||
| 	out          []byte | ||||
| } | ||||
|  | ||||
| // addBits16Clean will add up to 16 bits. value may not contain more set bits than indicated. | ||||
| // It will not check if there is space for them, so the caller must ensure that it has flushed recently. | ||||
| func (b *bitWriter) addBits16Clean(value uint16, bits uint8) { | ||||
| 	b.bitContainer |= uint64(value) << (b.nBits & 63) | ||||
| 	b.nBits += bits | ||||
| } | ||||
|  | ||||
| // encSymbol will add up to 16 bits. value may not contain more set bits than indicated. | ||||
| // It will not check if there is space for them, so the caller must ensure that it has flushed recently. | ||||
| func (b *bitWriter) encSymbol(ct cTable, symbol byte) { | ||||
| 	enc := ct[symbol] | ||||
| 	b.bitContainer |= uint64(enc.val) << (b.nBits & 63) | ||||
| 	if false { | ||||
| 		if enc.nBits == 0 { | ||||
| 			panic("nbits 0") | ||||
| 		} | ||||
| 	} | ||||
| 	b.nBits += enc.nBits | ||||
| } | ||||
|  | ||||
| // encTwoSymbols will add up to 32 bits. value may not contain more set bits than indicated. | ||||
| // It will not check if there is space for them, so the caller must ensure that it has flushed recently. | ||||
| func (b *bitWriter) encTwoSymbols(ct cTable, av, bv byte) { | ||||
| 	encA := ct[av] | ||||
| 	encB := ct[bv] | ||||
| 	sh := b.nBits & 63 | ||||
| 	combined := uint64(encA.val) | (uint64(encB.val) << (encA.nBits & 63)) | ||||
| 	b.bitContainer |= combined << sh | ||||
| 	if false { | ||||
| 		if encA.nBits == 0 { | ||||
| 			panic("nbitsA 0") | ||||
| 		} | ||||
| 		if encB.nBits == 0 { | ||||
| 			panic("nbitsB 0") | ||||
| 		} | ||||
| 	} | ||||
| 	b.nBits += encA.nBits + encB.nBits | ||||
| } | ||||
|  | ||||
| // encFourSymbols adds up to 32 bits from four symbols. | ||||
| // It will not check if there is space for them, | ||||
| // so the caller must ensure that b has been flushed recently. | ||||
| func (b *bitWriter) encFourSymbols(encA, encB, encC, encD cTableEntry) { | ||||
| 	bitsA := encA.nBits | ||||
| 	bitsB := bitsA + encB.nBits | ||||
| 	bitsC := bitsB + encC.nBits | ||||
| 	bitsD := bitsC + encD.nBits | ||||
| 	combined := uint64(encA.val) | | ||||
| 		(uint64(encB.val) << (bitsA & 63)) | | ||||
| 		(uint64(encC.val) << (bitsB & 63)) | | ||||
| 		(uint64(encD.val) << (bitsC & 63)) | ||||
| 	b.bitContainer |= combined << (b.nBits & 63) | ||||
| 	b.nBits += bitsD | ||||
| } | ||||
|  | ||||
| // flush32 will flush out, so there are at least 32 bits available for writing. | ||||
| func (b *bitWriter) flush32() { | ||||
| 	if b.nBits < 32 { | ||||
| 		return | ||||
| 	} | ||||
| 	b.out = append(b.out, | ||||
| 		byte(b.bitContainer), | ||||
| 		byte(b.bitContainer>>8), | ||||
| 		byte(b.bitContainer>>16), | ||||
| 		byte(b.bitContainer>>24)) | ||||
| 	b.nBits -= 32 | ||||
| 	b.bitContainer >>= 32 | ||||
| } | ||||
|  | ||||
| // flushAlign will flush remaining full bytes and align to next byte boundary. | ||||
| func (b *bitWriter) flushAlign() { | ||||
| 	nbBytes := (b.nBits + 7) >> 3 | ||||
| 	for i := uint8(0); i < nbBytes; i++ { | ||||
| 		b.out = append(b.out, byte(b.bitContainer>>(i*8))) | ||||
| 	} | ||||
| 	b.nBits = 0 | ||||
| 	b.bitContainer = 0 | ||||
| } | ||||
|  | ||||
| // close will write the alignment bit and write the final byte(s) | ||||
| // to the output. | ||||
| func (b *bitWriter) close() { | ||||
| 	// End mark | ||||
| 	b.addBits16Clean(1, 1) | ||||
| 	// flush until next byte. | ||||
| 	b.flushAlign() | ||||
| } | ||||
							
								
								
									
										742
									
								
								vendor/github.com/klauspost/compress/huff0/compress.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										742
									
								
								vendor/github.com/klauspost/compress/huff0/compress.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,742 +0,0 @@ | ||||
| package huff0 | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"math" | ||||
| 	"runtime" | ||||
| 	"sync" | ||||
| ) | ||||
|  | ||||
| // Compress1X will compress the input. | ||||
| // The output can be decoded using Decompress1X. | ||||
| // Supply a Scratch object. The scratch object contains state about re-use, | ||||
| // So when sharing across independent encodes, be sure to set the re-use policy. | ||||
| func Compress1X(in []byte, s *Scratch) (out []byte, reUsed bool, err error) { | ||||
| 	s, err = s.prepare(in) | ||||
| 	if err != nil { | ||||
| 		return nil, false, err | ||||
| 	} | ||||
| 	return compress(in, s, s.compress1X) | ||||
| } | ||||
|  | ||||
| // Compress4X will compress the input. The input is split into 4 independent blocks | ||||
| // and compressed similar to Compress1X. | ||||
| // The output can be decoded using Decompress4X. | ||||
| // Supply a Scratch object. The scratch object contains state about re-use, | ||||
| // So when sharing across independent encodes, be sure to set the re-use policy. | ||||
| func Compress4X(in []byte, s *Scratch) (out []byte, reUsed bool, err error) { | ||||
| 	s, err = s.prepare(in) | ||||
| 	if err != nil { | ||||
| 		return nil, false, err | ||||
| 	} | ||||
| 	if false { | ||||
| 		// TODO: compress4Xp only slightly faster. | ||||
| 		const parallelThreshold = 8 << 10 | ||||
| 		if len(in) < parallelThreshold || runtime.GOMAXPROCS(0) == 1 { | ||||
| 			return compress(in, s, s.compress4X) | ||||
| 		} | ||||
| 		return compress(in, s, s.compress4Xp) | ||||
| 	} | ||||
| 	return compress(in, s, s.compress4X) | ||||
| } | ||||
|  | ||||
| func compress(in []byte, s *Scratch, compressor func(src []byte) ([]byte, error)) (out []byte, reUsed bool, err error) { | ||||
| 	// Nuke previous table if we cannot reuse anyway. | ||||
| 	if s.Reuse == ReusePolicyNone { | ||||
| 		s.prevTable = s.prevTable[:0] | ||||
| 	} | ||||
|  | ||||
| 	// Create histogram, if none was provided. | ||||
| 	maxCount := s.maxCount | ||||
| 	var canReuse = false | ||||
| 	if maxCount == 0 { | ||||
| 		maxCount, canReuse = s.countSimple(in) | ||||
| 	} else { | ||||
| 		canReuse = s.canUseTable(s.prevTable) | ||||
| 	} | ||||
|  | ||||
| 	// We want the output size to be less than this: | ||||
| 	wantSize := len(in) | ||||
| 	if s.WantLogLess > 0 { | ||||
| 		wantSize -= wantSize >> s.WantLogLess | ||||
| 	} | ||||
|  | ||||
| 	// Reset for next run. | ||||
| 	s.clearCount = true | ||||
| 	s.maxCount = 0 | ||||
| 	if maxCount >= len(in) { | ||||
| 		if maxCount > len(in) { | ||||
| 			return nil, false, fmt.Errorf("maxCount (%d) > length (%d)", maxCount, len(in)) | ||||
| 		} | ||||
| 		if len(in) == 1 { | ||||
| 			return nil, false, ErrIncompressible | ||||
| 		} | ||||
| 		// One symbol, use RLE | ||||
| 		return nil, false, ErrUseRLE | ||||
| 	} | ||||
| 	if maxCount == 1 || maxCount < (len(in)>>7) { | ||||
| 		// Each symbol present maximum once or too well distributed. | ||||
| 		return nil, false, ErrIncompressible | ||||
| 	} | ||||
| 	if s.Reuse == ReusePolicyMust && !canReuse { | ||||
| 		// We must reuse, but we can't. | ||||
| 		return nil, false, ErrIncompressible | ||||
| 	} | ||||
| 	if (s.Reuse == ReusePolicyPrefer || s.Reuse == ReusePolicyMust) && canReuse { | ||||
| 		keepTable := s.cTable | ||||
| 		keepTL := s.actualTableLog | ||||
| 		s.cTable = s.prevTable | ||||
| 		s.actualTableLog = s.prevTableLog | ||||
| 		s.Out, err = compressor(in) | ||||
| 		s.cTable = keepTable | ||||
| 		s.actualTableLog = keepTL | ||||
| 		if err == nil && len(s.Out) < wantSize { | ||||
| 			s.OutData = s.Out | ||||
| 			return s.Out, true, nil | ||||
| 		} | ||||
| 		if s.Reuse == ReusePolicyMust { | ||||
| 			return nil, false, ErrIncompressible | ||||
| 		} | ||||
| 		// Do not attempt to re-use later. | ||||
| 		s.prevTable = s.prevTable[:0] | ||||
| 	} | ||||
|  | ||||
| 	// Calculate new table. | ||||
| 	err = s.buildCTable() | ||||
| 	if err != nil { | ||||
| 		return nil, false, err | ||||
| 	} | ||||
|  | ||||
| 	if false && !s.canUseTable(s.cTable) { | ||||
| 		panic("invalid table generated") | ||||
| 	} | ||||
|  | ||||
| 	if s.Reuse == ReusePolicyAllow && canReuse { | ||||
| 		hSize := len(s.Out) | ||||
| 		oldSize := s.prevTable.estimateSize(s.count[:s.symbolLen]) | ||||
| 		newSize := s.cTable.estimateSize(s.count[:s.symbolLen]) | ||||
| 		if oldSize <= hSize+newSize || hSize+12 >= wantSize { | ||||
| 			// Retain cTable even if we re-use. | ||||
| 			keepTable := s.cTable | ||||
| 			keepTL := s.actualTableLog | ||||
|  | ||||
| 			s.cTable = s.prevTable | ||||
| 			s.actualTableLog = s.prevTableLog | ||||
| 			s.Out, err = compressor(in) | ||||
|  | ||||
| 			// Restore ctable. | ||||
| 			s.cTable = keepTable | ||||
| 			s.actualTableLog = keepTL | ||||
| 			if err != nil { | ||||
| 				return nil, false, err | ||||
| 			} | ||||
| 			if len(s.Out) >= wantSize { | ||||
| 				return nil, false, ErrIncompressible | ||||
| 			} | ||||
| 			s.OutData = s.Out | ||||
| 			return s.Out, true, nil | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// Use new table | ||||
| 	err = s.cTable.write(s) | ||||
| 	if err != nil { | ||||
| 		s.OutTable = nil | ||||
| 		return nil, false, err | ||||
| 	} | ||||
| 	s.OutTable = s.Out | ||||
|  | ||||
| 	// Compress using new table | ||||
| 	s.Out, err = compressor(in) | ||||
| 	if err != nil { | ||||
| 		s.OutTable = nil | ||||
| 		return nil, false, err | ||||
| 	} | ||||
| 	if len(s.Out) >= wantSize { | ||||
| 		s.OutTable = nil | ||||
| 		return nil, false, ErrIncompressible | ||||
| 	} | ||||
| 	// Move current table into previous. | ||||
| 	s.prevTable, s.prevTableLog, s.cTable = s.cTable, s.actualTableLog, s.prevTable[:0] | ||||
| 	s.OutData = s.Out[len(s.OutTable):] | ||||
| 	return s.Out, false, nil | ||||
| } | ||||
|  | ||||
| // EstimateSizes will estimate the data sizes | ||||
| func EstimateSizes(in []byte, s *Scratch) (tableSz, dataSz, reuseSz int, err error) { | ||||
| 	s, err = s.prepare(in) | ||||
| 	if err != nil { | ||||
| 		return 0, 0, 0, err | ||||
| 	} | ||||
|  | ||||
| 	// Create histogram, if none was provided. | ||||
| 	tableSz, dataSz, reuseSz = -1, -1, -1 | ||||
| 	maxCount := s.maxCount | ||||
| 	var canReuse = false | ||||
| 	if maxCount == 0 { | ||||
| 		maxCount, canReuse = s.countSimple(in) | ||||
| 	} else { | ||||
| 		canReuse = s.canUseTable(s.prevTable) | ||||
| 	} | ||||
|  | ||||
| 	// We want the output size to be less than this: | ||||
| 	wantSize := len(in) | ||||
| 	if s.WantLogLess > 0 { | ||||
| 		wantSize -= wantSize >> s.WantLogLess | ||||
| 	} | ||||
|  | ||||
| 	// Reset for next run. | ||||
| 	s.clearCount = true | ||||
| 	s.maxCount = 0 | ||||
| 	if maxCount >= len(in) { | ||||
| 		if maxCount > len(in) { | ||||
| 			return 0, 0, 0, fmt.Errorf("maxCount (%d) > length (%d)", maxCount, len(in)) | ||||
| 		} | ||||
| 		if len(in) == 1 { | ||||
| 			return 0, 0, 0, ErrIncompressible | ||||
| 		} | ||||
| 		// One symbol, use RLE | ||||
| 		return 0, 0, 0, ErrUseRLE | ||||
| 	} | ||||
| 	if maxCount == 1 || maxCount < (len(in)>>7) { | ||||
| 		// Each symbol present maximum once or too well distributed. | ||||
| 		return 0, 0, 0, ErrIncompressible | ||||
| 	} | ||||
|  | ||||
| 	// Calculate new table. | ||||
| 	err = s.buildCTable() | ||||
| 	if err != nil { | ||||
| 		return 0, 0, 0, err | ||||
| 	} | ||||
|  | ||||
| 	if false && !s.canUseTable(s.cTable) { | ||||
| 		panic("invalid table generated") | ||||
| 	} | ||||
|  | ||||
| 	tableSz, err = s.cTable.estTableSize(s) | ||||
| 	if err != nil { | ||||
| 		return 0, 0, 0, err | ||||
| 	} | ||||
| 	if canReuse { | ||||
| 		reuseSz = s.prevTable.estimateSize(s.count[:s.symbolLen]) | ||||
| 	} | ||||
| 	dataSz = s.cTable.estimateSize(s.count[:s.symbolLen]) | ||||
|  | ||||
| 	// Restore | ||||
| 	return tableSz, dataSz, reuseSz, nil | ||||
| } | ||||
|  | ||||
| func (s *Scratch) compress1X(src []byte) ([]byte, error) { | ||||
| 	return s.compress1xDo(s.Out, src), nil | ||||
| } | ||||
|  | ||||
| func (s *Scratch) compress1xDo(dst, src []byte) []byte { | ||||
| 	var bw = bitWriter{out: dst} | ||||
|  | ||||
| 	// N is length divisible by 4. | ||||
| 	n := len(src) | ||||
| 	n -= n & 3 | ||||
| 	cTable := s.cTable[:256] | ||||
|  | ||||
| 	// Encode last bytes. | ||||
| 	for i := len(src) & 3; i > 0; i-- { | ||||
| 		bw.encSymbol(cTable, src[n+i-1]) | ||||
| 	} | ||||
| 	n -= 4 | ||||
| 	if s.actualTableLog <= 8 { | ||||
| 		for ; n >= 0; n -= 4 { | ||||
| 			tmp := src[n : n+4] | ||||
| 			// tmp should be len 4 | ||||
| 			bw.flush32() | ||||
| 			bw.encFourSymbols(cTable[tmp[3]], cTable[tmp[2]], cTable[tmp[1]], cTable[tmp[0]]) | ||||
| 		} | ||||
| 	} else { | ||||
| 		for ; n >= 0; n -= 4 { | ||||
| 			tmp := src[n : n+4] | ||||
| 			// tmp should be len 4 | ||||
| 			bw.flush32() | ||||
| 			bw.encTwoSymbols(cTable, tmp[3], tmp[2]) | ||||
| 			bw.flush32() | ||||
| 			bw.encTwoSymbols(cTable, tmp[1], tmp[0]) | ||||
| 		} | ||||
| 	} | ||||
| 	bw.close() | ||||
| 	return bw.out | ||||
| } | ||||
|  | ||||
| var sixZeros [6]byte | ||||
|  | ||||
| func (s *Scratch) compress4X(src []byte) ([]byte, error) { | ||||
| 	if len(src) < 12 { | ||||
| 		return nil, ErrIncompressible | ||||
| 	} | ||||
| 	segmentSize := (len(src) + 3) / 4 | ||||
|  | ||||
| 	// Add placeholder for output length | ||||
| 	offsetIdx := len(s.Out) | ||||
| 	s.Out = append(s.Out, sixZeros[:]...) | ||||
|  | ||||
| 	for i := 0; i < 4; i++ { | ||||
| 		toDo := src | ||||
| 		if len(toDo) > segmentSize { | ||||
| 			toDo = toDo[:segmentSize] | ||||
| 		} | ||||
| 		src = src[len(toDo):] | ||||
|  | ||||
| 		idx := len(s.Out) | ||||
| 		s.Out = s.compress1xDo(s.Out, toDo) | ||||
| 		if len(s.Out)-idx > math.MaxUint16 { | ||||
| 			// We cannot store the size in the jump table | ||||
| 			return nil, ErrIncompressible | ||||
| 		} | ||||
| 		// Write compressed length as little endian before block. | ||||
| 		if i < 3 { | ||||
| 			// Last length is not written. | ||||
| 			length := len(s.Out) - idx | ||||
| 			s.Out[i*2+offsetIdx] = byte(length) | ||||
| 			s.Out[i*2+offsetIdx+1] = byte(length >> 8) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return s.Out, nil | ||||
| } | ||||
|  | ||||
| // compress4Xp will compress 4 streams using separate goroutines. | ||||
| func (s *Scratch) compress4Xp(src []byte) ([]byte, error) { | ||||
| 	if len(src) < 12 { | ||||
| 		return nil, ErrIncompressible | ||||
| 	} | ||||
| 	// Add placeholder for output length | ||||
| 	s.Out = s.Out[:6] | ||||
|  | ||||
| 	segmentSize := (len(src) + 3) / 4 | ||||
| 	var wg sync.WaitGroup | ||||
| 	wg.Add(4) | ||||
| 	for i := 0; i < 4; i++ { | ||||
| 		toDo := src | ||||
| 		if len(toDo) > segmentSize { | ||||
| 			toDo = toDo[:segmentSize] | ||||
| 		} | ||||
| 		src = src[len(toDo):] | ||||
|  | ||||
| 		// Separate goroutine for each block. | ||||
| 		go func(i int) { | ||||
| 			s.tmpOut[i] = s.compress1xDo(s.tmpOut[i][:0], toDo) | ||||
| 			wg.Done() | ||||
| 		}(i) | ||||
| 	} | ||||
| 	wg.Wait() | ||||
| 	for i := 0; i < 4; i++ { | ||||
| 		o := s.tmpOut[i] | ||||
| 		if len(o) > math.MaxUint16 { | ||||
| 			// We cannot store the size in the jump table | ||||
| 			return nil, ErrIncompressible | ||||
| 		} | ||||
| 		// Write compressed length as little endian before block. | ||||
| 		if i < 3 { | ||||
| 			// Last length is not written. | ||||
| 			s.Out[i*2] = byte(len(o)) | ||||
| 			s.Out[i*2+1] = byte(len(o) >> 8) | ||||
| 		} | ||||
|  | ||||
| 		// Write output. | ||||
| 		s.Out = append(s.Out, o...) | ||||
| 	} | ||||
| 	return s.Out, nil | ||||
| } | ||||
|  | ||||
| // countSimple will create a simple histogram in s.count. | ||||
| // Returns the biggest count. | ||||
| // Does not update s.clearCount. | ||||
| func (s *Scratch) countSimple(in []byte) (max int, reuse bool) { | ||||
| 	reuse = true | ||||
| 	_ = s.count // Assert that s != nil to speed up the following loop. | ||||
| 	for _, v := range in { | ||||
| 		s.count[v]++ | ||||
| 	} | ||||
| 	m := uint32(0) | ||||
| 	if len(s.prevTable) > 0 { | ||||
| 		for i, v := range s.count[:] { | ||||
| 			if v == 0 { | ||||
| 				continue | ||||
| 			} | ||||
| 			if v > m { | ||||
| 				m = v | ||||
| 			} | ||||
| 			s.symbolLen = uint16(i) + 1 | ||||
| 			if i >= len(s.prevTable) { | ||||
| 				reuse = false | ||||
| 			} else if s.prevTable[i].nBits == 0 { | ||||
| 				reuse = false | ||||
| 			} | ||||
| 		} | ||||
| 		return int(m), reuse | ||||
| 	} | ||||
| 	for i, v := range s.count[:] { | ||||
| 		if v == 0 { | ||||
| 			continue | ||||
| 		} | ||||
| 		if v > m { | ||||
| 			m = v | ||||
| 		} | ||||
| 		s.symbolLen = uint16(i) + 1 | ||||
| 	} | ||||
| 	return int(m), false | ||||
| } | ||||
|  | ||||
| func (s *Scratch) canUseTable(c cTable) bool { | ||||
| 	if len(c) < int(s.symbolLen) { | ||||
| 		return false | ||||
| 	} | ||||
| 	for i, v := range s.count[:s.symbolLen] { | ||||
| 		if v != 0 && c[i].nBits == 0 { | ||||
| 			return false | ||||
| 		} | ||||
| 	} | ||||
| 	return true | ||||
| } | ||||
|  | ||||
| //lint:ignore U1000 used for debugging | ||||
| func (s *Scratch) validateTable(c cTable) bool { | ||||
| 	if len(c) < int(s.symbolLen) { | ||||
| 		return false | ||||
| 	} | ||||
| 	for i, v := range s.count[:s.symbolLen] { | ||||
| 		if v != 0 { | ||||
| 			if c[i].nBits == 0 { | ||||
| 				return false | ||||
| 			} | ||||
| 			if c[i].nBits > s.actualTableLog { | ||||
| 				return false | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	return true | ||||
| } | ||||
|  | ||||
| // minTableLog provides the minimum logSize to safely represent a distribution. | ||||
| func (s *Scratch) minTableLog() uint8 { | ||||
| 	minBitsSrc := highBit32(uint32(s.srcLen)) + 1 | ||||
| 	minBitsSymbols := highBit32(uint32(s.symbolLen-1)) + 2 | ||||
| 	if minBitsSrc < minBitsSymbols { | ||||
| 		return uint8(minBitsSrc) | ||||
| 	} | ||||
| 	return uint8(minBitsSymbols) | ||||
| } | ||||
|  | ||||
| // optimalTableLog calculates and sets the optimal tableLog in s.actualTableLog | ||||
| func (s *Scratch) optimalTableLog() { | ||||
| 	tableLog := s.TableLog | ||||
| 	minBits := s.minTableLog() | ||||
| 	maxBitsSrc := uint8(highBit32(uint32(s.srcLen-1))) - 1 | ||||
| 	if maxBitsSrc < tableLog { | ||||
| 		// Accuracy can be reduced | ||||
| 		tableLog = maxBitsSrc | ||||
| 	} | ||||
| 	if minBits > tableLog { | ||||
| 		tableLog = minBits | ||||
| 	} | ||||
| 	// Need a minimum to safely represent all symbol values | ||||
| 	if tableLog < minTablelog { | ||||
| 		tableLog = minTablelog | ||||
| 	} | ||||
| 	if tableLog > tableLogMax { | ||||
| 		tableLog = tableLogMax | ||||
| 	} | ||||
| 	s.actualTableLog = tableLog | ||||
| } | ||||
|  | ||||
| type cTableEntry struct { | ||||
| 	val   uint16 | ||||
| 	nBits uint8 | ||||
| 	// We have 8 bits extra | ||||
| } | ||||
|  | ||||
| const huffNodesMask = huffNodesLen - 1 | ||||
|  | ||||
| func (s *Scratch) buildCTable() error { | ||||
| 	s.optimalTableLog() | ||||
| 	s.huffSort() | ||||
| 	if cap(s.cTable) < maxSymbolValue+1 { | ||||
| 		s.cTable = make([]cTableEntry, s.symbolLen, maxSymbolValue+1) | ||||
| 	} else { | ||||
| 		s.cTable = s.cTable[:s.symbolLen] | ||||
| 		for i := range s.cTable { | ||||
| 			s.cTable[i] = cTableEntry{} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	var startNode = int16(s.symbolLen) | ||||
| 	nonNullRank := s.symbolLen - 1 | ||||
|  | ||||
| 	nodeNb := startNode | ||||
| 	huffNode := s.nodes[1 : huffNodesLen+1] | ||||
|  | ||||
| 	// This overlays the slice above, but allows "-1" index lookups. | ||||
| 	// Different from reference implementation. | ||||
| 	huffNode0 := s.nodes[0 : huffNodesLen+1] | ||||
|  | ||||
| 	for huffNode[nonNullRank].count() == 0 { | ||||
| 		nonNullRank-- | ||||
| 	} | ||||
|  | ||||
| 	lowS := int16(nonNullRank) | ||||
| 	nodeRoot := nodeNb + lowS - 1 | ||||
| 	lowN := nodeNb | ||||
| 	huffNode[nodeNb].setCount(huffNode[lowS].count() + huffNode[lowS-1].count()) | ||||
| 	huffNode[lowS].setParent(nodeNb) | ||||
| 	huffNode[lowS-1].setParent(nodeNb) | ||||
| 	nodeNb++ | ||||
| 	lowS -= 2 | ||||
| 	for n := nodeNb; n <= nodeRoot; n++ { | ||||
| 		huffNode[n].setCount(1 << 30) | ||||
| 	} | ||||
| 	// fake entry, strong barrier | ||||
| 	huffNode0[0].setCount(1 << 31) | ||||
|  | ||||
| 	// create parents | ||||
| 	for nodeNb <= nodeRoot { | ||||
| 		var n1, n2 int16 | ||||
| 		if huffNode0[lowS+1].count() < huffNode0[lowN+1].count() { | ||||
| 			n1 = lowS | ||||
| 			lowS-- | ||||
| 		} else { | ||||
| 			n1 = lowN | ||||
| 			lowN++ | ||||
| 		} | ||||
| 		if huffNode0[lowS+1].count() < huffNode0[lowN+1].count() { | ||||
| 			n2 = lowS | ||||
| 			lowS-- | ||||
| 		} else { | ||||
| 			n2 = lowN | ||||
| 			lowN++ | ||||
| 		} | ||||
|  | ||||
| 		huffNode[nodeNb].setCount(huffNode0[n1+1].count() + huffNode0[n2+1].count()) | ||||
| 		huffNode0[n1+1].setParent(nodeNb) | ||||
| 		huffNode0[n2+1].setParent(nodeNb) | ||||
| 		nodeNb++ | ||||
| 	} | ||||
|  | ||||
| 	// distribute weights (unlimited tree height) | ||||
| 	huffNode[nodeRoot].setNbBits(0) | ||||
| 	for n := nodeRoot - 1; n >= startNode; n-- { | ||||
| 		huffNode[n].setNbBits(huffNode[huffNode[n].parent()].nbBits() + 1) | ||||
| 	} | ||||
| 	for n := uint16(0); n <= nonNullRank; n++ { | ||||
| 		huffNode[n].setNbBits(huffNode[huffNode[n].parent()].nbBits() + 1) | ||||
| 	} | ||||
| 	s.actualTableLog = s.setMaxHeight(int(nonNullRank)) | ||||
| 	maxNbBits := s.actualTableLog | ||||
|  | ||||
| 	// fill result into tree (val, nbBits) | ||||
| 	if maxNbBits > tableLogMax { | ||||
| 		return fmt.Errorf("internal error: maxNbBits (%d) > tableLogMax (%d)", maxNbBits, tableLogMax) | ||||
| 	} | ||||
| 	var nbPerRank [tableLogMax + 1]uint16 | ||||
| 	var valPerRank [16]uint16 | ||||
| 	for _, v := range huffNode[:nonNullRank+1] { | ||||
| 		nbPerRank[v.nbBits()]++ | ||||
| 	} | ||||
| 	// determine stating value per rank | ||||
| 	{ | ||||
| 		min := uint16(0) | ||||
| 		for n := maxNbBits; n > 0; n-- { | ||||
| 			// get starting value within each rank | ||||
| 			valPerRank[n] = min | ||||
| 			min += nbPerRank[n] | ||||
| 			min >>= 1 | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// push nbBits per symbol, symbol order | ||||
| 	for _, v := range huffNode[:nonNullRank+1] { | ||||
| 		s.cTable[v.symbol()].nBits = v.nbBits() | ||||
| 	} | ||||
|  | ||||
| 	// assign value within rank, symbol order | ||||
| 	t := s.cTable[:s.symbolLen] | ||||
| 	for n, val := range t { | ||||
| 		nbits := val.nBits & 15 | ||||
| 		v := valPerRank[nbits] | ||||
| 		t[n].val = v | ||||
| 		valPerRank[nbits] = v + 1 | ||||
| 	} | ||||
|  | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // huffSort will sort symbols, decreasing order. | ||||
| func (s *Scratch) huffSort() { | ||||
| 	type rankPos struct { | ||||
| 		base    uint32 | ||||
| 		current uint32 | ||||
| 	} | ||||
|  | ||||
| 	// Clear nodes | ||||
| 	nodes := s.nodes[:huffNodesLen+1] | ||||
| 	s.nodes = nodes | ||||
| 	nodes = nodes[1 : huffNodesLen+1] | ||||
|  | ||||
| 	// Sort into buckets based on length of symbol count. | ||||
| 	var rank [32]rankPos | ||||
| 	for _, v := range s.count[:s.symbolLen] { | ||||
| 		r := highBit32(v+1) & 31 | ||||
| 		rank[r].base++ | ||||
| 	} | ||||
| 	// maxBitLength is log2(BlockSizeMax) + 1 | ||||
| 	const maxBitLength = 18 + 1 | ||||
| 	for n := maxBitLength; n > 0; n-- { | ||||
| 		rank[n-1].base += rank[n].base | ||||
| 	} | ||||
| 	for n := range rank[:maxBitLength] { | ||||
| 		rank[n].current = rank[n].base | ||||
| 	} | ||||
| 	for n, c := range s.count[:s.symbolLen] { | ||||
| 		r := (highBit32(c+1) + 1) & 31 | ||||
| 		pos := rank[r].current | ||||
| 		rank[r].current++ | ||||
| 		prev := nodes[(pos-1)&huffNodesMask] | ||||
| 		for pos > rank[r].base && c > prev.count() { | ||||
| 			nodes[pos&huffNodesMask] = prev | ||||
| 			pos-- | ||||
| 			prev = nodes[(pos-1)&huffNodesMask] | ||||
| 		} | ||||
| 		nodes[pos&huffNodesMask] = makeNodeElt(c, byte(n)) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func (s *Scratch) setMaxHeight(lastNonNull int) uint8 { | ||||
| 	maxNbBits := s.actualTableLog | ||||
| 	huffNode := s.nodes[1 : huffNodesLen+1] | ||||
| 	//huffNode = huffNode[: huffNodesLen] | ||||
|  | ||||
| 	largestBits := huffNode[lastNonNull].nbBits() | ||||
|  | ||||
| 	// early exit : no elt > maxNbBits | ||||
| 	if largestBits <= maxNbBits { | ||||
| 		return largestBits | ||||
| 	} | ||||
| 	totalCost := int(0) | ||||
| 	baseCost := int(1) << (largestBits - maxNbBits) | ||||
| 	n := uint32(lastNonNull) | ||||
|  | ||||
| 	for huffNode[n].nbBits() > maxNbBits { | ||||
| 		totalCost += baseCost - (1 << (largestBits - huffNode[n].nbBits())) | ||||
| 		huffNode[n].setNbBits(maxNbBits) | ||||
| 		n-- | ||||
| 	} | ||||
| 	// n stops at huffNode[n].nbBits <= maxNbBits | ||||
|  | ||||
| 	for huffNode[n].nbBits() == maxNbBits { | ||||
| 		n-- | ||||
| 	} | ||||
| 	// n end at index of smallest symbol using < maxNbBits | ||||
|  | ||||
| 	// renorm totalCost | ||||
| 	totalCost >>= largestBits - maxNbBits /* note : totalCost is necessarily a multiple of baseCost */ | ||||
|  | ||||
| 	// repay normalized cost | ||||
| 	{ | ||||
| 		const noSymbol = 0xF0F0F0F0 | ||||
| 		var rankLast [tableLogMax + 2]uint32 | ||||
|  | ||||
| 		for i := range rankLast[:] { | ||||
| 			rankLast[i] = noSymbol | ||||
| 		} | ||||
|  | ||||
| 		// Get pos of last (smallest) symbol per rank | ||||
| 		{ | ||||
| 			currentNbBits := maxNbBits | ||||
| 			for pos := int(n); pos >= 0; pos-- { | ||||
| 				if huffNode[pos].nbBits() >= currentNbBits { | ||||
| 					continue | ||||
| 				} | ||||
| 				currentNbBits = huffNode[pos].nbBits() // < maxNbBits | ||||
| 				rankLast[maxNbBits-currentNbBits] = uint32(pos) | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		for totalCost > 0 { | ||||
| 			nBitsToDecrease := uint8(highBit32(uint32(totalCost))) + 1 | ||||
|  | ||||
| 			for ; nBitsToDecrease > 1; nBitsToDecrease-- { | ||||
| 				highPos := rankLast[nBitsToDecrease] | ||||
| 				lowPos := rankLast[nBitsToDecrease-1] | ||||
| 				if highPos == noSymbol { | ||||
| 					continue | ||||
| 				} | ||||
| 				if lowPos == noSymbol { | ||||
| 					break | ||||
| 				} | ||||
| 				highTotal := huffNode[highPos].count() | ||||
| 				lowTotal := 2 * huffNode[lowPos].count() | ||||
| 				if highTotal <= lowTotal { | ||||
| 					break | ||||
| 				} | ||||
| 			} | ||||
| 			// only triggered when no more rank 1 symbol left => find closest one (note : there is necessarily at least one !) | ||||
| 			// HUF_MAX_TABLELOG test just to please gcc 5+; but it should not be necessary | ||||
| 			// FIXME: try to remove | ||||
| 			for (nBitsToDecrease <= tableLogMax) && (rankLast[nBitsToDecrease] == noSymbol) { | ||||
| 				nBitsToDecrease++ | ||||
| 			} | ||||
| 			totalCost -= 1 << (nBitsToDecrease - 1) | ||||
| 			if rankLast[nBitsToDecrease-1] == noSymbol { | ||||
| 				// this rank is no longer empty | ||||
| 				rankLast[nBitsToDecrease-1] = rankLast[nBitsToDecrease] | ||||
| 			} | ||||
| 			huffNode[rankLast[nBitsToDecrease]].setNbBits(1 + | ||||
| 				huffNode[rankLast[nBitsToDecrease]].nbBits()) | ||||
| 			if rankLast[nBitsToDecrease] == 0 { | ||||
| 				/* special case, reached largest symbol */ | ||||
| 				rankLast[nBitsToDecrease] = noSymbol | ||||
| 			} else { | ||||
| 				rankLast[nBitsToDecrease]-- | ||||
| 				if huffNode[rankLast[nBitsToDecrease]].nbBits() != maxNbBits-nBitsToDecrease { | ||||
| 					rankLast[nBitsToDecrease] = noSymbol /* this rank is now empty */ | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		for totalCost < 0 { /* Sometimes, cost correction overshoot */ | ||||
| 			if rankLast[1] == noSymbol { /* special case : no rank 1 symbol (using maxNbBits-1); let's create one from largest rank 0 (using maxNbBits) */ | ||||
| 				for huffNode[n].nbBits() == maxNbBits { | ||||
| 					n-- | ||||
| 				} | ||||
| 				huffNode[n+1].setNbBits(huffNode[n+1].nbBits() - 1) | ||||
| 				rankLast[1] = n + 1 | ||||
| 				totalCost++ | ||||
| 				continue | ||||
| 			} | ||||
| 			huffNode[rankLast[1]+1].setNbBits(huffNode[rankLast[1]+1].nbBits() - 1) | ||||
| 			rankLast[1]++ | ||||
| 			totalCost++ | ||||
| 		} | ||||
| 	} | ||||
| 	return maxNbBits | ||||
| } | ||||
|  | ||||
| // A nodeElt is the fields | ||||
| // | ||||
| //	count  uint32 | ||||
| //	parent uint16 | ||||
| //	symbol byte | ||||
| //	nbBits uint8 | ||||
| // | ||||
| // in some order, all squashed into an integer so that the compiler | ||||
| // always loads and stores entire nodeElts instead of separate fields. | ||||
| type nodeElt uint64 | ||||
|  | ||||
| func makeNodeElt(count uint32, symbol byte) nodeElt { | ||||
| 	return nodeElt(count) | nodeElt(symbol)<<48 | ||||
| } | ||||
|  | ||||
| func (e *nodeElt) count() uint32  { return uint32(*e) } | ||||
| func (e *nodeElt) parent() uint16 { return uint16(*e >> 32) } | ||||
| func (e *nodeElt) symbol() byte   { return byte(*e >> 48) } | ||||
| func (e *nodeElt) nbBits() uint8  { return uint8(*e >> 56) } | ||||
|  | ||||
| func (e *nodeElt) setCount(c uint32) { *e = (*e)&0xffffffff00000000 | nodeElt(c) } | ||||
| func (e *nodeElt) setParent(p int16) { *e = (*e)&0xffff0000ffffffff | nodeElt(uint16(p))<<32 } | ||||
| func (e *nodeElt) setNbBits(n uint8) { *e = (*e)&0x00ffffffffffffff | nodeElt(n)<<56 } | ||||
							
								
								
									
										1167
									
								
								vendor/github.com/klauspost/compress/huff0/decompress.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1167
									
								
								vendor/github.com/klauspost/compress/huff0/decompress.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										226
									
								
								vendor/github.com/klauspost/compress/huff0/decompress_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										226
									
								
								vendor/github.com/klauspost/compress/huff0/decompress_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,226 +0,0 @@ | ||||
| //go:build amd64 && !appengine && !noasm && gc | ||||
| // +build amd64,!appengine,!noasm,gc | ||||
|  | ||||
| // This file contains the specialisation of Decoder.Decompress4X | ||||
| // and Decoder.Decompress1X that use an asm implementation of thir main loops. | ||||
| package huff0 | ||||
|  | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
|  | ||||
| 	"github.com/klauspost/compress/internal/cpuinfo" | ||||
| ) | ||||
|  | ||||
| // decompress4x_main_loop_x86 is an x86 assembler implementation | ||||
| // of Decompress4X when tablelog > 8. | ||||
| // | ||||
| //go:noescape | ||||
| func decompress4x_main_loop_amd64(ctx *decompress4xContext) | ||||
|  | ||||
| // decompress4x_8b_loop_x86 is an x86 assembler implementation | ||||
| // of Decompress4X when tablelog <= 8 which decodes 4 entries | ||||
| // per loop. | ||||
| // | ||||
| //go:noescape | ||||
| func decompress4x_8b_main_loop_amd64(ctx *decompress4xContext) | ||||
|  | ||||
| // fallback8BitSize is the size where using Go version is faster. | ||||
| const fallback8BitSize = 800 | ||||
|  | ||||
| type decompress4xContext struct { | ||||
| 	pbr      *[4]bitReaderShifted | ||||
| 	peekBits uint8 | ||||
| 	out      *byte | ||||
| 	dstEvery int | ||||
| 	tbl      *dEntrySingle | ||||
| 	decoded  int | ||||
| 	limit    *byte | ||||
| } | ||||
|  | ||||
| // Decompress4X will decompress a 4X encoded stream. | ||||
| // The length of the supplied input must match the end of a block exactly. | ||||
| // The *capacity* of the dst slice must match the destination size of | ||||
| // the uncompressed data exactly. | ||||
| func (d *Decoder) Decompress4X(dst, src []byte) ([]byte, error) { | ||||
| 	if len(d.dt.single) == 0 { | ||||
| 		return nil, errors.New("no table loaded") | ||||
| 	} | ||||
| 	if len(src) < 6+(4*1) { | ||||
| 		return nil, errors.New("input too small") | ||||
| 	} | ||||
|  | ||||
| 	use8BitTables := d.actualTableLog <= 8 | ||||
| 	if cap(dst) < fallback8BitSize && use8BitTables { | ||||
| 		return d.decompress4X8bit(dst, src) | ||||
| 	} | ||||
|  | ||||
| 	var br [4]bitReaderShifted | ||||
| 	// Decode "jump table" | ||||
| 	start := 6 | ||||
| 	for i := 0; i < 3; i++ { | ||||
| 		length := int(src[i*2]) | (int(src[i*2+1]) << 8) | ||||
| 		if start+length >= len(src) { | ||||
| 			return nil, errors.New("truncated input (or invalid offset)") | ||||
| 		} | ||||
| 		err := br[i].init(src[start : start+length]) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 		start += length | ||||
| 	} | ||||
| 	err := br[3].init(src[start:]) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	// destination, offset to match first output | ||||
| 	dstSize := cap(dst) | ||||
| 	dst = dst[:dstSize] | ||||
| 	out := dst | ||||
| 	dstEvery := (dstSize + 3) / 4 | ||||
|  | ||||
| 	const tlSize = 1 << tableLogMax | ||||
| 	const tlMask = tlSize - 1 | ||||
| 	single := d.dt.single[:tlSize] | ||||
|  | ||||
| 	var decoded int | ||||
|  | ||||
| 	if len(out) > 4*4 && !(br[0].off < 4 || br[1].off < 4 || br[2].off < 4 || br[3].off < 4) { | ||||
| 		ctx := decompress4xContext{ | ||||
| 			pbr:      &br, | ||||
| 			peekBits: uint8((64 - d.actualTableLog) & 63), // see: bitReaderShifted.peekBitsFast() | ||||
| 			out:      &out[0], | ||||
| 			dstEvery: dstEvery, | ||||
| 			tbl:      &single[0], | ||||
| 			limit:    &out[dstEvery-4], // Always stop decoding when first buffer gets here to avoid writing OOB on last. | ||||
| 		} | ||||
| 		if use8BitTables { | ||||
| 			decompress4x_8b_main_loop_amd64(&ctx) | ||||
| 		} else { | ||||
| 			decompress4x_main_loop_amd64(&ctx) | ||||
| 		} | ||||
|  | ||||
| 		decoded = ctx.decoded | ||||
| 		out = out[decoded/4:] | ||||
| 	} | ||||
|  | ||||
| 	// Decode remaining. | ||||
| 	remainBytes := dstEvery - (decoded / 4) | ||||
| 	for i := range br { | ||||
| 		offset := dstEvery * i | ||||
| 		endsAt := offset + remainBytes | ||||
| 		if endsAt > len(out) { | ||||
| 			endsAt = len(out) | ||||
| 		} | ||||
| 		br := &br[i] | ||||
| 		bitsLeft := br.remaining() | ||||
| 		for bitsLeft > 0 { | ||||
| 			br.fill() | ||||
| 			if offset >= endsAt { | ||||
| 				return nil, errors.New("corruption detected: stream overrun 4") | ||||
| 			} | ||||
|  | ||||
| 			// Read value and increment offset. | ||||
| 			val := br.peekBitsFast(d.actualTableLog) | ||||
| 			v := single[val&tlMask].entry | ||||
| 			nBits := uint8(v) | ||||
| 			br.advance(nBits) | ||||
| 			bitsLeft -= uint(nBits) | ||||
| 			out[offset] = uint8(v >> 8) | ||||
| 			offset++ | ||||
| 		} | ||||
| 		if offset != endsAt { | ||||
| 			return nil, fmt.Errorf("corruption detected: short output block %d, end %d != %d", i, offset, endsAt) | ||||
| 		} | ||||
| 		decoded += offset - dstEvery*i | ||||
| 		err = br.close() | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 	} | ||||
| 	if dstSize != decoded { | ||||
| 		return nil, errors.New("corruption detected: short output block") | ||||
| 	} | ||||
| 	return dst, nil | ||||
| } | ||||
|  | ||||
| // decompress4x_main_loop_x86 is an x86 assembler implementation | ||||
| // of Decompress1X when tablelog > 8. | ||||
| // | ||||
| //go:noescape | ||||
| func decompress1x_main_loop_amd64(ctx *decompress1xContext) | ||||
|  | ||||
| // decompress4x_main_loop_x86 is an x86 with BMI2 assembler implementation | ||||
| // of Decompress1X when tablelog > 8. | ||||
| // | ||||
| //go:noescape | ||||
| func decompress1x_main_loop_bmi2(ctx *decompress1xContext) | ||||
|  | ||||
| type decompress1xContext struct { | ||||
| 	pbr      *bitReaderShifted | ||||
| 	peekBits uint8 | ||||
| 	out      *byte | ||||
| 	outCap   int | ||||
| 	tbl      *dEntrySingle | ||||
| 	decoded  int | ||||
| } | ||||
|  | ||||
| // Error reported by asm implementations | ||||
| const error_max_decoded_size_exeeded = -1 | ||||
|  | ||||
| // Decompress1X will decompress a 1X encoded stream. | ||||
| // The cap of the output buffer will be the maximum decompressed size. | ||||
| // The length of the supplied input must match the end of a block exactly. | ||||
| func (d *Decoder) Decompress1X(dst, src []byte) ([]byte, error) { | ||||
| 	if len(d.dt.single) == 0 { | ||||
| 		return nil, errors.New("no table loaded") | ||||
| 	} | ||||
| 	var br bitReaderShifted | ||||
| 	err := br.init(src) | ||||
| 	if err != nil { | ||||
| 		return dst, err | ||||
| 	} | ||||
| 	maxDecodedSize := cap(dst) | ||||
| 	dst = dst[:maxDecodedSize] | ||||
|  | ||||
| 	const tlSize = 1 << tableLogMax | ||||
| 	const tlMask = tlSize - 1 | ||||
|  | ||||
| 	if maxDecodedSize >= 4 { | ||||
| 		ctx := decompress1xContext{ | ||||
| 			pbr:      &br, | ||||
| 			out:      &dst[0], | ||||
| 			outCap:   maxDecodedSize, | ||||
| 			peekBits: uint8((64 - d.actualTableLog) & 63), // see: bitReaderShifted.peekBitsFast() | ||||
| 			tbl:      &d.dt.single[0], | ||||
| 		} | ||||
|  | ||||
| 		if cpuinfo.HasBMI2() { | ||||
| 			decompress1x_main_loop_bmi2(&ctx) | ||||
| 		} else { | ||||
| 			decompress1x_main_loop_amd64(&ctx) | ||||
| 		} | ||||
| 		if ctx.decoded == error_max_decoded_size_exeeded { | ||||
| 			return nil, ErrMaxDecodedSizeExceeded | ||||
| 		} | ||||
|  | ||||
| 		dst = dst[:ctx.decoded] | ||||
| 	} | ||||
|  | ||||
| 	// br < 8, so uint8 is fine | ||||
| 	bitsLeft := uint8(br.off)*8 + 64 - br.bitsRead | ||||
| 	for bitsLeft > 0 { | ||||
| 		br.fill() | ||||
| 		if len(dst) >= maxDecodedSize { | ||||
| 			br.close() | ||||
| 			return nil, ErrMaxDecodedSizeExceeded | ||||
| 		} | ||||
| 		v := d.dt.single[br.peekBitsFast(d.actualTableLog)&tlMask] | ||||
| 		nBits := uint8(v.entry) | ||||
| 		br.advance(nBits) | ||||
| 		bitsLeft -= nBits | ||||
| 		dst = append(dst, uint8(v.entry>>8)) | ||||
| 	} | ||||
| 	return dst, br.close() | ||||
| } | ||||
							
								
								
									
										830
									
								
								vendor/github.com/klauspost/compress/huff0/decompress_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										830
									
								
								vendor/github.com/klauspost/compress/huff0/decompress_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,830 +0,0 @@ | ||||
| // Code generated by command: go run gen.go -out ../decompress_amd64.s -pkg=huff0. DO NOT EDIT. | ||||
|  | ||||
| //go:build amd64 && !appengine && !noasm && gc | ||||
|  | ||||
| // func decompress4x_main_loop_amd64(ctx *decompress4xContext) | ||||
| TEXT ·decompress4x_main_loop_amd64(SB), $0-8 | ||||
| 	// Preload values | ||||
| 	MOVQ    ctx+0(FP), AX | ||||
| 	MOVBQZX 8(AX), DI | ||||
| 	MOVQ    16(AX), BX | ||||
| 	MOVQ    48(AX), SI | ||||
| 	MOVQ    24(AX), R8 | ||||
| 	MOVQ    32(AX), R9 | ||||
| 	MOVQ    (AX), R10 | ||||
|  | ||||
| 	// Main loop | ||||
| main_loop: | ||||
| 	XORL  DX, DX | ||||
| 	CMPQ  BX, SI | ||||
| 	SETGE DL | ||||
|  | ||||
| 	// br0.fillFast32() | ||||
| 	MOVQ    32(R10), R11 | ||||
| 	MOVBQZX 40(R10), R12 | ||||
| 	CMPQ    R12, $0x20 | ||||
| 	JBE     skip_fill0 | ||||
| 	MOVQ    24(R10), AX | ||||
| 	SUBQ    $0x20, R12 | ||||
| 	SUBQ    $0x04, AX | ||||
| 	MOVQ    (R10), R13 | ||||
|  | ||||
| 	// b.value |= uint64(low) << (b.bitsRead & 63) | ||||
| 	MOVL (AX)(R13*1), R13 | ||||
| 	MOVQ R12, CX | ||||
| 	SHLQ CL, R13 | ||||
| 	MOVQ AX, 24(R10) | ||||
| 	ORQ  R13, R11 | ||||
|  | ||||
| 	// exhausted += (br0.off < 4) | ||||
| 	CMPQ AX, $0x04 | ||||
| 	ADCB $+0, DL | ||||
|  | ||||
| skip_fill0: | ||||
| 	// val0 := br0.peekTopBits(peekBits) | ||||
| 	MOVQ R11, R13 | ||||
| 	MOVQ DI, CX | ||||
| 	SHRQ CL, R13 | ||||
|  | ||||
| 	// v0 := table[val0&mask] | ||||
| 	MOVW (R9)(R13*2), CX | ||||
|  | ||||
| 	// br0.advance(uint8(v0.entry) | ||||
| 	MOVB CH, AL | ||||
| 	SHLQ CL, R11 | ||||
| 	ADDB CL, R12 | ||||
|  | ||||
| 	// val1 := br0.peekTopBits(peekBits) | ||||
| 	MOVQ DI, CX | ||||
| 	MOVQ R11, R13 | ||||
| 	SHRQ CL, R13 | ||||
|  | ||||
| 	// v1 := table[val1&mask] | ||||
| 	MOVW (R9)(R13*2), CX | ||||
|  | ||||
| 	// br0.advance(uint8(v1.entry)) | ||||
| 	MOVB CH, AH | ||||
| 	SHLQ CL, R11 | ||||
| 	ADDB CL, R12 | ||||
|  | ||||
| 	// these two writes get coalesced | ||||
| 	// out[id * dstEvery + 0] = uint8(v0.entry >> 8) | ||||
| 	// out[id * dstEvery + 1] = uint8(v1.entry >> 8) | ||||
| 	MOVW AX, (BX) | ||||
|  | ||||
| 	// update the bitreader structure | ||||
| 	MOVQ R11, 32(R10) | ||||
| 	MOVB R12, 40(R10) | ||||
|  | ||||
| 	// br1.fillFast32() | ||||
| 	MOVQ    80(R10), R11 | ||||
| 	MOVBQZX 88(R10), R12 | ||||
| 	CMPQ    R12, $0x20 | ||||
| 	JBE     skip_fill1 | ||||
| 	MOVQ    72(R10), AX | ||||
| 	SUBQ    $0x20, R12 | ||||
| 	SUBQ    $0x04, AX | ||||
| 	MOVQ    48(R10), R13 | ||||
|  | ||||
| 	// b.value |= uint64(low) << (b.bitsRead & 63) | ||||
| 	MOVL (AX)(R13*1), R13 | ||||
| 	MOVQ R12, CX | ||||
| 	SHLQ CL, R13 | ||||
| 	MOVQ AX, 72(R10) | ||||
| 	ORQ  R13, R11 | ||||
|  | ||||
| 	// exhausted += (br1.off < 4) | ||||
| 	CMPQ AX, $0x04 | ||||
| 	ADCB $+0, DL | ||||
|  | ||||
| skip_fill1: | ||||
| 	// val0 := br1.peekTopBits(peekBits) | ||||
| 	MOVQ R11, R13 | ||||
| 	MOVQ DI, CX | ||||
| 	SHRQ CL, R13 | ||||
|  | ||||
| 	// v0 := table[val0&mask] | ||||
| 	MOVW (R9)(R13*2), CX | ||||
|  | ||||
| 	// br1.advance(uint8(v0.entry) | ||||
| 	MOVB CH, AL | ||||
| 	SHLQ CL, R11 | ||||
| 	ADDB CL, R12 | ||||
|  | ||||
| 	// val1 := br1.peekTopBits(peekBits) | ||||
| 	MOVQ DI, CX | ||||
| 	MOVQ R11, R13 | ||||
| 	SHRQ CL, R13 | ||||
|  | ||||
| 	// v1 := table[val1&mask] | ||||
| 	MOVW (R9)(R13*2), CX | ||||
|  | ||||
| 	// br1.advance(uint8(v1.entry)) | ||||
| 	MOVB CH, AH | ||||
| 	SHLQ CL, R11 | ||||
| 	ADDB CL, R12 | ||||
|  | ||||
| 	// these two writes get coalesced | ||||
| 	// out[id * dstEvery + 0] = uint8(v0.entry >> 8) | ||||
| 	// out[id * dstEvery + 1] = uint8(v1.entry >> 8) | ||||
| 	MOVW AX, (BX)(R8*1) | ||||
|  | ||||
| 	// update the bitreader structure | ||||
| 	MOVQ R11, 80(R10) | ||||
| 	MOVB R12, 88(R10) | ||||
|  | ||||
| 	// br2.fillFast32() | ||||
| 	MOVQ    128(R10), R11 | ||||
| 	MOVBQZX 136(R10), R12 | ||||
| 	CMPQ    R12, $0x20 | ||||
| 	JBE     skip_fill2 | ||||
| 	MOVQ    120(R10), AX | ||||
| 	SUBQ    $0x20, R12 | ||||
| 	SUBQ    $0x04, AX | ||||
| 	MOVQ    96(R10), R13 | ||||
|  | ||||
| 	// b.value |= uint64(low) << (b.bitsRead & 63) | ||||
| 	MOVL (AX)(R13*1), R13 | ||||
| 	MOVQ R12, CX | ||||
| 	SHLQ CL, R13 | ||||
| 	MOVQ AX, 120(R10) | ||||
| 	ORQ  R13, R11 | ||||
|  | ||||
| 	// exhausted += (br2.off < 4) | ||||
| 	CMPQ AX, $0x04 | ||||
| 	ADCB $+0, DL | ||||
|  | ||||
| skip_fill2: | ||||
| 	// val0 := br2.peekTopBits(peekBits) | ||||
| 	MOVQ R11, R13 | ||||
| 	MOVQ DI, CX | ||||
| 	SHRQ CL, R13 | ||||
|  | ||||
| 	// v0 := table[val0&mask] | ||||
| 	MOVW (R9)(R13*2), CX | ||||
|  | ||||
| 	// br2.advance(uint8(v0.entry) | ||||
| 	MOVB CH, AL | ||||
| 	SHLQ CL, R11 | ||||
| 	ADDB CL, R12 | ||||
|  | ||||
| 	// val1 := br2.peekTopBits(peekBits) | ||||
| 	MOVQ DI, CX | ||||
| 	MOVQ R11, R13 | ||||
| 	SHRQ CL, R13 | ||||
|  | ||||
| 	// v1 := table[val1&mask] | ||||
| 	MOVW (R9)(R13*2), CX | ||||
|  | ||||
| 	// br2.advance(uint8(v1.entry)) | ||||
| 	MOVB CH, AH | ||||
| 	SHLQ CL, R11 | ||||
| 	ADDB CL, R12 | ||||
|  | ||||
| 	// these two writes get coalesced | ||||
| 	// out[id * dstEvery + 0] = uint8(v0.entry >> 8) | ||||
| 	// out[id * dstEvery + 1] = uint8(v1.entry >> 8) | ||||
| 	MOVW AX, (BX)(R8*2) | ||||
|  | ||||
| 	// update the bitreader structure | ||||
| 	MOVQ R11, 128(R10) | ||||
| 	MOVB R12, 136(R10) | ||||
|  | ||||
| 	// br3.fillFast32() | ||||
| 	MOVQ    176(R10), R11 | ||||
| 	MOVBQZX 184(R10), R12 | ||||
| 	CMPQ    R12, $0x20 | ||||
| 	JBE     skip_fill3 | ||||
| 	MOVQ    168(R10), AX | ||||
| 	SUBQ    $0x20, R12 | ||||
| 	SUBQ    $0x04, AX | ||||
| 	MOVQ    144(R10), R13 | ||||
|  | ||||
| 	// b.value |= uint64(low) << (b.bitsRead & 63) | ||||
| 	MOVL (AX)(R13*1), R13 | ||||
| 	MOVQ R12, CX | ||||
| 	SHLQ CL, R13 | ||||
| 	MOVQ AX, 168(R10) | ||||
| 	ORQ  R13, R11 | ||||
|  | ||||
| 	// exhausted += (br3.off < 4) | ||||
| 	CMPQ AX, $0x04 | ||||
| 	ADCB $+0, DL | ||||
|  | ||||
| skip_fill3: | ||||
| 	// val0 := br3.peekTopBits(peekBits) | ||||
| 	MOVQ R11, R13 | ||||
| 	MOVQ DI, CX | ||||
| 	SHRQ CL, R13 | ||||
|  | ||||
| 	// v0 := table[val0&mask] | ||||
| 	MOVW (R9)(R13*2), CX | ||||
|  | ||||
| 	// br3.advance(uint8(v0.entry) | ||||
| 	MOVB CH, AL | ||||
| 	SHLQ CL, R11 | ||||
| 	ADDB CL, R12 | ||||
|  | ||||
| 	// val1 := br3.peekTopBits(peekBits) | ||||
| 	MOVQ DI, CX | ||||
| 	MOVQ R11, R13 | ||||
| 	SHRQ CL, R13 | ||||
|  | ||||
| 	// v1 := table[val1&mask] | ||||
| 	MOVW (R9)(R13*2), CX | ||||
|  | ||||
| 	// br3.advance(uint8(v1.entry)) | ||||
| 	MOVB CH, AH | ||||
| 	SHLQ CL, R11 | ||||
| 	ADDB CL, R12 | ||||
|  | ||||
| 	// these two writes get coalesced | ||||
| 	// out[id * dstEvery + 0] = uint8(v0.entry >> 8) | ||||
| 	// out[id * dstEvery + 1] = uint8(v1.entry >> 8) | ||||
| 	LEAQ (R8)(R8*2), CX | ||||
| 	MOVW AX, (BX)(CX*1) | ||||
|  | ||||
| 	// update the bitreader structure | ||||
| 	MOVQ  R11, 176(R10) | ||||
| 	MOVB  R12, 184(R10) | ||||
| 	ADDQ  $0x02, BX | ||||
| 	TESTB DL, DL | ||||
| 	JZ    main_loop | ||||
| 	MOVQ  ctx+0(FP), AX | ||||
| 	SUBQ  16(AX), BX | ||||
| 	SHLQ  $0x02, BX | ||||
| 	MOVQ  BX, 40(AX) | ||||
| 	RET | ||||
|  | ||||
| // func decompress4x_8b_main_loop_amd64(ctx *decompress4xContext) | ||||
| TEXT ·decompress4x_8b_main_loop_amd64(SB), $0-8 | ||||
| 	// Preload values | ||||
| 	MOVQ    ctx+0(FP), CX | ||||
| 	MOVBQZX 8(CX), DI | ||||
| 	MOVQ    16(CX), BX | ||||
| 	MOVQ    48(CX), SI | ||||
| 	MOVQ    24(CX), R8 | ||||
| 	MOVQ    32(CX), R9 | ||||
| 	MOVQ    (CX), R10 | ||||
|  | ||||
| 	// Main loop | ||||
| main_loop: | ||||
| 	XORL  DX, DX | ||||
| 	CMPQ  BX, SI | ||||
| 	SETGE DL | ||||
|  | ||||
| 	// br0.fillFast32() | ||||
| 	MOVQ    32(R10), R11 | ||||
| 	MOVBQZX 40(R10), R12 | ||||
| 	CMPQ    R12, $0x20 | ||||
| 	JBE     skip_fill0 | ||||
| 	MOVQ    24(R10), R13 | ||||
| 	SUBQ    $0x20, R12 | ||||
| 	SUBQ    $0x04, R13 | ||||
| 	MOVQ    (R10), R14 | ||||
|  | ||||
| 	// b.value |= uint64(low) << (b.bitsRead & 63) | ||||
| 	MOVL (R13)(R14*1), R14 | ||||
| 	MOVQ R12, CX | ||||
| 	SHLQ CL, R14 | ||||
| 	MOVQ R13, 24(R10) | ||||
| 	ORQ  R14, R11 | ||||
|  | ||||
| 	// exhausted += (br0.off < 4) | ||||
| 	CMPQ R13, $0x04 | ||||
| 	ADCB $+0, DL | ||||
|  | ||||
| skip_fill0: | ||||
| 	// val0 := br0.peekTopBits(peekBits) | ||||
| 	MOVQ R11, R13 | ||||
| 	MOVQ DI, CX | ||||
| 	SHRQ CL, R13 | ||||
|  | ||||
| 	// v0 := table[val0&mask] | ||||
| 	MOVW (R9)(R13*2), CX | ||||
|  | ||||
| 	// br0.advance(uint8(v0.entry) | ||||
| 	MOVB CH, AL | ||||
| 	SHLQ CL, R11 | ||||
| 	ADDB CL, R12 | ||||
|  | ||||
| 	// val1 := br0.peekTopBits(peekBits) | ||||
| 	MOVQ R11, R13 | ||||
| 	MOVQ DI, CX | ||||
| 	SHRQ CL, R13 | ||||
|  | ||||
| 	// v1 := table[val0&mask] | ||||
| 	MOVW (R9)(R13*2), CX | ||||
|  | ||||
| 	// br0.advance(uint8(v1.entry) | ||||
| 	MOVB   CH, AH | ||||
| 	SHLQ   CL, R11 | ||||
| 	ADDB   CL, R12 | ||||
| 	BSWAPL AX | ||||
|  | ||||
| 	// val2 := br0.peekTopBits(peekBits) | ||||
| 	MOVQ R11, R13 | ||||
| 	MOVQ DI, CX | ||||
| 	SHRQ CL, R13 | ||||
|  | ||||
| 	// v2 := table[val0&mask] | ||||
| 	MOVW (R9)(R13*2), CX | ||||
|  | ||||
| 	// br0.advance(uint8(v2.entry) | ||||
| 	MOVB CH, AH | ||||
| 	SHLQ CL, R11 | ||||
| 	ADDB CL, R12 | ||||
|  | ||||
| 	// val3 := br0.peekTopBits(peekBits) | ||||
| 	MOVQ R11, R13 | ||||
| 	MOVQ DI, CX | ||||
| 	SHRQ CL, R13 | ||||
|  | ||||
| 	// v3 := table[val0&mask] | ||||
| 	MOVW (R9)(R13*2), CX | ||||
|  | ||||
| 	// br0.advance(uint8(v3.entry) | ||||
| 	MOVB   CH, AL | ||||
| 	SHLQ   CL, R11 | ||||
| 	ADDB   CL, R12 | ||||
| 	BSWAPL AX | ||||
|  | ||||
| 	// these four writes get coalesced | ||||
| 	// out[id * dstEvery + 0] = uint8(v0.entry >> 8) | ||||
| 	// out[id * dstEvery + 1] = uint8(v1.entry >> 8) | ||||
| 	// out[id * dstEvery + 3] = uint8(v2.entry >> 8) | ||||
| 	// out[id * dstEvery + 4] = uint8(v3.entry >> 8) | ||||
| 	MOVL AX, (BX) | ||||
|  | ||||
| 	// update the bitreader structure | ||||
| 	MOVQ R11, 32(R10) | ||||
| 	MOVB R12, 40(R10) | ||||
|  | ||||
| 	// br1.fillFast32() | ||||
| 	MOVQ    80(R10), R11 | ||||
| 	MOVBQZX 88(R10), R12 | ||||
| 	CMPQ    R12, $0x20 | ||||
| 	JBE     skip_fill1 | ||||
| 	MOVQ    72(R10), R13 | ||||
| 	SUBQ    $0x20, R12 | ||||
| 	SUBQ    $0x04, R13 | ||||
| 	MOVQ    48(R10), R14 | ||||
|  | ||||
| 	// b.value |= uint64(low) << (b.bitsRead & 63) | ||||
| 	MOVL (R13)(R14*1), R14 | ||||
| 	MOVQ R12, CX | ||||
| 	SHLQ CL, R14 | ||||
| 	MOVQ R13, 72(R10) | ||||
| 	ORQ  R14, R11 | ||||
|  | ||||
| 	// exhausted += (br1.off < 4) | ||||
| 	CMPQ R13, $0x04 | ||||
| 	ADCB $+0, DL | ||||
|  | ||||
| skip_fill1: | ||||
| 	// val0 := br1.peekTopBits(peekBits) | ||||
| 	MOVQ R11, R13 | ||||
| 	MOVQ DI, CX | ||||
| 	SHRQ CL, R13 | ||||
|  | ||||
| 	// v0 := table[val0&mask] | ||||
| 	MOVW (R9)(R13*2), CX | ||||
|  | ||||
| 	// br1.advance(uint8(v0.entry) | ||||
| 	MOVB CH, AL | ||||
| 	SHLQ CL, R11 | ||||
| 	ADDB CL, R12 | ||||
|  | ||||
| 	// val1 := br1.peekTopBits(peekBits) | ||||
| 	MOVQ R11, R13 | ||||
| 	MOVQ DI, CX | ||||
| 	SHRQ CL, R13 | ||||
|  | ||||
| 	// v1 := table[val0&mask] | ||||
| 	MOVW (R9)(R13*2), CX | ||||
|  | ||||
| 	// br1.advance(uint8(v1.entry) | ||||
| 	MOVB   CH, AH | ||||
| 	SHLQ   CL, R11 | ||||
| 	ADDB   CL, R12 | ||||
| 	BSWAPL AX | ||||
|  | ||||
| 	// val2 := br1.peekTopBits(peekBits) | ||||
| 	MOVQ R11, R13 | ||||
| 	MOVQ DI, CX | ||||
| 	SHRQ CL, R13 | ||||
|  | ||||
| 	// v2 := table[val0&mask] | ||||
| 	MOVW (R9)(R13*2), CX | ||||
|  | ||||
| 	// br1.advance(uint8(v2.entry) | ||||
| 	MOVB CH, AH | ||||
| 	SHLQ CL, R11 | ||||
| 	ADDB CL, R12 | ||||
|  | ||||
| 	// val3 := br1.peekTopBits(peekBits) | ||||
| 	MOVQ R11, R13 | ||||
| 	MOVQ DI, CX | ||||
| 	SHRQ CL, R13 | ||||
|  | ||||
| 	// v3 := table[val0&mask] | ||||
| 	MOVW (R9)(R13*2), CX | ||||
|  | ||||
| 	// br1.advance(uint8(v3.entry) | ||||
| 	MOVB   CH, AL | ||||
| 	SHLQ   CL, R11 | ||||
| 	ADDB   CL, R12 | ||||
| 	BSWAPL AX | ||||
|  | ||||
| 	// these four writes get coalesced | ||||
| 	// out[id * dstEvery + 0] = uint8(v0.entry >> 8) | ||||
| 	// out[id * dstEvery + 1] = uint8(v1.entry >> 8) | ||||
| 	// out[id * dstEvery + 3] = uint8(v2.entry >> 8) | ||||
| 	// out[id * dstEvery + 4] = uint8(v3.entry >> 8) | ||||
| 	MOVL AX, (BX)(R8*1) | ||||
|  | ||||
| 	// update the bitreader structure | ||||
| 	MOVQ R11, 80(R10) | ||||
| 	MOVB R12, 88(R10) | ||||
|  | ||||
| 	// br2.fillFast32() | ||||
| 	MOVQ    128(R10), R11 | ||||
| 	MOVBQZX 136(R10), R12 | ||||
| 	CMPQ    R12, $0x20 | ||||
| 	JBE     skip_fill2 | ||||
| 	MOVQ    120(R10), R13 | ||||
| 	SUBQ    $0x20, R12 | ||||
| 	SUBQ    $0x04, R13 | ||||
| 	MOVQ    96(R10), R14 | ||||
|  | ||||
| 	// b.value |= uint64(low) << (b.bitsRead & 63) | ||||
| 	MOVL (R13)(R14*1), R14 | ||||
| 	MOVQ R12, CX | ||||
| 	SHLQ CL, R14 | ||||
| 	MOVQ R13, 120(R10) | ||||
| 	ORQ  R14, R11 | ||||
|  | ||||
| 	// exhausted += (br2.off < 4) | ||||
| 	CMPQ R13, $0x04 | ||||
| 	ADCB $+0, DL | ||||
|  | ||||
| skip_fill2: | ||||
| 	// val0 := br2.peekTopBits(peekBits) | ||||
| 	MOVQ R11, R13 | ||||
| 	MOVQ DI, CX | ||||
| 	SHRQ CL, R13 | ||||
|  | ||||
| 	// v0 := table[val0&mask] | ||||
| 	MOVW (R9)(R13*2), CX | ||||
|  | ||||
| 	// br2.advance(uint8(v0.entry) | ||||
| 	MOVB CH, AL | ||||
| 	SHLQ CL, R11 | ||||
| 	ADDB CL, R12 | ||||
|  | ||||
| 	// val1 := br2.peekTopBits(peekBits) | ||||
| 	MOVQ R11, R13 | ||||
| 	MOVQ DI, CX | ||||
| 	SHRQ CL, R13 | ||||
|  | ||||
| 	// v1 := table[val0&mask] | ||||
| 	MOVW (R9)(R13*2), CX | ||||
|  | ||||
| 	// br2.advance(uint8(v1.entry) | ||||
| 	MOVB   CH, AH | ||||
| 	SHLQ   CL, R11 | ||||
| 	ADDB   CL, R12 | ||||
| 	BSWAPL AX | ||||
|  | ||||
| 	// val2 := br2.peekTopBits(peekBits) | ||||
| 	MOVQ R11, R13 | ||||
| 	MOVQ DI, CX | ||||
| 	SHRQ CL, R13 | ||||
|  | ||||
| 	// v2 := table[val0&mask] | ||||
| 	MOVW (R9)(R13*2), CX | ||||
|  | ||||
| 	// br2.advance(uint8(v2.entry) | ||||
| 	MOVB CH, AH | ||||
| 	SHLQ CL, R11 | ||||
| 	ADDB CL, R12 | ||||
|  | ||||
| 	// val3 := br2.peekTopBits(peekBits) | ||||
| 	MOVQ R11, R13 | ||||
| 	MOVQ DI, CX | ||||
| 	SHRQ CL, R13 | ||||
|  | ||||
| 	// v3 := table[val0&mask] | ||||
| 	MOVW (R9)(R13*2), CX | ||||
|  | ||||
| 	// br2.advance(uint8(v3.entry) | ||||
| 	MOVB   CH, AL | ||||
| 	SHLQ   CL, R11 | ||||
| 	ADDB   CL, R12 | ||||
| 	BSWAPL AX | ||||
|  | ||||
| 	// these four writes get coalesced | ||||
| 	// out[id * dstEvery + 0] = uint8(v0.entry >> 8) | ||||
| 	// out[id * dstEvery + 1] = uint8(v1.entry >> 8) | ||||
| 	// out[id * dstEvery + 3] = uint8(v2.entry >> 8) | ||||
| 	// out[id * dstEvery + 4] = uint8(v3.entry >> 8) | ||||
| 	MOVL AX, (BX)(R8*2) | ||||
|  | ||||
| 	// update the bitreader structure | ||||
| 	MOVQ R11, 128(R10) | ||||
| 	MOVB R12, 136(R10) | ||||
|  | ||||
| 	// br3.fillFast32() | ||||
| 	MOVQ    176(R10), R11 | ||||
| 	MOVBQZX 184(R10), R12 | ||||
| 	CMPQ    R12, $0x20 | ||||
| 	JBE     skip_fill3 | ||||
| 	MOVQ    168(R10), R13 | ||||
| 	SUBQ    $0x20, R12 | ||||
| 	SUBQ    $0x04, R13 | ||||
| 	MOVQ    144(R10), R14 | ||||
|  | ||||
| 	// b.value |= uint64(low) << (b.bitsRead & 63) | ||||
| 	MOVL (R13)(R14*1), R14 | ||||
| 	MOVQ R12, CX | ||||
| 	SHLQ CL, R14 | ||||
| 	MOVQ R13, 168(R10) | ||||
| 	ORQ  R14, R11 | ||||
|  | ||||
| 	// exhausted += (br3.off < 4) | ||||
| 	CMPQ R13, $0x04 | ||||
| 	ADCB $+0, DL | ||||
|  | ||||
| skip_fill3: | ||||
| 	// val0 := br3.peekTopBits(peekBits) | ||||
| 	MOVQ R11, R13 | ||||
| 	MOVQ DI, CX | ||||
| 	SHRQ CL, R13 | ||||
|  | ||||
| 	// v0 := table[val0&mask] | ||||
| 	MOVW (R9)(R13*2), CX | ||||
|  | ||||
| 	// br3.advance(uint8(v0.entry) | ||||
| 	MOVB CH, AL | ||||
| 	SHLQ CL, R11 | ||||
| 	ADDB CL, R12 | ||||
|  | ||||
| 	// val1 := br3.peekTopBits(peekBits) | ||||
| 	MOVQ R11, R13 | ||||
| 	MOVQ DI, CX | ||||
| 	SHRQ CL, R13 | ||||
|  | ||||
| 	// v1 := table[val0&mask] | ||||
| 	MOVW (R9)(R13*2), CX | ||||
|  | ||||
| 	// br3.advance(uint8(v1.entry) | ||||
| 	MOVB   CH, AH | ||||
| 	SHLQ   CL, R11 | ||||
| 	ADDB   CL, R12 | ||||
| 	BSWAPL AX | ||||
|  | ||||
| 	// val2 := br3.peekTopBits(peekBits) | ||||
| 	MOVQ R11, R13 | ||||
| 	MOVQ DI, CX | ||||
| 	SHRQ CL, R13 | ||||
|  | ||||
| 	// v2 := table[val0&mask] | ||||
| 	MOVW (R9)(R13*2), CX | ||||
|  | ||||
| 	// br3.advance(uint8(v2.entry) | ||||
| 	MOVB CH, AH | ||||
| 	SHLQ CL, R11 | ||||
| 	ADDB CL, R12 | ||||
|  | ||||
| 	// val3 := br3.peekTopBits(peekBits) | ||||
| 	MOVQ R11, R13 | ||||
| 	MOVQ DI, CX | ||||
| 	SHRQ CL, R13 | ||||
|  | ||||
| 	// v3 := table[val0&mask] | ||||
| 	MOVW (R9)(R13*2), CX | ||||
|  | ||||
| 	// br3.advance(uint8(v3.entry) | ||||
| 	MOVB   CH, AL | ||||
| 	SHLQ   CL, R11 | ||||
| 	ADDB   CL, R12 | ||||
| 	BSWAPL AX | ||||
|  | ||||
| 	// these four writes get coalesced | ||||
| 	// out[id * dstEvery + 0] = uint8(v0.entry >> 8) | ||||
| 	// out[id * dstEvery + 1] = uint8(v1.entry >> 8) | ||||
| 	// out[id * dstEvery + 3] = uint8(v2.entry >> 8) | ||||
| 	// out[id * dstEvery + 4] = uint8(v3.entry >> 8) | ||||
| 	LEAQ (R8)(R8*2), CX | ||||
| 	MOVL AX, (BX)(CX*1) | ||||
|  | ||||
| 	// update the bitreader structure | ||||
| 	MOVQ  R11, 176(R10) | ||||
| 	MOVB  R12, 184(R10) | ||||
| 	ADDQ  $0x04, BX | ||||
| 	TESTB DL, DL | ||||
| 	JZ    main_loop | ||||
| 	MOVQ  ctx+0(FP), AX | ||||
| 	SUBQ  16(AX), BX | ||||
| 	SHLQ  $0x02, BX | ||||
| 	MOVQ  BX, 40(AX) | ||||
| 	RET | ||||
|  | ||||
| // func decompress1x_main_loop_amd64(ctx *decompress1xContext) | ||||
| TEXT ·decompress1x_main_loop_amd64(SB), $0-8 | ||||
| 	MOVQ    ctx+0(FP), CX | ||||
| 	MOVQ    16(CX), DX | ||||
| 	MOVQ    24(CX), BX | ||||
| 	CMPQ    BX, $0x04 | ||||
| 	JB      error_max_decoded_size_exceeded | ||||
| 	LEAQ    (DX)(BX*1), BX | ||||
| 	MOVQ    (CX), SI | ||||
| 	MOVQ    (SI), R8 | ||||
| 	MOVQ    24(SI), R9 | ||||
| 	MOVQ    32(SI), R10 | ||||
| 	MOVBQZX 40(SI), R11 | ||||
| 	MOVQ    32(CX), SI | ||||
| 	MOVBQZX 8(CX), DI | ||||
| 	JMP     loop_condition | ||||
|  | ||||
| main_loop: | ||||
| 	// Check if we have room for 4 bytes in the output buffer | ||||
| 	LEAQ 4(DX), CX | ||||
| 	CMPQ CX, BX | ||||
| 	JGE  error_max_decoded_size_exceeded | ||||
|  | ||||
| 	// Decode 4 values | ||||
| 	CMPQ R11, $0x20 | ||||
| 	JL   bitReader_fillFast_1_end | ||||
| 	SUBQ $0x20, R11 | ||||
| 	SUBQ $0x04, R9 | ||||
| 	MOVL (R8)(R9*1), R12 | ||||
| 	MOVQ R11, CX | ||||
| 	SHLQ CL, R12 | ||||
| 	ORQ  R12, R10 | ||||
|  | ||||
| bitReader_fillFast_1_end: | ||||
| 	MOVQ    DI, CX | ||||
| 	MOVQ    R10, R12 | ||||
| 	SHRQ    CL, R12 | ||||
| 	MOVW    (SI)(R12*2), CX | ||||
| 	MOVB    CH, AL | ||||
| 	MOVBQZX CL, CX | ||||
| 	ADDQ    CX, R11 | ||||
| 	SHLQ    CL, R10 | ||||
| 	MOVQ    DI, CX | ||||
| 	MOVQ    R10, R12 | ||||
| 	SHRQ    CL, R12 | ||||
| 	MOVW    (SI)(R12*2), CX | ||||
| 	MOVB    CH, AH | ||||
| 	MOVBQZX CL, CX | ||||
| 	ADDQ    CX, R11 | ||||
| 	SHLQ    CL, R10 | ||||
| 	BSWAPL  AX | ||||
| 	CMPQ    R11, $0x20 | ||||
| 	JL      bitReader_fillFast_2_end | ||||
| 	SUBQ    $0x20, R11 | ||||
| 	SUBQ    $0x04, R9 | ||||
| 	MOVL    (R8)(R9*1), R12 | ||||
| 	MOVQ    R11, CX | ||||
| 	SHLQ    CL, R12 | ||||
| 	ORQ     R12, R10 | ||||
|  | ||||
| bitReader_fillFast_2_end: | ||||
| 	MOVQ    DI, CX | ||||
| 	MOVQ    R10, R12 | ||||
| 	SHRQ    CL, R12 | ||||
| 	MOVW    (SI)(R12*2), CX | ||||
| 	MOVB    CH, AH | ||||
| 	MOVBQZX CL, CX | ||||
| 	ADDQ    CX, R11 | ||||
| 	SHLQ    CL, R10 | ||||
| 	MOVQ    DI, CX | ||||
| 	MOVQ    R10, R12 | ||||
| 	SHRQ    CL, R12 | ||||
| 	MOVW    (SI)(R12*2), CX | ||||
| 	MOVB    CH, AL | ||||
| 	MOVBQZX CL, CX | ||||
| 	ADDQ    CX, R11 | ||||
| 	SHLQ    CL, R10 | ||||
| 	BSWAPL  AX | ||||
|  | ||||
| 	// Store the decoded values | ||||
| 	MOVL AX, (DX) | ||||
| 	ADDQ $0x04, DX | ||||
|  | ||||
| loop_condition: | ||||
| 	CMPQ R9, $0x08 | ||||
| 	JGE  main_loop | ||||
|  | ||||
| 	// Update ctx structure | ||||
| 	MOVQ ctx+0(FP), AX | ||||
| 	SUBQ 16(AX), DX | ||||
| 	MOVQ DX, 40(AX) | ||||
| 	MOVQ (AX), AX | ||||
| 	MOVQ R9, 24(AX) | ||||
| 	MOVQ R10, 32(AX) | ||||
| 	MOVB R11, 40(AX) | ||||
| 	RET | ||||
|  | ||||
| 	// Report error | ||||
| error_max_decoded_size_exceeded: | ||||
| 	MOVQ ctx+0(FP), AX | ||||
| 	MOVQ $-1, CX | ||||
| 	MOVQ CX, 40(AX) | ||||
| 	RET | ||||
|  | ||||
| // func decompress1x_main_loop_bmi2(ctx *decompress1xContext) | ||||
| // Requires: BMI2 | ||||
| TEXT ·decompress1x_main_loop_bmi2(SB), $0-8 | ||||
| 	MOVQ    ctx+0(FP), CX | ||||
| 	MOVQ    16(CX), DX | ||||
| 	MOVQ    24(CX), BX | ||||
| 	CMPQ    BX, $0x04 | ||||
| 	JB      error_max_decoded_size_exceeded | ||||
| 	LEAQ    (DX)(BX*1), BX | ||||
| 	MOVQ    (CX), SI | ||||
| 	MOVQ    (SI), R8 | ||||
| 	MOVQ    24(SI), R9 | ||||
| 	MOVQ    32(SI), R10 | ||||
| 	MOVBQZX 40(SI), R11 | ||||
| 	MOVQ    32(CX), SI | ||||
| 	MOVBQZX 8(CX), DI | ||||
| 	JMP     loop_condition | ||||
|  | ||||
| main_loop: | ||||
| 	// Check if we have room for 4 bytes in the output buffer | ||||
| 	LEAQ 4(DX), CX | ||||
| 	CMPQ CX, BX | ||||
| 	JGE  error_max_decoded_size_exceeded | ||||
|  | ||||
| 	// Decode 4 values | ||||
| 	CMPQ  R11, $0x20 | ||||
| 	JL    bitReader_fillFast_1_end | ||||
| 	SUBQ  $0x20, R11 | ||||
| 	SUBQ  $0x04, R9 | ||||
| 	MOVL  (R8)(R9*1), CX | ||||
| 	SHLXQ R11, CX, CX | ||||
| 	ORQ   CX, R10 | ||||
|  | ||||
| bitReader_fillFast_1_end: | ||||
| 	SHRXQ   DI, R10, CX | ||||
| 	MOVW    (SI)(CX*2), CX | ||||
| 	MOVB    CH, AL | ||||
| 	MOVBQZX CL, CX | ||||
| 	ADDQ    CX, R11 | ||||
| 	SHLXQ   CX, R10, R10 | ||||
| 	SHRXQ   DI, R10, CX | ||||
| 	MOVW    (SI)(CX*2), CX | ||||
| 	MOVB    CH, AH | ||||
| 	MOVBQZX CL, CX | ||||
| 	ADDQ    CX, R11 | ||||
| 	SHLXQ   CX, R10, R10 | ||||
| 	BSWAPL  AX | ||||
| 	CMPQ    R11, $0x20 | ||||
| 	JL      bitReader_fillFast_2_end | ||||
| 	SUBQ    $0x20, R11 | ||||
| 	SUBQ    $0x04, R9 | ||||
| 	MOVL    (R8)(R9*1), CX | ||||
| 	SHLXQ   R11, CX, CX | ||||
| 	ORQ     CX, R10 | ||||
|  | ||||
| bitReader_fillFast_2_end: | ||||
| 	SHRXQ   DI, R10, CX | ||||
| 	MOVW    (SI)(CX*2), CX | ||||
| 	MOVB    CH, AH | ||||
| 	MOVBQZX CL, CX | ||||
| 	ADDQ    CX, R11 | ||||
| 	SHLXQ   CX, R10, R10 | ||||
| 	SHRXQ   DI, R10, CX | ||||
| 	MOVW    (SI)(CX*2), CX | ||||
| 	MOVB    CH, AL | ||||
| 	MOVBQZX CL, CX | ||||
| 	ADDQ    CX, R11 | ||||
| 	SHLXQ   CX, R10, R10 | ||||
| 	BSWAPL  AX | ||||
|  | ||||
| 	// Store the decoded values | ||||
| 	MOVL AX, (DX) | ||||
| 	ADDQ $0x04, DX | ||||
|  | ||||
| loop_condition: | ||||
| 	CMPQ R9, $0x08 | ||||
| 	JGE  main_loop | ||||
|  | ||||
| 	// Update ctx structure | ||||
| 	MOVQ ctx+0(FP), AX | ||||
| 	SUBQ 16(AX), DX | ||||
| 	MOVQ DX, 40(AX) | ||||
| 	MOVQ (AX), AX | ||||
| 	MOVQ R9, 24(AX) | ||||
| 	MOVQ R10, 32(AX) | ||||
| 	MOVB R11, 40(AX) | ||||
| 	RET | ||||
|  | ||||
| 	// Report error | ||||
| error_max_decoded_size_exceeded: | ||||
| 	MOVQ ctx+0(FP), AX | ||||
| 	MOVQ $-1, CX | ||||
| 	MOVQ CX, 40(AX) | ||||
| 	RET | ||||
							
								
								
									
										299
									
								
								vendor/github.com/klauspost/compress/huff0/decompress_generic.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										299
									
								
								vendor/github.com/klauspost/compress/huff0/decompress_generic.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,299 +0,0 @@ | ||||
| //go:build !amd64 || appengine || !gc || noasm | ||||
| // +build !amd64 appengine !gc noasm | ||||
|  | ||||
| // This file contains a generic implementation of Decoder.Decompress4X. | ||||
| package huff0 | ||||
|  | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| ) | ||||
|  | ||||
| // Decompress4X will decompress a 4X encoded stream. | ||||
| // The length of the supplied input must match the end of a block exactly. | ||||
| // The *capacity* of the dst slice must match the destination size of | ||||
| // the uncompressed data exactly. | ||||
| func (d *Decoder) Decompress4X(dst, src []byte) ([]byte, error) { | ||||
| 	if len(d.dt.single) == 0 { | ||||
| 		return nil, errors.New("no table loaded") | ||||
| 	} | ||||
| 	if len(src) < 6+(4*1) { | ||||
| 		return nil, errors.New("input too small") | ||||
| 	} | ||||
| 	if use8BitTables && d.actualTableLog <= 8 { | ||||
| 		return d.decompress4X8bit(dst, src) | ||||
| 	} | ||||
|  | ||||
| 	var br [4]bitReaderShifted | ||||
| 	// Decode "jump table" | ||||
| 	start := 6 | ||||
| 	for i := 0; i < 3; i++ { | ||||
| 		length := int(src[i*2]) | (int(src[i*2+1]) << 8) | ||||
| 		if start+length >= len(src) { | ||||
| 			return nil, errors.New("truncated input (or invalid offset)") | ||||
| 		} | ||||
| 		err := br[i].init(src[start : start+length]) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 		start += length | ||||
| 	} | ||||
| 	err := br[3].init(src[start:]) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	// destination, offset to match first output | ||||
| 	dstSize := cap(dst) | ||||
| 	dst = dst[:dstSize] | ||||
| 	out := dst | ||||
| 	dstEvery := (dstSize + 3) / 4 | ||||
|  | ||||
| 	const tlSize = 1 << tableLogMax | ||||
| 	const tlMask = tlSize - 1 | ||||
| 	single := d.dt.single[:tlSize] | ||||
|  | ||||
| 	// Use temp table to avoid bound checks/append penalty. | ||||
| 	buf := d.buffer() | ||||
| 	var off uint8 | ||||
| 	var decoded int | ||||
|  | ||||
| 	// Decode 2 values from each decoder/loop. | ||||
| 	const bufoff = 256 | ||||
| 	for { | ||||
| 		if br[0].off < 4 || br[1].off < 4 || br[2].off < 4 || br[3].off < 4 { | ||||
| 			break | ||||
| 		} | ||||
|  | ||||
| 		{ | ||||
| 			const stream = 0 | ||||
| 			const stream2 = 1 | ||||
| 			br[stream].fillFast() | ||||
| 			br[stream2].fillFast() | ||||
|  | ||||
| 			val := br[stream].peekBitsFast(d.actualTableLog) | ||||
| 			val2 := br[stream2].peekBitsFast(d.actualTableLog) | ||||
| 			v := single[val&tlMask] | ||||
| 			v2 := single[val2&tlMask] | ||||
| 			br[stream].advance(uint8(v.entry)) | ||||
| 			br[stream2].advance(uint8(v2.entry)) | ||||
| 			buf[stream][off] = uint8(v.entry >> 8) | ||||
| 			buf[stream2][off] = uint8(v2.entry >> 8) | ||||
|  | ||||
| 			val = br[stream].peekBitsFast(d.actualTableLog) | ||||
| 			val2 = br[stream2].peekBitsFast(d.actualTableLog) | ||||
| 			v = single[val&tlMask] | ||||
| 			v2 = single[val2&tlMask] | ||||
| 			br[stream].advance(uint8(v.entry)) | ||||
| 			br[stream2].advance(uint8(v2.entry)) | ||||
| 			buf[stream][off+1] = uint8(v.entry >> 8) | ||||
| 			buf[stream2][off+1] = uint8(v2.entry >> 8) | ||||
| 		} | ||||
|  | ||||
| 		{ | ||||
| 			const stream = 2 | ||||
| 			const stream2 = 3 | ||||
| 			br[stream].fillFast() | ||||
| 			br[stream2].fillFast() | ||||
|  | ||||
| 			val := br[stream].peekBitsFast(d.actualTableLog) | ||||
| 			val2 := br[stream2].peekBitsFast(d.actualTableLog) | ||||
| 			v := single[val&tlMask] | ||||
| 			v2 := single[val2&tlMask] | ||||
| 			br[stream].advance(uint8(v.entry)) | ||||
| 			br[stream2].advance(uint8(v2.entry)) | ||||
| 			buf[stream][off] = uint8(v.entry >> 8) | ||||
| 			buf[stream2][off] = uint8(v2.entry >> 8) | ||||
|  | ||||
| 			val = br[stream].peekBitsFast(d.actualTableLog) | ||||
| 			val2 = br[stream2].peekBitsFast(d.actualTableLog) | ||||
| 			v = single[val&tlMask] | ||||
| 			v2 = single[val2&tlMask] | ||||
| 			br[stream].advance(uint8(v.entry)) | ||||
| 			br[stream2].advance(uint8(v2.entry)) | ||||
| 			buf[stream][off+1] = uint8(v.entry >> 8) | ||||
| 			buf[stream2][off+1] = uint8(v2.entry >> 8) | ||||
| 		} | ||||
|  | ||||
| 		off += 2 | ||||
|  | ||||
| 		if off == 0 { | ||||
| 			if bufoff > dstEvery { | ||||
| 				d.bufs.Put(buf) | ||||
| 				return nil, errors.New("corruption detected: stream overrun 1") | ||||
| 			} | ||||
| 			// There must at least be 3 buffers left. | ||||
| 			if len(out)-bufoff < dstEvery*3 { | ||||
| 				d.bufs.Put(buf) | ||||
| 				return nil, errors.New("corruption detected: stream overrun 2") | ||||
| 			} | ||||
| 			//copy(out, buf[0][:]) | ||||
| 			//copy(out[dstEvery:], buf[1][:]) | ||||
| 			//copy(out[dstEvery*2:], buf[2][:]) | ||||
| 			//copy(out[dstEvery*3:], buf[3][:]) | ||||
| 			*(*[bufoff]byte)(out) = buf[0] | ||||
| 			*(*[bufoff]byte)(out[dstEvery:]) = buf[1] | ||||
| 			*(*[bufoff]byte)(out[dstEvery*2:]) = buf[2] | ||||
| 			*(*[bufoff]byte)(out[dstEvery*3:]) = buf[3] | ||||
| 			out = out[bufoff:] | ||||
| 			decoded += bufoff * 4 | ||||
| 		} | ||||
| 	} | ||||
| 	if off > 0 { | ||||
| 		ioff := int(off) | ||||
| 		if len(out) < dstEvery*3+ioff { | ||||
| 			d.bufs.Put(buf) | ||||
| 			return nil, errors.New("corruption detected: stream overrun 3") | ||||
| 		} | ||||
| 		copy(out, buf[0][:off]) | ||||
| 		copy(out[dstEvery:], buf[1][:off]) | ||||
| 		copy(out[dstEvery*2:], buf[2][:off]) | ||||
| 		copy(out[dstEvery*3:], buf[3][:off]) | ||||
| 		decoded += int(off) * 4 | ||||
| 		out = out[off:] | ||||
| 	} | ||||
|  | ||||
| 	// Decode remaining. | ||||
| 	remainBytes := dstEvery - (decoded / 4) | ||||
| 	for i := range br { | ||||
| 		offset := dstEvery * i | ||||
| 		endsAt := offset + remainBytes | ||||
| 		if endsAt > len(out) { | ||||
| 			endsAt = len(out) | ||||
| 		} | ||||
| 		br := &br[i] | ||||
| 		bitsLeft := br.remaining() | ||||
| 		for bitsLeft > 0 { | ||||
| 			br.fill() | ||||
| 			if offset >= endsAt { | ||||
| 				d.bufs.Put(buf) | ||||
| 				return nil, errors.New("corruption detected: stream overrun 4") | ||||
| 			} | ||||
|  | ||||
| 			// Read value and increment offset. | ||||
| 			val := br.peekBitsFast(d.actualTableLog) | ||||
| 			v := single[val&tlMask].entry | ||||
| 			nBits := uint8(v) | ||||
| 			br.advance(nBits) | ||||
| 			bitsLeft -= uint(nBits) | ||||
| 			out[offset] = uint8(v >> 8) | ||||
| 			offset++ | ||||
| 		} | ||||
| 		if offset != endsAt { | ||||
| 			d.bufs.Put(buf) | ||||
| 			return nil, fmt.Errorf("corruption detected: short output block %d, end %d != %d", i, offset, endsAt) | ||||
| 		} | ||||
| 		decoded += offset - dstEvery*i | ||||
| 		err = br.close() | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 	} | ||||
| 	d.bufs.Put(buf) | ||||
| 	if dstSize != decoded { | ||||
| 		return nil, errors.New("corruption detected: short output block") | ||||
| 	} | ||||
| 	return dst, nil | ||||
| } | ||||
|  | ||||
| // Decompress1X will decompress a 1X encoded stream. | ||||
| // The cap of the output buffer will be the maximum decompressed size. | ||||
| // The length of the supplied input must match the end of a block exactly. | ||||
| func (d *Decoder) Decompress1X(dst, src []byte) ([]byte, error) { | ||||
| 	if len(d.dt.single) == 0 { | ||||
| 		return nil, errors.New("no table loaded") | ||||
| 	} | ||||
| 	if use8BitTables && d.actualTableLog <= 8 { | ||||
| 		return d.decompress1X8Bit(dst, src) | ||||
| 	} | ||||
| 	var br bitReaderShifted | ||||
| 	err := br.init(src) | ||||
| 	if err != nil { | ||||
| 		return dst, err | ||||
| 	} | ||||
| 	maxDecodedSize := cap(dst) | ||||
| 	dst = dst[:0] | ||||
|  | ||||
| 	// Avoid bounds check by always having full sized table. | ||||
| 	const tlSize = 1 << tableLogMax | ||||
| 	const tlMask = tlSize - 1 | ||||
| 	dt := d.dt.single[:tlSize] | ||||
|  | ||||
| 	// Use temp table to avoid bound checks/append penalty. | ||||
| 	bufs := d.buffer() | ||||
| 	buf := &bufs[0] | ||||
| 	var off uint8 | ||||
|  | ||||
| 	for br.off >= 8 { | ||||
| 		br.fillFast() | ||||
| 		v := dt[br.peekBitsFast(d.actualTableLog)&tlMask] | ||||
| 		br.advance(uint8(v.entry)) | ||||
| 		buf[off+0] = uint8(v.entry >> 8) | ||||
|  | ||||
| 		v = dt[br.peekBitsFast(d.actualTableLog)&tlMask] | ||||
| 		br.advance(uint8(v.entry)) | ||||
| 		buf[off+1] = uint8(v.entry >> 8) | ||||
|  | ||||
| 		// Refill | ||||
| 		br.fillFast() | ||||
|  | ||||
| 		v = dt[br.peekBitsFast(d.actualTableLog)&tlMask] | ||||
| 		br.advance(uint8(v.entry)) | ||||
| 		buf[off+2] = uint8(v.entry >> 8) | ||||
|  | ||||
| 		v = dt[br.peekBitsFast(d.actualTableLog)&tlMask] | ||||
| 		br.advance(uint8(v.entry)) | ||||
| 		buf[off+3] = uint8(v.entry >> 8) | ||||
|  | ||||
| 		off += 4 | ||||
| 		if off == 0 { | ||||
| 			if len(dst)+256 > maxDecodedSize { | ||||
| 				br.close() | ||||
| 				d.bufs.Put(bufs) | ||||
| 				return nil, ErrMaxDecodedSizeExceeded | ||||
| 			} | ||||
| 			dst = append(dst, buf[:]...) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if len(dst)+int(off) > maxDecodedSize { | ||||
| 		d.bufs.Put(bufs) | ||||
| 		br.close() | ||||
| 		return nil, ErrMaxDecodedSizeExceeded | ||||
| 	} | ||||
| 	dst = append(dst, buf[:off]...) | ||||
|  | ||||
| 	// br < 8, so uint8 is fine | ||||
| 	bitsLeft := uint8(br.off)*8 + 64 - br.bitsRead | ||||
| 	for bitsLeft > 0 { | ||||
| 		br.fill() | ||||
| 		if false && br.bitsRead >= 32 { | ||||
| 			if br.off >= 4 { | ||||
| 				v := br.in[br.off-4:] | ||||
| 				v = v[:4] | ||||
| 				low := (uint32(v[0])) | (uint32(v[1]) << 8) | (uint32(v[2]) << 16) | (uint32(v[3]) << 24) | ||||
| 				br.value = (br.value << 32) | uint64(low) | ||||
| 				br.bitsRead -= 32 | ||||
| 				br.off -= 4 | ||||
| 			} else { | ||||
| 				for br.off > 0 { | ||||
| 					br.value = (br.value << 8) | uint64(br.in[br.off-1]) | ||||
| 					br.bitsRead -= 8 | ||||
| 					br.off-- | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		if len(dst) >= maxDecodedSize { | ||||
| 			d.bufs.Put(bufs) | ||||
| 			br.close() | ||||
| 			return nil, ErrMaxDecodedSizeExceeded | ||||
| 		} | ||||
| 		v := d.dt.single[br.peekBitsFast(d.actualTableLog)&tlMask] | ||||
| 		nBits := uint8(v.entry) | ||||
| 		br.advance(nBits) | ||||
| 		bitsLeft -= nBits | ||||
| 		dst = append(dst, uint8(v.entry>>8)) | ||||
| 	} | ||||
| 	d.bufs.Put(bufs) | ||||
| 	return dst, br.close() | ||||
| } | ||||
							
								
								
									
										337
									
								
								vendor/github.com/klauspost/compress/huff0/huff0.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										337
									
								
								vendor/github.com/klauspost/compress/huff0/huff0.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,337 +0,0 @@ | ||||
| // Package huff0 provides fast huffman encoding as used in zstd. | ||||
| // | ||||
| // See README.md at https://github.com/klauspost/compress/tree/master/huff0 for details. | ||||
| package huff0 | ||||
|  | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"math" | ||||
| 	"math/bits" | ||||
| 	"sync" | ||||
|  | ||||
| 	"github.com/klauspost/compress/fse" | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| 	maxSymbolValue = 255 | ||||
|  | ||||
| 	// zstandard limits tablelog to 11, see: | ||||
| 	// https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#huffman-tree-description | ||||
| 	tableLogMax     = 11 | ||||
| 	tableLogDefault = 11 | ||||
| 	minTablelog     = 5 | ||||
| 	huffNodesLen    = 512 | ||||
|  | ||||
| 	// BlockSizeMax is maximum input size for a single block uncompressed. | ||||
| 	BlockSizeMax = 1<<18 - 1 | ||||
| ) | ||||
|  | ||||
| var ( | ||||
| 	// ErrIncompressible is returned when input is judged to be too hard to compress. | ||||
| 	ErrIncompressible = errors.New("input is not compressible") | ||||
|  | ||||
| 	// ErrUseRLE is returned from the compressor when the input is a single byte value repeated. | ||||
| 	ErrUseRLE = errors.New("input is single value repeated") | ||||
|  | ||||
| 	// ErrTooBig is return if input is too large for a single block. | ||||
| 	ErrTooBig = errors.New("input too big") | ||||
|  | ||||
| 	// ErrMaxDecodedSizeExceeded is return if input is too large for a single block. | ||||
| 	ErrMaxDecodedSizeExceeded = errors.New("maximum output size exceeded") | ||||
| ) | ||||
|  | ||||
| type ReusePolicy uint8 | ||||
|  | ||||
| const ( | ||||
| 	// ReusePolicyAllow will allow reuse if it produces smaller output. | ||||
| 	ReusePolicyAllow ReusePolicy = iota | ||||
|  | ||||
| 	// ReusePolicyPrefer will re-use aggressively if possible. | ||||
| 	// This will not check if a new table will produce smaller output, | ||||
| 	// except if the current table is impossible to use or | ||||
| 	// compressed output is bigger than input. | ||||
| 	ReusePolicyPrefer | ||||
|  | ||||
| 	// ReusePolicyNone will disable re-use of tables. | ||||
| 	// This is slightly faster than ReusePolicyAllow but may produce larger output. | ||||
| 	ReusePolicyNone | ||||
|  | ||||
| 	// ReusePolicyMust must allow reuse and produce smaller output. | ||||
| 	ReusePolicyMust | ||||
| ) | ||||
|  | ||||
| type Scratch struct { | ||||
| 	count [maxSymbolValue + 1]uint32 | ||||
|  | ||||
| 	// Per block parameters. | ||||
| 	// These can be used to override compression parameters of the block. | ||||
| 	// Do not touch, unless you know what you are doing. | ||||
|  | ||||
| 	// Out is output buffer. | ||||
| 	// If the scratch is re-used before the caller is done processing the output, | ||||
| 	// set this field to nil. | ||||
| 	// Otherwise the output buffer will be re-used for next Compression/Decompression step | ||||
| 	// and allocation will be avoided. | ||||
| 	Out []byte | ||||
|  | ||||
| 	// OutTable will contain the table data only, if a new table has been generated. | ||||
| 	// Slice of the returned data. | ||||
| 	OutTable []byte | ||||
|  | ||||
| 	// OutData will contain the compressed data. | ||||
| 	// Slice of the returned data. | ||||
| 	OutData []byte | ||||
|  | ||||
| 	// MaxDecodedSize will set the maximum allowed output size. | ||||
| 	// This value will automatically be set to BlockSizeMax if not set. | ||||
| 	// Decoders will return ErrMaxDecodedSizeExceeded is this limit is exceeded. | ||||
| 	MaxDecodedSize int | ||||
|  | ||||
| 	srcLen int | ||||
|  | ||||
| 	// MaxSymbolValue will override the maximum symbol value of the next block. | ||||
| 	MaxSymbolValue uint8 | ||||
|  | ||||
| 	// TableLog will attempt to override the tablelog for the next block. | ||||
| 	// Must be <= 11 and >= 5. | ||||
| 	TableLog uint8 | ||||
|  | ||||
| 	// Reuse will specify the reuse policy | ||||
| 	Reuse ReusePolicy | ||||
|  | ||||
| 	// WantLogLess allows to specify a log 2 reduction that should at least be achieved, | ||||
| 	// otherwise the block will be returned as incompressible. | ||||
| 	// The reduction should then at least be (input size >> WantLogLess) | ||||
| 	// If WantLogLess == 0 any improvement will do. | ||||
| 	WantLogLess uint8 | ||||
|  | ||||
| 	symbolLen      uint16 // Length of active part of the symbol table. | ||||
| 	maxCount       int    // count of the most probable symbol | ||||
| 	clearCount     bool   // clear count | ||||
| 	actualTableLog uint8  // Selected tablelog. | ||||
| 	prevTableLog   uint8  // Tablelog for previous table | ||||
| 	prevTable      cTable // Table used for previous compression. | ||||
| 	cTable         cTable // compression table | ||||
| 	dt             dTable // decompression table | ||||
| 	nodes          []nodeElt | ||||
| 	tmpOut         [4][]byte | ||||
| 	fse            *fse.Scratch | ||||
| 	decPool        sync.Pool // *[4][256]byte buffers. | ||||
| 	huffWeight     [maxSymbolValue + 1]byte | ||||
| } | ||||
|  | ||||
| // TransferCTable will transfer the previously used compression table. | ||||
| func (s *Scratch) TransferCTable(src *Scratch) { | ||||
| 	if cap(s.prevTable) < len(src.prevTable) { | ||||
| 		s.prevTable = make(cTable, 0, maxSymbolValue+1) | ||||
| 	} | ||||
| 	s.prevTable = s.prevTable[:len(src.prevTable)] | ||||
| 	copy(s.prevTable, src.prevTable) | ||||
| 	s.prevTableLog = src.prevTableLog | ||||
| } | ||||
|  | ||||
| func (s *Scratch) prepare(in []byte) (*Scratch, error) { | ||||
| 	if len(in) > BlockSizeMax { | ||||
| 		return nil, ErrTooBig | ||||
| 	} | ||||
| 	if s == nil { | ||||
| 		s = &Scratch{} | ||||
| 	} | ||||
| 	if s.MaxSymbolValue == 0 { | ||||
| 		s.MaxSymbolValue = maxSymbolValue | ||||
| 	} | ||||
| 	if s.TableLog == 0 { | ||||
| 		s.TableLog = tableLogDefault | ||||
| 	} | ||||
| 	if s.TableLog > tableLogMax || s.TableLog < minTablelog { | ||||
| 		return nil, fmt.Errorf(" invalid tableLog %d (%d -> %d)", s.TableLog, minTablelog, tableLogMax) | ||||
| 	} | ||||
| 	if s.MaxDecodedSize <= 0 || s.MaxDecodedSize > BlockSizeMax { | ||||
| 		s.MaxDecodedSize = BlockSizeMax | ||||
| 	} | ||||
| 	if s.clearCount && s.maxCount == 0 { | ||||
| 		for i := range s.count { | ||||
| 			s.count[i] = 0 | ||||
| 		} | ||||
| 		s.clearCount = false | ||||
| 	} | ||||
| 	if cap(s.Out) == 0 { | ||||
| 		s.Out = make([]byte, 0, len(in)) | ||||
| 	} | ||||
| 	s.Out = s.Out[:0] | ||||
|  | ||||
| 	s.OutTable = nil | ||||
| 	s.OutData = nil | ||||
| 	if cap(s.nodes) < huffNodesLen+1 { | ||||
| 		s.nodes = make([]nodeElt, 0, huffNodesLen+1) | ||||
| 	} | ||||
| 	s.nodes = s.nodes[:0] | ||||
| 	if s.fse == nil { | ||||
| 		s.fse = &fse.Scratch{} | ||||
| 	} | ||||
| 	s.srcLen = len(in) | ||||
|  | ||||
| 	return s, nil | ||||
| } | ||||
|  | ||||
| type cTable []cTableEntry | ||||
|  | ||||
| func (c cTable) write(s *Scratch) error { | ||||
| 	var ( | ||||
| 		// precomputed conversion table | ||||
| 		bitsToWeight [tableLogMax + 1]byte | ||||
| 		huffLog      = s.actualTableLog | ||||
| 		// last weight is not saved. | ||||
| 		maxSymbolValue = uint8(s.symbolLen - 1) | ||||
| 		huffWeight     = s.huffWeight[:256] | ||||
| 	) | ||||
| 	const ( | ||||
| 		maxFSETableLog = 6 | ||||
| 	) | ||||
| 	// convert to weight | ||||
| 	bitsToWeight[0] = 0 | ||||
| 	for n := uint8(1); n < huffLog+1; n++ { | ||||
| 		bitsToWeight[n] = huffLog + 1 - n | ||||
| 	} | ||||
|  | ||||
| 	// Acquire histogram for FSE. | ||||
| 	hist := s.fse.Histogram() | ||||
| 	hist = hist[:256] | ||||
| 	for i := range hist[:16] { | ||||
| 		hist[i] = 0 | ||||
| 	} | ||||
| 	for n := uint8(0); n < maxSymbolValue; n++ { | ||||
| 		v := bitsToWeight[c[n].nBits] & 15 | ||||
| 		huffWeight[n] = v | ||||
| 		hist[v]++ | ||||
| 	} | ||||
|  | ||||
| 	// FSE compress if feasible. | ||||
| 	if maxSymbolValue >= 2 { | ||||
| 		huffMaxCnt := uint32(0) | ||||
| 		huffMax := uint8(0) | ||||
| 		for i, v := range hist[:16] { | ||||
| 			if v == 0 { | ||||
| 				continue | ||||
| 			} | ||||
| 			huffMax = byte(i) | ||||
| 			if v > huffMaxCnt { | ||||
| 				huffMaxCnt = v | ||||
| 			} | ||||
| 		} | ||||
| 		s.fse.HistogramFinished(huffMax, int(huffMaxCnt)) | ||||
| 		s.fse.TableLog = maxFSETableLog | ||||
| 		b, err := fse.Compress(huffWeight[:maxSymbolValue], s.fse) | ||||
| 		if err == nil && len(b) < int(s.symbolLen>>1) { | ||||
| 			s.Out = append(s.Out, uint8(len(b))) | ||||
| 			s.Out = append(s.Out, b...) | ||||
| 			return nil | ||||
| 		} | ||||
| 		// Unable to compress (RLE/uncompressible) | ||||
| 	} | ||||
| 	// write raw values as 4-bits (max : 15) | ||||
| 	if maxSymbolValue > (256 - 128) { | ||||
| 		// should not happen : likely means source cannot be compressed | ||||
| 		return ErrIncompressible | ||||
| 	} | ||||
| 	op := s.Out | ||||
| 	// special case, pack weights 4 bits/weight. | ||||
| 	op = append(op, 128|(maxSymbolValue-1)) | ||||
| 	// be sure it doesn't cause msan issue in final combination | ||||
| 	huffWeight[maxSymbolValue] = 0 | ||||
| 	for n := uint16(0); n < uint16(maxSymbolValue); n += 2 { | ||||
| 		op = append(op, (huffWeight[n]<<4)|huffWeight[n+1]) | ||||
| 	} | ||||
| 	s.Out = op | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (c cTable) estTableSize(s *Scratch) (sz int, err error) { | ||||
| 	var ( | ||||
| 		// precomputed conversion table | ||||
| 		bitsToWeight [tableLogMax + 1]byte | ||||
| 		huffLog      = s.actualTableLog | ||||
| 		// last weight is not saved. | ||||
| 		maxSymbolValue = uint8(s.symbolLen - 1) | ||||
| 		huffWeight     = s.huffWeight[:256] | ||||
| 	) | ||||
| 	const ( | ||||
| 		maxFSETableLog = 6 | ||||
| 	) | ||||
| 	// convert to weight | ||||
| 	bitsToWeight[0] = 0 | ||||
| 	for n := uint8(1); n < huffLog+1; n++ { | ||||
| 		bitsToWeight[n] = huffLog + 1 - n | ||||
| 	} | ||||
|  | ||||
| 	// Acquire histogram for FSE. | ||||
| 	hist := s.fse.Histogram() | ||||
| 	hist = hist[:256] | ||||
| 	for i := range hist[:16] { | ||||
| 		hist[i] = 0 | ||||
| 	} | ||||
| 	for n := uint8(0); n < maxSymbolValue; n++ { | ||||
| 		v := bitsToWeight[c[n].nBits] & 15 | ||||
| 		huffWeight[n] = v | ||||
| 		hist[v]++ | ||||
| 	} | ||||
|  | ||||
| 	// FSE compress if feasible. | ||||
| 	if maxSymbolValue >= 2 { | ||||
| 		huffMaxCnt := uint32(0) | ||||
| 		huffMax := uint8(0) | ||||
| 		for i, v := range hist[:16] { | ||||
| 			if v == 0 { | ||||
| 				continue | ||||
| 			} | ||||
| 			huffMax = byte(i) | ||||
| 			if v > huffMaxCnt { | ||||
| 				huffMaxCnt = v | ||||
| 			} | ||||
| 		} | ||||
| 		s.fse.HistogramFinished(huffMax, int(huffMaxCnt)) | ||||
| 		s.fse.TableLog = maxFSETableLog | ||||
| 		b, err := fse.Compress(huffWeight[:maxSymbolValue], s.fse) | ||||
| 		if err == nil && len(b) < int(s.symbolLen>>1) { | ||||
| 			sz += 1 + len(b) | ||||
| 			return sz, nil | ||||
| 		} | ||||
| 		// Unable to compress (RLE/uncompressible) | ||||
| 	} | ||||
| 	// write raw values as 4-bits (max : 15) | ||||
| 	if maxSymbolValue > (256 - 128) { | ||||
| 		// should not happen : likely means source cannot be compressed | ||||
| 		return 0, ErrIncompressible | ||||
| 	} | ||||
| 	// special case, pack weights 4 bits/weight. | ||||
| 	sz += 1 + int(maxSymbolValue/2) | ||||
| 	return sz, nil | ||||
| } | ||||
|  | ||||
| // estimateSize returns the estimated size in bytes of the input represented in the | ||||
| // histogram supplied. | ||||
| func (c cTable) estimateSize(hist []uint32) int { | ||||
| 	nbBits := uint32(7) | ||||
| 	for i, v := range c[:len(hist)] { | ||||
| 		nbBits += uint32(v.nBits) * hist[i] | ||||
| 	} | ||||
| 	return int(nbBits >> 3) | ||||
| } | ||||
|  | ||||
| // minSize returns the minimum possible size considering the shannon limit. | ||||
| func (s *Scratch) minSize(total int) int { | ||||
| 	nbBits := float64(7) | ||||
| 	fTotal := float64(total) | ||||
| 	for _, v := range s.count[:s.symbolLen] { | ||||
| 		n := float64(v) | ||||
| 		if n > 0 { | ||||
| 			nbBits += math.Log2(fTotal/n) * n | ||||
| 		} | ||||
| 	} | ||||
| 	return int(nbBits) >> 3 | ||||
| } | ||||
|  | ||||
| func highBit32(val uint32) (n uint32) { | ||||
| 	return uint32(bits.Len32(val) - 1) | ||||
| } | ||||
							
								
								
									
										34
									
								
								vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										34
									
								
								vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,34 +0,0 @@ | ||||
| // Package cpuinfo gives runtime info about the current CPU. | ||||
| // | ||||
| // This is a very limited module meant for use internally | ||||
| // in this project. For more versatile solution check | ||||
| // https://github.com/klauspost/cpuid. | ||||
| package cpuinfo | ||||
|  | ||||
| // HasBMI1 checks whether an x86 CPU supports the BMI1 extension. | ||||
| func HasBMI1() bool { | ||||
| 	return hasBMI1 | ||||
| } | ||||
|  | ||||
| // HasBMI2 checks whether an x86 CPU supports the BMI2 extension. | ||||
| func HasBMI2() bool { | ||||
| 	return hasBMI2 | ||||
| } | ||||
|  | ||||
| // DisableBMI2 will disable BMI2, for testing purposes. | ||||
| // Call returned function to restore previous state. | ||||
| func DisableBMI2() func() { | ||||
| 	old := hasBMI2 | ||||
| 	hasBMI2 = false | ||||
| 	return func() { | ||||
| 		hasBMI2 = old | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // HasBMI checks whether an x86 CPU supports both BMI1 and BMI2 extensions. | ||||
| func HasBMI() bool { | ||||
| 	return HasBMI1() && HasBMI2() | ||||
| } | ||||
|  | ||||
| var hasBMI1 bool | ||||
| var hasBMI2 bool | ||||
							
								
								
									
										11
									
								
								vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,11 +0,0 @@ | ||||
| //go:build amd64 && !appengine && !noasm && gc | ||||
| // +build amd64,!appengine,!noasm,gc | ||||
|  | ||||
| package cpuinfo | ||||
|  | ||||
| // go:noescape | ||||
| func x86extensions() (bmi1, bmi2 bool) | ||||
|  | ||||
| func init() { | ||||
| 	hasBMI1, hasBMI2 = x86extensions() | ||||
| } | ||||
							
								
								
									
										36
									
								
								vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										36
									
								
								vendor/github.com/klauspost/compress/internal/cpuinfo/cpuinfo_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,36 +0,0 @@ | ||||
| // +build !appengine | ||||
| // +build gc | ||||
| // +build !noasm | ||||
|  | ||||
| #include "textflag.h" | ||||
| #include "funcdata.h" | ||||
| #include "go_asm.h" | ||||
|  | ||||
| TEXT ·x86extensions(SB), NOSPLIT, $0 | ||||
| 	// 1. determine max EAX value | ||||
| 	XORQ AX, AX | ||||
| 	CPUID | ||||
|  | ||||
| 	CMPQ AX, $7 | ||||
| 	JB   unsupported | ||||
|  | ||||
| 	// 2. EAX = 7, ECX = 0 --- see Table 3-8 "Information Returned by CPUID Instruction" | ||||
| 	MOVQ $7, AX | ||||
| 	MOVQ $0, CX | ||||
| 	CPUID | ||||
|  | ||||
| 	BTQ   $3, BX // bit 3 = BMI1 | ||||
| 	SETCS AL | ||||
|  | ||||
| 	BTQ   $8, BX // bit 8 = BMI2 | ||||
| 	SETCS AH | ||||
|  | ||||
| 	MOVB AL, bmi1+0(FP) | ||||
| 	MOVB AH, bmi2+1(FP) | ||||
| 	RET | ||||
|  | ||||
| unsupported: | ||||
| 	XORQ AX, AX | ||||
| 	MOVB AL, bmi1+0(FP) | ||||
| 	MOVB AL, bmi2+1(FP) | ||||
| 	RET | ||||
							
								
								
									
										27
									
								
								vendor/github.com/klauspost/compress/internal/snapref/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										27
									
								
								vendor/github.com/klauspost/compress/internal/snapref/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,27 +0,0 @@ | ||||
| Copyright (c) 2011 The Snappy-Go Authors. All rights reserved. | ||||
|  | ||||
| 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. | ||||
|    * Neither the name of Google Inc. nor the names of its | ||||
| contributors may be used to endorse or promote products derived from | ||||
| this software without specific prior written permission. | ||||
|  | ||||
| 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. | ||||
							
								
								
									
										264
									
								
								vendor/github.com/klauspost/compress/internal/snapref/decode.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										264
									
								
								vendor/github.com/klauspost/compress/internal/snapref/decode.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,264 +0,0 @@ | ||||
| // Copyright 2011 The Snappy-Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| package snapref | ||||
|  | ||||
| import ( | ||||
| 	"encoding/binary" | ||||
| 	"errors" | ||||
| 	"io" | ||||
| ) | ||||
|  | ||||
| var ( | ||||
| 	// ErrCorrupt reports that the input is invalid. | ||||
| 	ErrCorrupt = errors.New("snappy: corrupt input") | ||||
| 	// ErrTooLarge reports that the uncompressed length is too large. | ||||
| 	ErrTooLarge = errors.New("snappy: decoded block is too large") | ||||
| 	// ErrUnsupported reports that the input isn't supported. | ||||
| 	ErrUnsupported = errors.New("snappy: unsupported input") | ||||
|  | ||||
| 	errUnsupportedLiteralLength = errors.New("snappy: unsupported literal length") | ||||
| ) | ||||
|  | ||||
| // DecodedLen returns the length of the decoded block. | ||||
| func DecodedLen(src []byte) (int, error) { | ||||
| 	v, _, err := decodedLen(src) | ||||
| 	return v, err | ||||
| } | ||||
|  | ||||
| // decodedLen returns the length of the decoded block and the number of bytes | ||||
| // that the length header occupied. | ||||
| func decodedLen(src []byte) (blockLen, headerLen int, err error) { | ||||
| 	v, n := binary.Uvarint(src) | ||||
| 	if n <= 0 || v > 0xffffffff { | ||||
| 		return 0, 0, ErrCorrupt | ||||
| 	} | ||||
|  | ||||
| 	const wordSize = 32 << (^uint(0) >> 32 & 1) | ||||
| 	if wordSize == 32 && v > 0x7fffffff { | ||||
| 		return 0, 0, ErrTooLarge | ||||
| 	} | ||||
| 	return int(v), n, nil | ||||
| } | ||||
|  | ||||
| const ( | ||||
| 	decodeErrCodeCorrupt                  = 1 | ||||
| 	decodeErrCodeUnsupportedLiteralLength = 2 | ||||
| ) | ||||
|  | ||||
| // Decode returns the decoded form of src. The returned slice may be a sub- | ||||
| // slice of dst if dst was large enough to hold the entire decoded block. | ||||
| // Otherwise, a newly allocated slice will be returned. | ||||
| // | ||||
| // The dst and src must not overlap. It is valid to pass a nil dst. | ||||
| // | ||||
| // Decode handles the Snappy block format, not the Snappy stream format. | ||||
| func Decode(dst, src []byte) ([]byte, error) { | ||||
| 	dLen, s, err := decodedLen(src) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	if dLen <= len(dst) { | ||||
| 		dst = dst[:dLen] | ||||
| 	} else { | ||||
| 		dst = make([]byte, dLen) | ||||
| 	} | ||||
| 	switch decode(dst, src[s:]) { | ||||
| 	case 0: | ||||
| 		return dst, nil | ||||
| 	case decodeErrCodeUnsupportedLiteralLength: | ||||
| 		return nil, errUnsupportedLiteralLength | ||||
| 	} | ||||
| 	return nil, ErrCorrupt | ||||
| } | ||||
|  | ||||
| // NewReader returns a new Reader that decompresses from r, using the framing | ||||
| // format described at | ||||
| // https://github.com/google/snappy/blob/master/framing_format.txt | ||||
| func NewReader(r io.Reader) *Reader { | ||||
| 	return &Reader{ | ||||
| 		r:       r, | ||||
| 		decoded: make([]byte, maxBlockSize), | ||||
| 		buf:     make([]byte, maxEncodedLenOfMaxBlockSize+checksumSize), | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // Reader is an io.Reader that can read Snappy-compressed bytes. | ||||
| // | ||||
| // Reader handles the Snappy stream format, not the Snappy block format. | ||||
| type Reader struct { | ||||
| 	r       io.Reader | ||||
| 	err     error | ||||
| 	decoded []byte | ||||
| 	buf     []byte | ||||
| 	// decoded[i:j] contains decoded bytes that have not yet been passed on. | ||||
| 	i, j       int | ||||
| 	readHeader bool | ||||
| } | ||||
|  | ||||
| // Reset discards any buffered data, resets all state, and switches the Snappy | ||||
| // reader to read from r. This permits reusing a Reader rather than allocating | ||||
| // a new one. | ||||
| func (r *Reader) Reset(reader io.Reader) { | ||||
| 	r.r = reader | ||||
| 	r.err = nil | ||||
| 	r.i = 0 | ||||
| 	r.j = 0 | ||||
| 	r.readHeader = false | ||||
| } | ||||
|  | ||||
| func (r *Reader) readFull(p []byte, allowEOF bool) (ok bool) { | ||||
| 	if _, r.err = io.ReadFull(r.r, p); r.err != nil { | ||||
| 		if r.err == io.ErrUnexpectedEOF || (r.err == io.EOF && !allowEOF) { | ||||
| 			r.err = ErrCorrupt | ||||
| 		} | ||||
| 		return false | ||||
| 	} | ||||
| 	return true | ||||
| } | ||||
|  | ||||
| func (r *Reader) fill() error { | ||||
| 	for r.i >= r.j { | ||||
| 		if !r.readFull(r.buf[:4], true) { | ||||
| 			return r.err | ||||
| 		} | ||||
| 		chunkType := r.buf[0] | ||||
| 		if !r.readHeader { | ||||
| 			if chunkType != chunkTypeStreamIdentifier { | ||||
| 				r.err = ErrCorrupt | ||||
| 				return r.err | ||||
| 			} | ||||
| 			r.readHeader = true | ||||
| 		} | ||||
| 		chunkLen := int(r.buf[1]) | int(r.buf[2])<<8 | int(r.buf[3])<<16 | ||||
| 		if chunkLen > len(r.buf) { | ||||
| 			r.err = ErrUnsupported | ||||
| 			return r.err | ||||
| 		} | ||||
|  | ||||
| 		// The chunk types are specified at | ||||
| 		// https://github.com/google/snappy/blob/master/framing_format.txt | ||||
| 		switch chunkType { | ||||
| 		case chunkTypeCompressedData: | ||||
| 			// Section 4.2. Compressed data (chunk type 0x00). | ||||
| 			if chunkLen < checksumSize { | ||||
| 				r.err = ErrCorrupt | ||||
| 				return r.err | ||||
| 			} | ||||
| 			buf := r.buf[:chunkLen] | ||||
| 			if !r.readFull(buf, false) { | ||||
| 				return r.err | ||||
| 			} | ||||
| 			checksum := uint32(buf[0]) | uint32(buf[1])<<8 | uint32(buf[2])<<16 | uint32(buf[3])<<24 | ||||
| 			buf = buf[checksumSize:] | ||||
|  | ||||
| 			n, err := DecodedLen(buf) | ||||
| 			if err != nil { | ||||
| 				r.err = err | ||||
| 				return r.err | ||||
| 			} | ||||
| 			if n > len(r.decoded) { | ||||
| 				r.err = ErrCorrupt | ||||
| 				return r.err | ||||
| 			} | ||||
| 			if _, err := Decode(r.decoded, buf); err != nil { | ||||
| 				r.err = err | ||||
| 				return r.err | ||||
| 			} | ||||
| 			if crc(r.decoded[:n]) != checksum { | ||||
| 				r.err = ErrCorrupt | ||||
| 				return r.err | ||||
| 			} | ||||
| 			r.i, r.j = 0, n | ||||
| 			continue | ||||
|  | ||||
| 		case chunkTypeUncompressedData: | ||||
| 			// Section 4.3. Uncompressed data (chunk type 0x01). | ||||
| 			if chunkLen < checksumSize { | ||||
| 				r.err = ErrCorrupt | ||||
| 				return r.err | ||||
| 			} | ||||
| 			buf := r.buf[:checksumSize] | ||||
| 			if !r.readFull(buf, false) { | ||||
| 				return r.err | ||||
| 			} | ||||
| 			checksum := uint32(buf[0]) | uint32(buf[1])<<8 | uint32(buf[2])<<16 | uint32(buf[3])<<24 | ||||
| 			// Read directly into r.decoded instead of via r.buf. | ||||
| 			n := chunkLen - checksumSize | ||||
| 			if n > len(r.decoded) { | ||||
| 				r.err = ErrCorrupt | ||||
| 				return r.err | ||||
| 			} | ||||
| 			if !r.readFull(r.decoded[:n], false) { | ||||
| 				return r.err | ||||
| 			} | ||||
| 			if crc(r.decoded[:n]) != checksum { | ||||
| 				r.err = ErrCorrupt | ||||
| 				return r.err | ||||
| 			} | ||||
| 			r.i, r.j = 0, n | ||||
| 			continue | ||||
|  | ||||
| 		case chunkTypeStreamIdentifier: | ||||
| 			// Section 4.1. Stream identifier (chunk type 0xff). | ||||
| 			if chunkLen != len(magicBody) { | ||||
| 				r.err = ErrCorrupt | ||||
| 				return r.err | ||||
| 			} | ||||
| 			if !r.readFull(r.buf[:len(magicBody)], false) { | ||||
| 				return r.err | ||||
| 			} | ||||
| 			for i := 0; i < len(magicBody); i++ { | ||||
| 				if r.buf[i] != magicBody[i] { | ||||
| 					r.err = ErrCorrupt | ||||
| 					return r.err | ||||
| 				} | ||||
| 			} | ||||
| 			continue | ||||
| 		} | ||||
|  | ||||
| 		if chunkType <= 0x7f { | ||||
| 			// Section 4.5. Reserved unskippable chunks (chunk types 0x02-0x7f). | ||||
| 			r.err = ErrUnsupported | ||||
| 			return r.err | ||||
| 		} | ||||
| 		// Section 4.4 Padding (chunk type 0xfe). | ||||
| 		// Section 4.6. Reserved skippable chunks (chunk types 0x80-0xfd). | ||||
| 		if !r.readFull(r.buf[:chunkLen], false) { | ||||
| 			return r.err | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // Read satisfies the io.Reader interface. | ||||
| func (r *Reader) Read(p []byte) (int, error) { | ||||
| 	if r.err != nil { | ||||
| 		return 0, r.err | ||||
| 	} | ||||
|  | ||||
| 	if err := r.fill(); err != nil { | ||||
| 		return 0, err | ||||
| 	} | ||||
|  | ||||
| 	n := copy(p, r.decoded[r.i:r.j]) | ||||
| 	r.i += n | ||||
| 	return n, nil | ||||
| } | ||||
|  | ||||
| // ReadByte satisfies the io.ByteReader interface. | ||||
| func (r *Reader) ReadByte() (byte, error) { | ||||
| 	if r.err != nil { | ||||
| 		return 0, r.err | ||||
| 	} | ||||
|  | ||||
| 	if err := r.fill(); err != nil { | ||||
| 		return 0, err | ||||
| 	} | ||||
|  | ||||
| 	c := r.decoded[r.i] | ||||
| 	r.i++ | ||||
| 	return c, nil | ||||
| } | ||||
							
								
								
									
										113
									
								
								vendor/github.com/klauspost/compress/internal/snapref/decode_other.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										113
									
								
								vendor/github.com/klauspost/compress/internal/snapref/decode_other.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,113 +0,0 @@ | ||||
| // Copyright 2016 The Snappy-Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| package snapref | ||||
|  | ||||
| // decode writes the decoding of src to dst. It assumes that the varint-encoded | ||||
| // length of the decompressed bytes has already been read, and that len(dst) | ||||
| // equals that length. | ||||
| // | ||||
| // It returns 0 on success or a decodeErrCodeXxx error code on failure. | ||||
| func decode(dst, src []byte) int { | ||||
| 	var d, s, offset, length int | ||||
| 	for s < len(src) { | ||||
| 		switch src[s] & 0x03 { | ||||
| 		case tagLiteral: | ||||
| 			x := uint32(src[s] >> 2) | ||||
| 			switch { | ||||
| 			case x < 60: | ||||
| 				s++ | ||||
| 			case x == 60: | ||||
| 				s += 2 | ||||
| 				if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. | ||||
| 					return decodeErrCodeCorrupt | ||||
| 				} | ||||
| 				x = uint32(src[s-1]) | ||||
| 			case x == 61: | ||||
| 				s += 3 | ||||
| 				if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. | ||||
| 					return decodeErrCodeCorrupt | ||||
| 				} | ||||
| 				x = uint32(src[s-2]) | uint32(src[s-1])<<8 | ||||
| 			case x == 62: | ||||
| 				s += 4 | ||||
| 				if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. | ||||
| 					return decodeErrCodeCorrupt | ||||
| 				} | ||||
| 				x = uint32(src[s-3]) | uint32(src[s-2])<<8 | uint32(src[s-1])<<16 | ||||
| 			case x == 63: | ||||
| 				s += 5 | ||||
| 				if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. | ||||
| 					return decodeErrCodeCorrupt | ||||
| 				} | ||||
| 				x = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24 | ||||
| 			} | ||||
| 			length = int(x) + 1 | ||||
| 			if length <= 0 { | ||||
| 				return decodeErrCodeUnsupportedLiteralLength | ||||
| 			} | ||||
| 			if length > len(dst)-d || length > len(src)-s { | ||||
| 				return decodeErrCodeCorrupt | ||||
| 			} | ||||
| 			copy(dst[d:], src[s:s+length]) | ||||
| 			d += length | ||||
| 			s += length | ||||
| 			continue | ||||
|  | ||||
| 		case tagCopy1: | ||||
| 			s += 2 | ||||
| 			if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. | ||||
| 				return decodeErrCodeCorrupt | ||||
| 			} | ||||
| 			length = 4 + int(src[s-2])>>2&0x7 | ||||
| 			offset = int(uint32(src[s-2])&0xe0<<3 | uint32(src[s-1])) | ||||
|  | ||||
| 		case tagCopy2: | ||||
| 			s += 3 | ||||
| 			if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. | ||||
| 				return decodeErrCodeCorrupt | ||||
| 			} | ||||
| 			length = 1 + int(src[s-3])>>2 | ||||
| 			offset = int(uint32(src[s-2]) | uint32(src[s-1])<<8) | ||||
|  | ||||
| 		case tagCopy4: | ||||
| 			s += 5 | ||||
| 			if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. | ||||
| 				return decodeErrCodeCorrupt | ||||
| 			} | ||||
| 			length = 1 + int(src[s-5])>>2 | ||||
| 			offset = int(uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24) | ||||
| 		} | ||||
|  | ||||
| 		if offset <= 0 || d < offset || length > len(dst)-d { | ||||
| 			return decodeErrCodeCorrupt | ||||
| 		} | ||||
| 		// Copy from an earlier sub-slice of dst to a later sub-slice. | ||||
| 		// If no overlap, use the built-in copy: | ||||
| 		if offset >= length { | ||||
| 			copy(dst[d:d+length], dst[d-offset:]) | ||||
| 			d += length | ||||
| 			continue | ||||
| 		} | ||||
|  | ||||
| 		// Unlike the built-in copy function, this byte-by-byte copy always runs | ||||
| 		// forwards, even if the slices overlap. Conceptually, this is: | ||||
| 		// | ||||
| 		// d += forwardCopy(dst[d:d+length], dst[d-offset:]) | ||||
| 		// | ||||
| 		// We align the slices into a and b and show the compiler they are the same size. | ||||
| 		// This allows the loop to run without bounds checks. | ||||
| 		a := dst[d : d+length] | ||||
| 		b := dst[d-offset:] | ||||
| 		b = b[:len(a)] | ||||
| 		for i := range a { | ||||
| 			a[i] = b[i] | ||||
| 		} | ||||
| 		d += length | ||||
| 	} | ||||
| 	if d != len(dst) { | ||||
| 		return decodeErrCodeCorrupt | ||||
| 	} | ||||
| 	return 0 | ||||
| } | ||||
							
								
								
									
										289
									
								
								vendor/github.com/klauspost/compress/internal/snapref/encode.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										289
									
								
								vendor/github.com/klauspost/compress/internal/snapref/encode.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,289 +0,0 @@ | ||||
| // Copyright 2011 The Snappy-Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| package snapref | ||||
|  | ||||
| import ( | ||||
| 	"encoding/binary" | ||||
| 	"errors" | ||||
| 	"io" | ||||
| ) | ||||
|  | ||||
| // Encode returns the encoded form of src. The returned slice may be a sub- | ||||
| // slice of dst if dst was large enough to hold the entire encoded block. | ||||
| // Otherwise, a newly allocated slice will be returned. | ||||
| // | ||||
| // The dst and src must not overlap. It is valid to pass a nil dst. | ||||
| // | ||||
| // Encode handles the Snappy block format, not the Snappy stream format. | ||||
| func Encode(dst, src []byte) []byte { | ||||
| 	if n := MaxEncodedLen(len(src)); n < 0 { | ||||
| 		panic(ErrTooLarge) | ||||
| 	} else if len(dst) < n { | ||||
| 		dst = make([]byte, n) | ||||
| 	} | ||||
|  | ||||
| 	// The block starts with the varint-encoded length of the decompressed bytes. | ||||
| 	d := binary.PutUvarint(dst, uint64(len(src))) | ||||
|  | ||||
| 	for len(src) > 0 { | ||||
| 		p := src | ||||
| 		src = nil | ||||
| 		if len(p) > maxBlockSize { | ||||
| 			p, src = p[:maxBlockSize], p[maxBlockSize:] | ||||
| 		} | ||||
| 		if len(p) < minNonLiteralBlockSize { | ||||
| 			d += emitLiteral(dst[d:], p) | ||||
| 		} else { | ||||
| 			d += encodeBlock(dst[d:], p) | ||||
| 		} | ||||
| 	} | ||||
| 	return dst[:d] | ||||
| } | ||||
|  | ||||
| // inputMargin is the minimum number of extra input bytes to keep, inside | ||||
| // encodeBlock's inner loop. On some architectures, this margin lets us | ||||
| // implement a fast path for emitLiteral, where the copy of short (<= 16 byte) | ||||
| // literals can be implemented as a single load to and store from a 16-byte | ||||
| // register. That literal's actual length can be as short as 1 byte, so this | ||||
| // can copy up to 15 bytes too much, but that's OK as subsequent iterations of | ||||
| // the encoding loop will fix up the copy overrun, and this inputMargin ensures | ||||
| // that we don't overrun the dst and src buffers. | ||||
| const inputMargin = 16 - 1 | ||||
|  | ||||
| // minNonLiteralBlockSize is the minimum size of the input to encodeBlock that | ||||
| // could be encoded with a copy tag. This is the minimum with respect to the | ||||
| // algorithm used by encodeBlock, not a minimum enforced by the file format. | ||||
| // | ||||
| // The encoded output must start with at least a 1 byte literal, as there are | ||||
| // no previous bytes to copy. A minimal (1 byte) copy after that, generated | ||||
| // from an emitCopy call in encodeBlock's main loop, would require at least | ||||
| // another inputMargin bytes, for the reason above: we want any emitLiteral | ||||
| // calls inside encodeBlock's main loop to use the fast path if possible, which | ||||
| // requires being able to overrun by inputMargin bytes. Thus, | ||||
| // minNonLiteralBlockSize equals 1 + 1 + inputMargin. | ||||
| // | ||||
| // The C++ code doesn't use this exact threshold, but it could, as discussed at | ||||
| // https://groups.google.com/d/topic/snappy-compression/oGbhsdIJSJ8/discussion | ||||
| // The difference between Go (2+inputMargin) and C++ (inputMargin) is purely an | ||||
| // optimization. It should not affect the encoded form. This is tested by | ||||
| // TestSameEncodingAsCppShortCopies. | ||||
| const minNonLiteralBlockSize = 1 + 1 + inputMargin | ||||
|  | ||||
| // MaxEncodedLen returns the maximum length of a snappy block, given its | ||||
| // uncompressed length. | ||||
| // | ||||
| // It will return a negative value if srcLen is too large to encode. | ||||
| func MaxEncodedLen(srcLen int) int { | ||||
| 	n := uint64(srcLen) | ||||
| 	if n > 0xffffffff { | ||||
| 		return -1 | ||||
| 	} | ||||
| 	// Compressed data can be defined as: | ||||
| 	//    compressed := item* literal* | ||||
| 	//    item       := literal* copy | ||||
| 	// | ||||
| 	// The trailing literal sequence has a space blowup of at most 62/60 | ||||
| 	// since a literal of length 60 needs one tag byte + one extra byte | ||||
| 	// for length information. | ||||
| 	// | ||||
| 	// Item blowup is trickier to measure. Suppose the "copy" op copies | ||||
| 	// 4 bytes of data. Because of a special check in the encoding code, | ||||
| 	// we produce a 4-byte copy only if the offset is < 65536. Therefore | ||||
| 	// the copy op takes 3 bytes to encode, and this type of item leads | ||||
| 	// to at most the 62/60 blowup for representing literals. | ||||
| 	// | ||||
| 	// Suppose the "copy" op copies 5 bytes of data. If the offset is big | ||||
| 	// enough, it will take 5 bytes to encode the copy op. Therefore the | ||||
| 	// worst case here is a one-byte literal followed by a five-byte copy. | ||||
| 	// That is, 6 bytes of input turn into 7 bytes of "compressed" data. | ||||
| 	// | ||||
| 	// This last factor dominates the blowup, so the final estimate is: | ||||
| 	n = 32 + n + n/6 | ||||
| 	if n > 0xffffffff { | ||||
| 		return -1 | ||||
| 	} | ||||
| 	return int(n) | ||||
| } | ||||
|  | ||||
| var errClosed = errors.New("snappy: Writer is closed") | ||||
|  | ||||
| // NewWriter returns a new Writer that compresses to w. | ||||
| // | ||||
| // The Writer returned does not buffer writes. There is no need to Flush or | ||||
| // Close such a Writer. | ||||
| // | ||||
| // Deprecated: the Writer returned is not suitable for many small writes, only | ||||
| // for few large writes. Use NewBufferedWriter instead, which is efficient | ||||
| // regardless of the frequency and shape of the writes, and remember to Close | ||||
| // that Writer when done. | ||||
| func NewWriter(w io.Writer) *Writer { | ||||
| 	return &Writer{ | ||||
| 		w:    w, | ||||
| 		obuf: make([]byte, obufLen), | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // NewBufferedWriter returns a new Writer that compresses to w, using the | ||||
| // framing format described at | ||||
| // https://github.com/google/snappy/blob/master/framing_format.txt | ||||
| // | ||||
| // The Writer returned buffers writes. Users must call Close to guarantee all | ||||
| // data has been forwarded to the underlying io.Writer. They may also call | ||||
| // Flush zero or more times before calling Close. | ||||
| func NewBufferedWriter(w io.Writer) *Writer { | ||||
| 	return &Writer{ | ||||
| 		w:    w, | ||||
| 		ibuf: make([]byte, 0, maxBlockSize), | ||||
| 		obuf: make([]byte, obufLen), | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // Writer is an io.Writer that can write Snappy-compressed bytes. | ||||
| // | ||||
| // Writer handles the Snappy stream format, not the Snappy block format. | ||||
| type Writer struct { | ||||
| 	w   io.Writer | ||||
| 	err error | ||||
|  | ||||
| 	// ibuf is a buffer for the incoming (uncompressed) bytes. | ||||
| 	// | ||||
| 	// Its use is optional. For backwards compatibility, Writers created by the | ||||
| 	// NewWriter function have ibuf == nil, do not buffer incoming bytes, and | ||||
| 	// therefore do not need to be Flush'ed or Close'd. | ||||
| 	ibuf []byte | ||||
|  | ||||
| 	// obuf is a buffer for the outgoing (compressed) bytes. | ||||
| 	obuf []byte | ||||
|  | ||||
| 	// wroteStreamHeader is whether we have written the stream header. | ||||
| 	wroteStreamHeader bool | ||||
| } | ||||
|  | ||||
| // Reset discards the writer's state and switches the Snappy writer to write to | ||||
| // w. This permits reusing a Writer rather than allocating a new one. | ||||
| func (w *Writer) Reset(writer io.Writer) { | ||||
| 	w.w = writer | ||||
| 	w.err = nil | ||||
| 	if w.ibuf != nil { | ||||
| 		w.ibuf = w.ibuf[:0] | ||||
| 	} | ||||
| 	w.wroteStreamHeader = false | ||||
| } | ||||
|  | ||||
| // Write satisfies the io.Writer interface. | ||||
| func (w *Writer) Write(p []byte) (nRet int, errRet error) { | ||||
| 	if w.ibuf == nil { | ||||
| 		// Do not buffer incoming bytes. This does not perform or compress well | ||||
| 		// if the caller of Writer.Write writes many small slices. This | ||||
| 		// behavior is therefore deprecated, but still supported for backwards | ||||
| 		// compatibility with code that doesn't explicitly Flush or Close. | ||||
| 		return w.write(p) | ||||
| 	} | ||||
|  | ||||
| 	// The remainder of this method is based on bufio.Writer.Write from the | ||||
| 	// standard library. | ||||
|  | ||||
| 	for len(p) > (cap(w.ibuf)-len(w.ibuf)) && w.err == nil { | ||||
| 		var n int | ||||
| 		if len(w.ibuf) == 0 { | ||||
| 			// Large write, empty buffer. | ||||
| 			// Write directly from p to avoid copy. | ||||
| 			n, _ = w.write(p) | ||||
| 		} else { | ||||
| 			n = copy(w.ibuf[len(w.ibuf):cap(w.ibuf)], p) | ||||
| 			w.ibuf = w.ibuf[:len(w.ibuf)+n] | ||||
| 			w.Flush() | ||||
| 		} | ||||
| 		nRet += n | ||||
| 		p = p[n:] | ||||
| 	} | ||||
| 	if w.err != nil { | ||||
| 		return nRet, w.err | ||||
| 	} | ||||
| 	n := copy(w.ibuf[len(w.ibuf):cap(w.ibuf)], p) | ||||
| 	w.ibuf = w.ibuf[:len(w.ibuf)+n] | ||||
| 	nRet += n | ||||
| 	return nRet, nil | ||||
| } | ||||
|  | ||||
| func (w *Writer) write(p []byte) (nRet int, errRet error) { | ||||
| 	if w.err != nil { | ||||
| 		return 0, w.err | ||||
| 	} | ||||
| 	for len(p) > 0 { | ||||
| 		obufStart := len(magicChunk) | ||||
| 		if !w.wroteStreamHeader { | ||||
| 			w.wroteStreamHeader = true | ||||
| 			copy(w.obuf, magicChunk) | ||||
| 			obufStart = 0 | ||||
| 		} | ||||
|  | ||||
| 		var uncompressed []byte | ||||
| 		if len(p) > maxBlockSize { | ||||
| 			uncompressed, p = p[:maxBlockSize], p[maxBlockSize:] | ||||
| 		} else { | ||||
| 			uncompressed, p = p, nil | ||||
| 		} | ||||
| 		checksum := crc(uncompressed) | ||||
|  | ||||
| 		// Compress the buffer, discarding the result if the improvement | ||||
| 		// isn't at least 12.5%. | ||||
| 		compressed := Encode(w.obuf[obufHeaderLen:], uncompressed) | ||||
| 		chunkType := uint8(chunkTypeCompressedData) | ||||
| 		chunkLen := 4 + len(compressed) | ||||
| 		obufEnd := obufHeaderLen + len(compressed) | ||||
| 		if len(compressed) >= len(uncompressed)-len(uncompressed)/8 { | ||||
| 			chunkType = chunkTypeUncompressedData | ||||
| 			chunkLen = 4 + len(uncompressed) | ||||
| 			obufEnd = obufHeaderLen | ||||
| 		} | ||||
|  | ||||
| 		// Fill in the per-chunk header that comes before the body. | ||||
| 		w.obuf[len(magicChunk)+0] = chunkType | ||||
| 		w.obuf[len(magicChunk)+1] = uint8(chunkLen >> 0) | ||||
| 		w.obuf[len(magicChunk)+2] = uint8(chunkLen >> 8) | ||||
| 		w.obuf[len(magicChunk)+3] = uint8(chunkLen >> 16) | ||||
| 		w.obuf[len(magicChunk)+4] = uint8(checksum >> 0) | ||||
| 		w.obuf[len(magicChunk)+5] = uint8(checksum >> 8) | ||||
| 		w.obuf[len(magicChunk)+6] = uint8(checksum >> 16) | ||||
| 		w.obuf[len(magicChunk)+7] = uint8(checksum >> 24) | ||||
|  | ||||
| 		if _, err := w.w.Write(w.obuf[obufStart:obufEnd]); err != nil { | ||||
| 			w.err = err | ||||
| 			return nRet, err | ||||
| 		} | ||||
| 		if chunkType == chunkTypeUncompressedData { | ||||
| 			if _, err := w.w.Write(uncompressed); err != nil { | ||||
| 				w.err = err | ||||
| 				return nRet, err | ||||
| 			} | ||||
| 		} | ||||
| 		nRet += len(uncompressed) | ||||
| 	} | ||||
| 	return nRet, nil | ||||
| } | ||||
|  | ||||
| // Flush flushes the Writer to its underlying io.Writer. | ||||
| func (w *Writer) Flush() error { | ||||
| 	if w.err != nil { | ||||
| 		return w.err | ||||
| 	} | ||||
| 	if len(w.ibuf) == 0 { | ||||
| 		return nil | ||||
| 	} | ||||
| 	w.write(w.ibuf) | ||||
| 	w.ibuf = w.ibuf[:0] | ||||
| 	return w.err | ||||
| } | ||||
|  | ||||
| // Close calls Flush and then closes the Writer. | ||||
| func (w *Writer) Close() error { | ||||
| 	w.Flush() | ||||
| 	ret := w.err | ||||
| 	if w.err == nil { | ||||
| 		w.err = errClosed | ||||
| 	} | ||||
| 	return ret | ||||
| } | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user
	 Davanum Srinivas
					Davanum Srinivas